Soheil Router

fi.soheil由 soheil.fi 发布官方发布者v1.0.1更新于 Nov 7, 2026

Best-price token swaps on EVM networks through a non-custodial contract: quotes and trade status.

已验证Streamable HTTP可网页运行金融开发者工具

概览

AI 生成的概览

Soheil Router MCP 服务器让助手在 EVM 网络上获取最优代币兑换与跨链桥报价、待签名交易以及交易状态。

可以做什么
  • 列出可用的 EVM 网络、路由合约、费用及交易可调用的合约
  • 读取 API 信息:版本、路由费用、集成方费用上限、文档与 OpenAPI 位置
  • 获取兑换或跨链桥报价,含最小到账量、费用、授权地址和待签名交易
  • 查询已发送交易的状态:待处理、完成、已退款、失败、未找到或非本服务交易
适用场景
当助手需要在受支持的 EVM 网络上为代币兑换或跨链桥定价、为用户准备由其本人钱包签名的交易,或跟进已发送的交易时使用。
运行要求
远程 Streamable HTTP 端点,无需本地安装。获取报价和交易状态需要以 Authorization Bearer 头传入 API 密钥(可在服务商开发者面板免费获取);列出网络和 API 信息无需密钥。需要能访问服务商的 API。
安装前请注意
Authorization 头携带 API 密钥,应保存在服务器端并避免写入共享日志。报价会导向用户亲自签名的真实链上交易,包含 0.1% 路由费及可能叠加的集成方费用。授权时只批准报价中的 fromAmount 给 approvalAddress,切勿无限额授权。金额为代币最小单位的整数字符串。未被成交的跨链转账会在源网络退款。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Soheil Router,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Web executable,通过 Streamable HTTP。 远程服务在工作区中配置后即可从网页运行时运行。

交给智能体安装

把这段提示词粘贴到 Claude Code、Codex、Cursor 等智能体,或 SourceWeft 对话中。智能体会读取该服务器的安装指南,先向你展示发布者、端点和登录方式,经你同意后再把它添加到你的客户端。密钥不会写进任何命令。

阅读 https://sourceweft.com/mcp/fi.soheil%2Frouter/install.md,并按其中说明把这个 MCP 服务器接入我的客户端。修改任何配置之前,先告诉我它的发布者、端点和登录方式,等我确认。不要把 API 密钥写进命令或我会提交的文件;问我密钥应从哪里获取。

查看智能体所依据的安装指南

其他 MCP 客户端

把它添加到你客户端的 mcpServers 配置中。

{
  "mcpServers": {
    "soheil-router": {
      "type": "http",
      "url": "https://api.soheil.fi/v1/mcp"
    }
  }
}

README

Soheil Router

[mcptry]

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.

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

bash
npm install github:soheil-fi/soheil-router

Quick start

ts
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 unchangedconst status = await router.waitForTrade(8453, txHash);     // DONE, REFUNDED, FAILED or NOT_OURS

A whole swap with viem is in examples/swap-viem.ts.

MethodKeyReturns
getNetworks()noLive networks, our contract and the contracts a trade may call
getInfo()noFee, limits, docs
getQuote(request)yesPrice, minimum received, fees, approval address, transaction
getStatus(chainId, txHash)yesPENDING, DONE, REFUNDED, FAILED, NOT_OURS or NOT_FOUND
waitForTrade(chainId, txHash)yesgetStatus 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.

ts
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.

bash
claude mcp add --transport http soheil-router https://api.soheil.fi/v1/mcp \  --header "Authorization: Bearer $SOHEIL_ROUTER_KEY"
json
{ "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: [email protected]

License

MIT

来源:README.md,提交 0874a32

工具

4

get_networks

Networks

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.

无需输入参数。

get_api_info

API info

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.

无需输入参数。

get_quote

Get a quote

The best price for a token swap on one network, or a transfer to another network (bridge), 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.

输入参数toToken必填fromToken必填toAddresstoChainIdfromAmount必填fromAddress必填fromChainId必填slippageBpsintegratorBps

get_trade_status

Trade status

Where a sent trade stands, from its transaction on chain: PENDING, DONE (with what was paid and received; for a bridge, once paid on the destination), REFUNDED (a bridge transfer paid back on the source network), FAILED, NOT_FOUND or NOT_OURS. Needs an API key.

输入参数txHash必填chainId必填

版本历史

1
  1. v1.0.1最新Nov 7, 2026

评分

已满足适用检查项的 100%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通必需25 分
  • 已声明认证方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分