Core Types

The Agent Wire Protocol Python SDK is built on a set of core types that represent the fundamental structures used throughout the system. This page documents these types and their properties.

RunAgentInput

from agentwire.core import RunAgentInput

Input parameters for running an agent. In the HTTP API, this is the body of the POST request.

class RunAgentInput(ConfiguredBaseModel):
    thread_id: str
    run_id: str
    state: Any
    messages: List[Message]
    tools: List[Tool]
    context: List[Context]
    forwarded_props: Any
PropertyTypeDescription
thread_idstrID of the conversation thread
run_idstrID of the current run
stateAnyCurrent state of the agent
messagesList[Message]List of messages in the conversation
toolsList[Tool]List of tools available to the agent
contextList[Context]List of context objects provided to the agent
forwarded_propsAnyAdditional properties forwarded to the agent

Message Types

The SDK includes several message types that represent different kinds of messages in the system.

Role

from agentwire.core import Role

Represents the possible roles a message sender can have.

Role = Literal["developer", "system", "assistant", "user", "tool"]

DeveloperMessage

from agentwire.core import DeveloperMessage

Represents a message from a developer.

class DeveloperMessage(BaseMessage):
    role: Literal["developer"]
    content: str
PropertyTypeDescription
idstrUnique identifier for the message
roleLiteral["developer"]Role of the message sender, fixed as “developer”
contentstrText content of the message (required)
nameOptional[str]Optional name of the sender

SystemMessage

from agentwire.core import SystemMessage

Represents a system message.

class SystemMessage(BaseMessage):
    role: Literal["system"]
    content: str
PropertyTypeDescription
idstrUnique identifier for the message
roleLiteral["system"]Role of the message sender, fixed as “system”
contentstrText content of the message (required)
nameOptional[str]Optional name of the sender

AssistantMessage

from agentwire.core import AssistantMessage

Represents a message from an assistant.

class AssistantMessage(BaseMessage):
    role: Literal["assistant"]
    content: Optional[str] = None
    tool_calls: Optional[List[ToolCall]] = None
PropertyTypeDescription
idstrUnique identifier for the message
roleLiteral["assistant"]Role of the message sender, fixed as “assistant”
contentOptional[str]Text content of the message
nameOptional[str]Name of the sender
tool_callsOptional[List[ToolCall]]Tool calls made in this message

UserMessage

from agentwire.core import UserMessage

Represents a message from a user.

class UserMessage(BaseMessage):
    role: Literal["user"]
    content: str
PropertyTypeDescription
idstrUnique identifier for the message
roleLiteral["user"]Role of the message sender, fixed as “user”
contentstrText content of the message (required)
nameOptional[str]Optional name of the sender

ToolMessage

from agentwire.core import ToolMessage

Represents a message from a tool.

class ToolMessage(ConfiguredBaseModel):
    id: str
    role: Literal["tool"]
    content: str
    tool_call_id: str
PropertyTypeDescription
idstrUnique identifier for the message
contentstrText content of the message
roleLiteral["tool"]Role of the message sender, fixed as “tool”
tool_call_idstrID of the tool call this message responds to

Message

from agentwire.core import Message

A union type representing any type of message in the system.

Message = Annotated[
    Union[DeveloperMessage, SystemMessage, AssistantMessage, UserMessage, ToolMessage],
    Field(discriminator="role")
]

ToolCall

from agentwire.core import ToolCall

Represents a tool call made by an agent.

class ToolCall(ConfiguredBaseModel):
    id: str
    type: Literal["function"]
    function: FunctionCall
PropertyTypeDescription
idstrUnique identifier for the tool call
typeLiteral["function"]Type of the tool call, always “function”
functionFunctionCallDetails about the function being called

FunctionCall

from agentwire.core import FunctionCall

Represents function name and arguments in a tool call.

class FunctionCall(ConfiguredBaseModel):
    name: str
    arguments: str
PropertyTypeDescription
namestrName of the function to call
argumentsstrJSON-encoded string of arguments to the function

Context

from agentwire.core import Context

Represents a piece of contextual information provided to an agent.

class Context(ConfiguredBaseModel):
    description: str
    value: str
PropertyTypeDescription
descriptionstrDescription of what this context represents
valuestrThe actual context value

Tool

from agentwire.core import Tool

Defines a tool that can be called by an agent.

class Tool(ConfiguredBaseModel):
    name: str
    description: str
    parameters: Any  # JSON Schema
PropertyTypeDescription
namestrName of the tool
descriptionstrDescription of what the tool does
parametersAnyJSON Schema defining the parameters for the tool

State

from agentwire.core import State

Represents the state of an agent during execution.

State = Any

The state type is flexible and can hold any data structure needed by the agent implementation.