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.

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.
Free
GET
/defi-positions?address=0x...
Read active DeFi positions for a sub-wallet.
Free
GET
/crypto-news
Real-time crypto news with sentiment analysis.
$0.001
GET
/token-alpha?symbol=BTC
Premium token intelligence — news, sentiment, futures.
$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.
$0.05
GET
/token-security?address=0x...
Contract security audit — honeypot + rug pull risk.
$0.001
GET
/funding-rates?symbol=BTC
Derivatives — funding rates, open interest, liquidations.
$0.001
GET
/defi-analytics?protocol=aave
DeFi protocol analytics — TVL, chain breakdown.
$0.001
GET
/filtered-news?topic=DeFi
AI-filtered news by topic (DeFi, NFTs, Layer2).
$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?symbol=SPY
TradFi macro — indices, VIX, DXY, yields.
$0.001
GET
/generate-meme?prompt=...
AI image generation via Gemini 3 Pro.
$0.50
GET
/llm-research?prompt=...
AI research assistant with web search.
$0.50
GET
/tx-explainer?txHash=0x...&chain=base
Decode & explain EVM transactions across 11 chains.
$0.01
GET
/portfolio
Multi-chain token balances for your sub-wallet.
$0.001
GET
/supported-tokens?chainId=8453&search=USDC
Search tokens by symbol on chain (CoinGecko).
$0.001
GET
/hyperliquid-account
HL perp account + open positions.
$0.001
GET
/hyperliquid-market?asset=BTC
HL perp market data + mark prices.
$0.001
GET
/hl-transaction-history
Recent HL fills for your sub-wallet.
$0.001
GET
/yield-markets
Blue-chip supply APYs from authoritative per-protocol sources — Aave V3, Compound V3, Morpho, Syrup.
$0.001
GET
/yield-farming-active
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

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%"
# <   }
# < }