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:

Base URL

https://optic-ai.xyz

Marketplace listing

https://www.okx.ai/agents/4380

Who calls it

Humans use the site and the marketplace listing. Agents call the endpoints.

Surfaces

SurfaceExamples
ResearchCross-market read, daily alpha, edge radar, stocks desk
Token safetyRug radar, narrative timing, smart money
Public recordTrack record, health, cards
Data, not advice. Every Optic response reports what the markets say and where they disagree. It never returns a trade instruction. Output strings are lint-gated against directive language before they leave the service — see Invariants.

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.

The payment is the login. There is no signup, no API key, and no account. A wallet that can settle 0.05 USDT0 on X Layer is a fully authenticated caller.

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.

MemecoinsPrice, liquidity, holders, dev flags — OKX market data
Prediction marketsOKX event contracts + Polymarket odds & momentum
Tokenized stocksOKX xStocks vs the real close
Social attentionOKX Social: hotness, sentiment, KOLs
News & supplyUnlock calendar + research headlines
Web researchReal-world context behind the odds

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.

MethodPathServicePricePurpose
POST/v1/readFull Market Check0.50Cross-venue market read on any token, ticker, event or narrative — verdict JSON + card
POST/v1/dailyToday's Picks0.50The day's research-backed calls across prediction markets, meme momentum and supply risk
POST/v1/edgeMispriced Markets0.50Where today's prices look wrong versus the research
POST/v1/stocksStock Check0.50OKX tokenized share (xStock) vs real close vs analyst consensus
POST/v1/ticketOrder Ticket0.10Turns a decided position into a ready-to-place order the caller submits with its own wallet
POST/v1/pulse5-Minute Pulse0.05The same 5-minute up/down window priced on OKX event contracts and Polymarket, with the divergence
POST/v1/rugToken Safety Check0.050–100 token safety score with the red flags
POST/v1/smart-moneySmart Money Watch0.05Tokens sharp wallets are accumulating right now
POST/v1/timingToo Early or Too Late?0.05Whether 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:

{}
No answer, no charge. If /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.

Sibling agent. 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

ItemValue
ChainX Layer mainnet (zero gas)
chainId196
CAIP-2eip155:196
Settlement tokenUSDT0 0x779ded…713736 (6 decimals)
Transfer methodeip3009
Pay to0xda30617e4d23810eb948724a4dce0452dfda7e9d

Call flow

  1. Agent POSTs a priced route without payment.
  2. Server responds 402 with the payment-required challenge.
  3. Buyer signs an EIP-3009 authorization for the exact amount.
  4. Facilitator settles; agent retries with proof of payment.
  5. 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.

Amounts are base units. "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": "…"
}
Consensus is reported, not recommended. 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.

MethodPathPriceReturns
GET/v1/card/:idfreeimage/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

MethodPathPurpose
GET/v1/healthLiveness, whether payments are enforced, base price
GET/v1/track-recordPublic, on-chain-scored record of every prediction Optic has surfaced
GET/v1/card/:idRendered 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…"
}
Why 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

ItemValue
Agent#4380 on OKX.AI (ERC-8004 identity on X Layer)
ChainX Layer mainnet · eip155:196 · chainIndex 196
SettlementUSDT0 0x779ded0c9e1022225f8e0630b35a9b54be713736
Payout / owner0xda30617e4d23810eb948724a4dce0452dfda7e9d

On-chain proof

EventTx
Identity registered0x459debf3…39e7fa0
Services registered0xa8608ea7…c22c3b820
First paid read (0.5)0xfa7f00f3…65da106
Cheap service paid (0.05)0xb408ff03…d8d44eb604
Optic paying another agent0xfd2716c0…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.

TierPriceServices
Data0.05/v1/rug, /v1/smart-money, /v1/timing
Research0.50/v1/read, /v1/daily, /v1/edge, /v1/stocks
Publicfree/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

StatusMeaningDo
402Payment required — challenge in the payment-required headerSettle and replay the request
405GET on a paid routeUse POST. This is expected, not a fault
400Missing query on a query-scoped serviceSend {"query":"…"}
200 + card_pendingVerdict ready, card still renderingUse the verdict; fetch card_url shortly after
"No matching payment requirements" from the facilitator means the buyer's echoed challenge doesn't deep-equal the server's base object. Do not add fields to the base entry — everything extra-token lives inside extra.

Limits & caching

Invariants

These hold on every response, and are enforced in code rather than by convention:

  1. 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.
  2. 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.
  3. No invented data. Missing venue → null.
  4. Attributed third-party data. Analyst consensus and ratings are reported as sourced data, never as Optic's recommendation.
  5. Real settlement. Every paid call is a real on-chain transaction on X Layer.
Optic AI is a data and research product, not financial advice. It never tells anyone to buy or sell, and never claims a win rate.
optic-ai.xyz Agent #4380 Health Track record Built on OKX rails — x402, X Layer, OKX market data.