Otto AI OKX
Live on X Layer · Chain 196 · EIP155:196

One HTTP call.
Autonomous DeFi.

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.

42
paid endpoints live
4
Base · Arb · Polygon · X Layer
1
signature for full auto-exec
0
custody by Otto

Five steps → one HTTP call.

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.

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.

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)

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

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

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.

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.

42 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
Execute an in-chain swap on your Otto X sub-wallet via OKX DEX aggregator
$0.05
POST
/auto-bridge
Execute a cross-chain bridge from your Otto X sub-wallet (17 chains supported)
$0.05
POST
/auto-defi-invest
Deposit into a whitelisted DeFi protocol (Aave V3, Lido, Compound V3, Morpho) from your Otto X sub-wallet
$0.05
POST
/auto-defi-withdraw
Redeem an active DeFi position from your Otto X sub-wallet
$0.05
POST
/yield-copilot
One-call yield: deploy your idle stablecoins into the highest-APY Otto-allowlisted lending venue (Aave V3 / Compound V3 / Morpho) on Base, Arbitrum, Optimism, Ethereum, or X Layer — accepts principalAuth; returns a before/after APY + projected yield artifact
$0.05
POST
/auto-withdraw
Escape hatch — sweep funds from your Otto X sub-wallet to any external address
$0.05
GET
/sub-wallet
Resolve (or auto-provision) your Otto X sub-wallet — bound to the verified x402 payer
$0.01
GET
/idle-capital
Detect undeployed tokens that could earn yield
$0.001
GET
/yield-recommendations
Personalized yield vault recommendations
$0.001
POST
/yield-watch
Register or update a yield-watch subscription. mode=auto: signed EIP-712 30-day delegation authorizing Otto to auto-rebalance between Aave V3 and Compound V3 (Morpho ships v1.1). mode=notify: free observation alerts only.
$0.001
DELETE
/yield-watch
Revoke an active yield-watch subscription — requires a signed YieldWatchRevocation typed-data note (different primaryType from the registration delegation)
$0.001
GET
/yield-watch
Read the caller's current yield-watch subscription state (mode, scope, policy knobs, move counter, next nonce)
$0.001
GET
/yield-watch/audit
Read the caller's yield-watch audit trail — registrations, revocations, observation starts/resets, auto-move attempts/results
$0.001
GET
/crypto-news
Real-time crypto news with sentiment analysis
$0.001
GET
/token-alpha?symbol=BTC
Premium token intelligence — news, Twitter sentiment, futures data
$0.001
GET
/kol-sentiment
Aggregated sentiment from top 50 crypto KOLs
$0.001
GET
/trending-altcoins
Top 3 trending altcoins with analysis
$0.001
GET
/mega-report
Alpha & Intel Report — comprehensive daily market briefing — headlines, sentiment, KOL alpha, trending, yield
$0.05
GET
/token-security?address=0x...
Token contract security audit — honeypot detection, rug pull risk, tax analysis
$0.001
GET
/funding-rates
Derivatives dashboard — funding rates, open interest, long/short ratios
$0.001
GET
/defi-analytics
DeFi protocol analytics — TVL rankings, chain breakdown, gainers/losers
$0.001
GET
/filtered-news?topic=DeFi
AI-filtered news by topic (DeFi, NFTs, Layer2, etc.)
$0.001
GET
/twitter-summary
Curated crypto Twitter/X digest from top KOLs
$0.001
GET
/token-details?symbol=BTC
Token price, market cap, 24h change
$0.001
GET
/yield-alpha
Top DeFi yield opportunities across chains
$0.001
GET
/tradfi-data
TradFi macro intelligence — indices, VIX, DXY, yields, commodities
$0.001
GET
/generate-meme?prompt=...
AI image generation via fal.ai (gpt-image-2 default, nano-banana-pro alt)
$0.15
GET
/llm-research?prompt=...
AI research assistant with web search via Gemini 3.1 Flash-Lite
$0.10
GET
/tx-explainer?txHash=0x...
Decode & explain EVM transactions across 11 chains
$0.01
GET
/portfolio
Multi-chain token balances for your Otto X sub-wallet (or ?address=0x...)
$0.001
GET
/supported-tokens?chainId=8453&search=USDC
Search tokens by symbol on chain
$0.001
GET
/hyperliquid-account
Hyperliquid perpetual futures account info — defaults to your Otto X sub-wallet
$0.001
GET
/hyperliquid-market
Perpetual market data & funding rates
$0.001
GET
/hl-transaction-history
Hyperliquid trade history — defaults to your Otto X sub-wallet
$0.001
GET
/yield-markets
Blue-chip supply APYs from each protocol's authoritative source — Aave V3 + Compound V3 (on-chain), Morpho (official GraphQL), Syrup (ERC-4626 trailing)
$0.001
GET
/yield-farming-active
Active yield positions for a wallet — Otto-allowlisted lending positions also get a rebalance recommendation (current APY vs. the highest-rated allowlisted protocol alternative + the action calls to switch) and a portfolio yield summary
$0.001
GET
/yield-farming-historical
Yield op history for a wallet — deposit/redeem timeline with exact Otto fees and a totals summary
$0.001
POST
/swap
Get swap quote + calldata on X Layer via OKX DEX (V1: not broadcast)
$0.01
GET
/market-alpha
X Layer token market intelligence — live pricing for curated tokens
$0.005
GET
/price?token=0x...
Single token USD price via OKX DEX quote
$0.002
GET
/all-tokens
Full list of all tokens supported on X Layer DEX
$0.002
GET
/approve?token=0x...&amount=N
ERC-20 approval calldata for DEX router (needed before swap)
$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
/llms.txt
Long-form AI-readable catalog.
Free
GET
/.well-known/x402
x402 discovery document (JSON).
Free
GET
/openapi.json
OpenAPI 3.1 description — the machine invocation contract (method, query params, body schema, price).
Free
GET
/otto.md
Otto Intelligence Plugin skill file.
Free
GET
/supported-protocols
DeFi allowlist — protocol × chain × token combinations Otto will execute against.
Free
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.
Free
GET
/defi-positions?address=0x...
Read active DeFi positions for a sub-wallet.
Free

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"
# Step 1 — get the price
curl -i "https://xlayer.ottoai.services/portfolio"
# < HTTP/1.1 402 Payment Required
# < PAYMENT-REQUIRED: eyJ4NDAyVmVyc2lvbiI6Mi4uLg==

