Best-price token swaps on EVM networks through a non-custodial contract: quotes and trade status.
Maintained bysoheil.fi(verified)Also a maintainer?
Call this server's tools from your browser. Nothing to install.
Bearer <your API key>, free at https://soheil.fi/developers/dashboard/ (needed for quotes and trade status; listing networks works without it)
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.
What the Soheil Router API is: version, router fee, the most an integrator may add, how keys are given, and where the docs and OpenAPI spec are. No API key needed.
This tool takes no arguments.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http router https://api.soheil.fi/v1/mcp
Headers
Authorization (optional, not in the config above): Bearer <your API key>, free at https://soheil.fi/developers/dashboard/ (needed for quotes and trade status; listing networks works without it)What the Soheil Router API is: version, router fee, the most an integrator may add, how keys are given, and where the docs and OpenAPI spec are. No API key needed.
No arguments.
{
"type": "object",
"properties": {}
}The EVM networks where Soheil Router is live: chain id, name, our contract, its fee and fee wallet, and the contracts a trade may call. No API key needed.
No arguments.
{
"type": "object",
"properties": {}
}The best price for a token swap on one network and the transaction that makes it, through our contract. Returns toAmount, toAmountMin (enforced on-chain), the fees, approvalAddress (approve it for exactly fromAmount first unless fromToken is the coin) and transactionRequest for the user to sign. Needs an API key.
| Argument | Type | Description |
|---|---|---|
| toToken* | string | Token bought |
| fromToken* | string | Token sold; the coin is 0x0000000000000000000000000000000000000000 |
| toAddress | string | Where the tokens go; defaults to fromAddress |
| toChainId | integer | Same as fromChainId for now (same-network swaps); defaults to it |
| fromAmount* | string | Amount sold, an integer string in the token's smallest unit |
| fromAddress* | string | The wallet that pays and signs |
| fromChainId* | integer | Network chain id, e.g. 8453 for Base (see get_networks) |
| slippageBps | integer | Max price move in basis points, 1 to 5000 (default 50) |
| integratorBps | integer | Your own fee in basis points, up to your key's limit |
{
"type": "object",
"required": [
"fromChainId",
"fromToken",
"toToken",
"fromAmount",
"fromAddress"
],
"properties": {
"toToken": {
"type": "string",
"description": "Token bought"
},
"fromToken": {
"type": "string",
"description": "Token sold; the coin is 0x0000000000000000000000000000000000000000"
},
"toAddress": {
"type": "string",
"description": "Where the tokens go; defaults to fromAddress"
},
"toChainId": {
"type": "integer",
"description": "Same as fromChainId for now (same-network swaps); defaults to it"
},
"fromAmount": {
"type": "string",
"description": "Amount sold, an integer string in the token's smallest unit"
},
"fromAddress": {
"type": "string",
"description": "The wallet that pays and signs"
},
"fromChainId": {
"type": "integer",
"description": "Network chain id, e.g. 8453 for Base (see get_networks)"
},
"slippageBps": {
"type": "integer",
"description": "Max price move in basis points, 1 to 5000 (default 50)"
},
"integratorBps": {
"type": "integer",
"description": "Your own fee in basis points, up to your key's limit"
}
}
}Where a sent trade stands, from its transaction on chain: PENDING, DONE (with what was paid and received), FAILED, NOT_FOUND or NOT_OURS. Needs an API key.
| Argument | Type | Description |
|---|---|---|
| txHash* | string | The transaction hash, 0x + 64 hex |
| chainId* | integer | The network the trade was sent on |
{
"type": "object",
"required": [
"chainId",
"txHash"
],
"properties": {
"txHash": {
"type": "string",
"description": "The transaction hash, 0x + 64 hex"
},
"chainId": {
"type": "integer",
"description": "The network the trade was sent on"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 7, 2026.