
On-chain DEX aggregator: quotes and verified swap calldata computed on your own RPC. No API key.
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.
Decode the eth_call result YOUR node returned for a prepare_quote call: net output after the 0.28% fee, the minimum the Router enforces on-chain, price impact, the Phoenix Check verdict (ok / caution / danger / blocked — fails closed) and, with a recipient, verified unsigned calldata. Pure computation.
the 0x hex result of the eth_call on your node
the `request` object prepare_quote returned, verbatim
Decode the eth_call result YOUR node returned for a prepare_quote call: net output after the 0.28% fee, the minimum the Router enforces on-chain, price impact, the Phoenix Check verdict (ok / caution / danger / blocked — fails closed) and, with a recipient, verified unsigned calldata. Pure computation.
| Argument | Type | Description |
|---|---|---|
| result* | string | the 0x hex result of the eth_call on your node |
| request* | object | the `request` object prepare_quote returned, verbatim |
{
"type": "object",
"required": [
"request",
"result"
],
"properties": {
"result": {
"type": "string",
"description": "the 0x hex result of the eth_call on your node"
},
"request": {
"type": "object",
"description": "the `request` object prepare_quote returned, verbatim"
}
}
}The JSON ABI of one BlazePhoenix contract, generated from the Solidity sources, with the source revision it was built from. Use it to encode your own calls to the addresses get_deployments returns, or pass `errors` to decode a revert reason from a failed swap or quote. Returns { contract, revision, abi }; an unknown name returns ok:false with the accepted list. Pure lookup, no RPC.
| Argument | Type | Description |
|---|---|---|
| contract* | string | quoter (quotes and previews) | router (swap entry point) | solver | hub | core | errors (the protocol custom-error set, for decoding reverts) |
{
"type": "object",
"required": [
"contract"
],
"properties": {
"contract": {
"enum": [
"quoter",
"router",
"solver",
"hub",
"core",
"errors"
],
"type": "string",
"description": "quoter (quotes and previews) | router (swap entry point) | solver | hub | core | errors (the protocol custom-error set, for decoding reverts)"
}
}
}The versioned BlazePhoenix deployment registry: Core, Hub, Solver, Quoter and Router addresses per chain and protocol version (1.0.0 live; 2.0.0 the final generation), and which version each chain runs now.
No arguments.
{
"type": "object",
"properties": {}
}Prepare an on-chain BlazePhoenix quote to run on YOUR OWN RPC. Returns the exact eth_call (Quoter address + calldata, as a ready JSON-RPC request and a curl line) plus a `request` object. Run the call on your node, then pass `request` and the result hex to decode_quote. This server performs no RPC.
| Argument | Type | Description |
|---|---|---|
| in* | string | input token — 0x address, or ETH / WETH / USDC / BZPX |
| out* | string | output token — 0x address, or ETH / WETH / USDC / BZPX |
| chain* | string | base | eth | optimism | arbitrum | robinhood (or a chain id) |
| exact | boolean | true → previewPlanExact: every leg dry-run on its pool in this block; with recipient + userMinOut also calldata (exact mode applies a safety margin: userMinOut at or under exactOut less 50 bps). No tokens move from a holder, so a token that blocks or taxes its own transfer still quotes; simulate the swap from the holder to test that |
| version | string | protocol version: latest (default) | 1 | 2 | 2.0.0 |
| amountIn* | string | input amount in base units (wei-style integer string) |
| recipient |
| string |
| optional 0x address; with it, decode_quote returns signable calldata |
| userMinOut | string | minimum output, base units, from a price you trust; required for calldata, which enforces exactly this value |
| deadlineSec | integer | deadline horizon in seconds, 10–3600 (default 120) |
| slippageBps | integer | 0–5000 (default 50); how far under the quoted net output userMinOut may sit |
{
"type": "object",
"required": [
"chain",
"in",
"out",
"amountIn"
],
"properties": {
"in": {
"type": "string",
"description": "input token — 0x address, or ETH / WETH / USDC / BZPX"
},
"out": {
"type": "string",
"description": "output token — 0x address, or ETH / WETH / USDC / BZPX"
},
"chain": {
"type": "string",
"description": "base | eth | optimism | arbitrum | robinhood (or a chain id)"
},
"exact": {
"type": "boolean",
"description": "true → previewPlanExact: every leg dry-run on its pool in this block; with recipient + userMinOut also calldata (exact mode applies a safety margin: userMinOut at or under exactOut less 50 bps). No tokens move from a holder, so a token that blocks or taxes its own transfer still quotes; simulate the swap from the holder to test that"
},
"version": {
"type": "string",
"description": "protocol version: latest (default) | 1 | 2 | 2.0.0"
},
"amountIn": {
"type": "string",
"description": "input amount in base units (wei-style integer string)"
},
"recipient": {
"type": "string",
"description": "optional 0x address; with it, decode_quote returns signable calldata"
},
"userMinOut": {
"type": "string",
"description": "minimum output, base units, from a price you trust; required for calldata, which enforces exactly this value"
},
"deadlineSec": {
"type": "integer",
"description": "deadline horizon in seconds, 10–3600 (default 120)"
},
"slippageBps": {
"type": "integer",
"description": "0–5000 (default 50); how far under the quoted net output userMinOut may sit"
}
}
}