# Step 2 — pay + retry (use x402 client lib or browser wallet)
curl -H "PAYMENT-SIGNATURE: $SIGNED_402" \
     "https://xlayer.ottoai.services/portfolio"
# One-call autonomous swap — principalAuth collapses fund + execute
curl -X POST "https://xlayer.ottoai.services/auto-swap" \
  -H "PAYMENT-SIGNATURE: $X402_FEE" \
  -H "Content-Type: application/json" \
  -d '{
    "fromToken": "0x833589fcd6edb6e08f4c7c32d4f71b54bda02913",
    "toToken":   "0x4200000000000000000000000000000000000006",
    "amount":    "10",
    "chain":     "base",
    "principalAuth": {
      "from":        "0xYOUR_WALLET",
      "to":          "0xYOUR_SUB_WALLET",
      "value":       "10000000",
      "validBefore": 1776973646,
      "nonce":       "0x...",
      "signature":   "0x..."
    }
  }'

# < HTTP/1.1 200 OK
# < {
# <   "status": "success",
# <   "data": {
# <     "approveTxHash": "0x752564d8...",
# <     "swapTxHash":    "0x8d57950c...",
# <     "fromAmount":    "10000000",
# <     "toAmount":      "...",
# <     "priceImpact":   "-0.16%"
# <   }
# < }