{
  "markdown": "# dex-data MCP server\n\n[![dex-data-mcp MCP server](https://glama.ai/mcp/servers/donnywin85/dex-data-mcp/badges/score.svg)](https://glama.ai/mcp/servers/donnywin85/dex-data-mcp)\n\n**Twenty-three tools for your agent — DEX market data, everyday utilities and\nreference data. Twenty-two need no API key, no wallet and no signup; one is paid\nand pays from a wallet you control.**\n\n## Try it in 30 seconds\n\n```bash\nclaude mcp add dex-data -- npx -y dex-data-mcp\n```\n\nThat is the whole install. Ask your agent *\"what's the price of WBNB on BSC?\"*\nand it answers from live on-chain pool state:\n\n```json\n{\n  \"symbol\": \"WBNB\", \"priceUsd\": 677.25, \"network\": \"bsc\",\n  \"via\": \"WBNB/USDT\", \"venues\": 7, \"totalTvlUsd\": 117110555.6,\n  \"confidence\": \"HIGH\", \"spreadBps\": 25.26, \"blockNumber\": 117223818\n}\n```\n\n**Measured 2026-08-21: all 22 free tools answered keyless, with full payloads.**\nNo tool is degraded on the free tier, and none returns a stub or a placeholder —\nthe free answer is the same answer. What the free tier limits is *how many* calls\nper day, not what is in them.\n\nSince 1.6.0 there is also **one paid tool**, `get_dex_spread` — see\n[Paid tools](#paid-tools). It is the only tool that needs a wallet, it is labelled\nPAID in its own description, and without a wallet it explains what to set and\nspends nothing. The 22 tools above are unaffected by it.\n\nTwenty-two free tools, no API key and no wallet, in three groups:\n\n- **Multi-chain DEX market data** — token prices, liquidity depth, pool reserves,\n  best execution venue, liquidity risk, pre-trade slippage and gas costs across BNB Chain,\n  Polygon, Arbitrum, Base, Avalanche and Optimism.\n- **General-purpose agent utilities** — geocoding, reverse geocoding, weather,\n  web search, article/PDF to Markdown, and cryptographic randomness.\n- **Reference and research data** — search autocomplete, public holidays and\n  business days, RSS/Atom feeds, IP geolocation, GLEIF legal-entity lookup and\n  the US Treasury yield curve.\n\n## Why this exists\n\nThe ledger says it plainly. Of 20,392 paywall challenges recorded, **zero** were\ngenuine third-party queries — 82.5% were our own monitoring, 17.3% were catalogue\ncrawlers walking every route with no parameters. We were being indexed, not\nshopped.\n\nBazaar listings are a bet on demand that does not exist yet. MCP is where agents\nalready are today: Claude Desktop, Claude Code, Cursor, and every other MCP host.\nThis server is the same data, delivered where the users are, and it needs no\npayment at all for the free tier — which removes the one barrier that a browsing\nagent cannot cross on its own.\n\n## Install\n\n**Claude Code**\n\n```\nclaude mcp add dex-data -- npx -y dex-data-mcp\n```\n\n**Claude Desktop / Cursor** — add to `claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"dex-data\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"dex-data-mcp\"]\n    }\n  }\n}\n```\n\nNo API key, no wallet, no signup. The free tier answers every tool for a daily\nallowance; after that the endpoints fall back to x402 micropayments.\n\n## Tools\n\n**DEX market data**\n\n| tool | answers |\n|---|---|\n| `get_token_price` | USD price of any ERC-20, by ticker or contract address |\n| `get_liquidity` | market depth and TVL per venue for a pair |\n| `get_best_venue` | which DEX is cheapest to buy on / best to sell into |\n| `get_slippage` | price impact for a specific trade size |\n| `get_liquidity_risk` | DEEP / MODERATE / SHALLOW / VERY_THIN depth class |\n| `get_gas` | gas cost in USD per chain, ranked cheapest-first (gwei is not comparable across chains) |\n| `get_pool_reserves` | raw reserves, fee and TVL per venue at one block — the data the others compute from |\n| `find_arbitrage` | cross-venue arbitrage now, ranked by gross USD at the optimal size, not raw spread |\n| `list_chains` | supported chains and indexed tokens |\n\n**General-purpose agent utilities**\n\nNot a change of theme — these were chosen the same way everything else here was.\nReading USDC receipts across 1,062 x402 seller wallets on Base ranked what\nactually gets paid for, and DEX data was not near the top of that list. Forward\ngeocoding was (56 paying wallets), then weather, then article-to-Markdown, then\nrandomness. These are the answers to that data.\n\n| tool | answers |\n|---|---|\n| `geocode` | address or place name to coordinates, worldwide (OpenStreetMap) |\n| `reverse_geocode` | coordinates to the nearest street address |\n| `get_weather` | current conditions plus up to a 7-day forecast for any coordinates |\n| `search` | free-text web search to ranked organic results, sponsored rows excluded |\n| `url_to_markdown` | a public article or PDF URL to clean Markdown |\n| `get_random` | CSPRNG integers or bytes, for agents that cannot generate their own |\n\n**Reference and research data**\n\nChosen the same way, but from a corrected reading. The category totals in the\noriginal scan were double-counted — the biggest x402 sellers carry 10-16 of the\n16 category tags each, so every category reported nearly the whole market's\nrevenue. Seller-level rows are clean, and every tool below is something a wallet\ntook real USDC for during the sampled window.\n\n| tool | answers |\n|---|---|\n| `get_search_suggestions` | what people actually type about a topic — autocomplete, expanded into questions and comparisons |\n| `get_holidays` | public and bank holidays for 100+ countries, and whether a given date is a business day |\n| `read_feed` | any RSS, Atom or RDF feed as clean JSON, summaries in both HTML and plain text |\n| `geolocate_ip` | where an IP is, with the datacentre/VPN flag that says whether to believe it |\n| `lookup_lei` | a company's Legal Entity Identifier **by name**, with lapsed registrations flagged not hidden |\n| `get_treasury_yield_curve` | the US par yield curve plus 2s10s / 3m10y / 5s30s and the inversion flag |\n\n**Local**\n\n| tool | answers |\n|---|---|\n| `get_spend_budget` | what this session has spent on paid calls, and the caps in force |\n\n<a name=\"paid-tools\"></a>\n**Paid — needs a wallet you control**\n\n| tool | answers | price |\n|---|---|---|\n| `get_dex_spread` | real-time cross-DEX price & spread on BSC: per-venue prices across PancakeSwap v2, PancakeSwap v3 (all fee tiers), Biswap and ApeSwap in one call, plus best buy/sell venue, gross arbitrage spread (bps + USD), optimal trade size, liquidity and block number | $0.01 USDC/call, no free tier |\n\nThis tool used to be a separate package, `bsc-dex-spread-mcp`. It lives here now:\none install, one config, free tools and paid tools side by side. Nothing else\nchanged — same route, same data, same price.\n\n**Before you reach for it, the free tools may already answer you.**\n`get_liquidity` gives per-venue depth for a pair and `find_arbitrage` gives a\ncross-venue spread scan, both inside the 25-calls-a-day free tier with no wallet\nat all. `get_dex_spread` is worth paying for when you want all four BSC venues\nand the optimal trade size in a single call, or when you have exhausted the free\nallowance.\n\nPairings worth knowing: `geocode` then `get_weather` turns a place name into a\nforecast, `search` then `url_to_markdown` turns a question into readable source\ntext, and `read_feed` then `url_to_markdown` turns a feed into full articles.\n\n## Free tier\n\nEvery one of the 22 free tools answers within a daily per-caller allowance — no\nwallet, no signup. The remaining quota is returned on `X-FreeTier-Remaining`.\nBeyond it, calls fall back to x402 micropayments (USDC on Base). `get_dex_spread`\nis the exception: it is paid from the first call and has no allowance.\n\nEvery response carries the liquidity backing the number and a confidence rating.\nA quote with no depth behind it is refused rather than returned — a dust-pool\nprice is worse than no price when an agent may trade on it.\n\n## Paying: the wallet is yours, and this package ships no keys\n\n**This package contains no private key, no seed and no funded wallet.** Payment\nis opt-in and off unless you set a key yourself; a package strangers install must\nnever move funds because a model called a tool a few extra times.\n\nSet **one** of these in your MCP client's `env` block for this server:\n\n```json\n{\n  \"mcpServers\": {\n    \"dex-data\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"dex-data-mcp\"],\n      \"env\": { \"DEX_WALLET_KEY\": \"0x<64 hex chars>\" }\n    }\n  }\n}\n```\n\n`EVM_PRIVATE_KEY` is accepted as an alias — it is the name the CDP x402 docs use\nand the name `bsc-dex-spread-mcp` read, so an existing config for that package\nkeeps working unchanged.\n\n- **Fund it with USDC on Base and nothing else.** x402's `exact` scheme is\n  EIP-3009: you sign an off-chain authorization and the facilitator broadcasts and\n  pays the gas, so the wallet needs **zero ETH**.\n- **Use a burner.** The key sits in your MCP client config in plaintext. A few\n  dollars of USDC, never a main wallet.\n- **Spend is capped and fails closed** — `DEX_MAX_SPEND_USD` (default $1 total for\n  the process), `DEX_MAX_PRICE_USD` (default $0.05 for any single call) and\n  `DEX_MAX_CALLS` (default 200). Hitting any one stops payment and returns a plain\n  explanation rather than continuing to spend. The asking price is read from the\n  402 challenge and refused **before** paying if it exceeds the ceiling.\n- `get_spend_budget` reports what this session has spent and the caps in force.\n\nWithout a wallet, `get_dex_spread` returns the price, the two env var names, the\nshape of the value and the free alternatives — never a stack trace, and never a\nsilent failure.\n\n## Honest limits\n\n- Depth and prices cover **the venues this API indexes**; a deeper pool may exist\n  on a DEX not covered here.\n- v3 figures distinguish custody TVL from tradeable depth at the current price.\n  They are not the same number and are not labelled as if they were.\n- `get_slippage` is pool-level price impact: it excludes gas, MEV and multi-hop\n  routing, and flags v3 estimates that cross the active tick band.\n- A tool called without its required argument is **refused before any request is\n  made**, so a malformed call never spends a free-tier slot or a cent. The refusal\n  names the argument: `search` needs `q`, `get_slippage` needs `amountUsd` or\n  `amountIn`, `lookup_lei` needs `q` or `lei`.\n\n## Where to go next\n\n- **Cross-DEX spread only, on six chains** — [`arb-dex-mcp`](https://github.com/donnywin85/arb-dex-mcp)\n  is the focused sibling: `npx -y arb-dex-mcp`. Keyless too, and its free answers\n  carry a `limitation` field naming exactly what a key would add.\n- **Paid, per-call BSC spread** — that is now the `get_dex_spread` tool *in this\n  package*; you do not need a second install. It was previously the standalone\n  [`bsc-dex-spread-mcp`](https://github.com/donnywin85/bsc-dex-spread-mcp), which\n  still works and is unchanged, but this server is where it is maintained.\n- **You want the compliance pair (OFAC screening, GLEIF LEI)** —\n  [`agent-utils-mcp`](https://github.com/donnywin85/agent-utils-mcp).\n- **You want the human-approval job queue this whole stack is operated by** —\n  [`approval-queue-starter`](https://github.com/donnywin85/approval-queue-starter),\n  one file, zero dependencies.\n- **The weekly measurements, free** — <https://arbdatadesk.beehiiv.com>.\n  **The live dashboard** — <https://arb-dex-data-production.up.railway.app/dashboard>.\n",
  "bytes": 11250,
  "sha": "cf8152b244c7acdd9de3f10a0ba689b2aea9e5e1b477cd842ab78b3c48ca24c0",
  "repo_slug": "donnywin85/dex-data-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_donnyautomation_dex_data_e624219a/readme"
}