Order-book depth & history for Polymarket, Kalshi & Limitless. Keyless demo, key for full access.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
DepthFeed API key as 'Bearer df_…' (from https://depthfeed.com). Omit to use the keyless demo tier (BTC + Polymarket, top-of-book).
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Mid-price path per Polymarket market for backtesting, resampled to a fixed interval and bounded to each market's own lifetime so post-settlement books cannot leak in as risk-free fills. Returns {interval_seconds, markets:{<market_id>:{points:[[ts_ms, price_up, coin_price], …]}}} — up to 1000 points per market. Pass 1 to 50 market ids from polymarket_search_markets. History is bounded by the plan window and the interval floor by plan; both fail closed rather than silently coarsening.
Comma-separated Polymarket market ids, 1 to 50, from polymarket_search_markets.
Crypto asset. Every account plan reaches all seven; only the keyless demo surface is BTC-only.
Resample interval in seconds (default 60). The floor is set by plan; a finer value is refused, not rounded.
Mid-price path per Polymarket market for backtesting, resampled to a fixed interval and bounded to each market's own lifetime so post-settlement books cannot leak in as risk-free fills. Returns {interval_seconds, markets:{<market_id>:{points:[[ts_ms, price_up, coin_price], …]}}} — up to 1000 points per market. Pass 1 to 50 market ids from polymarket_search_markets. History is bounded by the plan window and the interval floor by plan; both fail closed rather than silently coarsening.
| Argument | Type | Description |
|---|---|---|
| ids* | string | Comma-separated Polymarket market ids, 1 to 50, from polymarket_search_markets. |
| coin | string | Crypto asset. Every account plan reaches all seven; only the keyless demo surface is BTC-only. |
| interval | integer | Resample interval in seconds (default 60). The floor is set by plan; a finer value is refused, not rounded. |
{
"type": "object",
"required": [
"ids"
],
"properties": {
"ids": {
"type": "string",
"description": "Comma-separated Polymarket market ids, 1 to 50, from polymarket_search_markets."
},
"coin": {
"enum": [
"btc",
"eth",
"sol",
"xrp",
"doge",
"bnb",
"hype"
],
"type": "string",
"default": "btc",
"description": "Crypto asset. Every account plan reaches all seven; only the keyless demo surface is BTC-only."
},
"interval": {
"type": "integer",
"description": "Resample interval in seconds (default 60). The floor is set by plan; a finer value is refused, not rounded."
}
}
}OHLCV price bars for US equities and ETFs, Binance spot pairs, and perpetual futures. One minute is the finest resolution; 5Min, 15Min, 1Hour and 1Day are rolled up from it and say so with `derived`. Spell a crypto pair the way the venue does (BTCUSDT, not BTC) and a perpetual with a .P suffix (BTCUSDT.P) — spot and perp are different instruments at different prices. BTCU, ETHU and WLDU are each both a US ETF and a Binance pair, and resolve to the equity — pass venue=binance to reach the pair instead. Optional `venue` selects the market explicitly: us-equities, binance (spot) or binance-futures (perpetuals). Bounded by the same plan history window as every other read (403 HISTORY_LIMIT_EXCEEDED past it); the plan also sets how many symbols one request may carry.
| Argument | Type | Description |
|---|---|---|
| symbols* | string | Comma-separated symbols, e.g. "AAPL,BTCUSDT,BTCUSDT.P". 3 per request on Explorer, 8 Quant, 16 Research, 32 Desk. |
| end_time | string | End of time as ms-epoch or ISO-8601. History is clamped to your plan's window. |
| timeframe | string | 1Min (default), 5Min, 15Min, 1Hour or 1Day. |
| start_time | string | Start of time as ms-epoch or ISO-8601. History is clamped to your plan's window. |
{
"type": "object",
"required": [
"symbols"
],
"properties": {
"symbols": {
"type": "string",
"description": "Comma-separated symbols, e.g. \"AAPL,BTCUSDT,BTCUSDT.P\". 3 per request on Explorer, 8 Quant, 16 Research, 32 Desk."
},
"end_time": {
"type": "string",
"description": "End of time as ms-epoch or ISO-8601. History is clamped to your plan's window."
},
"timeframe": {
"type": "string",
"description": "1Min (default), 5Min, 15Min, 1Hour or 1Day."
},
"start_time": {
"type": "string",
"description": "Start of time as ms-epoch or ISO-8601. History is clamped to your plan's window."
}
}
}Hourly OHLC candles (yes bid, yes ask, traded price) plus volume and open interest for a Kalshi market. This is the only history that exists for non-crypto Kalshi markets — Kalshi serves no historical order book — and it reaches back up to a year, far past the order-book capture. `price` is null in periods with no trade. Every account plan; history is bounded by your plan window.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Page size (1–500). |
| cursor | string | Opaque pagination cursor from a previous response's pagination.next_cursor. |
| ticker* | string | Exact Kalshi market ticker from kalshi_search_markets (never constructed from a timestamp). |
| end_time | string | End of time as ms-epoch or ISO-8601. History is clamped to your plan's window. |
| interval | string | Candle period. Only 1h (60m) is recorded; omit for the default. |
| start_time | string | Start of time as ms-epoch or ISO-8601. History is clamped to your plan's window. |
{
"type": "object",
"required": [
"ticker"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 500,
"minimum": 1,
"description": "Page size (1–500)."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous response's pagination.next_cursor."
},
"ticker": {
"type": "string",
"description": "Exact Kalshi market ticker from kalshi_search_markets (never constructed from a timestamp)."
},
"end_time": {
"type": "string",
"description": "End of time as ms-epoch or ISO-8601. History is clamped to your plan's window."
},
"interval": {
"type": "string",
"description": "Candle period. Only 1h (60m) is recorded; omit for the default."
},
"start_time": {
"type": "string",
"description": "Start of time as ms-epoch or ISO-8601. History is clamped to your plan's window."
}
}
}Latest yes/no order-book depth for a Kalshi market by ticker. Every account plan; only the keyless demo surface is refused.
| Argument | Type | Description |
|---|---|---|
| ticker* | string | Kalshi market ticker from kalshi_search_markets. |
{
"type": "object",
"required": [
"ticker"
],
"properties": {
"ticker": {
"type": "string",
"description": "Kalshi market ticker from kalshi_search_markets."
}
}
}Historical yes/no depth snapshots for a Kalshi market by ticker. Every account plan; history is bounded by your plan window.
| Argument | Type | Description |
|---|---|---|
| fill | string | ffill returns ONE ROW PER BUCKET for the whole window, carrying the last captured book into buckets that held no capture. Each row then carries `filled` (0 = a capture, 1 = carried forward) and `as_of_ts`, the moment that book was recorded. Requires `interval`. Without it, `interval` returns only the buckets that held a capture — a short series means the market is quoted infrequently, not that data is missing. |
| limit | integer | Page size (1–1000). |
| cursor | string | Opaque pagination cursor from a previous response's pagination.next_cursor. |
| ticker* | string | Kalshi market ticker. |
| end_time | string | End of time as ms-epoch or ISO-8601. History is clamped to your plan's window. |
| interval | string | Downsample bucket — 30s, 1m, 5m, 1h, up to 1d. Returns the newest book in each bucket. Omit for every recorded book change. |
| start_time | string | Start of time as ms-epoch or ISO-8601. History is clamped to your plan's window. |
List Kalshi crypto markets (full yes/no depth, DepthFeed-exclusive). Every account plan; the keyless demo surface returns a 402 upsell.
| Argument | Type | Description |
|---|---|---|
| coin | string | Crypto asset. Every account plan reaches all seven; only the keyless demo surface is BTC-only. |
| type | string | Filter by market window/type. |
| limit | integer | Page size (1–100). |
| cursor | string | Opaque pagination cursor from a previous response's pagination.next_cursor. |
{
"type": "object",
"properties": {
"coin": {
"enum": [
"btc",
"eth",
"sol",
"xrp",
"doge",
"bnb",
"hype"
],
"type": "string",
"default": "btc",
"description": "Crypto asset. Every account plan reaches all seven; only the keyless demo surface is BTC-only."
},
"type": {
"type": "string",
"description": "Filter by market window/type."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size (1–100)."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous response's pagination.next_cursor."
}
}
}Latest L2 depth (bids desc / asks asc) for a Limitless market by slug. Every account plan; only the keyless demo surface is refused.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Limitless market slug from limitless_search_markets. |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Limitless market slug from limitless_search_markets."
}
}
}Historical L2 depth snapshots (time series) for a Limitless market by slug. Every account plan; history is bounded by your plan window.
| Argument | Type | Description |
|---|---|---|
| fill | string | ffill returns ONE ROW PER BUCKET for the whole window, carrying the last captured book into buckets that held no capture. Each row then carries `filled` (0 = a capture, 1 = carried forward) and `as_of_ts`, the moment that book was recorded. Requires `interval`. Without it, `interval` returns only the buckets that held a capture — a short series means the market is quoted infrequently, not that data is missing. |
| slug* | string | Limitless market slug. |
| limit | integer | Page size (1–1000). |
| cursor | string | Opaque pagination cursor from a previous response's pagination.next_cursor. |
| end_time | string | End of time as ms-epoch or ISO-8601. History is clamped to your plan's window. |
| interval | string | Downsample bucket — 30s, 1m, 5m, 1h, up to 1d. Returns the newest book in each bucket. Omit for every recorded book change. |
| start_time | string | Start of time as ms-epoch or ISO-8601. History is clamped to your plan's window. |
List currently-open Limitless (Base CLOB) markets, DepthFeed-exclusive. Every account plan; only the keyless demo surface is refused.
| Argument | Type | Description |
|---|---|---|
| coin | string | Crypto asset. Every account plan reaches all seven; only the keyless demo surface is BTC-only. |
| type | string | Filter by market window/type. |
| limit | integer | Page size (1–100). |
| cursor | string | Opaque pagination cursor from a previous response's pagination.next_cursor. |
{
"type": "object",
"properties": {
"coin": {
"enum": [
"btc",
"eth",
"sol",
"xrp",
"doge",
"bnb",
"hype"
],
"type": "string",
"default": "btc",
"description": "Crypto asset. Every account plan reaches all seven; only the keyless demo surface is BTC-only."
},
"type": {
"type": "string",
"description": "Filter by market window/type."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size (1–100)."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous response's pagination.next_cursor."
}
}
}Paid data plan required. Return every active Polymarket market across all categories, not only crypto. AI execution credits do not unlock this export. The text result is one LLM-readable line per market: MARKET_NAME | OUTCOME PRICES | DEADLINE | MARKET_ID. The sweep fails closed if complete pagination cannot be verified and includes timestamp, count, source-page count, and SHA-256.
No arguments.
{
"type": "object",
"properties": {}
}Fetch a single Polymarket market by id (market_id) or by slug. Provide exactly one of market_id or slug.
| Argument | Type | Description |
|---|---|---|
| coin | string | Crypto asset. Every account plan reaches all seven; only the keyless demo surface is BTC-only. |
| slug | string | Market slug (alternative to market_id). |
| market_id | string | Market id from polymarket_search_markets. |
{
"type": "object",
"properties": {
"coin": {
"enum": [
"btc",
"eth",
"sol",
"xrp",
"doge",
"bnb",
"hype"
],
"type": "string",
"default": "btc",
"description": "Crypto asset. Every account plan reaches all seven; only the keyless demo surface is BTC-only."
},
"slug": {
"type": "string",
"description": "Market slug (alternative to market_id)."
},
"market_id": {
"type": "string",
"description": "Market id from polymarket_search_markets."
}
}
}Historical order-book snapshots (time series) for one Polymarket market. Use interval to downsample and include_orderbook for the full ladder. History depth is gated by plan.
| Argument | Type | Description |
|---|---|---|
| coin | string | Crypto asset. Every account plan reaches all seven; only the keyless demo surface is BTC-only. |
| fill | string | ffill returns ONE ROW PER BUCKET for the whole window, carrying the last captured book into buckets that held no capture. Each row then carries `filled` (0 = a capture, 1 = carried forward) and `as_of_ts`, the moment that book was recorded. Requires `interval`. Without it, `interval` returns only the buckets that held a capture — a short series means the market is quoted infrequently, not that data is missing. |
| limit | integer | Page size (1–1000). |
| cursor | string | Opaque pagination cursor from a previous response's pagination.next_cursor. |
| end_time | string | End of time as ms-epoch or ISO-8601. History is clamped to your plan's window. |
| interval | string | Downsample bucket — 30s, 1m, 5m, 1h, up to 1d. Returns the newest book in each bucket. Omit for every recorded book change. |
| market_id* |
List Polymarket up/down crypto prediction markets for a coin. Returns market id, slug, window, status and timing. Use the returned id/slug with polymarket_get_market or polymarket_get_snapshots.
| Argument | Type | Description |
|---|---|---|
| coin | string | Crypto asset. Every account plan reaches all seven; only the keyless demo surface is BTC-only. |
| type | string | Filter by market window/type, e.g. 5m, 15m, 1h, 4h, 24h. |
| limit | integer | Page size (1–100). |
| cursor | string | Opaque pagination cursor from a previous response's pagination.next_cursor. |
| end_time | string | Filter: markets active at/before this time as ms-epoch or ISO-8601. History is clamped to your plan's window. |
| resolved | boolean | true → only resolved markets, false → only active. |
| start_time | string | Filter: markets active at/after this time as ms-epoch or ISO-8601. History is clamped to your plan's window. |
{
"type": "object",
"properties": {
"coin": {
"enum": [
"btc",
"eth",
"sol",
"xrp",
"doge",
"bnb",
"hype"
],
"type": "string",
"default": "btc",
"description": "Crypto asset. Every account plan reaches all seven; only the keyless demo surface is BTC-only."
},
"type": {
"type": "string",
"description": "Filter by market window/type, e.g. 5m, 15m, 1h, 4h, 24h."
},
"limit": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Page size (1–100)."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous response's pagination.next_cursor."
},
"end_time": {
"type": "string",
"description": "Filter: markets active at/before this time as ms-epoch or ISO-8601. History is clamped to your plan's window."
},
"resolved": {
"type": "boolean",
"description": "true → only resolved markets, false → only active."
},
"start_time": {
"type": "string",
"description": "Filter: markets active at/after this time as ms-epoch or ISO-8601. History is clamped to your plan's window."
}
}
}Cross-venue top-of-book snapshot for all assets across Polymarket, Kalshi, and Binance — a one-shot overview of the current state. No arguments.
No arguments.
{
"type": "object",
"properties": {}
}Show the current session's plan, rate limits, history window, and coin access (reflects keyless demo vs. your API key).
No arguments.
{
"type": "object",
"properties": {}
}{
"type": "object",
"required": [
"ticker"
],
"properties": {
"fill": {
"enum": [
"ffill",
"none"
],
"type": "string",
"description": "ffill returns ONE ROW PER BUCKET for the whole window, carrying the last captured book into buckets that held no capture. Each row then carries `filled` (0 = a capture, 1 = carried forward) and `as_of_ts`, the moment that book was recorded. Requires `interval`. Without it, `interval` returns only the buckets that held a capture — a short series means the market is quoted infrequently, not that data is missing."
},
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Page size (1–1000)."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous response's pagination.next_cursor."
},
"ticker": {
"type": "string",
"description": "Kalshi market ticker."
},
"end_time": {
"type": "string",
"description": "End of time as ms-epoch or ISO-8601. History is clamped to your plan's window."
},
"interval": {
"type": "string",
"description": "Downsample bucket — 30s, 1m, 5m, 1h, up to 1d. Returns the newest book in each bucket. Omit for every recorded book change."
},
"start_time": {
"type": "string",
"description": "Start of time as ms-epoch or ISO-8601. History is clamped to your plan's window."
}
}
}{
"type": "object",
"required": [
"slug"
],
"properties": {
"fill": {
"enum": [
"ffill",
"none"
],
"type": "string",
"description": "ffill returns ONE ROW PER BUCKET for the whole window, carrying the last captured book into buckets that held no capture. Each row then carries `filled` (0 = a capture, 1 = carried forward) and `as_of_ts`, the moment that book was recorded. Requires `interval`. Without it, `interval` returns only the buckets that held a capture — a short series means the market is quoted infrequently, not that data is missing."
},
"slug": {
"type": "string",
"description": "Limitless market slug."
},
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Page size (1–1000)."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous response's pagination.next_cursor."
},
"end_time": {
"type": "string",
"description": "End of time as ms-epoch or ISO-8601. History is clamped to your plan's window."
},
"interval": {
"type": "string",
"description": "Downsample bucket — 30s, 1m, 5m, 1h, up to 1d. Returns the newest book in each bucket. Omit for every recorded book change."
},
"start_time": {
"type": "string",
"description": "Start of time as ms-epoch or ISO-8601. History is clamped to your plan's window."
}
}
}| string |
| Market id from polymarket_search_markets. |
| start_time | string | Start of time as ms-epoch or ISO-8601. History is clamped to your plan's window. |
| include_orderbook | boolean | Include the full bid/ask ladder per snapshot (default top-of-book). |
{
"type": "object",
"required": [
"market_id"
],
"properties": {
"coin": {
"enum": [
"btc",
"eth",
"sol",
"xrp",
"doge",
"bnb",
"hype"
],
"type": "string",
"default": "btc",
"description": "Crypto asset. Every account plan reaches all seven; only the keyless demo surface is BTC-only."
},
"fill": {
"enum": [
"ffill",
"none"
],
"type": "string",
"description": "ffill returns ONE ROW PER BUCKET for the whole window, carrying the last captured book into buckets that held no capture. Each row then carries `filled` (0 = a capture, 1 = carried forward) and `as_of_ts`, the moment that book was recorded. Requires `interval`. Without it, `interval` returns only the buckets that held a capture — a short series means the market is quoted infrequently, not that data is missing."
},
"limit": {
"type": "integer",
"maximum": 1000,
"minimum": 1,
"description": "Page size (1–1000)."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous response's pagination.next_cursor."
},
"end_time": {
"type": "string",
"description": "End of time as ms-epoch or ISO-8601. History is clamped to your plan's window."
},
"interval": {
"type": "string",
"description": "Downsample bucket — 30s, 1m, 5m, 1h, up to 1d. Returns the newest book in each bucket. Omit for every recorded book change."
},
"market_id": {
"type": "string",
"description": "Market id from polymarket_search_markets."
},
"start_time": {
"type": "string",
"description": "Start of time as ms-epoch or ISO-8601. History is clamped to your plan's window."
},
"include_orderbook": {
"type": "boolean",
"description": "Include the full bid/ask ladder per snapshot (default top-of-book)."
}
}
}