Server data from the Official MCP Registry
Best-price token swaps on EVM networks through a non-custodial contract: quotes and trade status.
About
Best-price token swaps on EVM networks through a non-custodial contract: quotes and trade status.
Remote endpoints: streamable-http: https://api.soheil.fi/v1/mcp
Security Report
Valid MCP server (1 strong, 1 medium validity signals). No known CVEs in dependencies. Imported from the Official MCP Registry.
4 tools verified · Open access · No issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Permissions Found in Source Code
Found by scanning the linked source code. This listing connects to a hosted endpoint, so none of this runs on your machine: it describes what the server software does where it is hosted.
How to Connect
Remote Plugin
No local installation needed. Your AI client connects to the remote endpoint directly.
Add this to your MCP configuration to connect:
{
"mcpServers": {
"fi-soheil-router": {
"url": "https://api.soheil.fi/v1/mcp"
}
}
}Documentation
View on GitHubFrom the project's GitHub README.
Soheil Router
One API call for the best token swap price, and one transaction that makes it. Soheil Router compares prices across DEXes and aggregators on each network and executes the trade through its own contract: non-upgradeable, source verified on the explorers, and it holds no funds between trades.
- Docs: https://soheil.fi/developers/docs/
- Free API key: https://soheil.fi/developers/dashboard/
- OpenAPI 3.1: https://api.soheil.fi/v1/openapi.json
- For AI assistants: https://soheil.fi/developers/llms-full.txt · MCP server at
https://api.soheil.fi/v1/mcp
Fees
0.1% (10 bps) to the router on each swap. You can add your own fee (up to 0.9%), paid to your wallet inside the same transaction: nothing to claim.
Install
npm install github:soheil-fi/soheil-router
Quick start
import { COIN, SoheilRouter } from "@soheil-fi/router";
const router = new SoheilRouter({ apiKey: process.env.SOHEIL_ROUTER_KEY }); // keep the key on your server
const quote = await router.getQuote({
fromChainId: 8453, // Base
fromToken: COIN, // ETH
toToken: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC
fromAmount: 10n ** 15n, // 0.001 ETH, in wei
fromAddress: "0xUserWallet",
integratorBps: 30, // your fee: 0.3%
});
// quote.approvalAddress → approve exactly quote.fromAmount first (null when selling the coin)
// quote.transactionRequest → have the user's wallet send it unchanged
const status = await router.waitForTrade(8453, txHash); // DONE, REFUNDED, FAILED or NOT_OURS
A whole swap with viem is in examples/swap-viem.ts.
| Method | Key | Returns |
|---|---|---|
getNetworks() | no | Live networks, our contract and the contracts a trade may call |
getInfo() | no | Fee, limits, docs |
getQuote(request) | yes | Price, minimum received, fees, approval address, transaction |
getStatus(chainId, txHash) | yes | PENDING, DONE, REFUNDED, FAILED, NOT_OURS or NOT_FOUND |
waitForTrade(chainId, txHash) | yes | getStatus until the trade is final |
Errors are thrown as SoheilRouterError with code (NO_ROUTE, RATE_LIMITED, UNAUTHORIZED…), the HTTP status
and a message safe to show your users.
Bridge to another network
Set toChainId to another of the router's networks. The answer has type: "bridge", and the user still signs one
transaction on the source network; the recipient is paid on the destination within seconds.
const quote = await router.getQuote({
fromChainId: 8453, // from Base
toChainId: 42161, // to Arbitrum
fromToken: "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913", // USDC on Base
toToken: "0xaf88d065e77c8cC2239327C5EDb3A432268e5831", // USDC on Arbitrum
fromAmount: 100_000_000n, // 100 USDC
fromAddress: "0xUserWallet",
});
// quote.toAmount is what arrives; a transfer nobody fills is refunded to fromAddress on Base (status REFUND_PENDING until then)
const status = await router.waitForTrade(8453, txHash); // DONE (status.receiving = the payout) or REFUNDED
fromToken and toToken can be any token: what the bridge does not carry is swapped first on the source network, or
bought on arrival on the destination (then toAmountMin is that swap's least; if the price moves past it, the recipient
gets the bridged token, like USDC, instead). Still one transaction, fees taken once. Docs: https://soheil.fi/developers/docs/bridging/
Use it from an AI assistant (MCP)
The API is also an MCP server (Streamable HTTP) with the tools get_networks, get_api_info, get_quote and
get_trade_status.
claude mcp add --transport http soheil-router https://api.soheil.fi/v1/mcp \
--header "Authorization: Bearer $SOHEIL_ROUTER_KEY"
{ "mcpServers": { "soheil-router": { "url": "https://api.soheil.fi/v1/mcp", "headers": { "Authorization": "Bearer sk_your_key" } } } }
Good to know
- Amounts are integer strings in the token's smallest unit; use
bigint, never JavaScript numbers. - Approve exactly
fromAmount, never an unlimited amount. - The user always signs in their own wallet: the API never holds keys or funds.
Built by Soheil.fi. Questions: support@soheil.fi
License
MIT
Reviews
No reviews yet
Be the first to review this server!
More Developer Tools MCP Servers
Rea
Freeby Morluto · Developer Tools
Reverse engineer anything from your terminal or agent with one CLI and MCP server.
Paperclip
Freeby Paperclipai · Developer Tools
Trending hip-hop artist momentum scores across four cultural dimensions.
Fetch
Freeby Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
Git
Freeby Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
Toleno
Freeby Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
MCP Marketplace
Freeby mcp-marketplace · Developer Tools
Search and install MCP servers from inside your AI client.
