Protocol eras changeddocs/draft/tools/inspector/protocol-eras
Nearest release: v2.1.295, published 5 hours after upstream edited the page. Shown because the two are within 24 hours of each other. Nothing here says the release caused the edit.
Upstream edited this page at 8 Oct 2026 12:58 UTC, give or take a minute or two: the time comes from Anthropic’s own sitemap rather than from a commit. This site recorded the change at 22 Oct 2026 20:37 UTC.
Upstream edited
Recorded here
Lines+27added
Lines−5removed
From line
27
where the diff opens
First seen
26 Aug 2026
this site's first read of the page
Recorded edits5to this page, all time
The whole hunk
from line 27, old and new numbered
/
from line 27
2727
2828
2929
30Server Settings: the Protocol Era selector, with all three choices.
31
3032## Reproducing each era locally
3133
3234Every section below ends with a **Reproduce with ...** pointer to a JSON config for one of the **composable test servers** shipped in the Inspector repository. Clone the repo and build the test servers:
from line 73
7173
7274
7375
76Legacy: the Logs tab offers a session-scoped Set Active Level control, and a log arrives after calling send\_notification.
77
7478
7579
80Modern: the same tab instead offers Log Level per Request. The level is stamped on every outgoing request, and the log rides that request's stream.
81
7682***
7783
7884## Resource subscriptions
from line 99
9399
94100
95101
102A modern subscription: the Subscriptions section carries a LISTENING stream-status badge that a legacy subscription has no need for.
103
96104***
97105
98106## Tasks
from line 115
107115
108116**Modern**
109117
110Tasks are an **extension** (`io.modelcontextprotocol/tasks`, [SEP-2663](/seps/2663-tasks-extension)), so the tab is gated on the server *advertising that extension* rather than on `capabilities.tasks`.
118Tasks are an **extension** (`io.modelcontextprotocol/tasks`, [SEP-2663](/seps/2663-tasks-extension.md)), so the tab is gated on the server *advertising that extension* rather than on `capabilities.tasks`.
111119
112120Run a tool as a task and `tools/call` returns a `CreateTaskResult` (`resultType: "task"`, visible in the Protocol and Network tabs). The Inspector polls **`tasks/get`** only; there is no `tasks/list`, so **Refresh** re-polls the handles the client already knows about. A completed task **inlines its result**, with no blocking `tasks/result` call.
113121
114A task that needs more information moves to `input_required` and surfaces an embedded [elicitation](/specification/draft/client/elicitation) in the pending-request modal (the dialog the web client opens whenever a request is waiting on you). Answering it sends **`tasks/update`** carrying the `inputResponses`, and the next poll completes.
122A task that needs more information moves to `input_required` and surfaces an embedded [elicitation](/specification/draft/client/elicitation.md) in the pending-request modal (the dialog the web client opens whenever a request is waiting on you). Answering it sends **`tasks/update`** carrying the `inputResponses`, and the next poll completes.
115123
116124Reproduce with `test-servers/configs/tasks-modern-http.json` (tools `modern_task` and `modern_input_task`).
117125
118126
119127
128Legacy: the Tasks tab is populated from tasks/list, and the payload is fetched with a blocking tasks/result.
129
120130
121131
132Modern: the client polls tasks/get on handles it already holds, and the completed task inlines its result; note resultType: complete in the full task object.
133
122134***
123135
124136## Multi-round tool results (MRTR)
125137
126On the modern era a tool can return `input_required` instead of a final result, embedding an [elicitation](/specification/draft/client/elicitation), a [sampling](/specification/draft/client/sampling) request, or a [`roots/list`](/specification/draft/client/roots) request. The client answers that embedded request and retries the `tools/call` under a fresh JSON-RPC id until the call reaches `complete`.
138On the modern era a tool can return `input_required` instead of a final result, embedding an [elicitation](/specification/draft/client/elicitation.md), a [sampling](/specification/draft/client/sampling.md) request, or a [`roots/list`](/specification/draft/client/roots) request. The client answers that embedded request and retries the `tools/call` under a fresh JSON-RPC id until the call reaches `complete`.
127139
128140The Inspector drives MRTR **manually**, so each round pauses at the **pending-request modal**, tagged `input_required`, for you to answer. The Protocol view groups the whole exchange as one MRTR conversation rather than as unrelated calls.
129141
from line 160
148160
149161
150162
163An MRTR round paused at the pending-request modal, tagged input\_required. Answering it retries the original request.
164
151165
152166
167The monitoring sidebar's Protocol tab after mrtr\_confirm completes. Both tools/call rounds sit inside one MRTR conversation, Round 1 tagged input\_required and Round 2 complete, while unrelated traffic stays outside it.
168
153169***
154170
155171## Tools: mirrored headers and excluded tools
156172
157[SEP-2243](/seps/2243-http-standardization) lets a tool annotate an argument with `x-mcp-header`, asking a Streamable HTTP client to mirror that argument's value into an `Mcp-Param-*` request header.
173[SEP-2243](/seps/2243-http-standardization.md) lets a tool annotate an argument with `x-mcp-header`, asking a Streamable HTTP client to mirror that argument's value into an `Mcp-Param-*` request header.
158174
159175The Inspector surfaces both halves of that contract in the **Tools** tab:
160176
from line 188
172188
173189
174190
191get\_weather shows its mirrored city -> Mcp-Param-City header, and the Network sidebar confirms the call carried mcp-param-city: Boston. invalid\_header\_tool is struck through under the Excluded (SEP-2243) divider.
192
175193### `-32602` error panels
176194
177195A `tools/call` that rejects with `-32602` renders as a distinct **error panel**, on either era:
from line 203
185203
186204## Network and Protocol: headers and the error taxonomy
187205
188The modern era standardizes a set of `Mcp-*` HTTP headers and introduces a richer JSON-RPC error taxonomy ([SEP-2243](/seps/2243-http-standardization) / [SEP-2575](/seps/2575-stateless-mcp)). The two monitoring tabs divide the work:
206The modern era standardizes a set of `Mcp-*` HTTP headers and introduces a richer JSON-RPC error taxonomy ([SEP-2243](/seps/2243-http-standardization.md) / [SEP-2575](/seps/2575-stateless-mcp.md)). The two monitoring tabs divide the work:
189207
190208* The **Network** tab is the HTTP view: mirrored `Mcp-*` headers are highlighted and sentinel values decoded.
191209* The **Protocol** tab is the JSON-RPC view: each spec error renders distinctly rather than as a generic failure.
from line 219
201219
202220
203221
222The Network tab shows the HTTP layer; here, the 400 Bad Request the strict server answered with.
223
204224
225
226The Protocol tab renders the same failure as a typed spec error: -32022 UnsupportedProtocolVersion, with the versions the server does support.
205227
206228***
207229
No line in this hunk matches that.