Swap API
OfficialEnables token swaps on Ethereum mainnet by generating executable transaction calldata for exchanges between native ETH and ERC-20 tokens, including price quotes, slippage protection, and ready-to-sign transactions.
Enables token swaps on the Polygon network by generating executable transaction calldata for exchanges between native MATIC and ERC-20 tokens, with support for custom slippage limits and minimum output amounts.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
Swap API
Executable token swap calldata in one GET request. No API keys. No accounts. No SDK bloat.
https://api.swapapi.devQuick Start
Swap 1 ETH for USDC on Ethereum:
curl "https://api.swapapi.dev/v1/swap/1?\
tokenIn=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE&\
tokenOut=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48&\
amount=1000000000000000000&\
sender=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"That's it. The response contains everything you need to sign and broadcast.
Related MCP server: bridge-routes-x402
Example Response
{
"success": true,
"data": {
"status": "Successful",
"tokenFrom": {
"address": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE",
"symbol": "ETH",
"name": "Ether",
"decimals": 18
},
"tokenTo": {
"address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
"symbol": "USDC",
"name": "USD Coin",
"decimals": 6
},
"swapPrice": 2435.12,
"priceImpact": 0.0003,
"amountIn": "1000000000000000000",
"expectedAmountOut": "2435120000",
"minAmountOut": "2422947280",
"tx": {
"from": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"to": "0x011E52E4E40CF9498c79e329EBc29ed08c8B5abB",
"data": "0x2646478b...",
"value": "1000000000000000000",
"gasPrice": 30000000000,
"gas": "250000"
}
},
"timestamp": "2026-03-12T00:00:00.000Z"
}Field | Description |
| Boolean indicating request success |
|
|
| Token metadata (address, symbol, decimals) |
| Exchange rate |
| Slippage impact (0.001 = 0.1%) |
| Estimated output in token's smallest unit |
| Guaranteed minimum (respects your |
| Transaction object ready to sign and send |
API Reference
Endpoint: GET /v1/swap/{chainId}
Parameters:
Param | Required | Description |
| path | Chain ID (1=Ethereum, 8453=Base, 42161=Arbitrum, etc.) |
| query | Input token address. Use |
| query | Output token address |
| query | Input amount in smallest unit (e.g., wei for ETH) |
| query | Your wallet address (used to build the tx) |
| query | Optional. 0-1 (default: 0.005 = 0.5%) |
Response codes:
200— Quote ready400— Invalid params or unsupported chain429— Rate limit exceeded (60/min per IP)502— Upstream service error
More Curl Examples
Base (ETH → USDC)
curl "https://api.swapapi.dev/v1/swap/8453?\
tokenIn=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE&\
tokenOut=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&\
amount=500000000000000000&\
sender=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"Arbitrum (USDC → ETH with 1% slippage)
curl "https://api.swapapi.dev/v1/swap/42161?\
tokenIn=0xaf88d065e77c8cC2239327C5EDb3A432268e5831&\
tokenOut=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE&\
amount=1000000000&\
sender=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045&\
maxSlippage=0.01"Ethereum Mainnet (DAI → USDC)
curl "https://api.swapapi.dev/v1/swap/1?\
tokenIn=0x6B175474E89094C44Da98b954EedeAC495271d0F&\
tokenOut=0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48&\
amount=1000000000000000000000&\
sender=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"Polygon (MATIC → USDC)
curl "https://api.swapapi.dev/v1/swap/137?\
tokenIn=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE&\
tokenOut=0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174&\
amount=10000000000000000000&\
sender=0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"Executing Swaps
The API gives you an unsigned transaction. Sign it and broadcast:
With Foundry cast
# 1. Set swap parameters
CHAIN_ID=8453
TOKEN_IN=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
TOKEN_OUT=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
AMOUNT=1000000000000000000
SENDER=0x... # Your address
PRIVATE_KEY=0x... # Your private key
RPC_URL=https://mainnet.base.org
# 2. Get swap quote
RESPONSE=$(curl -s "https://api.swapapi.dev/v1/swap/$CHAIN_ID?\
tokenIn=$TOKEN_IN&\
tokenOut=$TOKEN_OUT&\
amount=$AMOUNT&\
sender=$SENDER")
# 3. Parse the tx fields
TX_TO=$(echo "$RESPONSE" | jq -r '.data.tx.to')
TX_DATA=$(echo "$RESPONSE" | jq -r '.data.tx.data')
TX_VALUE=$(echo "$RESPONSE" | jq -r '.data.tx.value')
TX_GAS=$(echo "$RESPONSE" | jq -r '.data.tx.gas')
# 4. Sign and send
cast send \
--rpc-url "$RPC_URL" \
--private-key "$PRIVATE_KEY" \
"$TX_TO" \
--value "$TX_VALUE" \
--gas-limit "$TX_GAS" \
--data "$TX_DATA"With viem
import { createWalletClient, http } from 'viem'
import { privateKeyToAccount } from 'viem/accounts'
import { base } from 'viem/chains'
const account = privateKeyToAccount('0x...')
const client = createWalletClient({
account,
chain: base,
transport: http()
})
const response = await fetch(
'https://api.swapapi.dev/v1/swap/8453?' +
'tokenIn=0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE&' +
'tokenOut=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&' +
'amount=1000000000000000000&' +
'sender=' + account.address
)
const { data } = await response.json()
const hash = await client.sendTransaction({
to: data.tx.to,
data: data.tx.data,
value: BigInt(data.tx.value),
gas: BigInt(data.tx.gas)
})
await client.waitForTransactionReceipt({ hash })MCP Server
For AI agents, Claude Desktop, Cursor, Cline, and other MCP clients:
npx @swapapi/mcpOr add to Claude Desktop config:
{
"mcpServers": {
"swapapi": {
"command": "npx",
"args": ["@swapapi/mcp"]
}
}
}See mcp/README.md for full MCP documentation.
OpenAPI Spec
See openapi.json for the full OpenAPI specification.
Limits
Rate limit: 60 requests/minute per IP
No authentication required
Free to use
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
On-chain DEX aggregator: quotes and verified swap calldata computed on your own RPC. No API key.
Non-custodial DEX aggregator for autonomous AI agents: best-price swaps on 8 chains, no API key.
Token swaps at the best net price on 9 EVM chains and Solana. No API key, non-custodial.
Swap quotes + unsigned txs on 8 EVM chains, plus Solana data: boards, candles, wallet PnL. No key.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceDeFi execution layer for AI agents - swap, zap in/out of LP, route across AMMs on 5 EVM chains.41 npm7MIT
- AlicenseNot gradedqualityCmaintenanceFinds best cross-chain bridge routes across 60+ chains and 18+ bridges, comparing fees and time, with pay-per-call via x402 USDC micropayments.MIT
- AlicenseAqualityAmaintenanceEnables cross-chain swap execution across 12 venues and 17 chains, including native Bitcoin as source or destination, with tools for quoting, execution, status, and health checks. No signup, API key, or protocol fee required.5MIT
- AlicenseAqualityBmaintenanceEnables AI agents to obtain on-chain DEX aggregator quotes computed by the on-chain Quoter contract through their own RPC node, returning verified unsigned swap calldata, simulations, token info, deployment registry checks, and live staking solvency. All tools are read-only and keyless, so the agent never signs or holds a private key.7201 npm1MIT