Otto X is an agent-native DeFi platform. AI agents can swap, bridge, and invest on your behalf with a
single wallet signature. No seed-phrase exposure. No gas management. No intermediate custody by Otto.
The infrastructure composes three existing primitives — x402 + OKX Onchain OS + EIP-3009 — and the user feels magic.
Traditional agent-driven DeFi is a five-step gauntlet of approvals, gas estimations, and failure modes.
Otto X collapses it into a single request with one wallet confirmation.
Before · Legacy flow
Agent tries to swap 10 USDC → WETH for you
1
Expose your private key to the agent somewhere it can reach. Immediate fail.
2
Approve the token to the router. Separate tx, user pays gas.
3
Submit the swap. Another gas fee. Agent or user signs.
4
Track the tx, handle reverts, monitor slippage, watch for frontrunning.
5
Every approval stays open forever. Every step is a failure mode.
After · Otto X
Same agent. Same swap. One HTTP call.
1
Bootstrap (once per payer). Your first paid /auto-* call provisions your TEE sub-wallet and returns its address in the 409 funds_required response. Cache it — same payer, same sub-wallet, forever. No provisioning without a real payment behind it.
2
One wallet confirmation. Sign x402 fee + an EIP-3009 TransferWithAuthorization note — exact amount, short time window, to = your sub-wallet. Modern wallets batch both into one prompt.
3
POST /auto-swap. Server pulls your USDC → your sub-wallet direct, tops up dust gas, executes via OKX DEX. HTTP 200 with every tx hash.
Custody model
Three layers. Zero Otto-held funds.
The key insight: principal moves user → user's own sub-wallet, never through Otto.
Otto pays gas + orchestrates, nothing more. You can empty the sub-wallet at any time via the escape hatch.
1
Your wallet
Holds your USDC / USDT principal. Your seed phrase, your keys — Otto cannot see or touch it.
You sign EIP-3009 authorizations off-chain from here.
Self-custody · EOA / hardware wallet
2
Your Otto X sub-wallet
TEE-custodied inside OKX Onchain OS. The key never leaves the Trusted Execution Environment —
neither Otto nor OKX staff can export it. Receives principal, executes ops, holds residuals.
TEE · idempotent · deterministic per payer
3
Otto X operator
Pays gas to broadcast your EIP-3009 authorization and dust gas top-ups.
Never takes custody of your principal. The transfer is user → sub-wallet direct.
Hot wallet · gas-only · orchestration
✓
Signer binding. principalAuth.from must equal the x402 payer. No impersonation.
✓
Destination locked. principalAuth.to must equal your own sub-wallet. No drains.
✓
Amount + time bound. Exact value, specific time window. No open allowances.
✓
Replay protection. Nonce uniqueness enforced in DB + on-chain authorizationState.
✓
Protocol allowlist. Sub-wallets can only touch Aave V3, Lido, Compound V3, Morpho on vetted chains.
✓
Escape hatch.POST /auto-withdraw sweeps sub-wallet funds to any address, anytime.
✓
Idempotency. Every op has a (payer, op_type, body_hash) key. Safe to retry.
✓
409 fallback. Clients without EIP-3009 support still get a working two-step funds-required path.
See the power yourself
Feel what your agent just learned.
Every endpoint below is a new skill an AI agent can earn the right to use for a fraction of a cent.
Connect a wallet, sign one tiny USDT0 payment on X Layer, and watch the superpower light up in real time — live news,
KOL sentiment, on-chain research, a TEE-custodied sub-wallet, even a DEX swap — all behind a single signature.
Wallet
Not connected
Network
—
USDT0 balance (X Layer)
—
Need USDT0 on X Layer? Bridge from any chain via
OKX Bridge,
or deposit from your OKX exchange account. Payments are ~$0.001–$0.01 each; a few dollars goes a long way.
Payment
$0.001 USDT0 (once)
The full one-call flow, end-to-end
Swap USDT0 → any X Layer asset.
Two prompts in your wallet, one HTTP call. The first signs the x402 fee — $0.05 USDT0 to Otto.
The second signs an EIP-3009 principalAuth note that pulls your USDT0 principal directly
into your TEE sub-wallet — never through Otto's hands. The server tops up dust gas, executes via
OKX DEX, and returns every tx hash. Connect above first.
Wallet
Connect above ↑
Sub-wallet (X Layer)
—
We look up your sub-wallet via free /sub-wallet/preview as soon as you connect.
If you don't have one yet, the panel above can provision it for $0.01 (select GET /sub-wallet and Pay & call).
USDT0 — X Layer's EIP-3009 principal asset
You'll sign
$0.05 fee + 1.00 principal = 1.05 USDT0 total
One call: idle → yield
Yield Copilot — put idle stablecoins to work.
Same one-call shape as the swap above. Sign the $0.05 x402 fee, sign an EIP-3009
principalAuth note that lands your USDT0 in your TEE sub-wallet — never
through Otto's hands — and POST /yield-copilot. Otto picks the highest-APY
Otto-allowlisted lending venue for that stablecoin on that chain (Aave V3 / Compound V3 /
Morpho — Base, Arbitrum, Optimism, Ethereum, X Layer), supplies it, and hands back a
before/after card. Connect above first.
Wallet
Connect above ↑
Sub-wallet (X Layer)
—
Same TEE sub-wallet as the swap panel. No sub-wallet yet? Provision it for $0.01 in the
pay panel above (select GET /sub-wallet and Pay & call). Otto never pools
or rehypothecates your funds — withdraw the position anytime via
POST /auto-defi-withdraw, or sweep the whole sub-wallet via POST /auto-withdraw.
X Layer · USDT0 — the EIP-3009 principal asset on chain 196 (→ Aave V3 X Layer)
You'll sign
$0.05 fee + 1.00 principal = 1.05 USDT0 total
Set it and forget it
Yield Watch — Otto rebalances for you.
One signature, 30 days of autonomous rebalancing. Otto watches your Aave V3 / Compound V3 positions
across Base, Arbitrum, Optimism, Ethereum, and X Layer — when a better venue sustains a meaningful
APY gap, Otto moves your funds. You stay in control: cap the maximum per move, cap the number of
moves, pause or revoke any time. The delegation is scoped, on-chain-verifiable, and the worker only
signs from your TEE sub-wallet (never from your external wallet).
Wallet
Connect above ↑
Sub-wallet
—
Same TEE sub-wallet as Swap + Yield Copilot. Yield Watch operates ON your sub-wallet's existing positions
(deposit via /yield-copilot first if you haven't yet). Otto's worker runs hourly; auto-mode broadcasts
only fire when a hysteresis-confirmed APY gap clears your signed thresholds.
Notify only. Otto Telegrams you when there's a better venue. You click the suggested
two-call switch yourself. No on-chain delegation, no spending limits — just alerts.
You'll sign
Just a POST — no signature needed for Notify mode.
Pause / revoke an existing subscription
Auto mode requires a signed revoke (EIP-712); notify mode just sends a DELETE.
Try it live
Free endpoints, right here.
All three below run against the live Otto X server — no API key, no payment, just click. Perfect for sanity-checking the service is alive
before you wire up a paid call.
Look up a sub-wallet
Free · GET /sub-wallet/preview
Read-only DB lookup. Paste any EVM address to see whether Otto has already provisioned a TEE sub-wallet for it.
Nothing is provisioned here — provisioning is tied to a real paid /auto-* call, not a button click.
Service health
Free · GET /health
One-click ping. Returns service name, chain, x402 network, and a timestamp. Useful as a canary during stress tests.
X Layer curated tokens
Free · GET /tokens
The on-the-house token registry Otto X uses for swap quoting on X Layer.
Small, curated list with the native assets and stablecoins.
Full endpoint catalog
41 endpoints. One payment standard.
Every paid endpoint honors x402 Payment Required. Send a request without payment, receive a 402 with exact price + payment address.
Pay, retry, get data. No API keys.
POST
/auto-swap
In-chain swap via OKX DEX aggregator. Add principalAuth for one-call UX.
$0.05
POST
/auto-bridge
Cross-chain bridge via Stargate / Across / Relay / Gas.zip (17 chains).
$0.05
POST
/auto-defi-invest
Deposit into an allowlisted protocol (Aave V3, Lido, Compound V3, Morpho).
$0.05
POST
/auto-defi-withdraw
Redeem an active DeFi position back to your sub-wallet.
$0.05
POST
/yield-copilot
One call: deploy idle stablecoins into the highest-APY Otto-allowlisted lending venue (Aave V3 / Compound V3 / Morpho) on Base / Arbitrum / Optimism / Ethereum / X Layer. Accepts principalAuth; returns a before/after artifact.
$0.05
POST
/auto-withdraw
Escape hatch — sweep sub-wallet funds to any external EVM address.
$0.05
GET
/sub-wallet/preview?address=0x...
Read-only lookup — is a sub-wallet already provisioned for this address? Never provisions; provisioning is triggered by your first paid /auto-* call.
Active lending positions for your sub-wallet (direct on-chain) + rebalance recs.
$0.001
GET
/yield-farming-historical
Past Otto X yield exits.
$0.001
POST
/swap
DEX swap quote + unsigned calldata (no execution).
$0.01
GET
/market-alpha
Live pricing for curated X Layer tokens.
$0.005
GET
/price?token=0x...
Single token USD price via DEX quote.
$0.002
GET
/all-tokens
Full list of tokens supported on X Layer DEX.
$0.002
GET
/approve?token=0x...&amount=N
ERC-20 approval calldata for DEX router.
$0.005
GET
/
This landing page (HTML) or JSON service discovery (Accept: application/json).
Free
GET
/health
Service health check.
Free
GET
/tokens
Curated X Layer token registry.
Free
GET
/llm.txt
AI-readable service catalog.
Free
GET
/.well-known/x402
x402 discovery document (JSON).
Free
Quick start
Hit your first endpoint in 30 seconds.
Every example below is copy-paste runnable against the live service. The one-call /auto-swap flow is documented in full detail in the
docs.
# Look up your sub-wallet — read-only, never provisions
curl "https://xlayer.ottoai.services/sub-wallet/preview?address=0xYOUR_WALLET"
# Service discovery (x402scan-compatible)
curl "https://xlayer.ottoai.services/.well-known/x402"