> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dexpaprika.com/llms.txt
> Use this file to discover all available pages before exploring further.

# DexPaprika MCP tools reference

> Complete reference for all 18 DexPaprika MCP tools: parameters, defaults, pagination, sorting, and return shapes. The machine-readable manifest an AI agent needs to plan calls before connecting.

This page lists every tool the DexPaprika MCP server exposes, with parameters, defaults, and return shapes, so an agent (or a developer) can plan calls before connecting.

> [!NOTE]
>
> **Agents: call `getCapabilities` first.** In one call it returns the workflow patterns, network name synonyms, and common pitfalls below as structured JSON, so the server describes itself at runtime. This page is the human-readable mirror of that manifest.

The server exposes **20 tools** across five groups. All data is read-only; `submitFeedback` is the only write tool and is available on the hosted server only.

## Conventions that apply to every tool

These rules hold across the whole surface. Read them once and the individual tools get much shorter.

| Convention | What to know |
| - | - |
| **`rationale` (required)** | Every read tool takes a `rationale` string (20-500 chars): 1-2 sentences on what triggered the call and how you will use the result. It is logged to improve the server and never shown to end users. |
| **Network ids** | Tools that take a `network` want the canonical slug (`ethereum`, `solana`, `base`). Call `getNetworks` for the list, or `getCapabilities` for the synonym map that resolves `eth`, `matic`, `bnb`, and similar to the right slug. |
| **Pagination** | List tools return rows under `results` with **cursor pagination**: read `has_next_page` and pass `next_cursor` back as `cursor` for the next page. Two older tools (`getNetworkDexes` and `getPoolTransactions`) use 1-indexed `page` numbers instead. |
| **Sorting** | Over MCP use `sort_by` (a field name) and `sort_dir` (`asc`/`desc`, default `desc`); `order_by`/`sort` are also accepted and mapped. Default sort is `volume_usd_24h`. **Calling the REST API directly? Use `order_by`/`sort`** ([REST reference](https://docs.dexpaprika.com/api-reference/introduction.md)): those are the names it requires, and an unrecognized parameter name is silently ignored, so a wrong name looks like a working sort while you actually get the default order. |
| **Rate limits** | 15 requests/min keyless, 30/min with a [free key](https://console.dexpaprika.com), 500/min on Pro. Over the limit returns HTTP 429; back off and retry after a short pause. See [rate limits](https://docs.dexpaprika.com/knowledge-base/rate-limits.md). |
| **Output** | Every tool returns both `content[0].text` (a JSON string) and `structuredContent` (validated against the tool's output schema). Prefer `structuredContent`. |

***

## Discovery and onboarding

### getCapabilities

Agent onboarding in one call: supported workflows, network name synonyms, common pitfalls, and recommended call sequences. Read it once at the start of a session. Returns static onboarding docs, not live market data.

No parameters beyond `rationale`.

### getNetworks

The full list of blockchain networks DexPaprika indexes, each with 24h volume, transaction counts, and pool counts. Start here (or `getCapabilities`) because every other DEX query needs a valid network slug.

No parameters beyond `rationale`.

### getStats

Platform-wide totals: number of networks, DEXes, pools, and tokens indexed. Ecosystem-wide counts, not per-network figures (use `getNetworks` for the per-chain breakdown).

No parameters beyond `rationale`.

### search

Search across **all** networks at once for tokens, pools, and DEXes by name, symbol, or address. Returns three arrays: `tokens`, `pools`, `dexes`. This is the cross-chain entry point; once you have a network slug, switch to the network-scoped tools.

| Param | Required | Type | Default | Notes |
| - | - | - | - | - |
| `query` | yes | string | | Name, symbol, or address (for example `uniswap`, `PEPE`, `0x...`) |
| `limit` | no | number | | Max results per category, applied client-side |

***

## Pools

### getNetworkPools

The top liquidity pools on one network, ranked by 24h volume by default. The primary pool-discovery tool for a whole chain.

| Param | Required | Type | Default | Notes |
| - | - | - | - | - |
| `network` | yes | string | | Network slug from `getNetworks` |
| `limit` | no | number | 10 | Max 100 |
| `cursor` | no | string | | `next_cursor` from a previous response |
| `sort_by` | no | enum | `volume_usd_24h` | `volume_usd_24h`, `volume_usd_7d`, `volume_usd_30d`, `liquidity_usd`, `txns_24h`, `price_usd`, `price_change_percentage_24h`, `price_change_percentage_48h`, `price_change_percentage_6h`, `price_change_percentage_1h`, `price_change_percentage_5m`, `created_at` |
| `sort_dir` | no | `asc`/`desc` | `desc` | |

Rows return under `results` with cursor pagination.

### getNetworkPoolsFilter

Pools on one network filtered by exact thresholds for volume, liquidity, transaction count, price change, or creation time. Choose this over `getNetworkPools` when the user gives numeric constraints or a time window.

| Param | Required | Type | Default | Notes |
| - | - | - | - | - |
| `network` | yes | string | | Network slug |
| `limit` | no | number | 50 | Max 100 |
| `cursor` | no | string | | Cursor pagination |
| `volume_24h_min` / `volume_24h_max` | no | number | | 24h volume in USD |
| `volume_7d_min` / `volume_7d_max` | no | number | | 7d volume in USD |
| `liquidity_usd_min` / `liquidity_usd_max` | no | number | | Pool liquidity in USD |
| `txns_24h_min` | no | number | | Minimum 24h transactions |
| `price_change_percentage_24h_min` / `_max` | no | number | | 24h price change, percent |
| `price_change_percentage_48h_min` / `_max` | no | number | | 48h price change, percent |
| `price_change_percentage_6h_min` / `_max` | no | number | | 6h price change, percent |
| `price_change_percentage_1h_min` / `_max` | no | number | | 1h price change, percent |
| `price_change_percentage_5m_min` / `_max` | no | number | | 5m price change, percent |
| `created_after` / `created_before` | no | string | | Creation-time window, both ends included: a relative offset such as `-24h`, Unix seconds, RFC3339 or `YYYY-MM-DD` |
| `sort_by` | no | enum | `volume_usd_24h` | Same fields as `getNetworkPools` |
| `sort_dir` | no | `asc`/`desc` | `desc` | |

To find new pools: set `created_after` and sort by `created_at` descending. To find movers, pass a signed percentage bound: `price_change_percentage_1h_max: -20` returns pools down 20 percent or more over the last hour.

### getDexPools

The pools that belong to one specific DEX on one network (for example all Uniswap v3 pools on ethereum). Narrower than `getNetworkPools`.

| Param | Required | Type | Default | Notes |
| - | - | - | - | - |
| `network` | yes | string | | Network slug |
| `dex` | yes | string | | DEX id from `getNetworkDexes`, its `dex_id` field (for example `uniswap_v3`), case-insensitive. A display name (`Uniswap V3`) returns no rows instead of an error |
| `limit` | no | number | 10 | Max 100 |
| `cursor` | no | string | | Cursor pagination |
| `sort_by` | no | enum | `volume_usd_24h` | Same pool sort fields as `getNetworkPools` |
| `sort_dir` | no | `asc`/`desc` | `desc` | |

> [!NOTE]
>
> The REST endpoint behind this tool changed. `GET /networks/{network}/dexes/{dex}/pools` was removed and returns `410 Gone`, so the tool now calls `GET /networks/{network}/pools/search` with the `dex_name` filter. Two consequences: there is no `page` parameter any more, and the legacy sort values (`volume_usd`, `transactions`, `last_price_change_usd_24h`) are mapped to their canonical names before the request goes out. Rows arrive under `results` with `has_next_page` and `next_cursor`, and the 24h volume field on each row is `volume_usd_24h`.

### getPoolDetails

Full details for one pool by address: the two tokens, current price, liquidity, 24h volume, and transaction counts. The live snapshot only, use `getPoolOHLCV` for history.

| Param | Required | Type | Default | Notes |
| - | - | - | - | - |
| `network` | yes | string | | Network slug |
| `pool_address` | yes | string | | Pool address |
| `inversed` | no | boolean | false | Invert the price ratio for the other pair perspective |

### getPoolOHLCV

Historical open/high/low/close/volume candles for one pool across a date range and interval. Historical time series, use `getPoolDetails` for the single current price.

| Param | Required | Type | Default | Notes |
| - | - | - | - | - |
| `network` | yes | string | | Network slug |
| `pool_address` | yes | string | | Pool address |
| `start` | yes | string | | A relative offset such as `-24h` or `-7d`, UNIX timestamp, RFC3339, or `yyyy-mm-dd` |
| `end` | no | string | | Same formats as `start` |
| `limit` | no | number | 100 | Max 1000 |
| `interval` | no | enum | `24h` | `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `6h`, `12h`, `24h` |
| `inversed` | no | boolean | false | Invert the price ratio |

### getPoolIndicator

RSI, EMA, MACD, Bollinger Bands or VWAP for one pool, computed by the API from the pool's candles. Use it instead of pulling `getPoolOHLCV` and computing the indicator yourself.

Works on every plan, keyless included, with the same interval and history limits as `getPoolOHLCV` ([limits by plan](https://docs.dexpaprika.com/knowledge-base/rate-limits.md#ohlcv-limits-by-plan)). Values come oldest first, one per completed candle: `value` for rsi, ema and vwap; `macd`, `signal` and `histogram` for macd; `upper`, `middle` and `lower` for bbands. RSI, EMA and MACD are smoothed, so start well before the first value you rely on. Tutorial: [technical indicators](https://docs.dexpaprika.com/tutorials/technical-indicators.md).

| Param | Required | Type | Default | Notes |
| - | - | - | - | - |
| `network` | yes | string | | Network slug |
| `pool_address` | yes | string | | Pool address |
| `indicator` | yes | enum | | `rsi`, `ema`, `macd`, `bbands`, `vwap` |
| `interval` | no | enum | | `1m` to `24h`, or `1d`. Pass it every time |
| `start` | no | string | | A relative offset such as `-24h` or `-7d`, Unix seconds, RFC3339 or `yyyy-mm-dd`. Without it you get the last `limit` values |
| `end` | no | string | | Exclusive, same formats as `start` |
| `limit` | no | number | 100 | Max 1000 |
| `cursor` | no | string | | `next_cursor` from the previous page; not with `start` |
| `period` | no | number | | rsi (14), ema (20), bbands (20), vwap (14). Not for macd |
| `fast_period` / `slow_period` / `signal_period` | no | number | 12 / 26 / 9 | macd only |
| `std_dev` | no | number | 2 | bbands only |

A parameter that belongs to another indicator (`fast_period` on `rsi`, say) is refused with a 400.

### getPoolTransactions

The recent individual swap transactions for one pool, newest first. Per-trade records, not aggregated candles.

Needs a Dev, Pro or Enterprise key. On the hosted server it runs on your own key, sent as the `Authorization` header on your connection ([setup](https://docs.dexpaprika.com/ai-integration/hosted-mcp-server.md#your-own-api-key-for-token-ohlcv-and-pool-transactions)); without one it returns `DP401_API_KEY_REQUIRED`. With the npm package, set `DEXPAPRIKA_API_KEY` and `DEXPAPRIKA_API_BASE_URL=https://api-pro.dexpaprika.com`. Keyless and free keys cannot call it: `getPoolDetails` gives the pool's transaction counts and volume instead.

| Param | Required | Type | Default | Notes |
| - | - | - | - | - |
| `network` | yes | string | | Network slug |
| `pool_address` | yes | string | | Pool address |
| `page` | no | number | 1 | 1-indexed, up to 100 pages |
| `limit` | no | number | 10 | Max 100 |
| `cursor` | no | string | | Transaction id for cursor pagination |
| `from` / `to` | no | string | | A relative offset such as `-1h`, Unix seconds, RFC3339 or `YYYY-MM-DD`. `from` is inclusive, `to` exclusive. Results are always capped to the last 7 days |

***

## Tokens

### getTokenDetails

Metadata and multi-timeframe price and volume metrics for one token by contract address, including website, Twitter, and Telegram links. If you only have a symbol, call `search` first to resolve the address.

| Param | Required | Type | Default | Notes |
| - | - | - | - | - |
| `network` | yes | string | | Network slug |
| `token_address` | yes | string | | Token contract address |

### getTokenPools

The liquidity pools that contain a specific token on one network. The token filter is network-scoped, so run `search` first if you do not know the network.

| Param | Required | Type | Default | Notes |
| - | - | - | - | - |
| `network` | yes | string | | Network slug |
| `token_address` | yes | string | | An unknown address returns an empty `results` array, not an error |
| `limit` | no | number | 10 | Max 100 |
| `cursor` | no | string | | Cursor pagination |
| `sort_by` | no | enum | `volume_usd_24h` | Same pool sort fields as `getNetworkPools` |
| `sort_dir` | no | `asc`/`desc` | `desc` | |

> [!NOTE]
>
> `inversed`/`reorder` and `paired_token_address`/`address` are no longer supported (the underlying endpoint changed). Passing them returns a structured error. To flip a price, compute `1/price` client-side; for pair queries, filter `results[].tokens` client-side.

### getTokenOHLCV

USD candles for one token, volume-weighted across every pool it trades in on the network, with volume summed across those pools. Use it for a token's price history; for one pair's candles use `getPoolOHLCV`.

Needs a Dev, Pro or Enterprise key. On the hosted server it runs on your own key, sent as the `Authorization` header on your connection ([setup](https://docs.dexpaprika.com/ai-integration/hosted-mcp-server.md#your-own-api-key-for-token-ohlcv-and-pool-transactions)); without one it returns `DP401_API_KEY_REQUIRED`. With the npm package, set `DEXPAPRIKA_API_KEY` and `DEXPAPRIKA_API_BASE_URL=https://api-pro.dexpaprika.com`. Keyless and free keys cannot call it: fall back to `getPoolOHLCV` on the token's most liquid pool.

| Param | Required | Type | Default | Notes |
| - | - | - | - | - |
| `network` | yes | string | | Network slug |
| `token_address` | yes | string | | Token address |
| `start` | yes | string | | A relative offset such as `-24h`, UNIX timestamp, RFC3339, or `yyyy-mm-dd` |
| `end` | no | string | | Same formats as `start` |
| `limit` | no | number | 10 | Max 1000 |
| `interval` | no | enum | `24h` | `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `6h`, `12h`, `24h` |

### getTokenIndicator

The same indicators computed from a token's USD candles across every pool it trades in. Same parameters as `getPoolIndicator`, with `token_address` in place of `pool_address`.

Needs a Dev, Pro or Enterprise key. On the hosted server it runs on your own key, sent as the `Authorization` header on your connection ([setup](https://docs.dexpaprika.com/ai-integration/hosted-mcp-server.md#your-own-api-key-for-token-ohlcv-and-pool-transactions)); without one it returns `DP401_API_KEY_REQUIRED`. With the npm package, set `DEXPAPRIKA_API_KEY` and `DEXPAPRIKA_API_BASE_URL=https://api-pro.dexpaprika.com`. Keyless and free keys cannot call it: fall back to `getPoolIndicator` on the token's most liquid pool.

### getTokenMultiPrices

Current USD prices for up to 10 tokens on the same network in one batched call. Tokens that cannot be priced come back under `missing_tokens` rather than being dropped, so check that list for partial failures.

| Param | Required | Type | Default | Notes |
| - | - | - | - | - |
| `network` | yes | string | | Network slug |
| `tokens` | yes | string\[] | | 1 to 10 token addresses on the same network |

### filterNetworkTokens

Tokens on one network filtered by exact thresholds for volume, liquidity, FDV, transactions, or creation time. Choose this over `getTopTokens` when the user gives numeric constraints.

| Param | Required | Type | Default | Notes |
| - | - | - | - | - |
| `network` | yes | string | | Network slug |
| `limit` | no | number | 50 | Max 100 |
| `cursor` | no | string | | Cursor pagination |
| `volume_24h_min` / `volume_24h_max` | no | number | | 24h volume in USD |
| `liquidity_usd_min` / `liquidity_usd_max` | no | number | | Token liquidity in USD |
| `fdv_min` / `fdv_max` | no | number | | Fully diluted valuation in USD |
| `txns_24h_min` | no | number | | Minimum 24h transactions |
| `created_after` / `created_before` | no | string | | Creation-time window, both ends included: a relative offset such as `-24h`, Unix seconds, RFC3339 or `YYYY-MM-DD` |
| `sort_by` | no | enum | `volume_usd_24h` | `volume_usd_24h`, `volume_usd_7d`, `volume_usd_30d`, `liquidity_usd`, `txns_24h`, `fdv_usd`, `price_change_percentage_24h`, `created_at` |
| `sort_dir` | no | `asc`/`desc` | `desc` | |

### getTopTokens

The top tokens on one network ranked by volume, liquidity, transactions, FDV, or 24h price change.

| Param | Required | Type | Default | Notes |
| - | - | - | - | - |
| `network` | yes | string | | Network slug |
| `limit` | no | number | 50 | Max 100 |
| `cursor` | no | string | | Cursor pagination |
| `sort_by` | no | enum | `volume_usd_24h` | Same token sort fields as `filterNetworkTokens` |
| `sort_dir` | no | `asc`/`desc` | `desc` | |

Ranking by raw price is not supported and falls back to volume.

***

## DEXes

### getNetworkDexes

The DEXes (exchanges) operating on one specific network, for example Uniswap on ethereum or Raydium on solana. Use the returned `dex_id` with `getDexPools`. Each row carries both `dex_id` and `dex_name`.

| Param | Required | Type | Default | Notes |
| - | - | - | - | - |
| `network` | yes | string | | Network slug |
| `page` | no | number | 1 | 1-indexed |
| `limit` | no | number | 10 | Max 100 |
| `sort_by` | no | enum | | Only `pool` |
| `sort_dir` | no | `asc`/`desc` | `desc` | |

***

## Feedback (hosted server only)

### submitFeedback

Report a problem, unexpected response, or missing data back to the DexPaprika team. Available on the hosted server (`mcp.dexpaprika.com`) only; the self-host build does not include it. Unlike the read tools, it takes no `rationale`, the fields below are the context.

| Param | Required | Type | Default | Notes |
| - | - | - | - | - |
| `goal` | yes | string | | What you were trying to accomplish (10-500 chars) |
| `attempted_tools` | no | string\[] | | Tools you tried before getting stuck |
| `blocked_at` | no | string | | Where exactly you got blocked |
| `expected` | no | string | | What you expected to happen |
| `observed` | no | string | | What actually happened |
| `severity` | no | enum | `minor` | `blocker`, `major`, `minor`, `nit` |

***

## Recommended call sequences

Common tasks map to short tool chains. `getCapabilities` returns this list at runtime.

| Task | Sequence |
| - | - |
| Discover supported chains | `getNetworks` |
| Top pools on a chain | `getNetworks` then `getNetworkPools` |
| Pools above a volume/liquidity threshold | `getNetworks` then `getNetworkPoolsFilter` |
| Newly created pools | `getNetworkPoolsFilter` with `created_after`, sort `created_at` desc |
| Token profile and its venues | `getTokenDetails` then `getTokenPools` |
| Pools on one DEX | `getNetworkDexes` then `getDexPools` with the `dex_id` |
| Batch price snapshot | `getTokenMultiPrices` (max 10 tokens) |
| Top or filtered tokens | `getTopTokens` or `filterNetworkTokens` |
| Historical price chart | `getPoolOHLCV` with `start` and `interval` |
| Token price history across all pools | `getTokenOHLCV` (your Dev or Pro key); without one, `getTokenPools` then `getPoolOHLCV` |
| Technical indicators (RSI, MACD, Bollinger Bands) | `getPoolIndicator` on the pool; `getTokenIndicator` for a token across all its pools (your Dev or Pro key) |
| Raw swap feed | `getPoolTransactions` with `from`/`to` (your Dev or Pro key); without one, `getPoolDetails` for counts |
| Find something across all chains | `search` |

## Common pitfalls

* **List tools return rows under `results`** (not `pools`/`tokens`/`data`) with cursor pagination (`has_next_page` + `next_cursor`), not page numbers. This applies to `getNetworkPools`, `getNetworkPoolsFilter`, `getDexPools`, `getTokenPools`, `getTopTokens`, and `filterNetworkTokens`.
* **`getDexPools` reads a filter, not a path.** The REST endpoint it used to wrap was removed and returns `410 Gone`; the tool now calls pool search with `dex_name`. If you were building the old URL by hand, stop: there is no `page`, and the 24h volume field is `volume_usd_24h`.
* **`getTokenPools` is network-scoped.** The cross-network `search` cannot filter by token. An unknown `token_address` returns empty `results`, not an error. The old pair-flip and second-token parameters were removed and now return a structured error.
* **Sort field names are canonical.** Prefer `volume_usd_24h`, `txns_24h`, `price_change_percentage_24h`, `fdv_usd`. Short legacy names are auto-mapped. Tokens cannot be ordered by raw price.
* **Every price change window but 24h is pool-only.** `price_change_percentage_48h`, `_6h`, `_1h` and `_5m` sort the four tools that return pool rows: `getNetworkPools`, `getNetworkPoolsFilter`, `getDexPools` and `getTokenPools`. Only `getNetworkPoolsFilter` takes them as `_min` / `_max` bounds. The token tools (`getTopTokens`, `filterNetworkTokens`) sort by `price_change_percentage_24h` and no other window, and token rows never include those four fields. The 48h window needs dexpaprika-mcp 2.7.3 or later.
* **`filterNetworkTokens` has no price-change bound.** The REST endpoint behind it, `GET /networks/{network}/tokens/search`, does accept `price_change_percentage_24h_min` / `_max`, and the tool does not surface them. Call the endpoint directly when you need to screen tokens by 24h move.
* **`getTokenMultiPrices` is capped at 10 tokens** per request.
* **`getPoolTransactions` `from`/`to` take a relative offset** such as `-1h`, as well as Unix seconds, RFC3339 or `YYYY-MM-DD`. Results are always capped to the last 7 days.
* **Token addresses must match the network.** Do not send a Solana address to an ethereum query.

## FAQs

> **How many tools does the DexPaprika MCP server have?**
>
> 20: nineteen read-only data tools plus `submitFeedback`, which is available on the hosted server only. Call `getCapabilities` for the live list.

> **Do I need an API key to call the tools?**
>
> For every tool but three, no. `getTokenOHLCV`, `getTokenIndicator` and `getPoolTransactions` need a Dev, Pro or Enterprise key: on the hosted server it is your own key, sent as the `Authorization` header ([setup](https://docs.dexpaprika.com/ai-integration/hosted-mcp-server.md#your-own-api-key-for-token-ohlcv-and-pool-transactions)). The npm package calls the API from your machine, so your own plan's limits apply there; see [rate limits](https://docs.dexpaprika.com/knowledge-base/rate-limits.md) and [pricing](https://dexpaprika.com/api/pricing).

> **What is the rationale field for?**
>
> Every read tool requires a short `rationale` string describing why you are calling it. It is logged to improve the server and is never shown to end users. Include no secrets or personal data.

> **How does pagination work?**
>
> Most list tools use cursor pagination: read `has_next_page` and pass `next_cursor` back as `cursor`. `getNetworkDexes` and `getPoolTransactions` are the two that still use 1-indexed `page` numbers.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.