Crypto & RWA microstructure, liquidity, flow and raw data via Parquet; live metrics via WebSocket.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional API key from https://aperiodic.io/home/api, for your plan's data. Leave it out for the free preview, or sign in with OAuth instead.
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.
Field definitions, intervals, exchanges with their start dates, the plan needed and the free preview window for one dataset.
A dataset id from list_datasets, e.g. "flow" or "raw:trades".
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http market-data https://aperiodic.io/mcp
Headers
X-API-KEY (optional, not in the config above): Optional API key from https://aperiodic.io/home/api, for your plan's data. Leave it out for the free preview, or sign in with OAuth instead.Field definitions, intervals, exchanges with their start dates, the plan needed and the free preview window for one dataset.
| Argument | Type | Description |
|---|---|---|
| dataset* | string | A dataset id from list_datasets, e.g. "flow" or "raw:trades". |
{
"type": "object",
"required": [
"dataset"
],
"properties": {
"dataset": {
"type": "string",
"description": "A dataset id from list_datasets, e.g. \"flow\" or \"raw:trades\"."
}
},
"additionalProperties": false
}The full text of one search result: a dataset with all its fields, a category, or the plans guide.
| Argument | Type | Description |
|---|---|---|
| id* | string | An id from search. |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"description": "An id from search."
}
},
"additionalProperties": false
}Symbol ids on one exchange matching every word of the query, at most 50. Ids look like "perpetual-BTC-USDT:USDT". The free preview symbol is perpetual-BTC-USDT:USDT on binance-futures.
| Argument | Type | Description |
|---|---|---|
| query | string | Words to match, e.g. "BTC USDT" or "ETH perpetual". Empty lists the first 50. |
| exchange* | string |
{
"type": "object",
"required": [
"exchange"
],
"properties": {
"query": {
"type": "string",
"description": "Words to match, e.g. \"BTC USDT\" or \"ETH perpetual\". Empty lists the first 50."
},
"exchange": {
"enum": [
"binance-futures",
"okx-perps",
"hyperliquid-perps"
],
"type": "string"
}
},
"additionalProperties": false
}A handle to one slice of a dataset, not the data: signed Parquet URLs (valid one hour), schema, row counts, per-column min/max/nulls from the Parquet footers, 5 sample rows and a Polars snippet. Load the files in your own code; never paste them into the conversation. Without code, use summarize. Every argument but dataset defaults to the free preview, which needs no API key.
| Argument | Type | Description |
|---|---|---|
| symbol | string | Symbol id from find_symbols. Default perpetual-BTC-USDT:USDT. |
| dataset* | string | A dataset id from list_datasets: a metrics dataset such as "flow", or a raw one such as "raw:trades". |
| end_date | string | YYYY-MM-DD, inclusive. Default: the end of the free preview month. |
| exchange | string | Default binance-futures. |
| interval | string | Metrics only: bar interval. Default 5m. |
| timestamp | string | Metrics only: 'exchange' uses the exchange-reported timestamp (default), 'true' the arrival time at our servers. |
| start_date | string | YYYY-MM-DD, inclusive. Default: the free preview, 2025-05-01 for metrics, 2025-06-01 for raw. |
Every Aperiodic dataset, metrics and raw: id, category, the plan that unlocks it, a one-line description, field count, and whether this caller gets full access or the free preview. Start here.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}How your own code connects to the real-time WebSocket feed: its URL, the subscribe frame for a dataset, exchange, interval and symbols, your plan's limits and a Python client. Never the stream itself. With no dataset, lists what streams and which plans include it.
| Argument | Type | Description |
|---|---|---|
| dataset | string | |
| symbols | array | Symbol ids. Default perpetual-BTC-USDT:USDT. |
| exchange | string | |
| interval | string |
{
"type": "object",
"properties": {
"dataset": {
"enum": [
"ohlcv",
"vtwap",
"basis",
"funding",
"open_interest",
"derivative_price",
"flow",
"trade_size",
"impact",
"range",
"updownticks",
"run_structure",
"returns",
"slippage",
"l1_price",
"l1_imbalance",
"l1_liquidity",
"l2_imbalance",
"l2_liquidity"
],
"type": "string"
},
"symbols": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 50,
"description": "Symbol ids. Default perpetual-BTC-USDT:USDT."
},
"exchange": {
"enum": [
"binance-futures",
"okx-perps",
"hyperliquid-perps"
],
"type": "string"
},
"interval": {
"enum": [
"15s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"4h",
"1d"
],
"type": "string"
}
},
"additionalProperties": false
}Keyword search over every dataset, its fields, the categories and the plans guide. Returns ids, titles and URLs; read one with fetch.
| Argument | Type | Description |
|---|---|---|
| query* | string |
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string"
}
},
"additionalProperties": false
}Statistics worked out on our side, for when you can't run code: per-column count, mean, std, quantiles and range ("stats"), a correlation matrix ("correlation"), or the series resampled to at most 500 points ("resample"). Same slice arguments and plan rules as get_data. Decodes only the columns you name (up to 12, numeric; default the first 6).
| Argument | Type | Description |
|---|---|---|
| points | integer | resample only: buckets across the range. Default 200. |
| symbol | string | Symbol id from find_symbols. Default perpetual-BTC-USDT:USDT. |
| columns | array | Numeric field names from describe_dataset. Default: the first 6. |
| dataset* | string | A dataset id from list_datasets: a metrics dataset such as "flow", or a raw one such as "raw:trades". |
| analysis | string | Default "stats". |
| end_date | string | YYYY-MM-DD, inclusive. Default: the end of the free preview month. |
| exchange | string | Default binance-futures. |
| interval | string | Metrics only: bar interval. Default 5m. |
We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 6, 2026.
{
"type": "object",
"required": [
"dataset"
],
"properties": {
"symbol": {
"type": "string",
"description": "Symbol id from find_symbols. Default perpetual-BTC-USDT:USDT."
},
"dataset": {
"enum": [
"ohlcv",
"vtwap",
"basis",
"funding",
"open_interest",
"derivative_price",
"flow",
"trade_size",
"impact",
"range",
"updownticks",
"run_structure",
"returns",
"slippage",
"l1_price",
"l1_imbalance",
"l1_liquidity",
"l2_imbalance",
"l2_liquidity",
"raw:trades",
"raw:quotes",
"raw:mark_price",
"raw:index_price",
"raw:funding_rate"
],
"type": "string",
"description": "A dataset id from list_datasets: a metrics dataset such as \"flow\", or a raw one such as \"raw:trades\"."
},
"end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD, inclusive. Default: the end of the free preview month."
},
"exchange": {
"enum": [
"binance-futures",
"okx-perps",
"hyperliquid-perps"
],
"type": "string",
"description": "Default binance-futures."
},
"interval": {
"enum": [
"15s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"4h",
"1d"
],
"type": "string",
"description": "Metrics only: bar interval. Default 5m."
},
"timestamp": {
"enum": [
"exchange",
"true"
],
"type": "string",
"description": "Metrics only: 'exchange' uses the exchange-reported timestamp (default), 'true' the arrival time at our servers."
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD, inclusive. Default: the free preview, 2025-05-01 for metrics, 2025-06-01 for raw."
}
},
"additionalProperties": false
}| aggregate | string | resample only: how a bucket is reduced. Default "mean". |
| timestamp | string | Metrics only: 'exchange' uses the exchange-reported timestamp (default), 'true' the arrival time at our servers. |
| start_date | string | YYYY-MM-DD, inclusive. Default: the free preview, 2025-05-01 for metrics, 2025-06-01 for raw. |
{
"type": "object",
"required": [
"dataset"
],
"properties": {
"points": {
"type": "integer",
"maximum": 500,
"minimum": 2,
"description": "resample only: buckets across the range. Default 200."
},
"symbol": {
"type": "string",
"description": "Symbol id from find_symbols. Default perpetual-BTC-USDT:USDT."
},
"columns": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 12,
"description": "Numeric field names from describe_dataset. Default: the first 6."
},
"dataset": {
"enum": [
"ohlcv",
"vtwap",
"basis",
"funding",
"open_interest",
"derivative_price",
"flow",
"trade_size",
"impact",
"range",
"updownticks",
"run_structure",
"returns",
"slippage",
"l1_price",
"l1_imbalance",
"l1_liquidity",
"l2_imbalance",
"l2_liquidity",
"raw:trades",
"raw:quotes",
"raw:mark_price",
"raw:index_price",
"raw:funding_rate"
],
"type": "string",
"description": "A dataset id from list_datasets: a metrics dataset such as \"flow\", or a raw one such as \"raw:trades\"."
},
"analysis": {
"enum": [
"stats",
"correlation",
"resample"
],
"type": "string",
"description": "Default \"stats\"."
},
"end_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD, inclusive. Default: the end of the free preview month."
},
"exchange": {
"enum": [
"binance-futures",
"okx-perps",
"hyperliquid-perps"
],
"type": "string",
"description": "Default binance-futures."
},
"interval": {
"enum": [
"15s",
"30s",
"1m",
"5m",
"15m",
"30m",
"1h",
"4h",
"1d"
],
"type": "string",
"description": "Metrics only: bar interval. Default 5m."
},
"aggregate": {
"enum": [
"mean",
"last",
"sum",
"min",
"max"
],
"type": "string",
"description": "resample only: how a bucket is reduced. Default \"mean\"."
},
"timestamp": {
"enum": [
"exchange",
"true"
],
"type": "string",
"description": "Metrics only: 'exchange' uses the exchange-reported timestamp (default), 'true' the arrival time at our servers."
},
"start_date": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD, inclusive. Default: the free preview, 2025-05-01 for metrics, 2025-06-01 for raw."
}
},
"additionalProperties": false
}