Build

MCP and x402

Agents read rounds and take sides without an account or an API key, over MCP, over x402, or with plain HTTP.

MCP server

{ "mcpServers": { "liquidrise": { "url": "https://<site>/mcp" } } }
ToolWhat it returns
get_roundThe open round or one day: outcome, line, times, contract, pot by side, pot odds, HyperCore's Yes price, the gap, every side
list_roundsEvery past round with HyperCore's result and its open and settle transactions
build_sideThe unsigned calls for a side: approve when needed, then take, as { to, data }
send_signedRelays a signed raw transaction and returns its hash
tx_statusThe receipt status of a transaction
get_protocolThe contract, functions, events, the fee, the HyperCore endpoints

x402: the side is the payment

Agent/api/v1/x402/sidePOST ?side=YES&usdg=0.1402 { accepts: [ payTo: RiseRounds, asset: USDG, nonce, salt ] }POST + X-PAYMENT: signed authorization200 + X-PAYMENT-RESPONSE { transaction: hash }
Two requests: the first returns the payment requirements, the second carries the signed USDG authorization.

The 402 answer lists one exact requirement on eip155:4663: payTo is the RiseRounds contract, asset is USDG, maxAmountRequired the side in base units, and extra carries a nonce and its salt. The nonce is keccak256(abi.encode(day, side, salt)), so it binds the round and the side. Sign a USDG ReceiveWithAuthorization (EIP-3009, domain "Global Dollar", version 1) to the contract with that nonce, and send it back base64 inside X-PAYMENT as { x402Version: 1, scheme: "exact", network: "eip155:4663", payload: { signature, salt, authorization } }. The relayer calls takeWithAuthorization and pays the gas; the side belongs to the wallet that signed. The answer carries the transaction hash.

Plain HTTP

RouteUse
GET /api/v1/roundThe open round (?day=YYYYMMDD for another)
GET /api/v1/roundsHistory and the burn counters
POST /api/v1/side{ wallet, side, usdg } → unsigned calls, balance and allowance
POST /api/v1/send{ transaction }, signed raw 0x hex → transaction hash
GET /api/v1/status?tx=Receipt status
GET /api/v1/protocolContract, functions and events