MCP server
Give your agent a market microstructure search engine.
The EdgeDepth Research MCP server exposes the same search engine as agent tools, so Claude, Cursor, Codex and any MCP client can query recorded crypto and TradFi microstructure and get answers with receipts. Search order flow, price action, volatility, funding, open interest, positioning and liquidations across the eligible record. Counts always carry denominators, outcomes are computed forward and can never be filtered, and every result hands back a reproducibility key the agent can cite. The hosted server validates a short-lived opaque OAuth token and exchanges it for a separate 60-second internal assertion. Your OAuth token never reaches the Research API, and the engine still streams canonical bytes back untouched.
Ask it things like
The point is honest hit rates, not cherry-picked winners. A good question names a SETUP and lets the tool report what followed over every occurrence:
- "How often does a bullish engulfing on BTC, ETH and SOL reach +5% within the hour, and what did drawdown look like?"
- "When top traders were at least 15 points more long than the crowd on NVDA, QQQ and BTC perps, what followed over the next 4 and 24 hours?"
- "Compare what followed one-hour liquidation notional above $5 million with every other eligible market bucket."
One thing it refuses by design: you cannot filter to the occurrences that then went up. Outcome fields are computed forward and can never be a filter (expect OUTCOME_IN_PREDICATE), so you always get the true rate over all occurrences instead of a hindsight-selected list.
Two ways in
Remote (recommended): a hosted Streamable HTTP endpoint at https://mcp.edgedepth.com/mcp, no install. Local: an npx shim that runs the same tools over stdio. One package, two transports.
1. Add the secure URL
Open the MCP setup page, choose your client, and add https://mcp.edgedepth.com/mcp. Do not add an API key, bearer header, or environment variable to a hosted connection.
2. Authorize once
Your MCP client opens EdgeDepth in the browser. Sign in with Google, Discord, or email, review the requested research scopes, and click Authorize. The access token lasts about 15 minutes, but the client silently rotates its refresh credential with a sliding 90-day inactivity window. Active connections stay signed in without asking you to regenerate or copy anything.
Connections appear under Connected Apps and can be revoked immediately. API keys remain an advanced fallback for the local stdio package or clients without OAuth.
3. Verify, then use the tools
Run list_features first. It returns the live grammar without spending scan credits. Then try a small run_scan.
| TOOL | WHAT IT DOES |
|---|---|
list_features | The closed grammar registry: feature ids, operators, windows, sequence rules, limits, error codes. Call it first; an agent that grounds here cannot invent field names. |
interpret_prose | Prose to a PROPOSED document, labeled proposal:true and never executed. Show it, then call run_scan with the document. That second call is the confirm gate. Metered. |
run_scan | Execute a research_query.v2 document (stated chips only). Returns counts, denominators, outcomes_summary and the reproducibility key as canonical bytes. |
next_page | Cursor continuation of a prior run_scan. Never construct cursors. |
snapshot_at | The registry as-of a moment: feature values, window aggregates, fired rulebook ids. A read, not a scan, not metered. |
base_rate | One-clause count over a window: matches / eligible with denominators. A condition that holds almost everywhere prints high and is visibly uninformative. |
commonality | Deterministic intersection across N moments, with the survivorship and multiple-comparisons framing in the output. Never similarity search. |
get_report | A published report by its 8-hex canonical hash: the definition and the pinned result. |
run_cohort | Compare what followed treatment episode anchors with what followed the eligible predicate-false bucket, using the same complete outcome distributions on both sides. |
Errors are the shared language
Contract codes pass through verbatim and are machine-actionable. A validation failure is 422 {"errors":[{code,message}]} with the frozen codes; a transport failure is the {"error","code"} envelope. An agent that sees UNSUPPORTED_FEATURE or OUTCOME_IN_PREDICATE can read the code, call list_features, and repair its document. See the grammar for the full list and worked examples for documents to hand a tool.