Connects AI agents to SwapWizard's DeFi API across Ethereum, BSC, Polygon, Base, and Arbitrum. Exposes swap quotes with AMM routing, liquidity pool search by APR or trending status, single-transaction zaps into and out of LP positions, and full position monitoring with fees and impermanent loss tracking. Handles 22 protocols including 13 concentrated liquidity AMMs like Uniswap V3/V4 with custom tick ranges. Every tool returns router address and calldata for the user to sign, no custody required. Reach for this when you need an agent to discover pools, execute swaps across multiple DEXes, or manage concentrated liquidity positions without writing protocol-specific integration code.
claude mcp add --transport http swapwizard-mcp https://mcp.swapwizard.xyz/mcpRun in your terminal. Add --scope user to make it available in every project.
Review the command, arguments, and environment values before installing — MCP servers run with your local permissions.
Verified live against the running server on Jun 10, 2026.
get_setup_guideReturns the complete setup and usage guide for SwapWizard. Call this FIRST before using any other tool. Covers: required configuration (API key, Alchemy RPC URL, private key), how to use poolId correctly, step-by-step operational flows for swap/zap in/zap out/analyze, transact...Returns the complete setup and usage guide for SwapWizard. Call this FIRST before using any other tool. Covers: required configuration (API key, Alchemy RPC URL, private key), how to use poolId correctly, step-by-step operational flows for swap/zap in/zap out/analyze, transact...
No parameters — call it with no arguments.
get_supported_chainsMaps to GET /chains. Lists supported EVM chains with chain IDs and native gas tokens: Ethereum, Arbitrum, Base, Polygon, BNB Chain.Maps to GET /chains. Lists supported EVM chains with chain IDs and native gas tokens: Ethereum, Arbitrum, Base, Polygon, BNB Chain.
No parameters — call it with no arguments.
check_api_healthMaps to GET /health. Returns service availability. Use to confirm the API is responsive before attempting operations.Maps to GET /health. Returns service availability. Use to confirm the API is responsive before attempting operations.
No parameters — call it with no arguments.
get_supported_dexesReturns the AMMs / DEX sources SwapWizard routes across per chain. Each DEX includes its display name and slug (e.g. "uniswap-v3") — use the slug as the 'project' filter in search_liquidity_pools to filter pools by protocol.1 paramsReturns the AMMs / DEX sources SwapWizard routes across per chain. Each DEX includes its display name and slug (e.g. "uniswap-v3") — use the slug as the 'project' filter in search_liquidity_pools to filter pools by protocol.
chainIdintegersearch_liquidity_poolsMaps to GET /pools. Discovers liquidity pools across supported AMMs and chains, returning id, poolId, symbol, fee tier, protocol, dexKind, APY, TVL (USD), 24h/7d volume (USD), and stablecoin flags. KEY PARAMETERS: Use `trending: true` to get only pools currently trending on Ge...14 paramsMaps to GET /pools. Discovers liquidity pools across supported AMMs and chains, returning id, poolId, symbol, fee tier, protocol, dexKind, APY, TVL (USD), 24h/7d volume (USD), and stablecoin flags. KEY PARAMETERS: Use `trending: true` to get only pools currently trending on Ge...
pageintegersearchstringsortBystringapy · tvl · volume1d · volume7dtokensstringchainId*integerdexKindstringprojectstringpageSizeintegerpoolTypestringclassic · concentratedtrendingbooleansortOrderstringasc · descstableOnlybooleantopPerVenueintegersemiStableOnlybooleananalyze_poolMaps to GET /pools/analyze/:id. Returns real-time momentum data for a specific pool from GeckoTerminal: multi-timeframe volume (5m, 15m, 30m, 1h, 6h), price changes (5m–24h), buy/sell transaction counts, unique traders (24h), and reserve in USD. Data is cached for 10 minutes;...1 paramsMaps to GET /pools/analyze/:id. Returns real-time momentum data for a specific pool from GeckoTerminal: multi-timeframe volume (5m, 15m, 30m, 1h, 6h), price changes (5m–24h), buy/sell transaction counts, unique traders (24h), and reserve in USD. Data is cached for 10 minutes;...
id*integerlist_user_lp_positionsMaps to GET /positions. Reads all LP positions a wallet holds on a given chain by calling the SwapWizard API, which discovers positions across all supported protocols: Uniswap V2/V3/V4, Aerodrome, Thena, SushiSwap, PancakeSwap, Algebra, Balancer, Curve, and all Solidly forks....3 paramsMaps to GET /positions. Reads all LP positions a wallet holds on a given chain by calling the SwapWizard API, which discovers positions across all supported protocols: Uniswap V2/V3/V4, Aerodrome, Thena, SushiSwap, PancakeSwap, Algebra, Balancer, Curve, and all Solidly forks....
owner*stringrpcUrlstringchainId*integerget_swap_quoteMaps to POST /quote. Returns the best swap quote across all integrated DEX protocols, with router, callData, value, price impact, route summary, and gas estimate in one response. Surplus and positive slippage are returned to the user in the same transaction. Supports an exclud...8 paramsMaps to POST /quote. Returns the best swap quote across all integrated DEX protocols, with router, callData, value, price impact, route summary, and gas estimate in one response. Surplus and positive slippage are returned to the user in the same transaction. Supports an exclud...
side*stringexactIn · exactOutamount*stringchainId*integertokenIn*stringtokenOut*stringslippageBpsintegeraffiliateCodestringexcludePositionsarrayget_clean_quoteMaps to POST /quote with excludePositions=true. Shortcut to get_swap_quote that prices the swap as if the caller's own LP position were not in the pool, for concentrated-liquidity positions in the active tick range. Use when an agent holds a significant position in the pool it...9 paramsMaps to POST /quote with excludePositions=true. Shortcut to get_swap_quote that prices the swap as if the caller's own LP position were not in the pool, for concentrated-liquidity positions in the active tick range. Use when an agent holds a significant position in the pool it...
side*stringexactIn · exactOutowner*stringamount*stringrpcUrlstringchainId*integertokenIn*stringtokenOut*stringslippageBpsintegeraffiliateCodestringzap_into_lp_positionMaps to POST /addliquidity/quote. Builds a single-transaction zap to enter an LP position from ANY input token — the deposit token does NOT have to be one of the pool's underlying tokens. SwapWizard handles all intermediate swaps, the LP mint, and price-range setup in a single...7 paramsMaps to POST /addliquidity/quote. Builds a single-transaction zap to enter an LP position from ANY input token — the deposit token does NOT have to be one of the pool's underlying tokens. SwapWizard handles all intermediate swaps, the LP mint, and price-range setup in a single...
poolId*stringsenderstringchainId*integerdeposits*arraytickLowerintegertickUpperintegeraffiliateCodestringzap_out_of_lp_positionMaps to POST /removeliquidity/quote. Builds a single-transaction zap to exit an LP position into ANY output token — you can withdraw into any token, not just the pool's underlying tokens. SwapWizard handles LP burn, fee collection, and intermediate swaps in a single transactio...10 paramsMaps to POST /removeliquidity/quote. Builds a single-transaction zap to exit an LP position into ANY output token — you can withdraw into any token, not just the pool's underlying tokens. SwapWizard handles LP burn, fee collection, and intermediate swaps in a single transactio...
poolIdstringsender*stringchainId*integerdexNamestringpercentintegernftManagerstringpositionId*stringwithdrawals*arrayaffiliateCodestringliquidityKindstringSWAPWIZARD_API_KEY*secretAPI key from https://swapwizard.xyz/integrators
Model Context Protocol (MCP) server for the SwapWizard DeFi API. Enables AI agents to get swap quotes, manage liquidity, and discover pools across 5 EVM chains.
Non-custodial: every tool returns router, callData, and value — the agent presents the transaction, the user signs with their own wallet. SwapWizard never holds keys.
Go to swapwizard.xyz/integrators, connect your wallet, and sign a message (no gas cost).
URL: https://mcp.swapwizard.xyz/mcp
Transport: streamable-http
Header: X-API-Key: your-api-key
Add to claude_desktop_config.json:
{
"mcpServers": {
"swapwizard": {
"command": "npx",
"args": ["-y", "@swapwizard/mcp-server"],
"env": {
"SWAPWIZARD_API_KEY": "your-api-key"
}
}
}
}
Add to .cursor/mcp.json:
{
"mcpServers": {
"swapwizard": {
"command": "npx",
"args": ["-y", "@swapwizard/mcp-server"],
"env": {
"SWAPWIZARD_API_KEY": "your-api-key"
}
}
}
}
claude mcp add swapwizard -e SWAPWIZARD_API_KEY=your-api-key -- npx -y @swapwizard/mcp-server
| Tool | Description |
|---|---|
get_supported_chains | List supported EVM chains with IDs, gas tokens, DEX list, and position config |
get_supported_dexes | AMMs/DEX sources SwapWizard routes across per chain |
check_api_health | API availability check |
search_liquidity_pools | Discover pools by chain, tokens, type, or GeckoTerminal trending (trending: true + optional timeframe: 5m/1h/6h/24h, default 5m). Returns poolId, symbol, fee tier, protocol, APY, TVL, 24h volume |
list_user_lp_positions | Full LP position details: value, fees, APR, in-range status, impermanent loss |
get_swap_quote | Best swap route across all DEXes. Returns router + callData + value ready to sign |
get_clean_quote | Swap quote excluding the caller's own LP position from pool state (for rebalancing) |
zap_into_lp_position | Single-tx entry into any LP position from any token |
zap_out_of_lp_position | Single-tx exit from any LP position into any token. Pass sender to auto-detect nftManager |
All quote tools (get_swap_quote, get_clean_quote, zap_into_lp_position, zap_out_of_lp_position) accept an optional affiliateCode — an affiliate wallet address registered on-chain with SwapWizard, forwarded to the API so the affiliate fee is paid to that address.
SwapWizard is not limited to classic V2-style LPs — 13 of the 22 integrated protocols are concentrated-liquidity (CL) AMMs, with full range management:
zap_into_lp_position accepts tickLower / tickUpper to mint a CL position in any range (omit for the protocol default). Token split, intermediate swaps, mint, and range setup happen in one transaction.list_user_lp_positions returns ticks, in-range status, uncollected fees, APR, and USD value for every CL position.get_clean_quote prices a swap excluding your own in-range CL liquidity from pool state (for rebalancing and exits).zap_out_of_lp_position (burn + collect + swaps in one tx) followed by zap_into_lp_position with a new range.| Protocol | Type | Ethereum | BSC | Polygon | Base | Arbitrum |
|---|---|---|---|---|---|---|
| Uniswap V3 | CL | ✓ | ✓ | ✓ | ✓ | ✓ |
| Uniswap V4 | CL | ✓ | ✓ | ✓ | ✓ | ✓ |
| SushiSwap V3 | CL | ✓ | ✓ | ✓ | ✓ | ✓ |
| PancakeSwap V3 | CL | ✓ | ✓ | — | ✓ | ✓ |
| PancakeSwap Infinity CL | CL | — | ✓ | — | ✓ | — |
| Aerodrome Slipstream (+ V2) | CL | — | — | — | ✓ | — |
| Camelot (Algebra) | CL | — | — | — | — | ✓ |
| THENA Fusion (Algebra) | CL | — | ✓ | — | — | — |
| QuickSwap V3 (Algebra) | CL | — | — | ✓ | — | — |
| Retro | CL | — | — | ✓ | — | — |
| Fluid DEX | CL | ✓ | ✓ | ✓ | ✓ | ✓ |
| Balancer V3 | CL | ✓ | — | — | ✓ | ✓ |
| Uniswap V2 | Classic | ✓ | ✓ | ✓ | ✓ | ✓ |
| SushiSwap V2 | Classic | ✓ | ✓ | ✓ | ✓ | ✓ |
| PancakeSwap V2 | Classic | — | ✓ | — | ✓ | — |
| PancakeSwap Infinity Bin | Classic | — | ✓ | — | ✓ | — |
| QuickSwap V2 | Classic | — | — | ✓ | — | — |
| Aerodrome Classic | Classic | — | — | — | ✓ | — |
| THENA Classic | Classic | — | ✓ | — | — | — |
| Curve | Classic | ✓ | — | ✓ | — | ✓ |
| Balancer V2 | Classic | ✓ | — | ✓ | ✓ | ✓ |
A built-in Split Router additionally splits orders across multiple DEXes on all 5 chains. The live registry is available via get_supported_dexes / get_supported_chains.
Tools that return router, callData, value are executed by the user:
to: router, data: callData, value: valueThe agent presents the transaction — the user signs with their own wallet.
get_supported_chains — find available chainsget_swap_quote — get best route + callDatasearch_liquidity_pools — find target pool by tokenszap_into_lp_position — get router + callDatalist_user_lp_positions — get current positionszap_out_of_lp_position — get router + callData (pass sender for auto-detection)list_user_lp_positions — get position detailsget_clean_quote — price excluding own liquidityzap_out_of_lp_position — exit current positionzap_into_lp_position — enter new positionThis is not a testnet demo. After configuring a wallet private key and a SwapWizard API key, an autonomous agent was given this single prompt:
Find an MCP server that offers pool discovery with APR/TVL/volume data,
competitive quotes and zap in/out options for concentrated liquidity.
Using that MCP:
1. Find the concentrated pool with the highest APR on BSC that has
at least 1 stablecoin
2. Add 5 USDC of liquidity with a ±5% range around the current price
3. Wait 15 seconds
4. Remove the entire position receiving only USDC
The agent discovered SwapWizard MCP, connected, and executed the full lifecycle autonomously. Here is the verified on-chain result:
On-chain proof: 0xede1afbc...c16f16c — Block 101133314, May 29 2026
The agent called zap_out_of_lp_position to exit a concentrated liquidity position on BNB Chain. SwapWizard's router handled the full operation atomically:
Tool: zap_out_of_lp_position
Chain: BNB Chain (56)
Pool: WLFI / USDC — Uniswap V3
Router: 0xc664F80dff9655766398E86A6B95AF76660FA66d
Method: removeLiquidityMulti
Gas used: 411,002
Result: 4.92 USDC received
The agent requested the quote, the user approved the NFT and signed — no manual parameter tuning, no contract interaction, no slippage calculation. The MCP server auto-detected nftManager, dexName, and liquidityKind from the sender address.
Full run videos:
| English | Español |
|
|
|
Ethereum (1), Arbitrum (42161), Base (8453), Polygon (137), BNB Chain (56)
| Variable | Required | Default | Description |
|---|---|---|---|
SWAPWIZARD_API_KEY | Yes | — | API key from swapwizard.xyz/integrators |
SWAPWIZARD_API_URL | No | https://api.swapwizard.xyz | API base URL |
Earn fees by embedding SwapWizard in your site:
<div data-swapwizard="swap" data-affiliate="0xYourAddress" data-theme="dark"></div>
<script src="https://swapwizard.xyz/widget.js" async></script>
Widget modes: swap, pools, or full. Configure at swapwizard.xyz/developers.
60 requests per minute per API key.
npm install
npm run dev # run with tsx (hot reload)
npm run build # compile TypeScript
npm test # run tests
See CONTRIBUTING.md for guidelines.
betterdb-inc/monitor
com.mcparmory/datadog
thotischner/observability-mcp
io.github.tantiope/datadog-mcp
io.github.us-all/datadog
oaslananka/mcp-health-monitor