Agent
Defines the interface that all ACP-compliant agents must implement. Agents are programs that use generative AI to autonomously modify code. They handle requests from clients and execute tasks using language models and tools.authenticate
Authenticates the client using the specified authentication method. Called when the agent requires authentication before allowing session creation. The client provides the authentication method ID that was advertised during initialization. After successful authentication, the client can proceed to create sessions withnew_session without receiving an auth_required error.
See protocol docs: Initialization
AuthenticateRequest
Request parameters for the authenticate method. Specifies which authentication method to use. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The ID of the authentication method to use.
Must be one of the methods advertised in the initialize response.
AuthenticateResponse
Response to theauthenticate method.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
initialize
Establishes the connection with a client and negotiates protocol capabilities. This method is called once at the beginning of the connection to:- Negotiate the protocol version to use
- Exchange capability information between client and agent
- Determine available authentication methods
InitializeRequest
Request parameters for the initialize method. Sent by the client to establish connection and negotiate capabilities. See protocol docs: Initialization Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
clientCapabilities
Capabilities supported by the client.
- Default:
{"fs":{"readTextFile":false,"writeTextFile":false},"terminal":false}
clientInfo
Information about the Client name and version sent to the Agent.Note: in future versions of the protocol, this will be required.
The latest protocol version supported by the client.
InitializeResponse
Response to theinitialize method.
Contains the negotiated protocol version and agent capabilities.
See protocol docs: Initialization
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
agentCapabilities
Capabilities supported by the agent.
- Default:
{"loadSession":false,"mcpCapabilities":{"http":false,"sse":false},"promptCapabilities":{"audio":false,"embeddedContext":false,"image":false},"sessionCapabilities":{}}
agentInfo
Information about the Agent name and version sent to the Client.Note: in future versions of the protocol, this will be required.
authMethods
Authentication methods supported by the agent.
- Default:
[]
The protocol version the client specified if supported by the agent,
or the latest protocol version supported by the agent.The client should disconnect, if it doesn’t support this version.
session/cancel
Cancels ongoing operations for a session. This is a notification sent by the client to cancel an ongoing prompt turn. Upon receiving this notification, the Agent SHOULD:- Stop all language model requests as soon as possible
- Abort all tool call invocations in progress
- Send any pending
session/updatenotifications - Respond to the original
session/promptrequest withStopReason::Cancelled
CancelNotification
Notification to cancel ongoing operations for a session. See protocol docs: Cancellation Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The ID of the session to cancel operations for.
session/fork
UNSTABLE This capability is not part of the spec yet, and may be removed or changed at any point. Forks an existing session to create a new independent session. This method is only available if the agent advertises thesession.fork capability.
The agent should create a new session with the same conversation context as the
original, allowing operations like generating summaries without affecting the
original session’s history.
ForkSessionRequest
UNSTABLE This capability is not part of the spec yet, and may be removed or changed at any point. Request parameters for forking an existing session. Creates a new session based on the context of an existing one, allowing operations like generating summaries without affecting the original session’s history. Only available if the Agent supports thesession.fork capability.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The ID of the session to fork.
ForkSessionResponse
UNSTABLE This capability is not part of the spec yet, and may be removed or changed at any point. Response from forking an existing session. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
models
UNSTABLEThis capability is not part of the spec yet, and may be removed or changed at any point.Initial model state if supported by the Agent
modes
Initial mode state if supported by the AgentSee protocol docs: Session Modes
Unique identifier for the newly created forked session.
session/list
UNSTABLE This capability is not part of the spec yet, and may be removed or changed at any point. Lists existing sessions known to the agent. This method is only available if the agent advertises thelistSessions capability.
The agent should return metadata about sessions with optional filtering and pagination support.
ListSessionsRequest
UNSTABLE This capability is not part of the spec yet, and may be removed or changed at any point. Request parameters for listing existing sessions. Only available if the Agent supports thelistSessions capability.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Opaque cursor token from a previous response’s nextCursor field for cursor-based pagination
Filter sessions by working directory. Must be an absolute path.
ListSessionsResponse
UNSTABLE This capability is not part of the spec yet, and may be removed or changed at any point. Response from listing sessions. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Opaque cursor token. If present, pass this in the next request’s cursor parameter
to fetch the next page. If absent, there are no more results.
Array of session information objects
session/load
Loads an existing session to resume a previous conversation. This method is only available if the agent advertises theloadSession capability.
The agent should:
- Restore the session context and conversation history
- Connect to the specified MCP servers
- Stream the entire conversation history back to the client via notifications
LoadSessionRequest
Request parameters for loading an existing session. Only available if the Agent supports theloadSession capability.
See protocol docs: Loading Sessions
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The working directory for this session.
List of MCP servers to connect to for this session.
The ID of the session to load.
LoadSessionResponse
Response from loading an existing session. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
models
UNSTABLEThis capability is not part of the spec yet, and may be removed or changed at any point.Initial model state if supported by the Agent
modes
Initial mode state if supported by the AgentSee protocol docs: Session Modes
session/new
Creates a new conversation session with the agent. Sessions represent independent conversation contexts with their own history and state. The agent should:- Create a new session context
- Connect to any specified MCP servers
- Return a unique session ID for future requests
auth_required error if the agent requires authentication.
See protocol docs: Session Setup
NewSessionRequest
Request parameters for creating a new session. See protocol docs: Creating a Session Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The working directory for this session. Must be an absolute path.
List of MCP (Model Context Protocol) servers the agent should connect to.
NewSessionResponse
Response from creating a new session. See protocol docs: Creating a Session Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
models
UNSTABLEThis capability is not part of the spec yet, and may be removed or changed at any point.Initial model state if supported by the Agent
modes
Initial mode state if supported by the AgentSee protocol docs: Session Modes
Unique identifier for the created session.Used in all subsequent requests for this conversation.
session/prompt
Processes a user prompt within a session. This method handles the whole lifecycle of a prompt:- Receives user messages with optional context (files, images, etc.)
- Processes the prompt using language models
- Reports language model content and tool calls to the Clients
- Requests permission to run tools
- Executes any requested tool calls
- Returns when the turn is complete with a stop reason
PromptRequest
Request parameters for sending a user prompt to the agent. Contains the user’s message and any additional context. See protocol docs: User Message Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The blocks of content that compose the user’s message.As a baseline, the Agent MUST support
ContentBlock::Text and ContentBlock::ResourceLink,
while other variants are optionally enabled via PromptCapabilities.The Client MUST adapt its interface according to PromptCapabilities.The client MAY include referenced pieces of context as either
ContentBlock::Resource or ContentBlock::ResourceLink.When available, ContentBlock::Resource is preferred
as it avoids extra round-trips and allows the message to include
pieces of context from sources the agent may not have access to.The ID of the session to send this user message to
PromptResponse
Response from processing a user prompt. See protocol docs: Check for Completion Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Indicates why the agent stopped processing the turn.
session/set_mode
Sets the current mode for a session. Allows switching between different agent modes (e.g., “ask”, “architect”, “code”) that affect system prompts, tool availability, and permission behaviors. The mode must be one of the modes advertised inavailableModes during session
creation or loading. Agents may also change modes autonomously and notify the
client via current_mode_update notifications.
This method can be called at any time during a session, whether the Agent is
idle or actively generating a response.
See protocol docs: Session Modes
SetSessionModeRequest
Request parameters for setting a session mode. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The ID of the mode to set.
The ID of the session to set the mode for.
SetSessionModeResponse
Response tosession/set_mode method.
Type: Object
Properties:
session/set_model
UNSTABLE This capability is not part of the spec yet, and may be removed or changed at any point. Select a model for a given session.SetSessionModelRequest
UNSTABLE This capability is not part of the spec yet, and may be removed or changed at any point. Request parameters for setting a session model. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The ID of the model to set.
The ID of the session to set the model for.
SetSessionModelResponse
UNSTABLE This capability is not part of the spec yet, and may be removed or changed at any point. Response tosession/set_model method.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Client
Defines the interface that ACP-compliant clients must implement. Clients are typically code editors (IDEs, text editors) that provide the interface between users and AI agents. They manage the environment, handle user interactions, and control access to resources.fs/read_text_file
Reads content from a text file in the client’s file system. Only available if the client advertises thefs.readTextFile capability.
Allows the agent to access file contents within the client’s environment.
See protocol docs: Client
ReadTextFileRequest
Request to read content from a text file. Only available if the client supports thefs.readTextFile capability.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Maximum number of lines to read.
- Minimum:
0
Line number to start reading from (1-based).
- Minimum:
0
Absolute path to the file to read.
The session ID for this request.
ReadTextFileResponse
Response containing the contents of a text file. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
fs/write_text_file
Writes content to a text file in the client’s file system. Only available if the client advertises thefs.writeTextFile capability.
Allows the agent to create or modify files within the client’s environment.
See protocol docs: Client
WriteTextFileRequest
Request to write content to a text file. Only available if the client supports thefs.writeTextFile capability.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The text content to write to the file.
Absolute path to the file to write.
The session ID for this request.
WriteTextFileResponse
Response tofs/write_text_file
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
session/request_permission
Requests permission from the user for a tool call operation. Called by the agent when it needs user authorization before executing a potentially sensitive operation. The client should present the options to the user and return their decision. If the client cancels the prompt turn viasession/cancel, it MUST
respond to this request with RequestPermissionOutcome::Cancelled.
See protocol docs: Requesting Permission
RequestPermissionRequest
Request for user permission to execute a tool call. Sent when the agent needs authorization before performing a sensitive operation. See protocol docs: Requesting Permission Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Available permission options for the user to choose from.
The session ID for this request.
Details about the tool call requiring permission.
RequestPermissionResponse
Response to a permission request. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The user’s decision on the permission request.
session/update
Handles session update notifications from the agent. This is a notification endpoint (no response expected) that receives real-time updates about session progress, including message chunks, tool calls, and execution plans. Note: Clients SHOULD continue accepting tool call updates even after sending asession/cancel notification, as the agent may send final
updates before responding with the cancelled stop reason.
See protocol docs: Agent Reports Output
SessionNotification
Notification containing a session update from the agent. Used to stream real-time progress and results during prompt processing. See protocol docs: Agent Reports Output Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The ID of the session this update pertains to.
The actual update content.
terminal/create
Executes a command in a new terminal Only available if theterminal Client capability is set to true.
Returns a TerminalId that can be used with other terminal methods
to get the current output, wait for exit, and kill the command.
The TerminalId can also be used to embed the terminal in a tool call
by using the ToolCallContent::Terminal variant.
The Agent is responsible for releasing the terminal by using the terminal/release
method.
See protocol docs: Terminals
CreateTerminalRequest
Request to create a new terminal and execute a command. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
args
Array of command arguments.
The command to execute.
Working directory for the command (absolute path).
env
Environment variables for the command.
Maximum number of output bytes to retain.When the limit is exceeded, the Client truncates from the beginning of the output
to stay within the limit.The Client MUST ensure truncation happens at a character boundary to maintain valid
string output, even if this means the retained output is slightly less than the
specified limit.
- Minimum:
0
The session ID for this request.
CreateTerminalResponse
Response containing the ID of the created terminal. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The unique identifier for the created terminal.
terminal/kill
Kills the terminal command without releasing the terminal Whileterminal/release will also kill the command, this method will keep
the TerminalId valid so it can be used with other methods.
This method can be helpful when implementing command timeouts which terminate
the command as soon as elapsed, and then get the final output so it can be sent
to the model.
Note: terminal/release when TerminalId is no longer needed.
See protocol docs: Terminals
KillTerminalCommandRequest
Request to kill a terminal command without releasing the terminal. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The session ID for this request.
The ID of the terminal to kill.
KillTerminalCommandResponse
Response to terminal/kill command method Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
terminal/output
Gets the terminal output and exit status Returns the current content in the terminal without waiting for the command to exit. If the command has already exited, the exit status is included. See protocol docs: TerminalsTerminalOutputRequest
Request to get the current output and status of a terminal. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The session ID for this request.
The ID of the terminal to get output from.
TerminalOutputResponse
Response containing the terminal output and exit status. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
exitStatus
Exit status if the command has completed.
The terminal output captured so far.
Whether the output was truncated due to byte limits.
terminal/release
Releases a terminal The command is killed if it hasn’t exited yet. Useterminal/wait_for_exit
to wait for the command to exit before releasing the terminal.
After release, the TerminalId can no longer be used with other terminal/* methods,
but tool calls that already contain it, continue to display its output.
The terminal/kill method can be used to terminate the command without releasing
the terminal, allowing the Agent to call terminal/output and other methods.
See protocol docs: Terminals
ReleaseTerminalRequest
Request to release a terminal and free its resources. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The session ID for this request.
The ID of the terminal to release.
ReleaseTerminalResponse
Response to terminal/release method Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
terminal/wait_for_exit
Waits for the terminal command to exit and return its exit status See protocol docs: TerminalsWaitForTerminalExitRequest
Request to wait for a terminal command to exit. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The session ID for this request.
The ID of the terminal to wait for.
WaitForTerminalExitResponse
Response containing the exit status of a terminal command. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The process exit code (may be null if terminated by signal).
- Minimum:
0
The signal that terminated the process (may be null if exited normally).
AgentCapabilities
Capabilities supported by the agent. Advertised during initialization to inform the client about available features and content types. See protocol docs: Agent Capabilities Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Whether the agent supports
session/load.- Default:
false
mcpCapabilities
MCP capabilities supported by the agent.
- Default:
{"http":false,"sse":false}
promptCapabilities
Prompt capabilities supported by the agent.
- Default:
{"audio":false,"embeddedContext":false,"image":false}
sessionCapabilities
- Default:
{}
Annotations
Optional annotations for the client. The client can use annotations to inform how objects are used or displayed Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
AudioContent
Audio provided to or from an LLM. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
annotations
AuthMethod
Describes an available authentication method. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Optional description providing more details about this authentication method.
Unique identifier for this authentication method.
Human-readable name of the authentication method.
AvailableCommand
Information about a command. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Human-readable description of what the command does.
input
Input for the command if required
Command name (e.g.,
create_plan, research_codebase).AvailableCommandInput
The input specification for a command. Type: UnionVariant
All text that was typed after the command name is provided as input.
AvailableCommandsUpdate
Available commands are ready or have changed Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Commands the agent can execute
BlobResourceContents
Binary resource contents. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
ClientCapabilities
Capabilities supported by the client. Advertised during initialization to inform the agent about available features and methods. See protocol docs: Client Capabilities Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
fs
File system capabilities supported by the client.
Determines which file operations the agent can request.
- Default:
{"readTextFile":false,"writeTextFile":false}
Whether the Client support all
terminal/* methods.- Default:
false
Content
Standard content block (text, images, resources). Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The actual content block.
ContentBlock
Content blocks represent displayable information in the Agent Client Protocol. They provide a structured way to handle various types of user-facing content—whether it’s text from language models, images for analysis, or embedded resources for context. Content blocks appear in:- User prompts sent via
session/prompt - Language model output streamed through
session/updatenotifications - Progress updates and results from tool calls
Text content. May be plain text or formatted with Markdown.All agents MUST support text content blocks in prompts.
Clients SHOULD render this text as Markdown.
Images for visual context or analysis.Requires the
image prompt capability when included in prompts.Audio data for transcription or analysis.Requires the
audio prompt capability when included in prompts.References to resources that the agent can access.All agents MUST support resource links in prompts.
Complete resource contents embedded directly in the message.Preferred for including context as it avoids extra round-trips.Requires the
embeddedContext prompt capability when included in prompts.ContentChunk
A streamed item of content Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
A single item of content
CurrentModeUpdate
The current mode of the session has changed See protocol docs: Session Modes Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The ID of the current mode
Diff
A diff representing file modifications. Shows changes to files in a format suitable for display in the client UI. See protocol docs: Content Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The new content after modification.
The original content (None for new files).
The file path being modified.
EmbeddedResource
The contents of a resource, embedded into a prompt or tool call result. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
annotations
EmbeddedResourceResource
Resource content that can be embedded in a message. Type: UnionTextResourceContents
BlobResourceContents
EnvVariable
An environment variable to set when launching an MCP server. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The name of the environment variable.
The value to set for the environment variable.
Error
JSON-RPC error object. Represents an error that occurred during method execution, following the JSON-RPC 2.0 error object specification with optional additional data. See protocol docs: JSON-RPC Error Object Type: Object Properties:A number indicating the error type that occurred. This must be an integer as
defined in the JSON-RPC specification.
Optional primitive or structured value that contains additional information
about the error. This may include debugging information or context-specific
details.
A string providing a short description of the error. The message should be
limited to a concise single sentence.
ErrorCode
Predefined error codes for common JSON-RPC and ACP-specific errors. These codes follow the JSON-RPC 2.0 specification for standard errors and use the reserved range (-32000 to -32099) for protocol-specific errors. Type: UnionParse error: Invalid JSON was received by the server. An error occurred on
the server while parsing the JSON text.
Invalid request: The JSON sent is not a valid Request object.
Method not found: The method does not exist or is not available.
Invalid params: Invalid method parameter(s).
Internal error: Internal JSON-RPC error. Reserved for
implementation-defined server errors.
Authentication required: Authentication is required before this operation
can be performed.
Resource not found: A given resource, such as a file, was not found.
Other undefined error code.
ExtNotification
Allows the Agent to send an arbitrary notification that is not part of the ACP spec. Extension notifications provide a way to send one-way messages for custom functionality while maintaining protocol compatibility. See protocol docs: ExtensibilityExtRequest
Allows for sending an arbitrary request that is not part of the ACP spec. Extension methods provide a way to add custom functionality while maintaining protocol compatibility. See protocol docs: ExtensibilityExtResponse
Allows for sending an arbitrary response to anExtRequest that is not part of the ACP spec.
Extension methods provide a way to add custom functionality while maintaining
protocol compatibility.
See protocol docs: Extensibility
FileSystemCapability
Filesystem capabilities supported by the client. File system capabilities that a client may support. See protocol docs: FileSystem Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Whether the Client supports
fs/read_text_file requests.- Default:
false
Whether the Client supports
fs/write_text_file requests.- Default:
false
HttpHeader
An HTTP header to set when making requests to the MCP server. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The name of the HTTP header.
The value to set for the HTTP header.
ImageContent
An image provided to or from an LLM. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
annotations
Implementation
Metadata about the implementation of the client or agent. Describes the name and version of an MCP implementation, with an optional title for UI representation. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Intended for programmatic or logical use, but can be used as a display
name fallback if title isn’t present.
Intended for UI and end-user contexts — optimized to be human-readable
and easily understood.If not provided, the name should be used for display.
Version of the implementation. Can be displayed to the user or used
for debugging or metrics purposes. (e.g. “1.0.0”).
McpCapabilities
MCP capabilities supported by the agent Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Agent supports
McpServer::Http.- Default:
false
Agent supports
McpServer::Sse.- Default:
false
McpServer
Configuration for connecting to an MCP (Model Context Protocol) server. MCP servers provide tools and context that the agent can use when processing prompts. See protocol docs: MCP Servers Type: UnionHTTP transport configurationOnly available when the Agent capabilities indicate
mcp_capabilities.http is true.SSE transport configurationOnly available when the Agent capabilities indicate
mcp_capabilities.sse is true.Variant
Stdio transport configurationAll Agents MUST support this transport.
McpServerHttp
HTTP transport configuration for MCP. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
HTTP headers to set when making requests to the MCP server.
Human-readable name identifying this MCP server.
URL to the MCP server.
McpServerSse
SSE transport configuration for MCP. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
HTTP headers to set when making requests to the MCP server.
Human-readable name identifying this MCP server.
URL to the MCP server.
McpServerStdio
Stdio transport configuration for MCP. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Command-line arguments to pass to the MCP server.
Path to the MCP server executable.
Environment variables to set when launching the MCP server.
Human-readable name identifying this MCP server.
ModelId
UNSTABLE This capability is not part of the spec yet, and may be removed or changed at any point. A unique identifier for a model. Type:string
ModelInfo
UNSTABLE This capability is not part of the spec yet, and may be removed or changed at any point. Information about a selectable model. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Optional description of the model.
Unique identifier for the model.
Human-readable name of the model.
PermissionOption
An option presented to the user when requesting permission. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Hint about the nature of this permission option.
Human-readable label to display to the user.
Unique identifier for this permission option.
PermissionOptionId
Unique identifier for a permission option. Type:string
PermissionOptionKind
The type of permission option being presented to the user. Helps clients choose appropriate icons and UI treatment. Type: UnionAllow this operation only this time.
Allow this operation and remember the choice.
Reject this operation only this time.
Reject this operation and remember the choice.
Plan
An execution plan for accomplishing complex tasks. Plans consist of multiple entries representing individual tasks or goals. Agents report plans to clients to provide visibility into their execution strategy. Plans can evolve during execution as the agent discovers new requirements or completes tasks. See protocol docs: Agent Plan Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The list of tasks to be accomplished.When updating a plan, the agent must send a complete list of all entries
with their current status. The client replaces the entire plan with each update.
PlanEntry
A single entry in the execution plan. Represents a task or goal that the assistant intends to accomplish as part of fulfilling the user’s request. See protocol docs: Plan Entries Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Human-readable description of what this task aims to accomplish.
The relative importance of this task.
Used to indicate which tasks are most critical to the overall goal.
Current execution status of this task.
PlanEntryPriority
Priority levels for plan entries. Used to indicate the relative importance or urgency of different tasks in the execution plan. See protocol docs: Plan Entries Type: UnionHigh priority task - critical to the overall goal.
Medium priority task - important but not critical.
Low priority task - nice to have but not essential.
PlanEntryStatus
Status of a plan entry in the execution flow. Tracks the lifecycle of each task from planning through completion. See protocol docs: Plan Entries Type: UnionThe task has not started yet.
The task is currently being worked on.
The task has been successfully completed.
PromptCapabilities
Prompt capabilities supported by the agent insession/prompt requests.
Baseline agent functionality requires support for ContentBlock::Text
and ContentBlock::ResourceLink in prompt requests.
Other variants must be explicitly opted in to.
Capabilities for different types of content in prompt requests.
Indicates which content types beyond the baseline (text and resource links)
the agent can process.
See protocol docs: Prompt Capabilities
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Agent supports
ContentBlock::Audio.- Default:
false
Agent supports embedded context in
session/prompt requests.When enabled, the Client is allowed to include ContentBlock::Resource
in prompt requests for pieces of context that are referenced in the message.- Default:
false
Agent supports
ContentBlock::Image.- Default:
false
ProtocolVersion
Protocol version identifier. This version is only bumped for breaking changes. Non-breaking changes should be introduced via capabilities. Type:integer (uint16)
| Constraint | Value |
|---|---|
| Minimum | 0 |
| Maximum | 65535 |
RequestId
JSON RPC Request Id An identifier established by the Client that MUST contain a String, Number, or NULL value if included. If it is not included it is assumed to be a notification. The value SHOULD normally not be Null [1] and Numbers SHOULD NOT contain fractional parts [2] The Server MUST reply with the same value in the Response object if included. This member is used to correlate the context between the two objects. [1] The use of Null as a value for the id member in a Request object is discouraged, because this specification uses a value of Null for Responses with an unknown id. Also, because JSON-RPC 1.0 uses an id value of Null for Notifications this could cause confusion in handling. [2] Fractional parts may be problematic, since many decimal fractions cannot be represented exactly as binary fractions. Type: UnionRequestPermissionOutcome
The outcome of a permission request. Type: UnionThe prompt turn was cancelled before the user responded.When a client sends a
session/cancel notification to cancel an ongoing
prompt turn, it MUST respond to all pending session/request_permission
requests with this Cancelled outcome.See protocol docs: CancellationThe user selected one of the provided options.
ResourceLink
A resource that the server is capable of reading, included in a prompt or tool call result. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
annotations
Role
The sender or recipient of messages and data in a conversation. Type: Enumeration| Value |
|---|
"assistant" |
"user" |
SelectedPermissionOutcome
The user selected one of the provided options. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The ID of the option the user selected.
SessionCapabilities
Session capabilities supported by the agent. As a baseline, all Agents MUST supportsession/new, session/prompt, session/cancel, and session/update.
Optionally, they MAY support other session methods and notifications by specifying additional capabilities.
Note: session/load is still handled by the top-level load_session capability. This will be unified in future versions of the protocol.
See protocol docs: Session Capabilities
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
fork
UNSTABLEThis capability is not part of the spec yet, and may be removed or changed at any point.Whether the agent supports
session/fork.list
UNSTABLEThis capability is not part of the spec yet, and may be removed or changed at any point.Whether the agent supports
session/list.SessionForkCapabilities
UNSTABLE This capability is not part of the spec yet, and may be removed or changed at any point. Capabilities for thesession/fork method.
By supplying \{\} it means that the agent supports forking of sessions.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
SessionId
A unique identifier for a conversation session between a client and agent. Sessions maintain their own context, conversation history, and state, allowing multiple independent interactions with the same agent. See protocol docs: Session ID Type:string
SessionInfo
UNSTABLE This capability is not part of the spec yet, and may be removed or changed at any point. Information about a session returned by session/list Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The working directory for this session. Must be an absolute path.
Unique identifier for the session
Human-readable title for the session
ISO 8601 timestamp of last activity
SessionListCapabilities
Capabilities for thesession/list method.
By supplying \{\} it means that the agent supports listing of sessions.
Further capabilities can be added in the future for other means of filtering or searching the list.
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
SessionMode
A mode the agent can operate in. See protocol docs: Session Modes Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
SessionModeId
Unique identifier for a Session Mode. Type:string
SessionModeState
The set of modes and the one currently active. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The set of modes that the Agent can operate in
The current mode the Agent is in.
SessionModelState
UNSTABLE This capability is not part of the spec yet, and may be removed or changed at any point. The set of models and the one currently active. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The set of models that the Agent can use
The current model the Agent is in.
SessionUpdate
Different types of updates that can be sent during session processing. These updates provide real-time feedback about the agent’s progress. See protocol docs: Agent Reports Output Type: UnionA chunk of the user’s message being streamed.
A chunk of the agent’s response being streamed.
A chunk of the agent’s internal reasoning being streamed.
Notification that a new tool call has been initiated.
Update on the status or results of a tool call.
The agent’s execution plan for complex tasks.
See protocol docs: Agent Plan
Available commands are ready or have changed
The current mode of the session has changedSee protocol docs: Session Modes
StopReason
Reasons why an agent stops processing a prompt turn. See protocol docs: Stop Reasons Type: UnionThe turn ended successfully.
The turn ended because the agent reached the maximum number of tokens.
The turn ended because the agent reached the maximum number of allowed agent
requests between user turns.
The turn ended because the agent refused to continue. The user prompt and
everything that comes after it won’t be included in the next prompt, so this
should be reflected in the UI.
The turn was cancelled by the client via
session/cancel.This stop reason MUST be returned when the client sends a session/cancel
notification, even if the cancellation causes exceptions in underlying operations.
Agents should catch these exceptions and return this semantically meaningful
response to confirm successful cancellation.Terminal
Embed a terminal created withterminal/create by its id.
The terminal must be added before calling terminal/release.
See protocol docs: Terminal
Type: Object
Properties:
The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
TerminalExitStatus
Exit status of a terminal command. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
The process exit code (may be null if terminated by signal).
- Minimum:
0
The signal that terminated the process (may be null if exited normally).
TextContent
Text provided to or from an LLM. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
annotations
TextResourceContents
Text-based resource contents. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
ToolCall
Represents a tool call that the language model has requested. Tool calls are actions that the agent executes on behalf of the language model, such as reading files, executing code, or fetching data from external sources. See protocol docs: Tool Calls Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
content
Content produced by the tool call.
kind
The category of tool being invoked.
Helps clients choose appropriate icons and UI treatment.
locations
File locations affected by this tool call.
Enables “follow-along” features in clients.
Raw input parameters sent to the tool.
Raw output returned by the tool.
status
Current execution status of the tool call.
Human-readable title describing what the tool is doing.
Unique identifier for this tool call within the session.
ToolCallContent
Content produced by a tool call. Tool calls can produce different types of content including standard content blocks (text, images) or file diffs. See protocol docs: Content Type: UnionStandard content block (text, images, resources).
File modification shown as a diff.
Embed a terminal created with
terminal/create by its id.The terminal must be added before calling terminal/release.See protocol docs: TerminalToolCallId
Unique identifier for a tool call within a session. Type:string
ToolCallLocation
A file location being accessed or modified by a tool. Enables clients to implement “follow-along” features that track which files the agent is working with in real-time. See protocol docs: Following the Agent Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Optional line number within the file.
- Minimum:
0
The file path being accessed or modified.
ToolCallStatus
Execution status of a tool call. Tool calls progress through different statuses during their lifecycle. See protocol docs: Status Type: UnionThe tool call hasn’t started running yet because the input is either streaming
or we’re awaiting approval.
The tool call is currently running.
The tool call completed successfully.
The tool call failed with an error.
ToolCallUpdate
An update to an existing tool call. Used to report progress and results as tools execute. All fields except the tool call ID are optional - only changed fields need to be included. See protocol docs: Updating Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
Replace the content collection.
kind
Update the tool kind.
Replace the locations collection.
Update the raw input.
Update the raw output.
status
Update the execution status.
Update the human-readable title.
The ID of the tool call being updated.
ToolKind
Categories of tools that can be invoked. Tool kinds help clients choose appropriate icons and optimize how they display tool execution progress. See protocol docs: Creating Type: UnionReading files or data.
Modifying files or content.
Removing files or data.
Moving or renaming files.
Searching for information.
Running commands or code.
Internal reasoning or planning.
Retrieving external data.
Switching the current session mode.
Other tool types (default).
UnstructuredCommandInput
All text that was typed after the command name is provided as input. Type: Object Properties:The _meta property is reserved by ACP to allow clients and agents to attach additional
metadata to their interactions. Implementations MUST NOT make assumptions about values at
these keys.See protocol docs: Extensibility
A hint to display when the input hasn’t been provided yet