Follow Discord
Sweep 29 Sep 2026 · 18:10Z Build v2.1.285 506 read Stable v2.1.280 Latest v2.1.285 Next v2.1.285 Feeds RSS JSON llms.txt llms-full.txt Unofficial
One capture · mcp

One read of Model Context Protocolmcp-20260928T220720Z

173 pages moved out of 349 read.

Pages moved 173 significant first
Pages read 349 in this capture
Captured 22:07 UTC
Corpus hash 719057065235 corpus-hash

What this read moved

151-173 of 173, page 7 of 7

This capture is too large to show at once. Changes 151-173 of 173 are below, significant first; the rest are on the following screens.

specification/2026-07-28/basic/index Changed · +22 / -22 lines

from line 126
126126 
127127MCP defines the following error codes:
128128 
129| Code | Name |
130| -------- | ---------------------------------------------------------------------------------------------------------- |
131| `-32020` | [`HeaderMismatch`](/specification/2026-07-28/schema#headermismatcherror) |
129| Code | Name |
130| - | - |
131| `-32020` | [`HeaderMismatch`](/specification/2026-07-28/schema#headermismatcherror) |
132132| `-32021` | [`MissingRequiredClientCapability`](/specification/2026-07-28/schema#missingrequiredclientcapabilityerror) |
133| `-32022` | [`UnsupportedProtocolVersion`](/specification/2026-07-28/schema#unsupportedprotocolversionerror) |
133| `-32022` | [`UnsupportedProtocolVersion`](/specification/2026-07-28/schema#unsupportedprotocolversionerror) |
134134 
135135Codes defined by earlier protocol versions remain reserved and will not be
136136reused. Implementations of this protocol version **MUST NOT** emit these codes:
from line 345
345345 
346346The following `_meta` keys are reserved by this specification:
347347 
348| Key | Description | Defined in |
349| -------------------------------------------- | ----------------------------------------------------------- | ----------------------------------------------------------------------- |
350| `progressToken` | Opts the request into progress notifications | [Progress](/specification/2026-07-28/basic/patterns/progress) |
351| `io.modelcontextprotocol/protocolVersion` | Protocol version for a request | Per-request protocol fields (below) |
352| `io.modelcontextprotocol/clientInfo` | Client name and version | Per-request protocol fields (below) |
353| `io.modelcontextprotocol/clientCapabilities` | Client capabilities relevant to a request | Per-request protocol fields (below) |
354| `io.modelcontextprotocol/logLevel` | Minimum log level the server should emit for a request | [Logging](/specification/2026-07-28/server/utilities/logging) |
355| `io.modelcontextprotocol/subscriptionId` | Correlates a notification with its originating subscription | [Subscriptions](/specification/2026-07-28/basic/patterns/subscriptions) |
356| `traceparent`, `tracestate`, `baggage` | OpenTelemetry trace context propagation | OpenTelemetry trace context (below) |
348| Key | Description | Defined in |
349| - | - | - |
350| `progressToken` | Opts the request into progress notifications | [Progress](/specification/2026-07-28/basic/patterns/progress) |
351| `io.modelcontextprotocol/protocolVersion` | Protocol version for a request | Per-request protocol fields (below) |
352| `io.modelcontextprotocol/clientInfo` | Client name and version | Per-request protocol fields (below) |
353| `io.modelcontextprotocol/clientCapabilities` | Client capabilities relevant to a request | Per-request protocol fields (below) |
354| `io.modelcontextprotocol/logLevel` | Minimum log level the server should emit for a request | [Logging](/specification/2026-07-28/server/utilities/logging) |
355| `io.modelcontextprotocol/subscriptionId` | Correlates a notification with its originating subscription | [Subscriptions](/specification/2026-07-28/basic/patterns/subscriptions) |
356| `traceparent`, `tracestate`, `baggage` | OpenTelemetry trace context propagation | OpenTelemetry trace context (below) |
357357 
358358Official [extensions](/specification/2026-07-28/basic/versioning#extension-negotiation)
359359define additional `_meta` keys under the `io.modelcontextprotocol/` prefix, and
from line 368
368368prior connection state. See
369369[Versioning and Compatibility][lifecycle] for version negotiation rules.
370370 
371| Key | Type | Required | Description |
372| -------------------------------------------- | -------------------- | -------- | --------------------------------------------------------- |
373| `io.modelcontextprotocol/protocolVersion` | `string` | Yes | Protocol version for this request (e.g., `"2026-07-28"`) |
374| `io.modelcontextprotocol/clientInfo` | `Implementation` | No | Client name and version |
375| `io.modelcontextprotocol/clientCapabilities` | `ClientCapabilities` | Yes | Client capabilities relevant to this request |
376| `io.modelcontextprotocol/logLevel` | `LoggingLevel` | No | Minimum log level the server should emit for this request |
371| Key | Type | Required | Description |
372| - | - | - | - |
373| `io.modelcontextprotocol/protocolVersion` | `string` | Yes | Protocol version for this request (e.g., `"2026-07-28"`) |
374| `io.modelcontextprotocol/clientInfo` | `Implementation` | No | Client name and version |
375| `io.modelcontextprotocol/clientCapabilities` | `ClientCapabilities` | Yes | Client capabilities relevant to this request |
376| `io.modelcontextprotocol/logLevel` | `LoggingLevel` | No | Minimum log level the server should emit for this request |
377377 
378378A request missing any required field is malformed; the server **MUST** reject it with
379379JSON-RPC error code `-32602` (Invalid params). On HTTP, the response status **MUST** be
from line 395
395395every result's `_meta`, unless specifically configured not to do so, to
396396identify themselves without relying on any prior connection state:
397397 
398| Key | Type | Required | Description |
399| ------------------------------------ | ---------------- | -------- | ----------------------- |
400| `io.modelcontextprotocol/serverInfo` | `Implementation` | No | Server name and version |
398| Key | Type | Required | Description |
399| - | - | - | - |
400| `io.modelcontextprotocol/serverInfo` | `Implementation` | No | Server name and version |
401401 
402402<Note>
403403 `io.modelcontextprotocol/clientInfo` and `io.modelcontextprotocol/serverInfo`

specification/2026-07-28/basic/patterns/mrtr Changed · +5 / -5 lines

from line 181
181181 
182182Servers **MAY** send `InputRequiredResult` responses on the following client requests:
183183 
184| Client Request | Supports InputRequiredResult |
185| -------------------------------------------------------------------------------- | ---------------------------- |
186| [`prompts/get`](/specification/2026-07-28/server/prompts#getting-a-prompt) | Yes |
187| [`resources/read`](/specification/2026-07-28/server/resources#reading-resources) | Yes |
188| [`tools/call`](/specification/2026-07-28/server/tools#calling-tools) | Yes |
184| Client Request | Supports InputRequiredResult |
185| - | - |
186| [`prompts/get`](/specification/2026-07-28/server/prompts#getting-a-prompt) | Yes |
187| [`resources/read`](/specification/2026-07-28/server/resources#reading-resources) | Yes |
188| [`tools/call`](/specification/2026-07-28/server/tools#calling-tools) | Yes |
189189 
190190Servers **MUST NOT** send `InputRequiredResult` responses on any other client requests.
191191 

specification/2026-07-28/basic/patterns/subscriptions Changed · +5 / -5 lines

from line 37
3737 
3838### Notification Filter
3939 
40| Field | Type | Description |
41| ----------------------- | ---------- | ----------------------------------------------------------------- |
42| `toolsListChanged` | `boolean` | Receive `notifications/tools/list_changed` when tools change |
43| `promptsListChanged` | `boolean` | Receive `notifications/prompts/list_changed` when prompts change |
44| `resourcesListChanged` | `boolean` | Receive `notifications/resources/list_changed` when list changes |
40| Field | Type | Description |
41| - | - | - |
42| `toolsListChanged` | `boolean` | Receive `notifications/tools/list_changed` when tools change |
43| `promptsListChanged` | `boolean` | Receive `notifications/prompts/list_changed` when prompts change |
44| `resourcesListChanged` | `boolean` | Receive `notifications/resources/list_changed` when list changes |
4545| `resourceSubscriptions` | `string[]` | Receive `notifications/resources/updated` for these resource URIs |
4646 
4747All fields are optional. Omitting a field is equivalent to not subscribing to that

specification/2026-07-28/basic/transports/streamable-http Changed · +19 / -19 lines

from line 282
282282 
283283### Standard Request Headers
284284 
285| Header Name | Source Field | Required For |
286| ------------ | ----------------------------- | ------------------------------------------------------ |
287| `Mcp-Method` | `method` | All requests |
288| `Mcp-Name` | `params.name` or `params.uri` | `tools/call`, `resources/read`, `prompts/get` requests |
285| Header Name | Source Field | Required For |
286| - | - | - |
287| `Mcp-Method` | `method` | All requests |
288| `Mcp-Name` | `params.name` or `params.uri` | `tools/call`, `resources/read`, `prompts/get` requests |
289289 
290290These headers are **REQUIRED** for compliance.
291291 
from line 506
506506 
507507**Encoding examples:**
508508 
509| Original Value | Reason | Encoded Header Value |
510| ---------------------- | ------------------------ | ----------------------------------------------------- |
511| `"us-west1"` | Plain ASCII | `Mcp-Param-Region: us-west1` |
512| `"Hello, 世界"` | Contains non-ASCII | `Mcp-Param-Greeting: =?base64?SGVsbG8sIOS4lueVjA==?=` |
513| `" padded "` | Leading/trailing spaces | `Mcp-Param-Text: =?base64?IHBhZGRlZCA=?=` |
514| `"line1\nline2"` | Contains newline | `Mcp-Param-Text: =?base64?bGluZTEKbGluZTI=?=` |
515| `"=?base64?literal?="` | Matches sentinel pattern | `Mcp-Param-Val: =?base64?PT9iYXNlNjQ/bGl0ZXJhbD89?=` |
509| Original Value | Reason | Encoded Header Value |
510| - | - | - |
511| `"us-west1"` | Plain ASCII | `Mcp-Param-Region: us-west1` |
512| `"Hello, 世界"` | Contains non-ASCII | `Mcp-Param-Greeting: =?base64?SGVsbG8sIOS4lueVjA==?=` |
513| `" padded "` | Leading/trailing spaces | `Mcp-Param-Text: =?base64?IHBhZGRlZCA=?=` |
514| `"line1\nline2"` | Contains newline | `Mcp-Param-Text: =?base64?bGluZTEKbGluZTI=?=` |
515| `"=?base64?literal?="` | Matches sentinel pattern | `Mcp-Param-Val: =?base64?PT9iYXNlNjQ/bGl0ZXJhbD89?=` |
516516 
517517[rfc9110-values]: https://datatracker.ietf.org/doc/html/rfc9110#name-field-values
518518 
from line 555
555555`400 Bad Request` HTTP status and JSON-RPC error code `-32020`
556556(`HeaderMismatch`) if any validation fails.
557557 
558| Scenario | Client Behavior | Server Behavior |
559| ---------------------------------------- | ------------------------------ | ---------------------------------------- |
560| Parameter value provided | Client MUST include the header | Server MUST validate header matches body |
561| Parameter value is `null` | Client MUST omit the header | Server MUST NOT expect the header |
562| Parameter not in arguments | Client MUST omit the header | Server MUST NOT expect the header |
563| Client omits header but value is in body | Non-conforming client | Server MUST reject the request |
558| Scenario | Client Behavior | Server Behavior |
559| - | - | - |
560| Parameter value provided | Client MUST include the header | Server MUST validate header matches body |
561| Parameter value is `null` | Client MUST omit the header | Server MUST NOT expect the header |
562| Parameter not in arguments | Client MUST omit the header | Server MUST NOT expect the header |
563| Client omits header but value is in body | Non-conforming client | Server MUST reject the request |
564564 
565565[http-semantics]: https://www.rfc-editor.org/rfc/rfc9110.html#name-field-names
566566 
from line 593
593593return HTTP status `400 Bad Request` and **MUST** include a JSON-RPC error
594594response using the following error code:
595595 
596| Code | Name | Description |
597| -------- | ------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- |
596| Code | Name | Description |
597| - | - | - |
598598| `-32020` | [`HeaderMismatch`](/specification/2026-07-28/schema#headermismatcherror) | The HTTP headers do not match the corresponding values in the request body, or required headers are missing/malformed. |
599599 
600600This error code is allocated from the sub-range the MCP specification

specification/2026-07-28/basic/versioning Changed · +9 / -9 lines

from line 159
159159The following matrix summarizes the expected outcome of every combination of
160160client and server era:
161161 
162| Client | Server | Outcome |
163| -------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
164| Modern | Modern | Works. `server/discover` is optional; version mismatches surface as `UnsupportedProtocolVersionError` and the client retries with a mutually supported version. |
165| Modern | Legacy | Fails. The server may reject the request with an implementation-defined error, stay silent, or even process an era-ambiguous method under legacy semantics. On stdio, clients **SHOULD** send `server/discover` first to fail deterministically; the client then surfaces an actionable error to the user. |
166| Dual-era | Modern | Works. The stdio probe returns a `DiscoverResult` (or `UnsupportedProtocolVersionError`); on HTTP, the first modern request succeeds or returns a modern error. The client stays modern. |
167| Dual-era | Legacy | Works. stdio: the probe returns a non-modern error or times out, and the client falls back to `initialize`. HTTP: the modern request returns a `4xx` without a recognized modern error body, and the client falls back to `initialize` (and possibly further to the deprecated HTTP+SSE transport). |
168| Legacy | Modern | Fails. stdio: the server rejects `initialize` with a JSON-RPC error; the exact code is implementation-defined (`initialize` is an unknown method and the request also lacks the required `_meta` fields). HTTP: the request is missing the required headers and is rejected per [server validation](/specification/2026-07-28/basic/transports/streamable-http#server-validation) with `400 Bad Request` (a client on the deprecated HTTP+SSE transport fails at its opening `GET` instead). Legacy clients have no fall-forward mechanism. |
169| Legacy | Dual-era | Works. The server answers `initialize` and serves the client according to the negotiated legacy revision. |
170| Legacy | Legacy | Works according to the legacy revision; out of scope for this document. |
162| Client | Server | Outcome |
163| - | - | - |
164| Modern | Modern | Works. `server/discover` is optional; version mismatches surface as `UnsupportedProtocolVersionError` and the client retries with a mutually supported version. |
165| Modern | Legacy | Fails. The server may reject the request with an implementation-defined error, stay silent, or even process an era-ambiguous method under legacy semantics. On stdio, clients **SHOULD** send `server/discover` first to fail deterministically; the client then surfaces an actionable error to the user. |
166| Dual-era | Modern | Works. The stdio probe returns a `DiscoverResult` (or `UnsupportedProtocolVersionError`); on HTTP, the first modern request succeeds or returns a modern error. The client stays modern. |
167| Dual-era | Legacy | Works. stdio: the probe returns a non-modern error or times out, and the client falls back to `initialize`. HTTP: the modern request returns a `4xx` without a recognized modern error body, and the client falls back to `initialize` (and possibly further to the deprecated HTTP+SSE transport). |
168| Legacy | Modern | Fails. stdio: the server rejects `initialize` with a JSON-RPC error; the exact code is implementation-defined (`initialize` is an unknown method and the request also lacks the required `_meta` fields). HTTP: the request is missing the required headers and is rejected per [server validation](/specification/2026-07-28/basic/transports/streamable-http#server-validation) with `400 Bad Request` (a client on the deprecated HTTP+SSE transport fails at its opening `GET` instead). Legacy clients have no fall-forward mechanism. |
169| Legacy | Dual-era | Works. The server answers `initialize` and serves the client according to the negotiated legacy revision. |
170| Legacy | Legacy | Works according to the legacy revision; out of scope for this document. |
171171 
172172A dual-era **server** selects its behavior from how the client opens:
173173 

specification/2026-07-28/client/elicitation Changed · +8 / -8 lines

from line 85
8585 
8686All elicitation requests **MUST** include the following parameters:
8787 
88| Name | Type | Options | Description |
89| --------- | ------ | ------------- | -------------------------------------------------------------------------------------- |
90| `mode` | string | `form`, `url` | The mode of the elicitation. Optional for form mode (defaults to `"form"` if omitted). |
91| `message` | string | | A human-readable message explaining why the interaction is needed. |
88| Name | Type | Options | Description |
89| - | - | - | - |
90| `mode` | string | `form`, `url` | The mode of the elicitation. Optional for form mode (defaults to `"form"` if omitted). |
91| `message` | string | | A human-readable message explaining why the interaction is needed. |
9292 
9393The `mode` parameter specifies the type of elicitation:
9494 
from line 103
103103 
104104Form mode elicitation requests **MUST** either specify `mode: "form"` or omit the `mode` field, and include these additional parameters:
105105 
106| Name | Type | Description |
107| ----------------- | ------ | -------------------------------------------------------------- |
106| Name | Type | Description |
107| - | - | - |
108108| `requestedSchema` | object | A JSON Schema defining the structure of the expected response. |
109109 
110110#### Requested Schema
from line 325
325325 
326326URL mode elicitation requests **MUST** specify `mode: "url"`, a `message`, and include these additional parameters:
327327 
328| Name | Type | Description |
329| ----- | ------ | ----------------------------------------- |
328| Name | Type | Description |
329| - | - | - |
330330| `url` | string | The URL that the user should navigate to. |
331331 
332332The `url` parameter **MUST** contain a valid URL.

specification/2026-07-28/deprecated Changed · +8 / -8 lines

from line 19
1919 
2020## Deprecated
2121 
22| Feature | Deprecation SEP | Deprecated in | Migration path | Earliest removal |
23| ---------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------- |
24| [Roots](/specification/2026-07-28/client/roots) | [SEP-2577](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577) | `2026-07-28` | Pass directories or files via tool parameters, resource URIs, or server configuration | First revision released on or after 2027-07-28 |
25| [Sampling](/specification/2026-07-28/client/sampling) | [SEP-2577](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577) | `2026-07-28` | Integrate directly with LLM provider APIs | First revision released on or after 2027-07-28 |
26| [Logging](/specification/2026-07-28/server/utilities/logging) | [SEP-2577](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577) | `2026-07-28` | Log to `stderr` for stdio transports; use [OpenTelemetry](https://opentelemetry.io/) for observability | First revision released on or after 2027-07-28 |
27| [Dynamic Client Registration](/specification/2026-07-28/basic/authorization/client-registration#dynamic-client-registration) | [PR #2858](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2858) | `2026-07-28` | [Client ID Metadata Documents](/specification/2026-07-28/basic/authorization/client-registration#client-id-metadata-documents) | First revision released on or after 2027-07-28 |
28| `includeContext: "thisServer"` / `"allServers"` ([Sampling](/specification/2026-07-28/client/sampling#capabilities)) | [SEP-2596](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2596) | `2025-11-25` | Omit the field or use `"none"` | Follows Sampling ([SEP-2577](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577)) |
29| [HTTP+SSE transport](/specification/2024-11-05/basic/transports#http-with-sse) | [SEP-2596](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2596) | `2025-03-26` | [Streamable HTTP](/specification/2026-07-28/basic/transports/streamable-http) | Three months after SEP-2596 reaches Final |
22| Feature | Deprecation SEP | Deprecated in | Migration path | Earliest removal |
23| - | - | - | - | - |
24| [Roots](/specification/2026-07-28/client/roots) | [SEP-2577](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577) | `2026-07-28` | Pass directories or files via tool parameters, resource URIs, or server configuration | First revision released on or after 2027-07-28 |
25| [Sampling](/specification/2026-07-28/client/sampling) | [SEP-2577](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577) | `2026-07-28` | Integrate directly with LLM provider APIs | First revision released on or after 2027-07-28 |
26| [Logging](/specification/2026-07-28/server/utilities/logging) | [SEP-2577](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577) | `2026-07-28` | Log to `stderr` for stdio transports; use [OpenTelemetry](https://opentelemetry.io/) for observability | First revision released on or after 2027-07-28 |
27| [Dynamic Client Registration](/specification/2026-07-28/basic/authorization/client-registration#dynamic-client-registration) | [PR #2858](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2858) | `2026-07-28` | [Client ID Metadata Documents](/specification/2026-07-28/basic/authorization/client-registration#client-id-metadata-documents) | First revision released on or after 2027-07-28 |
28| `includeContext: "thisServer"` / `"allServers"` ([Sampling](/specification/2026-07-28/client/sampling#capabilities)) | [SEP-2596](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2596) | `2025-11-25` | Omit the field or use `"none"` | Follows Sampling ([SEP-2577](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577)) |
29| [HTTP+SSE transport](/specification/2024-11-05/basic/transports#http-with-sse) | [SEP-2596](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2596) | `2025-03-26` | [Streamable HTTP](/specification/2026-07-28/basic/transports/streamable-http) | Three months after SEP-2596 reaches Final |
3030 
3131The HTTP+SSE transport and the `includeContext` values were already described
3232as deprecated before the lifecycle policy existed; SEP-2596 reclassifies them

specification/2026-07-28/server/index Changed · +5 / -5 lines

from line 12
1212 
1313Each primitive can be summarized in the following control hierarchy:
1414 
15| Primitive | Control | Description | Example |
16| --------- | ---------------------- | -------------------------------------------------- | ------------------------------- |
17| Prompts | User-controlled | Interactive templates invoked by user choice | Slash commands, menu options |
18| Resources | Application-controlled | Contextual data attached and managed by the client | File contents, git history |
19| Tools | Model-controlled | Functions exposed to the LLM to take actions | API POST requests, file writing |
15| Primitive | Control | Description | Example |
16| - | - | - | - |
17| Prompts | User-controlled | Interactive templates invoked by user choice | Slash commands, menu options |
18| Resources | Application-controlled | Contextual data attached and managed by the client | File contents, git history |
19| Tools | Model-controlled | Functions exposed to the LLM to take actions | API POST requests, file writing |
2020 
2121Explore these key primitives in more detail below:
2222 

specification/2026-07-28/server/utilities/caching Changed · +3 / -3 lines

from line 93
9393The `cacheScope` field controls who may cache a response, analogous to HTTP
9494`Cache-Control: public` vs `Cache-Control: private`.
9595 
96| Value | Meaning |
97| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
98| `"public"` | The response does not contain user-specific data. Any client, shared gateway, or caching proxy **MAY** store and serve the cached response to any user. |
96| Value | Meaning |
97| - | - |
98| `"public"` | The response does not contain user-specific data. Any client, shared gateway, or caching proxy **MAY** store and serve the cached response to any user. |
9999| `"private"` | The response contains private data that is not meant to be shared between callers. Cached responses **MAY** be reused for the same authorization context. Caches **MUST NOT** be shared across authorization contexts (e.g. a different access token requires a different cache). |
100100 
101101#### Choosing a Cache Scope

specification/2026-07-28/server/utilities/completion Changed · +3 / -3 lines

from line 132
132132 
133133The protocol supports two types of completion references:
134134 
135| Type | Description | Example |
136| -------------- | ----------------------------------------- | --------------------------------------------------- |
137| `ref/prompt` | References a prompt by name | `{"type": "ref/prompt", "name": "code_review"}` |
135| Type | Description | Example |
136| - | - | - |
137| `ref/prompt` | References a prompt by name | `{"type": "ref/prompt", "name": "code_review"}` |
138138| `ref/resource` | References a resource URI or URI template | `{"type": "ref/resource", "uri": "file:///{path}"}` |
139139 
140140### Completion Results

specification/2026-07-28/server/utilities/logging Changed · +10 / -10 lines

from line 42
4242The protocol follows the standard syslog severity levels specified in
4343[RFC 5424](https://datatracker.ietf.org/doc/html/rfc5424#section-6.2.1):
4444 
45| Level | Description | Example Use Case |
46| --------- | -------------------------------- | -------------------------- |
47| debug | Detailed debugging information | Function entry/exit points |
48| info | General informational messages | Operation progress updates |
49| notice | Normal but significant events | Configuration changes |
50| warning | Warning conditions | Deprecated feature usage |
51| error | Error conditions | Operation failures |
52| critical | Critical conditions | System component failures |
53| alert | Action must be taken immediately | Data corruption detected |
54| emergency | System is unusable | Complete system failure |
45| Level | Description | Example Use Case |
46| - | - | - |
47| debug | Detailed debugging information | Function entry/exit points |
48| info | General informational messages | Operation progress updates |
49| notice | Normal but significant events | Configuration changes |
50| warning | Warning conditions | Deprecated feature usage |
51| error | Error conditions | Operation failures |
52| critical | Critical conditions | System component failures |
53| alert | Action must be taken immediately | Data corruption detected |
54| emergency | System is unusable | Complete system failure |
5555 
5656## Requesting Log Messages
5757 

specification/draft/basic/authorization/index Changed · +11 / -11 lines

from line 193
193193 
194194On receiving the authorization response, MCP clients **MUST** apply the validation in [RFC9207 Section 2.4](https://datatracker.ietf.org/doc/html/rfc9207#section-2.4) before transmitting the authorization code to any token endpoint:
195195 
196| `authorization_response_iss_parameter_supported` | `iss` in response | Client action |
197| ------------------------------------------------ | ----------------- | ------------------------------------------------------------------------------------------ |
198| `true` | present | Compare to the recorded issuer using simple string comparison ([RFC3986 Section 6.2.1][1]) |
199| `true` | absent | Reject the response |
200| `false` or absent | present | Compare to the recorded issuer using simple string comparison ([RFC3986 Section 6.2.1][1]) |
201| `false` or absent | absent | Proceed |
196| `authorization_response_iss_parameter_supported` | `iss` in response | Client action |
197| - | - | - |
198| `true` | present | Compare to the recorded issuer using simple string comparison ([RFC3986 Section 6.2.1][1]) |
199| `true` | absent | Reject the response |
200| `false` or absent | present | Compare to the recorded issuer using simple string comparison ([RFC3986 Section 6.2.1][1]) |
201| `false` or absent | absent | Proceed |
202202 
203203[1]: https://datatracker.ietf.org/doc/html/rfc3986#section-6.2.1
204204 
from line 314
314314 
315315Servers **MUST** return appropriate HTTP status codes for authorization errors:
316316 
317| Status Code | Description | Usage |
318| ----------- | ------------ | ------------------------------------------ |
319| 401 | Unauthorized | Authorization required or token invalid |
320| 403 | Forbidden | Invalid scopes or insufficient permissions |
321| 400 | Bad Request | Malformed authorization request |
317| Status Code | Description | Usage |
318| - | - | - |
319| 401 | Unauthorized | Authorization required or token invalid |
320| 403 | Forbidden | Invalid scopes or insufficient permissions |
321| 400 | Bad Request | Malformed authorization request |
322322 
323323### Scope Challenge Handling
324324 

specification/draft/basic/index Changed · +22 / -22 lines

from line 126
126126 
127127MCP defines the following error codes:
128128 
129| Code | Name |
130| -------- | ----------------------------------------------------------------------------------------------------- |
131| `-32020` | [`HeaderMismatch`](/specification/draft/schema#headermismatcherror) |
129| Code | Name |
130| - | - |
131| `-32020` | [`HeaderMismatch`](/specification/draft/schema#headermismatcherror) |
132132| `-32021` | [`MissingRequiredClientCapability`](/specification/draft/schema#missingrequiredclientcapabilityerror) |
133| `-32022` | [`UnsupportedProtocolVersion`](/specification/draft/schema#unsupportedprotocolversionerror) |
133| `-32022` | [`UnsupportedProtocolVersion`](/specification/draft/schema#unsupportedprotocolversionerror) |
134134 
135135Codes defined by earlier protocol versions remain reserved and will not be
136136reused. Implementations of this protocol version **MUST NOT** emit these codes:
from line 345
345345 
346346The following `_meta` keys are reserved by this specification:
347347 
348| Key | Description | Defined in |
349| -------------------------------------------- | ----------------------------------------------------------- | ------------------------------------------------------------------ |
350| `progressToken` | Opts the request into progress notifications | [Progress](/specification/draft/basic/patterns/progress) |
351| `io.modelcontextprotocol/protocolVersion` | Protocol version for a request | Per-request protocol fields (below) |
352| `io.modelcontextprotocol/clientInfo` | Client name and version | Per-request protocol fields (below) |
353| `io.modelcontextprotocol/clientCapabilities` | Client capabilities relevant to a request | Per-request protocol fields (below) |
354| `io.modelcontextprotocol/logLevel` | Minimum log level the server should emit for a request | [Logging](/specification/draft/server/utilities/logging) |
355| `io.modelcontextprotocol/subscriptionId` | Correlates a notification with its originating subscription | [Subscriptions](/specification/draft/basic/patterns/subscriptions) |
356| `traceparent`, `tracestate`, `baggage` | OpenTelemetry trace context propagation | OpenTelemetry trace context (below) |
348| Key | Description | Defined in |
349| - | - | - |
350| `progressToken` | Opts the request into progress notifications | [Progress](/specification/draft/basic/patterns/progress) |
351| `io.modelcontextprotocol/protocolVersion` | Protocol version for a request | Per-request protocol fields (below) |
352| `io.modelcontextprotocol/clientInfo` | Client name and version | Per-request protocol fields (below) |
353| `io.modelcontextprotocol/clientCapabilities` | Client capabilities relevant to a request | Per-request protocol fields (below) |
354| `io.modelcontextprotocol/logLevel` | Minimum log level the server should emit for a request | [Logging](/specification/draft/server/utilities/logging) |
355| `io.modelcontextprotocol/subscriptionId` | Correlates a notification with its originating subscription | [Subscriptions](/specification/draft/basic/patterns/subscriptions) |
356| `traceparent`, `tracestate`, `baggage` | OpenTelemetry trace context propagation | OpenTelemetry trace context (below) |
357357 
358358Official [extensions](/specification/draft/basic/versioning#extension-negotiation)
359359define additional `_meta` keys under the `io.modelcontextprotocol/` prefix, and
from line 368
368368prior connection state. See
369369[Versioning and Compatibility][lifecycle] for version negotiation rules.
370370 
371| Key | Type | Required | Description |
372| -------------------------------------------- | -------------------- | -------- | --------------------------------------------------------- |
373| `io.modelcontextprotocol/protocolVersion` | `string` | Yes | Protocol version for this request (e.g., `"2026-07-28"`) |
374| `io.modelcontextprotocol/clientInfo` | `Implementation` | No | Client name and version |
375| `io.modelcontextprotocol/clientCapabilities` | `ClientCapabilities` | Yes | Client capabilities relevant to this request |
376| `io.modelcontextprotocol/logLevel` | `LoggingLevel` | No | Minimum log level the server should emit for this request |
371| Key | Type | Required | Description |
372| - | - | - | - |
373| `io.modelcontextprotocol/protocolVersion` | `string` | Yes | Protocol version for this request (e.g., `"2026-07-28"`) |
374| `io.modelcontextprotocol/clientInfo` | `Implementation` | No | Client name and version |
375| `io.modelcontextprotocol/clientCapabilities` | `ClientCapabilities` | Yes | Client capabilities relevant to this request |
376| `io.modelcontextprotocol/logLevel` | `LoggingLevel` | No | Minimum log level the server should emit for this request |
377377 
378378A request missing any required field is malformed; the server **MUST** reject it with
379379JSON-RPC error code `-32602` (Invalid params). On HTTP, the response status **MUST** be
from line 395
395395every result's `_meta`, unless specifically configured not to do so, to
396396identify themselves without relying on any prior connection state:
397397 
398| Key | Type | Required | Description |
399| ------------------------------------ | ---------------- | -------- | ----------------------- |
400| `io.modelcontextprotocol/serverInfo` | `Implementation` | No | Server name and version |
398| Key | Type | Required | Description |
399| - | - | - | - |
400| `io.modelcontextprotocol/serverInfo` | `Implementation` | No | Server name and version |
401401 
402402<Note>
403403 `io.modelcontextprotocol/clientInfo` and `io.modelcontextprotocol/serverInfo`

specification/draft/basic/patterns/mrtr Changed · +5 / -5 lines

from line 181
181181 
182182Servers **MAY** send `InputRequiredResult` responses on the following client requests:
183183 
184| Client Request | Supports InputRequiredResult |
185| --------------------------------------------------------------------------- | ---------------------------- |
186| [`prompts/get`](/specification/draft/server/prompts#getting-a-prompt) | Yes |
187| [`resources/read`](/specification/draft/server/resources#reading-resources) | Yes |
188| [`tools/call`](/specification/draft/server/tools#calling-tools) | Yes |
184| Client Request | Supports InputRequiredResult |
185| - | - |
186| [`prompts/get`](/specification/draft/server/prompts#getting-a-prompt) | Yes |
187| [`resources/read`](/specification/draft/server/resources#reading-resources) | Yes |
188| [`tools/call`](/specification/draft/server/tools#calling-tools) | Yes |
189189 
190190Servers **MUST NOT** send `InputRequiredResult` responses on any other client requests.
191191 

specification/draft/basic/patterns/subscriptions Changed · +5 / -5 lines

from line 37
3737 
3838### Notification Filter
3939 
40| Field | Type | Description |
41| ----------------------- | ---------- | ----------------------------------------------------------------- |
42| `toolsListChanged` | `boolean` | Receive `notifications/tools/list_changed` when tools change |
43| `promptsListChanged` | `boolean` | Receive `notifications/prompts/list_changed` when prompts change |
44| `resourcesListChanged` | `boolean` | Receive `notifications/resources/list_changed` when list changes |
40| Field | Type | Description |
41| - | - | - |
42| `toolsListChanged` | `boolean` | Receive `notifications/tools/list_changed` when tools change |
43| `promptsListChanged` | `boolean` | Receive `notifications/prompts/list_changed` when prompts change |
44| `resourcesListChanged` | `boolean` | Receive `notifications/resources/list_changed` when list changes |
4545| `resourceSubscriptions` | `string[]` | Receive `notifications/resources/updated` for these resource URIs |
4646 
4747All fields are optional. Omitting a field is equivalent to not subscribing to that

specification/draft/basic/transports/streamable-http Changed · +19 / -19 lines

from line 282
282282 
283283### Standard Request Headers
284284 
285| Header Name | Source Field | Required For |
286| ------------ | ----------------------------- | ------------------------------------------------------ |
287| `Mcp-Method` | `method` | All requests |
288| `Mcp-Name` | `params.name` or `params.uri` | `tools/call`, `resources/read`, `prompts/get` requests |
285| Header Name | Source Field | Required For |
286| - | - | - |
287| `Mcp-Method` | `method` | All requests |
288| `Mcp-Name` | `params.name` or `params.uri` | `tools/call`, `resources/read`, `prompts/get` requests |
289289 
290290These headers are **REQUIRED** for compliance.
291291 
from line 507
507507 
508508**Encoding examples:**
509509 
510| Original Value | Reason | Encoded Header Value |
511| ---------------------- | ------------------------ | ----------------------------------------------------- |
512| `"us-west1"` | Plain ASCII | `Mcp-Param-Region: us-west1` |
513| `"Hello, 世界"` | Contains non-ASCII | `Mcp-Param-Greeting: =?base64?SGVsbG8sIOS4lueVjA==?=` |
514| `" padded "` | Leading/trailing spaces | `Mcp-Param-Text: =?base64?IHBhZGRlZCA=?=` |
515| `"line1\nline2"` | Contains newline | `Mcp-Param-Text: =?base64?bGluZTEKbGluZTI=?=` |
516| `"=?base64?literal?="` | Matches sentinel pattern | `Mcp-Param-Val: =?base64?PT9iYXNlNjQ/bGl0ZXJhbD89?=` |
510| Original Value | Reason | Encoded Header Value |
511| - | - | - |
512| `"us-west1"` | Plain ASCII | `Mcp-Param-Region: us-west1` |
513| `"Hello, 世界"` | Contains non-ASCII | `Mcp-Param-Greeting: =?base64?SGVsbG8sIOS4lueVjA==?=` |
514| `" padded "` | Leading/trailing spaces | `Mcp-Param-Text: =?base64?IHBhZGRlZCA=?=` |
515| `"line1\nline2"` | Contains newline | `Mcp-Param-Text: =?base64?bGluZTEKbGluZTI=?=` |
516| `"=?base64?literal?="` | Matches sentinel pattern | `Mcp-Param-Val: =?base64?PT9iYXNlNjQ/bGl0ZXJhbD89?=` |
517517 
518518[rfc9110-values]: https://datatracker.ietf.org/doc/html/rfc9110#name-field-values
519519 
from line 556
556556`400 Bad Request` HTTP status and JSON-RPC error code `-32020`
557557(`HeaderMismatch`) if any validation fails.
558558 
559| Scenario | Client Behavior | Server Behavior |
560| ---------------------------------------- | ------------------------------ | ---------------------------------------- |
561| Parameter value provided | Client MUST include the header | Server MUST validate header matches body |
562| Parameter value is `null` | Client MUST omit the header | Server MUST NOT expect the header |
563| Parameter not in arguments | Client MUST omit the header | Server MUST NOT expect the header |
564| Client omits header but value is in body | Non-conforming client | Server MUST reject the request |
559| Scenario | Client Behavior | Server Behavior |
560| - | - | - |
561| Parameter value provided | Client MUST include the header | Server MUST validate header matches body |
562| Parameter value is `null` | Client MUST omit the header | Server MUST NOT expect the header |
563| Parameter not in arguments | Client MUST omit the header | Server MUST NOT expect the header |
564| Client omits header but value is in body | Non-conforming client | Server MUST reject the request |
565565 
566566[http-semantics]: https://www.rfc-editor.org/rfc/rfc9110.html#name-field-names
567567 
from line 594
594594return HTTP status `400 Bad Request` and **MUST** include a JSON-RPC error
595595response using the following error code:
596596 
597| Code | Name | Description |
598| -------- | ------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------- |
597| Code | Name | Description |
598| - | - | - |
599599| `-32020` | [`HeaderMismatch`](/specification/draft/schema#headermismatcherror) | The HTTP headers do not match the corresponding values in the request body, or required headers are missing/malformed. |
600600 
601601This error code is allocated from the sub-range the MCP specification

specification/draft/basic/versioning Changed · +9 / -9 lines

from line 159
159159The following matrix summarizes the expected outcome of every combination of
160160client and server era:
161161 
162| Client | Server | Outcome |
163| -------- | -------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
164| Modern | Modern | Works. `server/discover` is optional; version mismatches surface as `UnsupportedProtocolVersionError` and the client retries with a mutually supported version. |
165| Modern | Legacy | Fails. The server may reject the request with an implementation-defined error, stay silent, or even process an era-ambiguous method under legacy semantics. On stdio, clients **SHOULD** send `server/discover` first to fail deterministically; the client then surfaces an actionable error to the user. |
166| Dual-era | Modern | Works. The stdio probe returns a `DiscoverResult` (or `UnsupportedProtocolVersionError`); on HTTP, the first modern request succeeds or returns a modern error. The client stays modern. |
167| Dual-era | Legacy | Works. stdio: the probe returns a non-modern error or times out, and the client falls back to `initialize`. HTTP: the modern request returns a `4xx` without a recognized modern error body, and the client falls back to `initialize` (and possibly further to the deprecated HTTP+SSE transport). |
168| Legacy | Modern | Fails. stdio: the server rejects `initialize` with a JSON-RPC error; the exact code is implementation-defined (`initialize` is an unknown method and the request also lacks the required `_meta` fields). HTTP: the request is missing the required headers and is rejected per [server validation](/specification/draft/basic/transports/streamable-http#server-validation) with `400 Bad Request` (a client on the deprecated HTTP+SSE transport fails at its opening `GET` instead). Legacy clients have no fall-forward mechanism. |
169| Legacy | Dual-era | Works. The server answers `initialize` and serves the client according to the negotiated legacy revision. |
170| Legacy | Legacy | Works according to the legacy revision; out of scope for this document. |
162| Client | Server | Outcome |
163| - | - | - |
164| Modern | Modern | Works. `server/discover` is optional; version mismatches surface as `UnsupportedProtocolVersionError` and the client retries with a mutually supported version. |
165| Modern | Legacy | Fails. The server may reject the request with an implementation-defined error, stay silent, or even process an era-ambiguous method under legacy semantics. On stdio, clients **SHOULD** send `server/discover` first to fail deterministically; the client then surfaces an actionable error to the user. |
166| Dual-era | Modern | Works. The stdio probe returns a `DiscoverResult` (or `UnsupportedProtocolVersionError`); on HTTP, the first modern request succeeds or returns a modern error. The client stays modern. |
167| Dual-era | Legacy | Works. stdio: the probe returns a non-modern error or times out, and the client falls back to `initialize`. HTTP: the modern request returns a `4xx` without a recognized modern error body, and the client falls back to `initialize` (and possibly further to the deprecated HTTP+SSE transport). |
168| Legacy | Modern | Fails. stdio: the server rejects `initialize` with a JSON-RPC error; the exact code is implementation-defined (`initialize` is an unknown method and the request also lacks the required `_meta` fields). HTTP: the request is missing the required headers and is rejected per [server validation](/specification/draft/basic/transports/streamable-http#server-validation) with `400 Bad Request` (a client on the deprecated HTTP+SSE transport fails at its opening `GET` instead). Legacy clients have no fall-forward mechanism. |
169| Legacy | Dual-era | Works. The server answers `initialize` and serves the client according to the negotiated legacy revision. |
170| Legacy | Legacy | Works according to the legacy revision; out of scope for this document. |
171171 
172172A dual-era **server** selects its behavior from how the client opens:
173173 

specification/draft/client/elicitation Changed · +8 / -8 lines

from line 85
8585 
8686All elicitation requests **MUST** include the following parameters:
8787 
88| Name | Type | Options | Description |
89| --------- | ------ | ------------- | -------------------------------------------------------------------------------------- |
90| `mode` | string | `form`, `url` | The mode of the elicitation. Optional for form mode (defaults to `"form"` if omitted). |
91| `message` | string | | A human-readable message explaining why the interaction is needed. |
88| Name | Type | Options | Description |
89| - | - | - | - |
90| `mode` | string | `form`, `url` | The mode of the elicitation. Optional for form mode (defaults to `"form"` if omitted). |
91| `message` | string | | A human-readable message explaining why the interaction is needed. |
9292 
9393The `mode` parameter specifies the type of elicitation:
9494 
from line 103
103103 
104104Form mode elicitation requests **MUST** either specify `mode: "form"` or omit the `mode` field, and include these additional parameters:
105105 
106| Name | Type | Description |
107| ----------------- | ------ | -------------------------------------------------------------- |
106| Name | Type | Description |
107| - | - | - |
108108| `requestedSchema` | object | A JSON Schema defining the structure of the expected response. |
109109 
110110#### Requested Schema
from line 325
325325 
326326URL mode elicitation requests **MUST** specify `mode: "url"`, a `message`, and include these additional parameters:
327327 
328| Name | Type | Description |
329| ----- | ------ | ----------------------------------------- |
328| Name | Type | Description |
329| - | - | - |
330330| `url` | string | The URL that the user should navigate to. |
331331 
332332The `url` parameter **MUST** contain a valid URL.

specification/draft/deprecated Changed · +8 / -8 lines

from line 19
1919 
2020## Deprecated
2121 
22| Feature | Deprecation SEP | Deprecated in | Migration path | Earliest removal |
23| ----------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------- | ------------- | ------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
24| [Roots](/specification/draft/client/roots) | [SEP-2577](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577) | `2026-07-28` | Pass directories or files via tool parameters, resource URIs, or server configuration | First revision released on or after 2027-07-28 |
25| [Sampling](/specification/draft/client/sampling) | [SEP-2577](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577) | `2026-07-28` | Integrate directly with LLM provider APIs | First revision released on or after 2027-07-28 |
26| [Logging](/specification/draft/server/utilities/logging) | [SEP-2577](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577) | `2026-07-28` | Log to `stderr` for stdio transports; use [OpenTelemetry](https://opentelemetry.io/) for observability | First revision released on or after 2027-07-28 |
27| [Dynamic Client Registration](/specification/draft/basic/authorization/client-registration#dynamic-client-registration) | [PR #2858](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2858) | `2026-07-28` | [Client ID Metadata Documents](/specification/draft/basic/authorization/client-registration#client-id-metadata-documents) | First revision released on or after 2027-07-28 |
28| `includeContext: "thisServer"` / `"allServers"` ([Sampling](/specification/draft/client/sampling#capabilities)) | [SEP-2596](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2596) | `2025-11-25` | Omit the field or use `"none"` | Follows Sampling ([SEP-2577](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577)) |
29| [HTTP+SSE transport](/specification/2024-11-05/basic/transports#http-with-sse) | [SEP-2596](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2596) | `2025-03-26` | [Streamable HTTP](/specification/draft/basic/transports/streamable-http) | Three months after SEP-2596 reaches Final |
22| Feature | Deprecation SEP | Deprecated in | Migration path | Earliest removal |
23| - | - | - | - | - |
24| [Roots](/specification/draft/client/roots) | [SEP-2577](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577) | `2026-07-28` | Pass directories or files via tool parameters, resource URIs, or server configuration | First revision released on or after 2027-07-28 |
25| [Sampling](/specification/draft/client/sampling) | [SEP-2577](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577) | `2026-07-28` | Integrate directly with LLM provider APIs | First revision released on or after 2027-07-28 |
26| [Logging](/specification/draft/server/utilities/logging) | [SEP-2577](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577) | `2026-07-28` | Log to `stderr` for stdio transports; use [OpenTelemetry](https://opentelemetry.io/) for observability | First revision released on or after 2027-07-28 |
27| [Dynamic Client Registration](/specification/draft/basic/authorization/client-registration#dynamic-client-registration) | [PR #2858](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2858) | `2026-07-28` | [Client ID Metadata Documents](/specification/draft/basic/authorization/client-registration#client-id-metadata-documents) | First revision released on or after 2027-07-28 |
28| `includeContext: "thisServer"` / `"allServers"` ([Sampling](/specification/draft/client/sampling#capabilities)) | [SEP-2596](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2596) | `2025-11-25` | Omit the field or use `"none"` | Follows Sampling ([SEP-2577](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2577)) |
29| [HTTP+SSE transport](/specification/2024-11-05/basic/transports#http-with-sse) | [SEP-2596](https://github.com/modelcontextprotocol/modelcontextprotocol/pull/2596) | `2025-03-26` | [Streamable HTTP](/specification/draft/basic/transports/streamable-http) | Three months after SEP-2596 reaches Final |
3030 
3131The HTTP+SSE transport and the `includeContext` values were already described
3232as deprecated before the lifecycle policy existed; SEP-2596 reclassifies them

specification/draft/server/index Changed · +5 / -5 lines

from line 12
1212 
1313Each primitive can be summarized in the following control hierarchy:
1414 
15| Primitive | Control | Description | Example |
16| --------- | ---------------------- | -------------------------------------------------- | ------------------------------- |
17| Prompts | User-controlled | Interactive templates invoked by user choice | Slash commands, menu options |
18| Resources | Application-controlled | Contextual data attached and managed by the client | File contents, git history |
19| Tools | Model-controlled | Functions exposed to the LLM to take actions | API POST requests, file writing |
15| Primitive | Control | Description | Example |
16| - | - | - | - |
17| Prompts | User-controlled | Interactive templates invoked by user choice | Slash commands, menu options |
18| Resources | Application-controlled | Contextual data attached and managed by the client | File contents, git history |
19| Tools | Model-controlled | Functions exposed to the LLM to take actions | API POST requests, file writing |
2020 
2121Explore these key primitives in more detail below:
2222 

specification/draft/server/utilities/caching Changed · +3 / -3 lines

from line 93
9393The `cacheScope` field controls who may cache a response, analogous to HTTP
9494`Cache-Control: public` vs `Cache-Control: private`.
9595 
96| Value | Meaning |
97| ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
98| `"public"` | The response does not contain user-specific data. Any client, shared gateway, or caching proxy **MAY** store and serve the cached response to any user. |
96| Value | Meaning |
97| - | - |
98| `"public"` | The response does not contain user-specific data. Any client, shared gateway, or caching proxy **MAY** store and serve the cached response to any user. |
9999| `"private"` | The response contains private data that is not meant to be shared between callers. Cached responses **MAY** be reused for the same authorization context. Caches **MUST NOT** be shared across authorization contexts (e.g. a different access token requires a different cache). |
100100 
101101#### Choosing a Cache Scope

specification/draft/server/utilities/completion Changed · +3 / -3 lines

from line 132
132132 
133133The protocol supports two types of completion references:
134134 
135| Type | Description | Example |
136| -------------- | ----------------------------------------- | --------------------------------------------------- |
137| `ref/prompt` | References a prompt by name | `{"type": "ref/prompt", "name": "code_review"}` |
135| Type | Description | Example |
136| - | - | - |
137| `ref/prompt` | References a prompt by name | `{"type": "ref/prompt", "name": "code_review"}` |
138138| `ref/resource` | References a resource URI or URI template | `{"type": "ref/resource", "uri": "file:///{path}"}` |
139139 
140140### Completion Results

specification/draft/server/utilities/logging Changed · +10 / -10 lines

from line 42
4242The protocol follows the standard syslog severity levels specified in
4343[RFC 5424](https://datatracker.ietf.org/doc/html/rfc5424#section-6.2.1):
4444 
45| Level | Description | Example Use Case |
46| --------- | -------------------------------- | -------------------------- |
47| debug | Detailed debugging information | Function entry/exit points |
48| info | General informational messages | Operation progress updates |
49| notice | Normal but significant events | Configuration changes |
50| warning | Warning conditions | Deprecated feature usage |
51| error | Error conditions | Operation failures |
52| critical | Critical conditions | System component failures |
53| alert | Action must be taken immediately | Data corruption detected |
54| emergency | System is unusable | Complete system failure |
45| Level | Description | Example Use Case |
46| - | - | - |
47| debug | Detailed debugging information | Function entry/exit points |
48| info | General informational messages | Operation progress updates |
49| notice | Normal but significant events | Configuration changes |
50| warning | Warning conditions | Deprecated feature usage |
51| error | Error conditions | Operation failures |
52| critical | Critical conditions | System component failures |
53| alert | Action must be taken immediately | Data corruption detected |
54| emergency | System is unusable | Complete system failure |
5555 
5656## Requesting Log Messages
5757 
Feedback