0.10.5 - 2025-12-17
- (unstable) Make constructing SessionConfigSelects on the Rust side nicer (#343)
0.10.4 - 2025-12-16
- (unstable) Draft implementation of session config options (#339)
0.10.3 - 2025-12-15
- (unstable) add SessionInfoUpdate to SessionUpdate enum (#334)
- (rust-only) Introduce MaybeUndefined type to allow for distinguishing between null and undefined (#337)
0.10.2 - 2025-12-11
- (unstable) add cwd and mcp_servers to session/fork (#333)
- (unstable) Draft implementation of session/resume (#324)
0.10.1 - 2025-12-09
- (unstable) Draft implementation of
$/cancel_requestnotification (#303)
- (schema) Add title field back (#321)
0.10.0 - 2025-12-06
This release mostly contains several nice quality-of-life improvements for the Rust version of the schema, as well as an unstable draft implementation of session/fork for people to start trying out.
- (rust-only) More convenient builder method params (#313)
- (unstable) Draft implementation of session/fork (#311)
- (rust-only): Provide nicer interface to
ErrorCodeand add them to the docs (#301)
- (rust) Make new methods consistent for all id params (#306)
0.9.1 - 2025-12-01
- Remove incorrect discriminator on
McpServertype (#292)
0.9.0 - 2025-12-01
This release defines the _meta properties in the schema as intended and currently used, which is always an object of key/value pairs, with string keys and arbitrary values.
While this is how everyone is using them, it became clear in code generation that the types weren't quite matching up to the expected usage. This should alleviate some extra checks on the implementer side.
- [breaking] Provide clearer schema for _meta properties (#290)
0.8.0 - 2025-11-28
Some follow-up changes from 0.7.0. Most of the changes were in the Rust schema to make things a bit easier to work with.
However, there were some further cleanups to the JSON schema to remove some $ref indirection where possible to have the schema be a bit flatter.
There are also some fixes that were causing issues with code generators related to Extension methods, these now have concrete types in the schema as well.
Rust: There are some breaking changes to the OutgoingMessage types and other low-level RPC types to make them generate clearer JSON schema representations. Likely these are only used by SDKs, but they moved to tuple enum variants.
Also, rather than having free-floating V0 and V1 constants, these are now associated constants on the ProtocolVersion type itself.
- Broken doctest and test in CI (#267)
- Remove some nesting of the JSON schema (#278)
- Easier ids in constructors (#275)
- Exhaustive RPC types (#272)
- Easier
newmethods for ExtRequest + ExtNotification (#271) - Protocol Version constants (#270)
- Cleanup Rust example from schema docs (#269)
- Introduce helper methods to get the corresponding method name of a (#268)
This is a big release as we move towards a v1.0 release of the JSON Schema.
This should be the final form, we just want to go through the motions of upgrading all of the SDKs to verify no further changes are needed.
NOTE: The Protocol version is already, and remains, 1. This is just for the JSON Schema itself. There are no breaking changes to the protocol, we just reworked the schema representation to be more compliant with code generation tooling for the various SDKs.
We also now have two variants of the schema attached to the release:
Stable
- schema.json
- meta.json
Unstable
- schema.unstable.json
- meta.unstable.json
As we have more RFD implementations in progress, this will allow us to iterate on the schema without requiring SDKs to churn through the changes.
For SDK authors, it is important if you use the unstable version, to make sure the unstable features are behind a flag of some kind with clear direction to your users about the state of these features. But this will also allow teams to start testing the unstable features and provide feedback to the RFD authors.
The Rust crate, agent-client-protocol-schema has major breaking changes. All exported type are now marked as #[non_exhaustive]. Since the schema itself is JSON, and we can introduce new fields and variants in a non-breaking way, we wanted to allow for the same behavior in the Rust library.
All enum variants are also tuple variants now, with their own structs. This made it nicer to represent in the JSON Schema, and also made sure we have _meta fields on all variants.
This upgrade will likely come with a lot of compilation errors, but ideally upgrading will be more painless in the future.
- Add
discriminatorfields to the schema.json for tagged enums to aid with code generation in language tooling.
Fix incorrectly named _meta field on SetSessionModeResponse
- No changes
- Make
Implementationfields public
- Add ability for agents and clients to provide information about their implementation agentclientprotocol/agent-client-protocol#192
- JSON Schema: More consistent inlining for enum representations to fix issues with code generation in language tooling.
- Provide more schema-level information about JSON-RPC format.
- Provide missing
_metafields on certain enum variants.
- More consistent enum usage. Enums are always either newtype or struct variants within a single enum, not mixed.
- No changes
- Make id types easier to create and add
PartialEqandEqimpls for as many types as possible.
- No changes
- Export
Resulttype with a default ofacp::Error
- Fix schema publishing
- Fix publishing
- Schema uploaded to GitHub releases
- SDK has moved to https://github.com/agentclientprotocol/rust-sdk
- Start publishing schema types to crates.io: https://crates.io/crates/agent-client-protocol-schema
- No changes
- Fix: support all valid JSON-RPC ids (int, string, null)
- No changes
- Unstable initial support for model selection.
- No changes
- Provide default trait implementations for optional capability-based
AgentandClientmethods.
- Correctly mark capability-based
AgentandClientmethods as optional.
- Defined
Resource not founderror type as code-32002(same as MCP)
- impl
AgentandClientforRc<T>andArc<T>whereTimplements either trait.
Unstable fix missing method for model selection in Rust library.
Unstable initial support for model selection.
No changes.
- Make
AgentandClientdyn compatible (you'll need to annotate them with#[async_trait]) #97 ext_methodandext_notificationmethods are now more consistent with the other trait methods #95- There are also distinct types for
ExtRequest,ExtResponse, andExtNotification
- There are also distinct types for
- Rexport
serde_json::RawValuefor easier use #95