Sato Hub
← Back to blogSato Route: four routing lanes that name the venue, the reasons and the fee

Sato Route: four routing lanes that name the venue, the reasons and the fee

Swaps, x402 requests, agent-to-agent tasks and token launches now get a venue chosen on fields we can point at — with the Sato fee stated before anything is signed, and nothing custodial anywhere in the path.

2026-09-12 · 5 min read

A router that shows its reasons

Routing is a trust transfer. Something picks a venue on your behalf, and you either see why or you do not. Most routers do not show you, and the ones that do usually show a price and stop there.

Sato Route is four lanes, and every one of them answers in the same shape: the venue, the signals it was chosen on, the exact field each signal was read from, the date it was read, and the fee. The sentence the payload actually returns reads:

> Clanker v4 was chosen by Sato Route on 2026-09-12, because it documents a > programmable reward-recipient split, so the deploy config below can be signed > as-is, it documents agent token launches, and it publishes a 80% creator > share of its 1% pool fee. Read the sources in chosen_by and check them > yourself — this is a recommendation, not a verdict.

Never *best*. Never *safe*. A date, a field, and an invitation to go check.

The four lanes

SwapsGET /api/route/swap, MCP tool #22 onchain_agent_route_swap. Every aggregator adapter that quotes on the chain is asked in parallel — Jupiter, 0x, 1inch, Odos — and the answer carries the chosen venue's quote and its calldata. The venue is chosen on liveness, the observed record of Sato Hub's own daily checks, the listing's verification state, and then the quoted price. That observed record is always described as the share of *our* checks that succeeded, never as uptime: a failure can be on our side.

x402 requestsGET /api/route/x402. Which declared [x402](https://github.com/coinbase/x402) endpoint would we send a request to for a capability, based on the daily verification lane. A verified 402 is a protocol observation and nothing more: on its check date, the URL answered HTTP 402 with a payment payload a client could parse. No payment was sent to find out, and it is not a claim about delivery or solvency. A verification older than seven days is not standing, and such an endpoint is not routed to. The standing set is public at [satohub.ai/x402/verified](https://satohub.ai/x402/verified).

Agent-to-agent tasksGET /api/route/agent, MCP tool #23. Candidates are the listed Sato Agent Passports, and the top three by the static ranking get one live MCP handshake before the pick is made. When nothing qualifies, the answer is unknown with a reason — not a low-confidence pick dressed up as an answer. Agents registered on-chain without a passport are absent from the pool, and the payload says so: absent means unseen, not unqualified.

Token launchesGET /api/route/launch, MCP tool #24. Four venues, each read from its own documentation on a dated pass: [Clanker v4](https://clanker.gitbook.io/documentation/sdk-reference/v4), [Bankr](https://docs.bankr.bot/token-launching/overview/), [Virtuals](https://whitepaper.virtuals.io/about-virtuals/capital-formation-layer/virtuals-launch-mechanics), and [Zora creator coins](https://docs.zora.co/coins).

Why only one launch lane is executable

Clanker documents rewards.recipients — an array of { recipient, admin, bps, token } entries whose bps must total 10000 — so we can hand over a config in the documented clanker-sdk v4 deploy() shape that the caller reads and signs with its own signer. The other three we can name and quote, but shaping a config for them would mean inventing field names. Each one says exactly that in unconfirmed, and the response repeats it in prepared_deploy_unavailable.

Zora is the clearest illustration of the null rule. Zora publishes a 1% fee and names the parties, but not the split between them. So creator_share_pct is null — unread, not generous — and Zora ranks below every venue that publishes a number. A blank is never quietly promoted into a zero or into a benefit of the doubt.

Every venue fact carries the page it was read from and a facts_as_of date. Fee schedules change. Ours says how stale it is so you can re-read the source before you sign.

The fee, stated every time

For swaps: 3 basis points stable-to-stable, 15 basis points on any volatile leg. It is a parameter on the aggregator's own quote — Jupiter, for instance, takes a platform fee into an [on-chain referral token account](https://developers.jup.ag/docs/swap-api/add-fees-to-swap) — taken inside the swap transaction by the router. A trade that fails, reverts or is never signed pays nothing.

For launches: Sato's slice is one entry in the venue's own reward-recipient list. The deployer takes 10000 - bps, Sato takes bps, and the two always total 10000. It is disclosed on every response including when it is zero, and at zero no Sato recipient appears in the config at all.

That is the current setting. The launch lane ships with the fee at zero, and the payload says so in words rather than leaving you to infer it from a missing field.

Non-custodial, in the strict sense

Sato Route never signs, holds, moves or broadcasts funds. It never deploys a contract. It never relays, pays or settles an x402 request — the buyer settles the seller's own 402 with its own wallet.

What it returns is calldata, or a config, or a name and a reason. You sign. And a route you never sign costs nothing, which is the property that makes the fee disclosure worth reading rather than worth burying.

A quote is a quote, not a fill. A fee schedule says nothing about what a token will do after it launches. None of this is a security review.

Use it

``sh curl -sS 'https://satohub.ai/api/route/swap?chain=Solana&token_in=USDC&token_out=SOL&amount=1000000' curl -sS 'https://satohub.ai/api/route/launch?chain=Base&goal=agent_token&name=Example&symbol=EXMPL&deployer=0x...' curl -sS 'https://satohub.ai/api/route/x402?capability=inference&chain=base' curl -sS 'https://satohub.ai/api/route/agent?capability=research&chain=Base' ``

Over MCP, the same three chooser functions back tools #22, #23 and #24 at https://satohub.ai/api/mcp — one implementation each, so the HTTP lane and the agent lane cannot answer differently.

Details, the venue table and the ranking rules: [satohub.ai/route](https://satohub.ai/route).

Sources

Join the Sato Hub Briefing

One email a week — the agents, tools, and infrastructure that actually shipped, and why they matter.