Core Types

The Agent User Interaction 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 ag_ui.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 ag_ui.core import Role

Represents the possible roles a message sender can have.

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

DeveloperMessage

from ag_ui.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 ag_ui.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 ag_ui.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 ag_ui.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 ag_ui.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 ag_ui.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 ag_ui.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 ag_ui.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 ag_ui.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 ag_ui.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 ag_ui.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.