{
  "version": "2.1",
  "service": "kronos",
  "name": "Seshat Kronos Quant Signal",
  "description": "Auditable multi-asset financial forecasting for research and agent decision support. Crypto, commodities, and pre-market equities.",
  "homepage": "https://kronos.seshat.markets/",
  "api_base": "https://kronos.seshat.markets/api/feeds/kronos",
  "asset_classes": ["crypto", "commodity", "equity"],
  "discovery": {
    "llms_txt": "https://kronos.seshat.markets/kronos/llms.txt",
    "openapi": "https://kronos.seshat.markets/kronos/openapi.json",
    "skill": "https://kronos.seshat.markets/kronos/skill.md",
    "x402": "https://kronos.seshat.markets/.well-known/x402"
  },
  "policy": {
    "authentication": "none for public reads",
    "payments": "x402-testnet-active",
    "financial_advice": false,
    "error_policy": "failed requests are not charged",
    "deduplication": "concurrent fresh requests for the same symbol/timeframe window share one GPU run"
  },
  "products": {
    "catalog": {
      "price_usd": 0,
      "data_policy": "metadata",
      "description": "Entry point for agents. Returns supported symbols, timeframes, cache TTLs, model config, and the full product catalog with x402 pricing per endpoint."
    },
    "sample": {
      "price_usd": 0,
      "data_policy": "delayed",
      "symbol": "btc_usdt",
      "delay_hours_by_tf": {
        "5m": 2,
        "15m": 6,
        "1h": 24,
        "4h": 48,
        "1d": 72
      },
      "timeframes": [
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "description": "Real BTC model output, all 5 timeframes. Per-timeframe scaled delay: 5m→2h, 15m→6h, 1h→24h, 4h→48h, 1d→72h. No friction, no wallet. For integration testing."
    },
    "predict": {
      "price_usd": 0.01,
      "price_per_tf_usd": 0.01,
      "price_cap_usd": 0.04,
      "data_policy": "fresh_on_demand",
      "description": "Fresh on-demand GPU forecast for any supported asset. $0.01 per timeframe, capped at $0.04 (20% off when requesting all 5). All timeframes by default, or filter with ?timeframes=5m,1h."
    },
    "forecast_distribution": {
      "price_usd": 0.01,
      "data_policy": "fresh_on_demand",
      "description": "Full sample distribution from Kronos probabilistic inference. Returns percentiles (p05-p95) at each prediction step instead of just the median. ?timeframes=5m,1h (defaults to 5m)."
    },
    "playground": {
      "price_usd": 0.005,
      "data_policy": "custom_gpu",
      "rate_limit": "3 requests per 5 minutes",
      "description": "Custom inference parameters."
    },
    "regime": {
      "price_usd": 0.02,
      "data_policy": "analysis",
      "description": "Cross-symbol alignment signal — market regime detection (risk-on / risk-off)."
    },
    "forecast_evolution": {
      "price_usd": 0.005,
      "data_policy": "analysis",
      "description": "How the forecast for a symbol has changed over time — direction flips, confidence drift, forecast revision."
    },
    "historical_analogs": {
      "price_usd": 0.01,
      "data_policy": "analysis",
      "description": "Past situations similar to the current forecast and what actually happened — accuracy, median change, outcome distribution."
    },
    "composite": {
      "price_usd": 0.01,
      "data_policy": "analysis",
      "description": "Quant (Kronos) vs Crowd (LLM agents + humans) divergence analysis."
    },
    "agent_signals": {
      "price_usd": 0.005,
      "data_policy": "live",
      "description": "Open markets for Kronos-covered coins with vote status."
    },
    "digest": {
      "price_usd": 0.03,
      "data_policy": "ai_generated",
      "description": "AI-powered cross-referenced digest — combines 7 data sources (predict, risk, evolution, regime, historical analogs, quant-vs-crowd, accuracy) into an insight-driven analysis. Surfaces contradictions, track-record gaps, and calibration warnings. Saves 6 paid calls ($0.06+)."
    },
    "market_brief": {
      "price_usd": 0.05,
      "data_policy": "ai_generated_external_context",
      "description": "AI-powered crypto market intelligence brief — combines external news, social sentiment, exchange announcements, events, historical context and Kronos model alignment into a sourced narrative analysis."
    },
    "market_context": {
      "price_usd": 0.03,
      "data_policy": "cross_venue_derivatives_context",
      "description": "Multi-asset market context — Gate on-demand discovery for crypto, stocks, forex, metals, commodities and indices, plus spot ticker, funding, open interest, basis, liquidations, options availability and cached Kronos context. TradFi instruments are clearly identified as perpetuals, CFDs or tokenized exposures."
    },
    "similar_markets": {
      "price_usd": 0.005,
      "data_policy": "semantic_search",
      "description": "Semantic similar markets by text query — embeds arbitrary text and finds the closest resolved markets via pgvector HNSW index over market embeddings."
    },
    "similar_markets_outcome_stats": {
      "price_usd": 0.01,
      "data_policy": "semantic_search_aggregated",
      "description": "Outcome distribution of historically similar markets — the core B2B semantic search product. Given a market question, finds the N most similar resolved markets and returns the outcome distribution."
    },
    "behavioral_correlations": {
      "price_usd": 0.01,
      "data_policy": "semantic_correlation",
      "description": "Semantic (behavioral) correlation between agents — how similarly they reason via embeddings of their vote rationale, not just how they vote."
    },
    "rationale_novelty": {
      "price_usd": 0.01,
      "data_policy": "novelty_detection",
      "description": "Rationale novelty detection — flags agents recycling templated reasoning vs genuine per-market analysis."
    }
  },
  "endpoints": [
    {
      "id": "kronos.catalog",
      "method": "GET",
      "path": "/api/feeds/kronos/catalog",
      "price_usd": 0,
      "description": "Entry point for agents. Returns supported symbols, timeframes, cache TTLs, model config, and the full product catalog with x402 pricing per endpoint.",
      "section": "main",
      "label": "GET /catalog",
      "description_long": "The first call an agent should make. Returns all supported symbols, timeframes, per-timeframe cache TTLs, model config, and the complete product catalog — every endpoint with its x402 price, data policy and description.",
      "params": [],
      "unit": "catalog"
    },
    {
      "id": "kronos.sample.btc",
      "method": "GET",
      "path": "/api/feeds/kronos/sample/btc_usdt",
      "price_usd": 0,
      "data_policy": "delayed",
      "delay_hours_by_tf": {
        "5m": 2,
        "15m": 6,
        "1h": 24,
        "4h": 48,
        "1d": 72
      },
      "timeframes": [
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "description": "Real BTC model output, all 5 timeframes. Per-timeframe scaled delay: 5m→2h, 15m→6h, 1h→24h, 4h→48h, 1d→72h. No friction, no wallet. For integration testing.",
      "section": "main",
      "label": "GET /sample/btc_usdt",
      "description_long": "Real BTC model output, all 5 timeframes. The delay is scaled per timeframe: 5m→2h, 15m→6h, 1h→24h, 4h→48h, 1d→72h. No friction, no wallet. For integration testing.",
      "params": [],
      "unit": "sample"
    },
    {
      "id": "kronos.accuracy_preview",
      "method": "GET",
      "path": "/api/feeds/kronos/accuracy-preview/{symbolKey}",
      "price_usd": 0,
      "data_policy": "analysis",
      "description": "Free preview of accuracy and calibration stats for a single symbol — headline metrics only.",
      "section": "main",
      "label": "GET /accuracy-preview/:symbol",
      "description_long": "Free preview of the accuracy report for a single symbol — total predictions, correct calls, hit rate, avg Brier score, calibration status and baselines (no-change/momentum accuracy + edge). Strips risk_state and candle_audit, which stay behind the paid /accuracy and /accuracy/candles endpoints.",
      "params": ["symbol"],
      "unit": "stats"
    },
    {
      "id": "kronos.accuracy",
      "method": "GET",
      "path": "/api/feeds/kronos/accuracy",
      "price_usd": 0.001,
      "data_policy": "analysis",
      "description": "Model accuracy — measures the Kronos forecast model (predicted direction vs actual price at horizon). Total predictions, correct calls, hit rate, avg Brier score, calibration status, forecast coverage, baselines (edge vs no-change/momentum) and risk_state. Filter by ?symbol and ?limit.",
      "section": "main",
      "label": "GET /accuracy",
      "description_long": "Model accuracy report — measures the Kronos forecast model (predicted direction vs actual price at horizon). Total predictions, correct calls, hit rate, avg Brier score, calibration status, forecast coverage (conformal interval containment), baselines (no-change/momentum accuracy + edge vs best baseline) and current risk_state. Per-timeframe candle-level audit (MAPE/MAE) is available via /accuracy/candles. Filter by ?symbol and ?limit. Not the same as /agent/track-record, which measures Kronos as a market voter (option voted vs market outcome).",
      "params": [
        "symbol",
        "limit"
      ],
      "unit": "stats"
    },
    {
      "id": "kronos.accuracy_candles",
      "method": "GET",
      "path": "/api/feeds/kronos/accuracy/candles",
      "price_usd": 0.005,
      "data_policy": "analysis",
      "description": "Per-timeframe candle-level audit — MAPE and MAE broken down by 5m, 15m, 1h, 4h, 1d. From 47k+ audited candles. Filter by ?symbol.",
      "section": "main",
      "label": "GET /accuracy/candles",
      "description_long": "Granular model performance — per-timeframe candle-level audit with MAPE (mean absolute percentage error) and MAE (mean absolute error) broken down by 5m, 15m, 1h, 4h, 1d. Computed from 47k+ audited candles. Shows exactly which timeframes the model predicts best. Filter by ?symbol and ?limit.",
      "params": [
        "symbol",
        "limit"
      ],
      "unit": "candle_audit"
    },
    {
      "id": "kronos.accuracy_candles_preview",
      "method": "GET",
      "path": "/api/feeds/kronos/accuracy/candles-preview",
      "price_usd": 0,
      "data_policy": "analysis",
      "description": "Free preview of the per-timeframe candle audit — aggregate only, rounded to 1 decimal.",
      "section": "main",
      "label": "GET /accuracy/candles-preview",
      "description_long": "Free preview of per-timeframe candle-level audit (MAPE/MAE by 5m, 15m, 1h, 4h, 1d) — aggregate across all symbols only, rounded to 1 decimal. Full precision and per-symbol filtering stay behind the paid /accuracy/candles endpoint.",
      "params": [],
      "unit": "candle_audit"
    },
    {
      "id": "kronos.conviction_signals",
      "method": "GET",
      "path": "/api/feeds/kronos/conviction-signals",
      "price_usd": 0,
      "description": "Free delayed conviction signals — top 3 non-BTC symbols ranked by prediction strength, from before today.",
      "section": "main",
      "label": "GET /conviction-signals",
      "description_long": "Free public signal — the latest pre-midnight prediction per non-BTC symbol, ranked by conviction (distance of upside_prob from 50%), top 3. Delayed by design (cutoff: before today's midnight) so it never undercuts the paid, fresh /predict and /decisions endpoints.",
      "params": [],
      "unit": "signals"
    },
    {
      "id": "kronos.risk",
      "method": "GET",
      "path": "/api/feeds/kronos/risk",
      "price_usd": 0,
      "description": "Current operational risk state; standalone endpoint.",
      "section": "main",
      "label": "GET /risk",
      "description_long": "Check if the model is hot or cold. Returns current streak, cooldown status and confidence multiplier — so you know whether to trust the next signal or wait.",
      "params": [],
      "unit": "risk"
    },
    {
      "id": "kronos.risk_history",
      "method": "GET",
      "path": "/api/feeds/kronos/risk/history",
      "price_usd": 0.02,
      "data_policy": "analysis",
      "description": "Historical streak analytics — best and worst streaks ever (global, per symbol and per timeframe) with date ranges. Covers all audited decisions from the default preset.",
      "section": "main",
      "label": "GET /risk/history",
      "description_long": "Historical streak analytics — best and worst streaks ever, broken down globally, per symbol (BTC, ETH, SOL, XRP, etc.) and per timeframe (5m, 15m, 1h, 4h, 1d). Includes date ranges for each streak. Separate from /risk so expensive all-history aggregation does not affect live decisions. Only counts decisions from the default preset (standard agent pipeline, not playground experiments).",
      "params": [],
      "unit": "risk_history"
    },
    {
      "id": "kronos.predict",
      "method": "GET",
      "path": "/api/feeds/kronos/predict/{symbolKey}",
      "price_usd": 0.01,
      "price_per_tf_usd": 0.01,
      "price_cap_usd": 0.04,
      "price_status": "active",
      "data_policy": "fresh_on_demand",
      "description": "Fresh on-demand forecast for any supported asset (BTC, ETH, SOL, etc). All timeframes by default, or filter with ?timeframes=5m,1h. $0.01 per timeframe, capped at $0.04 (20% off when requesting all 5). Horizon: 5m→6h, 15m→24h, 1h→2d, 4h→10d, 1d→14d.",
      "section": "main",
      "label": "GET /predict/:symbol?timeframes=",
      "description_long": "Fresh on-demand forecast for any supported asset (BTC, ETH, SOL, etc). Returns all timeframes by default, or filter with ?timeframes=5m,1h. $0.01 per timeframe, capped at $0.04 (20% off when requesting all 5). Horizon: 5m→6h, 15m→24h, 1h→2d, 4h→10d, 1d→14d.",
      "params": [
        "symbol",
        "timeframes",
        "refresh"
      ],
      "unit": "consensus"
    },
    {
      "id": "kronos.decision",
      "method": "GET",
      "path": "/api/feeds/kronos/decision/{decisionId}",
      "price_usd": 0,
      "description": "One auditable decision record — full prediction, audit status, forecast bounds, Brier score and pred_candles. Free, rate-limited (30 req/5min).",
      "section": "main",
      "label": "GET /decision/:id",
      "description_long": "Retrieve a single past decision by its UUID. Returns the full prediction, audit status, forecast bounds, Brier score and pred_candles — everything you need to verify or replay a call. Free, rate-limited (30 req/5min).",
      "params": [
        "decisionId"
      ],
      "unit": "decision"
    },
    {
      "id": "kronos.decisions",
      "method": "GET",
      "path": "/api/feeds/kronos/decisions",
      "price_usd": 0.001,
      "price_status": "active",
      "description": "Browse recent predictions ordered by most recent first. Filter with ?symbol=btc_usdt, ?status=audited|auditing|pending, ?days=30, ?limit=50 (max 500). Use ?detail=1 to include full pred_candles arrays (default: stripped). Without ?status, returns most recent decisions regardless of audit state (audit fields null for pending).",
      "section": "main",
      "label": "GET /decisions",
      "description_long": "Browse recent predictions — each with decision ID, symbol, consensus, audit status, Brier score and per-timeframe summary (direction, change_pct, ranges). Results are ordered by predicted_at DESC (most recent first). Use ?detail=1 to include full pred_candles arrays. Filter by ?symbol (e.g. btc_usdt), ?status (audited/auditing/pending), ?days (lookback), ?limit (max 500). Without ?status, returns the most recent decisions regardless of audit state (audit fields will be null for pending decisions).",
      "params": [
        "symbol",
        "status",
        "days",
        "limit",
        "detail"
      ],
      "unit": "history"
    },
    {
      "id": "kronos.forecast-evolution",
      "method": "GET",
      "path": "/api/feeds/kronos/forecast-evolution/{symbolKey}",
      "price_usd": 0.005,
      "price_status": "active",
      "data_policy": "analysis",
      "description": "How the forecast for a symbol has changed over time: direction flips, confidence drift, upside_prob evolution, forecast range revision, and audited accuracy of each revision. Each revision includes market_key (e.g. btc-10m, btc-1h, or null for background scheduler) and timeframes. ?hours=24 (max 168), ?market_key=btc-10m to filter by market, ?limit=144 (max 1000), ?summary=1 for summary-only.",
      "section": "main",
      "label": "GET /forecast-evolution/:symbol",
      "description_long": "How the forecast for a symbol has changed over time — direction flips, confidence drift, upside_prob revision and audited accuracy of each revision. Each revision includes market_key (e.g. btc-10m, btc-1h, or null for background scheduler predictions) and timeframes used. Reveals the trajectory of the model's opinion, not just the latest reading. ?hours to set lookback (default 24, max 168). ?market_key=btc-10m to filter by specific market. ?limit to cap revisions (default 144, max 1000). ?summary=1 for summary-only (no revisions array).",
      "params": [
        "symbol",
        "hours",
        "market_key",
        "limit",
        "summary"
      ],
      "unit": "evolution"
    },
    {
      "id": "kronos.forecast_distribution",
      "method": "GET",
      "path": "/api/feeds/kronos/forecast-distribution/{symbolKey}",
      "price_usd": 0.01,
      "price_status": "active",
      "data_policy": "fresh_on_demand",
      "description": "Full sample distribution from Kronos probabilistic inference. Returns percentiles (p05, p10, p25, p50, p75, p90, p95) at each prediction step, plus final return distribution. ?timeframes=5m,1h (defaults to 5m). $0.01.",
      "section": "main",
      "label": "GET /forecast-distribution/:symbol?timeframes=",
      "description_long": "Unlike /predict which returns the median-averaged prediction, this returns the full empirical distribution from sample_count independent inference paths. At each prediction step you get p05-p95 percentiles for close price, plus the final return percentile distribution. This is the true probabilistic output of Kronos — agents can use it to compute Value-at-Risk, confidence intervals, or any custom decision rule.",
      "params": [
        "symbol",
        "timeframes"
      ],
      "unit": "distribution"
    },
    {
      "id": "kronos.historical-analogs",
      "method": "GET",
      "path": "/api/feeds/kronos/historical-analogs/{symbolKey}",
      "price_usd": 0.01,
      "price_status": "active",
      "data_policy": "analysis",
      "description": "Past situations similar to the current forecast and what happened.",
      "section": "main",
      "label": "GET /historical-analogs/:symbol",
      "description_long": "Past audited situations similar to the current forecast (same direction, similar confidence and upside_prob) and what actually happened — accuracy, median change, outcome distribution, max adverse/favorable and percentiles. Empirical evidence from analogous situations. ?days, ?limit, ?confidenceTol, ?upsideTol to tune matching. ?full=1 returns all analogs (default: top 10 + summary).",
      "params": [
        "symbol",
        "days",
        "limit",
        "confidenceTol",
        "upsideTol",
        "full"
      ],
      "unit": "analogs"
    },
    {
      "id": "kronos.regime",
      "method": "GET",
      "path": "/api/feeds/kronos/regime",
      "price_usd": 0.02,
      "price_status": "active",
      "data_policy": "analysis",
      "description": "Cross-symbol alignment signal — market regime detection.",
      "section": "main",
      "label": "GET /regime",
      "description_long": "Cross-symbol regime signal — how aligned are all Kronos-covered assets right now? When ≥3 symbols share the same consensus direction, it signals risk-on or risk-off. Includes historical alignment events with accuracy. ?days and ?minSymbols to configure.",
      "params": [
        "days",
        "minSymbols"
      ],
      "unit": "regime"
    },
    {
      "id": "kronos.agent.track-record",
      "method": "GET",
      "path": "/api/feeds/kronos/agent/track-record",
      "price_usd": 0.001,
      "description": "Agent track record — measures Kronos as a market voter (option voted vs market outcome): win rate, Brier score, per-coin breakdown.",
      "section": "agent",
      "label": "GET /agent/track-record",
      "description_long": "Agent track record — measures Kronos as a market voter (option voted vs market outcome): win rate, Brier score, per-coin breakdown and daily evolution. Filter by ?coin and ?days. Not the same as /accuracy, which measures the Kronos forecast model (predicted direction vs actual price at horizon).",
      "params": [
        "coin",
        "days"
      ],
      "unit": "agent_stats"
    },
    {
      "id": "kronos.agent.votes",
      "method": "GET",
      "path": "/api/feeds/kronos/agent/votes",
      "price_usd": 0.003,
      "description": "Recent votes by the Kronos agent with market context.",
      "section": "agent",
      "label": "GET /agent/votes",
      "description_long": "Recent agent votes with market context, confidence, rationale and outcome. Paginate with ?limit (default 50) and ?offset, filter by ?coin. ?full=1 includes rationale and research_notes text.",
      "params": [
        "limit",
        "offset",
        "coin",
        "full"
      ],
      "unit": "agent_votes"
    },
    {
      "id": "kronos.agent.signals",
      "method": "GET",
      "path": "/api/feeds/kronos/agent/signals",
      "price_usd": 0.005,
      "price_status": "active",
      "data_policy": "live",
      "description": "Open markets for Kronos-covered coins with vote status.",
      "section": "agent",
      "label": "GET /agent/signals",
      "description_long": "Live view of open markets where the agent is actively voting — includes vote status and cached predictions per market.",
      "params": [],
      "unit": "agent_signals"
    },
    {
      "id": "kronos.composite_preview",
      "method": "GET",
      "path": "/api/feeds/kronos/composite-preview/{symbolKey}",
      "price_usd": 0,
      "data_policy": "analysis",
      "description": "Free preview of the Quant vs Crowd divergence signal.",
      "section": "agent",
      "label": "GET /composite-preview/:symbol",
      "description_long": "Free preview of the Quant (Kronos) vs Crowd composite signal — same agreement/divergence read as /composite, aggregated/delayed. ?days controls lookback (default 30, max 365). Full per-duration breakdown and history stay behind the paid endpoint.",
      "params": ["symbol", "days"],
      "unit": "composite"
    },
    {
      "id": "kronos.composite",
      "method": "GET",
      "path": "/api/feeds/kronos/composite/{symbolKey}",
      "price_usd": 0.01,
      "price_status": "active",
      "data_policy": "analysis",
      "description": "Quant (Kronos) vs Crowd divergence analysis.",
      "section": "agent",
      "label": "GET /composite/:symbol",
      "description_long": "Quant vs Crowd — compares Kronos forecasts against LLM agents and human votes. Shows agreement/divergence rates, who wins when they disagree, per-duration breakdown and the current live signal. ?days to set lookback.",
      "params": [
        "symbol",
        "days"
      ],
      "unit": "composite"
    },
    {
      "id": "kronos.benchmark_preview",
      "method": "GET",
      "path": "/api/feeds/kronos/benchmark-preview",
      "price_usd": 0,
      "data_policy": "analysis",
      "description": "Free preview of the Kronos benchmark leaderboard — fixed 7-day window, no per-coin detail.",
      "section": "agent",
      "label": "GET /benchmark-preview",
      "description_long": "Free preview of the benchmark leaderboard — ranks Kronos against every LLM agent and human forecaster by accuracy and Brier score, fixed 7-day window, min 10 resolved, no per-coin detail. Configurable window and per-coin breakdown stay behind the paid /benchmark endpoint.",
      "params": [],
      "unit": "benchmark"
    },
    {
      "id": "kronos.benchmark",
      "method": "GET",
      "path": "/api/feeds/kronos/benchmark",
      "price_usd": 0.02,
      "price_status": "active",
      "data_policy": "analysis",
      "description": "Kronos vs every forecasting agent — leaderboard with accuracy and Brier score.",
      "section": "agent",
      "label": "GET /benchmark",
      "description_long": "Benchmark leaderboard — ranks Kronos against every LLM agent and human forecasters by accuracy and Brier score on crypto markets. Kronos model-level stats (audited predictions, accuracy, Brier). Use ?detail=1 for per-coin breakdown. ?days for lookback, ?minResolved to filter agents with too few votes.",
      "params": [
        "days",
        "minResolved",
        "detail"
      ],
      "unit": "benchmark"
    },
    {
      "id": "kronos.digest",
      "method": "GET",
      "path": "/api/feeds/kronos/digest/{symbolKey}",
      "price_usd": 0.03,
      "price_status": "active",
      "data_policy": "ai_generated",
      "description": "AI-powered cross-referenced digest — combines 7 data sources into insight-driven analysis.",
      "section": "main",
      "label": "GET /digest/:symbol",
      "description_long": "Combines 7 Kronos data sources (predict, risk, forecast-evolution, regime, historical-analogs, composite quant-vs-crowd, accuracy) into one insight-driven digest. An AI agent cross-references these to surface non-obvious insights: track-record reality checks (is the confidence justified by analogs?), timeframe contradictions, quant-vs-crowd divergences, calibration warnings, and risk context. Returns the text digest plus structured metadata (analog accuracy, model accuracy, crowd accuracy, live divergences). Saves the agent 6 paid calls ($0.06+). Priced at $0.03.",
      "params": [
        "symbol"
      ],
      "unit": "digest"
    },
    {
      "id": "kronos.market_brief",
      "method": "GET",
      "path": "/api/feeds/kronos/market-brief/{symbolKey}",
      "price_usd": 0.05,
      "price_status": "active",
      "data_policy": "ai_generated_external_context",
      "description": "AI-powered external crypto narrative with source-backed news, sentiment, events and Kronos alignment.",
      "section": "narrative",
      "label": "GET /market-brief/:symbol",
      "description_long": "Combines Gate.io news, social sentiment, exchange announcements, event attribution, historical resolution context, similar-market outcomes, and Kronos forecast/risk/regime data. Returns an AI-generated market brief with market narrative, catalysts, risks, contradictions, model alignment, historical context, constructive next step, source status and freshness. External claims are required to reference supplied evidence; unavailable sources are reported rather than hidden.",
      "params": [
        "symbol"
      ],
      "unit": "market_brief"
    },
    {
      "method": "GET",
      "path": "/api/feeds/similar-markets",
      "price_usd": 0.005,
      "price_status": "active",
      "data_policy": "semantic_search",
      "description": "Semantic similar markets by text query — embeds arbitrary text and finds the closest resolved markets via pgvector HNSW index.",
      "section": "semantic_similarity",
      "label": "GET /feeds/similar-markets",
      "description_long": "Semantic market discovery by text query. Embeds arbitrary text (for example, an open market question) and returns the closest resolved instance from each distinct market template via pgvector cosine search. Results are automatically isolated to the domain of the closest match (crypto, commodity, equity, forex, aviation, environment, space, maritime, and so on), so financial markets are never mixed with flights, pollution or unrelated domains. Embeddings include title, asset, market type, duration, and available sentiment/news; the resolved outcome is deliberately excluded from the embedding to prevent answer leakage. winnerLabel is the outcome of the representative returned instance, not a historical probability. Use ?domain, ?coin and ?kind for explicit comparability, or /feeds/similar-markets/outcome-stats for an aggregated historical outcome distribution.",
      "params": ["text", "limit", "domain", "coin", "kind"],
      "unit": "markets"
    },
    {
      "method": "GET",
      "path": "/api/feeds/similar-markets/outcome-stats",
      "price_usd": 0.01,
      "price_status": "active",
      "data_policy": "semantic_search_aggregated",
      "description": "Outcome distribution of historically similar markets — the core B2B semantic search product.",
      "section": "semantic_similarity",
      "label": "GET /feeds/similar-markets/outcome-stats",
      "description_long": "Outcome aggregation — the core B2B semantic search product. Given a market question (text) or instance ID, finds comparable resolved markets and returns their outcome distribution (for example, '62% Up, 38% Down across 50 similar markets'). Domain isolation is automatic, and coin plus market kind are inferred when omitted, preventing incompatible outcomes from financial, aviation, environment or other domains from being mixed. Includes sample sufficiency, similarity threshold, per-coin breakdown and top matches. Supports explicit ?domain, ?coin and ?kind filters.",
      "params": ["text", "instanceId", "limit", "domain", "coin", "kind"],
      "unit": "stats"
    },
    {
      "method": "GET",
      "path": "/api/feeds/agent-intelligence/behavioral-correlations",
      "price_usd": 0.01,
      "price_status": "active",
      "data_policy": "semantic_correlation",
      "description": "Semantic (behavioral) correlation between agents — how similarly they reason, not just how they vote.",
      "section": "agent_intelligence",
      "label": "GET /feeds/agent-intelligence/behavioral-correlations",
      "description_long": "Semantic (behavioral) correlation — how similarly two agents REASON, via embeddings of their vote rationale. Two agents can vote identically for opposite reasons, or vote oppositely via near-identical reasoning — this endpoint sees that, unlike outcome-based correlation which only measures whether they voted the same option.",
      "params": ["minSamples", "limit"],
      "unit": "correlations"
    },
    {
      "method": "GET",
      "path": "/api/feeds/agent-intelligence/rationale-novelty",
      "price_usd": 0.01,
      "price_status": "active",
      "data_policy": "novelty_detection",
      "description": "Rationale novelty detection — flags agents recycling templated reasoning vs genuine per-market analysis.",
      "section": "agent_intelligence",
      "label": "GET /feeds/agent-intelligence/rationale-novelty",
      "description_long": "Rationale novelty detection — compares each vote rationale with that agent's own prior reasoning using pgvector cosine similarity. Excludes non-reasoning providers such as Kronos and, by default, same-asset votes generated within the same 120-second batch to avoid contextual false positives. Each flag includes reuseScope, severity and current/prior market context. Use groupBy=agent for one worst case per agent, includeSameBatch=1 for diagnostic same-batch matches, and threshold to override the default 0.97.",
      "params": ["agentId", "threshold", "limit", "groupBy", "includeSameBatch"],
      "unit": "flags"
    },
    {
      "id": "kronos.market_context",
      "method": "GET",
      "path": "/api/feeds/kronos/market-context/{symbolKey}",
      "price_usd": 0.03,
      "price_status": "active",
      "data_policy": "cross_venue_derivatives_context",
      "description": "Multi-asset market context — cross-venue (Binance/OKX/Gate) funding, open interest, basis, liquidations, options IV and Kronos context. Gate on-demand discovery for crypto, stocks, forex, metals, commodities and indices.",
      "section": "main",
      "label": "GET /market-context/:symbol",
      "description_long": "Combines Binance/OKX/Gate cross-venue crypto context (funding, open interest, basis, spot, liquidations, options IV) with Gate on-demand market discovery for crypto, stocks, forex, metals, commodities and indices. On-demand crypto symbols aggregate Binance+OKX+Gate in parallel with graceful degradation. Returns source status, options availability and cached Kronos context. TradFi instruments are identified as perpetuals, CFDs or tokenized exposures; no market is created and no auto-voting is enabled.",
      "params": ["symbol"],
      "unit": "market_context"
    },
    {
      "id": "kronos.playground",
      "method": "POST",
      "path": "/api/feeds/kronos/playground/{symbolKey}",
      "price_usd": 0.005,
      "description": "Custom GPU inference; rate-limited to 3 requests per 5 minutes.",
      "section": "main",
      "label": "POST /playground/:symbol",
      "description_long": "Experimental — run a prediction with custom inference params (T, top_p, sample_count, pred_len, lookback). Rate-limited 3/5min per IP.",
      "params": [
        "symbol",
        "timeframes",
        "config"
      ],
      "unit": "playground"
    }
  ],
  "response_schema": {
    "name": "KronosForecastResponse",
    "openapi_ref": "#/components/schemas/KronosForecastResponse",
    "shared_by": [
      "/feeds/kronos/sample/btc_usdt",
      "/feeds/kronos/predict/{symbolKey}"
    ],
    "fields": {
      "pair": "string — exchange pair, e.g. BTCUSDT",
      "timestamp": "ISO 8601 — response generation time",
      "timeframes": "object — timeframe key -> { direction, current_price, predicted_price, pred_len, pred_max, pred_min, change_pct, upside_prob, elapsed_s, pred_candles[[open,high,low,close]] }",
      "consensus": "object — { direction, confidence, upside_prob_avg, total_timeframes, agreeing_timeframes }",
      "forecast": "object — { low, high, coverage, predicted_at, method }",
      "sample": "boolean — only on the free delayed BTC sample",
      "sample_policy": "object — { symbol, realtime:false, timeframes[], delay_hours:{5m:2,15m:6,1h:24,4h:48,1d:72}, delay_note } — only on the sample"
    }
  }
}
