http://localhost:8081 (Fastify on SERVER_PORT). CORS: CORS_ORIGIN=* by default; tighten in production.
Health
{ ok: true, ... }.
Oracles
fillCount so the UI can rank parallel oracle ladders by liquidity.
Quotes
QUOTE_CACHE_TTL_S, default 300s). Miss → quote-worker schedules a fresh poll.
Positions
/v1/users/:address/redemptions returns one row per redemption (predict + binary settlement::Redeemed), with realized P&L computed at read time as payout − qty × avg_fill_cost per (oracle, strike, side). Binary rows have null basis (pair mints are cost-neutral; basis lives in future V3 fills).
Agents
agents table (populated by darkpool::agent::AgentRegistered events). Note: paused field is stale. See agent module Warning.
Vaults
Binary markets
.binary-markets/registry.json from disk + merges live Settlement state (finalOutcome, expiryMs) with a 4s LRU. New markets show up immediately, no migration needed.
Optimistic Oracle
Trades fast-path
fills table so the UI can refresh activity without waiting for the indexer poll.
Self-sponsorship
WebSocket
See WebSocket API.Files
Every route lives underpackages/server/src/routes/:
packages/server/src/entrypoints/api.ts.