Skip to content
Merged
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
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_elicitation",
"unstable_logout",
"unstable_session_fork",
"unstable_session_model",
Expand All @@ -28,6 +29,7 @@ unstable = [
]
unstable_auth_methods = []
unstable_cancel_request = []
unstable_elicitation = []
unstable_logout = []
unstable_session_fork = []
unstable_session_model = []
Expand Down
262 changes: 262 additions & 0 deletions docs/protocol/draft/schema.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -1134,6 +1134,122 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte

</ResponseField>

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

**UNSTABLE**

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

Requests structured user input via a form or URL.

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

**UNSTABLE**

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

Request from the agent to elicit structured user input.

The agent sends this to the client to request information from the user,
either via a form or by directing them to a URL.

**Type:** Union

<ResponseField name="form" type="object">
Form-based elicitation where the client renders a form from the provided schema.

<Expandable title="Properties">

<ResponseField name="mode" type={"string"} required>
The discriminator value. Must be `"form"`.
</ResponseField>
<ResponseField name="requestedSchema" type={"object"} required>
A JSON Schema describing the form fields to present to the user.
</ResponseField>

</Expandable>
</ResponseField>

<ResponseField name="url" type="object">
URL-based elicitation where the client directs the user to a URL.

<Expandable title="Properties">

<ResponseField
name="elicitationId"
type={<a href="#elicitationid">ElicitationId</a>}
required
>
The unique identifier for this elicitation.
</ResponseField>
<ResponseField name="mode" type={"string"} required>
The discriminator value. Must be `"url"`.
</ResponseField>
<ResponseField name="url" type={"string"} required>
The URL to direct the user to.
</ResponseField>

</Expandable>
</ResponseField>

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

**UNSTABLE**

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

Response from the client to an elicitation request.

**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="action" type={<a href="#elicitationaction">ElicitationAction</a>} required>
The user's action in response to the elicitation.
</ResponseField>

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

**UNSTABLE**

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

Notification that a URL-based elicitation has completed.

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

**UNSTABLE**

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

Notification sent by the agent when a URL-based elicitation is complete.

**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="elicitationId" type={<a href="#elicitationid">ElicitationId</a>} required>
The ID of the elicitation that completed.
</ResponseField>

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

Expand Down Expand Up @@ -2157,6 +2273,15 @@ in its `InitializeResponse`.

- Default: `{"terminal":false}`

</ResponseField>
<ResponseField name="elicitation" type={<><span><a href="#elicitationcapabilities">ElicitationCapabilities</a></span><span> | null</span></>} >
**UNSTABLE**

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

Elicitation capabilities supported by the client.
Determines which elicitation modes the agent may use.

</ResponseField>
<ResponseField name="fs" type={<a href="#filesystemcapabilities">FileSystemCapabilities</a>} >
File system capabilities supported by the client.
Expand Down Expand Up @@ -2484,6 +2609,134 @@ See protocol docs: [Extensibility](https://agentclientprotocol.com/protocol/exte
The file path being modified.
</ResponseField>

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

**UNSTABLE**

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

The user's action in response to an elicitation.

**Type:** Union

<ResponseField name="accept" type="object">
The user accepted and provided content.

<Expandable title="Properties">

<ResponseField name="action" type={"string"} required>
The discriminator value. Must be `"accept"`.
</ResponseField>
<ResponseField name="content" type={"object"}>
The user-provided content, if any.
</ResponseField>

</Expandable>
</ResponseField>

<ResponseField name="decline" type="object">
The user declined the elicitation.

<Expandable title="Properties">

<ResponseField name="action" type={"string"} required>
The discriminator value. Must be `"decline"`.
</ResponseField>

</Expandable>
</ResponseField>

<ResponseField name="cancel" type="object">
The elicitation was cancelled.

<Expandable title="Properties">

<ResponseField name="action" type={"string"} required>
The discriminator value. Must be `"cancel"`.
</ResponseField>

</Expandable>
</ResponseField>

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

**UNSTABLE**

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

Elicitation capabilities supported by the client.

**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="form" type={<><span><a href="#elicitationformcapabilities">ElicitationFormCapabilities</a></span><span> | null</span></>} >
Whether the client supports form-based elicitation.
</ResponseField>
<ResponseField name="url" type={<><span><a href="#elicitationurlcapabilities">ElicitationUrlCapabilities</a></span><span> | null</span></>} >
Whether the client supports URL-based elicitation.
</ResponseField>

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

**UNSTABLE**

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

Form-based elicitation capabilities.

**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">ElicitationId</span>

**UNSTABLE**

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

Unique identifier for an elicitation.

**Type:** `string`

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

**UNSTABLE**

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

URL-based elicitation capabilities.

**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">EmbeddedResource</span>

The contents of a resource, embedded into a prompt or tool call result.
Expand Down Expand Up @@ -2657,6 +2910,15 @@ because of resource constraints or shutdown.
**Resource not found**: A given resource, such as a file, was not found.
</ResponseField>

<ResponseField name="-32042" type="int32">
**URL elicitation required**: **UNSTABLE**

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

The agent requires user input via a URL-based elicitation before it can proceed.

</ResponseField>

<ResponseField name="Other" type="int32">
Other undefined error code.
</ResponseField>
Expand Down
2 changes: 2 additions & 0 deletions schema/meta.unstable.json
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
"clientMethods": {
"fs_read_text_file": "fs/read_text_file",
"fs_write_text_file": "fs/write_text_file",
"session_elicitation": "session/elicitation",
"session_elicitation_complete": "session/elicitation/complete",
"session_request_permission": "session/request_permission",
"session_update": "session/update",
"terminal_create": "terminal/create",
Expand Down
Loading
Loading