Skip to main content

Core Types

The Agent User Interaction Protocol 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

Input parameters for running an agent. In the HTTP API, this is the body of the POST request.
type RunAgentInput = {
  threadId: string
  runId: string
  parentRunId?: string
  state: any
  messages: Message[]
  tools: Tool[]
  context: Context[]
  forwardedProps: any
}
PropertyTypeDescription
threadIdstringID of the conversation thread
runIdstringID of the current run
parentRunIdstring (optional)ID of the run that spawned this run
stateanyCurrent state of the agent
messagesMessage[]Array of messages in the conversation
toolsTool[]Array of tools available to the agent
contextContext[]Array of context objects provided to the agent
forwardedPropsanyAdditional properties forwarded to the agent

Message Types

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

Role

Represents the possible roles a message sender can have.
type Role = "developer" | "system" | "assistant" | "user" | "tool" | "activity"

DeveloperMessage

Represents a message from a developer.
type DeveloperMessage = {
  id: string
  role: "developer"
  content: string
  name?: string
}
PropertyTypeDescription
idstringUnique identifier for the message
role"developer"Role of the message sender, fixed as “developer”
contentstringText content of the message (required)
namestringOptional name of the sender

SystemMessage

Represents a system message.
type SystemMessage = {
  id: string
  role: "system"
  content: string
  name?: string
}
PropertyTypeDescription
idstringUnique identifier for the message
role"system"Role of the message sender, fixed as “system”
contentstringText content of the message (required)
namestringOptional name of the sender

AssistantMessage

Represents a message from an assistant.
type AssistantMessage = {
  id: string
  role: "assistant"
  content?: string
  name?: string
  toolCalls?: ToolCall[]
}
PropertyTypeDescription
idstringUnique identifier for the message
role"assistant"Role of the message sender, fixed as “assistant”
contentstring (optional)Text content of the message
namestring (optional)Name of the sender
toolCallsToolCall[] (optional)Tool calls made in this message

UserMessage

Represents a message from a user.
type UserMessage = {
  id: string
  role: "user"
  content: string | InputContent[]
  name?: string
}
PropertyTypeDescription
idstringUnique identifier for the message
role"user"Role of the message sender, fixed as “user”
contentstring | InputContent[]Either plain text or an ordered array of multimodal content fragments
namestringOptional name of the sender

InputContent

Union of supported multimodal fragments.
type InputContent = TextInputContent | BinaryInputContent

TextInputContent

type TextInputContent = {
  type: "text"
  text: string
}

BinaryInputContent

type BinaryInputContent = {
  type: "binary"
  mimeType: string
  id?: string
  url?: string
  data?: string
  filename?: string
}
At least one of id, url, or data must be provided.

ToolMessage

Represents a message from a tool.
type ToolMessage = {
  id: string
  content: string
  role: "tool"
  toolCallId: string
  error?: string
}
PropertyTypeDescription
idstringUnique identifier for the message
contentstringText content of the message
role"tool"Role of the message sender, fixed as “tool”
toolCallIdstringID of the tool call this message responds to
errorstringError message if the tool call failed

ActivityMessage

Represents structured activity progress emitted between chat messages.
type ActivityMessage = {
  id: string
  role: "activity"
  activityType: string
  content: Record<string, any>
}
PropertyTypeDescription
idstringUnique identifier for the activity message
role"activity"Fixed discriminator identifying the message as activity
activityTypestringActivity discriminator used for renderer selection
contentRecord<string, any>Structured payload representing the activity state

Message

A union type representing any type of message in the system.
type Message =
  | DeveloperMessage
  | SystemMessage
  | AssistantMessage
  | UserMessage
  | ToolMessage
  | ActivityMessage

ToolCall

Represents a tool call made by an agent.
type ToolCall = {
  id: string
  type: "function"
  function: FunctionCall
}
PropertyTypeDescription
idstringUnique identifier for the tool call
type"function"Type of the tool call, always “function”
functionFunctionCallDetails about the function being called

FunctionCall

Represents function name and arguments in a tool call.
type FunctionCall = {
  name: string
  arguments: string
}
PropertyTypeDescription
namestringName of the function to call
argumentsstringJSON-encoded string of arguments to the function

Context

Represents a piece of contextual information provided to an agent.
type Context = {
  description: string
  value: string
}
PropertyTypeDescription
descriptionstringDescription of what this context represents
valuestringThe actual context value

Tool

Defines a tool that can be called by an agent.
type Tool = {
  name: string
  description: string
  parameters: any // JSON Schema
}
PropertyTypeDescription
namestringName of the tool
descriptionstringDescription of what the tool does
parametersanyJSON Schema defining the parameters for the tool

State

Represents the state of an agent during execution.
type State = any
The state type is flexible and can hold any data structure needed by the agent implementation.