TradeAutonom V2 OMS Bot-client endpoints (V1-compatible): GET /ws WebSocket: {action:'subscribe',exchange,symbol} GET /book/{exch}/{sym} current orderbook snapshot GET /tracked cross-exchange token mapping GET /tracked/legs same, annotated with per-leg tradeability GET /status per-feed health and freshness GET /health aggregate health Auto-discovery: GET /discovery last-run stats GET /discovery/run force a fresh run Cross-venue spread matrix: GET /spread/{token} every venue pair, both directions, profitable or not GET /spread/BTC?clip_notional_usd=5000&max_age_ms=60000 Tradeability (book-liveness guard): GET /tradeability full map (exchange:symbol → result) GET /tradeability/{exch}/{sym} single (exchange,symbol) result GET /tradeability/run force a fresh check (also runs on cron) Arb scanner (DNA-bot): WS /ws/arb {action:'watch'|'unwatch'|'subscribe_opportunities'|'unsubscribe_opportunities'} GET /arb/opportunities current cross-exchange opportunities GET /arb/opportunities?token=BTC&min_profit_bps=5 GET /arb/config scanner config (fees, thresholds) GET /arb/health scanner status Entry helpers (Phase E): GET /meta static per-symbol meta (all) GET /meta/{exch} per-exchange static meta GET /meta/{exch}/{sym} single symbol: tick, step, leverage, fee GET /quote/{exch}/{sym}?side=buy&qty=0.05 GET /quote/{exch}/{sym}?side=buy¬ional_usd=5000&buffer_ticks=2 GET /quote/cross?token=BTC&buy_exchange=grvt&sell_exchange=extended¬ional_usd=5000 POST /dna/subscribe?token=BTC&buy=extended&sell=nado DELETE /dna/subscribe?token=BTC&buy=extended&sell=nado GET /dna/bb-state?token=BTC&buy=extended&sell=nado&timeframe=m1&period=240&std=1.5 GET /dna/backfill-status WS /ws + {action:'quote'|'quote_cross'} for live quotes Token-spread history (Extended<->Nado, D1-backed): GET /token-spreads/bb?token=BTC&window=240&k=2 GET /token-spreads/bb-dir?token=BTC&side=long_ext|long_nado GET /token-spreads/run force a harvest (same as the 5-min cron) GET /token-spreads/backfill?token=BTC&tier=m1|h1&days=90 Pair-signal feed (central mean-reversion z-score, Hyperliquid perps): GET /pair/signal?pair=btc-eth-1h z/mean/sd/s + half-life/corr + gate & time flags GET /pair/signals same snapshot for all configured pairs GET /pair/harvest-status per-pair harvest freshness + coverage POST /pair/harvest force a harvest run (same work as the 5-min cron) Pairs: btc-eth-1h, btc-eth-15m, sol-eth-1h Pair Spread (Stufe 1, monitor only): GET /pair-spread/vwap?token=QQQ VWAP spreads 1k/2k/5k USD, friction GET /pair-spread/index-mark?token=QQQ&hours=24[&session=regular][&rows=1] GET /pair-spread/funding?token=QQQ&hours=24 GET /pair-spread/session[?ts=] GET /pair-spread/live live state per pair GET /pair-spread/episodes?hours=24[&pair=][&session=][&threshold=][&clip=] GET /pair-spread/trips?hours=168[&status=open|closed][&pair=][&session=][&threshold=][&clip=] GET /pair-spread/edge?token=QQQ&a=lighter&b=risex&hours=6[&step=300] Per-exchange debugging: GET /ext/health ExtendedOms health GET /grvt/health GrvtOms health GET /nado/health NadoOms health GET /variational/health VariationalOms health GET /risex/health RisexOms health GET /lighter/health LighterOms health Supported exchanges: extended, grvt, nado, variational, risex, lighter Docs: docs/v2-oms-cloudflare-native.md