Why it’s different
- Machine-to-machine. No browser, no human in the loop per transaction.
- High-frequency, low-value. Many sub-cent to few-cent payments, not occasional large ones. Typical SELAT calls run roughly 0.05 in USDC.
- Policy-bounded. Spending caps and per-call budgets stand in for human judgment.
- Identity is a wallet. An agent authenticates and pays with a wallet/signer, not an account password.
How SELAT fits
SELAT gives agents a single path to discover, price, and pay for services over open payment protocols, so the agent says “find me a thing that does X” and gets a runnable, paid result.- Pay per request through the SELAT Router SDK or SELAT CLI.
- Settle in USDC over the rails covered in the HTTP 402 primer.
- Stay within policy using spending limits set on the agent’s wallet.
Discover and price
SELAT’s discovery is federated across three catalogs — Circle’s x402 catalog, the Agentic Market, and the MPP catalog. An intent ranker scores candidate services by semantic keyword match, price relative to the cohort (log-scaled), and source-count credibility, with default weights of0.65 / 0.25 / 0.10.
Payment rails are not scored by default. Discovery surfaces every payment option on the chosen endpoint and lets the payer decide direct vs. routed — so ranking stays about what the service does, not how it gets paid.
Pay over open rails
A402 Payment Required challenge can be satisfied by two paid-rail protocols, and SELAT pays them two ways:
- Direct — when the chosen Circle-supported chain matches the upstream’s offer, the payer settles a Gateway-batched payment directly, skipping the router.
- Routed — for
erc-3009or tempo-native upstreams, the request goes through the SELAT Router, which verifies the inbound payment and translates rails on the outbound leg so the agent only ever signs one shape.
preferProtocol defaults to mpp, with x402 opt-in; among routed alternatives MPP wins by default. See x402 and MPP on Tempo for the rail details.
End-to-end: intent to result
A single command takes a plain-language intent through discovery, ranking, payment, and response.Discover and pick
selat run invokes the discovery ranker, picks the top match, and validates that the selected execution hint is a selat-pay command.Detect the rail and pay
selat-pay probes the upstream, auto-detects the protocol, and pays — choosing direct or routed mode without any branching in the agent.RouterClient.fetch(url, { preferProtocol }) returns the final upstream Response. See RouterClient.
Identity, policy, and budgets
Wallet-as-identity in practice. Wallet creation, typed-data signing, and spending limits are delegated to Circle Agent Wallets (user-controlled 2-of-2 MPC) via the Circle CLI. Agents pay without API keys or local private keys — the skill never sees mnemonics or private keys. The SDK also supports a private-key signer or a remotesigner object when in-process key handling or custom custody is preferred.
USDC settlement runs over Circle Gateway. Confirmed SDK chain keys are base, optimism, arbitrum, and arc. Arc is a private-access mainnet (eip155:5042) that needs raw-key signing — Circle’s MPC signer can’t sign Arc yet — and has no gasless funding. Gateway supports additional EVM mainnets; for the authoritative set your runtime accepts, run npx @selat-ai/selat-pay --list-chains.
Funding the budget. selat fund makes a direct deposit that settles on the source chain; selat fund --method eco is a gasless deposit from Base, Optimism, or Arbitrum that always settles into Gateway on Polygon (Eco is not supported on Arc).
Hard spending caps. selat setup-policy writes Circle Agent Wallet spending limits — per-transaction, daily, weekly, and monthly (default prompts: 5 / 50 / 200 / 500 USDC). The write is gated by an email OTP, and the code describes it as “the only hard ceiling the agent literally cannot bypass.” Set caps with setup-policy before depositing more than about $20.