Deprecated Features - ChristianPresley/zig-sdk GitHub Wiki
Revision 2026-07-28 keeps some features of older revisions in a deprecated state1. The SDK provides them behind explicit options. All options are off by default, except dynamic client registration in OAuthClient. The specification plans their removal not before 2027-07-28. A later SDK release then removes the options.
Applies to: MCP 2026-07-28, zig-sdk 0.1.0. The checks of sampling requests, the rate limit of log messages and dynamic client registration in AuthorizationServer: zig-sdk 0.2.0. RequestOptions.log_level: zig-sdk 0.4.0.
| Feature | Option | Effect when on |
|---|---|---|
| Sampling through multi round-trip requests | Server.Options.mrtr.sampling |
A handler can ask for sampling/createMessage. |
| Sampling with tools | Server.Options.mrtr.sampling_tools |
The sampling request can carry tools. |
| Roots | Server.Options.mrtr.roots |
A handler can ask for roots/list. |
| Logging | Server.Options.capabilities.logging |
ctx.log sends notifications/message on a request stream when the request set a logLevel. |
| Dynamic client registration | AuthorizationServer.Options.dynamic_registration |
The authorization server has a registration endpoint and names it in its metadata. |
The rate limit limits.rate_limits.log_messages applies to the log messages. The server drops the messages of a caller over the limit and later sends one summary with the count.
The specification keeps the multi round-trip request itself: elicitation stays. The client answers the deprecated input kinds only when it declared them in Client.Options.capabilities and gave the hooks sample and list_roots.
The deprecated features also include the includeContext values thisServer and allServers of a sampling request1. The server sends them only when the client declared the capability sampling.context. Else the request gets -32021. Omit the field or use none.
Before the server sends a sampling request, it checks the tool result rules of the messages2. The client does the same check before it calls the hook sample. See Server Guide and Client Guide.
| Feature | Option | Effect when on |
|---|---|---|
| Log level | Client.Options.log_level |
Every request asks for log messages at this level and above. |
| Log level of one request | RequestOptions.log_level |
The request asks for log messages at this level and above. It replaces Client.Options.log_level for the request. |
| Dynamic client registration | OAuthClient.Options.registration |
The default value .dynamic registers the client at the registration endpoint of the authorization server. With .client_metadata_url, the client registers itself only when the authorization server does not support client ID metadata documents. With .pre_registered, the client never registers itself. |
- The
initializehandshake. A server answers it with-32601and a message that names the supported revision. - Sessions, the
Mcp-Session-Idheader and stream resumption withLast-Event-ID. - Server-initiated requests. Everything a server needs from a client travels in an
InputRequiredResult. - The error codes
-32002and-32042. - The HTTP+SSE transport of revision 2024-11-051. Use Streamable HTTP.
- MCP-DEPRECATED-2026-07-28: The deprecated features registry of revision 2026-07-28.
- MCP-SAMPLING-2026-07-28: Sampling, the rules for tool uses and tool results.