AssetFare

有上限的非託管Solana SOL至Base ETH報價及未簽署執行工作流程,專為AI代理設計。十三個遠端MCP工具;伺服器永不接收私鑰,也永不簽署或提交交易。

託管 MCP 伺服器

npx add-mcp 'https://api.assetfare.dev/mcp'

可安裝到 Claude Code、Codex、Cursor 等客戶端

文件

AssetFare MCP — Solana to Base or Arbitrum bridge API

AssetFare MCP connector

An MCP client/server wrapper for AssetFare's capped, non-custodial Solana SOL → Base ETH or Arbitrum ETH workflows. Use it when an AI agent needs a verifiable quote, bridge workflow, or unsigned execution plan without handing custody to a routing service.

MCP is optional. AssetFare's primary machine interface is the public REST API described by OpenAPI. Agents can obtain and compare a quote without installing this wrapper:

  • APIs.json: https://assetfare.dev/apis.json
  • OpenAPI: https://api.assetfare.dev/openapi.json
  • Read-only Arazzo workflow: https://assetfare.dev/arazzo.yaml

Safety model

  • AssetFare MCP never accepts a private key and never signs or submits a transaction.
  • Read-only tools expose current status, signed manifest, and quotes.
  • State-changing tools only create authentication/session records or prepare/verify unsigned workflow actions. MCP clients should require user approval for those calls.
  • The caller independently verifies every returned unsigned action and signs/submits with its own wallets.

Remote endpoint

https://api.assetfare.dev/mcp

Official MCP Registry server: io.github.odaiin/assetfare.

REST/OpenAPI first call

Use the public quote endpoint when an agent has not explicitly connected MCP. No API key, wallet authentication, session, signature, or transaction is required for this read-only evaluation call:

node examples/rest-quote.mjs 300
python3 examples/rest_quote.py 300
curl -sS https://api.assetfare.dev/v1/quote \
  -H 'content-type: application/json' \
  -d '{"from_chain":"solana","from_token":"SOL","to_chain":"base","to_token":"ETH","amount_usd":300}'

Connect a remote MCP client directly—no package installation or AssetFare API key is required:

claude mcp add --transport http assetfare https://api.assetfare.dev/mcp
{
  "mcpServers": {
    "assetfare": {
      "url": "https://api.assetfare.dev/mcp"
    }
  }
}

Codex CLI and app

Add the remote server from the CLI:

codex mcp add assetfare --url https://api.assetfare.dev/mcp

Or add it to ~/.codex/config.toml or a project .codex/config.toml. The writes approval mode prompts for tools that are not annotated read-only:

[mcp_servers.assetfare]
url = "https://api.assetfare.dev/mcp"
default_tools_approval_mode = "writes"

Gemini CLI

gemini mcp add --transport http assetfare https://api.assetfare.dev/mcp

Equivalent ~/.gemini/settings.json entry:

{
  "mcpServers": {
    "assetfare": {
      "url": "https://api.assetfare.dev/mcp",
      "type": "http",
      "trust": false
    }
  }
}

Cursor

Add the following server to a project .cursor/mcp.json or the global ~/.cursor/mcp.json:

{
  "mcpServers": {
    "assetfare": {
      "url": "https://api.assetfare.dev/mcp"
    }
  }
}

Connecting is unauthenticated. Execution tools subsequently require the wallet-bound token produced by AssetFare's non-transactional signMessage flow. Do not place that token in any MCP configuration file.

Agent skill

The portable Agent Skill is skills/assetfare-route/SKILL.md. Skills.lc-compatible clients can install it directly from this public GitHub repository.

First-call evaluation

Run npm run first-call-eval to verify a fresh MCP client can discover the tools, validate the signed manifest and status, and obtain a $300 quote without creating a wallet login, session, signature, or transaction.

Use Streamable HTTP. The endpoint has no server-side API key; wallet authentication happens through the AssetFare tools.

Local stdio

The repository also contains a stdio-compatible wrapper for self-hosting. The public Registry entry uses the remote Streamable HTTP endpoint; npm publication is intentionally deferred until a separate package-release review.

Trust material

  • Security contact: security@assetfare.dev
  • Security policy and private reporting: https://github.com/odaiin/assetfare-mcp/security/policy
  • Signed manifest: https://api.assetfare.dev/.well-known/assetfare-manifest.json
  • Public signing key: https://assetfare.dev/.well-known/assetfare-manifest.pub
  • Status: https://api.assetfare.dev/v1/status
  • OpenAPI: https://api.assetfare.dev/openapi.json
  • APIs.json: https://assetfare.dev/apis.json
  • Arazzo: https://assetfare.dev/arazzo.yaml
  • Server card: https://api.assetfare.dev/.well-known/mcp/server-card.json
  • Agent guide: https://assetfare.dev/llms-full.txt
  • Mainnet evidence: https://assetfare.dev/evidence/
  • Live same-input comparison: https://assetfare.dev/compare/solana-to-base/

Discovery

  • Official MCP Registry: io.github.odaiin/assetfare
  • Smithery: https://smithery.ai/servers/twotw55/assetfare
  • Glama: https://glama.ai/mcp/connectors/io.github.odaiin/assetfare
  • Agent Skill: https://www.skills.sh/odaiin/assetfare-mcp/assetfare-route

The wrapper deliberately contains no AssetFare route engine, wallets, RPC credentials, or internal operations data.

Agent use case

For a Solana-to-Base or Solana-to-Arbitrum $300 request, an agent reads the signed manifest and status, calls assetfare_quote with destination_chain, compares disclosed executable receive and ETA, and only then asks the wallet owner to approve the non-transactional login message. The agent independently signs and submits every on-chain action; this MCP server never does.

See the first-call evaluation script, the public mainnet evidence at https://assetfare.dev/evidence/, and the end-to-end case study at https://assetfare.dev/case-studies/solana-to-base-mainnet-canary/.