agentclientprotocol/agent-client-protocol
69.9
Adequate · 30 September 2026
45.6k
lines of production code
Rust
primary language
2
measurements over time
What this system is
This system is a schema definition library for the Agent Client Protocol (ACP), providing structured type definitions for agent-client communication. It maintains stable v1 and draft v2 protocol schemas, exposing core capabilities such as session management, elicitation, and JSON-RPC message handling. The project also includes tooling to generate JSON Schema artifacts and automate documentation for the protocol registry.
Features
Agent Client Protocol v1 schema and method registry released
The \schema/v1\ directory now contains the official v1 JSON Schema (\schema.json\), an unstable variant (\schema.unstable.json\), and a \meta.json\ file that explicitly maps stable and unstable agent/client method names (such as \session/new\, \elicitation/create\, and \mcp/message\). This release establishes the v1 protocol contract, including stabilized features like terminal authentication, elicitation, and request cancellation, alongside unstable additions like subagent support and MCP-over-ACP request scoping.
schema/v1 · high confidence
Automated registry documentation generation and spell checking
A new Python script (scripts/generate\_registry\_docs.py) now automatically generates the registry documentation page by fetching agent data and SVG icons from the ACP Agent Registry CDN, sanitizing the SVGs for JSX compatibility, and rendering them as MDX components. Additionally, a new shell script (scripts/spellcheck.sh) has been added to run the 'typos' spell checker against the project using a local configuration file.
scripts · high confidence
Introduce Agent Client Protocol (ACP) v2 schema definitions
The \schema/v2\ directory now contains the complete JSON Schema definitions and metadata for the Agent Client Protocol version 2. This includes \schema.json\ and \schema.unstable.json\ for the stable and unstable protocol surfaces, alongside \meta.json\ and \meta.unstable.json\ which map method names to their corresponding JSON-RPC endpoints (such as \session/new\, \auth/login\, and \elicitation/create\). A \CHANGELOG.md\ is also provided to track version history, starting with the \2.0.0-alpha.6\ release.
schema/v2 · high confidence
Introduce Agent Client Protocol v2 draft types
This release adds the v2 draft schema for the Agent Client Protocol, gated behind the \unstable\_protocol\_v2\ feature. The new types define the wire format for v2, including the \InitializeRequest\ and \InitializeResponse\ (which now require implementation info and support negotiated auth methods), a redesigned \SessionUpdate\ notification enum for session lifecycle and content streaming, and dedicated modules for elicitation, error handling, and protocol extensions. The v2 types intentionally diverge from the v1 wire format and are subject to change as the draft evolves.
agent-client-protocol-schema/src/v2 · high confidence
Schema generator now supports v2 protocol output
The schema-generator tool has been updated to generate JSON Schema artifacts for the v2 protocol. By enabling the \unstable\_protocol\_v2\ feature flag, the generator now produces \v2/schema.json\ and \v2/schema.unstable.json\ files, incorporating v2-specific types such as \JsonRpcBatch\ and \ProtocolLevelNotification\. The stable v1 schemas remain available under \v1/schema.json\ and \v1/schema.unstable.json\ when the v2 feature is disabled.
schema-generator · high confidence
Stabilize Agent Client Protocol v1 schema types
The Agent Client Protocol v1 schema is now available as a stable, public module under \agent-client-protocol-schema/src/v1\. This release exposes the core types for implementing agents and clients, including initialization, session management, content blocks, elicitation, error handling, and extensibility. It also includes stable support for Next Edit Suggestions (NES) and MCP-over-ACP transport, while keeping subagents, session notices, and compaction as unstable features gated by feature flags.
agent-client-protocol-schema/src/v1 · high confidence
Removals
Removed legacy Rust ACP protocol definitions and schema generation script
The \rust/acp.rs\ file containing the original ACP protocol types (such as \Message\, \ClientRequest\, \AgentRequest\, and associated methods like \list\_threads\ and \read\_file\) and the \rust/generate.rs\ script used to produce JSON schemas from these types have been deleted. This removal eliminates the legacy Rust binding definitions and the associated code-generation tooling from the project.
rust · high confidence
Removed legacy TypeScript ACP protocol implementation
The legacy TypeScript implementation of the Agent Coding Protocol (ACP) has been removed. This includes the deletion of \typescript/acp.ts\ (which defined the core types, interfaces, and method maps for Client and Agent), \typescript/connection.ts\ (which handled the JSON-RPC connection logic and message streaming), and \typescript/generate.js\ (the script used to generate the TypeScript types from the JSON schema). Users relying on this specific TypeScript ACP client/server stack will no longer have access to these files.
typescript · high confidence
Behavioural changes
ACP schema crate restructured with versioned modules and optional schemars support
The Agent Client Protocol schema crate has been reorganized to expose stable protocol types (requests, responses, notifications, and JSON-RPC envelopes) under explicit version modules, such as \v1\, while keeping the \schemars\ JSON Schema generation feature optional to reduce dependencies for consumers that only need serialization. The crate also introduces lenient deserialization for defaultable payloads, allowing them to accept \null\ values and fall back to defaults, and includes stricter validation for the protocol version identifier to reject invalid formats.
agent-client-protocol-schema/src · high confidence
Dependencies
Project restructured into a Rust workspace with separate schema packages
The repository has been reorganized from a single monolithic crate into a Rust workspace containing four distinct packages: the core \agent-client-protocol-schema\ library, a \schema-generator\ tool, and two version-marker packages (\agent-client-protocol-json-schema-v1\ and \agent-client-protocol-json-schema-v2\). This change introduces feature flags to control the inclusion of unstable protocol capabilities (such as session compaction, subagents, and MCP-over-ACP) and allows consumers to opt out of the \schemars\ dependency to reduce binary size. The npm package has also been renamed to \@agentclientprotocol/schema\ and updated to use \prettier\ and \mint\ for formatting and documentation generation.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 71 → 70 (-0.9)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 92 → 92 (+0.1)
- Architecture 100 → 94 (-5.8)
- Maturity 63 → 63 (+0.1)
- Readiness 83 → 71 (-11.8)
- Security 64 → 70 (+6.3)
Resolved (14)
- Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
- Documentation: no contributor guidance (docs/README.md)
- Documentation: no usage examples (docs/README.md)
- Duplicated block (10 lines × 2) (agent-client-protocol-schema/src/v1/client.rs)
- Duplicated block (13 lines × 2) (agent-client-protocol-schema/src/v1/agent.rs)
- High CVE: [GHSA redacted] (package-lock.json)
- Hotspot: agent-client-protocol-schema/src/v1/agent.rs (agent-client-protocol-schema/src/v1/agent.rs)
- Hotspot: agent-client-protocol-schema/src/v2/agent.rs (agent-client-protocol-schema/src/v2/agent.rs)
- Hotspot: schema-generator/src/main.rs (schema-generator/src/main.rs)
- MarkdownGenerator::document_variant_table_row (cognitive 67) (schema-generator/src/main.rs)
- MarkdownGenerator::document_variant_table_row (cyclomatic 35) (schema-generator/src/main.rs)
- Medium CVE: [GHSA redacted] (package-lock.json)
- Members sharing a duplicated core (13 members, 50+ identical tokens) (agent-client-protocol-schema/src/v1/elicitation.rs)
- Off-boarding risk: anonymized user #1
New (19)
- Dependency hygiene PARTLY measured — Cargo dependencies read, dependency currency not (crates.io unreachable)
- Documentation: no project overview (README.md)
- Duplicated block (10 lines × 2) (agent-client-protocol-schema/src/v1/client.rs)
- Duplicated block (11 lines × 2) (agent-client-protocol-schema/src/v1/agent.rs)
- Duplicated block (14–16 lines × 2) (agent-client-protocol-schema/src/v1/client.rs)
- Duplicated block (231 lines × 2) (agent-client-protocol-schema/src/v1/mcp.rs)
- Duplicated block (7 lines × 2) (agent-client-protocol-schema/src/v1/client.rs)
- Duplicated block (9 lines × 2) (agent-client-protocol-schema/src/v1/client.rs)
- High CVE: [GHSA redacted] (package-lock.json)
- High CVE: [GHSA redacted] (package-lock.json)
- MarkdownGenerator::document_variant_with_refs (cognitive 67) (schema-generator/src/main.rs)
- MarkdownGenerator::document_variant_with_refs (cyclomatic 35) (schema-generator/src/main.rs)
- Members sharing a duplicated core (13 members, 50+ identical tokens) (agent-client-protocol-schema/src/v1/elicitation.rs)
- MethodTooLong: MarkdownGenerator.document_variant_with_refs (schema-generator/src/main.rs)
- Off the main sequence: agent-client-protocol-schema
- Off-boarding risk: anonymized user #1
- Projects may be oversized for their cohesion
- Redundant accessor methods for extracting the inner message. inner() and into_inner() perform the same logical operation (accessing the contained data) but differ only in ownership semantics (borrow vs. consume). While this is a common Rust pattern, in the context of a public API surface review, it represents a slight inconsistency in naming convention compared to standard library conventions where into_inner is often the primary method and as_ref/inner are optional convenience methods, or vice versa. More critically, wrap is a constructor-like method that doesn't follow the standard new naming convention used by all other types in this schema.
- Repeated repair: agent-client-protocol-schema/src/v1/mcp.rs (agent-client-protocol-schema/src/v1/mcp.rs)
Changes since last survey
- 97 commits — 94 feature/other, 3 fixes
By area
- docs/get-started — 62 commits
- docs/protocol — 10 commits
- (root) — 8 commits
- .github/workflows — 7 commits
- docs/rfds — 5 commits
- agent-client-protocol-schema/src — 4 commits
- docs/libraries — 1 commit
Notable commits
- fix: fix(docs): align protocol guides and schema references (#2177)
- fix: fix(rust): accept null for defaultable payloads (#2178)
- fix: fix(unstable): allow MCP response extensions (#2265)
- change: chore(agent-client-protocol-schema): release v1.9.1 (#2179)
- change: chore(deps): bump crate-ci/typos from 1.50.1 to 1.50.2 (#2195)
- change: chore(deps): bump crate-ci/typos from 1.50.2 to 1.50.3 (#2241)
- change: chore(deps): bump dtolnay/rust-toolchain (#2196)
- change: chore(deps): bump release-plz/action from 0.5.136 to 0.5.138 (#2197)
- change: chore(deps): bump release-plz/action from 0.5.138 to 0.5.139 (#2243)
- change: chore(deps): bump taiki-e/install-action from 2.87.11 to 2.87.15 (#2194)
- change: chore(deps): bump taiki-e/install-action from 2.87.15 to 2.87.20 (#2242)
- change: chore(deps): bump the minor group with 23 updates (#2199)
- change: chore(deps): bump the minor group with 25 updates (#2245)
- change: chore(deps): bump the minor group with 4 updates (#2244)
- change: chore(deps): bump the minor group with 9 updates (#2198)
- change: chore: release (#2122)
- change: chore: release (#2172)
- change: chore: release (#2247)
- change: docs(clients): add AcpAgent Client to Desktop and Web (#2205)
- change: docs(clients): add OctoShell to Desktop and Web (#2252)
- …and 77 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
agentclientprotocol/agent-client-protocol was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 30 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 836266379de98194b848b897207939d19d240a9d — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-cb25ca4feafa.