Arb DEX
Preços de cripto ao vivo entre DEXs, lidos do estado dos pools on-chain: preço por venue, profundidade de liquidez e spread bruto entre venues em BSC, Polygon, Arbitrum, Base, Avalanche e Optimism. Funciona sem chave, sem conta.
Documentação
arb-dex-mcp
Preços cripto ao vivo entre DEXs para seu agente de IA — preço de pool por venue, liquidez do pool e o spread bruto entre venues em 6 blockchains EVM, lidos diretamente do estado on-chain dos pools.
Blockchains: BSC · Polygon · Arbitrum · Base · Avalanche · Optimism. Venues: PancakeSwap (v2 + v3), Uniswap v3, SushiSwap, QuickSwap, Biswap, ApeSwap, BaseSwap, Trader Joe, Pangolin — cada pool estilo v2 e cada faixa de taxa v3 separadamente, porque um pool de 1% com $12 mil e um pool de 0,01% com $19 milhões não são a mesma cotação.
Nada é modelado, estimado ou preenchido retroativamente. Cada payload informa seu próprio número de bloco e carrega sua própria nota de escopo, então um agente que cita um valor também tem as ressalvas anexadas a ele.
Funciona sem chave de API contra um snapshot público gratuito por hora. Docs · npm
Início rápido
Nada para clonar ou compilar. Seu cliente MCP baixa o pacote. Requer Node 18+.
Claude Desktop
claude_desktop_config.json — macOS ~/Library/Application Support/Claude/,
Windows %APPDATA%\Claude\:
{
"mcpServers": {
"arb-dex": {
"command": "npx",
"args": ["-y", "arb-dex-mcp"],
"env": {
"RAPIDAPI_KEY": "your-rapidapi-key-here"
}
}
}
}
Reinicie o Claude Desktop; as seis ferramentas aparecem sob o ícone de conectores.
Remova o bloco env completamente para rodar sem chave — o servidor ainda inicia e as
ferramentas de snapshot gratuito ainda respondem.
Claude Code
claude mcp add arb-dex --env RAPIDAPI_KEY=your-rapidapi-key-here -- npx -y arb-dex-mcp
Sem chave:
claude mcp add arb-dex -- npx -y arb-dex-mcp
Depois /mcp para confirmar que conectou.
Cursor
~/.cursor/mcp.json (global) ou .cursor/mcp.json (por projeto):
{
"mcpServers": {
"arb-dex": {
"command": "npx",
"args": ["-y", "arb-dex-mcp"],
"env": {
"RAPIDAPI_KEY": "your-rapidapi-key-here"
}
}
}
}
Cursor → Configurações → MCP mostra o servidor e suas ferramentas assim que o arquivo é salvo.
Qualquer outro cliente MCP
Os mesmos três fatos: comando npx, argumentos ["-y", "arb-dex-mcp"], transporte stdio,
env opcional RAPIDAPI_KEY.
Experimente
Prompts reais e o formato real que retorna. Os payloads abaixo foram medidos ao vivo em 2026-08-15; foram encurtados para caber na largura, mas nada foi inventado.
1. "Qual é o preço de WBNB/USDT em todos os venues da BSC agora?"
get_prices lê cada pool que contém o par — pares v2 e cada faixa de taxa v3 separadamente —
em um único bloco declarado:
{
"pair": "WBNB/USDT",
"network": "bsc",
"chainId": 56,
"blockNumber": 116151268,
"pricesByVenue": [
{ "venue": "pancake", "surface": "v2", "feeBps": 25, "price": 611.7347, "tvlUsd": 56834814.36 },
{ "venue": "biswap", "surface": "v2", "feeBps": 10, "price": 610.8278, "tvlUsd": 415733.94 },
{ "venue": "apeswap", "surface": "v2", "feeBps": 20, "price": 611.1244, "tvlUsd": 3659.06 },
{ "venue": "pancakeV3:1", "surface": "v3", "feeBps": 1, "price": 610.5684, "tvlUsd": 18596810.32 },
{ "venue": "pancakeV3:5", "surface": "v3", "feeBps": 5, "price": 610.6531, "tvlUsd": 4941099.44 },
{ "venue": "pancakeV3:25", "surface": "v3", "feeBps": 25, "price": 610.6304, "tvlUsd": 52534.35 },
{ "venue": "pancakeV3:100", "surface": "v3", "feeBps": 100, "price": 609.1025, "tvlUsd": 12206.21 }
],
"bestBuy": { "venue": "pancakeV3:100", "price": 609.1025 },
"bestSell": { "venue": "pancake", "price": 611.7347 },
"midSpreadBps": 43.22,
"crossDex": {
"grossSpreadBps": 0,
"grossUsd": 0,
"optimalInput": { "amount": 0, "token": "WBNB", "usd": 0 },
"buyVenue": "-",
"sellVenue": "-"
},
"liquidity": { "venues": 7, "totalTvlUsd": 80856857.67 },
"source": "rpc"
}
Leia os dois números de spread um contra o outro. O spread médio bruto é 43 bps — e o
spread bruto capturável é 0. A cotação de 609,10 vive em um pool de $12 mil; o tamanho que
realmente liquidaria esse valor move o preço além da lacuna antes de você chegar lá. Uma ferramenta que
relatasse apenas os 43 bps estaria entregando a um agente um número que ele não pode negociar. Esta relata ambos, e
optimalInput é onde a honestidade se materializa.
2. "Mostre-me os spreads entre DEXs na Base — algum é realmente capturável?"
get_spreads varre uma blockchain inteira e classifica por USD bruto no tamanho ótimo, não por
pontos-base de manchete:
{
"network": "base",
"chainId": 8453,
"scannedPairs": 11,
"opportunities": [],
"found": 0,
"filters": { "minSpreadBps": 10, "minVenueTvlUsd": 1000, "minGrossUsd": 0.01, "limit": 5 },
"ranking": "gross USD at the optimal trade size, NOT raw spread — a large spread with a tiny optimal size is not an opportunity",
"scope": "GROSS cross-venue spread from live pool state, BEFORE gas, MEV and any slippage beyond the optimal size. Not a profit estimate and not trade advice. Venues below the liquidity floor are excluded because a spread against a dust pool is an artefact, not an opportunity.",
"elapsedMs": 2847
}
found: 0 é uma resposta real e é a mais comum. Onze pares verificados, nada superou
o piso. Venues com menos de $1.000 em TVL são descartados diretamente. Quando linhas de fato
retornam, cada uma carrega capturable, warning e shallowestSideTvlUsd para que um número grande
de pontos-base não engane por conta própria. Esta ferramenta dirá ao seu agente que não há nada lá — que é
exatamente o objetivo de perguntar.
3. "Quanto histórico o arb-dex realmente tem, e para quais blockchains?"
get_history_summary dimensiona o arquivo antes de você consultá-lo:
{
"rows": 133,
"rowsWithPairDetail": 103,
"rowsByEra": { "digest-totals-only": 30, "top-list-pairs": 5, "full-sweep": 98 },
"pairsTracked": 107,
"firstAt": "2026-08-10T17:35:09.355Z",
"lastAt": "2026-08-15T20:54:34.417Z",
"spanHours": 123.32,
"chainsSeen": ["arbitrum", "avalanche", "base", "bsc", "optimism", "polygon"],
"pairs": [
{ "chain": "polygon", "pair": "WBTC/USDC", "observations": 103, "qualifiedObservations": 39 },
{ "chain": "bsc", "pair": "BTCB/USDT", "observations": 99, "qualifiedObservations": 15 },
{ "chain": "arbitrum", "pair": "ARB/USDC", "observations": 98, "qualifiedObservations": 0 }
]
}
A cobertura é apenas o que foi medido. Uma lacuna permanece uma lacuna — rowsByEra diz quanto detalhe cada
era de linhas carrega, e ARB/USDC ter 98 observações mas 0 qualificadas é o arquivo
dizendo que esse par nunca superou o piso de spread.
Ferramentas
| Ferramenta | O que responde | Acesso |
|---|---|---|
get_chains | Quais blockchains são cobertas, seus IDs de cadeia, tokens e venues DEX | Qualquer chave · sem chave retorna apenas a lista de blockchains, e informa isso |
get_pairs | O que é precificável em uma blockchain: universo de tokens, venues, sintaxe de pares | Qualquer chave · sem chave retorna o subconjunto medido, rotulado como tal |
get_prices | Preço de um par em cada venue que possui um pool para ele, além de reservas, TVL, faixa de taxa e o spread entre DEXs | Qualquer chave |
get_spreads | Dislocamentos entre venues de uma blockchain inteira, classificados por USD bruto no tamanho ótimo | Qualquer chave para live: true · sem chave serve o snapshot gratuito por hora |
get_history_summary | O que o arquivo de medição cobre: linhas, pares rastreados, blockchains vistas, período, retenção | Qualquer chave (nível gratuito incluído) |
get_history | Série de preço/liquidez por venue de um par e spread bruto entre venues em 24h / 7d / 30d | Plano PRO — veja Planos |
As duas ferramentas de histórico leem o arquivo de medição do próprio serviço, então respondem à pergunta
que as ferramentas ao vivo não conseguem: se uma dislocação persistiu ou foi uma única amostra. A amostragem é
aproximadamente por hora, e lacunas nunca são interpoladas ou preenchidas retroativamente. Chame get_history_summary primeiro
para ver qual período existe antes de solicitar uma janela.
O que não fará
- Spreads são brutos — antes de gás, MEV e slippage além do tamanho ótimo. Não é uma estimativa de lucro e não é aconselhamento de negociação.
- Nunca fabrica uma linha. Sem chave,
get_chains,get_pairseget_spreadsrespondem a partir da superfície pública gratuita e cada uma carrega um campolimitationnomeando exatamente o que uma chave adicionaria.get_prices,get_history_summaryeget_historyretornam um erro explícito de chave necessária com o link de inscrição, em vez de uma resposta mais enxuta disfarçada de completa. - Não executa negociações, não mantém fundos nem toca em uma carteira. São dados de mercado somente leitura.
- Este pacote não inclui credenciais de nenhum tipo. A chave é sua e permanece na sua configuração.
Obtenha uma chave
As ferramentas pagas chamam a API via RapidAPI usando sua própria chave.
- Assine — há um nível gratuito: https://rapidapi.com/donnydev/api/multi-chain-dex-prices-liquidity
- Copie sua
X-RapidAPI-Keydo painel da RapidAPI. - Coloque-a em
RAPIDAPI_KEYna configuração acima — nunca em código e nunca em um commit.
Planos
Cinco das seis ferramentas funcionam no nível gratuito. Apenas a série histórica por par é restrita:
| Plano | Adiciona |
|---|---|
| BASIC ($0) | Cotações ao vivo em todas as blockchains, além de get_history_summary para você dimensionar o arquivo antes de comprá-lo |
| PRO ($15/mês) | get_history — a série medida por venue para um par, janela de 24h, 1000 chamadas/mês |
| ULTRA ($49/mês) | Sem limite de janela e sem medidor de histórico, além de profundidade/slippage e alertas de spread |
| MEGA ($149/mês) | Paginação em massa sobre o arquivo completo para seu próprio armazenamento |
Chamar get_history abaixo do PRO retorna um erro explícito tier_required nomeando o plano e
a URL de upgrade — não falha silenciosamente nem retorna uma série vazia.
Configuração
| Variável de ambiente | Padrão | Finalidade |
|---|---|---|
RAPIDAPI_KEY | — | Sua chave RapidAPI. Necessária para as ferramentas pagas. |
ARB_DEX_TIMEOUT_MS | 45000 | Timeout de requisição. Uma varredura ao vivo de blockchain inteira é uma leitura on-chain real e pode levar ~30s. |
ARB_DEX_FREE_BASE_URL | origem de produção | Substitui o host da superfície gratuita. |
ARB_DEX_RAPIDAPI_HOST | multi-chain-dex-prices-liquidity.p.rapidapi.com | Substitui o host da RapidAPI. |
Defina estas no bloco env do seu cliente MCP (veja as configurações acima). .env.example acompanha o
pacote e documenta as mesmas variáveis para execuções locais a partir de um clone.
Teste
A suíte de testes não está no tarball do npm — execute-a a partir de um clone:
git clone https://github.com/donnywin85/arb-dex-mcp.git
cd arb-dex-mcp && npm install
npm run selftest # keyless: exercises the free fallbacks
RAPIDAPI_KEY=... npm run selftest # keyed: exercises the paid routes
O teste inicia o servidor via stdio e chama cada ferramenta contra a API real de produção — nada é simulado. Ele valida valores ao vivo (número de bloco, preços por venue, contagens de pares verificados), então uma execução que passa é evidência de que o caminho de dados funciona de ponta a ponta.
Links
- npm: https://www.npmjs.com/package/arb-dex-mcp
- Docs: https://donnywin85.github.io/arb-dex-mcp/
- Registro Oficial MCP:
io.github.donnywin85/arb-dex-mcp - Índice TensorBlock MCP: https://www.tensorblock.co/mcp/servers/github-donnywin85-arb-dex-mcp-7dd9a70c
- Código-fonte: https://github.com/donnywin85/arb-dex-mcp
- A API por trás dele: https://rapidapi.com/donnydev/api/multi-chain-dex-prices-liquidity
Licença
MIT — veja LICENÇA.