blueDEX
Non-custodial DEX aggregator for autonomous AI agents: best-price swaps on 8 chains, no API key.
Should I use this
Quality & Safety
Findings (1)
- LOWin get_chart
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"bluedex": {
"url": "https://dex.mk/mcp"
}
}
}Remote endpoints
https://dex.mk/mcpstreamable-httpWhat it can do
Tool inventory
Tools (10)
🟢get_swap_quote(sell, buy, amount, slippageBps)
Get the best swap route across DEX aggregator venues. Returns the winning venue quote plus every venue quote for transparency, and the fee recipient address (auditable against get_meta). Cross-chain quotes (e.g. USDT on Arbitrum -> USDC on Base) are supported on EVM.
Input Schema
{
"type": "object",
"properties": {
"sell": {
"type": "object",
"properties": {
"chain": {
"type": "string",
"enum": [
"base",
"ethereum",
"arbitrum",
"optimism",
"bsc",
"polygon",
"avalanche",
"solana"
]
},
"address": {
"type": "string",
"description": "ERC-20 address (EVM) or SPL mint (Solana); 'native' for the gas asset"
},
"symbol": {
"type": "string"
}
},
"required": [
"chain",
"address"
]
},
"buy": {
"type": "object",
"properties": {
"chain": {
"type": "string",
"enum": [
"base",
"ethereum",
"arbitrum",
"optimism",
"bsc",
"polygon",
"avalanche",
"solana"
]
},
"address": {
"type": "string",
"description": "ERC-20 address (EVM) or SPL mint (Solana); 'native' for the gas asset"
},
"symbol": {
"type": "string"
}
},
"required": [
"chain",
"address"
]
},
"amount": {
"type": "string",
"description": "Integer amount in base units of the sell token, e.g. '100000000000000000' for 0.1 WETH"
},
"slippageBps": {
"type": "number",
"description": "Max slippage in basis points, default 50"
}
},
"required": [
"sell",
"buy",
"amount"
]
}🟢build_swap_transaction(source, sell, buy, amount, slippageBps, ...)
Build an unsigned transaction for a quoted swap. Returns EVM fields (to/data/value) or a Solana base64 transaction, plus a verification block: routerAllowlisted, decodedSummary, minBuyAmount, approvalTarget. VERIFY BEFORE SIGNING — sign only if routerAllowlisted is true and the addresses match the published allowlist from get_meta.
Input Schema
{
"type": "object",
"properties": {
"source": {
"type": "string",
"description": "Venue id from the quote (e.g. 'lifi', 'jupiter')"
},
"sell": {
"type": "object",
"properties": {
"chain": {
"type": "string",
"enum": [
"base",
"ethereum",
"arbitrum",
"optimism",
"bsc",
"polygon",
"avalanche",
"solana"
]
},
"address": {
"type": "string",
"description": "ERC-20 address (EVM) or SPL mint (Solana); 'native' for the gas asset"
},
"symbol": {
"type": "string"
}
},
"required": [
"chain",
"address"
]
},
"buy": {
"type": "object",
"properties": {
"chain": {
"type": "string",
"enum": [
"base",
"ethereum",
"arbitrum",
"optimism",
"bsc",
"polygon",
"avalanche",
"solana"
]
},
"address": {
"type": "string",
"description": "ERC-20 address (EVM) or SPL mint (Solana); 'native' for the gas asset"
},
"symbol": {
"type": "string"
}
},
"required": [
"chain",
"address"
]
},
"amount": {
"type": "string"
},
"slippageBps": {
"type": "number"
},
"taker": {
"type": "string",
"description": "The address that will sign and execute"
}
},
"required": [
"source",
"sell",
"buy",
"amount",
"taker"
]
}🟢get_chart(chain, address, timeframe)
OHLCV candles for a token (top pool by liquidity). Timeframes: 1m, 5m, 15m, 1h, 4h, 1d.
Input Schema
{
"type": "object",
"properties": {
"chain": {
"type": "string",
"enum": [
"base",
"ethereum",
"arbitrum",
"optimism",
"bsc",
"polygon",
"avalanche",
"solana"
]
},
"address": {
"type": "string"
},
"timeframe": {
"type": "string",
"enum": [
"1m",
"5m",
"15m",
"1h",
"4h",
"1d"
],
"description": "default 1h"
}
},
"required": [
"chain",
"address"
]
}🟢get_meta
blueDEX's published transparency data: treasury (fee recipient) addresses, router allowlist, fee schedule, paused venues. Use this to audit quotes and transactions.
Input Schema
{
"type": "object",
"properties": {}
}🟢list_instant_assets
Assets reachable via the INSTANT lane (no on-chain DEX route) — Tron/USDT-TRC20, BTC, and stablecoin corridors. Returns ids (e.g. 'usdt-tron') to use with create_instant_shift.
Input Schema
{
"type": "object",
"properties": {}
}🟡create_instant_shift(from, to, settleAddress, refundAddress)
Open an INSTANT shift for assets with no on-chain DEX route — Tron (USDT-TRC20, TRX), BTC, cross-chain. Returns a deposit address: send the `from` asset there and the `to` asset settles to your address. Custodial AT THE VENUE during the swap (~minutes); blueDEX never holds funds. Use list_instant_assets for ids.
Input Schema
{
"type": "object",
"properties": {
"from": {
"type": "string",
"description": "instant asset id to send, e.g. 'usdc-base'"
},
"to": {
"type": "string",
"description": "instant asset id to receive, e.g. 'usdt-tron'"
},
"settleAddress": {
"type": "string",
"description": "your receiving address for the `to` asset"
},
"refundAddress": {
"type": "string",
"description": "optional: refund destination if the shift fails or expires"
}
},
"required": [
"from",
"to",
"settleAddress"
]
}🟢get_instant_status(id)
Status of an instant shift by id (from create_instant_shift): waiting | pending | processing | settling | settled | refund* | expired, plus deposit/settle tx hashes once available.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
]
}🟢sweep_dust(wallet, chain, dust, targetToken, slippageBps)
Consolidate many small leftover token balances (dust) into one token (default USDC) on an EVM chain. Pass the dust list (token address + amount — you know your own balances); returns a plan of unsigned swaps, gas-positive legs only, with the whole tiny sweep fee riding ONE leg. Non-custodial: approve each leg's approvalTarget and sign. Base/Arbitrum/Optimism/Ethereum/BNB Chain/Polygon/Avalanche.
Input Schema
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "your 0x address (the taker)"
},
"chain": {
"type": "string",
"enum": [
"base",
"ethereum",
"arbitrum",
"optimism",
"bsc",
"polygon",
"avalanche"
],
"description": "default base"
},
"dust": {
"type": "array",
"description": "tokens to sweep: [{ address, amount (integer base units), symbol?, decimals? }]",
"items": {
"type": "object",
"properties": {
"address": {
"type": "string"
},
"amount": {
"type": "string"
},
"symbol": {
"type": "string"
},
"decimals": {
"type": "number"
}
},
"required": [
"address",
"amount"
]
}
},
"targetToken": {
"type": "string",
"description": "consolidate into this token (default USDC)"
},
"slippageBps": {
"type": "number",
"description": "default 100"
}
},
"required": [
"wallet",
"dust"
]
}🟢list_onramps
Reputable INDEPENDENT fiat->crypto on-ramps blueDEX signposts so a human principal can acquire a first coin with minimal KYC, then swap/bridge on blueDEX. blueDEX operates none of these and takes no custody; every ramp lands coins in the user's own wallet. Durable no-KYC = vouchers + non-custodial P2P; tiered/full-KYC brokers are a labelled fallback. Most no-KYC routes are human-mediated (cash/contacts/Tor) — only Transak + MoonPay are agent-callable (but require KYC). Most are BTC-only — bridge onward with the instant lane or a quote. Surface this when a human asks how to get their first crypto.
Input Schema
{
"type": "object",
"properties": {}
}🟢plan_route(from, to, amount)
Plan the cheapest MULTI-HOP route between ANY two assets — composes DEX swaps (non-custodial) + instant-lane bridges (custodial-at-venue) into one path, with every fee and per-leg custody disclosed. e.g. USDT on Tron -> XAUt on Ethereum becomes a USDT bridge + a DEX swap. `from`/`to` are an instant id (e.g. 'usdt-tron') or a {chain,address} DEX token; `amount` is integer base units of `from`. Returns ordered legs (kind, venue, custody, amounts, fee) + total output. Execute legs in order: DEX legs via build_swap_transaction, bridge legs via create_instant_shift.
Input Schema
{
"type": "object",
"properties": {
"from": {
"description": "instant id string (e.g. 'usdt-tron') OR a DEX token {chain,address}"
},
"to": {
"description": "instant id string OR a DEX token {chain,address}"
},
"amount": {
"type": "string",
"description": "integer base units of `from`"
}
},
"required": [
"from",
"to",
"amount"
]
}Community
Evidence