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.

npm npm downloads provenance MCP Registry Indexed on TensorBlock MCP Index Listed on mcpservers.org license

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

FerramentaO que respondeAcesso
get_chainsQuais blockchains são cobertas, seus IDs de cadeia, tokens e venues DEXQualquer chave · sem chave retorna apenas a lista de blockchains, e informa isso
get_pairsO que é precificável em uma blockchain: universo de tokens, venues, sintaxe de paresQualquer chave · sem chave retorna o subconjunto medido, rotulado como tal
get_pricesPreç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 DEXsQualquer chave
get_spreadsDislocamentos entre venues de uma blockchain inteira, classificados por USD bruto no tamanho ótimoQualquer chave para live: true · sem chave serve o snapshot gratuito por hora
get_history_summaryO que o arquivo de medição cobre: linhas, pares rastreados, blockchains vistas, período, retençãoQualquer chave (nível gratuito incluído)
get_historySérie de preço/liquidez por venue de um par e spread bruto entre venues em 24h / 7d / 30dPlano 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_pairs e get_spreads respondem a partir da superfície pública gratuita e cada uma carrega um campo limitation nomeando exatamente o que uma chave adicionaria. get_prices, get_history_summary e get_history retornam 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.

  1. Assine — há um nível gratuito: https://rapidapi.com/donnydev/api/multi-chain-dex-prices-liquidity
  2. Copie sua X-RapidAPI-Key do painel da RapidAPI.
  3. Coloque-a em RAPIDAPI_KEY na 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:

PlanoAdiciona
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 ambientePadrãoFinalidade
RAPIDAPI_KEYSua chave RapidAPI. Necessária para as ferramentas pagas.
ARB_DEX_TIMEOUT_MS45000Timeout de requisição. Uma varredura ao vivo de blockchain inteira é uma leitura on-chain real e pode levar ~30s.
ARB_DEX_FREE_BASE_URLorigem de produçãoSubstitui o host da superfície gratuita.
ARB_DEX_RAPIDAPI_HOSTmulti-chain-dex-prices-liquidity.p.rapidapi.comSubstitui 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

Licença

MIT — veja LICENÇA.