Skip to main content
Glama
coinpaprika

DexPaprika (CoinPaprika)

Official

DexPaprika MCP 서버

DexPaprika의 암호화폐 및 DEX 데이터 API에 대한 온디맨드 액세스를 제공하는 모델 컨텍스트 프로토콜(MCP) 서버입니다. Claude와 같은 AI 비서가 별도의 설정 없이 실시간 토큰, 풀 및 DEX 데이터를 프로그래밍 방식으로 가져올 수 있도록 특별히 설계되었습니다.

요약

지엑스피1

DexPaprika MCP는 Claude를 여러 블록체인의 실시간 DEX 데이터에 연결합니다. API 키는 필요하지 않습니다. 설치 | 구성 | API 참조

Related MCP server: The Graph Token API MCP

무엇을 만들 수 있나요?

  • 토큰 분석 도구 : 가격 변동, 유동성 심도 변화 및 거래량 패턴 추적

  • DEX 비교 : 다양한 DEX의 수수료 구조, 거래량 및 사용 가능한 풀을 분석합니다.

  • 유동성 풀 분석 : TVL 변화, 일시적 손실 계산 및 가격 영향 평가 모니터링

  • 시장 분석 : 크로스체인 토큰 비교, 거래량 추세 및 거래 활동 지표

  • 포트폴리오 추적기 : 실시간 가치 추적, 과거 성과 분석, 수익 기회

  • 기술 분석 : 추세 식별, 패턴 인식, 지표 계산을 포함한 과거 OHLCV 데이터를 사용하여 고급 기술 분석을 수행합니다.

설치

Smithery를 통해 설치

Smithery를 통해 Claude Desktop용 DexPaprika를 자동으로 설치하려면:

npx -y @smithery/cli install @coinpaprika/dexpaprika-mcp --client claude

수동 설치

# Install globally (recommended for regular use)
npm install -g dexpaprika-mcp

# Verify installation
dexpaprika-mcp --version

# Start the server
dexpaprika-mcp

서버는 기본적으로 8010 포트에서 실행됩니다. 성공적으로 시작되면 MCP server is running at http://localhost:8010 확인할 수 있습니다.

비디오 튜토리얼

DexPaprika MCP 서버를 설정하고 사용하는 방법에 대한 단계별 튜토리얼을 시청하세요.

DexPaprika MCP 튜토리얼

Claude 데스크톱 통합

Claude Desktop 구성 파일에 다음을 추가하세요.

macOS : ~/Library/Application\ Support/Claude/claude_desktop_config.json
윈도우 : %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "dexpaprika": {
      "command": "npx",
      "args": ["dexpaprika-mcp"]
    }
  }
}

Claude Desktop을 재시작하면 Claude에서 DexPaprika 도구를 자동으로 사용할 수 있습니다.

기술적 역량

MCP 서버는 Claude가 액세스할 수 있는 다음과 같은 특정 엔드포인트를 노출합니다.

네트워크 운영

기능

설명

예

getNetworks

지원되는 모든 블록체인 네트워크와 메타데이터를 검색합니다.

{"id": "ethereum", "name": "Ethereum", "symbol": "ETH", ...}

getNetworkDexes

특정 네트워크에서 사용 가능한 DEX를 나열합니다.

{"dexes": [{"id": "uniswap_v3", "name": "Uniswap V3", ...}]}

풀 운영

기능

설명

필수 매개변수

사용 예

getTopPools

모든 네트워크에서 최고의 유동성 풀을 확보합니다.

limit , orderBy

24시간 볼륨 기준 상위 10개 풀 가져오기

getNetworkPools

특정 네트워크에서 상위 풀을 가져옵니다.

network , limit

Solana의 가장 높은 유동성 풀을 확보하세요

getDexPools

특정 DEX에 대한 상위 풀을 가져옵니다.

network , dex

Uniswap V3의 풀 목록

getPoolDetails

자세한 풀 메트릭을 가져옵니다.

network , poolAddress

USDC/ETH 풀에 대한 완전한 메트릭

getPoolOHLCV

다양한 분석 목적(기술 분석, ML 모델, 백테스팅)을 위해 시계열 가격 데이터를 검색합니다.

network , poolAddress , start , interval

SOL/USDC 7일 시간당 캔들

getPoolTransactions

풀의 최근 거래를 나열합니다.

network , poolAddress

특정 풀의 마지막 20개 스왑

토큰 운영

기능

설명

필수 매개변수

출력 필드

getTokenDetails

포괄적인 토큰 데이터를 가져옵니다.

network , tokenAddress

price_usd , volume_24h , liquidity_usd 등

getTokenPools

토큰이 포함된 풀을 나열합니다.

network , tokenAddress

유동성 지표가 있는 모든 풀을 반환합니다.

search

이름/ID로 토큰, 풀, DEX를 찾습니다.

query

다중 엔터티 검색 결과

사용 예

// With Claude, get details about a specific token:
const solanaJupToken = await getTokenDetails({
  network: "solana", 
  tokenAddress: "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN"
});

// Find all pools for a specific token with volume sorting:
const jupiterPools = await getTokenPools({
  network: "solana", 
  tokenAddress: "JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN",
  orderBy: "volume_usd",
  limit: 5
});

// Get historical price data for various analytical purposes (technical analysis, ML models, backtesting):
const ohlcvData = await getPoolOHLCV({
  network: "ethereum",
  poolAddress: "0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640", // ETH/USDC on Uniswap V3
  start: "2023-01-01",
  interval: "1d",
  limit: 30
});

클로드를 위한 샘플 프롬프트

클로드와 함께 작업할 때 다음과 같은 구체적인 기술 질문을 시도해 보세요.

  • "솔라나의 JUP 토큰을 분석하세요. 가격, 거래량, 그리고 주요 유동성 풀을 확인하세요."

  • "이더리움에서 Uniswap V3와 SushiSwap의 거래량을 비교해보세요."

  • "Raydium에서 SOL/USDC에 대한 7일 OHLCV 데이터를 가져와 가격 차트를 그려보세요."

  • "Fantom 네트워크에서 유동성이 가장 높은 상위 5개 풀을 찾아 수수료 구조를 분석하세요."

  • "Uniswap에서 ETH/USDT 풀의 최근 거래를 확인하고 매수 대 매도 압력을 분석합니다."

  • "Binance Smart Chain에서 지난 24시간 동안 가격이 10% 이상 상승한 토큰은 무엇입니까?"

  • "ARB 토큰이 포함된 모든 풀을 검색하여 볼륨별로 순위를 매겨보세요."

  • "BTC/USDT에 대한 OHLCV 데이터를 검색하여 변동성 패턴을 분석하고 가격 예측 모델을 구축합니다."

속도 제한 및 성능

  • 무료 계층 제한 : 분당 60개 요청

  • 응답 시간 : 대부분의 엔드포인트의 경우 100-500ms(네트워크에 따라 다름)

  • 데이터 신선도 : 풀 및 토큰 데이터는 15~30초마다 업데이트됩니다.

  • 오류 처리 : 429 상태 코드는 속도 제한을 나타냅니다.

  • OHLCV 데이터 가용성 : 일반적으로 토큰/풀 생성 날짜부터 사용 가능한 과거 데이터

문제 해결

일반적인 문제:

  • 속도 제한 : 429 오류가 발생하는 경우 요청 빈도를 줄입니다.

  • 누락된 데이터 : 일부 최신 토큰/풀에는 불완전한 과거 데이터가 있을 수 있습니다.

  • 시간 초과 오류 : 대용량 데이터 요청은 더 오래 걸릴 수 있으므로 페이지 나누기를 고려하세요.

  • 네트워크 오류 : 네트워크 연결을 확인하세요. 서비스에 인터넷 접속이 필요합니다.

  • OHLCV 제한 사항 : 시작 날짜와 종료 날짜 사이의 최대 범위는 1년입니다. 더 긴 기간의 경우 페이지 매김을 사용하세요.

개발

# 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

특허

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여되었습니다. 자세한 내용은 라이선스 파일을 참조하세요.

추가 자료

Available Tools

18 tools
filterNetworkTokensA
Read-onlyIdempotent

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, price_change_percentage_24h_min/max, created_after/created_before (a relative offset such as '-24h', Unix seconds, RFC3339 or YYYY-MM-DD). 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).

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoOPTIONAL: 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.
limitNoOPTIONAL: Number of items per page (default: 50, max: 100)
cursorNoOPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page. Replaces the old page number.
fdv_maxNoOPTIONAL: Maximum fully diluted valuation in USD
fdv_minNoOPTIONAL: Minimum fully diluted valuation in USD
networkYesREQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
sort_byNoOPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical names; short legacy names are still accepted. The REST API calls this parameter order_by.
order_byNoOPTIONAL: 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_dirNoOPTIONAL (preferred): Sort direction (default: 'desc'). The REST API calls this parameter sort.
rationaleYesREQUIRED. 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.
txns_24h_minNoOPTIONAL: Minimum number of transactions in 24h
created_afterNoOPTIONAL: Only tokens created at or after this time: a relative offset such as '-24h' or '-7d', Unix seconds, RFC3339 or YYYY-MM-DD
created_beforeNoOPTIONAL: Only tokens created at or before this time, same formats as created_after (e.g. '-1h')
volume_24h_maxNoOPTIONAL: Maximum 24h volume in USD
volume_24h_minNoOPTIONAL: Minimum 24h volume in USD
liquidity_usd_maxNoOPTIONAL: Maximum token liquidity in USD
liquidity_usd_minNoOPTIONAL: Minimum token liquidity in USD
price_change_percentage_24h_maxNoOPTIONAL: Maximum 24h price change, in percent
price_change_percentage_24h_minNoOPTIONAL: Minimum 24h price change, in percent. Negatives are allowed, so -20 finds tokens down at least 20%. This is the only price-change window tokens carry; for 6h, 1h or 5m use getNetworkPoolsFilter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryNo
resultsNo
next_cursorNo
has_next_pageNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/destructiveHint/openWorldHint, so 'Read-only and keyless' largely restates them; however 'keyless' (no API key needed) and the fact that filters are AND-combined are behavioral traits not present in the annotations. The response envelope ('results', has_next_page, next_cursor) is described but an output schema exists, so that is minor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose and sibling routing are front-loaded, and the filter block is information-dense rather than padded. It is on the long side at roughly 180 words, with sort/limit/cursor defaults duplicated from the schema, which costs a point but does not bury the key routing signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 19-parameter filter tool, the description supplies the routing decision, the AND-semantics of the filters, the time-format conventions, and the pagination envelope, while annotations cover safety and an output schema covers return values. Nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description earns above baseline by surfacing the AND-combination semantics for the filter family and by grouping the aliases (sort_by/order_by, sort_dir/sort) in one place. It adds relative-offset format examples ('-24h') that also appear in the schema, so it is only marginally beyond the structured fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope: 'Get tokens on one network matching numeric thresholds.' It immediately names the sibling it is not (getTopTokens) and the criteria that select this one, so an agent can route without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit routing rule ('Choose this over getTopTokens when the user gives numeric constraints or a time window') plus three concrete natural-language trigger examples ('tokens with FDV over $10M on Base', 'newly created tokens today'). The alternative for other price-change windows (getNetworkPoolsFilter) is also flagged.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getCapabilitiesA
Read-onlyIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
rationaleYesREQUIRED. 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
statsYes
serverYes
workflowsYesNamed tool sequences for common agent tasks.
agent_skillsYes
documentationYes
common_pitfallsYesKnown edge cases agents should be aware of.
network_synonymsYesCanonical network id -> common alternates an agent might try.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, destructiveHint=false. The description adds 'static', 'keyless', and 'Read it once' which reinforce these traits without contradiction. It also clarifies that it returns docs, not live data, which is additional context beyond annotations. Slight deduction because it doesn't elaborate on output format or pagination, but the output schema presumably covers that.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is ~120 words, longer than average, but every clause earns its place: purpose, contents, usage timing, trigger questions, disambiguation from siblings, and parameter note. It's front-loaded with the core purpose and then branches into usage. Slight redundancy with 'short rationale' but overall well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a simple read-only purpose, a single parameter, and an output schema (presumably describing the guide structure), the description fully covers what the agent needs: what it returns, when to call it, what not to expect, and how to differentiate from peers. No gaps are evident.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema provides a full description of the single `rationale` parameter (with format, length, examples, privacy note). Schema coverage is 100%, so the description doesn't need to add parameter details. The description confirms 'Takes no parameters beyond a short rationale,' which adds clarity that no other parameters exist. This is above baseline because it explicitly reiterates the parameter surface.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly defines the tool as returning a static onboarding guide with specific contents (workflows, network name synonyms, call sequences, pitfalls). It explicitly contrasts with sibling tools: 'for the actual list of network slugs use getNetworks, and for coverage totals use getStats.' This is a specific verb+resource with clear scope and sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage guidance is explicit and actionable: 'Read it once at the start of a session before your first query, or when asked...' It lists trigger phrases and also states what the tool does NOT do ('returns onboarding docs, not live market data') and directs to alternatives. This is textbook when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getDexPoolsA
Read-onlyIdempotent

Get the pools belonging to one specific DEX on one network, e.g. all Uniswap v3 pools on ethereum. Proxies /networks/{network}/pools/search with a dex_name filter (the old /networks/{network}/dexes/{dex}/pools endpoint was removed): rows come back under 'results' with cursor pagination (has_next_page + next_cursor), and the 24h volume field is volume_usd_24h. 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, and pass that response's dex_id field ('uniswap_v3'), matched case-insensitively. Do not pass its dex_name field ('Uniswap V3'): a human display name returns HTTP 200 with an empty results[] rather than an error, so an empty answer here usually means the wrong form of the name was sent. Params: network (required slug); dex (required id, e.g. 'uniswap_v3'; the REST API calls this query parameter dex_name); limit (default 10, max 100); cursor (pass previous next_cursor to page); sort_by (default 'volume_usd_24h', canonical *_24h fields, short legacy names still accepted, alias order_by); sort_dir 'asc'/'desc' (default 'desc', alias sort). The old page number is gone: page 2 and above return an error pointing at cursor.

