# CryptoStruct MCP server

> Canonical HTML: https://cryptostruct.com/docs/mcp · This document: https://cryptostruct.com/docs/mcp.md · Endpoint: https://cryptostruct.com/mcp · Sign-in endpoint: https://cryptostruct.com/mcp/auth
> No MCP client? The same flow over plain HTTP: https://cryptostruct.com/docs/api.md (OpenAPI: https://cryptostruct.com/openapi.json). Site map for agents: https://cryptostruct.com/llms.txt

The CryptoStruct MCP server lets AI agents — Claude, Cursor, or any Model Context Protocol client — search our historical market-data catalog, read live market statistics, and buy tick-data files and prediction-market / option-chain day bundles directly from a conversation. The catalog behind the tools is the complete venue feed — every message, every instrument, every venue, every day, captured co-located at institutional grade — priced at 1 EUR per instrument-day or series-day. No API key needed for the free tier; optionally sign in via OAuth to reach your orders, pay with your credits, and unlock Premium depth. Card payment happens in the browser via Stripe checkout; credits are spent only with your consent — an approval page by default, or autonomously within limits you set.

## Connect

**Claude Code**

```
claude mcp add --transport http cryptostruct https://cryptostruct.com/mcp
```

**claude.ai / Claude Desktop**

```
Settings → Connectors → Add custom connector → https://cryptostruct.com/mcp
```

**Cursor (~/.cursor/mcp.json)**

```
{ "mcpServers": { "cryptostruct": { "url": "https://cryptostruct.com/mcp" } } }
```

**Raw JSON-RPC (curl)**

