pay_url.
Otto only recommends. You pay each service directly at its pay_url. There is no prepay wallet, no held balance, and zero markup on the downstream services.
Base URL: https://x402.ottoai.services
The Router is canonical at x402.ottoai.services/meta-intelligence — the same host as every other Otto x402 service. (Under the hood it is served by Otto’s open-router service, fronted by the x402 router as a transparent pass-through.)
Pricing: $0.001 per call (USDC on Base) — a flat router fee, never a markup on the services it recommends.
Custody: Meta Intelligence is non-custodial — it only recommends; you pay each service directly. Otto never holds your funds.
How it works
Every query returns two clearly-labeled candidate pools — never blended into one anonymous ranked list:
Every candidate row carries blunt
source and verification labels so you always know where a recommendation came from.
quality_score now reflects live-status + on-chain (x402scan) volume where measured — candidates are ranked by liveness and real on-chain usage, never fabricated ratings. It stays null for a candidate until it has been probed/measured, and uptime_pct is only populated where directly observed. Otto never fabricates quality signals.Endpoints
POST /meta-intelligence — Meta Intelligence
The core product. Returns top Otto-verified endpoints plus live CDP Bazaar candidates for your ask.
POST /meta remains as a back-compat alias of /meta-intelligence.
Response
pay_url using any x402-compatible wallet or agent — exactly as you would call any other Otto endpoint.
GET /service-detail — Service detail lookup (free)
Look up the full Otto catalog record for any one x402 path: request schema, cost, auth, usage patterns, and a settlement note. Free — never charged.
Query parameter: path (required) — the catalog path, e.g. ?path=/token-security.
ServiceMap object (fields below) or a 404 with you_were_not_charged: true for an unknown path.
The
call_card on each otto_verified row in /meta-intelligence is a compact subset of this: method, allowed_methods, required, price_usd, currency, and a service_detail_url pointing here. Use /service-detail for the full schema.GET /receipts/v1/{rail}/{chainId}/{contract}/{jobId} — ACP receipt lookup (free)
Reconstruct the on-chain proof metadata for an Otto ACP job, straight from Base. Read-only, free — never charged, and it never returns raw job content — only the derived proof: the job locator, and (for ACP v2) the deliverable commitment where one exists on chain.
Path parameters
Optional query:
submitTx — the hash of the ACP v2 submit() transaction. The deliverable hash is committed on chain only in that transaction’s calldata (the getJob view does not expose it), so pass submitTx and the endpoint decodes the commitment in a single bounded call. Omit it and the endpoint returns the hash as null plus the exact event signature and topics so you can read it yourself — it never scans an unbounded log range, and never reports a hash it did not read.
- ACP v2 commits
keccak256of the deliverable on chain insubmit().railCommitsArtifactHashistrue; supplysubmitTxandchainVerifiablebecomestruewith the realevidenceHash. - ACP v1 puts no copy of the deliverable, and no hash of it, on chain — delivery is off-chain with only a URL-pointer memo. So
railCommitsArtifactHashandchainVerifiableare alwaysfalse, andevidenceHashis alwaysnull. What the chain does prove — the job’s existence, parties, and phase — is returned inlocator. An L6 receipt on this rail is an Otto attestation, not a chain commitment, and this endpoint will not pretend otherwise.
x402 receipts need no lookup. The signed
otto-content-receipt is delivered in-band, in the PAYMENT-RESPONSE header of the paid call itself. Calling this endpoint with rail=x402 returns a 400 pointing you back to that header.GET /stats — Registry counts
Returns the verified + Bazaar registry counts and the current arm state (which pillars are enabled).
The counts below are illustrative — the live values are whatever GET /stats returns at call time.
POST /full-auto — Full Auto (live)
The hands-off pillar. The Router picks the best-matched service and pays it on your behalf at-cost plus a $0.001 router fee, using an upto cap — no prepay, no standing balance, per-call pass-through — then returns the data directly. Live and armed.
price_cap_usd is a hard upto ceiling on the total spend for the call. Every Full Auto charge is backed by the money-back guarantee below.
POST /feedback — Feedback & Refunds (live)
The money-back guarantee. Paid a recommended Otto service (or a Full Auto charge) you didn’t like? Send feedback with a ≥50-word reason and Otto refunds the service fee + the Meta/router fee (or the whole Full Auto charge). An approved refund returns only to the original payer and never more than you actually paid Otto, capped at $0.01 per transaction, up to 10× per wallet per day.
The $10/day figure is a global system budget across all wallets — not your per-user limit. Scope (honest): the guarantee covers Otto’s own recommended services + Full Auto; it does not cover third-party CDP Bazaar picks (there is no receipt to verify those).
POST /report-outcome and POST /report-pattern — Receipt-gated outcome loop (free)
After a Full Auto call settles, the payer can report the outcome back to Otto. This is a data-only, zero-payout loop — no refund is issued here (use /feedback for refunds). Free — never charged.
Both endpoints require EIP-712 payer proof: the signature must be from the wallet that paid for the rated Full Auto call.
Request body
Response
v1 scope: only Full Auto calls (
/full-auto / /auto) are reportable — /meta-intelligence calls are excluded (no reconcilable ground truth). Report each call_id once; a duplicate returns 409 already_reported. The endpoint is rate-limited per IP.POST /mcp — First-party MCP server (metered)
A JSON-RPC 2.0 endpoint that exposes two Otto tools over MCP: otto_meta_intelligence and otto_feedback. Both tools proxy to the same metered HTTP routes — there is no free tier; omit x_payment on the first call to receive the 402 challenge, then retry with a signed payment.
Tools
Each tool accepts the same fields as its HTTP counterpart plus an
x_payment string (the Base64 X-Payment header value for the x402 challenge). otto_full_auto is not included in v1.
MCP endpoint URL: https://x402.ottoai.services/mcp
Discovery
- Landing page — interactive endpoint explorer
- LLM docs — machine-readable catalog (includes the Router)
- Discovery doc — x402scan-compatible
