Independent agent pilot · quote first

Give your agent one real route intent. Keep every key and signature.

Evaluate AssetFare with one read-only POST quote across 65 curated whole-route products. The catalog contains 3 core, 50 conditional, and 12 strategic/scarce routes and is reviewed weekly. The first call needs no account, API key, MCP connection, wallet authentication, session, signature, funding, or transaction.

Inspect each quote's direct_route_summary: an intent-bound ordered provider path, normalized endpoints, exact base-unit bounds, and the AssetFare fee step. Every current public route is direct_protocol_only; external_intent remains only as a compatibility enum. route_aggregator_used=false describes AssetFare's engine, not provider internals.

Open evaluator on GitHub Request a public pilot OpenAPI v2 Request a pilot

Route-specific economic guidance: one quote, then stop

The $1,000 request below is a documentation example only. Read the returned amount-specific guidance and the 100-route catalog. All 100 routes are technically available; 44 are threshold-recommended and 56 have no current price recommendation. Confirm the fresh quote. The supported $1 minimum is for reachability smoke testing only.

Zero-install REST call
curl -sS https://api.assetfare.dev/v2/quote \
  -H 'content-type: application/json' \
  -d '{"from_chain":"solana","from_token":"USDC","to_chain":"base","to_token":"USDC","amount_usd":1000}'
Signed-manifest evaluator
npx --yes --package=assetfare-mcp@1.21.6 \
  assetfare-route-eval --amount 1000 \
  --from-chain solana --from-token USDC \
  --to-chain base --to-token USDC \
  --quote-output quote.json

Solana native USDC → Base native USDC is the canonical supported route. The evaluator verifies the full quote and signed manifest, writes the exact quote only to a new mode-0600 file, and stops without authentication, preparation, signing, or submission. Solana SOL → Base USDC is also supported.

Do not spend the 60-second binding window on initial research. Complete any optional research and collect the required public wallet/event-signer inputs first. Then request one final execution-authoritative quote, review its exact delta and bounds, and begin the plan while more than 15 seconds remain. Otherwise requote and approve the replacement explicitly; a replacement quote is never automatic authority.

Only after fresh-quote confirmation and explicit caller approval
npx --yes --package=assetfare-mcp@1.21.6 \
  assetfare-plan --caller-approved --mode session \
  --quote quote.json --select-exact-quote-bounds \
  --wallet solana=<CALLER_SOLANA_PUBLIC_KEY> \
  --wallet base=<CALLER_BASE_PUBLIC_ADDRESS> \
  --event-signer-public <CALLER_EPHEMERAL_SOLANA_PUBLIC_KEY> \
  --session-token-output ./session-capability.json \
  --wallet-handoff-output ./caller-wallet-handoff.json

This explicit second phase creates strict quote-bound approval locally, requests exactly one unsigned session action, recomputes its proof-carrying receipt, payload, intent, path and bounds, and writes a mode-0600 caller-wallet handoff. The compact local verdict is first verified_for_simulation; only a successful fresh caller-wallet simulation under the approved local policy can produce verified_for_signing. Nothing hosted invokes a wallet.

The quote binding remains 60 seconds, while each selected unsigned action bundle is valid for 180 seconds and its EVM deadline is 240 seconds. Immediately before the caller opens the wallet, run assetfare-session --operation wallet-ready with the capability file, a new idempotency key, and a new handoff output. It requires at least 120 seconds remaining or refreshes the exact unsubmitted step after expiry; it never replaces a live action early, signs, or submits.

A wallet-capable external agent can instead run assetfare-agent-runner under an explicit local caller policy. The caller supplies its own local wallet adapter; keys never enter AssetFare, and the hosted server never signs or submits. The runner enforces the approved amount, receive, gas, rent and transaction-count caps while advancing submitted hashes through the session.

After the caller wallet submits
npx --yes --package=assetfare-mcp@1.21.6 \
  assetfare-session --operation observe-source \
  --capability-file ./session-capability.json \
  --idempotency-key source-0001 \
  --transaction-hash <CALLER_ALREADY_SUBMITTED_HASH>