ParametersJSON Schema
NameRequiredDescriptionDefault
dexYesREQUIRED: the dex_id field from getNetworkDexes (e.g., 'uniswap_v3'), matched case-insensitively. Do not pass that response's dex_name field, the human display name (e.g., 'Uniswap V3'): it returns an empty results[] instead of an error, so a wrong value looks like a real but empty answer. The REST API calls this parameter dex_name.
pageNoSUPERSEDED: the replacement endpoint is cursor-paginated and ignores page. page=1 (or 0) still works as the first page; page=2 or above returns a structured error telling you to use cursor.
sortNoOPTIONAL: 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.
limitNoOPTIONAL: Number of items per page (default: 10, max: 100)
cursorNoOPTIONAL: 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.
networkYesREQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
sort_byNoOPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical *_24h names; short legacy names such as volume_usd are still accepted and normalized. The REST API calls this parameter order_by.
order_byNoOPTIONAL: 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_dirNoOPTIONAL (preferred): Sort direction (default: 'desc'). The REST API calls this parameter sort.
rationaleYesREQUIRED. 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryNo
resultsNo
next_cursorNo
has_next_pageNo

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnly/idempotent annotations, the description discloses key behavioral facts: the old endpoint was removed, the proxy endpoint is used, results live under 'results', pagination uses has_next_page/next_cursor, the 24h volume field is volume_usd_24h, and page numbers are deprecated. The empty-results pitfall for dex_name display strings is especially valuable behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loaded, opening with a clear purpose before moving into migration, pagination, usage, and parameter semantics. It is long, but most content earns its place. It loses one point because several parameter-level details are duplicated almost verbatim in the input schema, so the description is somewhat heavier than strictly necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 10 parameters, aliases, pagination, and a migrated endpoint, this description is nearly complete: it covers output placement, cursor pagination, field-name conventions, aliases, prerequisites, and failure modes. The presence of a rich output schema means return-value details do not need to be repeated, and the description fills all significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Even though schema coverage is effectively 100%, the description adds semantic value beyond the raw properties: it clarifies that dex must be the id from getNetworkDexes, not the display name; it explains cursor usage; it distinguishes preferred sort_by/sort_dir names from legacy aliases; and it explains REST-layer parameter names. This materially improves the agent's chance of making a correct call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb, resource, and scope: 'Get the pools belonging to one specific DEX on one network' with a concrete example of Uniswap v3 pools on ethereum. It also explicitly distinguishes the tool from getNetworkPools, so the purpose is unambiguous relative to its siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear use cases ('show me Raydium pools', 'top pairs on PancakeSwap', 'liquidity on Orca'), a prerequisite chain (getNetworkDexes or search first), and an explicit exclusions: do not pass the human-readable dex_name. It also names getNetworkPools as the broader alternative, giving the agent concrete when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getKeyStatusA
Read-onlyIdempotent

Report whether this server is sending an API key and which plan the API sees. Use when calls are being rate limited or refused, or when the user asks whether their DexPaprika key is working. Takes no arguments and reads no market data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate safe/read-only/idempotent behavior; the description adds that it reads no market data and checks key/plan. It doesn't contradict annotations, though it could mention potential error cases, but given annotation coverage this is solid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences convey purpose, usage, and a key constraint (no args). No redundant or verbose content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, when to use, and the nature of the output (reports key status and plan). Given the simplicity and lack of an output schema, this is sufficient for a diagnostic tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema is empty (0 parameters), and the description explicitly confirms 'Takes no arguments,' eliminating any ambiguity about invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose (report API key sending status and plan) and distinguishes it from sibling data-fetching tools by focusing on key health, not market data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use it (when rate-limited, refused, or user asks about key) and implies its distinct role vs. data tools, providing unambiguous usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getNetworkDexesA
Read-onlyIdempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoOPTIONAL: Page number for pagination (default: 1, 1-indexed)
sortNoOPTIONAL: 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.
limitNoOPTIONAL: Number of items per page (default: 10, max: 100)
networkYesREQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
sort_byNoOPTIONAL (preferred): Field to sort by (only 'pool'). The REST API calls this parameter order_by.
order_byNoOPTIONAL: 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_dirNoOPTIONAL (preferred): Sort direction, 'asc' or 'desc' (default: 'desc'). The REST API calls this parameter sort.
rationaleYesREQUIRED. 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dexesNo
page_infoNo

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint, idempotentHint, destructiveHint), the description adds that it's keyless, returns paginated results under 'dexes', and explains the sorting and pagination parameters. It also discloses legacy parameter aliases (sort/order_by) and clarifies that they are not deprecated at the REST layer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: first sentence states purpose and output, followed by key usage info, then clear parameter details. Every sentence adds value without redundancy. It front-loads critical info (read-only, keyless) and uses examples to clarify use.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 8 parameters (with many optional and aliases), an existing output schema, and annotations covering safety, the description is complete. It specifies the network prerequisite, pagination details, sorting options, output structure, and use cases. No gaps are apparent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds value by explaining the legacy aliases (order_by/sort), the valid values for sort_by ('pool'), and the default/max/1-indexed behavior for pagination. The required 'rationale' parameter is not mentioned in the description but is in the schema, so the description doesn't fully compensate for all parameters. Thus, slightly above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states it lists DEXes on a single network with examples (Uniswap on ethereum, Raydium on solana), and specifies the output fields 'dexes' and 'page_info'. It distinguishes from siblings by noting this feeds into getDexPools and is scoped to one network, contrasting with getNetworks and getDexPools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear use cases ('which DEXes are on Base?', 'does Solana have Orca?') and explicitly states the prerequisite: 'call getNetworks first for the slug'. It also implies when not to use (for pools, use getDexPools) and specifies the scope (single network).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getNetworkPoolsA
Read-onlyIdempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoOPTIONAL: 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.
limitNoOPTIONAL: Number of items per page (default: 10, max: 100)
cursorNoOPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page. Replaces the old page number.
networkYesREQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
sort_byNoOPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical *_24h names; short legacy names are still accepted. The REST API calls this parameter order_by.
order_byNoOPTIONAL: 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_dirNoOPTIONAL (preferred): Sort direction (default: 'desc'). The REST API calls this parameter sort.
rationaleYesREQUIRED. 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryNo
resultsNo
next_cursorNo
has_next_pageNo

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds useful context beyond this: the tool is 'keyless', returns results under 'results' with has_next_page and next_cursor, and defaults to 24h volume ranking. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: purpose, response shape, key property, usage examples, alternatives, then parameter essentials. Every sentence contributes actionable information without unnecessary repetition or padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, rich annotations, full schema coverage, and presence of an output schema, the description is complete: it covers scope, use cases, exclusions, defaults, pagination, aliases, and keyless access. No critical selection or invocation context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds practical guidance about aliases, preferred names, defaults, and pagination cursor usage. It omits the required 'rationale' parameter from its summary, but the schema documents that fully; overall the description adds meaningful semantic value beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool gets 'top liquidity pools across a whole network', specifies default ranking by 24h volume, and identifies itself as 'the primary chain-wide pool discovery tool'. It is sharply distinguished from siblings like getDexPools and getNetworkPoolsFilter.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit usage guidance is provided with concrete natural-language examples ('biggest pools on ethereum', 'top trading pairs on Base', 'most active pools on Solana'). It also names alternatives: narrow to one exchange with getDexPools, or use filters with getNetworkPoolsFilter.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getNetworkPoolsFilterA
Read-onlyIdempotent

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 (a relative offset such as '-24h', Unix seconds, RFC3339 or YYYY-MM-DD). 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).

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoOPTIONAL: 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.
limitNoOPTIONAL: Number of items per page (default: 50, max: 100)
cursorNoOPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page. Replaces the old page number.
networkYesREQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
sort_byNoOPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical *_24h names; short legacy names are still accepted. The REST API calls this parameter order_by.
order_byNoOPTIONAL: 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_dirNoOPTIONAL (preferred): Sort direction (default: 'desc'). The REST API calls this parameter sort.
rationaleYesREQUIRED. 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.
txns_24h_minNoOPTIONAL: Minimum number of transactions in 24h
created_afterNoOPTIONAL: Only pools created at or after this time: a relative offset such as '-24h' or '-7d', Unix seconds, RFC3339 or YYYY-MM-DD
volume_7d_maxNoOPTIONAL: Maximum 7d volume in USD
volume_7d_minNoOPTIONAL: Minimum 7d volume in USD
created_beforeNoOPTIONAL: Only pools created at or before this time, same formats as created_after (e.g. '-1h')
volume_24h_maxNoOPTIONAL: Maximum 24h volume in USD
volume_24h_minNoOPTIONAL: Minimum 24h volume in USD
liquidity_usd_maxNoOPTIONAL: Maximum pool liquidity in USD
liquidity_usd_minNoOPTIONAL: Minimum pool liquidity in USD
price_change_percentage_1h_maxNoOPTIONAL: Maximum 1h price change, in percent
price_change_percentage_1h_minNoOPTIONAL: Minimum 1h price change, in percent
price_change_percentage_5m_maxNoOPTIONAL: Maximum 5m price change, in percent
price_change_percentage_5m_minNoOPTIONAL: Minimum 5m price change, in percent. The shortest window we carry, so it is the one to reach for on 'what is moving right now'.
price_change_percentage_6h_maxNoOPTIONAL: Maximum 6h price change, in percent
price_change_percentage_6h_minNoOPTIONAL: Minimum 6h price change, in percent
price_change_percentage_24h_maxNoOPTIONAL: Maximum 24h price change, in percent
price_change_percentage_24h_minNoOPTIONAL: Minimum 24h price change, in percent. Negatives are allowed, so -20 finds pools down at least 20%.

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryNo
resultsNo
next_cursorNo
has_next_pageNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/destructiveHint=false, so the safety profile is covered; the description adds genuinely new context by noting the tool is 'keyless' (no auth), that filters are AND-combined, and that results arrive under 'results' with has_next_page/next_cursor.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the purpose, the sibling routing rule, and the return shape before listing parameters; the example queries and format notes earn their space, though the parameter enumeration is somewhat dense and partially duplicates the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 25-parameter filtering tool with an output schema and full annotation coverage, the description supplies everything needed: routing vs. siblings, filter combinators, date formats, pagination, and keyless access.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description does summarize the filter families and date-format options, but this largely restates enum/param docs rather than adding syntax or semantics the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get pools on one network filtered by numeric thresholds') and explicitly contrasts itself with the sibling getNetworkPools, so an agent can discriminate without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit selection rule ('Choose this over getNetworkPools when the user gives numeric constraints or a time window') plus three worked example utterances that map directly onto the filter parameters.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getNetworksA
Read-onlyIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
rationaleYesREQUIRED. 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
networksYesAll supported blockchain networks with current 24h volume + indexing stats.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, openWorld, idempotent, and non-destructive hints, and the description adds useful behavioral details beyond those: it states 'keyless' access, 'returns the full array with no pagination or sorting,' and that no parameters besides rationale are accepted. This goes beyond the structured annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is packed with high-value information—purpose, return fields, keyless access, usage examples, and a cross-reference to getStats—while remaining compact. Every sentence contributes to either selection, invocation, or interpretation of the tool; there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with a single required parameter and an output schema, the description fully covers what the agent needs: what the result contains, how to obtain the network slug for downstream calls, pagination/sorting behavior, and the alternative for platform-wide statistics. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the single rationale parameter with a clear description (coverage 100%), and the description reiterates 'takes no parameters beyond a short rationale.' This adds marginal clarity but does not materially extend what the schema provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description begins with a specific verb and resource: 'List every blockchain network DexPaprika indexes,' and enumerates the exact data fields (slug, volume, transaction count, pool count). It distinguishes itself from getStats and getCapabilities, so an agent can clearly tell what this tool does and what it does not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use guidance: 'Start here (or getCapabilities) to get the exact network slug that nearly every other tool requires' and provides concrete example queries like 'is Base/Solana/Arbitrum covered?'. It also names the alternative getStats for platform-wide totals, offering both inclusion and exclusion criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getPoolDetailsA
Read-onlyIdempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
networkYesREQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
inversedNoOPTIONAL: Whether to invert the price ratio (default: false)
rationaleYesREQUIRED. 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.
pool_addressYesREQUIRED: Pool address or identifier (e.g., '0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640')

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
feeNo
chainNo
dex_idNo
tokensNo
dex_nameNo
created_atNo
factory_idNo
last_priceNo
price_timeNo
price_statsNo
last_price_usdNo
token_reservesNo
created_at_block_numberNo

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond the annotations by disclosing that the tool is 'Read-only and keyless,' that it 'Returns live values only,' and that the result is a single object rather than a list. This adds meaningful behavioral context that the annotations alone do not provide, and it does not contradict any annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is information-dense and front-loaded: purpose comes first, followed by usage context, alternatives, then parameters. Despite length, every sentence earns its place by adding either scoping, routing, or parameter clarification that the schema and annotations do not already cover.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description fully covers what an agent needs: what the tool returns, when to use it, which siblings to use instead, the read-only/keyless behavior, and the key parameter semantics including the inversed flag. Since an output schema exists, the description does not need to explain return fields in more detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% for all parameters, so the baseline is 3. The description adds value by clarifying the pool_address format with a concrete example and explaining that inversed 'flips the token price ratio to token1/token0,' which is more semantically informative than the schema's 'whether to invert the price ratio'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get the full current snapshot for one pool by address,' and enumerates exactly what the snapshot contains (tokens, price, liquidity/TVL, 24h volume, transaction counts). It also explicitly says the result is a 'single pool object (not a list),' which clearly distinguishes it from any list-returning sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: after search or getNetworkPools surfaces a pool, or for questions like 'price/TVL of this pool?' or 'details for pool 0x...'. It also names concrete alternatives and exclusions: use getPoolOHLCV for historical candles and getPoolTransactions for the raw swap feed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getPoolOHLCVA
Read-onlyIdempotent

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 day', or backtesting; for the single current price use getPoolDetails instead. Params: network (required); pool_address (required); start (required; easiest as a relative offset from now such as '-24h', so you need not know today's date; also Unix seconds, RFC3339 or yyyy-mm-dd); end (optional); interval one of '1m','5m','10m','15m','30m','1h','6h','12h','24h' (default '24h'); limit (default 100, max 1000 candles); inversed (optional bool, default false). History depth and interval depend on the plan: without a key, the last 24 hours at '1h' and longer; a free key (DEXPAPRIKA_API_KEY) opens 7 days at '10m' and longer. Asking for more returns 403 with a message naming the plan that allows it.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoOPTIONAL: End time for historical data, same formats as start (e.g. '-1h')
limitNoOPTIONAL: Number of data points to retrieve (default: 100, max: 1000)
startYesREQUIRED: Start time. A relative offset from now is simplest and needs no knowledge of today's date: '-24h' (last 24 hours, the whole keyless window), '-7d', '-90m' (units s, m, h, d). Also accepts RFC3339 (e.g. '2024-01-01T00:00:00Z'), Unix epoch seconds and YYYY-MM-DD (treated as 00:00:00 UTC).
networkYesREQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
intervalNoOPTIONAL: Interval granularity (default: '24h')24h
inversedNoOPTIONAL: Whether to invert the price ratio for alternative pair perspective (default: false)
rationaleYesREQUIRED. 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.
pool_addressYesREQUIRED: Pool address or identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
ohlcvYesOpen-High-Low-Close-Volume rows ordered by time_open ascending.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only/idempotent, but the description adds substantial non-obvious behavior: keyless vs keyed history depth, how interval interacts with the plan, and that over-asking returns a 403 naming the required plan. That error and entitlement disclosure is exactly the kind of context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then use cases, then the sibling alternative, then params and limits. Dense and every clause carries information, though the parameter run-on is long enough to be slightly hard to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the description need not describe return values, and it still covers formats, defaults, limits, plan gating, and failure behavior. Nothing needed to call this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema lacks: the plan-dependent relationship between requested interval/history and what is actually returned. It does repeat several defaults already in the schema, which keeps it short of 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get historical OHLCV candles ... for one pool over a time range') plus the return shape (time-series array). It also distinguishes itself from the sibling getPoolDetails by naming the different job each does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: 'Use for price history of this pair, hourly chart for the last day, or backtesting; for the single current price use getPoolDetails instead.' Both the use case and the alternative are named, not implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getPoolTransactionsA
Read-onlyIdempotent