```
curl https://cryptostruct.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

Streamable HTTP, stateless — POST JSON-RPC messages; both Accept types are required.

## Tools

### Catalog & discovery

Find instruments and understand what the archive holds — free, no auth.

- `search_instruments` — Search 800K+ instruments across 35+ venues by ticker, base asset or id, with class/venue filters — venue and class words in the query ("binance btcusdt perp") are understood.
- `list_venues` — All covered venues with the archive headline numbers.
- `get_instrument` — Master data + coverage summary for one instrument id.
- `get_coverage` — Day-level coverage: first/last day, gaps, total size — check before you buy.
- `get_data_dictionary` — File format, message types, integrity guarantees, pricing and links.
- `list_sample_files` — Free full-day sample files with direct download URLs.
- `get_price_quote` — EUR quote for a basket of tick files and/or series-day bundles (per-series prices), with per-item availability.

### Day bundles

Prediction-market series (Kalshi, Polymarket) and Deribit option chains are sold as series-day bundles: one item is every contract file of a series on one UTC day, priced per series (mostly 1 EUR). These tools resolve a series to its bundle_id and list its sellable days; buying and delivery use the generic tools with kind series_day — each purchased day arrives as one zip (or tar over 4 GB).

- `search_bundles` — Search ~1,900 bundles by text, class (prediction / option), venue, category or interval — returns bundle_id, series_key, price, covered days and delivery mode.
- `get_bundle_coverage` — Sellable days of one bundle (newest first, pageable) with file count, bytes, price, trades/turnover where captured, and partial-day flags.
- `get_bundle_sample` — One free contract file of the series — the same format as purchased bundle members — with a direct download URL.

### Market statistics

The same 1-minute/daily aggregates the analyze pages chart: OHLC, VWAP, trades, turnover, spreads, top-of-book depth.

- `get_market_snapshot` — Live snapshot: last price, 24h change, 60-min turnover/trades, spread (bps), top-1/top-20 depth.
- `get_daily_stats` — Daily OHLC/VWAP/turnover series over 30/90/180 days with a window summary. Premium: 365d and max (full history).
- `get_hourly_stats` — Hourly OHLC/VWAP/turnover/spread/depth series over 7/30/90 days. Premium: 180d.
- `get_slippage` — Market-impact ladder: reachable notional within X bps of mid, time-averaged over 1h. Premium: 24h and 7d.
- `get_minutes_range` — [Premium] Historical per-minute series (1h/3h/6h windows, any UTC hour within ~30-day retention) incl. data-quality fields — event studies.
- `get_top_instruments` — Top instruments by live 24h turnover across all venues.
- `get_movers` — 24h gainers and losers per class with a minimum-turnover floor.

### Your account (sign-in required)

Connect with OAuth sign-in and the agent can work with your CryptoStruct account directly.

- `list_my_orders` — Your order history: status, totals, credits applied, invoice PDFs, tokenized order links.
- `get_my_files` — Every file you own as a flat list with delivery state and direct download URLs (owner links never expire).
- `get_my_subscription` — Premium status, credit balance, the latest credit-ledger entries and your agent-spending settings (mode, caps, spent today).
- `preview_checkout` — Dry run of a purchase: already-owned files, unavailable days, credit cover — and whether create_checkout will complete from credits, ask for your approval, or hand over a Stripe URL.

### Buying data

The agent assembles the purchase; you stay in control of the money. Card payments happen in the browser via Stripe. Credits (signed-in) are spent only with your consent: by default every agent order lands on an approval page you confirm; opt into autonomous mode in your account to let fully credit-covered orders complete within your per-order and daily limits. Tick files are 1 EUR per instrument-day — the raw tick file with every order-book update, trade and liquidation; day bundles (kind series_day) are priced per series, mostly 1 EUR for every contract file of that series on one UTC day. (1-minute statistics are an analytics export, not a shop item: rolling 24 h free, rolling 7 days and any recorded day with Premium.)

- `create_checkout` — Start a purchase (max 365 items per checkout; tick files and/or series-day bundles). Card: returns a Stripe checkout URL to open in the browser. Credits: returns approval_required with an approval_url for you to confirm — or, in autonomous mode and within your caps, the order completes immediately. Optional max_credit_cents lets the agent cap its own spend.
- `get_checkout_status` — Poll the checkout by session_id (card) or order_id (signed-in; credit/approval orders); once paid it returns the order id and download token.
- `get_order_files` — List a paid order's files with delivery state and direct download URLs — day bundles come with a zip (or tar) URL per day plus status/restore URLs.
- `request_file_restore` — Wake an archived (cold-storage) tick file — restores take up to ~12 hours (bundle days restore via their restore_url).

## Buying data

1. search_instruments — find the instrument and note its instrument_id (day bundles: search_bundles → bundle_id, then get_bundle_coverage instead of get_coverage; items use kind series_day)
2. get_coverage — confirm the days you need exist
3. get_price_quote — total price in EUR (signed in: preview_checkout also shows owned files, credit cover and what create_checkout will do)
4. create_checkout — card: returns a Stripe checkout URL to open in the browser; credits: returns an approval_url to confirm, or completes on its own if you enabled autonomous mode within your limits
5. get_checkout_status — poll (session_id or order_id) until "paid"; returns order_id + download_token
6. get_order_files — per-file download URLs (ready / restoring / archived); bundle days: one zip_url or tar_url per day

## Notes

**Fair use & rate limits.** Anonymous access shares a per-IP budget (weighted per tool call); signed-in callers get their own per-account budget, and Premium raises it 5x. On a RATE_LIMITED error, back off for the indicated seconds. For sustained programmatic scale beyond that — batch queries, bulk exports — the pricing page lists the enterprise options.

**Units & conventions.** Market values (turnover, depth) are USD; sale prices are EUR. All file sizes are compressed (zstd) bytes. Minute-level statistics are retained for roughly 30 days; daily aggregates reach back further. Instrument ids are stable for the lifetime of an instrument and identical across MCP, shop and analyze pages.

**Guest vs signed-in orders.** Anonymous MCP purchases use the guest flow: the download link and token from get_checkout_status stay valid for 30 days. Signed-in (OAuth) purchases are linked to your account permanently and drop already-owned files automatically.

**No MCP client? The same flow over plain HTTP.** Every step of the buy flow is also a documented HTTP call — search, coverage, a keyless POST /api/quote, the guest checkout (Stripe URL for the user), status polling and the tokenized download routes — in https://cryptostruct.com/docs/api.md, with an OpenAPI 3.1 description at https://cryptostruct.com/openapi.json. Or hand the user a pre-filled shop link — Buy link (no API call needed): /shop?i=<instrument_id>&d=<from>..<to> opens the shop with those UTC days of the instrument in the cart; d also takes a comma list or a mix (d=2026-09-01..2026-09-07,2026-09-15). Bundles: /shop/bundles?bundle=<series_key>&d=…. Only archived days are added (gaps and days still being merged are skipped), at most 366 days of span and 1000 lines per cart; the user pays on the site. Example: /shop?i=67824&d=2026-09-29..2026-10-05 = seven days of Binance BTCUSDT perpetual ticks.

**Credits & agent consent.** Your credits are never spent by an agent without your consent. Default — approve each purchase: create_checkout returns approval_required plus an approval page where you pay with credits (or by card) or discard the order; unapproved orders expire after 24 hours with nothing charged. Opt-in — autonomous within limits (https://cryptostruct.com/account/agents): a fully credit-covered order completes immediately as long as it fits your per-order cap and your rolling 24-hour cap; anything larger, or not fully covered, comes back to you for approval instead of failing. The agent can pass its own max_credit_cents on top. Only you can change these settings — from the website, never through an agent's token — and every autonomous purchase is listed on the Agents tab and in your credit ledger.

## Sign-in & Premium

The free tier mirrors what the website shows — same windows, same limits, keyless. Signing in connects the agent to your CryptoStruct account; CryptoStruct Premium (20 EUR/month, the same subscription that powers the deep analyze views) unlocks the deep windows on top. Shop files stay 1 EUR per instrument-day for everyone; day bundles keep their per-series price.

- Account tools: list_my_orders, get_my_files (never-expiring download links), get_my_subscription.
- Checkout knows you: email optional, already-owned files are dropped, and your credits pay (1 credit = 1 EUR = 1 file-day) — with your approval, or autonomously within the limits you set on the Agents tab.
- Your own call budget, keyed to your account instead of your IP.

| Feature | Free | Premium |
| --- | --- | --- |
| Call budget | 120 units/min | 600/min (5x) |
| get_daily_stats | 30 / 90 / 180d | + 365d, max |
| get_hourly_stats | 7 / 30 / 90d | + 180d |
| get_slippage | 1h | + 24h, 7d |
| get_minutes_range | — (locked) | full ~30-day retention |
| get_market_snapshot | core metrics | + data-quality block |
| search_instruments | ≤ 25 / call | up to 100 / call |

**claude.ai / Claude Desktop (sign-in)**

```
Settings → Connectors → Add custom connector → https://cryptostruct.com/mcp/auth
```

The /mcp/auth endpoint asks for sign-in on connect (OAuth in the browser). Same tools as /mcp.

**Claude Code (sign-in)**

```
claude mcp add --transport http cryptostruct https://cryptostruct.com/mcp
claude mcp login cryptostruct
```

**Cursor (~/.cursor/mcp.json, sign-in)**

```
{ "mcpServers": { "cryptostruct": { "url": "https://cryptostruct.com/mcp/auth" } } }
```

Terms: https://cryptostruct.com/terms.md · Data license: https://cryptostruct.com/license · Authentication details: https://cryptostruct.com/auth.md
