Skip to content

KB/mcp

MCP tool: ai_brief

Last verified

ai_brief answers “what’s the platform’s current risk read” and “how has that read graded out historically” in one call. It wraps AI-2’s PUBLIC verdict + history routes — GET /api/v1/ai2/verdict and GET /api/v1/ai2/history — fanned out concurrently, and returns a trimmed combination of both.

Signature

ai_brief(
  limit: int | None = None,   # recent AI-2 verdict cycles to fold into the track-record grades, 1-200. Omit for the live default (60).
) -> str                      # JSON-serialised dict

limit outside 1..200 raises ValueError before the round-trip — mirrors the backend’s Query(1, ge=1, le=200) on /ai2/history.

Returns

{
  "verdict": {
    "available": true,
    "as_of": "2026-07-20T16:15:00-04:00",
    "source": "persisted",
    "risk": { "band": "elevated" },
    "magnitude": { "expectation": "normal" },
    "regime": { "label": "CAUTIOUS" },
    "likelihood": {
      "summary": "Based on 214 broadly similar historical days (effective sample 88.4 after recency weighting) — treat this as a historical base rate, not a forecast.",
      "n_analogues": 214,
      "effective_count": 88.4
    },
    "what_flips_it": [
      { "label": "Gamma flip", "level": 552.0, "risk_direction": "risk_up", "plain": "If Gamma flip trips, today's risk reading would likely get worse. (level: 552)" }
    ],
    "uncertainty_note": "Caveats: the move-size read is an early, uncalibrated research read. This is a read of today's conditions — how risky, and how big a move to expect. No one here has a validated edge on which way the market will go."
  },
  "history": {
    "cycles_recorded": 412,
    "tracking_started": "2026-07-08",
    "grades": {
      "magnitude": { "verdict": "insufficient_data", "n_matured": 0, "n_verdicts_in_range": 60, "forward_validated": false },
      "risk_band": { "verdict": "insufficient_data", "n_verdicts_in_range": 60 },
      "direction": { "verdict": "insufficient_data", "validated": false, "n_trade_dates_graded": 0 }
    },
    "reason": null
  }
}

Unavailable verdict

{ "verdict": { "available": false, "reason": "verdict unavailable — the read could not be built" }, "history": { "cycles_recorded": 0, "tracking_started": null, "grades": { "...": "insufficient_data" }, "reason": "tracking has just begun — 0 cycles recorded" } }

/ai2/verdict and /ai2/history never 500 or 404 (DOCTRINE P0) — an unavailable read degrades to available: false / verdict: null with a plain reason, same as an honest cold start.

Behaviour

Examples

What’s the platform’s current risk read?

Operator: "What's the risk read right now?"
Agent: ai_brief()
  -> read verdict.risk.band, verdict.magnitude.expectation, verdict.what_flips_it

How has AI-2’s read graded out?

Operator: "Has this actually been tracking reality?"
Agent: ai_brief()
  -> read history.grades.risk_band.verdict, history.grades.magnitude.verdict

Wider track-record window

Agent: ai_brief(limit=150)

When to use

When NOT to use

See also