Sato Hub

Sato Route

Where should this action go?

Sato Route is a non-custodial router for onchain agents. It picks a swap venue, a verified x402 endpoint or a registered agent using Sato Hub’s own daily readings, returns the readings with the answer, and takes a disclosed 15 bps / 3 bps fee inside the swap transaction. It never signs, holds or moves funds — you do.

What a route is, and is not

A route is a recommendation, chosen on the fields named in chosen_by as they read on checked_at. It is not a security review, a quality judgment, or a statement about price, execution or returns — a quote is a quote, not a fill. Sato Hub does not sign, hold or move funds; the caller signs the transaction it is handed.

Three lanes, one framing

Swaps

GET /api/route/swap

Every adapter that quotes on the chain is asked in parallel. Retired and dormant venues are excluded, the rest are ranked on liveness, our observed check record, verification state, then quoted output. You get the aggregator's own calldata and a Preflight verdict for the venue.

x402 endpoints

GET /api/route/x402

One of 8 capabilities in, one endpoint out — chosen only from sellers that answered a real HTTP 402 within the last seven days, with the facilitator reachability and declared network we read. No payment is sent to find out, and we never relay one.

Registered agents

GET /api/route/agent

Listed Sato Agent Passports, ranked on what the passport declares and confirmed on-chain, then the top few get one live MCP handshake before the final ranking. A registration proves a claim was made, not that the product works.

A launch lane — routing a token or agent launch to a venue — is being added. It is not live, nothing on this page measures it, and no endpoint answers for it yet.

The fee, in full

Stable ↔ stable

3 bps

both legs a stablecoin we recognise

Any volatile leg

15 bps

the default; an unrecognised token is treated as volatile

Failed or unsigned

nothing

the fee lives inside the transaction you sign

How it is taken
As a fee parameter on the aggregator’s own quote, charged on the input leg by that router inside the swap transaction. Sato Hub is not in the flow of funds at any point.
Treasury
0xcEE53Eb001d4d1743EF9df333Dcf45bC38622bE9
Disclosure
Every quote carries sato_fee_bps, sato_fee_recipient and a plain-English disclosure string, before anything is signed. It is the same schedule Sato OS charges on its own swap rail.

A real route, chosen just now

1 USDC → SOL on Solana. The response below came from the same endpoint you would call, at most five minutes ago. It is a quote, not a fill, and prices move.

Chosen by Sato Route on 2026-09-11: Jupiter (listing →), because:

  • Action swap EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v → So11111111111111111111111111111111111111112 on Solana, chosen from 25 candidate venue(s) in the Sato Hub directory.read from resources.resource_type, resources.tags, resources.chains_supported
  • Directory record Listed on Sato Hub as Jupiter.read from resources.slug
  • Public activity Last public activity 2026-09-10 (active).read from resources.last_activity_at
  • Observed record 100% of Sato Hub's own daily checks succeeded over 59 day(s). This is the share of OUR checks that succeeded, never uptime — a failure can be on our side.read from resources.uptime_observed.success_rate_pct
  • Verification state The documented install path was re-run in an isolated container and completed. Proves installability, not runtime behaviour. Listing verification: Verified.read from resources.deploy_spec.deploy_status, resources.verification_status
  • Quoted output 9753862 in the output token's base units, quoted by the venue's own API at checked_at. A quote is not a fill.read from adapter.quote.amountOut

fee sent on this quote: 0 bps →

No Sato fee is charged on this quote: Jupiter takes its platform fee into an on-chain referral token account, and none is configured for this deployment (JUPITER_REFERRAL_ACCOUNT is unset), so platformFeeBps was omitted from the request. The schedule, when a referral account exists, is 3 bps stable-to-stable and 15 bps on any volatile leg. Sato Hub does not sign, hold or move funds.

also considered: Ophis, Raydium, Virtuals Protocol, 1inch, dYdX

Preflight on the chosen venue

go (R5) what these verdicts mean →

Call it

HTTP

curl -s "https://satohub.ai/api/route/swap?chain=Solana&token_in=USDC&token_out=SOL&amount=1000000"

Also /api/route/x402?capability=price-feed and /api/route/agent?capability=…. Contract: OpenAPI.

MCP

{
  "mcpServers": {
    "satohub": { "url": "https://satohub.ai/api/mcp" }
  }
}

The same code answers as onchain_agent_route_swap and onchain_agent_route_agent. Full tool list on /mcp.

Questions

What does Sato Route do?

It answers one question — where should this action go — for three kinds of action: a token swap, a request to an x402-paid endpoint, and a job for a registered agent. The answer names the venue it chose and every reading it chose on, with the date each was read. It is a recommendation, not a safety review.

Does Sato Route hold my funds?

No. Every lane is non-custodial. The swap lane returns the aggregator's own quote and calldata; you sign it with your own wallet. The x402 lane names an endpoint and you settle the seller's 402 yourself. Sato Hub never holds, nets, forwards or signs, and is not an x402 facilitator.

How does Sato Route make money?

A fee parameter on the aggregator's own quote: 3 bps when both legs are stablecoins we recognise, 15 bps when either leg is volatile. It is taken inside the swap transaction by the router, on the input leg, to the Sato fee address 0xcEE53Eb001d4d1743EF9df333Dcf45bC38622bE9, and it is printed on every quote before anything is signed. A failed, reverted or unsigned trade pays nothing.

Is the chosen venue the best price?

No such claim is made. Price is the fourth signal, not the first: venues are ranked by whether they are still live in Sato Hub's records, the observed success rate of our own daily checks, verification state, and only then quoted output. A quote is a quote, not a fill.

How does Sato Route choose a venue?

Retired or dormant venues are excluded outright. What remains is ranked on liveness, the observed record of Sato Hub's daily checks, verification state and then quoted output — and the full ladder travels back in chosen_by, each signal with the field it was read from. The same data always yields the same route.

What can I call it from?

Any HTTP client — GET https://satohub.ai/api/route/swap — or over MCP, where the same code answers as onchain_agent_route_swap, onchain_agent_route_agent and the x402 route. The HTTP lane and the agent lane share one implementation, so they cannot answer differently.

What happens when no venue qualifies?

The endpoint answers 503 with the list of adapters it asked and what each one said. That is a reading of that moment — that no adapter quoted this pair now — and never a statement that the pair cannot be traded. Nothing is routed on data we could not read.

Sato Route is not investment advice, not a broker, and not a guarantee of execution, price or outcome. Routing to a venue is not an endorsement of it. Related: Preflight · x402 verified · Agent Passport