{"openapi":"3.1.0","info":{"title":"VerJSON MCP Server","version":"1.0.0","description":"HTTP surface for the VerJSON MCP server hosted at `https://mcp.verjson.dev`.\n\nThe primary endpoint is `/mcp`, which speaks the\n[MCP Streamable HTTP](https://modelcontextprotocol.io/specification/2025-03-26/basic/transports#streamable-http)\ntransport (JSON-RPC 2.0 over HTTP, optionally upgraded to SSE).\n\n## Authentication\n\n`/mcp` requires a VerJSON API key as a Bearer token:\n`Authorization: Bearer vjs_<prefix>_<secret>`.\n\n`/health` and `/api-docs` are open.\n\n## Upstream dependencies\n\nSend `X-Session-Source: VerJSON` (default) or `External` on initialize to choose `create_session` shape and tool set.\n\nIn VerJSON mode, `create_session` resolves a published path via\n`POST https://api.verjson.dev/v1/published-snapshots/query` (metadata + `links` only), then loads\nthe spec from `links.snapshot` or precomputed `links.mcp.specMin`.\n","contact":{"name":"VerJSON","url":"https://verjson.dev"},"license":{"name":"Proprietary"}},"servers":[{"url":"https://mcp.verjson.dev","description":"Production"}],"tags":[{"name":"MCP","description":"Model Context Protocol Streamable HTTP transport."},{"name":"Health"},{"name":"Docs"}],"paths":{"/mcp":{"post":{"tags":["MCP"],"summary":"MCP JSON-RPC endpoint (initialize / tools.list / tools.call / …)","description":"Speaks the MCP Streamable HTTP transport. The first request must be an\n`initialize` JSON-RPC call; the server replies with an `Mcp-Session-Id`\nheader that subsequent requests must echo.\n\nClients **must** send `Accept: application/json, text/event-stream`,\notherwise the server rejects the request with HTTP 406.\n","security":[{"apiKey":[]}],"parameters":[{"in":"header","name":"Mcp-Session-Id","required":false,"description":"Required for all requests after `initialize`.","schema":{"type":"string","format":"uuid"}},{"in":"header","name":"Accept","required":true,"schema":{"type":"string","enum":["application/json, text/event-stream"]}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcRequest"}}}},"responses":{"200":{"description":"JSON-RPC response (or SSE stream when streaming).","headers":{"Mcp-Session-Id":{"description":"Returned on the `initialize` response; reuse on subsequent calls.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/JsonRpcResponse"}},"text/event-stream":{"schema":{"type":"string"}}}},"400":{"description":"Unknown session ID or malformed request."},"401":{"description":"Missing or invalid API key."},"406":{"description":"Missing required Accept header."}}},"get":{"tags":["MCP"],"summary":"Open an SSE stream for an existing MCP session","security":[{"apiKey":[]}],"parameters":[{"in":"header","name":"Mcp-Session-Id","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Server-Sent Events stream.","content":{"text/event-stream":{"schema":{"type":"string"}}}},"400":{"description":"Session not found."},"401":{"description":"Missing or invalid API key."}}},"delete":{"tags":["MCP"],"summary":"Close an MCP session","security":[{"apiKey":[]}],"parameters":[{"in":"header","name":"Mcp-Session-Id","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Session closed."},"404":{"description":"Session not found."}}}},"/health":{"get":{"tags":["Health"],"summary":"Service health check","security":[],"responses":{"200":{"description":"Service is up.","content":{"application/json":{"schema":{"type":"object","properties":{"status":{"type":"string","example":"ok"},"service":{"type":"string","example":"verjson-mcp"},"mcpEndpoint":{"type":"string","example":"/mcp"},"activeMcpSessions":{"type":"integer"},"uptime":{"type":"number"}}}}}}}}},"/api-docs":{"get":{"tags":["Docs"],"summary":"This OpenAPI spec, as JSON","security":[],"responses":{"200":{"description":"OpenAPI 3.1 document.","content":{"application/json":{"schema":{"type":"object"}}}}}}}},"components":{"securitySchemes":{"apiKey":{"type":"http","scheme":"bearer","bearerFormat":"vjs_<prefix>_<secret>","description":"VerJSON API key issued from the dashboard."}},"schemas":{"JsonRpcRequest":{"type":"object","required":["jsonrpc","method"],"properties":{"jsonrpc":{"type":"string","enum":["2.0"]},"id":{"oneOf":[{"type":"string"},{"type":"integer"}]},"method":{"type":"string","example":"tools/list"},"params":{"type":"object","additionalProperties":true}}},"JsonRpcResponse":{"type":"object","required":["jsonrpc"],"properties":{"jsonrpc":{"type":"string","enum":["2.0"]},"id":{"oneOf":[{"type":"string"},{"type":"integer"},{"type":"null"}]},"result":{"type":"object","additionalProperties":true},"error":{"type":"object","properties":{"code":{"type":"integer"},"message":{"type":"string"},"data":{}}}}}}}}