Protocol and errors

For people implementing an MCP client. You do not need this to connect an AI app.

Transport

Streamable HTTP. POST JSON-RPC 2.0 to /mcp and the response comes back on the same connection.

SSE (Server-Sent Events) is not supported. Clients that assume streaming should be configured to use plain POST.

Server info

initialize returns:

{
  "protocolVersion": "2025-06-18",
  "capabilities": {
    "tools": {
      "listChanged": false
    }
  },
  "serverInfo": {
    "name": "clone-plus-mcp",
    "version": "1.0.0",
    "title": "Clone+ Knowledge Base"
  }
}
There is no session. You may skip initialize and go straight to tools/list or tools/call. No session ID to track.

Implemented methods

MethodDescription
initializeReturns server info and capabilities (optional)
notifications/initializedAccepted, returns nothing
pingReturns {}
tools/listLists the available tools
tools/callRuns a tool
tools/list is filtered by the token's scope. With a read-only token the write tools do not appear at all.

JSON-RPC error codes

Standard codes plus the conventional MCP extensions.

CodeMeaning
-32700Parse error
-32600Invalid request
-32601Method not found
-32602Invalid params
-32603Internal error
-32001Unauthorized
-32002Forbidden
-32003Not found
-32004Rate limit exceeded

HTTP status codes

StatusWhen
200Success — and also permission denied (see below)
204A notification (a request with no id) was accepted
401Authentication failed; sent with a WWW-Authenticate header
405Method other than GET or POST
415Content-Type was not application/json
429Per-minute request limit exceeded

Permission denied returns 200

Calling a write tool with a read-only token returns HTTP 200 with -32002 in the JSON-RPC error. Looking only at the HTTP status will read as success. Note also that 403 and 404 are never returned (outside /docs/).