Get one pool's recent individual swap transactions, newest first, returned under 'transactions' (paginate with page, or a cursor). Read-only. Requires a Dev, Pro or Enterprise key since 30 September 2026: set DEXPAPRIKA_API_KEY to it and DEXPAPRIKA_API_BASE_URL to https://api-pro.dexpaprika.com. Keyless and free keys get 403 (DP403_PLAN_REQUIRED); getPoolDetails still gives the pool's 24h transaction counts and volume. 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, inclusive: a relative offset such as '-1h', Unix seconds, RFC3339 or YYYY-MM-DD; capped to the last 7 days); to (optional, exclusive, same formats, must be after from).

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoOPTIONAL: Filter transactions up to this time (exclusive), same formats as from. Must be after 'from'.
fromNoOPTIONAL: Filter transactions starting from this time (inclusive): a relative offset such as '-1h' or '-24h', Unix seconds, RFC3339 or YYYY-MM-DD. Results always capped to last 7 days.
pageNoOPTIONAL: Page number for pagination, up to 100 pages (default: 1, 1-indexed)
limitNoOPTIONAL: Number of items per page (default: 10, max: 100)
cursorNoOPTIONAL: Transaction ID used for cursor-based pagination
networkYesREQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
rationaleYesREQUIRED. 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.
pool_addressYesREQUIRED: Pool address or identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
page_infoYes
transactionsYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial context beyond them: the 403 DP403_PLAN_REQUIRED failure mode, required env vars and base URL, the 7-day history cap, and the page-vs-cursor pagination choice. This is unusually rich disclosure of auth and limit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then scope, then constraints; every sentence carries information. It is on the long side and the trailing params sentence partly duplicates the schema, costing a point but not readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter, auth-gated, paginated list tool with an output schema, the description covers access tier, failure mode, fallback, time-window limits, and sibling routing. Nothing an agent needs to invoke it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3; the description nonetheless adds the mutually exclusive page/cursor choice and restates the from/to inclusive/exclusive relationship and 7-day cap in one place. It does not explain the required 'rationale' parameter, which is the one semantic gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get one pool's recent individual swap transactions, newest first') and explicitly contrasts with getPoolOHLCV (candles) and getPoolDetails (summary snapshot). An agent can distinguish it from every sibling without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use examples ('recent trades on this pool', 'who swapped in the last hour', 'raw transaction feed') and names the alternatives to use for other needs. Also states the prerequisite (Dev/Pro/Enterprise key) and the exact fallback when access is denied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getStatsA
Read-onlyIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
rationaleYesREQUIRED. 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
poolsYesTotal pools indexed across all chains.
chainsYesTotal chains indexed.
tokensYesTotal tokens indexed.
factoriesYesTotal DEX factory contracts indexed.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds useful context beyond those annotations: it is keyless, returns a single summary object, and represents ecosystem-wide counts only. This complements the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core purpose, followed by concrete use cases, exclusions, sibling alternates, and a note on parameters. Every sentence earns its place; there is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only summary tool, the description is complete: it states what is returned, how it behaves, when to use it, and how it differs from sibling tools. The output schema covers return values, and annotations cover safety traits, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema fully documents the sole 'rationale' parameter with clear guidance and constraints, so schema coverage is 100%. The description only adds that there are no functional parameters beyond the rationale, which is helpful but does not materially extend the schema's already thorough parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Get platform-wide totals for DexPaprika') and enumerates exactly what is counted: networks, DEXes, pools, and tokens. It also clearly distinguishes this from the per-network breakdown provided by getNetworks, so an agent can tell them apart without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit example queries ('how much data do you cover?', 'how many chains or pools total?') and explicitly says when not to use it: these are not per-network figures, so use getNetworks for per-chain data and getCapabilities for onboarding docs. This is excellent routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getTokenDetailsA
Read-onlyIdempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
networkYesREQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
rationaleYesREQUIRED. 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.
token_addressYesREQUIRED: Token contract address (e.g., 'JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN' for Jupiter on Solana)

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
chainNo
symbolNo
summaryNo
websiteNo
added_atNo
decimalsNo
has_imageNo
descriptionNo
price_statsNo
total_supplyNoRaw on-chain total supply. Big numbers may overflow JS Number, so handle as string for tokens with 18+ decimals.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, destructiveHint=false. The description adds 'Read-only and keyless' which reinforces the safety profile and adds the keyless auth detail beyond annotations. Doesn't disclose rate limits but annotations carry the load appropriately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Every sentence earns its place: main description, usage example, symbol-resolution edge case, and sibling pointer. The final sentence is an info-dense list of both alternatives in a compact form. No fluff, no repetition of schema content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there's an output schema (return value documented elsewhere), 100% param coverage, and rich annotations, the description is complete. It covers edge cases (symbol-only queries), access model (keyless), and disambiguation from 17 siblings. Nothing important is left unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds value by explaining the network param is a 'slug', providing a real example for token_address, and adding entity resolution workflow guidance ('call search first') that anticipates a common failure mode not in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('Get') + resource ('one token's data and metadata by contract address') + scope ('on one network'). Clearly distinguishes from siblings by explicitly naming getTokenMultiPrices and getTokenPools as alternatives for different needs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use ('price and volume for 0x... on Base'), what to do with only a symbol ('call search first to resolve the address'), and explicit alternatives ('use getTokenMultiPrices', 'use getTokenPools'). This is exemplary usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getTokenMultiPricesA
Read-onlyIdempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
tokensYesREQUIRED: Up to 10 token contract addresses on the same network.
networkYesREQUIRED: Network ID from getNetworks
rationaleYesREQUIRED. 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pricesYesUSD prices for the requested tokens, in input order.
missing_tokensNoInput tokens that upstream could not price (invalid address, no liquidity, unknown contract). Empty array when all input tokens were resolved.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark it read-only and non-destructive, so the description focuses on extra behavior: it is keyless, and tokens that fail to price are returned in missing_tokens instead of being silently dropped, with a warning to check that list. These details materially affect how an agent should interpret results and are not available from annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence earns its place: purpose, result shape, safety, partial-failure caveat, use cases, sibling alternative, and parameter constraints. It front-loads the core operation before context, so an agent gets the essential decision information first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batched read tool with a full output schema and safety annotations, this description covers the non-obvious failure mode, the intended use cases, the alternative tool, and cross-parameter constraints. There is no critical gap left to guesswork.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema carries the baseline meaning. The description adds value by emphasizing that network is the slug, all tokens must share it, and tokens are contract addresses, and it restates the 1-to-10 array bound in prose. The required rationale parameter is left to the schema, which is acceptable given its complete description there.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first clause names a specific operation ('Get current USD prices'), the exact resource scope ('up to 10 tokens on the same network'), and the call style (one batched call). It also differentiates itself from the close sibling getTokenDetails by stating that getTokenDetails is for one token with metadata and multi-timframe stats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives explicit matching use cases ('prices for these tokens', 'compare the price of X, Y and Z', portfolio/dashboard snapshot) and names the alternative for single-token enrichment (getTokenDetails). This lets an agent route between siblings without inferring intent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getTokenOHLCVA
Read-onlyIdempotent

Get historical USD OHLCV candles for one token over a time range, returned as a time-series array. The price and volume are computed across every pool the token trades in on the network (a volume-weighted price, and volume summed across those pools), not a single pair. Requires a Dev or Pro plan: set DEXPAPRIKA_API_KEY to that key and DEXPAPRIKA_API_BASE_URL to https://api-pro.dexpaprika.com. On a keyless or free key this returns 403 (DP403_PLAN_REQUIRED), since there is no keyless or free window at all. On that 403, fall back to getPoolOHLCV on the token's main pool, found with getTokenPools sorted by volume. Use for 'price history of this token' or 'USD chart for this token'; for a single pair's candles use getPoolOHLCV, and for the current price use getTokenDetails. Params: network (required); token_address (required); start (required; easiest as a relative offset from now such as '-24h', so you need not know today's date; also Unix seconds, RFC3339 or yyyy-mm-dd); end (optional, same formats); interval one of '1m','5m','10m','15m','30m','1h','6h','12h','24h' (default '24h'); limit (default 10, max 1000 candles). Dev plan history is limited to the last 30 days. There is no inversed parameter on this endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoOPTIONAL: End time, same formats as start (e.g. '-1h')
limitNoOPTIONAL: Number of data points to retrieve (default: 10, max: 1000)
startYesREQUIRED: Start time. A relative offset from now is simplest and needs no knowledge of today's date: '-24h' (last 24 hours), '-7d', '-90m' (units s, m, h, d). Also accepts RFC3339 (e.g. '2024-01-01T00:00:00Z'), Unix epoch seconds and YYYY-MM-DD (treated as 00:00:00 UTC).
networkYesREQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
intervalNoOPTIONAL: Interval granularity (default: '24h')24h
rationaleYesREQUIRED. 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.
token_addressYesREQUIRED: Token contract address

Output Schema

ParametersJSON Schema
NameRequiredDescription
ohlcvYesUSD Open-High-Low-Close-Volume rows ordered by time_open ascending, volume-weighted across every pool the token trades in on the network.

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations cover the safety profile (readOnly, idempotent, openWorld, non-destructive), and the description adds substantial behavioral context beyond them: a hard plan requirement with the exact env vars to set, the precise failure mode (403 with code DP403_PLAN_REQUIRED and no keyless/free window), and a Dev-plan 30-day history cap. It also notes there is no 'inversed' parameter, pre-empting a plausible wrong assumption.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, aggregation semantics, and plan requirement before the fallback and parameter detail, so the critical information lands first. It is long and the trailing parameter recitation partially repeats the 100%-covered schema, which costs it a point, but nearly every sentence carries actionable content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation, and the description still frames the return shape ('time-series array'). For a gated, read-only analytics endpoint it covers auth, plan limits, failure handling, fallback, and the aggregation caveat that could otherwise cause misinterpretation of the data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds real value: it flags start as easiest as a relative offset like '-24h' (avoiding the need to know today's date), enumerates the interval enum and its default, states limit default/max, and discloses the Dev-plan 30-day history limit that constrains what start/end can meaningfully request. The only weakness is that much of the param text duplicates the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get historical USD OHLCV candles for one token over a time range') and immediately disambiguates scope by explaining that price/volume are aggregated across every pool the token trades in, not a single pair. It also names the siblings it is not (getPoolOHLCV for a single pair, getTokenDetails for current price), so an agent can route correctly without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use triggers ('price history of this token', 'USD chart for this token'), names the two alternatives and the conditions that select them, and supplies a concrete fallback path on failure (getPoolOHLCV on the main pool found via getTokenPools sorted by volume). Nothing about selection is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getTokenPoolsA
Read-onlyIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoOPTIONAL: 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.
limitNoOPTIONAL: Number of items per page (default: 10, max: 100)
cursorNoOPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page. Replaces the old page number.
addressNoUNSUPPORTED (deprecated alias of paired_token_address): passing it returns a structured error.
networkYesREQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
reorderNoUNSUPPORTED (deprecated alias of inversed): passing true returns a structured error.
sort_byNoOPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical *_24h names; short legacy names are still accepted. The REST API calls this parameter order_by.
inversedNoUNSUPPORTED: the replacement endpoint has no pair-perspective flip. Passing true returns a structured error; invert prices client-side (1/price) instead.
order_byNoOPTIONAL: 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_dirNoOPTIONAL (preferred): Sort direction (default: 'desc'). The REST API calls this parameter sort.
rationaleYesREQUIRED. 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.
token_addressYesREQUIRED: Token contract address. Results are restricted to pools on the given network containing this token. Unknown addresses return empty results, not an error.
paired_token_addressNoUNSUPPORTED: the replacement endpoint cannot filter by a second token. Passing it returns a structured error; filter results[].tokens client-side for pair queries.

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryNo
resultsNo
next_cursorNo
has_next_pageNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds useful context: 'Read-only and keyless', 'unknown addresses return empty results, not an error', and 'Extra params such as inversed or paired_token_address are unsupported and error'. This goes beyond annotations by explaining error behavior and keyless access.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but well-organized: purpose, output structure, usage examples, network-scoping caveat, alternative tool reference, and parameter summary. It's longer than ideal but every sentence adds value. The parameter summary at the end is efficient, though it partially duplicates schema info.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (13 params, 4 enums, aliases, unsupported params), the description covers the essential usage patterns, error cases, and alternatives. The output schema exists, so return values are documented. The description could mention pagination behavior more explicitly, but the cursor parameter and next_cursor reference in the description cover it adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions for each parameter. The description adds value by summarizing key parameters (network, token_address, limit, cursor, sort_by, sort_dir) and explicitly flagging unsupported parameters (inversed, paired_token_address) that would error. It also clarifies aliases (sort_by/order_by, sort_dir/sort) which the schema also documents, but the description's summary helps the agent quickly understand the parameter landscape.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get the liquidity pools that contain a specific token on one network' with specific output structure ('returned under results with has_next_page and next_cursor'). It distinguishes from siblings by mentioning network-scoping and pointing to getTokenDetails for price queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit usage guidance: 'Use for which pools hold WETH on ethereum? or liquidity venues for 0x...' and 'For the token's own price use getTokenDetails'. Also gives clear when-not-to-use: 'Network-scoped, so run search first if unsure of the network' and notes unknown addresses return empty results.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

getTopTokensA
Read-onlyIdempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoOPTIONAL: 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.
limitNoOPTIONAL: Number of items per page (default: 50, max: 100)
cursorNoOPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page. Replaces the old page number.
networkYesREQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')
sort_byNoOPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical names; short legacy names are still accepted. The REST API calls this parameter order_by.
order_byNoOPTIONAL: 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_dirNoOPTIONAL (preferred): Sort direction (default: 'desc'). The REST API calls this parameter sort.
rationaleYesREQUIRED. 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryNo
resultsNo
next_cursorNo
has_next_pageNo

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Expands beyond annotations: notes keyless access, pagination response format, and the critical caveat that sorting by raw price silently falls back to volume. Annotations already cover idempotent/read-only; description adds operational detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise yet comprehensive: first sentence states purpose, second gives usage guidance, third details parameters. No extraneous text; information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all aspects: purpose, parameters, pagination, caveats, and alternative tool. Output schema exists so return format is adequately summarized. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Despite 100% schema coverage, description adds value: explains aliases (sort->sort_dir, order_by->sort_by), default/max for limit, cursor usage, and the price sorting fallback. Schema alone doesn't provide this context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool retrieves top tokens ranked by various metrics (volume, liquidity, etc.) and gives concrete examples ('top gainers on Solana'). Distinguishes from sibling filterNetworkTokens.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says when to use (top tokens by specific metrics) and when not to (arbitrary numeric filters or time window), directing to filterNetworkTokens. Also mentions read-only and keyless.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updatesv2.7.1
    • ChangedfilterNetworkTokens4 fields changed
      • changedInput schema / properties / created_after / description
        Previous value: -"OPTIONAL: Only tokens created after this UNIX timestamp"New value: +"OPTIONAL: Only tokens created at or after this time: a relative offset such as '-24h' or '-7d', Unix seconds, RFC3339 or YYYY-MM-DD"
      • changedInput schema / properties / created_after / type
        Previous value: -"number"New value: +"string"
      • changedInput schema / properties / created_before / description
        Previous value: -"OPTIONAL: Only tokens created before this UNIX timestamp"New value: +"OPTIONAL: Only tokens created at or before this time, same formats as created_after (e.g. '-1h')"
      • changedInput schema / properties / created_before / type
        Previous value: -"number"New value: +"string"
    • ChangedgetNetworkPoolsFilter4 fields changed
      • changedInput schema / properties / created_after / description
        Previous value: -"OPTIONAL: Only pools created after this UNIX timestamp"New value: +"OPTIONAL: Only pools created at or after this time: a relative offset such as '-24h' or '-7d', Unix seconds, RFC3339 or YYYY-MM-DD"
      • changedInput schema / properties / created_after / type
        Previous value: -"number"New value: +"string"
      • changedInput schema / properties / created_before / description
        Previous value: -"OPTIONAL: Only pools created before this UNIX timestamp"New value: +"OPTIONAL: Only pools created at or before this time, same formats as created_after (e.g. '-1h')"
      • changedInput schema / properties / created_before / type
        Previous value: -"number"New value: +"string"
    • ChangedgetPoolOHLCV3 fields changed
      • changedInput schema / properties / end / description
        Previous value: -"OPTIONAL: End time for historical data (max 1 year from start)"New value: +"OPTIONAL: End time for historical data, same formats as start (e.g. '-1h')"
      • changedInput schema / properties / limit / description
        Previous value: -"OPTIONAL: Number of data points to retrieve (default: 100, max: 366)"New value: +"OPTIONAL: Number of data points to retrieve (default: 100, max: 1000)"
      • changedInput schema / properties / start / description
        Previous value: -"REQUIRED: Start time for historical data (Unix timestamp, RFC3339 timestamp, or yyyy-mm-dd format)"New value: +"REQUIRED: Start time. A relative offset from now is simplest and needs no knowledge of today's date: '-24h' (last 24 hours, the whole keyless window), '-7d', '-90m' (units s, m, h, d). Also accepts RFC3339 (e.g. '2024-01-01T00:00:00Z'), Unix epoch seconds and YYYY-MM-DD (treated as 00:00:00 UTC)."
    • ChangedgetPoolTransactions4 fields changed
      • changedInput schema / properties / from / description
        Previous value: -"OPTIONAL: Filter transactions starting from this UNIX timestamp (inclusive). Results always capped to last 7 days."New value: +"OPTIONAL: Filter transactions starting from this time (inclusive): a relative offset such as '-1h' or '-24h', Unix seconds, RFC3339 or YYYY-MM-DD. Results always capped to last 7 days."
      • changedInput schema / properties / from / type
        Previous value: -"number"New value: +"string"
      • changedInput schema / properties / to / description
        Previous value: -"OPTIONAL: Filter transactions up to this UNIX timestamp (exclusive). Must be after 'from'."New value: +"OPTIONAL: Filter transactions up to this time (exclusive), same formats as from. Must be after 'from'."
      • changedInput schema / properties / to / type
        Previous value: -"number"New value: +"string"
    • AddedgetTokenOHLCV
  2. 8 tool updatesv2.5.0
    • ChangedfilterNetworkTokens2 fields changed
      • addedInput schema / properties / price_change_percentage_24h_max
        Added value: +{
        +  "description": "OPTIONAL: Maximum 24h price change, in percent",
        +  "type": "number"
        +}
      • addedInput schema / properties / price_change_percentage_24h_min
        Added value: +{
        +  "description": "OPTIONAL: Minimum 24h price change, in percent. Negatives are allowed, so -20 finds tokens down at least 20%. This is the only price-change window tokens carry; for 6h, 1h or 5m use getNetworkPoolsFilter.",
        +  "type": "number"
        +}
    • ChangedgetCapabilities13 fields changed
      • addedOutput schema / properties / stats / properties / console_url
        Added value: +{
        +  "description": "Where to register a free API key, which doubles the per-minute limit.",
        +  "type": "string"
        +}
      • removedOutput schema / properties / stats / properties / free
        Removed value: -{
        -  "type": "boolean"
        -}
      • addedOutput schema / properties / stats / properties / free_key_credits_per_month
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / stats / properties / free_key_requests_per_minute
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / stats / properties / free_tier
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / stats / properties / free_tier_credits_per_month
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / stats / properties / free_tier_max_data_delay_seconds
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / stats / properties / free_tier_requests_per_minute
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / stats / properties / key_required_to_start
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / stats / properties / limits_url
        Added value: +{
        +  "description": "Live source for the quota and rate figures above, which change.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / stats / properties / pricing_url
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / stats / properties / requires_api_key
        Removed value: -{
        -  "type": "boolean"
        -}
      • changedOutput schema / properties / stats / required
        Previous value: -[
        -  "networks",
        -  "tokens_approx",
        -  "pools_approx",
        -  "free",
        -  "requires_api_key"
        -]New value: +[
        +  "networks",
        +  "tokens_approx",
        +  "pools_approx",
        +  "free_tier",
        +  "key_required_to_start",
        +  "free_tier_credits_per_month",
        +  "free_key_credits_per_month",
        +  "free_tier_requests_per_minute",
        +  "free_key_requests_per_minute",
        +  "free_tier_max_data_delay_seconds",
        +  "limits_url",
        +  "console_url",
        +  "pricing_url"
        +]
    • ChangedgetDexPools13 fields changed
      • addedInput schema / properties / cursor
        Added value: +{
        +  "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.",
        +  "type": "string"
        +}
      • changedInput schema / properties / dex / description
        Previous value: -"REQUIRED: DEX identifier from getNetworkDexes (e.g., 'uniswap_v3')"New value: +"REQUIRED: the dex_id field from getNetworkDexes (e.g., 'uniswap_v3'), matched case-insensitively. Do not pass that response's dex_name field, the human display name (e.g., 'Uniswap V3'): it returns an empty results[] instead of an error, so a wrong value looks like a real but empty answer. The REST API calls this parameter dex_name."
      • changedInput schema / properties / order_by / enum
        Previous value: -[
        -  "volume_usd",
        -  "price_usd",
        -  "transactions",
        -  "last_price_change_usd_24h",
        -  "created_at"
        -]New value: +[
        +  "volume_usd_24h",
        +  "volume_usd_7d",
        +  "volume_usd_30d",
        +  "liquidity_usd",
        +  "txns_24h",
        +  "created_at",
        +  "price_usd",
        +  "price_change_percentage_24h",
        +  "price_change_percentage_6h",
        +  "price_change_percentage_1h",
        +  "price_change_percentage_5m",
        +  "volume_usd",
        +  "transactions",
        +  "last_price_change_usd_24h",
        +  "volume_24h",
        +  "volume_7d",
        +  "volume_30d",
        +  "liquidity"
        +]
      • removedInput schema / properties / page / default
        Removed value: -1
      • changedInput schema / properties / page / description
        Previous value: -"OPTIONAL: Page number for pagination (default: 1, 1-indexed)"New value: +"SUPERSEDED: the replacement endpoint is cursor-paginated and ignores page. page=1 (or 0) still works as the first page; page=2 or above returns a structured error telling you to use cursor."
      • changedInput schema / properties / sort_by / description
        Previous value: -"OPTIONAL (preferred): Field to sort by (default: 'volume_usd'). The REST API calls this parameter order_by."New value: +"OPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical *_24h names; short legacy names such as volume_usd are still accepted and normalized. The REST API calls this parameter order_by."
      • changedInput schema / properties / sort_by / enum
        Previous value: -[
        -  "volume_usd",
        -  "price_usd",
        -  "transactions",
        -  "last_price_change_usd_24h",
        -  "created_at"
        -]New value: +[
        +  "volume_usd_24h",
        +  "volume_usd_7d",
        +  "volume_usd_30d",
        +  "liquidity_usd",
        +  "txns_24h",
        +  "created_at",
        +  "price_usd",
        +  "price_change_percentage_24h",
        +  "price_change_percentage_6h",
        +  "price_change_percentage_1h",
        +  "price_change_percentage_5m",
        +  "volume_usd",
        +  "transactions",
        +  "last_price_change_usd_24h",
        +  "volume_24h",
        +  "volume_7d",
        +  "volume_30d",
        +  "liquidity"
        +]
      • addedOutput schema / properties / has_next_page
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / next_cursor
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / page_info
        Removed value: -{
        -  "additionalProperties": true,
        -  "properties": {
        -    "limit": {
        -      "description": "Items per page in the request.",
        -      "type": "number"
        -    },
        -    "page": {
        -      "description": "Current page number (1-indexed).",
        -      "type": "number"
        -    },
        -    "total_items": {
        -      "description": "Total number of items across all pages.",
        -      "type": "number"
        -    },
        -    "total_pages": {
        -      "description": "Total number of pages available.",
        -      "type": "number"
        -    }
        -  },
        -  "type": "object"
        -}
      • removedOutput schema / properties / pools
        Removed value: -{
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "chain": {
        -        "description": "Network slug (e.g. 'ethereum'). Note: also exposed as 'network' on some endpoints.",
        -        "type": "string"
        -      },
        -      "created_at": {
        -        "description": "ISO 8601 pool-creation timestamp.",
        -        "type": "string"
        -      },
        -      "created_at_block_number": {
        -        "type": "number"
        -      },
        -      "dex_id": {
        -        "type": "string"
        -      },
        -      "dex_name": {
        -        "type": "string"
        -      },
        -      "fee": {
        -        "description": "Pool fee (units depend on DEX; null for some DEXes).",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "id": {
        -        "description": "Pool contract address.",
        -        "type": "string"
        -      },
        -      "last_price": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "last_price_usd": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "tokens": {
        -        "items": {
        -          "additionalProperties": true,
        -          "properties": {
        -            "added_at": {
        -              "description": "ISO 8601 timestamp when DexPaprika first indexed this token.",
        -              "type": "string"
        -            },
        -            "chain": {
        -              "type": "string"
        -            },
        -            "decimals": {
        -              "type": "number"
        -            },
        -            "fdv": {
        -              "description": "Fully-diluted valuation in USD.",
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "id": {
        -              "description": "Token contract address (chain-canonical form).",
        -              "type": "string"
        -            },
        -            "name": {
        -              "type": "string"
        -            },
        -            "symbol": {
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / query
        Added value: +{
        +  "additionalProperties": {},
        +  "type": "object"
        +}
      • addedOutput schema / properties / results
        Added value: +{
        +  "items": {
        +    "additionalProperties": true,
        +    "properties": {
        +      "chain": {
        +        "description": "Network slug (e.g. 'ethereum'). Note: also exposed as 'network' on some endpoints.",
        +        "type": "string"
        +      },
        +      "created_at": {
        +        "description": "ISO 8601 pool-creation timestamp.",
        +        "type": "string"
        +      },
        +      "created_at_block_number": {
        +        "type": "number"
        +      },
        +      "dex_id": {
        +        "type": "string"
        +      },
        +      "dex_name": {
        +        "type": "string"
        +      },
        +      "fee": {
        +        "description": "Pool fee (units depend on DEX; null for some DEXes).",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "id": {
        +        "description": "Pool contract address.",
        +        "type": "string"
        +      },
        +      "last_price": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "last_price_usd": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "tokens": {
        +        "items": {
        +          "additionalProperties": true,
        +          "properties": {
        +            "added_at": {
        +              "description": "ISO 8601 timestamp when DexPaprika first indexed this token.",
        +              "type": "string"
        +            },
        +            "chain": {
        +              "type": "string"
        +            },
        +            "decimals": {
        +              "type": "number"
        +            },
        +            "fdv": {
        +              "description": "Fully-diluted valuation in USD.",
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "id": {
        +              "description": "Token contract address (chain-canonical form).",
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "symbol": {
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • AddedgetKeyStatus
    • ChangedgetNetworkPools2 fields changed
      • changedInput schema / properties / order_by / enum
        Previous value: -[
        -  "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"
        -]New value: +[
        +  "volume_usd_24h",
        +  "volume_usd_7d",
        +  "volume_usd_30d",
        +  "liquidity_usd",
        +  "txns_24h",
        +  "created_at",
        +  "price_usd",
        +  "price_change_percentage_24h",
        +  "price_change_percentage_6h",
        +  "price_change_percentage_1h",
        +  "price_change_percentage_5m",
        +  "volume_usd",
        +  "transactions",
        +  "last_price_change_usd_24h",
        +  "volume_24h",
        +  "volume_7d",
        +  "volume_30d",
        +  "liquidity"
        +]
      • changedInput schema / properties / sort_by / enum
        Previous value: -[
        -  "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"
        -]New value: +[
        +  "volume_usd_24h",
        +  "volume_usd_7d",
        +  "volume_usd_30d",
        +  "liquidity_usd",
        +  "txns_24h",
        +  "created_at",
        +  "price_usd",
        +  "price_change_percentage_24h",
        +  "price_change_percentage_6h",
        +  "price_change_percentage_1h",
        +  "price_change_percentage_5m",
        +  "volume_usd",
        +  "transactions",
        +  "last_price_change_usd_24h",
        +  "volume_24h",
        +  "volume_7d",
        +  "volume_30d",
        +  "liquidity"
        +]
    • ChangedgetNetworkPoolsFilter10 fields changed
      • changedInput schema / properties / order_by / enum
        Previous value: -[
        -  "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"
        -]New value: +[
        +  "volume_usd_24h",
        +  "volume_usd_7d",
        +  "volume_usd_30d",
        +  "liquidity_usd",
        +  "txns_24h",
        +  "created_at",
        +  "price_usd",
        +  "price_change_percentage_24h",
        +  "price_change_percentage_6h",
        +  "price_change_percentage_1h",
        +  "price_change_percentage_5m",
        +  "volume_usd",
        +  "transactions",
        +  "last_price_change_usd_24h",
        +  "volume_24h",
        +  "volume_7d",
        +  "volume_30d",
        +  "liquidity"
        +]
      • addedInput schema / properties / price_change_percentage_1h_max
        Added value: +{
        +  "description": "OPTIONAL: Maximum 1h price change, in percent",
        +  "type": "number"
        +}
      • addedInput schema / properties / price_change_percentage_1h_min
        Added value: +{
        +  "description": "OPTIONAL: Minimum 1h price change, in percent",
        +  "type": "number"
        +}
      • addedInput schema / properties / price_change_percentage_24h_max
        Added value: +{
        +  "description": "OPTIONAL: Maximum 24h price change, in percent",
        +  "type": "number"
        +}
      • addedInput schema / properties / price_change_percentage_24h_min
        Added value: +{
        +  "description": "OPTIONAL: Minimum 24h price change, in percent. Negatives are allowed, so -20 finds pools down at least 20%.",
        +  "type": "number"
        +}
      • addedInput schema / properties / price_change_percentage_5m_max
        Added value: +{
        +  "description": "OPTIONAL: Maximum 5m price change, in percent",
        +  "type": "number"
        +}
      • addedInput schema / properties / price_change_percentage_5m_min
        Added value: +{
        +  "description": "OPTIONAL: Minimum 5m price change, in percent. The shortest window we carry, so it is the one to reach for on 'what is moving right now'.",
        +  "type": "number"
        +}
      • addedInput schema / properties / price_change_percentage_6h_max
        Added value: +{
        +  "description": "OPTIONAL: Maximum 6h price change, in percent",
        +  "type": "number"
        +}
      • addedInput schema / properties / price_change_percentage_6h_min
        Added value: +{
        +  "description": "OPTIONAL: Minimum 6h price change, in percent",
        +  "type": "number"
        +}
      • changedInput schema / properties / sort_by / enum
        Previous value: -[
        -  "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"
        -]New value: +[
        +  "volume_usd_24h",
        +  "volume_usd_7d",
        +  "volume_usd_30d",
        +  "liquidity_usd",
        +  "txns_24h",
        +  "created_at",
        +  "price_usd",
        +  "price_change_percentage_24h",
        +  "price_change_percentage_6h",
        +  "price_change_percentage_1h",
        +  "price_change_percentage_5m",
        +  "volume_usd",
        +  "transactions",
        +  "last_price_change_usd_24h",
        +  "volume_24h",
        +  "volume_7d",
        +  "volume_30d",
        +  "liquidity"
        +]
    • ChangedgetTokenDetails1 field changed
      • changedOutput schema / properties / total_supply / description
        Previous value: -"Raw on-chain total supply. Big numbers may overflow JS Number — handle as string for tokens with 18+ decimals."New value: +"Raw on-chain total supply. Big numbers may overflow JS Number, so handle as string for tokens with 18+ decimals."
    • ChangedgetTokenPools2 fields changed
      • changedInput schema / properties / order_by / enum
        Previous value: -[
        -  "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"
        -]New value: +[
        +  "volume_usd_24h",
        +  "volume_usd_7d",
        +  "volume_usd_30d",
        +  "liquidity_usd",
        +  "txns_24h",
        +  "created_at",
        +  "price_usd",
        +  "price_change_percentage_24h",
        +  "price_change_percentage_6h",
        +  "price_change_percentage_1h",
        +  "price_change_percentage_5m",
        +  "volume_usd",
        +  "transactions",
        +  "last_price_change_usd_24h",
        +  "volume_24h",
        +  "volume_7d",
        +  "volume_30d",
        +  "liquidity"
        +]
      • changedInput schema / properties / sort_by / enum
        Previous value: -[
        -  "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"
        -]New value: +[
        +  "volume_usd_24h",
        +  "volume_usd_7d",
        +  "volume_usd_30d",
        +  "liquidity_usd",
        +  "txns_24h",
        +  "created_at",
        +  "price_usd",
        +  "price_change_percentage_24h",
        +  "price_change_percentage_6h",
        +  "price_change_percentage_1h",
        +  "price_change_percentage_5m",
        +  "volume_usd",
        +  "transactions",
        +  "last_price_change_usd_24h",
        +  "volume_24h",
        +  "volume_7d",
        +  "volume_30d",
        +  "liquidity"
        +]
  3. 7 tool updatesv2.3.2
    • ChangedfilterNetworkTokens4 fields changed
      • changedInput schema / properties / order_by / description
        Previous value: -"OPTIONAL (deprecated alias of sort_by): Field to sort by"New value: +"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."
      • changedInput schema / properties / sort / description
        Previous value: -"OPTIONAL (deprecated alias of sort_dir): Sort direction"New value: +"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."
      • changedInput schema / properties / sort_by / description
        Previous value: -"OPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical names; short legacy names are still accepted."New value: +"OPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical names; short legacy names are still accepted. The REST API calls this parameter order_by."
      • changedInput schema / properties / sort_dir / description
        Previous value: -"OPTIONAL (preferred): Sort direction (default: 'desc')"New value: +"OPTIONAL (preferred): Sort direction (default: 'desc'). The REST API calls this parameter sort."
    • ChangedgetDexPools4 fields changed
      • changedInput schema / properties / order_by / description
        Previous value: -"OPTIONAL (deprecated alias of sort_by): Field to sort by"New value: +"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."
      • changedInput schema / properties / sort / description
        Previous value: -"OPTIONAL (deprecated alias of sort_dir): Sort direction"New value: +"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."
      • changedInput schema / properties / sort_by / description
        Previous value: -"OPTIONAL (preferred): Field to sort by (default: 'volume_usd')"New value: +"OPTIONAL (preferred): Field to sort by (default: 'volume_usd'). The REST API calls this parameter order_by."
      • changedInput schema / properties / sort_dir / description
        Previous value: -"OPTIONAL (preferred): Sort direction (default: 'desc')"New value: +"OPTIONAL (preferred): Sort direction (default: 'desc'). The REST API calls this parameter sort."
    • ChangedgetNetworkDexes4 fields changed
      • changedInput schema / properties / order_by / description
        Previous value: -"OPTIONAL (deprecated alias of sort_by): Field to sort by"New value: +"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."
      • changedInput schema / properties / sort / description
        Previous value: -"OPTIONAL (deprecated alias of sort_dir): Sort direction"New value: +"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."
      • changedInput schema / properties / sort_by / description
        Previous value: -"OPTIONAL (preferred): Field to sort by (only 'pool')"New value: +"OPTIONAL (preferred): Field to sort by (only 'pool'). The REST API calls this parameter order_by."
      • changedInput schema / properties / sort_dir / description
        Previous value: -"OPTIONAL (preferred): Sort direction, 'asc' or 'desc' (default: 'desc')"New value: +"OPTIONAL (preferred): Sort direction, 'asc' or 'desc' (default: 'desc'). The REST API calls this parameter sort."
    • ChangedgetNetworkPools4 fields changed
      • changedInput schema / properties / order_by / description
        Previous value: -"OPTIONAL (deprecated alias of sort_by): Field to sort by"New value: +"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."
      • changedInput schema / properties / sort / description
        Previous value: -"OPTIONAL (deprecated alias of sort_dir): Sort direction"New value: +"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."
      • changedInput schema / properties / sort_by / description
        Previous value: -"OPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical *_24h names; short legacy names are still accepted."New value: +"OPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical *_24h names; short legacy names are still accepted. The REST API calls this parameter order_by."
      • changedInput schema / properties / sort_dir / description
        Previous value: -"OPTIONAL (preferred): Sort direction (default: 'desc')"New value: +"OPTIONAL (preferred): Sort direction (default: 'desc'). The REST API calls this parameter sort."
    • ChangedgetNetworkPoolsFilter4 fields changed
      • changedInput schema / properties / order_by / description
        Previous value: -"OPTIONAL (deprecated alias of sort_by): Field to sort by"New value: +"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."
      • changedInput schema / properties / sort / description
        Previous value: -"OPTIONAL (deprecated alias of sort_dir): Sort direction"New value: +"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."
      • changedInput schema / properties / sort_by / description
        Previous value: -"OPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical *_24h names; short legacy names are still accepted."New value: +"OPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical *_24h names; short legacy names are still accepted. The REST API calls this parameter order_by."
      • changedInput schema / properties / sort_dir / description
        Previous value: -"OPTIONAL (preferred): Sort direction (default: 'desc')"New value: +"OPTIONAL (preferred): Sort direction (default: 'desc'). The REST API calls this parameter sort."
    • ChangedgetTokenPools4 fields changed
      • changedInput schema / properties / order_by / description
        Previous value: -"OPTIONAL (deprecated alias of sort_by): Field to sort by"New value: +"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."
      • changedInput schema / properties / sort / description
        Previous value: -"OPTIONAL (deprecated alias of sort_dir): Sort direction"New value: +"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."
      • changedInput schema / properties / sort_by / description
        Previous value: -"OPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical *_24h names; short legacy names are still accepted."New value: +"OPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical *_24h names; short legacy names are still accepted. The REST API calls this parameter order_by."
      • changedInput schema / properties / sort_dir / description
        Previous value: -"OPTIONAL (preferred): Sort direction (default: 'desc')"New value: +"OPTIONAL (preferred): Sort direction (default: 'desc'). The REST API calls this parameter sort."
    • ChangedgetTopTokens4 fields changed
      • changedInput schema / properties / order_by / description
        Previous value: -"OPTIONAL (deprecated alias of sort_by): Field to sort by"New value: +"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."
      • changedInput schema / properties / sort / description
        Previous value: -"OPTIONAL (deprecated alias of sort_dir): Sort direction"New value: +"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."
      • changedInput schema / properties / sort_by / description
        Previous value: -"OPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical names; short legacy names are still accepted."New value: +"OPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical names; short legacy names are still accepted. The REST API calls this parameter order_by."
      • changedInput schema / properties / sort_dir / description
        Previous value: -"OPTIONAL (preferred): Sort direction (default: 'desc')"New value: +"OPTIONAL (preferred): Sort direction (default: 'desc'). The REST API calls this parameter sort."
  4. 6 tool updatesv1.0.2
    • ChangedfilterNetworkTokens10 fields changed
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "OPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page. Replaces the old page number.",
        +  "type": "string"
        +}
      • addedInput schema / properties / liquidity_usd_max
        Added value: +{
        +  "description": "OPTIONAL: Maximum token liquidity in USD",
        +  "type": "number"
        +}
      • changedInput schema / properties / order_by / enum
        Previous value: -[
        -  "volume_24h",
        -  "volume_7d",
        -  "volume_30d",
        -  "liquidity_usd",
        -  "txns_24h",
        -  "created_at",
        -  "fdv"
        -]New value: +[
        +  "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"
        +]
      • removedInput schema / properties / page
        Removed value: -{
        -  "default": 1,
        -  "description": "OPTIONAL: Page number for pagination (default: 1, 1-indexed)",
        -  "type": "number"
        -}
      • changedInput schema / properties / sort_by / description
        Previous value: -"OPTIONAL (preferred): Field to sort by (default: 'volume_24h')"New value: +"OPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical names; short legacy names are still accepted."
      • changedInput schema / properties / sort_by / enum
        Previous value: -[
        -  "volume_24h",
        -  "volume_7d",
        -  "volume_30d",
        -  "liquidity_usd",
        -  "txns_24h",
        -  "created_at",
        -  "fdv"
        -]New value: +[
        +  "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"
        +]
      • addedOutput schema / properties / has_next_page
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / next_cursor
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / page_info
        Removed value: -{
        -  "additionalProperties": true,
        -  "properties": {
        -    "limit": {
        -      "description": "Items per page in the request.",
        -      "type": "number"
        -    },
        -    "page": {
        -      "description": "Current page number (1-indexed).",
        -      "type": "number"
        -    },
        -    "total_items": {
        -      "description": "Total number of items across all pages.",
        -      "type": "number"
        -    },
        -    "total_pages": {
        -      "description": "Total number of pages available.",
        -      "type": "number"
        -    }
        -  },
        -  "type": "object"
        -}
      • addedOutput schema / properties / query
        Added value: +{
        +  "additionalProperties": {},
        +  "type": "object"
        +}
    • ChangedgetNetworkPools11 fields changed
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "OPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page. Replaces the old page number.",
        +  "type": "string"
        +}
      • changedInput schema / properties / order_by / enum
        Previous value: -[
        -  "volume_usd",
        -  "price_usd",
        -  "transactions",
        -  "last_price_change_usd_24h",
        -  "created_at"
        -]New value: +[
        +  "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"
        +]
      • removedInput schema / properties / page
        Removed value: -{
        -  "default": 1,
        -  "description": "OPTIONAL: Page number for pagination (default: 1, 1-indexed)",
        -  "type": "number"
        -}
      • changedInput schema / properties / sort_by / description
        Previous value: -"OPTIONAL (preferred): Field to sort by (default: 'volume_usd')"New value: +"OPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical *_24h names; short legacy names are still accepted."
      • changedInput schema / properties / sort_by / enum
        Previous value: -[
        -  "volume_usd",
        -  "price_usd",
        -  "transactions",
        -  "last_price_change_usd_24h",
        -  "created_at"
        -]New value: +[
        +  "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"
        +]
      • addedOutput schema / properties / has_next_page
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / next_cursor
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / page_info
        Removed value: -{
        -  "additionalProperties": true,
        -  "properties": {
        -    "limit": {
        -      "description": "Items per page in the request.",
        -      "type": "number"
        -    },
        -    "page": {
        -      "description": "Current page number (1-indexed).",
        -      "type": "number"
        -    },
        -    "total_items": {
        -      "description": "Total number of items across all pages.",
        -      "type": "number"
        -    },
        -    "total_pages": {
        -      "description": "Total number of pages available.",
        -      "type": "number"
        -    }
        -  },
        -  "type": "object"
        -}
      • removedOutput schema / properties / pools
        Removed value: -{
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "chain": {
        -        "description": "Network slug (e.g. 'ethereum'). Note: also exposed as 'network' on some endpoints.",
        -        "type": "string"
        -      },
        -      "created_at": {
        -        "description": "ISO 8601 pool-creation timestamp.",
        -        "type": "string"
        -      },
        -      "created_at_block_number": {
        -        "type": "number"
        -      },
        -      "dex_id": {
        -        "type": "string"
        -      },
        -      "dex_name": {
        -        "type": "string"
        -      },
        -      "fee": {
        -        "description": "Pool fee (units depend on DEX; null for some DEXes).",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "id": {
        -        "description": "Pool contract address.",
        -        "type": "string"
        -      },
        -      "last_price": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "last_price_usd": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "tokens": {
        -        "items": {
        -          "additionalProperties": true,
        -          "properties": {
        -            "added_at": {
        -              "description": "ISO 8601 timestamp when DexPaprika first indexed this token.",
        -              "type": "string"
        -            },
        -            "chain": {
        -              "type": "string"
        -            },
        -            "decimals": {
        -              "type": "number"
        -            },
        -            "fdv": {
        -              "description": "Fully-diluted valuation in USD.",
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "id": {
        -              "description": "Token contract address (chain-canonical form).",
        -              "type": "string"
        -            },
        -            "name": {
        -              "type": "string"
        -            },
        -            "symbol": {
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / query
        Added value: +{
        +  "additionalProperties": {},
        +  "type": "object"
        +}
      • addedOutput schema / properties / results
        Added value: +{
        +  "items": {
        +    "additionalProperties": true,
        +    "properties": {
        +      "chain": {
        +        "description": "Network slug (e.g. 'ethereum'). Note: also exposed as 'network' on some endpoints.",
        +        "type": "string"
        +      },
        +      "created_at": {
        +        "description": "ISO 8601 pool-creation timestamp.",
        +        "type": "string"
        +      },
        +      "created_at_block_number": {
        +        "type": "number"
        +      },
        +      "dex_id": {
        +        "type": "string"
        +      },
        +      "dex_name": {
        +        "type": "string"
        +      },
        +      "fee": {
        +        "description": "Pool fee (units depend on DEX; null for some DEXes).",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "id": {
        +        "description": "Pool contract address.",
        +        "type": "string"
        +      },
        +      "last_price": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "last_price_usd": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "tokens": {
        +        "items": {
        +          "additionalProperties": true,
        +          "properties": {
        +            "added_at": {
        +              "description": "ISO 8601 timestamp when DexPaprika first indexed this token.",
        +              "type": "string"
        +            },
        +            "chain": {
        +              "type": "string"
        +            },
        +            "decimals": {
        +              "type": "number"
        +            },
        +            "fdv": {
        +              "description": "Fully-diluted valuation in USD.",
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "id": {
        +              "description": "Token contract address (chain-canonical form).",
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "symbol": {
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • ChangedgetNetworkPoolsFilter9 fields changed
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "OPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page. Replaces the old page number.",
        +  "type": "string"
        +}
      • changedInput schema / properties / order_by / enum
        Previous value: -[
        -  "volume_24h",
        -  "volume_7d",
        -  "volume_30d",
        -  "liquidity",
        -  "txns_24h",
        -  "created_at"
        -]New value: +[
        +  "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"
        +]
      • removedInput schema / properties / page
        Removed value: -{
        -  "default": 1,
        -  "description": "OPTIONAL: Page number for pagination (default: 1, 1-indexed)",
        -  "type": "number"
        -}
      • changedInput schema / properties / sort_by / description
        Previous value: -"OPTIONAL (preferred): Field to sort by (default: 'volume_24h')"New value: +"OPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical *_24h names; short legacy names are still accepted."
      • changedInput schema / properties / sort_by / enum
        Previous value: -[
        -  "volume_24h",
        -  "volume_7d",
        -  "volume_30d",
        -  "liquidity",
        -  "txns_24h",
        -  "created_at"
        -]New value: +[
        +  "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"
        +]
      • addedOutput schema / properties / has_next_page
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / next_cursor
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / page_info
        Removed value: -{
        -  "additionalProperties": true,
        -  "properties": {
        -    "limit": {
        -      "description": "Items per page in the request.",
        -      "type": "number"
        -    },
        -    "page": {
        -      "description": "Current page number (1-indexed).",
        -      "type": "number"
        -    },
        -    "total_items": {
        -      "description": "Total number of items across all pages.",
        -      "type": "number"
        -    },
        -    "total_pages": {
        -      "description": "Total number of pages available.",
        -      "type": "number"
        -    }
        -  },
        -  "type": "object"
        -}
      • addedOutput schema / properties / query
        Added value: +{
        +  "additionalProperties": {},
        +  "type": "object"
        +}
    • ChangedgetTokenPools16 fields changed
      • changedInput schema / properties / address / description
        Previous value: -"OPTIONAL (deprecated alias of paired_token_address): Additional token address filter"New value: +"UNSUPPORTED (deprecated alias of paired_token_address): passing it returns a structured error."
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "OPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page. Replaces the old page number.",
        +  "type": "string"
        +}
      • changedInput schema / properties / inversed / description
        Previous value: -"OPTIONAL (preferred): Flip the pool's pair perspective so the specified token becomes primary"New value: +"UNSUPPORTED: the replacement endpoint has no pair-perspective flip. Passing true returns a structured error; invert prices client-side (1/price) instead."
      • changedInput schema / properties / order_by / enum
        Previous value: -[
        -  "volume_usd",
        -  "price_usd",
        -  "transactions",
        -  "last_price_change_usd_24h",
        -  "created_at"
        -]New value: +[
        +  "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"
        +]
      • removedInput schema / properties / page
        Removed value: -{
        -  "default": 1,
        -  "description": "OPTIONAL: Page number for pagination (default: 1, 1-indexed)",
        -  "type": "number"
        -}
      • changedInput schema / properties / paired_token_address / description
        Previous value: -"OPTIONAL (preferred): Filter pools that also contain this token address"New value: +"UNSUPPORTED: the replacement endpoint cannot filter by a second token. Passing it returns a structured error; filter results[].tokens client-side for pair queries."
      • changedInput schema / properties / reorder / description
        Previous value: -"OPTIONAL (deprecated alias of inversed): Reorder the pool"New value: +"UNSUPPORTED (deprecated alias of inversed): passing true returns a structured error."
      • changedInput schema / properties / sort_by / description
        Previous value: -"OPTIONAL (preferred): Field to sort by (default: 'volume_usd')"New value: +"OPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical *_24h names; short legacy names are still accepted."
      • changedInput schema / properties / sort_by / enum
        Previous value: -[
        -  "volume_usd",
        -  "price_usd",
        -  "transactions",
        -  "last_price_change_usd_24h",
        -  "created_at"
        -]New value: +[
        +  "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"
        +]
      • changedInput schema / properties / token_address / description
        Previous value: -"REQUIRED: Token contract address"New value: +"REQUIRED: Token contract address. Results are restricted to pools on the given network containing this token. Unknown addresses return empty results, not an error."
      • addedOutput schema / properties / has_next_page
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / next_cursor
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / page_info
        Removed value: -{
        -  "additionalProperties": true,
        -  "properties": {
        -    "limit": {
        -      "description": "Items per page in the request.",
        -      "type": "number"
        -    },
        -    "page": {
        -      "description": "Current page number (1-indexed).",
        -      "type": "number"
        -    },
        -    "total_items": {
        -      "description": "Total number of items across all pages.",
        -      "type": "number"
        -    },
        -    "total_pages": {
        -      "description": "Total number of pages available.",
        -      "type": "number"
        -    }
        -  },
        -  "type": "object"
        -}
      • removedOutput schema / properties / pools
        Removed value: -{
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "chain": {
        -        "description": "Network slug (e.g. 'ethereum'). Note: also exposed as 'network' on some endpoints.",
        -        "type": "string"
        -      },
        -      "created_at": {
        -        "description": "ISO 8601 pool-creation timestamp.",
        -        "type": "string"
        -      },
        -      "created_at_block_number": {
        -        "type": "number"
        -      },
        -      "dex_id": {
        -        "type": "string"
        -      },
        -      "dex_name": {
        -        "type": "string"
        -      },
        -      "fee": {
        -        "description": "Pool fee (units depend on DEX; null for some DEXes).",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "id": {
        -        "description": "Pool contract address.",
        -        "type": "string"
        -      },
        -      "last_price": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "last_price_usd": {
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "tokens": {
        -        "items": {
        -          "additionalProperties": true,
        -          "properties": {
        -            "added_at": {
        -              "description": "ISO 8601 timestamp when DexPaprika first indexed this token.",
        -              "type": "string"
        -            },
        -            "chain": {
        -              "type": "string"
        -            },
        -            "decimals": {
        -              "type": "number"
        -            },
        -            "fdv": {
        -              "description": "Fully-diluted valuation in USD.",
        -              "type": [
        -                "number",
        -                "null"
        -              ]
        -            },
        -            "id": {
        -              "description": "Token contract address (chain-canonical form).",
        -              "type": "string"
        -            },
        -            "name": {
        -              "type": "string"
        -            },
        -            "symbol": {
        -              "type": "string"
        -            }
        -          },
        -          "type": "object"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / query
        Added value: +{
        +  "additionalProperties": {},
        +  "type": "object"
        +}
      • addedOutput schema / properties / results
        Added value: +{
        +  "items": {
        +    "additionalProperties": true,
        +    "properties": {
        +      "chain": {
        +        "description": "Network slug (e.g. 'ethereum'). Note: also exposed as 'network' on some endpoints.",
        +        "type": "string"
        +      },
        +      "created_at": {
        +        "description": "ISO 8601 pool-creation timestamp.",
        +        "type": "string"
        +      },
        +      "created_at_block_number": {
        +        "type": "number"
        +      },
        +      "dex_id": {
        +        "type": "string"
        +      },
        +      "dex_name": {
        +        "type": "string"
        +      },
        +      "fee": {
        +        "description": "Pool fee (units depend on DEX; null for some DEXes).",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "id": {
        +        "description": "Pool contract address.",
        +        "type": "string"
        +      },
        +      "last_price": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "last_price_usd": {
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "tokens": {
        +        "items": {
        +          "additionalProperties": true,
        +          "properties": {
        +            "added_at": {
        +              "description": "ISO 8601 timestamp when DexPaprika first indexed this token.",
        +              "type": "string"
        +            },
        +            "chain": {
        +              "type": "string"
        +            },
        +            "decimals": {
        +              "type": "number"
        +            },
        +            "fdv": {
        +              "description": "Fully-diluted valuation in USD.",
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "id": {
        +              "description": "Token contract address (chain-canonical form).",
        +              "type": "string"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "symbol": {
        +              "type": "string"
        +            }
        +          },
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
    • ChangedgetTopTokens11 fields changed
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "OPTIONAL: Pagination cursor. Pass `next_cursor` from a previous response to fetch the next page. Replaces the old page number.",
        +  "type": "string"
        +}
      • changedInput schema / properties / order_by / enum
        Previous value: -[
        -  "volume_24h",
        -  "price_usd",
        -  "liquidity_usd",
        -  "txns",
        -  "price_change"
        -]New value: +[
        +  "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"
        +]
      • removedInput schema / properties / page
        Removed value: -{
        -  "default": 1,
        -  "description": "OPTIONAL: Page number for pagination (default: 1, 1-indexed)",
        -  "type": "number"
        -}
      • changedInput schema / properties / sort_by / description
        Previous value: -"OPTIONAL (preferred): Field to sort by (default: 'volume_24h')"New value: +"OPTIONAL (preferred): Field to sort by (default: 'volume_usd_24h'). Prefer the canonical names; short legacy names are still accepted."
      • changedInput schema / properties / sort_by / enum
        Previous value: -[
        -  "volume_24h",
        -  "price_usd",
        -  "liquidity_usd",
        -  "txns",
        -  "price_change"
        -]New value: +[
        +  "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"
        +]
      • addedOutput schema / properties / has_next_page
        Added value: +{
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / next_cursor
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / page_info
        Removed value: -{
        -  "additionalProperties": true,
        -  "properties": {
        -    "limit": {
        -      "description": "Items per page in the request.",
        -      "type": "number"
        -    },
        -    "page": {
        -      "description": "Current page number (1-indexed).",
        -      "type": "number"
        -    },
        -    "total_items": {
        -      "description": "Total number of items across all pages.",
        -      "type": "number"
        -    },
        -    "total_pages": {
        -      "description": "Total number of pages available.",
        -      "type": "number"
        -    }
        -  },
        -  "type": "object"
        -}
      • addedOutput schema / properties / query
        Added value: +{
        +  "additionalProperties": {},
        +  "type": "object"
        +}
      • addedOutput schema / properties / results
        Added value: +{
        +  "items": {
        +    "additionalProperties": true,
        +    "properties": {
        +      "added_at": {
        +        "description": "ISO 8601 timestamp when DexPaprika first indexed this token.",
        +        "type": "string"
        +      },
        +      "chain": {
        +        "type": "string"
        +      },
        +      "decimals": {
        +        "type": "number"
        +      },
        +      "fdv": {
        +        "description": "Fully-diluted valuation in USD.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "id": {
        +        "description": "Token contract address (chain-canonical form).",
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "symbol": {
        +        "type": "string"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / tokens
        Removed value: -{
        -  "items": {
        -    "additionalProperties": true,
        -    "properties": {
        -      "added_at": {
        -        "description": "ISO 8601 timestamp when DexPaprika first indexed this token.",
        -        "type": "string"
        -      },
        -      "chain": {
        -        "type": "string"
        -      },
        -      "decimals": {
        -        "type": "number"
        -      },
        -      "fdv": {
        -        "description": "Fully-diluted valuation in USD.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "id": {
        -        "description": "Token contract address (chain-canonical form).",
        -        "type": "string"
        -      },
        -      "name": {
        -        "type": "string"
        -      },
        -      "symbol": {
        -        "type": "string"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
    • RemovedsubmitFeedback
  5. 17 tool updatesv1.0.1
    • AddedfilterNetworkTokens
    • AddedgetCapabilities
    • ChangedgetDexPools14 fields changed
      • changedInput schema / properties / dex / description
        Previous value: -"DEX identifier from getNetworkDexes (e.g., \"uniswap_v3\")"New value: +"REQUIRED: DEX identifier from getNetworkDexes (e.g., 'uniswap_v3')"
      • changedInput schema / properties / limit / description
        Previous value: -"Number of items per page (max 100)"New value: +"OPTIONAL: Number of items per page (default: 10, max: 100)"
      • changedInput schema / properties / network / description
        Previous value: -"Network ID from getNetworks (e.g., \"ethereum\", \"solana\")"New value: +"REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')"
      • removedInput schema / properties / orderBy
        Removed value: -{
        -  "default": "volume_usd",
        -  "description": "Field to order by",
        -  "enum": [
        -    "volume_usd",
        -    "price_usd",
        -    "transactions",
        -    "last_price_change_usd_24h",
        -    "created_at"
        -  ],
        -  "type": "string"
        -}
      • addedInput schema / properties / order_by
        Added value: +{
        +  "description": "OPTIONAL (deprecated alias of sort_by): Field to sort by",
        +  "enum": [
        +    "volume_usd",
        +    "price_usd",
        +    "transactions",
        +    "last_price_change_usd_24h",
        +    "created_at"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / page / default
        Previous value: -0New value: +1
      • changedInput schema / properties / page / description
        Previous value: -"Page number for pagination"New value: +"OPTIONAL: Page number for pagination (default: 1, 1-indexed)"
      • addedInput schema / properties / rationale
        Added value: +{
        +  "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.",
        +  "maxLength": 500,
        +  "minLength": 20,
        +  "type": "string"
        +}
      • removedInput schema / properties / sort / default
        Removed value: -"desc"
      • changedInput schema / properties / sort / description
        Previous value: -"Sort order"New value: +"OPTIONAL (deprecated alias of sort_dir): Sort direction"
      • addedInput schema / properties / sort_by
        Added value: +{
        +  "description": "OPTIONAL (preferred): Field to sort by (default: 'volume_usd')",
        +  "enum": [
        +    "volume_usd",
        +    "price_usd",
        +    "transactions",
        +    "last_price_change_usd_24h",
        +    "created_at"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / sort_dir
        Added value: +{
        +  "description": "OPTIONAL (preferred): Sort direction (default: 'desc')",
        +  "enum": [
        +    "asc",
        +    "desc"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "network",
        -  "dex"
        -]New value: +[
        +  "network",
        +  "dex",
        +  "rationale"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "page_info": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "limit": {
        +          "description": "Items per page in the request.",
        +          "type": "number"
        +        },
        +        "page": {
        +          "description": "Current page number (1-indexed).",
        +          "type": "number"
        +        },
        +        "total_items": {
        +          "description": "Total number of items across all pages.",
        +          "type": "number"
        +        },
        +        "total_pages": {
        +          "description": "Total number of pages available.",
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "pools": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "chain": {
        +            "description": "Network slug (e.g. 'ethereum'). Note: also exposed as 'network' on some endpoints.",
        +            "type": "string"
        +          },
        +          "created_at": {
        +            "description": "ISO 8601 pool-creation timestamp.",
        +            "type": "string"
        +          },
        +          "created_at_block_number": {
        +            "type": "number"
        +          },
        +          "dex_id": {
        +            "type": "string"
        +          },
        +          "dex_name": {
        +            "type": "string"
        +          },
        +          "fee": {
        +            "description": "Pool fee (units depend on DEX; null for some DEXes).",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "description": "Pool contract address.",
        +            "type": "string"
        +          },
        +          "last_price": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "last_price_usd": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "tokens": {
        +            "items": {
        +              "additionalProperties": true,
        +              "properties": {
        +                "added_at": {
        +                  "description": "ISO 8601 timestamp when DexPaprika first indexed this token.",
        +                  "type": "string"
        +                },
        +                "chain": {
        +                  "type": "string"
        +                },
        +                "decimals": {
        +                  "type": "number"
        +                },
        +                "fdv": {
        +                  "description": "Fully-diluted valuation in USD.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "id": {
        +                  "description": "Token contract address (chain-canonical form).",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                },
        +                "symbol": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • ChangedgetNetworkDexes13 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Number of items per page (max 100)"New value: +"OPTIONAL: Number of items per page (default: 10, max: 100)"
      • changedInput schema / properties / network / description
        Previous value: -"Network ID from getNetworks (e.g., \"ethereum\", \"solana\")"New value: +"REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')"
      • removedInput schema / properties / orderBy
        Removed value: -{
        -  "description": "How to order the returned data",
        -  "enum": [
        -    "pool"
        -  ],
        -  "type": "string"
        -}
      • addedInput schema / properties / order_by
        Added value: +{
        +  "description": "OPTIONAL (deprecated alias of sort_by): Field to sort by",
        +  "enum": [
        +    "pool"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / page / default
        Previous value: -0New value: +1
      • changedInput schema / properties / page / description
        Previous value: -"Page number for pagination"New value: +"OPTIONAL: Page number for pagination (default: 1, 1-indexed)"
      • addedInput schema / properties / rationale
        Added value: +{
        +  "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.",
        +  "maxLength": 500,
        +  "minLength": 20,
        +  "type": "string"
        +}
      • removedInput schema / properties / sort / default
        Removed value: -"desc"
      • changedInput schema / properties / sort / description
        Previous value: -"Sort order"New value: +"OPTIONAL (deprecated alias of sort_dir): Sort direction"
      • addedInput schema / properties / sort_by
        Added value: +{
        +  "description": "OPTIONAL (preferred): Field to sort by (only 'pool')",
        +  "enum": [
        +    "pool"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / sort_dir
        Added value: +{
        +  "description": "OPTIONAL (preferred): Sort direction, 'asc' or 'desc' (default: 'desc')",
        +  "enum": [
        +    "asc",
        +    "desc"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "network"
        -]New value: +[
        +  "network",
        +  "rationale"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "dexes": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "chain": {
        +            "type": "string"
        +          },
        +          "dex_id": {
        +            "type": "string"
        +          },
        +          "dex_name": {
        +            "type": "string"
        +          },
        +          "display_name": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "network_id": {
        +            "type": "string"
        +          },
        +          "pools_count": {
        +            "type": "number"
        +          },
        +          "protocol": {
        +            "type": "string"
        +          },
        +          "txns_24h": {
        +            "type": "number"
        +          },
        +          "volume_usd_24h": {
        +            "type": "number"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "page_info": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "limit": {
        +          "description": "Items per page in the request.",
        +          "type": "number"
        +        },
        +        "page": {
        +          "description": "Current page number (1-indexed).",
        +          "type": "number"
        +        },
        +        "total_items": {
        +          "description": "Total number of items across all pages.",
        +          "type": "number"
        +        },
        +        "total_pages": {
        +          "description": "Total number of pages available.",
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    }
        +  },
        +  "type": "object"
        +}
    • ChangedgetNetworkPools13 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Number of items per page (max 100)"New value: +"OPTIONAL: Number of items per page (default: 10, max: 100)"
      • changedInput schema / properties / network / description
        Previous value: -"Network ID from getNetworks (required) - e.g., \"ethereum\", \"solana\""New value: +"REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')"
      • removedInput schema / properties / orderBy
        Removed value: -{
        -  "default": "volume_usd",
        -  "description": "Field to order by",
        -  "enum": [
        -    "volume_usd",
        -    "price_usd",
        -    "transactions",
        -    "last_price_change_usd_24h",
        -    "created_at"
        -  ],
        -  "type": "string"
        -}
      • addedInput schema / properties / order_by
        Added value: +{
        +  "description": "OPTIONAL (deprecated alias of sort_by): Field to sort by",
        +  "enum": [
        +    "volume_usd",
        +    "price_usd",
        +    "transactions",
        +    "last_price_change_usd_24h",
        +    "created_at"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / page / default
        Previous value: -0New value: +1
      • changedInput schema / properties / page / description
        Previous value: -"Page number for pagination"New value: +"OPTIONAL: Page number for pagination (default: 1, 1-indexed)"
      • addedInput schema / properties / rationale
        Added value: +{
        +  "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.",
        +  "maxLength": 500,
        +  "minLength": 20,
        +  "type": "string"
        +}
      • removedInput schema / properties / sort / default
        Removed value: -"desc"
      • changedInput schema / properties / sort / description
        Previous value: -"Sort order"New value: +"OPTIONAL (deprecated alias of sort_dir): Sort direction"
      • addedInput schema / properties / sort_by
        Added value: +{
        +  "description": "OPTIONAL (preferred): Field to sort by (default: 'volume_usd')",
        +  "enum": [
        +    "volume_usd",
        +    "price_usd",
        +    "transactions",
        +    "last_price_change_usd_24h",
        +    "created_at"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / sort_dir
        Added value: +{
        +  "description": "OPTIONAL (preferred): Sort direction (default: 'desc')",
        +  "enum": [
        +    "asc",
        +    "desc"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "network"
        -]New value: +[
        +  "network",
        +  "rationale"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "page_info": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "limit": {
        +          "description": "Items per page in the request.",
        +          "type": "number"
        +        },
        +        "page": {
        +          "description": "Current page number (1-indexed).",
        +          "type": "number"
        +        },
        +        "total_items": {
        +          "description": "Total number of items across all pages.",
        +          "type": "number"
        +        },
        +        "total_pages": {
        +          "description": "Total number of pages available.",
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "pools": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "chain": {
        +            "description": "Network slug (e.g. 'ethereum'). Note: also exposed as 'network' on some endpoints.",
        +            "type": "string"
        +          },
        +          "created_at": {
        +            "description": "ISO 8601 pool-creation timestamp.",
        +            "type": "string"
        +          },
        +          "created_at_block_number": {
        +            "type": "number"
        +          },
        +          "dex_id": {
        +            "type": "string"
        +          },
        +          "dex_name": {
        +            "type": "string"
        +          },
        +          "fee": {
        +            "description": "Pool fee (units depend on DEX; null for some DEXes).",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "description": "Pool contract address.",
        +            "type": "string"
        +          },
        +          "last_price": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "last_price_usd": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "tokens": {
        +            "items": {
        +              "additionalProperties": true,
        +              "properties": {
        +                "added_at": {
        +                  "description": "ISO 8601 timestamp when DexPaprika first indexed this token.",
        +                  "type": "string"
        +                },
        +                "chain": {
        +                  "type": "string"
        +                },
        +                "decimals": {
        +                  "type": "number"
        +                },
        +                "fdv": {
        +                  "description": "Fully-diluted valuation in USD.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "id": {
        +                  "description": "Token contract address (chain-canonical form).",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                },
        +                "symbol": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • AddedgetNetworkPoolsFilter
    • ChangedgetNetworks4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / rationale
        Added value: +{
        +  "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.",
        +  "maxLength": 500,
        +  "minLength": 20,
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "rationale"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "networks": {
        +      "description": "All supported blockchain networks with current 24h volume + indexing stats.",
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "display_name": {
        +            "description": "Human-readable network name (e.g. 'Ethereum').",
        +            "type": "string"
        +          },
        +          "id": {
        +            "description": "Network slug for use in other endpoints (e.g. 'ethereum').",
        +            "type": "string"
        +          },
        +          "pools_count": {
        +            "description": "Number of indexed pools on this network.",
        +            "type": "number"
        +          },
        +          "txns_24h": {
        +            "description": "Total transactions in the last 24h on this network.",
        +            "type": "number"
        +          },
        +          "volume_usd_24h": {
        +            "description": "Total 24h trading volume across all pools on this network, USD.",
        +            "type": "number"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "networks"
        +  ],
        +  "type": "object"
        +}
    • ChangedgetPoolDetails7 fields changed
      • changedInput schema / properties / inversed / description
        Previous value: -"Whether to invert the price ratio"New value: +"OPTIONAL: Whether to invert the price ratio (default: false)"
      • changedInput schema / properties / network / description
        Previous value: -"Network ID from getNetworks (e.g., \"ethereum\", \"solana\")"New value: +"REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')"
      • removedInput schema / properties / poolAddress
        Removed value: -{
        -  "description": "Pool address or identifier",
        -  "type": "string"
        -}
      • addedInput schema / properties / pool_address
        Added value: +{
        +  "description": "REQUIRED: Pool address or identifier (e.g., '0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640')",
        +  "type": "string"
        +}
      • addedInput schema / properties / rationale
        Added value: +{
        +  "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.",
        +  "maxLength": 500,
        +  "minLength": 20,
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "network",
        -  "poolAddress"
        -]New value: +[
        +  "network",
        +  "pool_address",
        +  "rationale"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "chain": {
        +      "type": "string"
        +    },
        +    "created_at": {
        +      "type": "string"
        +    },
        +    "created_at_block_number": {
        +      "type": "number"
        +    },
        +    "dex_id": {
        +      "type": "string"
        +    },
        +    "dex_name": {
        +      "type": "string"
        +    },
        +    "factory_id": {
        +      "type": "string"
        +    },
        +    "fee": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "last_price": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "last_price_usd": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "price_stats": {},
        +    "price_time": {
        +      "type": "string"
        +    },
        +    "token_reserves": {
        +      "items": {},
        +      "type": "array"
        +    },
        +    "tokens": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "added_at": {
        +            "description": "ISO 8601 timestamp when DexPaprika first indexed this token.",
        +            "type": "string"
        +          },
        +          "chain": {
        +            "type": "string"
        +          },
        +          "decimals": {
        +            "type": "number"
        +          },
        +          "fdv": {
        +            "description": "Fully-diluted valuation in USD.",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "description": "Token contract address (chain-canonical form).",
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "symbol": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • ChangedgetPoolOHLCV13 fields changed
      • changedInput schema / properties / end / description
        Previous value: -"End time for historical data (max 1 year from start)"New value: +"OPTIONAL: End time for historical data (max 1 year from start)"
      • changedInput schema / properties / interval / description
        Previous value: -"Interval granularity: 1m, 5m, 10m, 15m, 30m, 1h, 6h, 12h, 24h"New value: +"OPTIONAL: Interval granularity (default: '24h')"
      • addedInput schema / properties / interval / enum
        Added value: +[
        +  "1m",
        +  "5m",
        +  "10m",
        +  "15m",
        +  "30m",
        +  "1h",
        +  "6h",
        +  "12h",
        +  "24h"
        +]
      • changedInput schema / properties / inversed / description
        Previous value: -"Whether to invert the price ratio for alternative pair perspective (e.g., ETH/USDC vs USDC/ETH)"New value: +"OPTIONAL: Whether to invert the price ratio for alternative pair perspective (default: false)"
      • changedInput schema / properties / limit / default
        Previous value: -1New value: +100
      • changedInput schema / properties / limit / description
        Previous value: -"Number of data points to retrieve (max 366) - adjust for different analysis needs"New value: +"OPTIONAL: Number of data points to retrieve (default: 100, max: 366)"
      • changedInput schema / properties / network / description
        Previous value: -"Network ID from getNetworks (e.g., \"ethereum\", \"solana\")"New value: +"REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')"
      • removedInput schema / properties / poolAddress
        Removed value: -{
        -  "description": "Pool address or identifier",
        -  "type": "string"
        -}
      • addedInput schema / properties / pool_address
        Added value: +{
        +  "description": "REQUIRED: Pool address or identifier",
        +  "type": "string"
        +}
      • addedInput schema / properties / rationale
        Added value: +{
        +  "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.",
        +  "maxLength": 500,
        +  "minLength": 20,
        +  "type": "string"
        +}
      • changedInput schema / properties / start / description
        Previous value: -"Start time for historical data (Unix timestamp, RFC3339 timestamp, or yyyy-mm-dd format)"New value: +"REQUIRED: Start time for historical data (Unix timestamp, RFC3339 timestamp, or yyyy-mm-dd format)"
      • changedInput schema / required
        Previous value: -[
        -  "network",
        -  "poolAddress",
        -  "start"
        -]New value: +[
        +  "network",
        +  "pool_address",
        +  "start",
        +  "rationale"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "ohlcv": {
        +      "description": "Open-High-Low-Close-Volume rows ordered by time_open ascending.",
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "close": {
        +            "type": "number"
        +          },
        +          "high": {
        +            "type": "number"
        +          },
        +          "low": {
        +            "type": "number"
        +          },
        +          "open": {
        +            "type": "number"
        +          },
        +          "time_close": {
        +            "description": "ISO 8601 timestamp of bucket close (inclusive at 23:59:59 for 24h).",
        +            "type": "string"
        +          },
        +          "time_open": {
        +            "description": "ISO 8601 timestamp of bucket open.",
        +            "type": "string"
        +          },
        +          "volume": {
        +            "description": "Trade volume in the bucket, in pair-quote units (or USD where applicable).",
        +            "type": "number"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "ohlcv"
        +  ],
        +  "type": "object"
        +}
    • ChangedgetPoolTransactions12 fields changed
      • changedInput schema / properties / cursor / description
        Previous value: -"Transaction ID used for cursor-based pagination"New value: +"OPTIONAL: Transaction ID used for cursor-based pagination"
      • addedInput schema / properties / from
        Added value: +{
        +  "description": "OPTIONAL: Filter transactions starting from this UNIX timestamp (inclusive). Results always capped to last 7 days.",
        +  "type": "number"
        +}
      • changedInput schema / properties / limit / description
        Previous value: -"Number of items per page (max 100)"New value: +"OPTIONAL: Number of items per page (default: 10, max: 100)"
      • changedInput schema / properties / network / description
        Previous value: -"Network ID from getNetworks (e.g., \"ethereum\", \"solana\")"New value: +"REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')"
      • changedInput schema / properties / page / default
        Previous value: -0New value: +1
      • changedInput schema / properties / page / description
        Previous value: -"Page number for pagination (up to 100 pages)"New value: +"OPTIONAL: Page number for pagination, up to 100 pages (default: 1, 1-indexed)"
      • removedInput schema / properties / poolAddress
        Removed value: -{
        -  "description": "Pool address or identifier",
        -  "type": "string"
        -}
      • addedInput schema / properties / pool_address
        Added value: +{
        +  "description": "REQUIRED: Pool address or identifier",
        +  "type": "string"
        +}
      • addedInput schema / properties / rationale
        Added value: +{
        +  "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.",
        +  "maxLength": 500,
        +  "minLength": 20,
        +  "type": "string"
        +}
      • addedInput schema / properties / to
        Added value: +{
        +  "description": "OPTIONAL: Filter transactions up to this UNIX timestamp (exclusive). Must be after 'from'.",
        +  "type": "number"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "network",
        -  "poolAddress"
        -]New value: +[
        +  "network",
        +  "pool_address",
        +  "rationale"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "page_info": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "limit": {
        +          "description": "Items per page in the request.",
        +          "type": "number"
        +        },
        +        "page": {
        +          "description": "Current page number (1-indexed).",
        +          "type": "number"
        +        },
        +        "total_items": {
        +          "description": "Total number of items across all pages.",
        +          "type": "number"
        +        },
        +        "total_pages": {
        +          "description": "Total number of pages available.",
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "transactions": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "amount_usd": {
        +            "type": "number"
        +          },
        +          "block_number": {
        +            "type": "number"
        +          },
        +          "block_timestamp": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "pool_id": {
        +            "type": "string"
        +          },
        +          "token0": {},
        +          "token1": {}
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "transactions",
        +    "page_info"
        +  ],
        +  "type": "object"
        +}
    • ChangedgetStats4 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / rationale
        Added value: +{
        +  "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.",
        +  "maxLength": 500,
        +  "minLength": 20,
        +  "type": "string"
        +}
      • addedInput schema / required
        Added value: +[
        +  "rationale"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "chains": {
        +      "description": "Total chains indexed.",
        +      "type": "number"
        +    },
        +    "factories": {
        +      "description": "Total DEX factory contracts indexed.",
        +      "type": "number"
        +    },
        +    "pools": {
        +      "description": "Total pools indexed across all chains.",
        +      "type": "number"
        +    },
        +    "tokens": {
        +      "description": "Total tokens indexed.",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "chains",
        +    "factories",
        +    "pools",
        +    "tokens"
        +  ],
        +  "type": "object"
        +}
    • ChangedgetTokenDetails6 fields changed
      • changedInput schema / properties / network / description
        Previous value: -"Network ID from getNetworks (e.g., \"ethereum\", \"solana\")"New value: +"REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')"
      • addedInput schema / properties / rationale
        Added value: +{
        +  "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.",
        +  "maxLength": 500,
        +  "minLength": 20,
        +  "type": "string"
        +}
      • removedInput schema / properties / tokenAddress
        Removed value: -{
        -  "description": "Token address or identifier",
        -  "type": "string"
        -}
      • addedInput schema / properties / token_address
        Added value: +{
        +  "description": "REQUIRED: Token contract address (e.g., 'JUPyiwrYJFskUPiHa7hkeR8VUtAeFoSYbKedZNsDvCN' for Jupiter on Solana)",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "network",
        -  "tokenAddress"
        -]New value: +[
        +  "network",
        +  "token_address",
        +  "rationale"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "added_at": {
        +      "type": "string"
        +    },
        +    "chain": {
        +      "type": "string"
        +    },
        +    "decimals": {
        +      "type": "number"
        +    },
        +    "description": {
        +      "type": "string"
        +    },
        +    "has_image": {
        +      "type": "boolean"
        +    },
        +    "id": {
        +      "type": "string"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "price_stats": {},
        +    "summary": {},
        +    "symbol": {
        +      "type": "string"
        +    },
        +    "total_supply": {
        +      "description": "Raw on-chain total supply. Big numbers may overflow JS Number — handle as string for tokens with 18+ decimals.",
        +      "type": [
        +        "number",
        +        "string"
        +      ]
        +    },
        +    "website": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • ChangedgetTokenMultiPrices6 fields changed
      • changedInput schema / properties / network / description
        Previous value: -"Network ID from getNetworks (e.g., \"ethereum\", \"solana\")"New value: +"REQUIRED: Network ID from getNetworks"
      • addedInput schema / properties / rationale
        Added value: +{
        +  "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.",
        +  "maxLength": 500,
        +  "minLength": 20,
        +  "type": "string"
        +}
      • changedInput schema / properties / tokens / description
        Previous value: -"Array of token contract addresses. Serialized as repeatable query (?tokens=a&tokens=b)."New value: +"REQUIRED: Up to 10 token contract addresses on the same network."
      • addedInput schema / properties / tokens / maxItems
        Added value: +10
      • changedInput schema / required
        Previous value: -[
        -  "network",
        -  "tokens"
        -]New value: +[
        +  "network",
        +  "tokens",
        +  "rationale"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "missing_tokens": {
        +      "description": "Input tokens that upstream could not price (invalid address, no liquidity, unknown contract). Empty array when all input tokens were resolved.",
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "prices": {
        +      "description": "USD prices for the requested tokens, in input order.",
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "chain": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "description": "Token contract address.",
        +            "type": "string"
        +          },
        +          "price_usd": {
        +            "description": "Current USD price; null if not available.",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "prices"
        +  ],
        +  "type": "object"
        +}
    • ChangedgetTokenPools19 fields changed
      • changedInput schema / properties / address / description
        Previous value: -"Filter pools that contain this additional token address"New value: +"OPTIONAL (deprecated alias of paired_token_address): Additional token address filter"
      • addedInput schema / properties / inversed
        Added value: +{
        +  "description": "OPTIONAL (preferred): Flip the pool's pair perspective so the specified token becomes primary",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / limit / description
        Previous value: -"Number of items per page (max 100)"New value: +"OPTIONAL: Number of items per page (default: 10, max: 100)"
      • changedInput schema / properties / network / description
        Previous value: -"Network ID from getNetworks (e.g., \"ethereum\", \"solana\")"New value: +"REQUIRED: Network ID from getNetworks (e.g., 'ethereum', 'solana')"
      • removedInput schema / properties / orderBy
        Removed value: -{
        -  "default": "volume_usd",
        -  "description": "Field to order by",
        -  "enum": [
        -    "volume_usd",
        -    "price_usd",
        -    "transactions",
        -    "last_price_change_usd_24h",
        -    "created_at"
        -  ],
        -  "type": "string"
        -}
      • addedInput schema / properties / order_by
        Added value: +{
        +  "description": "OPTIONAL (deprecated alias of sort_by): Field to sort by",
        +  "enum": [
        +    "volume_usd",
        +    "price_usd",
        +    "transactions",
        +    "last_price_change_usd_24h",
        +    "created_at"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / page / default
        Previous value: -0New value: +1
      • changedInput schema / properties / page / description
        Previous value: -"Page number for pagination"New value: +"OPTIONAL: Page number for pagination (default: 1, 1-indexed)"
      • addedInput schema / properties / paired_token_address
        Added value: +{
        +  "description": "OPTIONAL (preferred): Filter pools that also contain this token address",
        +  "type": "string"
        +}
      • addedInput schema / properties / rationale
        Added value: +{
        +  "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.",
        +  "maxLength": 500,
        +  "minLength": 20,
        +  "type": "string"
        +}
      • changedInput schema / properties / reorder / description
        Previous value: -"If true, reorders the pool so that the specified token becomes the primary token for all metrics"New value: +"OPTIONAL (deprecated alias of inversed): Reorder the pool"
      • removedInput schema / properties / sort / default
        Removed value: -"desc"
      • changedInput schema / properties / sort / description
        Previous value: -"Sort order"New value: +"OPTIONAL (deprecated alias of sort_dir): Sort direction"
      • addedInput schema / properties / sort_by
        Added value: +{
        +  "description": "OPTIONAL (preferred): Field to sort by (default: 'volume_usd')",
        +  "enum": [
        +    "volume_usd",
        +    "price_usd",
        +    "transactions",
        +    "last_price_change_usd_24h",
        +    "created_at"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / sort_dir
        Added value: +{
        +  "description": "OPTIONAL (preferred): Sort direction (default: 'desc')",
        +  "enum": [
        +    "asc",
        +    "desc"
        +  ],
        +  "type": "string"
        +}
      • removedInput schema / properties / tokenAddress
        Removed value: -{
        -  "description": "Token address or identifier",
        -  "type": "string"
        -}
      • addedInput schema / properties / token_address
        Added value: +{
        +  "description": "REQUIRED: Token contract address",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "network",
        -  "tokenAddress"
        -]New value: +[
        +  "network",
        +  "token_address",
        +  "rationale"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "page_info": {
        +      "additionalProperties": true,
        +      "properties": {
        +        "limit": {
        +          "description": "Items per page in the request.",
        +          "type": "number"
        +        },
        +        "page": {
        +          "description": "Current page number (1-indexed).",
        +          "type": "number"
        +        },
        +        "total_items": {
        +          "description": "Total number of items across all pages.",
        +          "type": "number"
        +        },
        +        "total_pages": {
        +          "description": "Total number of pages available.",
        +          "type": "number"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "pools": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "chain": {
        +            "description": "Network slug (e.g. 'ethereum'). Note: also exposed as 'network' on some endpoints.",
        +            "type": "string"
        +          },
        +          "created_at": {
        +            "description": "ISO 8601 pool-creation timestamp.",
        +            "type": "string"
        +          },
        +          "created_at_block_number": {
        +            "type": "number"
        +          },
        +          "dex_id": {
        +            "type": "string"
        +          },
        +          "dex_name": {
        +            "type": "string"
        +          },
        +          "fee": {
        +            "description": "Pool fee (units depend on DEX; null for some DEXes).",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "description": "Pool contract address.",
        +            "type": "string"
        +          },
        +          "last_price": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "last_price_usd": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "tokens": {
        +            "items": {
        +              "additionalProperties": true,
        +              "properties": {
        +                "added_at": {
        +                  "description": "ISO 8601 timestamp when DexPaprika first indexed this token.",
        +                  "type": "string"
        +                },
        +                "chain": {
        +                  "type": "string"
        +                },
        +                "decimals": {
        +                  "type": "number"
        +                },
        +                "fdv": {
        +                  "description": "Fully-diluted valuation in USD.",
        +                  "type": [
        +                    "number",
        +                    "null"
        +                  ]
        +                },
        +                "id": {
        +                  "description": "Token contract address (chain-canonical form).",
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                },
        +                "symbol": {
        +                  "type": "string"
        +                }
        +              },
        +              "type": "object"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • AddedgetTopTokens
    • Changedsearch5 fields changed
      • addedInput schema / properties / limit
        Added value: +{
        +  "description": "OPTIONAL: Max results per category (tokens/pools/dexes), applied client-side",
        +  "type": "number"
        +}
      • changedInput schema / properties / query / description
        Previous value: -"Search term (e.g., \"uniswap\", \"bitcoin\", or a token address)"New value: +"REQUIRED: Search term (e.g., 'uniswap', 'bitcoin', or a token address)"
      • addedInput schema / properties / rationale
        Added value: +{
        +  "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.",
        +  "maxLength": 500,
        +  "minLength": 20,
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "query"
        -]New value: +[
        +  "query",
        +  "rationale"
        +]
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": true,
        +  "properties": {
        +    "dexes": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "chain": {
        +            "type": "string"
        +          },
        +          "dex_id": {
        +            "type": "string"
        +          },
        +          "dex_name": {
        +            "type": "string"
        +          },
        +          "display_name": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "string"
        +          },
        +          "network_id": {
        +            "type": "string"
        +          },
        +          "pools_count": {
        +            "type": "number"
        +          },
        +          "protocol": {
        +            "type": "string"
        +          },
        +          "txns_24h": {
        +            "type": "number"
        +          },
        +          "volume_usd_24h": {
        +            "type": "number"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "pools": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "chain": {
        +            "description": "Network slug (e.g. 'ethereum'). Note: also exposed as 'network' on some endpoints.",
        +            "type": "string"
        +          },
        +          "created_at": {
        +            "description": "ISO 8601 pool-creation timestamp.",
        +            "type": "string"
        +          },
        +          "created_at_block_number": {
        +            "type": "number"
        +          },
        +          "dex_id": {
        +            "type": "string"
        +          },
        +          "dex_name": {
        +            "type": "string"
        +          },
        +          "fee": {
        +            "description": "Pool fee (units depend on DEX; null for some DEXes).",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "description": "Pool contract address.",
        +            "type": "string"
        +          },
        +          "last_price": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "last_price_usd": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "tokens": {
        +            "items": {
        +              "$ref": "#/properties/tokens/items"
        +            },
        +            "type": "array"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "tokens": {
        +      "items": {
        +        "additionalProperties": true,
        +        "properties": {
        +          "added_at": {
        +            "description": "ISO 8601 timestamp when DexPaprika first indexed this token.",
        +            "type": "string"
        +          },
        +          "chain": {
        +            "type": "string"
        +          },
        +          "decimals": {
        +            "type": "number"
        +          },
        +          "fdv": {
        +            "description": "Fully-diluted valuation in USD.",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "description": "Token contract address (chain-canonical form).",
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "symbol": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "type": "object"
        +}
    • AddedsubmitFeedback
  6. 4 tool updatesv1.0.0
    • ChangedgetNetworkDexes3 fields changed
      • changedInput schema / properties / limit / description
        Previous value: -"Number of items per page"New value: +"Number of items per page (max 100)"
      • addedInput schema / properties / orderBy
        Added value: +{
        +  "description": "How to order the returned data",
        +  "enum": [
        +    "pool"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / sort
        Added value: +{
        +  "default": "desc",
        +  "description": "Sort order",
        +  "enum": [
        +    "asc",
        +    "desc"
        +  ],
        +  "type": "string"
        +}
    • ChangedgetNetworks1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • ChangedgetStats1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • AddedgetTokenMultiPrices
  7. 11 tool updates
    • First observedgetDexPools
    • First observedgetNetworkDexes
    • First observedgetNetworkPools
    • First observedgetNetworks
    • First observedgetPoolDetails
    • First observedgetPoolOHLCV
    • First observedgetPoolTransactions
    • First observedgetStats
    • First observedgetTokenDetails
    • First observedgetTokenPools
    • First observedsearch

TDQS

A4.4/5.0

Scored across 18 tools

Disambiguation4/5

Most tools target clearly distinct resource+action pairs (details vs OHLCV vs transactions for pools; single vs batch vs multi-timeframe for tokens), and each description explicitly states when to prefer a sibling tool. The only mild overlap is the cluster of pool-listing tools (getNetworkPools, getDexPools, getNetworkPoolsFilter) and token-listing tools (getTopTokens, filterNetworkTokens), but numeric-vs-ranked/scope distinctions are spelled out.

Naming Consistency4/5

The set overwhelmingly follows a camelCase get_<resource> pattern (getTokenDetails, getPoolOHLCV, getNetworkDexes, getStats). Two outliers break the pattern: 'filterNetworkTokens' (verb differs from its sibling getTopTokens) and the bare 'search', plus a slightly clunky getNetworkPoolsFilter vs filterNetworkTokens asymmetry. Minor deviations, still highly readable.

Tool Count4/5

18 tools is on the heavier side but justified by a genuinely broad domain spanning networks, DEXes, pools, tokens, transactions, OHLCV, plus meta tools (getCapabilities, getKeyStatus, getStats). Each tool maps to a real scope (network-wide vs single-DEX vs filtered) rather than being redundant padding.

Completeness4/5

The read-only surface covers the full lifecycle well: discovery (search), networks/dexes, pool and token listings with filters, detail snapshots, historical OHLCV for both pools and tokens, raw transaction feeds, and coverage/onboarding metadata. Minor gaps exist (no token-level aggregated transaction feed, no direct symbol lookup without search), but actionable fallbacks and cross-references between tools largely compensate.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Official MCP server that turns The Graph’s Token API into a plug-and-play web3 data tool. Exposes ERC-20 & NFT metadata, balances, transfers, top-holder stats, prices, and more, allowing LLMs to run SQL queries on structured and indexed blockchain data.
    2
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Provides real-time access to cryptocurrency and DEX data across multiple blockchains, enabling users to analyze tokens, pools, trading volumes, and perform technical analysis through DexPaprika's API. No API keys required for seamless integration with AI assistants.
    11
    1,407 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A comprehensive cryptocurrency market-data MCP server with 49 tools across six data sources, enabling LLMs to answer market questions via natural language.
    49
    MIT