Dexpaprika MCP vs XFuel

A side-by-side look at the Dexpaprika MCP and XFuel MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Dexpaprika MCP logoDexpaprika MCPFinance & Fintech · Local subprocess (stdio)Coinpaprika's DexPaprika MCP server exposes high-performance DexPaprika API covering 20+ chains and 5M+ tokens with real time pricing, liquidity pool data & historical OHLCV data, providing AI agents standardized access to comprehensive market data through Model Context Protocol.68GreatAuth: no auth requiredXFuel logoXFuelFinance & Fintech · Local subprocess (stdio)Submit AI inference to XFuel, pay per task (USDC via x402 or TFUEL), fetch/verify ZK proofs.60GoodAuth: not declared

Verdict: choose Dexpaprika MCP for finance & fintech work as a local process; choose XFuel for finance & fintech as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Dexpaprika MCP logoChoose Dexpaprika MCP when

  • You need dedicated capabilities in the Finance & Fintech domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: No auth required.
  • You have the keys it needs: DEXPAPRIKA_API_KEY, DEXPAPRIKA_API_BASE_URL.
  • You want tools like getKeyStatus, getNetworks, getCapabilities.
Explore Dexpaprika MCP

XFuel logoChoose XFuel when

  • You need dedicated capabilities in the Finance & Fintech domain.
  • You prefer a local stdio subprocess transport.
  • You want tools like chat_completions, submit_inference, register_agent.
Explore XFuel

Feature & specification comparison

Rows where the two servers differ are marked.

SpecDexpaprika MCP logoDexpaprika MCPXFuel logoXFuel
CategoryFinance & FintechFinance & Fintech
Quality signal68/100 · Great60/100 · Good
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthNo auth requiredNot declared
PricingFreeNot declared
Required env varsDEXPAPRIKA_API_KEYDEXPAPRIKA_API_BASE_URLNone listed
Verified ownerCommunity listingCommunity listing
GitHub stars1081
Directory activity 2 views 0 installs 0 upvotes 3 views 0 installs 0 upvotes
Tools1717

Tools & capabilities

Dexpaprika MCP tools 17

  • getKeyStatusReport 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.
  • getNetworksList 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.
  • getCapabilitiesGet 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.
  • getNetworkDexesList 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).
  • getNetworkPoolsGet 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).
  • getDexPoolsGet 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.
  • getNetworkPoolsFilterGet pools on one network filtered by numeric thresholds, returned under 'results' with has_next_page and next_cursor. Read-only and keyless. Choose this over getNetworkPools when the user gives numeric constraints or a time window. Use for 'pools over $1M liquidity on Base', 'pools created in the last 24h', or 'high-volume low-liquidity pairs'. Optional filters (AND-combined): volume_24h_min/max, volume_7d_min/max, liquidity_usd_min/max, txns_24h_min, created_after/created_before (Unix timestamps). Also network (required); limit (default 50, max 100); cursor to page; sort_by (default 'volume_usd_24h', alias order_by); sort_dir asc/desc (default 'desc', alias sort).
  • getPoolDetailsGet 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).
  • getPoolOHLCVGet historical OHLCV candles (open, high, low, close, volume) for one pool over a time range, returned as a time-series array. Read-only and keyless. Use for 'price history of this pair', 'hourly chart for the last week', 'candles since Jan 1', or backtesting; for the single current price use getPoolDetails instead. Params: network (required); pool_address (required); start (required; Unix timestamp, RFC3339, or yyyy-mm-dd); end (optional, capped to 1 year after start); interval one of '1m','5m','10m','15m','30m','1h','6h','12h','24h' (default '24h'); limit (default 100, max 366 candles); inversed (optional bool, default false).
  • getPoolTransactionsGet one pool's recent individual swap transactions, newest first, returned under 'transactions' (paginate with page, or a cursor). Read-only and keyless. These are per-trade records, not aggregated candles (use getPoolOHLCV) or a summary snapshot (use getPoolDetails). Use for 'recent trades on this pool', 'who swapped in the last hour', or 'raw transaction feed'. Params: network (required); pool_address (required); limit (default 10, max 100); page (default 1, up to 100 pages) or cursor (a transaction id); from (optional Unix seconds, inclusive, capped to the last 7 days); to (optional Unix seconds, exclusive, must be after from).
  • getTokenDetailsGet 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).
  • getTokenPoolsGet 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.
  • +5 more on the listing page

