MCPcopy Index your code
hub / github.com/agentclientprotocol/agent-client-protocol

github.com/agentclientprotocol/agent-client-protocol @schema-v1.19.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release schema-v1.19.0 ↗ · + Follow
1,623 symbols 3,065 edges 35 files 23 documented · 1% 8 cross-repo links updated 1d agoschema-v1.19.0 · 2026-07-06★ 3,5874 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Agent Client Protocol

Agent Client Protocol

The Agent Client Protocol (ACP) standardizes communication between code editors (interactive programs for viewing and editing source code) and coding agents (programs that use generative AI to autonomously modify code).

Learn more at agentclientprotocol.com.

Rust Crate and Schema Artifacts

This repository's root Rust crate is agent-client-protocol-schema. It provides the Rust data model for ACP wire messages, including request, response, notification, JSON-RPC envelope, and protocol-version types. Use this crate when you need direct access to ACP protocol types, schema-oriented tooling, or code generation inputs.

If you are implementing a Rust ACP agent or client, start with the higher-level agent-client-protocol runtime crate instead. That crate provides the client and agent runtime APIs for ACP integrations; this schema crate is the lower-level protocol type surface.

Generated JSON Schema artifacts live in schema/v1 and schema/v2. When a schema release is published, the versioned .json files are also attached to the corresponding schema-v* GitHub release, which is the recommended download surface for SDK generators and other release automation.

Versioning

The Rust crate version and JSON Schema release versions describe the Rust crate and JSON Schema artifacts themselves. The Rust crate is published to crates.io, while the versioned JSON Schema files are attached to GitHub releases rather than published as crates. These versions follow the compatibility expectations of those artifacts: Rust APIs, generated schema structure, artifact layout, and other details that downstream SDKs or code generators may consume.

The current stable ACP protocol version is 1.

ACP wire compatibility is determined separately by the protocol version exchanged during initialize via protocolVersion. The version field in the versioned schema/*/meta*.json files also describes the ACP protocol version that the corresponding schema represents.

This means two versions of the JSON Schema artifacts can describe the same wire-compatible ACP protocol version while having different schema structure for SDK generators. For example, a release might change how definitions are organized, named, or emitted in the JSON Schema in a way that affects downstream code generation without changing the JSON messages exchanged by ACP clients and agents.

Consumers should not infer wire compatibility from the crate or schema release version alone. Use the negotiated protocolVersion to determine the ACP wire protocol shape and breaking-compatibility level. Within a protocol version, use the exchanged capabilities to decide which optional ACP messages and features are supported. Use artifact versions to manage compatibility with this repository's Rust and schema outputs.

Integrations

Contributing

ACP is a protocol intended for broad adoption across the ecosystem; we follow a structured process to ensure changes are well-considered. Read the Contributing Guide for more information.

Contribution Policy

This project does not require a Contributor License Agreement (CLA). Instead, contributions are accepted under the following terms:

By contributing to this project, you agree that your contributions will be licensed under the Apache License, Version 2.0. You affirm that you have the legal right to submit your work, that you are not including code you do not have rights to, and that you understand contributions are made without requiring a Contributor License Agreement (CLA).

Extension points exported contracts — how you extend this code

IntoOption (Interface)
Utility trait for builder methods for optional values. This allows the caller to either pass in the value itself without [17 …
agent-client-protocol-schema/src/serde_util.rs
IntoMaybeUndefined (Interface)
Utility trait for builder methods for optional values. This allows the caller to either pass in the value itself without [15 …
agent-client-protocol-schema/src/serde_util.rs
IntoV1 (Interface)
Converts a value from the v2 draft type namespace into the matching v1 type. [239 implementers]
agent-client-protocol-schema/src/v2/conversion.rs
IntoV1Many (Interface)
Converts a value from the v2 draft type namespace into one or more v1 values. Use this trait for protocol values where [6 …
agent-client-protocol-schema/src/v2/conversion.rs
IntoV2 (Interface)
Converts a value from the v1 type namespace into the matching v2 draft type. [244 implementers]
agent-client-protocol-schema/src/v2/conversion.rs

Core symbols most depended-on inside this repo

into_option
called by 317
agent-client-protocol-schema/src/v1/client.rs
into_option
called by 299
agent-client-protocol-schema/src/v2/tool_call.rs
into_v1_default_on_error
called by 44
agent-client-protocol-schema/src/v2/conversion.rs
into_v2_default_on_error
called by 44
agent-client-protocol-schema/src/v2/conversion.rs
map
called by 38
agent-client-protocol-schema/src/serde_util.rs
v1_to_v2
called by 31
agent-client-protocol-schema/src/v2/conversion.rs
v2_to_v1
called by 28
agent-client-protocol-schema/src/v2/conversion.rs
unknown_v2_enum_variant
called by 26
agent-client-protocol-schema/src/v2/conversion.rs

Shape

Function 565
Class 480
Method 471
Enum 102
Interface 5

Languages

Rust99%
Python1%
TypeScript1%

Modules by API surface

agent-client-protocol-schema/src/v2/agent.rs231 symbols
agent-client-protocol-schema/src/v1/agent.rs207 symbols
agent-client-protocol-schema/src/v2/nes.rs119 symbols
agent-client-protocol-schema/src/v2/elicitation.rs114 symbols
agent-client-protocol-schema/src/v1/elicitation.rs114 symbols
agent-client-protocol-schema/src/v1/nes.rs111 symbols
agent-client-protocol-schema/src/v2/conversion.rs110 symbols
agent-client-protocol-schema/src/v2/client.rs95 symbols
agent-client-protocol-schema/src/v1/client.rs85 symbols
schema-generator/src/main.rs58 symbols
agent-client-protocol-schema/src/v2/tool_call.rs58 symbols
agent-client-protocol-schema/src/v2/content.rs48 symbols

For agents

$ claude mcp add agent-client-protocol \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page