This document details the feature support and compliance status for each exchange. PMXT enforces a strict compliance standard to ensure protocol consistency across all implementations.
| Category | Function | Polymarket | Kalshi | Limitless | Probable | Baozi | Myriad | Opinion | Metaculus |
|---|---|---|---|---|---|---|---|---|---|
| Market Data | fetchMarkets |
Y | Y | Y | Y | Y | Y | Y | Y |
fetchEvents |
Y | Y | Y | Y | Y | Y | Y | Y | |
fetchMarket |
Y | Y | Y | Y | Y | Y | Y | Y | |
fetchEvent |
Y | Y | Y | Y | Y | Y | Y | Y | |
| Public Data | fetchOHLCV |
Y | Y | Y | Y | Y | Y | Y | - |
fetchOrderBook |
Y | Y | Y | Y | Y | Y | Y | - | |
fetchTrades |
Y | Y | Y | Y | Y | Y | - | - | |
| Private Data | fetchBalance |
Y | Y | Y | Y | Y | Y | - | - |
fetchPositions |
Y | Y | Y | Y | Y | Y | Y | - | |
fetchMyTrades |
Y | Y | Y | Y | - | Y | Y | - | |
| Trading | createOrder |
Y | Y | Y | Y | Y | Y | Y | Y |
cancelOrder |
Y | Y | Y | Y | Y | - | Y | Y | |
fetchOrder |
Y | Y | Y | Y | Y | - | Y | - | |
fetchOpenOrders |
Y | Y | Y | Y | Y | Y | Y | - | |
fetchClosedOrders |
- | Y | Y | - | - | - | Y | - | |
fetchAllOrders |
- | Y | Y | - | - | - | Y | - | |
| Calculations | getExecutionPrice |
Y | Y | Y | Y | Y | Y | Y | - |
getExecutionPriceDetailed |
Y | Y | Y | Y | Y | Y | Y | - | |
| Real-time | watchOrderBook |
Y | Y | Y | Y | Y | Y | Y | - |
watchTrades |
Y | Y | Y | - | - | Y | Y | - |
- Y - Supported
- - - Not supported
- E - Emulated (backed by a non-native mechanism)
NOTE: the grid above is regenerated by
generate:compliancefromcore/src/exchanges/*/index.ts. The Hunch column below is documented inline until the next regeneration picks it up.
Hunch is a parimutuel prediction market on Base (USDC). Markets are
pool-based — there is no CLOB and no AMM curve; prices are implied odds.
Settlement is x402 / EIP-3009 transferWithAuthorization (the bettor's
wallet signs a USDC authorization; the relayer sponsors gas). Identity is
keyless — the wallet IS the account, so reads need no API key.
| Category | Function | Hunch | Notes |
|---|---|---|---|
| Market Data | fetchMarkets |
Y | GET /api/agent/v1/markets |
fetchEvents |
Y | No event tier — each market wrapped as a single-market event | |
fetchMarket |
Y | GET /api/agent/v1/markets/{id} |
|
fetchEvent |
Y | Synthetic single-market event | |
| Public Data | fetchOHLCV |
Y | From research oddsHistory (flat candles) |
fetchOrderBook |
E | Emulated: single level at the implied price, pool as depth | |
fetchTrades |
Y | research oddsHistory as the public tape |
|
| Private Data | fetchBalance |
Y | GET .../wallet/{address}/readiness → USDC balance |
fetchPositions |
Y | GET /api/agent/v1/positions?wallet= |
|
fetchMyTrades |
- | Not exposed (use fetchPositions / proof) |
|
| Trading | createOrder |
Y | Self-hosted Base x402 money path; market orders only |
cancelOrder |
- | Parimutuel pool — bets cannot be cancelled | |
fetchOrder |
- | Parimutuel — no resting orders | |
fetchOpenOrders |
Y | Always [] (no resting orders) |
|
| Real-time | watchOrderBook |
E | Poll-based emulation |
watchTrades |
E | Poll-based emulation |
createOrder accepts only side: 'buy' and type: 'market'; outcomeId
encodes the Hunch side as "{marketId}:{side}" where side is yes/no for
binary markets or the parimutuel bucket key for N-way ladder / date-window
markets. Bets above the $10 "simple tier" first fetch a price-locked quote.
- Failure over Warning: Tests must fail if no relevant data (markets, events, candles) is found. This ensures that we catch API breakages or unexpected empty responses.
requires a dotenv in the root dir with
POLYMARKET_PRIVATE_KEY=0x...
# Kalshi
KALSHI_API_KEY=...
KALSHI_PRIVATE_KEY=... (RSA Private Key)
# Limitless
LIMITLESS_PRIVATE_KEY=0x...
# Myriad
MYRIAD_API_KEY=...
MYRIAD_WALLET_ADDRESS=0x...
# Metaculus (required for API access — unauthenticated requests return 403)
METACULUS_API_TOKEN=...
# Hunch (reads are keyless; privateKey signs the x402 USDC payment on Base)
HUNCH_PRIVATE_KEY=0x...
HUNCH_WALLET_ADDRESS=0x... # optional; derived from HUNCH_PRIVATE_KEY when absent