The capability file retains the exact caller-generated bearer token, idempotency key, session ID, strict approval, public wallet map, and verification context without printing the token. If session creation loses its response, repeat the plan command with --session-capability-input ./session-capability.json. Every later current_action is checked through the same semantic verifier and receives a fresh self-verifying wallet handoff. The session CLI observes only a hash the caller already submitted and never signs or broadcasts; structured 409 stop/recovery flags are preserved.

Installable Agent Skill
npx --yes skills add assetfare/assetfare-mcp \
  --skill assetfare-route -g -y

For Circle Agent Stack and other shell-capable agents. The skill teaches the agent to verify capabilities and request a fresh REST quote; it adds no signing or submission authority. Circle integration guide →

OpenClaw agents can install the same reviewed bundle from ClawHub with openclaw skills install @odaiin/assetfare-route. Inspect public ClawHub 1.1.1 → · clean security scan →

Portable Agent Plugin
npx plugins add assetfare/assetfare-mcp

Installs the same route-evaluation skill and MCP connection in clients that support Agent Plugins or the current plugins CLI. The first call remains quote-only. The hosted primary v2 profile also exposes explicit prepare and session-lifecycle tools, but new execution flows must separately select an exact quote and supply strict approval_v3; nothing auto-prepares, signs, or submits.

Observed economics and latency

Historical Solana-to-Base datasets retain same-input outputs, latency, methods, and failures for reproducibility. They describe past windows; first check whether the exact route is active, then apply verified best-from or availability-only guidance from a fresh quote. USDC dataset → · ETH dataset →

What the agent should decide

1 · Scope

Confirm the exact source chain, source asset, destination chain, destination asset, and intended amount. The $1 supported minimum is reachability-smoke-only; use the route's dated guidance for evaluation planning and requote at the actual intended amount.

2 · Safety

Require a valid signed manifest, current route availability, and server signing/submission set to false.

3 · Economics

Use a numeric best-from only when price_recommended_for_amount=true; otherwise treat the route as available without a current price recommendation and compare alternatives when price matters. Confirm expected receive, conservative minimum, fees, ETA, step count, and non-atomic risk.

4 · Stop boundary

Do not authenticate, prepare, sign, or submit unless the caller independently chooses a route and explicitly approves continuation.

After explicit caller approval: the caller-operated action-plan handoff

For every offered route, a quote authorizes nothing. Product availability is decided for the whole route rather than by amount band. Explicitly select one execution mode and create strict approval_v3 bound to the exact quote fingerprint, path, caller bounds, expiry, wallets, and allowed mode. caller_approved:true is also required but is not human-approval proof by itself. The caller verifies, signs, and submits every action; AssetFare never signs, submits, or auto-prepares.

The active source-only corridors are Polygon/Optimism USDC→Base USDC, Ethereum/HyperEVM USDC→Solana USDC, and X Layer/Sei/Sonic/Monad/Avalanche/Cronos/Injective/Linea/Aptos/Unichain/Ink USDC→Base or Solana USDC as listed by live capabilities. Every corridor still requires live availability, amount-specific guidance, and a fresh quote. Follow the quote's caller_action_plan_handoff using public wallet addresses only.

Choose exactly one next step after a useful quote

  1. Stop. A useful quote still creates no obligation and needs no wallet action.
  2. Continue yourself. Read the caller-run API contract, then require fresh route selection and explicit approval before /v2/prepare or /v2/session.
  3. Ask for an assisted handoff. Send only the five-field route intent and quote ID if available. Do not send an address, balance, credential, key, payment artifact, or signature.

Contacting support is not route approval. It does not authorize preparation, signing, submission, or transfer; the caller must still make and record each later decision.

Framework references

Each stable npm package exposes capabilities and quote tools only. None can authenticate an AssetFare wallet, prepare an action, sign, submit, fund, swap, or bridge.

Coinbase AgentKit

npm install assetfare-agentkit-action-provider @coinbase/agentkit zod

npm package →

SendAI Solana Agent Kit

npm install assetfare-solana-agent-kit-plugin solana-agent-kit zod

npm package →

elizaOS

npm install assetfare-elizaos-route-plugin @elizaos/core zod

npm package →

How the result is counted

An invited independent evaluation is recorded as an assisted external pilot, not organic demand. CI, registry probes, owner tests, audits, and canaries are never counted as customers. A genuine execution remains caller-initiated, caller-verified, caller-signed, and caller-submitted.