Trade Router MCP
Servidor MCP não custodial de swap e ordens limitadas na Solana. 21 ferramentas em Raydium, PumpSwap, Orca, Meteora. Protegido por MEV Jito. A chave privada nunca sai do agente.
Documentação
@traderouter/trade-router-mcp
Um servidor Model Context Protocol para TradeRouter.ai — mecanismo não custodial de swap, limite, trailing, DCA, TWAP e ordens combo na Solana para agentes de IA.
Isso é seguro?
Sim, e aqui está exatamente o porquê. A chave privada é lida uma única vez de TRADEROUTER_PRIVATE_KEY, usada para assinatura local com @solana/web3.js + tweetnacl, e nunca é transmitida, registrada ou persistida. Apenas transações assinadas saem da sua máquina. As mensagens do servidor são verificadas com Ed25519 contra uma âncora de confiança embutida no código. Consulte SECURITY.md para o modelo de ameaças completo, diagrama de fluxo de dados e manifesto de permissões.
Fluxo de assinatura:
- O agente chama
build_swap→ o MCP envia o endereço da carteira (chave pública) para api.traderouter.ai - A API retorna uma transação não assinada
- O MCP assina a tx localmente usando
TRADEROUTER_PRIVATE_KEY - A transação assinada é enviada para
/protect(bundle Jito protegido contra MEV) - O servidor confirma e retorna as alterações de saldo. A chave privada nunca cruza a rede.
Requisitos
- Node.js ≥ 18
- Uma chave privada de carteira Solana no formato base58 (use uma carteira dedicada para trading, não sua carteira principal)
Instalação
npx -y @traderouter/trade-router-mcp
Ou conecte-o a um cliente MCP (Claude Desktop, Cursor, Cline, etc.):
{
"mcpServers": {
"traderouter": {
"command": "npx",
"args": ["-y", "@traderouter/trade-router-mcp"],
"env": {
"TRADEROUTER_PRIVATE_KEY": "your_base58_private_key"
}
}
}
}
| SO | Caminho de configuração do Claude Desktop |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
Variáveis de ambiente
| Variável | Obrigatória | Padrão | Finalidade |
|---|---|---|---|
TRADEROUTER_PRIVATE_KEY | ✅ | — | Chave privada da carteira Solana (base58). Uso apenas local. |
SOLANA_RPC_URL | ❌ | https://api.mainnet-beta.solana.com | RPC personalizado para leituras |
TRADEROUTER_SERVER_PUBKEY | ❌ | âncora de confiança embutida | Substituir a âncora de confiança Ed25519 do servidor |
TRADEROUTER_SERVER_PUBKEY_NEXT | ❌ | (não definido) | Aceitar mensagens assinadas por esta chave além da principal (rotação de chaves) |
TRADEROUTER_REQUIRE_SERVER_SIGNATURE | ❌ | true | Verificar assinaturas do servidor em order_filled / twap_execution |
TRADEROUTER_REQUIRE_ORDER_CREATED_SIGNATURE | ❌ | true | Verificar assinaturas do servidor em order_created |
TRADEROUTER_DRY_RUN | ❌ | false | Quando true, toda ferramenta de ação de escrita (submit_signed_swap, auto_swap, place_*_order, cancel_order, extend_order) retorna { dry_run: true, tool, args } em vez de chamar a API. Ferramentas somente leitura executam normalmente. Adicionado na versão 1.0.9. |
Ferramentas
| Ferramenta | Finalidade |
|---|---|
get_wallet_address | Obter o endereço público da carteira configurada |
build_swap | Construir uma transação de swap não assinada |
submit_signed_swap | Enviar uma transação assinada manualmente |
auto_swap | Construir + assinar + enviar em uma única chamada |
get_holdings | Obter saldos de tokens de uma carteira |
get_mcap | Capitalização de mercado e preço de um token |
get_flex_card | URL PNG do trade card para carteira + token |
place_limit_order | Compra/venda limitada por preço ou capitalização de mercado |
place_trailing_order | Compra/venda com trailing stop |
place_twap_order | Compra/venda TWAP (média ponderada no tempo) |
place_limit_twap_order | Gatilho de limite → execução TWAP |
place_trailing_twap_order | Gatilho de trailing → execução TWAP |
place_limit_trailing_order | Gatilho de limite → execução com trailing (swap único no gatilho) |
place_limit_trailing_twap_order | Gatilho de limite → gatilho de trailing → execução TWAP |
list_orders | Listar ordens ativas de uma carteira |
check_order | Obter status de uma ordem específica |
cancel_order | Cancelar uma ordem ativa |
extend_order | Estender a expiração de uma ordem |
connect_websocket | Registrar uma carteira via WebSocket persistente |
connection_status | Estado atual da conexão WebSocket |
get_fill_log | Registro de ordens executadas |
Endpoints REST (nos bastidores)
| Endpoint | Finalidade |
|---|---|
POST /swap | Construir swap não assinado (multi-DEX: Raydium, PumpSwap, Orca, Meteora) |
POST /protect | Enviar tx assinada via bundle Jito — protegido contra MEV |
POST /holdings | Varredura de carteira — captura tokens que o RPC padrão não detecta |
GET /mcap | Capitalização de mercado + preço |
GET /flex | Geração de PNG do trade card |
wss://api.traderouter.ai/ws | WebSocket persistente para ordens de limite / trailing / DCA / TWAP / combo |
Âncora de confiança
A chave pública do servidor embutida no código é EXX3nRzfDUvbjZSmxFzHDdiSYeGVP1EGr77iziFZ4Jd4. Toda mensagem order_filled, order_created e twap_execution do servidor é verificada com Ed25519 antes de ser tratada como autoritativa. Consulte SECURITY.md para detalhes e o mecanismo de rotação (TRADEROUTER_SERVER_PUBKEY_NEXT).
Uso com LangChain
Qualquer servidor MCP funciona no LangChain por meio do adaptador oficial:
from langchain_mcp_adapters.client import MultiServerMCPClient
client = MultiServerMCPClient({
"traderouter": {
"command": "npx",
"args": ["-y", "@traderouter/trade-router-mcp"],
"transport": "stdio",
"env": {"TRADEROUTER_PRIVATE_KEY": "<base58>"},
},
})
tools = await client.get_tools()
Taxas
Taxa fixa de 1% sobre o volume de swaps, embutida no roteamento em /protect. Sem assinatura, sem chave de API, sem mínimos mensais. Endpoints somente leitura (/holdings, /mcap) são gratuitos.
Especificações legíveis por máquina (ao vivo em traderouter.ai)
| URL | Formato | Finalidade |
|---|---|---|
| https://traderouter.ai/openapi.json | OpenAPI 3.1 (JSON) | Contrato canônico da API — gere SDKs em qualquer linguagem |
| https://traderouter.ai/openapi.yaml | OpenAPI 3.1 (YAML) | Mesma especificação, formato YAML (regenerado a partir do JSON) |
| https://traderouter.ai/llms.txt | texto | Guia de API legível por LLM (conforme llmstxt.org) |
| https://traderouter.ai/SKILL.md | markdown | Formato Anthropic Agent Skills — guia completo de implementação |
| https://traderouter.ai/SECURITY.md | markdown | Modelo de ameaças + diagrama de fluxo de dados + manifesto de permissões (espelha ./SECURITY.md aqui) |
| https://traderouter.ai/CHANGELOG.md | markdown | Changelog unificado entre as trilhas de versão da API / servidor MCP / Site |
Geração rápida de SDK:
# TypeScript
openapi-generator-cli generate -i https://traderouter.ai/openapi.yaml -g typescript-axios -o ./sdk-ts
# Python
openapi-generator-cli generate -i https://traderouter.ai/openapi.yaml -g python -o ./sdk-py
Divulgação de segurança
Envie um e-mail para security@traderouter.ai ou use os GitHub Security Advisories neste repositório. Confirmação em até 48 horas. Consulte SECURITY.md (ou a versão hospedada se preferir um link para uma URL estável).
Licença
MIT. Consulte LICENSE.
Changelog
Consulte CHANGELOG.md.