Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ node_modules
dist
*.tsbuildinfo
.DS_Store
.idea

# TypeScript generated files
typescript/*.js
Expand Down
1 change: 1 addition & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Read AGENTS.md before making any changes — it contains project workflow instructions, naming conventions, and required commands.
2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ include = ["/src/**/*.rs", "/README.md", "/LICENSE", "/Cargo.toml"]
unstable = [
"unstable_auth_methods",
"unstable_cancel_request",
"unstable_llm_providers",
"unstable_elicitation",
"unstable_logout",
"unstable_session_fork",
Expand All @@ -29,6 +30,7 @@ unstable = [
]
unstable_auth_methods = []
unstable_cancel_request = []
unstable_llm_providers = []
unstable_elicitation = []
unstable_logout = []
unstable_session_fork = []
Expand Down
299 changes: 299 additions & 0 deletions docs/protocol/draft/schema.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,180 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte

</ResponseField>

<a id="providers-disable"></a>
### <span class="font-mono">providers/disable</span>

**UNSTABLE**

This capability is not part of the spec yet, and may be removed or changed at any point.

Disables a provider.

#### <span class="font-mono">DisableProvidersRequest</span>

**UNSTABLE**

This capability is not part of the spec yet, and may be removed or changed at any point.

Request parameters for `providers/disable`.

**Type:** Object

**Properties:**

<ResponseField name="_meta" type={"object | null"} >
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](https://agentclientprotocol.com/protocol/extensibility)

</ResponseField>
<ResponseField name="id" type={"string"} required>
Provider id to disable.
</ResponseField>

#### <span class="font-mono">DisableProvidersResponse</span>

**UNSTABLE**

This capability is not part of the spec yet, and may be removed or changed at any point.

Response to `providers/disable`.

**Type:** Object

**Properties:**

<ResponseField name="_meta" type={"object | null"} >
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](https://agentclientprotocol.com/protocol/extensibility)

</ResponseField>

<a id="providers-list"></a>
### <span class="font-mono">providers/list</span>

**UNSTABLE**

This capability is not part of the spec yet, and may be removed or changed at any point.

Lists providers that can be configured by the client.

#### <span class="font-mono">ListProvidersRequest</span>

**UNSTABLE**

This capability is not part of the spec yet, and may be removed or changed at any point.

Request parameters for `providers/list`.

**Type:** Object

**Properties:**

<ResponseField name="_meta" type={"object | null"} >
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](https://agentclientprotocol.com/protocol/extensibility)

</ResponseField>

#### <span class="font-mono">ListProvidersResponse</span>

**UNSTABLE**

This capability is not part of the spec yet, and may be removed or changed at any point.

Response to `providers/list`.

**Type:** Object

**Properties:**

<ResponseField name="_meta" type={"object | null"} >
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](https://agentclientprotocol.com/protocol/extensibility)

</ResponseField>
<ResponseField name="providers" type={<a href="#providerinfo">ProviderInfo[]</a>} required>
Configurable providers with current routing info suitable for UI display.
</ResponseField>

<a id="providers-set"></a>
### <span class="font-mono">providers/set</span>

**UNSTABLE**

This capability is not part of the spec yet, and may be removed or changed at any point.

Replaces the configuration for a provider.

#### <span class="font-mono">SetProvidersRequest</span>

**UNSTABLE**

This capability is not part of the spec yet, and may be removed or changed at any point.

Request parameters for `providers/set`.

Replaces the full configuration for one provider id.

**Type:** Object

**Properties:**

<ResponseField name="_meta" type={"object | null"} >
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](https://agentclientprotocol.com/protocol/extensibility)

</ResponseField>
<ResponseField name="apiType" type={<a href="#llmprotocol">LlmProtocol</a>} required>
Protocol type for this provider.
</ResponseField>
<ResponseField name="baseUrl" type={"string"} required>
Base URL for requests sent through this provider.
</ResponseField>
<ResponseField name="headers" type={"object"} >
Full headers map for this provider.
May include authorization, routing, or other integration-specific headers.
</ResponseField>
<ResponseField name="id" type={"string"} required>
Provider id to configure.
</ResponseField>

#### <span class="font-mono">SetProvidersResponse</span>

**UNSTABLE**

This capability is not part of the spec yet, and may be removed or changed at any point.

Response to `providers/set`.

**Type:** Object

**Properties:**

<ResponseField name="_meta" type={"object | null"} >
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](https://agentclientprotocol.com/protocol/extensibility)

</ResponseField>

<a id="session-cancel"></a>
### <span class="font-mono">session/cancel</span>

Expand Down Expand Up @@ -1805,6 +1979,16 @@ Authentication-related capabilities supported by the agent.

- Default: `{"audio":false,"embeddedContext":false,"image":false}`

</ResponseField>
<ResponseField name="providers" type={<><span><a href="#providerscapabilities">ProvidersCapabilities</a></span><span> | null</span></>} >
**UNSTABLE**

This capability is not part of the spec yet, and may be removed or changed at any point.

Provider configuration capabilities supported by the agent.

By supplying `\{\}` it means that the agent supports provider configuration methods.

</ResponseField>
<ResponseField name="sessionCapabilities" type={<a href="#sessioncapabilities">SessionCapabilities</a>} >

Expand Down Expand Up @@ -3423,6 +3607,40 @@ Schema for integer properties in an elicitation form.
Optional title for the property.
</ResponseField>

## <span class="font-mono">LlmProtocol</span>

**UNSTABLE**

This capability is not part of the spec yet, and may be removed or changed at any point.

Well-known API protocol identifiers for LLM providers.

**Type:** Union

<ResponseField name="anthropic" type="string">
Anthropic API protocol.
</ResponseField>

<ResponseField name="openai" type="string">
OpenAI API protocol.
</ResponseField>

<ResponseField name="azure" type="string">
Azure OpenAI API protocol.
</ResponseField>

<ResponseField name="vertex" type="string">
Google Vertex AI API protocol.
</ResponseField>

<ResponseField name="bedrock" type="string">
AWS Bedrock API protocol.
</ResponseField>

<ResponseField name="other" type="string">
Unknown or custom protocol.
</ResponseField>

## <span class="font-mono">LogoutCapabilities</span>

**UNSTABLE**
Expand Down Expand Up @@ -4030,6 +4248,87 @@ Non-breaking changes should be introduced via capabilities.
| Minimum | `0` |
| Maximum | `65535` |

## <span class="font-mono">ProviderCurrentConfig</span>

**UNSTABLE**

This capability is not part of the spec yet, and may be removed or changed at any point.

Current effective non-secret routing configuration for a provider.

**Type:** Object

**Properties:**

<ResponseField
name="apiType"
type={<a href="#llmprotocol">LlmProtocol</a>}
required
>
Protocol currently used by this provider.
</ResponseField>
<ResponseField name="baseUrl" type={"string"} required>
Base URL currently used by this provider.
</ResponseField>

## <span class="font-mono">ProviderInfo</span>

**UNSTABLE**

This capability is not part of the spec yet, and may be removed or changed at any point.

Information about a configurable LLM provider.

**Type:** Object

**Properties:**

<ResponseField name="_meta" type={"object | null"} >
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](https://agentclientprotocol.com/protocol/extensibility)

</ResponseField>
<ResponseField name="current" type={<><span><a href="#providercurrentconfig">ProviderCurrentConfig</a></span><span> | null</span></>} required>
Current effective non-secret routing config.
Null means provider is disabled.
</ResponseField>
<ResponseField name="id" type={"string"} required>
Provider identifier, for example "main" or "openai".
</ResponseField>
<ResponseField name="required" type={"boolean"} required>
Whether this provider is mandatory and cannot be disabled via `providers/disable`.
If true, clients must not call `providers/disable` for this id.
</ResponseField>
<ResponseField name="supported" type={<a href="#llmprotocol">LlmProtocol[]</a>} required>
Supported protocol types for this provider.
</ResponseField>

## <span class="font-mono">ProvidersCapabilities</span>

**UNSTABLE**

This capability is not part of the spec yet, and may be removed or changed at any point.

Provider configuration capabilities supported by the agent.

By supplying `\{\}` it means that the agent supports provider configuration methods.

**Type:** Object

**Properties:**

<ResponseField name="_meta" type={"object | null"} >
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](https://agentclientprotocol.com/protocol/extensibility)

</ResponseField>

## <span class="font-mono">RequestId</span>

JSON RPC Request Id
Expand Down
3 changes: 3 additions & 0 deletions schema/meta.unstable.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
"authenticate": "authenticate",
"initialize": "initialize",
"logout": "logout",
"providers_disable": "providers/disable",
"providers_list": "providers/list",
"providers_set": "providers/set",
"session_cancel": "session/cancel",
"session_close": "session/close",
"session_fork": "session/fork",
Expand Down
Loading