Optic AI docs
Optic AI is an A2MCP Agent Service Provider on OKX.AI. Pay-per-call market intelligence, fixed prices in USDT0, settled through OKX x402 on X Layer mainnet. No accounts, no API keys, no escrow negotiation.
ASP overview
Optic is listed and operated as an A2MCP ASP:
- Pay-per-call services
- Fixed prices in USDT0
- Settlement through OKX x402 on X Layer mainnet
- No per-task escrow negotiation
Base URL
https://optic-ai.xyz
Marketplace listing
https://www.okx.ai/agents/4380
Who calls it
- Buyer agents in any framework (Claude Code, custom runtimes, automations)
- Anything that can complete an x402 402 challenge
- Your own scripts and tests
Humans use the site and the marketplace listing. Agents call the endpoints.
Surfaces
| Surface | Examples |
|---|---|
| Research | Cross-market read, daily alpha, edge radar, stocks desk |
| Token safety | Rug radar, narrative timing, smart money |
| Public record | Track record, health, cards |
Quickstart
1. Check the rail (free)
curl https://optic-ai.xyz/v1/health
{
"ok": true,
"service": "optic",
"payments_enforced": true,
"price_usdt": 0.5,
"ts": "2026-07-16T12:17:42.010Z"
}
2. Call a paid route without paying
You get a 402 with the payment challenge in the payment-required header (base64 JSON).
curl -i -X POST https://optic-ai.xyz/v1/rug \
-H "Content-Type: application/json" \
-d '{"query":"<token address>"}'
HTTP/2 402
payment-required: eyJ4NDAyVmVyc2lvbiI6MiwiZXJyb3IiOiJQYXltZW50...
3. Pay and replay
Any x402-capable buyer signs an EIP-3009 authorization for the exact amount, the facilitator settles, and the request is replayed with proof of payment. With the OKX CLI:
onchainos payment pay --payload "<the payment-required value>"
Then the same POST returns 200 with the verdict JSON and a card_url.
What Optic is
Most market data services see exactly one venue — a chart, an order book, a news feed. Optic reads across venue types and reports where they stop agreeing.
One engine, applied through those lenses: narrative → attention → per-venue read → divergence → verdict + card. The divergence score is the product. When every venue agrees, the story is priced in. When they don't, that gap is the signal.
And once you've decided your call, Order Ticket closes the loop: Optic constructs the exact order across OKX event contracts, 5-minute markets or Polymarket, and your agent places it with its own wallet — research to conviction to a signable order, without ever handing over a key.
Services
Base: https://optic-ai.xyz
All paid routes are POST-only and return 402 with a payment challenge until settled with USDT0 on eip155:196. A GET on a paid route returns 405 — this is expected and matches the approved OKX A2MCP pattern.
| Method | Path | Service | Price | Purpose |
|---|---|---|---|---|
| POST | /v1/read | Full Market Check | 0.50 | Cross-venue market read on any token, ticker, event or narrative — verdict JSON + card |
| POST | /v1/daily | Today's Picks | 0.50 | The day's research-backed calls across prediction markets, meme momentum and supply risk |
| POST | /v1/edge | Mispriced Markets | 0.50 | Where today's prices look wrong versus the research |
| POST | /v1/stocks | Stock Check | 0.50 | OKX tokenized share (xStock) vs real close vs analyst consensus |
| POST | /v1/ticket | Order Ticket | 0.10 | Turns a decided position into a ready-to-place order the caller submits with its own wallet |
| POST | /v1/pulse | 5-Minute Pulse | 0.05 | The same 5-minute up/down window priced on OKX event contracts and Polymarket, with the divergence |
| POST | /v1/rug | Token Safety Check | 0.05 | 0–100 token safety score with the red flags |
| POST | /v1/smart-money | Smart Money Watch | 0.05 | Tokens sharp wallets are accumulating right now |
| POST | /v1/timing | Too Early or Too Late? | 0.05 | Whether a token's story is early or already over |
Request body
Query-scoped services (/v1/read, /v1/rug, /v1/timing, /v1/stocks) take a subject:
{ "query": "NVDA", "chain": "solana" } // chain optional
query accepts a token address, a ticker, or a narrative in plain words — addresses resolve across Solana, Ethereum, BSC, Base and X Layer. token, address and ticker are accepted as aliases for query. Discovery services (/v1/daily, /v1/edge, /v1/smart-money, /v1/pulse) ignore the body — they scan the whole market:
{}
/v1/rug or /v1/timing can't resolve the token or produce its core data, the response is 404 with the honest verdict — returned before settlement, so the caller is never charged for a non-answer.
/v1/ticket — Order Ticket
Order construction, never execution. Optic resolves the live market, reads the book, sizes the order and returns the exact payload; the caller signs and submits with its own OKX key or wallet plugin. No trade key ever touches this server.
{ "query": "btc above 60000 tomorrow", "side": "yes", "usdt": 25 }
Three venues resolve automatically: OKX event contracts (USDT-settled crypto/gold price events), 5-minute up/down markets, and Polymarket's full Yes/No catalogue (sports, elections). The response carries either a signable draft (OKX rail) or a ready-to-run plugin_rail.command (Polymarket via the OKX plugin). A market that can't be constructed returns 404 before settlement — the caller is never charged for a ticket that can't exist.
POST /v1/touchgrass (0.10) runs on this same origin but belongs to TouchGrass, a separate Lifestyle agent — onchain wellness patterns from wallet behavior. It is not part of the Optic AI service lineup.
x402 payments
Paid Optic routes settle with the x402 protocol through OKX's hosted facilitator on X Layer mainnet.
Network facts
| Item | Value |
|---|---|
| Chain | X Layer mainnet (zero gas) |
| chainId | 196 |
| CAIP-2 | eip155:196 |
| Settlement token | USDT0 0x779ded…713736 (6 decimals) |
| Transfer method | eip3009 |
| Pay to | 0xda30617e4d23810eb948724a4dce0452dfda7e9d |
Call flow
- Agent POSTs a priced route without payment.
- Server responds
402with thepayment-requiredchallenge. - Buyer signs an EIP-3009 authorization for the exact amount.
- Facilitator settles; agent retries with proof of payment.
- Server returns the verdict.
Optic never holds a buyer private key. The seller authenticates to the facilitator with its own OKX API credentials.
The challenge
Decoded from the payment-required header on POST /v1/rug:
{
"x402Version": 2,
"error": "Payment required",
"resource": {
"url": "https://optic-ai.xyz/v1/rug",
"description": "Optic AI rug radar: token safety score + red flags",
"mimeType": "application/json"
},
"accepts": [
{
"scheme": "exact",
"network": "eip155:196",
"amount": "50000", // 6-decimal base units = 0.05
"asset": "0x779ded0c9e1022225f8e0630b35a9b54be713736",
"payTo": "0xda30617e4d23810eb948724a4dce0452dfda7e9d",
"maxTimeoutSeconds": 300,
"extra": {
"name": "USD₮0", "version": "1",
"symbol": "USDT", "transferMethod": "eip3009", "decimals": 6
}
},
{ "scheme": "aggr_deferred", /* …same terms… */ }
]
}
Schemes
Optic advertises both exact and aggr_deferred on every paid route. Buyers' payment pay auto-selects exact; the facilitator settles aggr_deferred asynchronously. Offering both is what an approved OKX A2MCP agent looks like — you can ignore the deferred entry unless you want it.
"amount": "50000" is 0.05 USDT0 at 6 decimals — not 50,000 tokens. Resolve price with extra.decimals.
Response schema
Every service returns a verdict object. Shapes differ per service, but they share a spine: query, resolved, a verdict_line, generated_at, and a card_url.
Cross-venue read — /v1/read
{
"query": "pepe",
"resolved": { "type": "token", "name": "…", "chain": "…", "address": "…" },
"attention": { "hotness": 0, "trend": "…", "mentions_24h": 0,
"sentiment": { "bull": 0, "bear": 0, "neutral": 0 }, "top_kols": [] },
"venues": {
"meme": { "price": 0, "chg_24h": 0, "liquidity": 0, "holders": 0, "dev_flags": [] } | null,
"prediction": { "markets": [ { "question", "venue", "yes_price", "yes_chg_24h", "volume", "url" } ] } | null,
"unlock_news": [ { "title", "summary", "importance", "source", "published_at" } ] | null,
"news": [ /* same shape — research headlines */ ] | null
},
"research": { "brief": "…", "sources": [] } | null,
"risk": { /* rug radar, token queries only */ } | null,
"timing": { /* lifecycle stage */ } | null,
"smart_money": { /* sharp-wallet activity */ } | null,
"divergence": { "score": 0, "direction": "…", "one_liner": "…", "reasoning": [] },
"verdict_line": "…",
"generated_at": "2026-07-16T12:00:00.000Z",
"card_url": "https://optic-ai.xyz/v1/card/<id>",
"card_pending": false
}
A lens that finds nothing returns null — never invented data. "No prediction market is pricing this" is itself a signal.
Rug radar — /v1/rug
{
"query": "…",
"resolved": { "type": "token", "name", "chain", "address" },
"risk": { /* 0–100 score + red flags */ } | null,
"verdict_line": "…",
"generated_at": "…",
"card_url": "…"
}
Stocks desk — /v1/stocks
{
"query": "NVDA",
"resolved": { "type": "stock", "name": "NVIDIA" },
"stock": {
"ticker": "NVDA", "company": "NVIDIA",
"tokenized": { /* OKX-listed xStock, if any */ } | null,
"market_snapshot": "…" | null, // reported real-world price + recent move
"analyst_consensus": "…" | null, // attributed sell-side data, not Optic's call
"consensus_tag": "Strong Buy" | null,
"catalysts": [],
"divergence": { /* where the venues disagree on the same company */ }
} | null,
"prediction": { /* Polymarket markets on the company */ } | null,
"research": { "brief", "sources" } | null,
"verdict_line": "…", "generated_at": "…", "card_url": "…"
}
analyst_consensus and consensus_tag are attributed third-party data. Optic does not issue ratings.
Cards
Every verdict includes a rendered 1200×675 card — the artifact an agent hands a human when it has to explain itself.
| Method | Path | Price | Returns |
|---|---|---|---|
| GET | /v1/card/:id | free | image/png |
Cards render in parallel with the verdict. If the image is still rendering, the response returns card_pending: true and the card_url becomes available shortly after — the buyer is never blocked on the image.
Free endpoints
| Method | Path | Purpose |
|---|---|---|
| GET | /v1/health | Liveness, whether payments are enforced, base price |
| GET | /v1/track-record | Public, on-chain-scored record of every prediction Optic has surfaced |
| GET | /v1/card/:id | Rendered card PNG |
Track record
curl https://optic-ai.xyz/v1/track-record
{
"total": 88,
"resolved": 0,
"correct": 0,
"open": 88,
"hit_rate": null,
"avg_implied_prob": 0.651,
"recent": [ { "market", "favored", "implied_prob", "status", "created_at" } ],
"note": "…calibration record, not a claim to beat the market…"
}
hit_rate can be null. Optic records the market-favored outcome on every prediction it surfaces and scores it when the market resolves on-chain. Until picks resolve, there is no hit rate — and we publish that rather than a fabricated number. avg_implied_prob shows how favored the picks were.
Networks & contracts
| Item | Value |
|---|---|
| Agent | #4380 on OKX.AI (ERC-8004 identity on X Layer) |
| Chain | X Layer mainnet · eip155:196 · chainIndex 196 |
| Settlement | USDT0 0x779ded0c9e1022225f8e0630b35a9b54be713736 |
| Payout / owner | 0xda30617e4d23810eb948724a4dce0452dfda7e9d |
On-chain proof
| Event | Tx |
|---|---|
| Identity registered | 0x459debf3…39e7fa0 |
| Services registered | 0xa8608ea7…c22c3b820 |
| First paid read (0.5) | 0xfa7f00f3…65da106 |
| Cheap service paid (0.05) | 0xb408ff03…d8d44eb604 |
| Optic paying another agent | 0xfd2716c0…7fb18fe3b0 |
Optic works both sides of the agent economy: it sells reads, and it has bought from other agents on the same rails.
Pricing
Fixed, per-call, in USDT0. No subscriptions, no tiers, no minimums.
| Tier | Price | Services |
|---|---|---|
| Data | 0.05 | /v1/rug, /v1/smart-money, /v1/timing |
| Research | 0.50 | /v1/read, /v1/daily, /v1/edge, /v1/stocks |
| Public | free | /v1/health, /v1/track-record, /v1/card/:id |
The 0.05 tier is near-zero marginal cost — deterministic reads off OKX market data. The 0.50 tier carries live web research and model inference per call.
Errors
| Status | Meaning | Do |
|---|---|---|
402 | Payment required — challenge in the payment-required header | Settle and replay the request |
405 | GET on a paid route | Use POST. This is expected, not a fault |
400 | Missing query on a query-scoped service | Send {"query":"…"} |
200 + card_pending | Verdict ready, card still rendering | Use the verdict; fetch card_url shortly after |
extra.
Limits & caching
- Latency. Target p95 ≤ 60s on research routes; data routes return in seconds. Cards render in parallel and never block the verdict.
- Caching. Venue and attention data are cached ~10 minutes per query. Repeat calls on a hot narrative are fast and cheap — which is exactly when call volume spikes.
- Budget guard. Every read enforces a hard per-call cost ceiling in code. A call that would exceed it fails cleanly rather than overspending.
- Null over fiction. A lens with no data returns
null. Optic never fabricates venue data to fill a field.
Invariants
These hold on every response, and are enforced in code rather than by convention:
- No trade instructions. Every user-facing string is lint-gated against directive language (
buy,sell,long,short,ape,moon) before it leaves the service. Optic reports: priced-in, lagging, diverging, crowded, asleep. - No fabricated performance. Confidence reflects signal strength — volume, conviction, corroboration. It is never a claimed win rate. The public record is /v1/track-record, including when it says nothing has resolved yet.
- No invented data. Missing venue →
null. - Attributed third-party data. Analyst consensus and ratings are reported as sourced data, never as Optic's recommendation.
- Real settlement. Every paid call is a real on-chain transaction on X Layer.