Docs
HTTP API
The Scry API is the MCP endpoint: plain HTTPS JSON-RPC, one URL, no client library. Raw HTTP routes ride underneath for services that want them.
The API is the MCP endpoint
The supported surface is https://mcp.scry.io — and it is an ordinary HTTPS API. Streamable HTTP is JSON-RPC over POST: no client library, no session handshake, no install. One request calls any tool; tools/list returns the current contract, so integrations stay current without a changelog. Every tool answer carries the same rows, accounting, and coverage fields as the raw routes, because it is the same engine.
curl https://mcp.scry.io \
-H "Authorization: Bearer $SCRY_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"sql","arguments":{"sql":"SELECT title FROM hackernews.items ORDER BY original_timestamp DESC LIMIT 3"}}}' Base URL and authentication
The API base is https://api.scry.io. Send Authorization: Bearer $SCRY_API_KEY on authenticated routes. GET /v1/scry/context is public. Schema and rerank requests accept a signed-in session or a Scry key; SQL queries use a Scry key or the supported x402 payment path.
Context and schema
GET /v1/scry/context?mode=agent returns the compact session-start contract. POST /v1/scry/context is not a registered route. GET /v1/scry/schema returns relation and helper contracts; use ?relation=<name>[,<name>] for selected full contracts or ?mode=index for the catalog index.
Query
POST /v1/scry/query accepts one read-only ClickHouse statement. Send the SQL as a UTF-8 text/plain body. The server also accepts text/sql, application/sql, or an application/json object containing only a string sql field. A literal LIMIT bounds ordinary result sets; begin at LIMIT 20. The JSON response carries rows, execution details, truncation state, and accounting fields. Long queries can stream JSON whitespace before the response object.
curl https://api.scry.io/v1/scry/query \ -H "Authorization: Bearer $SCRY_API_KEY" \ -H "Content-Type: text/plain" \ --data "SELECT hn_id, title, original_author, original_timestamp, uri FROM hackernews.items WHERE title != '' ORDER BY hn_id DESC LIMIT 20"
Rerank
POST /v1/scry/rerank orders documents supplied by the caller. The route accepts JSON and requires authentication.
When to use the raw routes
The raw routes are the transport under the tools: reach for them when a service wants text/plain SQL bodies, the x402 payment path, or response streaming without JSON-RPC framing. Everything else — discovery, contracts, search, rerank, memory — is one tool call away on the MCP endpoint above.