Non-custodial DEX aggregator for autonomous AI agents: best-price swaps on 8 chains, no API key.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
The address that will sign and execute
Venue id from the quote (e.g. 'lifi', 'jupiter')
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.
| Argument | Type | Description |
|---|---|---|
| buy* | object | |
| sell* | object | |
| taker* | string | The address that will sign and execute |
| amount* | string | |
| source* | string | Venue id from the quote (e.g. 'lifi', 'jupiter') |
| slippageBps | number |
{
"type": "object",
"required": [
"source",
"sell",
"buy",
"amount",
"taker"
],
"properties": {
"buy": {
"type": "object",
"required": [
"chain",
"address"
],
"properties": {
"chain": {
"enum": [
"base",
"ethereum",
"arbitrum",
"optimism",
"bsc",
"polygon",
"avalanche",
"solana"
],
"type": "string"
},
"symbol": {
"type": "string"
},
"address": {
"type": "string",
"description": "ERC-20 address (EVM) or SPL mint (Solana); 'native' for the gas asset"
}
}
},
"sell": {
"type": "object",
"required": [
"chain",
"address"
],
"properties": {
"chain": {
"enum": [
"base",
"ethereum",
"arbitrum",
"optimism",
"bsc",
"polygon",
"avalanche",
"solana"
],
"type": "string"
},
"symbol": {
"type": "string"
},
"address": {
"type": "string",
"description": "ERC-20 address (EVM) or SPL mint (Solana); 'native' for the gas asset"
}
}
},
"taker": {
"type": "string",
"description": "The address that will sign and execute"
},
"amount": {
"type": "string"
},
"source": {
"type": "string",
"description": "Venue id from the quote (e.g. 'lifi', 'jupiter')"
},
"slippageBps": {
"type": "number"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| to* | string | instant asset id to receive, e.g. 'usdt-tron' |
| from* | string | instant asset id to send, e.g. 'usdc-base' |
| refundAddress | string | optional: refund destination if the shift fails or expires |
| settleAddress* | string | your receiving address for the `to` asset |
{
"type": "object",
"required": [
"from",
"to",
"settleAddress"
],
"properties": {
"to": {
"type": "string",
"description": "instant asset id to receive, e.g. 'usdt-tron'"
},
"from": {
"type": "string",
"description": "instant asset id to send, e.g. 'usdc-base'"
},
"refundAddress": {
"type": "string",
"description": "optional: refund destination if the shift fails or expires"
},
"settleAddress": {
"type": "string",
"description": "your receiving address for the `to` asset"
}
}
}OHLCV candles for a token (top pool by liquidity). Timeframes: 1m, 5m, 15m, 1h, 4h, 1d.
| Argument | Type | Description |
|---|---|---|
| chain* | string | |
| address* | string | |
| timeframe | string | default 1h |
{
"type": "object",
"required": [
"chain",
"address"
],
"properties": {
"chain": {
"enum": [
"base",
"ethereum",
"arbitrum",
"optimism",
"bsc",
"polygon",
"avalanche",
"solana"
],
"type": "string"
},
"address": {
"type": "string"
},
"timeframe": {
"enum": [
"1m",
"5m",
"15m",
"1h",
"4h",
"1d"
],
"type": "string",
"description": "default 1h"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
}
}
}blueDEX's published transparency data: treasury (fee recipient) addresses, router allowlist, fee schedule, paused venues. Use this to audit quotes and transactions.
No arguments.
{
"type": "object",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| buy* | object | |
| sell* | object | |
| amount* | string | Integer amount in base units of the sell token, e.g. '100000000000000000' for 0.1 WETH |
| slippageBps | number | Max slippage in basis points, default 50 |
{
"type": "object",
"required": [
"sell",
"buy",
"amount"
],
"properties": {
"buy": {
"type": "object",
"required": [
"chain",
"address"
],
"properties": {
"chain": {
"enum": [
"base",
"ethereum",
"arbitrum",
"optimism",
"bsc",
"polygon",
"avalanche",
"solana"
],
"type": "string"
},
"symbol": {
"type": "string"
},
"address": {
"type": "string",
"description": "ERC-20 address (EVM) or SPL mint (Solana); 'native' for the gas asset"
}
}
},
"sell": {
"type": "object",
"required": [
"chain",
"address"
],
"properties": {
"chain": {
"enum": [
"base",
"ethereum",
"arbitrum",
"optimism",
"bsc",
"polygon",
"avalanche",
"solana"
],
"type": "string"
},
"symbol": {
"type": "string"
},
"address": {
"type": "string",
"description": "ERC-20 address (EVM) or SPL mint (Solana); 'native' for the gas asset"
}
}
},
"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"
}
}
}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.
No arguments.
{
"type": "object",
"properties": {}
}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.
No arguments.
{
"type": "object",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| to* | any | instant id string OR a DEX token {chain,address} |
| from* | any | instant id string (e.g. 'usdt-tron') OR a DEX token {chain,address} |
| amount* | string | integer base units of `from` |
{
"type": "object",
"required": [
"from",
"to",
"amount"
],
"properties": {
"to": {
"description": "instant id string OR a DEX token {chain,address}"
},
"from": {
"description": "instant id string (e.g. 'usdt-tron') OR a DEX token {chain,address}"
},
"amount": {
"type": "string",
"description": "integer base units of `from`"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| dust* | array | tokens to sweep: [{ address, amount (integer base units), symbol?, decimals? }] |
| chain | string | default base |
| wallet* | string | your 0x address (the taker) |
| slippageBps | number | default 100 |
| targetToken | string | consolidate into this token (default USDC) |
{
"type": "object",
"required": [
"wallet",
"dust"
],
"properties": {
"dust": {
"type": "array",
"items": {
"type": "object",
"required": [
"address",
"amount"
],
"properties": {
"amount": {
"type": "string"
},
"symbol": {
"type": "string"
},
"address": {
"type": "string"
},
"decimals": {
"type": "number"
}
}
},
"description": "tokens to sweep: [{ address, amount (integer base units), symbol?, decimals? }]"
},
"chain": {
"enum": [
"base",
"ethereum",
"arbitrum",
"optimism",
"bsc",
"polygon",
"avalanche"
],
"type": "string",
"description": "default base"
},
"wallet": {
"type": "string",
"description": "your 0x address (the taker)"
},
"slippageBps": {
"type": "number",
"description": "default 100"
},
"targetToken": {
"type": "string",
"description": "consolidate into this token (default USDC)"
}
}
}