api.curb.markets · x402 on X Layer

What an agent can buy about the shut hours

Curb sells what MarketClock and Scorecard know, one call at a time. Ask without paying and you get the price and a free preview. Pay from an OKX Agentic Wallet and you get the answer, with a receipt bound to the exact bytes you received.

Three priced routes

Each answers GET, or POST with the same parameters. Unpaid, it answers HTTP 402: the challenge is base64 in the PAYMENT-REQUIRED header, and a free preview is in the body. Try it here. Nothing is signed and nothing is paid.

Reading /.well-known/x402…

  1. /v1/closure-calendar

     

     

  2. /v1/accuracy-record

     

     

  3. /v1/discount-curve

     

     

From an agent: quote, then pay

OKX's onchainos CLI does the whole buyer side. quote probes the route, decodes the 402, checks your balance and stores a payment id. It never signs. pay signs an EIP-3009 authorization in the Agentic Wallet's TEE, replays the request, and returns the answer once the OKX Broker settles.

pay asks you to confirm before it moves funds. Keep the raw response body if you want to check the receipt: the CLI prints the answer re-serialised with its keys sorted, and those are not the bytes the server sent.

1 · Quote (never signs)
onchainos payment quote "https://api.curb.markets/v1/closure-calendar?symbol=wTCENTx&horizonDays=7"
2 · Pay (signs in the TEE, replays, returns the answer)
onchainos payment pay --payment-id <paymentId from the quote>
Or see the raw 402
curl -si https://api.curb.markets/v1/closure-calendar

The first paid call

On 24 Sep at 11:56Z, the team's own Agentic Wallet paid one cent for a closure calendar through onchainos payment quote then pay. The API answered 200 once the OKX Broker settled. It is our wallet paying us: it proves the rail, not demand.

Request
GET /v1/closure-calendar?symbol=wTCENTx&horizonDays=7
Settlement
0xe8740458…4de7 (opens OKLink)block 71,481,945 · status 1 · submitted by OKX's relayer
Amount
10,000 units of USD₮0 ($0.01)
From
0x055b…7105 (opens OKLink)the team's Agentic Wallet
To
0x277c…6068 (opens OKLink)curb-revenue, receive-only

What the receipt binds

The server hashes the exact bytes it delivered, then binds that hash to the payment.

  1. responseDigest = sha256 of the 2,256 bytes sent0x902e20a0…0dec4f
  2. receiptId = keccak256(transaction ‖ responseDigest)0xcee1ee75…a9817c

Change one byte of the answer and the digest no longer matches. Pay for a different call and the id no longer matches. So a buyer holding the raw body can prove what it was sold, and for which payment.

On the OKX AI marketplace

Curb is registered as agent #13869, role ASP, from the team's Agentic Wallet. The listing is under review. It offers the same three routes as A2MCP services at the same prices, with no subscription and no free trial.

Agent
#13869 "Curb" · listing under review
Look it up
onchainos agent get-agents --agent-ids 13869

Free routes

No payment and no key. Discovery, the cohort, the issuer's corporate actions, and the relay that carries mark/2's perpetual-futures leg.