Trade Research Pro
Phase 10A — pro-tier 7-agent trade research panel ($0.75 via x402).
Identical handler logic to /trade_research; the price difference
reflects the higher cost ceiling for the pro debate path. The body’s
tier field is forced to "pro" here so callers can’t pay the
pro price for a basic run.
Body
Phase 8b — request shape for POST /trade_research.
Free in v1 (no x402 gate). The 7-agent panel reads the trading-oracle
corpus filtered by (vertical, protocol) and returns the verdict
shape. protocol is required and lower-cased downstream.
Response
Successful Response
Wire response for POST /trade_research.
Mirrors :class:gecko_core.orchestration.trade_panel.TradePanelVerdict
field-for-field. The turns list carries plain dicts so we don't
couple this surface to the core's pydantic model when consumers
deserialize off the wire.
Issue #14: backtest is the pro-tier-only field that justifies the
3x price delta over basic. Always None on the basic envelope (the
handler does not enable the backtest path); always a dict on pro
(either real PnL stats, or unbacktestable=True + reason when
the price source has no history). Surfacing the unbacktestable shape
is intentional — the buyer paid for evidence either way.
act, pass, defer 0 <= x <= 1x >= 0S35-#99 — 'the data'. Protocol/market-data chunks a panel turn referenced via its inline [N] marker (provider_kind in protocol_native / market_data / paysh_live / bazaar_live). Each entry: {id, source, url, chunk_id, provider_kind, freshness_tier, snippet}. Breaking change: replaces the old single citations[].
S35-#99 — 'the lens'. Investor-canon chunks (provider_kind canon_*) the panel reasoned over. Same item shape as evidence_citations. Not relevance-trimmed: canon is cross-cutting.
Pro-tier only. Realized-history replay of the Strategist intent (pnl_pct, drawdown_pct, hit_rate, source) or {'unbacktestable': True, 'reason': '...'} when the price corpus can't satisfy. Always None on the basic envelope.
Solana on-chain x402 settlement signature; null in stub mode.
Solscan deep link for tx_signature; null in stub mode.
Whether real money moved on chain. Canonical literal lives in gecko_core.types.SettlementMode (Pattern A).
stub, live