DEX and on-chain data: liquidity pools, token prices, swaps, and trading volume.
DexPaprika MCP Server (com.dexpaprika/dexpaprika)
The com.dexpaprika/dexpaprika MCP server provides on-demand access to DexPaprika’s real-time cryptocurrency and DEX data API. It supports retrieval of liquidity pools, token prices, swaps, and trading volume, with access intended for AI assistants to fetch current token, pool, and DEX data programmatically.
🛠️ Key Features
Real-time DEX and on-chain data
Liquidity pool data
Token price data
Swap data
Trading volume data
Exposes functionality via an MCP server with 17 tools
🚀 Use Cases
Programmatically fetch current token and pool information
Query DEX-related metrics such as swaps and trading volume
Build crypto-analysis integrations that depend on live data
⚡ Developer Benefits
On-demand MCP access to DexPaprika API data
Intended for AI assistants (e.g., Claude) to fetch DEX data programmatically
Uses npm tooling for running the server (global install or via npx)
⚠️ Limitations
Server description only specifies access to DexPaprika DEX and on-chain data (no additional capabilities listed)
List every blockchain network DexPaprika indexes, each row carrying its network id (slug), 24h volume, transaction count, and pool count. Read-only and keyless. Start here (or getCapabilities) to get the exact network slug that nearly every other tool requires as its 'network' argument. Use for 'which chains do you support?', 'is Base/Solana/Arbitrum covered?', or 'what is the slug for Polygon?'. Returns the full array with no pagination or sorting; takes no parameters beyond a short rationale. For platform-wide totals rather than a per-network list use getStats.
Parameters1
rationale
string
required
REQUIRED. 1-2 sentence rationale for this call (e.g. "User asked for X; calling Y to fetch Z"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples.
Raw schema
{
"type": "object",
"properties": {
"rationale": {
"type": "string",
"minLength": 20,
"maxLength": 500,
"description": "REQUIRED. 1-2 sentence rationale for this call (e.g. \"User asked for X; calling Y to fetch Z\"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples."
}
},
"required": [
"rationale"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
getNetworkDexes
List the DEXes (exchanges) operating on one network, such as Uniswap on ethereum or Raydium on solana, returned under 'dexes' with page_info (page, total_pages). Read-only and keyless. Use for 'which DEXes are on Base?', 'does Solana have Orca?', or to get a dex id to feed into getDexPools. Scope is a single network; call getNetworks first for the slug. Params: network (required slug); limit (default 10, max 100); page (default 1, 1-indexed); sort_by (only 'pool'; legacy alias order_by); sort_dir 'asc' or 'desc' (default 'desc'; legacy alias sort).
Parameters8
network
string
required
REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
page
number
optional
OPTIONAL: Page number, 1-indexed. Server accepts page=0 (treated as page=1) for backward compatibility.
limit
number
optional
OPTIONAL: Number of items per page (default: 10, max: 100)
sort_dir
string
optional
OPTIONAL: Sort direction (asc/desc). Canonical parameter name. Defaults to 'desc' if neither sort_dir nor sort is provided. The REST API calls this parameter sort.
sort
string
optional
OPTIONAL: alias of sort_dir; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes sort, so use this name when calling the REST API directly.
sort_by
string
optional
OPTIONAL: Sort field. Canonical parameter name; older tools used order_by. The REST API calls this parameter order_by.
order_by
string
optional
OPTIONAL: alias of sort_by; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes order_by, so use this name when calling the REST API directly.
rationale
string
required
REQUIRED. 1-2 sentence rationale for this call (e.g. "User asked for X; calling Y to fetch Z"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples.
Raw schema
{
"type": "object",
"properties": {
"network": {
"type": "string",
"description": "REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')"
},
"page": {
"type": "number",
"default": 1,
"description": "OPTIONAL: Page number, 1-indexed. Server accepts page=0 (treated as page=1) for backward compatibility."
},
"limit": {
"type": "number",
"default": 10,
"description": "OPTIONAL: Number of items per page (default: 10, max: 100)"
},
"sort_dir": {
"type": "string",
"enum": [
"asc",
"desc"
],
"description": "OPTIONAL: Sort direction (asc/desc). Canonical parameter name. Defaults to 'desc' if neither sort_dir nor sort is provided. The REST API calls this parameter sort."
},
"sort": {
"type": "string",
"enum": [
"asc",
"desc"
],
"description": "OPTIONAL: alias of sort_dir; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes sort, so use this name when calling the REST API directly."
},
"sort_by": {
"type": "string",
"enum": [
"pool"
],
"description": "OPTIONAL: Sort field. Canonical parameter name; older tools used order_by. The REST API calls this parameter order_by."
},
"order_by": {
"type": "string",
"enum": [
"pool"
],
"description": "OPTIONAL: alias of sort_by; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes order_by, so use this name when calling the REST API directly."
},
"rationale": {
"type": "string",
"minLength": 20,
"maxLength": 500,
"description": "REQUIRED. 1-2 sentence rationale for this call (e.g. \"User asked for X; calling Y to fetch Z\"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples."
}
},
"required": [
"network",
"rationale"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
getNetworkPools
Get the top liquidity pools across a whole network, ranked by 24h volume by default, returned under 'results' with has_next_page and next_cursor. Read-only and keyless. This is the primary chain-wide pool discovery tool. Use for 'biggest pools on ethereum', 'top trading pairs on Base', or 'most active pools on Solana'. Narrow to one exchange with getDexPools, or apply numeric/time filters with getNetworkPoolsFilter. Params: network (required slug); limit (default 10, max 100); cursor (pass previous next_cursor to page); sort_by (default 'volume_usd_24h', canonical *_24h fields, alias order_by); sort_dir 'asc' or 'desc' (default 'desc', alias sort).
Parameters8
network
string
required
REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
limit
number
optional
OPTIONAL: Number of items per page (default: 10, max: 100)
cursor
string
optional
OPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page (read `has_next_page` to know if more remain). Replaces the old page number.
sort_dir
string
optional
OPTIONAL: Sort direction (asc/desc). Canonical parameter name. Defaults to 'desc' if neither sort_dir nor sort is provided. The REST API calls this parameter sort.
sort
string
optional
OPTIONAL: alias of sort_dir; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes sort, so use this name when calling the REST API directly.
sort_by
string
optional
OPTIONAL: Sort field. Canonical parameter name. Defaults to 'volume_usd_24h'. Prefer the canonical *_24h names; short legacy names (volume_usd, transactions, last_price_change_usd_24h) are still accepted. The REST API calls this parameter order_by.
order_by
string
optional
OPTIONAL: alias of sort_by; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes order_by, so use this name when calling the REST API directly.
rationale
string
required
REQUIRED. 1-2 sentence rationale for this call (e.g. "User asked for X; calling Y to fetch Z"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples.
Raw schema
{
"type": "object",
"properties": {
"network": {
"type": "string",
"description": "REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')"
},
"limit": {
"type": "number",
"default": 10,
"description": "OPTIONAL: Number of items per page (default: 10, max: 100)"
},
"cursor": {
"type": "string",
"description": "OPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page (read `has_next_page` to know if more remain). Replaces the old page number."
},
"sort_dir": {
"type": "string",
"enum": [
"asc",
"desc"
],
"description": "OPTIONAL: Sort direction (asc/desc). Canonical parameter name. Defaults to 'desc' if neither sort_dir nor sort is provided. The REST API calls this parameter sort."
},
"sort": {
"type": "string",
"enum": [
"asc",
"desc"
],
"description": "OPTIONAL: alias of sort_dir; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes sort, so use this name when calling the REST API directly."
},
"sort_by": {
"type": "string",
"enum": [
"volume_usd_24h",
"volume_usd_7d",
"volume_usd_30d",
"liquidity_usd",
"txns_24h",
"created_at",
"price_usd",
"price_change_percentage_24h",
"volume_usd",
"transactions",
"last_price_change_usd_24h",
"volume_24h",
"volume_7d",
"volume_30d",
"liquidity"
],
"description": "OPTIONAL: Sort field. Canonical parameter name. Defaults to 'volume_usd_24h'. Prefer the canonical *_24h names; short legacy names (volume_usd, transactions, last_price_change_usd_24h) are still accepted. The REST API calls this parameter order_by."
},
"order_by": {
"type": "string",
"enum": [
"volume_usd_24h",
"volume_usd_7d",
"volume_usd_30d",
"liquidity_usd",
"txns_24h",
"created_at",
"price_usd",
"price_change_percentage_24h",
"volume_usd",
"transactions",
"last_price_change_usd_24h",
"volume_24h",
"volume_7d",
"volume_30d",
"liquidity"
],
"description": "OPTIONAL: alias of sort_by; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes order_by, so use this name when calling the REST API directly."
},
"rationale": {
"type": "string",
"minLength": 20,
"maxLength": 500,
"description": "REQUIRED. 1-2 sentence rationale for this call (e.g. \"User asked for X; calling Y to fetch Z\"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples."
}
},
"required": [
"network",
"rationale"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
getDexPools
Get the pools belonging to one specific DEX on one network, e.g. all Uniswap v3 pools on ethereum, returned under 'pools' with page_info. Read-only and keyless. Narrower than getNetworkPools (a single exchange, not the whole chain). Use for 'show me Raydium pools', 'top pairs on PancakeSwap', or 'liquidity on Orca'. Get the dex id from getNetworkDexes or search first. Params: network (required slug); dex (required id, e.g. 'uniswap_v3'); limit (default 10, max 100); page (default 1); sort_by one of 'volume_usd','price_usd','transactions','last_price_change_usd_24h','created_at' (default 'volume_usd', alias order_by); sort_dir 'asc'/'desc' (default 'desc', alias sort).
Parameters9
network
string
required
REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
dex
string
required
REQUIRED: DEX identifier from getNetworkDexes (e.g., 'uniswap_v3')
page
number
optional
OPTIONAL: Page number, 1-indexed. Server accepts page=0 (treated as page=1) for backward compatibility.
limit
number
optional
OPTIONAL: Number of items per page (default: 10, max: 100)
sort_dir
string
optional
OPTIONAL: Sort direction (asc/desc). Canonical parameter name. Defaults to 'desc' if neither sort_dir nor sort is provided. The REST API calls this parameter sort.
sort
string
optional
OPTIONAL: alias of sort_dir; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes sort, so use this name when calling the REST API directly.
sort_by
string
optional
OPTIONAL: Sort field. Canonical parameter name. Defaults to 'volume_usd' if neither sort_by nor order_by is provided. The REST API calls this parameter order_by.
order_by
string
optional
OPTIONAL: alias of sort_by; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes order_by, so use this name when calling the REST API directly.
rationale
string
required
REQUIRED. 1-2 sentence rationale for this call (e.g. "User asked for X; calling Y to fetch Z"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples.
Raw schema
{
"type": "object",
"properties": {
"network": {
"type": "string",
"description": "REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')"
},
"dex": {
"type": "string",
"description": "REQUIRED: DEX identifier from getNetworkDexes (e.g., 'uniswap_v3')"
},
"page": {
"type": "number",
"default": 1,
"description": "OPTIONAL: Page number, 1-indexed. Server accepts page=0 (treated as page=1) for backward compatibility."
},
"limit": {
"type": "number",
"default": 10,
"description": "OPTIONAL: Number of items per page (default: 10, max: 100)"
},
"sort_dir": {
"type": "string",
"enum": [
"asc",
"desc"
],
"description": "OPTIONAL: Sort direction (asc/desc). Canonical parameter name. Defaults to 'desc' if neither sort_dir nor sort is provided. The REST API calls this parameter sort."
},
"sort": {
"type": "string",
"enum": [
"asc",
"desc"
],
"description": "OPTIONAL: alias of sort_dir; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes sort, so use this name when calling the REST API directly."
},
"sort_by": {
"type": "string",
"enum": [
"volume_usd",
"price_usd",
"transactions",
"last_price_change_usd_24h",
"created_at"
],
"description": "OPTIONAL: Sort field. Canonical parameter name. Defaults to 'volume_usd' if neither sort_by nor order_by is provided. The REST API calls this parameter order_by."
},
"order_by": {
"type": "string",
"enum": [
"volume_usd",
"price_usd",
"transactions",
"last_price_change_usd_24h",
"created_at"
],
"description": "OPTIONAL: alias of sort_by; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes order_by, so use this name when calling the REST API directly."
},
"rationale": {
"type": "string",
"minLength": 20,
"maxLength": 500,
"description": "REQUIRED. 1-2 sentence rationale for this call (e.g. \"User asked for X; calling Y to fetch Z\"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples."
}
},
"required": [
"network",
"dex",
"rationale"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
getNetworkPoolsFilter
Get pools on one network filtered by numeric thresholds, returned under 'results' with has_next_page and next_cursor. Read-only and keyless. Choose this over getNetworkPools when the user gives numeric constraints or a time window. Use for 'pools over $1M liquidity on Base', 'pools created in the last 24h', or 'high-volume low-liquidity pairs'. Optional filters (AND-combined): volume_24h_min/max, volume_7d_min/max, liquidity_usd_min/max, txns_24h_min, created_after/created_before (Unix timestamps). Also network (required); limit (default 50, max 100); cursor to page; sort_by (default 'volume_usd_24h', alias order_by); sort_dir asc/desc (default 'desc', alias sort).
Parameters17
network
string
required
REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
limit
number
optional
OPTIONAL: Items per page (default: 50, max: 100)
cursor
string
optional
OPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page. Replaces the old page number.
volume_24h_min
number
optional
OPTIONAL: Minimum 24h volume in USD
volume_24h_max
number
optional
OPTIONAL: Maximum 24h volume in USD
volume_7d_min
number
optional
OPTIONAL: Minimum 7d volume in USD
volume_7d_max
number
optional
OPTIONAL: Maximum 7d volume in USD
liquidity_usd_min
number
optional
OPTIONAL: Minimum pool liquidity in USD
liquidity_usd_max
number
optional
OPTIONAL: Maximum pool liquidity in USD
txns_24h_min
number
optional
OPTIONAL: Minimum transactions in 24h
created_after
number
optional
OPTIONAL: Only pools created after this UNIX timestamp
created_before
number
optional
OPTIONAL: Only pools created before this UNIX timestamp
sort_by
string
optional
OPTIONAL: Sort field. Canonical parameter name. Defaults to 'volume_usd_24h'. Prefer the canonical *_24h names; short legacy names (volume_24h, volume_7d, liquidity) are still accepted. The REST API calls this parameter order_by.
order_by
string
optional
OPTIONAL: alias of sort_by; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes order_by, so use this name when calling the REST API directly.
sort_dir
string
optional
OPTIONAL: Sort direction (asc/desc). Canonical parameter name. Defaults to 'desc' if neither sort_dir nor sort is provided. The REST API calls this parameter sort.
sort
string
optional
OPTIONAL: alias of sort_dir; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes sort, so use this name when calling the REST API directly.
rationale
string
required
REQUIRED. 1-2 sentence rationale for this call (e.g. "User asked for X; calling Y to fetch Z"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples.
Raw schema
{
"type": "object",
"properties": {
"network": {
"type": "string",
"description": "REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')"
},
"limit": {
"type": "number",
"default": 50,
"description": "OPTIONAL: Items per page (default: 50, max: 100)"
},
"cursor": {
"type": "string",
"description": "OPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page. Replaces the old page number."
},
"volume_24h_min": {
"type": "number",
"description": "OPTIONAL: Minimum 24h volume in USD"
},
"volume_24h_max": {
"type": "number",
"description": "OPTIONAL: Maximum 24h volume in USD"
},
"volume_7d_min": {
"type": "number",
"description": "OPTIONAL: Minimum 7d volume in USD"
},
"volume_7d_max": {
"type": "number",
"description": "OPTIONAL: Maximum 7d volume in USD"
},
"liquidity_usd_min": {
"type": "number",
"description": "OPTIONAL: Minimum pool liquidity in USD"
},
"liquidity_usd_max": {
"type": "number",
"description": "OPTIONAL: Maximum pool liquidity in USD"
},
"txns_24h_min": {
"type": "number",
"description": "OPTIONAL: Minimum transactions in 24h"
},
"created_after": {
"type": "number",
"description": "OPTIONAL: Only pools created after this UNIX timestamp"
},
"created_before": {
"type": "number",
"description": "OPTIONAL: Only pools created before this UNIX timestamp"
},
"sort_by": {
"type": "string",
"enum": [
"volume_usd_24h",
"volume_usd_7d",
"volume_usd_30d",
"liquidity_usd",
"txns_24h",
"created_at",
"price_usd",
"price_change_percentage_24h",
"volume_usd",
"transactions",
"last_price_change_usd_24h",
"volume_24h",
"volume_7d",
"volume_30d",
"liquidity"
],
"description": "OPTIONAL: Sort field. Canonical parameter name. Defaults to 'volume_usd_24h'. Prefer the canonical *_24h names; short legacy names (volume_24h, volume_7d, liquidity) are still accepted. The REST API calls this parameter order_by."
},
"order_by": {
"type": "string",
"enum": [
"volume_usd_24h",
"volume_usd_7d",
"volume_usd_30d",
"liquidity_usd",
"txns_24h",
"created_at",
"price_usd",
"price_change_percentage_24h",
"volume_usd",
"transactions",
"last_price_change_usd_24h",
"volume_24h",
"volume_7d",
"volume_30d",
"liquidity"
],
"description": "OPTIONAL: alias of sort_by; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes order_by, so use this name when calling the REST API directly."
},
"sort_dir": {
"type": "string",
"enum": [
"asc",
"desc"
],
"description": "OPTIONAL: Sort direction (asc/desc). Canonical parameter name. Defaults to 'desc' if neither sort_dir nor sort is provided. The REST API calls this parameter sort."
},
"sort": {
"type": "string",
"enum": [
"asc",
"desc"
],
"description": "OPTIONAL: alias of sort_dir; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes sort, so use this name when calling the REST API directly."
},
"rationale": {
"type": "string",
"minLength": 20,
"maxLength": 500,
"description": "REQUIRED. 1-2 sentence rationale for this call (e.g. \"User asked for X; calling Y to fetch Z\"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples."
}
},
"required": [
"network",
"rationale"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
getPoolDetails
Get the full current snapshot for one pool by address: its two tokens, current price, liquidity/TVL, 24h volume, and transaction counts, returned as a single pool object (not a list). Read-only and keyless. Use after search or getNetworkPools surfaces a pool, or for 'price/TVL of this pool?' or 'details for pool 0x...'. Returns live values only; for historical candles use getPoolOHLCV, and for the raw swap feed use getPoolTransactions. Params: network (required slug); pool_address (required, e.g. '0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640'); inversed (optional bool, default false, flips the token price ratio to token1/token0).
Parameters4
network
string
required
REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
pool_address
string
required
REQUIRED: Pool address or identifier (e.g., '0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640')
inversed
boolean
optional
OPTIONAL: Whether to invert the price ratio (default: false)
rationale
string
required
REQUIRED. 1-2 sentence rationale for this call (e.g. "User asked for X; calling Y to fetch Z"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples.
Raw schema
{
"type": "object",
"properties": {
"network": {
"type": "string",
"description": "REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')"
},
"pool_address": {
"type": "string",
"description": "REQUIRED: Pool address or identifier (e.g., '0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640')"
},
"inversed": {
"type": "boolean",
"default": false,
"description": "OPTIONAL: Whether to invert the price ratio (default: false)"
},
"rationale": {
"type": "string",
"minLength": 20,
"maxLength": 500,
"description": "REQUIRED. 1-2 sentence rationale for this call (e.g. \"User asked for X; calling Y to fetch Z\"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples."
}
},
"required": [
"network",
"pool_address",
"rationale"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
getPoolOHLCV
Get historical OHLCV candles (open, high, low, close, volume) for one pool over a time range, returned as a time-series array. Read-only and keyless. Use for 'price history of this pair', 'hourly chart for the last week', 'candles since Jan 1', or backtesting; for the single current price use getPoolDetails instead. Params: network (required); pool_address (required); start (required; Unix timestamp, RFC3339, or yyyy-mm-dd); end (optional, capped to 1 year after start); interval one of '1m','5m','10m','15m','30m','1h','6h','12h','24h' (default '24h'); limit (default 100, max 366 candles); inversed (optional bool, default false).
Parameters8
network
string
required
REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
pool_address
string
required
REQUIRED: Pool address or identifier
start
string
required
REQUIRED: Start time. RFC3339 recommended (e.g. '2024-01-01T00:00:00Z'). Also accepts Unix epoch seconds and YYYY-MM-DD (treated as 00:00:00 UTC).
end
string
optional
OPTIONAL: End time for historical data (max 1 year from start)
limit
number
optional
OPTIONAL: Number of OHLCV data points to retrieve (default: 100, max: 366). One row per `interval`.
interval
string
optional
OPTIONAL: Interval granularity (default: '24h')
inversed
boolean
optional
OPTIONAL: Whether to invert the price ratio for alternative pair perspective (default: false)
rationale
string
required
REQUIRED. 1-2 sentence rationale for this call (e.g. "User asked for X; calling Y to fetch Z"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples.
Raw schema
{
"type": "object",
"properties": {
"network": {
"type": "string",
"description": "REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')"
},
"pool_address": {
"type": "string",
"description": "REQUIRED: Pool address or identifier"
},
"start": {
"type": "string",
"description": "REQUIRED: Start time. RFC3339 recommended (e.g. '2024-01-01T00:00:00Z'). Also accepts Unix epoch seconds and YYYY-MM-DD (treated as 00:00:00 UTC)."
},
"end": {
"type": "string",
"description": "OPTIONAL: End time for historical data (max 1 year from start)"
},
"limit": {
"type": "number",
"default": 100,
"description": "OPTIONAL: Number of OHLCV data points to retrieve (default: 100, max: 366). One row per `interval`."
},
"interval": {
"type": "string",
"enum": [
"1m",
"5m",
"10m",
"15m",
"30m",
"1h",
"6h",
"12h",
"24h"
],
"default": "24h",
"description": "OPTIONAL: Interval granularity (default: '24h')"
},
"inversed": {
"type": "boolean",
"default": false,
"description": "OPTIONAL: Whether to invert the price ratio for alternative pair perspective (default: false)"
},
"rationale": {
"type": "string",
"minLength": 20,
"maxLength": 500,
"description": "REQUIRED. 1-2 sentence rationale for this call (e.g. \"User asked for X; calling Y to fetch Z\"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples."
}
},
"required": [
"network",
"pool_address",
"start",
"rationale"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
getPoolTransactions
Get one pool's recent individual swap transactions, newest first, returned under 'transactions' (paginate with page, or a cursor). Read-only and keyless. These are per-trade records, not aggregated candles (use getPoolOHLCV) or a summary snapshot (use getPoolDetails). Use for 'recent trades on this pool', 'who swapped in the last hour', or 'raw transaction feed'. Params: network (required); pool_address (required); limit (default 10, max 100); page (default 1, up to 100 pages) or cursor (a transaction id); from (optional Unix seconds, inclusive, capped to the last 7 days); to (optional Unix seconds, exclusive, must be after from).
Parameters8
network
string
required
REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
pool_address
string
required
REQUIRED: Pool address or identifier
page
number
optional
OPTIONAL: Page number, 1-indexed. Up to 100 pages. Server accepts page=0 (treated as page=1) for backward compatibility.
limit
number
optional
OPTIONAL: Number of items per page (default: 10, max: 100)
cursor
string
optional
OPTIONAL: Transaction ID used for cursor-based pagination
from
number
optional
OPTIONAL: Start of time-range filter, Unix epoch SECONDS (inclusive). Window is capped to last 7 days. Note: getPoolOHLCV uses `start` (string) for the same concept — getPoolTransactions uses numeric epoch for tighter filtering.
to
number
optional
OPTIONAL: Filter transactions up to this UNIX timestamp (exclusive). Must be after 'from'.
rationale
string
required
REQUIRED. 1-2 sentence rationale for this call (e.g. "User asked for X; calling Y to fetch Z"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples.
Raw schema
{
"type": "object",
"properties": {
"network": {
"type": "string",
"description": "REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')"
},
"pool_address": {
"type": "string",
"description": "REQUIRED: Pool address or identifier"
},
"page": {
"type": "number",
"default": 1,
"description": "OPTIONAL: Page number, 1-indexed. Up to 100 pages. Server accepts page=0 (treated as page=1) for backward compatibility."
},
"limit": {
"type": "number",
"default": 10,
"description": "OPTIONAL: Number of items per page (default: 10, max: 100)"
},
"cursor": {
"type": "string",
"description": "OPTIONAL: Transaction ID used for cursor-based pagination"
},
"from": {
"type": "number",
"description": "OPTIONAL: Start of time-range filter, Unix epoch SECONDS (inclusive). Window is capped to last 7 days. Note: getPoolOHLCV uses `start` (string) for the same concept — getPoolTransactions uses numeric epoch for tighter filtering."
},
"to": {
"type": "number",
"description": "OPTIONAL: Filter transactions up to this UNIX timestamp (exclusive). Must be after 'from'."
},
"rationale": {
"type": "string",
"minLength": 20,
"maxLength": 500,
"description": "REQUIRED. 1-2 sentence rationale for this call (e.g. \"User asked for X; calling Y to fetch Z\"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples."
}
},
"required": [
"network",
"pool_address",
"rationale"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
getTokenDetails
Get one token's data and metadata by contract address on one network: multi-timeframe price and volume metrics, plus name, website, Twitter, and Telegram links, returned as a single token object. Read-only and keyless. Use for 'price and volume for 0x... on Base' or 'tell me about this token'. If you only have a symbol like WETH, call search first to resolve the address and network. For many tokens' prices at once use getTokenMultiPrices; for the pools holding this token use getTokenPools. Params: network (required slug); token_address (required contract address, e.g. 'JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN' on solana).
Parameters3
network
string
required
REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
token_address
string
required
REQUIRED: Token contract address (e.g., 'JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN' for Jupiter on Solana)
rationale
string
required
REQUIRED. 1-2 sentence rationale for this call (e.g. "User asked for X; calling Y to fetch Z"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples.
Raw schema
{
"type": "object",
"properties": {
"network": {
"type": "string",
"description": "REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')"
},
"token_address": {
"type": "string",
"description": "REQUIRED: Token contract address (e.g., 'JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN' for Jupiter on Solana)"
},
"rationale": {
"type": "string",
"minLength": 20,
"maxLength": 500,
"description": "REQUIRED. 1-2 sentence rationale for this call (e.g. \"User asked for X; calling Y to fetch Z\"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples."
}
},
"required": [
"network",
"token_address",
"rationale"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
getTokenPools
Get the liquidity pools that contain a specific token on one network, returned under 'results' with has_next_page and next_cursor. Read-only and keyless. Use for 'which pools hold WETH on ethereum?' or 'liquidity venues for 0x...'. Network-scoped, so run search first if unsure of the network; unknown addresses return empty results, not an error. For the token's own price use getTokenDetails. Params: network (required); token_address (required); limit (default 10, max 100); cursor to page; sort_by (default 'volume_usd_24h', alias order_by); sort_dir asc/desc (default 'desc', alias sort). Extra params such as inversed or paired_token_address are unsupported and error.
Parameters13
network
string
required
REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
token_address
string
required
REQUIRED: Token contract address
limit
number
optional
OPTIONAL: Number of items per page (default: 10, max: 100)
cursor
string
optional
OPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page (read `has_next_page` to know if more remain). Replaces the old page number.
sort_dir
string
optional
OPTIONAL: Sort direction (asc/desc). Canonical parameter name. Defaults to 'desc' if neither sort_dir nor sort is provided. The REST API calls this parameter sort.
sort
string
optional
OPTIONAL: alias of sort_dir; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes sort, so use this name when calling the REST API directly.
sort_by
string
optional
OPTIONAL: Sort field. Canonical parameter name. Defaults to 'volume_usd_24h'. Prefer the canonical *_24h names; short legacy names (volume_usd, transactions, last_price_change_usd_24h) are still accepted. The REST API calls this parameter order_by.
order_by
string
optional
OPTIONAL: alias of sort_by; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes order_by, so use this name when calling the REST API directly.
inversed
boolean
optional
REMOVED: the pair-perspective flip is no longer supported by the API; the pools/search replacement returns pool-perspective metrics only. Supplying true returns an error. For a single pool, getPoolDetails with inversed=true still flips the perspective.
reorder
boolean
optional
REMOVED alias for inversed. No longer supported by the API; supplying true returns an error.
paired_token_address
string
optional
REMOVED: the second-token pair filter is no longer supported by the API. Supplying it returns an error. Filter client-side on each result's tokens[] instead.
address
string
optional
REMOVED alias for paired_token_address. No longer supported by the API; supplying it returns an error.
rationale
string
required
REQUIRED. 1-2 sentence rationale for this call (e.g. "User asked for X; calling Y to fetch Z"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples.
Raw schema
{
"type": "object",
"properties": {
"network": {
"type": "string",
"description": "REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')"
},
"token_address": {
"type": "string",
"description": "REQUIRED: Token contract address"
},
"limit": {
"type": "number",
"default": 10,
"description": "OPTIONAL: Number of items per page (default: 10, max: 100)"
},
"cursor": {
"type": "string",
"description": "OPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page (read `has_next_page` to know if more remain). Replaces the old page number."
},
"sort_dir": {
"type": "string",
"enum": [
"asc",
"desc"
],
"description": "OPTIONAL: Sort direction (asc/desc). Canonical parameter name. Defaults to 'desc' if neither sort_dir nor sort is provided. The REST API calls this parameter sort."
},
"sort": {
"type": "string",
"enum": [
"asc",
"desc"
],
"description": "OPTIONAL: alias of sort_dir; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes sort, so use this name when calling the REST API directly."
},
"sort_by": {
"type": "string",
"enum": [
"volume_usd_24h",
"volume_usd_7d",
"volume_usd_30d",
"liquidity_usd",
"txns_24h",
"created_at",
"price_usd",
"price_change_percentage_24h",
"volume_usd",
"transactions",
"last_price_change_usd_24h",
"volume_24h",
"volume_7d",
"volume_30d",
"liquidity"
],
"description": "OPTIONAL: Sort field. Canonical parameter name. Defaults to 'volume_usd_24h'. Prefer the canonical *_24h names; short legacy names (volume_usd, transactions, last_price_change_usd_24h) are still accepted. The REST API calls this parameter order_by."
},
"order_by": {
"type": "string",
"enum": [
"volume_usd_24h",
"volume_usd_7d",
"volume_usd_30d",
"liquidity_usd",
"txns_24h",
"created_at",
"price_usd",
"price_change_percentage_24h",
"volume_usd",
"transactions",
"last_price_change_usd_24h",
"volume_24h",
"volume_7d",
"volume_30d",
"liquidity"
],
"description": "OPTIONAL: alias of sort_by; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes order_by, so use this name when calling the REST API directly."
},
"inversed": {
"type": "boolean",
"description": "REMOVED: the pair-perspective flip is no longer supported by the API; the pools/search replacement returns pool-perspective metrics only. Supplying true returns an error. For a single pool, getPoolDetails with inversed=true still flips the perspective."
},
"reorder": {
"type": "boolean",
"description": "REMOVED alias for inversed. No longer supported by the API; supplying true returns an error."
},
"paired_token_address": {
"type": "string",
"description": "REMOVED: the second-token pair filter is no longer supported by the API. Supplying it returns an error. Filter client-side on each result's tokens[] instead."
},
"address": {
"type": "string",
"description": "REMOVED alias for paired_token_address. No longer supported by the API; supplying it returns an error."
},
"rationale": {
"type": "string",
"minLength": 20,
"maxLength": 500,
"description": "REQUIRED. 1-2 sentence rationale for this call (e.g. \"User asked for X; calling Y to fetch Z\"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples."
}
},
"required": [
"network",
"token_address",
"rationale"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
getTopTokens
Get the top tokens on one network ranked by volume, liquidity, transactions, FDV, or 24h price change, returned under 'results' with has_next_page and next_cursor. Read-only and keyless. Use for 'top gainers on Solana', 'highest-volume tokens on Base', or 'biggest tokens by FDV on ethereum'. For arbitrary numeric filters or a time window use filterNetworkTokens instead. Params: network (required slug); limit (default 50, max 100); cursor (pass previous next_cursor to page); sort_by (default 'volume_usd_24h', alias order_by), noting that ranking by raw price is unsupported and silently falls back to volume; sort_dir asc/desc (default 'desc', alias sort).
Parameters8
network
string
required
REQUIRED: Network ID from getNetworks
limit
number
optional
OPTIONAL: Items per page (default: 50, max: 100)
cursor
string
optional
OPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page. Replaces the old page number.
sort_by
string
optional
OPTIONAL: Ranking field. Defaults to 'volume_usd_24h'. Prefer the canonical names (volume_usd_24h, liquidity_usd, txns_24h, fdv_usd, price_change_percentage_24h); short legacy names are still accepted. Note: ordering by price is not supported and falls back to volume. The REST API calls this parameter order_by.
order_by
string
optional
OPTIONAL: alias of sort_by; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes order_by, so use this name when calling the REST API directly.
sort_dir
string
optional
OPTIONAL: Sort direction (asc/desc). Canonical parameter name. Defaults to 'desc' if neither sort_dir nor sort is provided. The REST API calls this parameter sort.
sort
string
optional
OPTIONAL: alias of sort_dir; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes sort, so use this name when calling the REST API directly.
rationale
string
required
REQUIRED. 1-2 sentence rationale for this call (e.g. "User asked for X; calling Y to fetch Z"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples.
Raw schema
{
"type": "object",
"properties": {
"network": {
"type": "string",
"description": "REQUIRED: Network ID from getNetworks"
},
"limit": {
"type": "number",
"default": 50,
"description": "OPTIONAL: Items per page (default: 50, max: 100)"
},
"cursor": {
"type": "string",
"description": "OPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page. Replaces the old page number."
},
"sort_by": {
"type": "string",
"enum": [
"volume_usd_24h",
"volume_usd_7d",
"volume_usd_30d",
"liquidity_usd",
"txns_24h",
"fdv_usd",
"created_at",
"price_change_percentage_24h",
"volume_24h",
"volume_7d",
"volume_30d",
"txns",
"price_change",
"fdv",
"price_usd"
],
"description": "OPTIONAL: Ranking field. Defaults to 'volume_usd_24h'. Prefer the canonical names (volume_usd_24h, liquidity_usd, txns_24h, fdv_usd, price_change_percentage_24h); short legacy names are still accepted. Note: ordering by price is not supported and falls back to volume. The REST API calls this parameter order_by."
},
"order_by": {
"type": "string",
"enum": [
"volume_usd_24h",
"volume_usd_7d",
"volume_usd_30d",
"liquidity_usd",
"txns_24h",
"fdv_usd",
"created_at",
"price_change_percentage_24h",
"volume_24h",
"volume_7d",
"volume_30d",
"txns",
"price_change",
"fdv",
"price_usd"
],
"description": "OPTIONAL: alias of sort_by; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes order_by, so use this name when calling the REST API directly."
},
"sort_dir": {
"type": "string",
"enum": [
"asc",
"desc"
],
"description": "OPTIONAL: Sort direction (asc/desc). Canonical parameter name. Defaults to 'desc' if neither sort_dir nor sort is provided. The REST API calls this parameter sort."
},
"sort": {
"type": "string",
"enum": [
"asc",
"desc"
],
"description": "OPTIONAL: alias of sort_dir; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes sort, so use this name when calling the REST API directly."
},
"rationale": {
"type": "string",
"minLength": 20,
"maxLength": 500,
"description": "REQUIRED. 1-2 sentence rationale for this call (e.g. \"User asked for X; calling Y to fetch Z\"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples."
}
},
"required": [
"network",
"rationale"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
filterNetworkTokens
Get tokens on one network matching numeric thresholds, returned under 'results' with has_next_page and next_cursor. Read-only and keyless. Choose this over getTopTokens when the user gives numeric constraints or a time window. Use for 'tokens with FDV over $10M on Base', 'newly created tokens today', or 'low-liquidity high-volume tokens'. Optional filters (AND-combined): volume_24h_min/max, liquidity_usd_min/max, fdv_min/max, txns_24h_min, created_after/created_before (Unix timestamps). Also network (required); limit (default 50, max 100); cursor to page; sort_by (default 'volume_usd_24h', alias order_by); sort_dir asc/desc (default 'desc', alias sort).
Parameters17
network
string
required
REQUIRED: Network ID from getNetworks
limit
number
optional
OPTIONAL: Items per page (default: 50, max: 100)
cursor
string
optional
OPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page. Replaces the old page number.
volume_24h_min
number
optional
OPTIONAL: Minimum 24h volume in USD
volume_24h_max
number
optional
OPTIONAL: Maximum 24h volume in USD
liquidity_usd_min
number
optional
OPTIONAL: Minimum token liquidity in USD
liquidity_usd_max
number
optional
OPTIONAL: Maximum token liquidity in USD
fdv_min
number
optional
OPTIONAL: Minimum FDV in USD
fdv_max
number
optional
OPTIONAL: Maximum FDV in USD
txns_24h_min
number
optional
OPTIONAL: Minimum transactions in 24h
created_after
number
optional
OPTIONAL: Only tokens created after this UNIX timestamp
created_before
number
optional
OPTIONAL: Only tokens created before this UNIX timestamp
sort_by
string
optional
OPTIONAL: Sort field. Defaults to 'volume_usd_24h'. Prefer the canonical names; short legacy names are still accepted. The REST API calls this parameter order_by.
order_by
string
optional
OPTIONAL: alias of sort_by; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes order_by, so use this name when calling the REST API directly.
sort_dir
string
optional
OPTIONAL: Sort direction (asc/desc). Canonical parameter name. Defaults to 'desc' if neither sort_dir nor sort is provided. The REST API calls this parameter sort.
sort
string
optional
OPTIONAL: alias of sort_dir; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes sort, so use this name when calling the REST API directly.
rationale
string
required
REQUIRED. 1-2 sentence rationale for this call (e.g. "User asked for X; calling Y to fetch Z"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples.
Raw schema
{
"type": "object",
"properties": {
"network": {
"type": "string",
"description": "REQUIRED: Network ID from getNetworks"
},
"limit": {
"type": "number",
"default": 50,
"description": "OPTIONAL: Items per page (default: 50, max: 100)"
},
"cursor": {
"type": "string",
"description": "OPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page. Replaces the old page number."
},
"volume_24h_min": {
"type": "number",
"description": "OPTIONAL: Minimum 24h volume in USD"
},
"volume_24h_max": {
"type": "number",
"description": "OPTIONAL: Maximum 24h volume in USD"
},
"liquidity_usd_min": {
"type": "number",
"description": "OPTIONAL: Minimum token liquidity in USD"
},
"liquidity_usd_max": {
"type": "number",
"description": "OPTIONAL: Maximum token liquidity in USD"
},
"fdv_min": {
"type": "number",
"description": "OPTIONAL: Minimum FDV in USD"
},
"fdv_max": {
"type": "number",
"description": "OPTIONAL: Maximum FDV in USD"
},
"txns_24h_min": {
"type": "number",
"description": "OPTIONAL: Minimum transactions in 24h"
},
"created_after": {
"type": "number",
"description": "OPTIONAL: Only tokens created after this UNIX timestamp"
},
"created_before": {
"type": "number",
"description": "OPTIONAL: Only tokens created before this UNIX timestamp"
},
"sort_by": {
"type": "string",
"enum": [
"volume_usd_24h",
"volume_usd_7d",
"volume_usd_30d",
"liquidity_usd",
"txns_24h",
"fdv_usd",
"created_at",
"price_change_percentage_24h",
"volume_24h",
"volume_7d",
"volume_30d",
"txns",
"price_change",
"fdv",
"price_usd"
],
"description": "OPTIONAL: Sort field. Defaults to 'volume_usd_24h'. Prefer the canonical names; short legacy names are still accepted. The REST API calls this parameter order_by."
},
"order_by": {
"type": "string",
"enum": [
"volume_usd_24h",
"volume_usd_7d",
"volume_usd_30d",
"liquidity_usd",
"txns_24h",
"fdv_usd",
"created_at",
"price_change_percentage_24h",
"volume_24h",
"volume_7d",
"volume_30d",
"txns",
"price_change",
"fdv",
"price_usd"
],
"description": "OPTIONAL: alias of sort_by; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes order_by, so use this name when calling the REST API directly."
},
"sort_dir": {
"type": "string",
"enum": [
"asc",
"desc"
],
"description": "OPTIONAL: Sort direction (asc/desc). Canonical parameter name. Defaults to 'desc' if neither sort_dir nor sort is provided. The REST API calls this parameter sort."
},
"sort": {
"type": "string",
"enum": [
"asc",
"desc"
],
"description": "OPTIONAL: alias of sort_dir; both are accepted. Not deprecated at the REST layer: api.dexpaprika.com itself takes sort, so use this name when calling the REST API directly."
},
"rationale": {
"type": "string",
"minLength": 20,
"maxLength": 500,
"description": "REQUIRED. 1-2 sentence rationale for this call (e.g. \"User asked for X; calling Y to fetch Z\"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples."
}
},
"required": [
"network",
"rationale"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
getTokenMultiPrices
Get current USD prices for up to 10 tokens on the same network in one batched call, returned as a prices array plus a missing_tokens list. Read-only and keyless. Tokens that cannot be priced come back in missing_tokens rather than being dropped, so check that list for partial failures. Use for 'prices for these tokens', 'compare the price of X, Y and Z', or building a portfolio/dashboard snapshot. For one token with full metadata and multi-timeframe stats use getTokenDetails. Params: network (required slug, all tokens must share it); tokens (required array of 1 to 10 contract addresses).
Parameters3
network
string
required
REQUIRED: Network ID from getNetworks
tokens
array
required
REQUIRED: Up to 10 token contract addresses on the same network.
rationale
string
required
REQUIRED. 1-2 sentence rationale for this call (e.g. "User asked for X; calling Y to fetch Z"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples.
Raw schema
{
"type": "object",
"properties": {
"network": {
"type": "string",
"description": "REQUIRED: Network ID from getNetworks"
},
"tokens": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"maxItems": 10,
"description": "REQUIRED: Up to 10 token contract addresses on the same network."
},
"rationale": {
"type": "string",
"minLength": 20,
"maxLength": 500,
"description": "REQUIRED. 1-2 sentence rationale for this call (e.g. \"User asked for X; calling Y to fetch Z\"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples."
}
},
"required": [
"network",
"tokens",
"rationale"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
search
Search across ALL networks at once for tokens, pools, and DEXes by name, symbol, or address, returning three arrays: 'tokens', 'pools', and 'dexes'. Read-only and keyless. This is the cross-chain entry point when you do not yet know which network something lives on; once you have a network slug from the results, switch to the network-scoped tools. Use for 'find PEPE', 'what is the address for USDC', or 'which chain is this token on?'. No matches returns empty arrays, not an error. Params: query (required; a name, symbol, or contract address, e.g. 'uniswap', 'bitcoin', or '0x...'); limit (optional, caps results per category, applied client-side).
Parameters3
query
string
required
REQUIRED: Search term (e.g., 'uniswap', 'bitcoin', 'ethereum', or a token address).
limit
number
optional
OPTIONAL: Cap items returned per category (tokens, pools, dexes). Upstream returns all matches by default; this client-side slice keeps payloads small for agents. Applies independently to each category.
rationale
string
required
REQUIRED. 1-2 sentence rationale for this call (e.g. "User asked for X; calling Y to fetch Z"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples.
Raw schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "REQUIRED: Search term (e.g., 'uniswap', 'bitcoin', 'ethereum', or a token address)."
},
"limit": {
"type": "number",
"description": "OPTIONAL: Cap items returned per category (tokens, pools, dexes). Upstream returns all matches by default; this client-side slice keeps payloads small for agents. Applies independently to each category."
},
"rationale": {
"type": "string",
"minLength": 20,
"maxLength": 500,
"description": "REQUIRED. 1-2 sentence rationale for this call (e.g. \"User asked for X; calling Y to fetch Z\"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples."
}
},
"required": [
"query",
"rationale"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
getStats
Get platform-wide totals for DexPaprika: the number of networks, DEXes, pools, and tokens indexed, returned as a single summary object. Read-only and keyless. Use for 'how much data do you cover?', 'how many chains or pools total?', or a one-line coverage summary. These are ecosystem-wide counts, not per-network figures; use getNetworks for the per-chain breakdown, or getCapabilities for onboarding docs. Takes no parameters beyond a short rationale.
Parameters1
rationale
string
required
REQUIRED. 1-2 sentence rationale for this call (e.g. "User asked for X; calling Y to fetch Z"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples.
Raw schema
{
"type": "object",
"properties": {
"rationale": {
"type": "string",
"minLength": 20,
"maxLength": 500,
"description": "REQUIRED. 1-2 sentence rationale for this call (e.g. \"User asked for X; calling Y to fetch Z\"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples."
}
},
"required": [
"rationale"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
getCapabilities
Get the static agent onboarding guide for this server: supported workflows, network name synonyms (mapping words like 'eth' to the canonical slug 'ethereum'), recommended call sequences, and common pitfalls. Read-only and keyless. Read it once at the start of a session before your first query, or when asked 'how do I use this API?', 'what order should I call things in?', or 'which slug maps to eth?'. This returns onboarding docs, not live market data; for the actual list of network slugs use getNetworks, and for coverage totals use getStats. Takes no parameters beyond a short rationale.
Parameters1
rationale
string
required
REQUIRED. 1-2 sentence rationale for this call (e.g. "User asked for X; calling Y to fetch Z"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples.
Raw schema
{
"type": "object",
"properties": {
"rationale": {
"type": "string",
"minLength": 20,
"maxLength": 500,
"description": "REQUIRED. 1-2 sentence rationale for this call (e.g. \"User asked for X; calling Y to fetch Z\"). Logged for MCP improvement, never shown to end users. No PII or secrets. See the server `instructions` field for the full convention and worked examples."
}
},
"required": [
"rationale"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
submitFeedback
Report a problem back to the DexPaprika team when a tool got you stuck, returned something unexpected, lacked data you needed, or behaved differently than documented. Use whenever you hit a dead end, a response shape surprised you, or coverage was missing; even partial feedback helps and every submission is read. Low friction: provide goal, expected, and observed instead of a rationale field.
Parameters6
goal
string
required
REQUIRED: What you (or the user behind you) were trying to accomplish. 10-500 characters; longer goals are validation-rejected at the MCP layer.
attempted_tools
array
optional
OPTIONAL: List of tool names you called, in order, before submitting this feedback.
blocked_at
string
optional
OPTIONAL: Tool name or step where you got stuck.
expected
string
optional
OPTIONAL: What you expected to happen. Capped at 500 characters; trim or summarize longer narratives.
observed
string
optional
OPTIONAL: What actually happened. Capped at 500 characters; trim or summarize longer narratives. Longer text triggers an MCP -32602 input validation error.
severity
string
optional
OPTIONAL: How badly this affected your task. Default 'minor'.
Raw schema
{
"type": "object",
"properties": {
"goal": {
"type": "string",
"minLength": 10,
"maxLength": 500,
"description": "REQUIRED: What you (or the user behind you) were trying to accomplish. 10-500 characters; longer goals are validation-rejected at the MCP layer."
},
"attempted_tools": {
"type": "array",
"items": {
"type": "string"
},
"description": "OPTIONAL: List of tool names you called, in order, before submitting this feedback."
},
"blocked_at": {
"type": "string",
"description": "OPTIONAL: Tool name or step where you got stuck."
},
"expected": {
"type": "string",
"maxLength": 500,
"description": "OPTIONAL: What you expected to happen. Capped at 500 characters; trim or summarize longer narratives."
},
"observed": {
"type": "string",
"maxLength": 500,
"description": "OPTIONAL: What actually happened. Capped at 500 characters; trim or summarize longer narratives. Longer text triggers an MCP -32602 input validation error."
},
"severity": {
"type": "string",
"enum": [
"blocker",
"major",
"minor",
"nit"
],
"default": "minor",
"description": "OPTIONAL: How badly this affected your task. Default 'minor'."
}
},
"required": [
"goal"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
}
A Model Context Protocol (MCP) server that provides on-demand access to DexPaprika's cryptocurrency and DEX data API. Built specifically for AI assistants like Claude to programmatically fetch current token, pool and DEX data with zero configuration.
TL;DR
bash
# Install globally
npm install -g dexpaprika-mcp
# Start the server
dexpaprika-mcp
# Or run directly without installation
npx dexpaprika-mcp@latest
DexPaprika MCP connects Claude to live DEX data across multiple blockchains. The free tier needs no API key to start. Installation | Configuration | API Reference
Prefer zero setup? Use the hosted MCP server at mcp.dexpaprika.com: no installation, no key to start, the same data tools plus submitFeedback. See Hosted server for transport endpoints.
Latest release
See CHANGELOG.md for release notes and migration guides.
Portfolio Trackers: Current value tracking, historical performance analysis, yield opportunities
Technical Analysis: Perform advanced technical analysis using historical OHLCV data, including trend identification, pattern recognition, and indicator calculations
Installation
Installing via Smithery
To install DexPaprika for Claude Desktop automatically via Smithery:
bash
npx -y smithery mcp add coinpaprika/dexpaprika
Manual Installation
bash
# Install globally (recommended for regular use)
npm install -g dexpaprika-mcp
# Start the server
dexpaprika-mcp
This is a stdio server: it speaks MCP over stdin and stdout and binds no port. On start it writes DexPaprika MCP server v<version> (tool contract v<contract>) is running... to stderr and then waits for a client. Run it from an MCP client (Claude Desktop, Cursor, Claude Code) rather than expecting a URL in a browser.
Video Tutorial
Watch our step-by-step tutorial on setting up and using the DexPaprika MCP server:
Claude Desktop Integration
Add the following to your Claude Desktop configuration file:
After restarting Claude Desktop, the DexPaprika tools will be available to Claude automatically.
Optional: using an API key
This works without a key and always will. No signup, no card, nothing to
configure. Everything above is the supported way to run it.
A free key raises the monthly allowance and opens streaming on any token rather
than the public showcase set. It does not raise the per-minute request
limit, which is the same on both tiers. Get one at
console.dexpaprika.com; current limits are on
the rate limits page.
The key goes in on its own. There is no Bearer prefix, and no other scheme
word either. Paste the key exactly as issued. Almost every other API wants the
opposite, so this is the single most common reason a working key looks broken.
Two things worth knowing:
A key we cannot read does not produce an error. The data endpoints ignore
an unreadable key and serve you as an anonymous caller, with a normal 200 and
real data, so a typo looks exactly like success. Ask the assistant to run
getKeyStatus after setting one: it reports which plan the API actually sees
and names the likely cause when the key is not landing.
Pro customers additionally set DEXPAPRIKA_API_BASE_URL to
https://api-pro.dexpaprika.com. The host does not change automatically,
because sending a free key to that host returns 403.
Hosted server (no installation)
If you prefer zero setup, point any MCP-compatible client directly at the hosted server at mcp.dexpaprika.com. The landing page provides setup instructions and documentation. The following transport endpoints are available:
Transport
Endpoint
Use Case
Streamable HTTP
https://mcp.dexpaprika.com/streamable-http
Recommended for most clients
SSE
https://mcp.dexpaprika.com/sse
Legacy SSE transport
JSON-RPC
https://mcp.dexpaprika.com/json-rpc
Direct JSON-RPC
Note: These are MCP protocol endpoints. They won't display anything in a browser. Visit mcp.dexpaprika.com for the landing page.
This self-host build registers 17 read tools: 16 market-data tools plus getKeyStatus. The hosted server at mcp.dexpaprika.com registers its own set including submitFeedback. Verify either with a live tools/list.
Discovery
Tool
Description
getCapabilities
Server capabilities, workflow patterns, network synonyms, and best practices. Start here.
Top tokens on a network ranked by volume, liquidity, FDV, or 24h price change
network
filterNetworkTokens
Filter tokens by volume, liquidity, FDV, transactions, and creation time
network
Example Usage
javascript
// Start by getting capabilities for workflow guidance:const caps = awaitgetCapabilities();
// Get details about a specific token:const solanaJupToken = awaitgetTokenDetails({
network: "solana",
token_address: "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"
});
// Find pools containing a token (returns `results` with cursor pagination;// the token filter only works network-scoped):const jupiterPools = awaitgetTokenPools({
network: "solana",
token_address: "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN",
order_by: "volume_usd_24h",
limit: 5
});
// Get top pools on Ethereum (returns `results` with cursor pagination):const ethereumPools = awaitgetNetworkPools({
network: "ethereum",
order_by: "volume_usd_24h",
limit: 10
});
// Filter pools by volume and creation time:const filteredPools = awaitgetNetworkPoolsFilter({
network: "ethereum",
volume_24h_min: 100000,
created_after: 1710806400,
sort_by: "volume_usd_24h",
limit: 20
});
// Get historical price data:const ohlcvData = awaitgetPoolOHLCV({
network: "ethereum",
pool_address: "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640",
start: "2023-01-01",
interval: "24h",
limit: 30
});
// Batch prices for multiple tokens (max 10):const prices = awaitgetTokenMultiPrices({
network: "ethereum",
tokens: [
"0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"0xdac17f958d2ee523a2206206994597c13d831ec7"
]
});
Sample Prompts for Claude
"Analyze the JUP token on Solana. Fetch price, volume, and top liquidity pools."
"Compare trading volume between Uniswap V3 and SushiSwap on Ethereum."
"Get the 7-day OHLCV data for SOL/USDC on Raydium and plot a price chart."
"Find the top 5 pools by liquidity on Fantom network and analyze their fee structures."
"Get recent transactions for the ETH/USDT pool on Uniswap and analyze buy vs sell pressure."
"Show me the top 10 pools on Ethereum by 24h volume."
"Search for all pools containing the ARB token and rank them by volume."
"Filter Ethereum pools with >$100K 24h volume created in the last week."
"First get all available networks, then show me the top pools on each major network."
Rate Limits & Performance
Free tier: keyless, no signup, at 15 requests per minute. A free API key raises that to 30 requests per minute, raises the monthly quota, and unlocks streaming: register at https://console.dexpaprika.com. Pro is $99/month at 500 requests per minute, and there is a $30 Dev plan at 120. One request costs one credit; batch endpoints cost one credit per item. Full docs at https://docs.dexpaprika.com. Monthly quotas change, so read them here rather than from this page: https://dexpaprika.com/api/pricing
Data delay: up to 60 seconds on the free tier, real-time on the paid plans
Response Time: 100-500ms for most endpoints (network dependent)
Error Handling: Structured errors with codes, suggestions, and retry guidance
OHLCV Data Availability: Historical data typically available from token/pool creation date
Troubleshooting
Common Issues:
Rate limiting: If receiving DP429_RATE_LIMIT errors, implement exponential backoff
Missing data: Some newer tokens/pools may have incomplete historical data
Timeout errors: Large data requests may take longer, consider pagination
Network errors: Check network connectivity, the service requires internet access
OHLCV limitations: Maximum range between start and end dates is 1 year; use pagination for longer timeframes
Empty OHLCV: Pool may be too new. Use getPoolTransactions instead
Development
bash
# Clone the repository
git clone https://github.com/coinpaprika/dexpaprika-mcp.git
cd dexpaprika-mcp
# Install dependencies
npm install
# Run with auto-restart on code changes
npm run watch
# Build for production
npm run build
# Run tests
npm test
Changelog
See CHANGELOG.md for detailed release notes and migration guides.
License
This project is licensed under the MIT License - see the LICENSE file for details.