Spec diff: 2025-11-25 → 2026-07-28
- Spec
2025-11-25 → 2026-07-28- Verified
This page compares the official schema.json of the two revisions. The tables are generated when the site is built, from copies of both files kept in our repository, so they show exactly what the schema says. The notes on methods are ours.
145 definitions in 2025-11-25, 155 in 2026-07-28: 42 added, 32 removed, 76 changed (16 of them only in wording).
Methods
Section titled “Methods”Thirteen methods are gone from the core protocol and three are new.
| Method | Change | What it means |
|---|---|---|
initialize | Removed | There is no handshake: every request carries the protocol version and client capabilities in _meta. spec |
logging/setLevel | Removed | The log level is now set per request with io.modelcontextprotocol/logLevel in _meta. Logging itself is deprecated, not removed. spec |
notifications/elicitation/complete | Removed | Dropped along with the elicitationId of URL-mode elicitation. The client learns the outcome by retrying the original request. spec |
notifications/initialized | Removed | Went away with initialize. spec |
notifications/roots/list_changed | Removed | Roots itself is deprecated; a server asks for roots through an input request instead. spec |
notifications/subscriptions/acknowledged | Added | First message on a subscriptions/listen stream: the subset of requested notification types the server will actually send. spec |
notifications/tasks/status | Removed | Gone from the core protocol with the rest of tasks. Check the io.modelcontextprotocol/tasks extension for what it offers now. spec |
ping | Removed | A 2026-07-28 server answers it with -32601 Method not found. spec |
resources/subscribe | Removed | List the resource URIs in the resourceSubscriptions filter of subscriptions/listen. spec |
resources/unsubscribe | Removed | Close or cancel the subscriptions/listen request instead. spec |
server/discover | Added | Returns supported protocol versions, capabilities and server info. Servers must implement it; clients may call it first, and dual-era stdio clients should use it as the probe before falling back to initialize. spec |
subscriptions/listen | Added | One long-lived request whose response stream carries the change notifications the client opted in to. Replaces the HTTP GET stream and resources/subscribe. spec |
tasks/cancel | Removed | Gone from the core protocol with the rest of tasks. Check the io.modelcontextprotocol/tasks extension for what it offers now. spec |
tasks/get | Removed | Moved out of the core protocol into the official extension io.modelcontextprotocol/tasks, which was redesigned. spec |
tasks/list | Removed | Gone from the core protocol, and the tasks extension has no tasks/list. spec |
tasks/result | Removed | Gone from the core protocol. The tasks extension polls with tasks/get instead of blocking on tasks/result. spec |
New definitions
Section titled “New definitions”Most of the new types serve three features: the per-request _meta envelope (RequestMetaObject, ResultMetaObject), multi round-trip requests (InputRequiredResult, InputRequests, InputResponses) and caching (CacheableResult). The …ResultResponse types are complete JSON-RPC responses that wrap the matching result, and the error types give each spec error code its own schema.
| Definition | Fields |
|---|---|
CacheableResult | _meta, cacheScope, resultType, ttlMs |
CallToolResultResponse | id, jsonrpc, result |
CompleteResultResponse | id, jsonrpc, result |
DiscoverRequestserver/discover | id, jsonrpc, method, params |
DiscoverResult | _meta, cacheScope, capabilities, instructions, resultType, supportedVersions, ttlMs |
DiscoverResultResponse | id, jsonrpc, result |
GetPromptResultResponse | id, jsonrpc, result |
HeaderMismatchError | error, id, jsonrpc |
InputRequest | |
InputRequests | |
InputRequiredResult | _meta, inputRequests, requestState, resultType |
InputResponse | |
InputResponseRequestParams | _meta, inputResponses, requestState |
InputResponses | |
InternalError | code, data, message |
InvalidParamsError | code, data, message |
InvalidRequestError | code, data, message |
JSONArray | |
JSONObject | |
JSONValue | |
ListPromptsResultResponse | id, jsonrpc, result |
ListResourcesResultResponse | id, jsonrpc, result |
ListResourceTemplatesResultResponse | id, jsonrpc, result |
ListToolsResultResponse | id, jsonrpc, result |
MetaObject | |
MethodNotFoundError | code, data, message |
MissingRequiredClientCapabilityError | error, id, jsonrpc |
NotificationMetaObject | io.modelcontextprotocol/subscriptionId |
ParseError | code, data, message |
ReadResourceResultResponse | id, jsonrpc, result |
RequestMetaObject | io.modelcontextprotocol/clientCapabilities, io.modelcontextprotocol/clientInfo, io.modelcontextprotocol/logLevel, io.modelcontextprotocol/protocolVersion, progressToken |
ResultMetaObject | io.modelcontextprotocol/serverInfo |
ResultType | |
SubscriptionFilter | promptsListChanged, resourceSubscriptions, resourcesListChanged, toolsListChanged |
SubscriptionsAcknowledgedNotificationnotifications/subscriptions/acknowledged | jsonrpc, method, params |
SubscriptionsAcknowledgedNotificationParams | _meta, notifications |
SubscriptionsListenRequestsubscriptions/listen | id, jsonrpc, method, params |
SubscriptionsListenRequestParams | _meta, notifications |
SubscriptionsListenResult | _meta, resultType |
SubscriptionsListenResultMetaObject | io.modelcontextprotocol/serverInfo, io.modelcontextprotocol/subscriptionId |
SubscriptionsListenResultResponse | id, jsonrpc, result |
UnsupportedProtocolVersionError | error, id, jsonrpc |
Removed definitions
Section titled “Removed definitions”| Definition | Method |
|---|---|
CancelTaskRequest | tasks/cancel |
CancelTaskResult | |
CreateTaskResult | |
ElicitationCompleteNotification | notifications/elicitation/complete |
GetTaskPayloadRequest | tasks/result |
GetTaskPayloadResult | |
GetTaskRequest | tasks/get |
GetTaskResult | |
InitializedNotification | notifications/initialized |
InitializeRequest | initialize |
InitializeRequestParams | |
InitializeResult | |
ListTasksRequest | tasks/list |
ListTasksResult | |
PingRequest | ping |
RelatedTaskMetadata | |
RootsListChangedNotification | notifications/roots/list_changed |
ServerRequest | |
SetLevelRequest | logging/setLevel |
SetLevelRequestParams | |
SubscribeRequest | resources/subscribe |
SubscribeRequestParams | |
Task | |
TaskAugmentedRequestParams | |
TaskMetadata | |
TaskStatus | |
TaskStatusNotification | notifications/tasks/status |
TaskStatusNotificationParams | |
ToolExecution | |
UnsubscribeRequest | resources/unsubscribe |
UnsubscribeRequestParams | |
URLElicitationRequiredError |
Changed definitions
Section titled “Changed definitions”+ is a field that was added, − one that was removed and ~ one whose type or constraints changed. The arrow shows the old and new shape. Two patterns repeat across many rows: results gained a required resultType, and list results gained ttlMs and cacheScope.
| Definition | Fields |
|---|---|
AudioContent | ~ _meta (object → MetaObject) |
BlobResourceContents | ~ _meta (object → MetaObject) |
CallToolRequestParams | ~ _meta (object → RequestMetaObject; removed: progressToken) + inputResponses (InputResponses) + requestState (string) − task (TaskMetadata) required + _meta |
CallToolResult | ~ _meta (object → ResultMetaObject) + resultType (string) ~ structuredContent (object → any JSON) required + resultType |
CancelledNotificationParams | ~ _meta (object → NotificationMetaObject) required + requestId |
ClientCapabilities | ~ elicitation (constraints changed) ~ experimental (constraints changed) + extensions (object) ~ roots (removed: listChanged) ~ sampling (constraints changed) − tasks (object) |
ClientNotification | + jsonrpc ("2.0") + method ("notifications/cancelled") + params (CancelledNotificationParams) required + jsonrpc, method, params |
ClientRequest | |
ClientResult | |
CompleteRequestParams | ~ _meta (object → RequestMetaObject; removed: progressToken) required + _meta |
CompleteResult | ~ _meta (object → ResultMetaObject) ~ completion (constraints changed) + resultType (string) required + resultType |
CreateMessageRequest | − id (RequestId) − jsonrpc ("2.0") required − id, jsonrpc |
CreateMessageRequestParams | − _meta (object) ~ metadata (object → JSONObject) − task (TaskMetadata) |
CreateMessageResult | ~ _meta (object → MetaObject) |
ElicitRequest | − id (RequestId) − jsonrpc ("2.0") required − id, jsonrpc |
ElicitRequestFormParams | − _meta (object) − task (TaskMetadata) |
ElicitRequestParams | |
ElicitRequestURLParams | − _meta (object) − elicitationId (string) − task (TaskMetadata) required − elicitationId |
ElicitResult | − _meta (object) |
EmbeddedResource | ~ _meta (object → MetaObject) |
GetPromptRequestParams | ~ _meta (object → RequestMetaObject; removed: progressToken) + inputResponses (InputResponses) + requestState (string) required + _meta |
GetPromptResult | ~ _meta (object → ResultMetaObject) + resultType (string) required + resultType |
ImageContent | ~ _meta (object → MetaObject) |
ListPromptsRequest | required + params |
ListPromptsResult | ~ _meta (object → ResultMetaObject) + cacheScope ("private" | "public") + resultType (string) + ttlMs (integer) required + cacheScope, resultType, ttlMs |
ListResourcesRequest | required + params |
ListResourcesResult | ~ _meta (object → ResultMetaObject) + cacheScope ("private" | "public") + resultType (string) + ttlMs (integer) required + cacheScope, resultType, ttlMs |
ListResourceTemplatesRequest | required + params |
ListResourceTemplatesResult | ~ _meta (object → ResultMetaObject) + cacheScope ("private" | "public") + resultType (string) + ttlMs (integer) required + cacheScope, resultType, ttlMs |
ListRootsRequest | − id (RequestId) − jsonrpc ("2.0") ~ params (RequestParams → object; added: _meta) required − id, jsonrpc |
ListRootsResult | − _meta (object) |
ListToolsRequest | required + params |
ListToolsResult | ~ _meta (object → ResultMetaObject) + cacheScope ("private" | "public") + resultType (string) + ttlMs (integer) required + cacheScope, resultType, ttlMs |
LoggingMessageNotificationParams | ~ _meta (object → NotificationMetaObject) |
NotificationParams | ~ _meta (object → NotificationMetaObject) |
PaginatedRequest | required + params |
PaginatedRequestParams | ~ _meta (object → RequestMetaObject; removed: progressToken) required + _meta |
PaginatedResult | ~ _meta (object → ResultMetaObject) + resultType (string) required + resultType |
ProgressNotificationParams | ~ _meta (object → NotificationMetaObject) |
Prompt | ~ _meta (object → MetaObject) |
ReadResourceRequestParams | ~ _meta (object → RequestMetaObject; removed: progressToken) + inputResponses (InputResponses) + requestState (string) required + _meta |
ReadResourceResult | ~ _meta (object → ResultMetaObject) + cacheScope ("private" | "public") + resultType (string) + ttlMs (integer) required + cacheScope, resultType, ttlMs |
RequestParams | ~ _meta (object → RequestMetaObject; removed: progressToken) required + _meta |
Resource | ~ _meta (object → MetaObject) |
ResourceContents | ~ _meta (object → MetaObject) |
ResourceLink | ~ _meta (object → MetaObject) |
ResourceRequestParams | ~ _meta (object → RequestMetaObject; removed: progressToken) required + _meta |
ResourceTemplate | ~ _meta (object → MetaObject) |
ResourceUpdatedNotificationParams | ~ _meta (object → NotificationMetaObject) |
Result | ~ _meta (object → ResultMetaObject) + resultType (string) required + resultType |
Root | ~ _meta (object → MetaObject) |
SamplingMessage | ~ _meta (object → MetaObject) |
ServerCapabilities | ~ completions (object → JSONObject) ~ experimental (constraints changed) + extensions (object) ~ logging (object → JSONObject) − tasks (object) |
ServerNotification | |
ServerResult | |
TextContent | ~ _meta (object → MetaObject) |
TextResourceContents | ~ _meta (object → MetaObject) |
Tool | ~ _meta (object → MetaObject) − execution (ToolExecution) ~ inputSchema (removed: properties, required) ~ outputSchema (removed: properties, required, type) |
ToolResultContent | ~ _meta (object → MetaObject) ~ structuredContent (object → any JSON) |
ToolUseContent | ~ _meta (object → MetaObject) |
16 more definitions changed only in their descriptions
BaseMetadata, CancelledNotification, EmptyResult, Icon, Implementation, LegacyTitledEnumSchema, LoggingMessageNotification, PromptArgument, PromptListChangedNotification, PromptMessage, PromptReference, ResourceListChangedNotification, ResourceUpdatedNotification, ToolAnnotations, ToolChoice, ToolListChangedNotification
How this page is built
Section titled “How this page is built”- The two schema files are copied unmodified from the specification repository at commit
9850cae, with their SHA-256 hashes recorded next to them. A check fails the build if a file changes without its hash being updated. - The diff ignores
descriptionandtitletext when deciding whether a definition changed structurally. Definitions that differ only in wording are listed separately. - Links go to the official schema reference. A few base types have no anchor there; those link to the top of the page.
Related
Section titled “Related”Sources
MCPDev is community documentation. It is not affiliated with the Model Context Protocol project or with the vendors of the clients it covers.