Versions
- No
MCP-Protocol-Versionheader: the server assumes2025-03-26, as the specification says. - A known version in the header: accepted.
- An unknown version in the header:
400, with the accepted versions inerror.data. - In
initialize, a known requested version is echoed back; an unknown one gets2025-11-25, and the client decides whether to continue.
Methods
Every method needs a credential,initialize and ping included.
completion/complete, logging/setLevel and resource subscriptions are not implemented, and the
matching capabilities are not announced.
Transport
The server never issues an
Mcp-Session-Id. /mcp and /mcp/ both work.
Batches. JSON-RPC batches left the specification in 2025-06-18, but a client that sends no
version header is assumed to speak 2025-03-26, where they existed. The server accepts an array
without announcing it: it answers with an array, answers 202 to an array of notifications only,
and refuses an empty array with 400.
Origin
A request with anOrigin header must come from a known web client: doers.sh, claude.ai,
claude.com, chatgpt.com, chat.openai.com, platform.openai.com, or the loopback address.
Anything else gets 403. Native clients send no Origin and are never affected. This is defence
against DNS rebinding; the credential remains the real protection.
Tool results
content[0].textis a compact rendering with the identifiers in it, so a client that ignoresstructuredContentstill has everything it needs to act.structuredContentis the operation’s full output. Every tool declares itsoutputSchema.- The text is not a copy of the JSON, as the specification recommends: sending thirty tasks twice would double the tokens on the most frequent calls.
Annotations
openWorldHint is false everywhere, including the calendar tools, which call Google Calendar, and
the coach tools that spend a model turn on your Anthropic key. Each tool’s page in the reference
says which outside service it calls.
Errors
Invalid arguments come back as a tool result rather than
-32602 on purpose: a model reads
“when: Invalid ISO date” and retries correctly, where a protocol error makes it give up. The
specification classes these as tool execution errors.