Docs
Connect Scry to ChatGPT, Claude, Codex, and other agents
Add Scry as an MCP server in ChatGPT, Claude.ai, Claude Desktop and Cowork, Claude Code, Codex, Cursor, or any MCP client, then ask it structured questions over the corpus.
One URL
Scry is an MCP server at https://mcp.scry.io (Streamable HTTP, stateless). Every client below takes that one URL. On first connect the client sends you through an OAuth approval in your browser, signed in to scry.io; approving gives the connector its own API key, which you budget or revoke at https://scry.io/dashboard. No account yet: https://scry.io/auth/signup. Personal keys are licensed for individual, non-commercial research; anything commercial needs an engagement (https://scry.io/#access).
https://mcp.scry.io
ChatGPT (web)
ChatGPT takes custom MCP servers in developer mode on the web; OpenAI’s guide (https://developers.openai.com/api/docs/guides/developer-mode) says which plans have it, and a workspace administrator may have to allow it. Signed in at scry.io, open ChatGPT on the web: Settings, Security and login, Developer mode, on. Then Plugins, the + button, the fields below, Create, and approve at scry.io when prompted. Scry then appears as a plugin: select it for a chat or type @scry. Whether it also reaches the ChatGPT mobile app is OpenAI’s client support, not Scry’s.
Name: Scry Description: programmatic search over much of the public internet MCP server: https://mcp.scry.io Auth: OAuth (approve at scry.io when prompted)
Claude.ai, Claude Desktop, and Cowork
Settings, Connectors, Add custom connector. Name it Scry, paste the URL, Add, then Connect and approve at scry.io. In a chat, open the + menu and enable Scry. One setup covers chat, Desktop, and Cowork. On Team and Enterprise plans an admin adds it once for the organization under Admin settings, Connectors.
Name: Scry URL: https://mcp.scry.io
Claude Code
Register the server, then run /mcp inside a session to approve. --scope user makes it available in every project. Headless and CI runs pass an API key as a header.
claude mcp add --transport http scry https://mcp.scry.io # then, inside a session: /mcp # header-configured (no browser): claude mcp add --transport http scry https://mcp.scry.io \ --header "Authorization: Bearer $SCRY_API_KEY"
Codex (CLI and app)
Add the server, then log in. The Codex desktop app reads the same ~/.codex/config.toml. Non-interactive runs read an API key from an environment variable.
codex mcp add scry --url https://mcp.scry.io codex mcp login scry # header-configured (no browser): codex mcp add scry --url https://mcp.scry.io \ --bearer-token-env-var SCRY_API_KEY
Cursor, Windsurf, and any other MCP client
Any client that speaks MCP over Streamable HTTP takes the same URL, and one that implements OAuth discovers the flow from the 401 challenge. A client that only accepts static headers sends Authorization: Bearer with an API key from the console.
{
"mcpServers": {
"scry": { "url": "https://mcp.scry.io" }
}
}
// header-configured
{
"mcpServers": {
"scry": {
"url": "https://mcp.scry.io",
"headers": { "Authorization": "Bearer <your scry key>" }
}
}
} No client at all: curl
The connector is an HTTPS JSON-RPC endpoint, so any HTTP caller is a client. Send a Bearer key from the dashboard and call tools directly. tools/list returns the current contract; a call without the header gets a 401 with the OAuth challenge. A capability gated to an account is taught to that account’s agent by whoami. The statement below returns three recent Hacker News titles.
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 hn_id, title, original_author, original_timestamp, uri FROM hackernews.items WHERE hn_id >= (SELECT max(hn_id) AS n FROM hackernews.story_scores WHERE observed_on >= today() - 7) - 100000 AND length(title) > 0 ORDER BY hn_id DESC LIMIT 3"}}}' What to ask
Scry answers questions over whole populations: content only from authors who have also said particular word strings; the first community to use a phrase and who spread it; how a forum drifted between two ideas quarter by quarter; the full price path of a prediction market. The tools include sql for bounded SQL, schema for the live contract, embed for named vectors, and feedback to tell the operators what sucks; https://scry.io/connector shows every tool as served. Tell your model to call schema first when it seems unsure. Two tools are paid: chat and creativity run third-party inference and draw on cash or promo balance (or, for chat, your own OpenRouter key), never on signup credit; with only signup credit they return insufficient_credits until funds are added under Dashboard, Billing.
Budgets, disconnecting, and trouble
Each connected client owns one API key named for it in the dashboard (https://scry.io/dashboard): set a budget there, or revoke the key to sever that connector. A client that reports authentication required has had its key revoked or expired; remove and re-add the connector. A connector keeps the tool list it read at install, so an older one can miss newer tools and be refused retired names. Have your agent open each session with whoami, which reports a stale connector on the first call. Every served roster has a fingerprint, in the whoami tool description and in whoami’s reply; when they differ the connector is stale, and until it is refreshed every current read-only tool still answers by name through batch. The tested fix in ChatGPT is to remove Scry from Settings and add it again; a Refresh control does not pull a new tool list. In Claude, remove and re-add the connector. Anything else: hi@scry.io.
Related docs
Want even more out of Scry? Think there's something we can do? Reach out with a request or an offer at hi@scry.io.