Skip to main content
The server implements the MCP specification 2025-11-25 over Streamable HTTP. It is stateless and answers every request with plain JSON.

Versions

  • No MCP-Protocol-Version header: the server assumes 2025-03-26, as the specification says.
  • A known version in the header: accepted.
  • An unknown version in the header: 400, with the accepted versions in error.data.
  • In initialize, a known requested version is echoed back; an unknown one gets 2025-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 an Origin 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].text is a compact rendering with the identifiers in it, so a client that ignores structuredContent still has everything it needs to act.
  • structuredContent is the operation’s full output. Every tool declares its outputSchema.
  • 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.