{"components":{"schemas":{"ApiIndex":{"properties":{"authentication":{"type":"string"},"description":{"type":"string"},"documentation":{"format":"uri","type":"string"},"downloads":{"format":"uri","type":"string"},"mcp":{"format":"uri","type":"string"},"name":{"type":"string"},"openapi":{"format":"uri","type":"string"}},"required":["name","description","documentation","openapi","mcp","downloads","authentication"],"type":"object"},"Downloads":{"description":"Only verified artifacts are listed. An empty artifacts object means no downloadable release is currently published; version and revision are then absent.","properties":{"artifacts":{"additionalProperties":{"properties":{"sha256":{"pattern":"^[0-9a-f]{64}$","type":"string"},"url":{"format":"uri","type":"string"}},"required":["url","sha256"],"type":"object"},"type":"object"},"revision":{"pattern":"^[0-9a-f]{40}$","type":"string"},"version":{"type":"string"}},"required":["artifacts"],"type":"object"},"Problem":{"properties":{"detail":{"type":"string"},"instance":{"format":"uri-reference","type":"string"},"status":{"maximum":599,"minimum":400,"type":"integer"},"title":{"type":"string"},"type":{"format":"uri","type":"string"}},"required":["type","title","status","detail","instance"],"type":"object"},"RpcMessage":{"description":"One JSON-RPC message, never a batch. Requests require a string or integer id; notifications omit it. Initialize before other methods. No session identifier is issued.","properties":{"id":{"type":["string","integer"]},"jsonrpc":{"const":"2.0"},"method":{"description":"initialize, ping, tools/list, tools/call, resources/list, resources/read, resources/templates/list, prompts/list, prompts/get, or notifications/initialized.","type":"string"},"params":{"additionalProperties":true,"description":"Method-specific MCP arguments; use tools/list and prompts/list to discover their schemas.","type":"object"}},"required":["jsonrpc","method"],"type":"object"},"RpcResponse":{"oneOf":[{"properties":{"id":{"type":["string","integer"]},"jsonrpc":{"const":"2.0"},"result":{"additionalProperties":true,"type":"object"}},"required":["jsonrpc","id","result"],"type":"object"},{"properties":{"error":{"properties":{"code":{"type":"integer"},"message":{"type":"string"}},"required":["code","message"],"type":"object"},"id":{"type":["string","integer","null"]},"jsonrpc":{"const":"2.0"}},"required":["jsonrpc","id","error"],"type":"object"}]},"ServerCard":{"properties":{"$schema":{"format":"uri","type":"string"},"description":{"type":"string"},"name":{"type":"string"},"remotes":{"items":{"properties":{"supportedProtocolVersions":{"items":{"type":"string"},"type":"array"},"type":{"const":"streamable-http"},"url":{"format":"uri","type":"string"}},"required":["type","url","supportedProtocolVersions"],"type":"object"},"type":"array"},"title":{"type":"string"},"version":{"type":"string"},"websiteUrl":{"format":"uri","type":"string"}},"required":["name","version","remotes"],"type":"object"}}},"externalDocs":{"description":"Mercury API reference and MCP connection guide","url":"https://mercury.jonnify.com/reference"},"info":{"contact":{"name":"Mercury project","url":"https://mercury.jonnify.com/contact"},"description":"Read-only documentation discovery and verified release metadata. Mercury JavaScript APIs are documented at /reference. MCP uses its own JSON-RPC protocol over POST /mcp; this description covers the HTTP boundary, not a replacement REST API.","title":"Mercury public HTTP API","version":"1.0.0"},"openapi":"3.1.1","paths":{"/api":{"get":{"description":"Discover the public Mercury HTTP resources","operationId":"getMercuryApiIndex","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiIndex"}}},"description":"Discover the public Mercury HTTP resources"},"405":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"description":"Unsupported method. Use GET or HEAD.","headers":{"Allow":{"schema":{"type":"string"}}}}},"summary":"Discover the public Mercury HTTP resources"}},"/downloads.json":{"get":{"description":"Read the current verified release manifest. Empty artifacts is a valid response and does not authorize inventing a download URL. Responses are not cached.","operationId":"getMercuryDownloads","responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Downloads"}}},"description":"Read verified native release availability"}},"summary":"Read verified native release availability"}},"/mcp":{"post":{"description":"Stateless Streamable HTTP. Send Accept: application/json, text/event-stream and Content-Type: application/json. After initialize, send the negotiated MCP-Protocol-Version (2025-11-25 or 2025-06-18). No API key, cookies or OAuth. Limit: 16 KiB body and 120 requests per IP per minute per instance. Origin, if supplied, must be https://mercury.jonnify.com or https://mercury-next.jonnify.com. Tools never install software or execute code. See /start/mcp for lifecycle and method parameters.","operationId":"callMercuryMcp","parameters":[{"description":"Send the negotiated version after initialization.","in":"header","name":"MCP-Protocol-Version","required":false,"schema":{"enum":["2025-11-25","2025-06-18"],"type":"string"}}],"requestBody":{"content":{"application/json":{"example":{"id":1,"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{},"clientInfo":{"name":"mercury-client","version":"1.0.0"},"protocolVersion":"2025-11-25"}},"schema":{"$ref":"#/components/schemas/RpcMessage"}}},"required":true},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RpcResponse"}}},"description":"MCP result or JSON-RPC method error; inspect result or error."},"202":{"description":"Accepted notification; response body is empty."},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RpcResponse"}}},"description":"Malformed JSON-RPC message or unsupported protocol header."},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RpcResponse"}}},"description":"Origin is not allowed."},"406":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RpcResponse"}}},"description":"Accept does not permit application/json."},"413":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RpcResponse"}}},"description":"Request exceeds 16 KiB."},"415":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RpcResponse"}}},"description":"Content-Type is not application/json."},"429":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RpcResponse"}}},"description":"Rate limit reached; honor Retry-After.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"minimum":1,"type":"integer"}}}}},"summary":"Read Mercury guidance through MCP"}},"/mcp/server-card":{"get":{"description":"Experimental MCP ServerCard discovery metadata. This extension is not part of the core MCP specification. Use its Streamable HTTP remote with an MCP client.","operationId":"getMercuryMcpServerCard","responses":{"200":{"content":{"application/mcp-server-card+json":{"schema":{"$ref":"#/components/schemas/ServerCard"}}},"description":"Read the experimental MCP ServerCard"}},"summary":"Read the experimental MCP ServerCard"}}},"security":[],"servers":[{"url":"https://mercury.jonnify.com"}]}