XFuel tools 17

  • chat_completionsGenerate text via Chit402's OpenAI-compatible POST /v1/chat/completions. This is the first-hour / demo path. With the demo key it is unmetered (rate-limited). It is NOT submit_inference and does NOT spend USDC. Args: - messages (required): OpenAI chat messages, e.g. [{role:"user", content:"Say hello"}] - model (optional): catalog id from list_models (default xfuel/auto) - max_tokens, temperature (optional) Returns the completion plus top-level task_id and verify_url (also under xfuel). proof_outcome may still be pending — use verify_receipt for offline binding checks. Do not wait in this tool.
  • submit_inferenceSubmit a PAID M2M inference task (POST /task-request). Default rail is USDC on Base. Without a payer this returns HTTP 402. This is NOT the unmetered demo path — use chat_completions to generate text with the demo key. Pass messages or input so a live provider is actually called. input_hash/memo alone do not send a prompt to the model. Args: - model (string): live catalog id from list_models - sender (string): 0x address that owns/pays for the task - amount (string): USDC 6 decimals; 2000 = $0.002; minimum 2000 - messages / input (optional): the prompt. Required for live routing. - max_tokens, temperature (optional) Poll get_task_status(task_id). Pay the live $0.01 door at POST /v1/chat/completions from the agent's wallet — MCP does not take a human private key.
  • register_agentPOST /v1/agents/register. Binds an AAWP official or smart-account agentWallet to an integer agent_id using a collected HMAC-valid receipt (task_id from a paid POST /v1/chat/completions). Demo receipts do not qualify. API key is not a wallet. Does not accept a human private key. Returns agent_id (required later by POST /erc8004/validate) and validate_score.
  • get_agent_bookGET|POST /v1/agents/:agent_id/book. Possession-gated last-N collected UsageSettled rows for that agent_id (task_id, payment.ref, rail, amount, collected_at, route). Demo / unmetered rows never appear. Default N=50, max 200. Totals: count, USDC sum, by rail. Response includes caps (budget Y, spent, remaining) when set. Not a public index. API key is not possession. Does not accept a human private key. Pass the session issued by register_agent (or an HMAC over agent_id + window using that session). Unauth or wrong proof returns 401/403 with an empty body.
  • get_bookGET|POST /v1/agents/:agent_id/book. Possession-gated last-N collected UsageSettled rows for that agent_id (task_id, payment.ref, rail, amount, collected_at, route). Demo / unmetered rows never appear. Default N=50, max 200. Totals: count, USDC sum, by rail. Response includes caps (budget Y, spent, remaining) when set. Not a public index. API key is not possession. Does not accept a human private key. Pass the session issued by register_agent (or an HMAC over agent_id + window using that session). Unauth or wrong proof returns 401/403 with an empty body. Alias of get_agent_book for Eliza / Cursor clients.
  • verify_receiptFetch GET /receipt/:task_id?format=json and verify payment binding locally via @xfuel/verify — no trust in HTML, no private keys. This is the default "prove it" path for agents holding hub, model, amount, verify_url. Args: - task_id (preferred) or verify_url — one required - fetch_jwks (default true): load /.well-known/jwks.json for issuer signature check - check_payer (default false): on-chain USDC payer match (Base or Solana RPC) - check_nullifier (default false): SP1 nullifier anchor read (optional Tier-2) Returns { verify_url, receipt, verification: { overall, binding, issuer_signature, … } }. overall is verified | partial | failed. Unmetered demo receipts may be partial (no binding).
  • get_task_statusGet the current status of a Chit402 task, including proof outcome and fee breakdown. Args: - task_id (string): from chat_completions (xfuel.task_id) or submit_inference Returns JSON: { task_id, status, proof_outcome, verify_url, message_type, chain_id, gross_amount, fee_amount, net_amount, fee_bps, payment_rail, payment_ref, result, sp1_proof, created_at, updated_at }. 'verify_url' is a public, no-auth receipt page you can open or share to prove settlement. 'status' reaches a terminal value ('completed' | 'fee_collected' | 'failed'); 'proof_outcome' is one of 'pending' | 'valid' | 'regenerable' | 'invalid'.
  • get_proofFetch the SP1 ZK settlement proof for a settled task. Args: - task_id (string): from chat_completions (xfuel.task_id) or submit_inference Returns JSON: { task_id, status, proof_outcome, verify_url, payment_binding, sp1_proof: { proof, publicInputs, nullifier, provingTimeMs }, fee }. 'verify_url' is a public, no-auth receipt page you can open or share to prove settlement. The proof attests settlement metadata + a commitment to the output hash (NOT inference correctness). To validate it, use verify_proof(task_id). Fails if the task has not settled yet — poll get_task_status until proof_outcome is 'valid'.
  • verify_proofIndependently verify a settled task's proof client-side (the "prove it" flow in one call): 1. a proof is present and proof_outcome === 'valid'; 2. the x402 payment binding (if present) re-derives to the committed value; 3. (optional) the on-chain nullifier's spent state, when check_nullifier=true AND the server was started with XFUEL_RPC_URL + ZK_VERIFIER_ADDRESS. Args: - task_id (string): from chat_completions (xfuel.task_id) or submit_inference - check_nullifier (boolean, optional): also read the on-chain nullifier state (default false) Returns JSON: { ok, checks: { hasProof, proofOutcomeValid, paymentBinding, nullifier }, reasons }. 'ok' is true when the proof is present + valid and any present payment binding is consistent. The nullifier read is informational and does not gate 'ok'.
  • quote_taskPreview per-rail pricing WITHOUT creating a task. Use before submit_inference. Unknown model ids still return the $0.01 USDC floor — the human summary warns when priced_model is null (inference will fail). Args: - model (preferred) or model_id: catalog id to price - amount (optional): USDC 6 decimals for the USDC rail - messages / max_tokens / tools: forecast the request you will submit Unmetered chat_completions does not need this quote.
  • get_healthCheck the connected Chit402 API's health and configuration (fee config, supported chains, message types, demo limits). Useful for discovery/diagnostics. Args: none. Returns JSON: the /health payload (status, server, version, fee_config, chains, message_types, …).
  • get_my_statsFetch usage for the configured API key (GET /stats/me). The public demo key chit402-demo is SHARED — numbers are not this client. Bring your own XFUEL_API_KEY for buyer-scoped stats.
  • +5 more on the listing page

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

Dexpaprika MCP

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "coinpaprika-dexpaprika-mcp": {
      "command": "npx",
      "args": [
        "dexpaprika-mcp@latest"
      ],
      "env": {
        "DEXPAPRIKA_API_KEY": "YOUR_DEXPAPRIKA_API_KEY_HERE",
        "DEXPAPRIKA_API_BASE_URL": "YOUR_DEXPAPRIKA_API_BASE_URL_HERE"
      }
    }
  }
}

XFuel

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "xfuel": {
      "command": "npx",
      "args": [
        "-y",
        "chit402-mcp"
      ]
    }
  }
}

Frequently asked questions

Dexpaprika MCP is categorized under Finance & Fintech and uses a local stdio subprocess. XFuel belongs to Finance & Fintech and uses a local stdio subprocess. Pick Dexpaprika MCP for finance & fintech work and XFuel for finance & fintech.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Dexpaprika MCP is listed as free. Auth: no auth required. XFuel has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add coinpaprika-dexpaprika-mcp and xfuel as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Dexpaprika MCP has a quality signal of 68/100 (Great) with 2 views, 0 installs and 108 GitHub stars. XFuel has 60/100 (Good) with 3 views, 0 installs and 1 GitHub stars.