> ## 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 17 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.

<Info>
  **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.
</Info>

The server exposes **17 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. A few older tools (`getNetworkDexes`, `getDexPools`, `getPoolTransactions`) use 1-indexed `page` numbers instead. |
| **Sorting**                | Use canonical `sort_by` (a field name) and `sort_dir` (`asc`/`desc`, default `desc`). Legacy aliases `order_by`/`sort` are still accepted and mapped. Default sort is `volume_usd_24h`.                                                                              |
| **Rate limits**            | 30 requests/min on the free tiers, 300/min on Pro. Over the limit returns HTTP 429; back off and retry after a short pause. See [rate limits](/knowledge-base/rate-limits).                                                                                          |
| **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`, `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, 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         |
| `created_after` / `created_before`        | no       | number       |                  | UNIX timestamp                   |
| `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.

### 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` (for example `uniswap_v3`)                             |
| `page`     | no       | number       | 1            | 1-indexed                                                                            |
| `limit`    | no       | number       | 10           | Max 100                                                                              |
| `sort_by`  | no       | enum         | `volume_usd` | `volume_usd`, `price_usd`, `transactions`, `last_price_change_usd_24h`, `created_at` |
| `sort_dir` | no       | `asc`/`desc` | `desc`       |                                                                                      |

### 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  |         | UNIX timestamp, RFC3339, or `yyyy-mm-dd`                  |
| `end`          | no       | string  |         | Max 1 year from `start`                                   |
| `limit`        | no       | number  | 100     | Max 366                                                   |
| `interval`     | no       | enum    | `24h`   | `1m`, `5m`, `10m`, `15m`, `30m`, `1h`, `6h`, `12h`, `24h` |
| `inversed`     | no       | boolean | false   | Invert the price ratio                                    |

### getPoolTransactions

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

| 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       | number |         | UNIX epoch seconds. 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.
</Note>

### 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       | number       |                  | UNIX timestamp                                                                                                                           |
| `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`.

| 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`                               |
| Batch price snapshot                     | `getTokenMultiPrices` (max 10 tokens)                                |
| Top or filtered tokens                   | `getTopTokens` or `filterNetworkTokens`                              |
| Historical price chart                   | `getPoolOHLCV` with `start` and `interval`                           |
| Raw swap feed                            | `getPoolTransactions` with `from`/`to`                               |
| 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`, `getTokenPools`, `getTopTokens`, and `filterNetworkTokens`.
* **`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.
* **`getTokenMultiPrices` is capped at 10 tokens** per request.
* **`getPoolTransactions` `from`/`to` are UNIX seconds** and 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

<AccordionGroup>
  <Accordion title="How many tools does the DexPaprika MCP server have?">
    17: sixteen read-only data tools plus `submitFeedback`, which is available on the hosted server only. Call `getCapabilities` for the live list.
  </Accordion>

  <Accordion title="Do I need an API key to call the tools?">
    No. The hosted server is keyless for read access. A free registered key or Pro plan raises your rate and monthly quota; see [rate limits](/knowledge-base/rate-limits).
  </Accordion>

  <Accordion title="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.
  </Accordion>

  <Accordion title="How does pagination work?">
    Most list tools use cursor pagination: read `has_next_page` and pass `next_cursor` back as `cursor`. `getNetworkDexes`, `getDexPools`, and `getPoolTransactions` use 1-indexed `page` numbers.
  </Accordion>
</AccordionGroup>

<script type="application/ld+json">
  {JSON.stringify({
      "@context": "https://schema.org",
      "@type": "FAQPage",
      "mainEntity": [
        {"@type": "Question","name": "How many tools does the DexPaprika MCP server have?","acceptedAnswer": {"@type": "Answer","text": "17: sixteen read-only data tools plus submitFeedback, which is available on the hosted server only. Call getCapabilities for the live list."}},
        {"@type": "Question","name": "Do I need an API key to call the tools?","acceptedAnswer": {"@type": "Answer","text": "No. The hosted server is keyless for read access. A free registered key or Pro plan raises your rate and monthly quota."}},
        {"@type": "Question","name": "What is the rationale field for?","acceptedAnswer": {"@type": "Answer","text": "Every read tool requires a short rationale string describing why you are calling it. It is logged to improve the server and never shown to end users."}},
        {"@type": "Question","name": "How does pagination work?","acceptedAnswer": {"@type": "Answer","text": "Most list tools use cursor pagination via has_next_page and next_cursor. getNetworkDexes, getDexPools, and getPoolTransactions use 1-indexed page numbers."}}
      ]
    })}
</script>
