fahali_get_forecast
Retrieve a forward probability distribution for one trading symbol, covering direction, horizon probabilities, expected move, cone, evidence tier, and withheld-data caveats.
Instructions
Forward distribution for one symbol — ALWAYS served: direction (up | down | range), upside / downside / range probabilities summing to 1 over the declared horizon, expected move, and cone. Read evidenceTier and judged-record reliability; caveats name what was withheld. Probabilities, never certainties; observation is not advice. Requires Agent Starter; a denial returns a typed upgrade object.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Optional maximum rows per projectable collection. Audit has no MCP projection cap; brief defaults to 3 and standard to 12. | |
| since | No | Optional lower timestamp bound for returned row collections. | |
| detail | No | Response depth. audit is the full-fidelity default; brief and standard are explicit compact projections. | audit |
| symbol | Yes | Trading symbol (e.g. 'BTCUSDT'). Required. | |
| include | No | Optional comma-separated extras: 'reasoning,history'. | |
| symbols | No | Optional symbol projection, as a comma-separated string or array. Rows without instrument identity are not discarded. | |
| include_withheld | No | Include full withheld-row detail. Defaults true with audit; explicitly set false only for a compact projection. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| asOf | No | ||
| auth | No | Credential lifetime visible to the caller. OAuth secondsRemaining lets an autonomous agent refresh before a multi-call workflow is interrupted. | |
| cone | No | ||
| note | No | Plain-language explanation of the abstention, safe to show a customer verbatim. Names no field and no code path. | |
| blend | No | {weightEvidence, rows, directionalRows, calibratedRows, halfWeightRows, selfReportedMaxWeight} — the denominator of an always-on read. | |
| claim | No | Fahali dictionary claim (shared/fahaliDictionary.ts). kind: 'forecast' (live — has issuedAt/horizonHours/expiresAt), 'observation' (real data, reliability gate withheld a directional promise — has observedAt), or 'abstention' (has `reason`, e.g. forecast_expired, cone_horizon_mismatch, forecast_malformed). Read `kind` before treating anything else in this response as an actionable directional call. | |
| scope | No | ||
| source | No | ||
| status | No | The endpoint's original status vocabulary (for example ok, partial, degraded, withheld, or no_alerts). Use mcpStatus for normalized transport success/error. | |
| symbol | No | ||
| absence | No | Why no actionable finding is present: measured_empty, user_empty, no_coverage, source_unverified, stale, withheld, source_error, auth_failure, or entitlement_required. | |
| caveats | No | Machine-readable reasons the evidence path withheld (kept, not hidden): calibration_floor_not_met, no_evidence_found, no_directional_evidence, insufficient_evidence, identity_evidence_withheld, calibration_unavailable, forecast_query_failed, forecast_expired, cone_horizon_mismatch, forecast_malformed. A query failure is NOT a quiet market — do not collapse these. | |
| drivers | No | ||
| horizon | No | The forecast's ACTUAL registered horizon in hours (e.g. 6, 36) — not a fixed 72. Pairs with expiresAt to know when this claim's window closes. | |
| alwaysOn | No | True when the served read is the always-on base-rate blend rather than the evidence path's own distribution. | |
| decision | No | ||
| forecast | No | ||
| servedBy | No | 'evidence' or the always-on method version. | |
| abstained | No | Always false since 2026-10-11: a distribution is always served. Kept for compatibility. What the evidence path would once have withheld on is listed under `caveats`. | |
| conflicts | No | ||
| dataState | No | ||
| direction | No | The served read's leading outcome at ±2% over `horizon`: up | down | range (range = the in-between outcome leads; `directionLean` names its skew). | |
| expiresAt | No | createdAt + horizon hours — a fixed instant, does not move between requests. | |
| mcpStatus | No | Normalized MCP result status. The endpoint's original status vocabulary remains in `status` and `sourceStatus`. | |
| requestId | No | ||
| claimPolicy | No | Typed constraints for safe use. Metadata, not a prompt or instruction channel. | |
| climatology | No | {basis, n, windowDays, thresholdPct, barsAhead, assetClass, p10, p50, p90[, symbols]} — the base-rate sample an always-on read is built from. | |
| instruments | No | Resolved or explicitly partial instrument identities. A missing venue carries an ambiguity warning. | |
| nextActions | No | Registry-validated follow-up calls. Missing tools, invalid arguments, unresolved placeholders, and disabled tools are omitted. | |
| reliability | No | The measured grade of the forecast family on the judged record ({family, grade, label, probabilityOfSkill, effectiveSample, judged, reason, source, appliesTo}); grade 'base_rate' when the read is the base rate; 'unmeasured' when no verification row is cached. Quote the grade with the number. | |
| sourceError | No | The upstream endpoint's exact error text/code before normalization, when one was present. | |
| sourceScope | No | ||
| evidenceTier | No | What the probabilities rest on. climatology / class_climatology / uninformative_prior = the base-rate read (no skill claimed); the others = admitted evidence blended into the base rate at the weight in `blend`. | |
| sourceStatus | No | The upstream endpoint's exact status before the MCP envelope normalizes transport success/error. | |
| agentBriefing | No | Audit-only narrative projection. Present only when detail='audit'; compact responses do not duplicate structured data as prose. | |
| claimValidity | No | Validity of the selected binding claim only, calculated after filtering, projection and row selection. Sibling rows cannot determine it. | |
| directionLean | No | When direction is range, which tail is heavier. | |
| responseState | No | ||
| schemaVersion | No | ||
| missingSignals | No | ||
| sourceDecision | No | ||
| symbolCoverage | No | Conservation ledger satisfying requested = returned + withheld + notReturned for requested-symbol calls. | |
| evidenceQuality | No | ||
| expiredForecast | No | Present only when claim.kind is 'abstention' with an expiry reason. The stale forecast that expired by its own registered horizon, kept visible for audit rather than silently withheld. | |
| responseControl | No | ||
| sourceDataState | No | The upstream endpoint's exact data-state value before endpoint-aware classification. | |
| abstentionReason | No | Legacy; null. See `caveats`. | |
| recordMatchReason | No | Why matchedTrackRecord is present or null. A null record is never evidence of safety or engine failure. | |
| matchedTrackRecord | No | A judged record only when engine, horizon, regime/instrument class, and claim family match this response. `state` is one of: `measured` (a stratum cleared the publishability gate — `stratum` carries engine, horizon tier, bar regime, recall, precision, base rate, base-rate lift, median lead hours, effective sample, warned events and the measurement date); `withheld` (the gate ran and refused — `reason` says why, in words); `unavailable` (the record could not be read at all — an infrastructure failure that says nothing about the record). It is ONE stratum selected by recall, never a platform-wide accuracy. Null means no exact record match; read recordMatchReason. | |
| confidenceSemantics | No | Every confidence-bearing value with its score type, scale, calibration status, and probability flag. | |
| decisionEligibility | No | Fail-closed binding-authority policy. WITHHELD means source evidence remains available for audit while normalized direction, actionability and execution fields are revoked. | |
| directionEligibility | No | Current market-direction eligibility. Direction is authorized only by an exact, eligible producer stratum (canonical_verdict, canonical_symbol_verdict, committee_verdict) — read bindingAuthority to see which one bound. Widening WHO may bind did not weaken WHAT binding requires: the named producer must still hold a matching horizon/class/family record on a verified-only judged population, so an authority without a record still cannot bind. | |
| executionEligibility | No | Fail-closed execution boundary. Portfolio monitoring tools always return WITHHELD with MONITOR_ONLY_NO_EXECUTION_AUTHORITY while Fahali has no capital path. | |
| monitoringEligibility | No | Current portfolio-monitoring validity based on captured identity, freshness, integrity, and the caller-supplied monitoring policy. ELIGIBLE authorizes observation/delivery only, never financial action. | |
| sourceEvidenceQuality | No | ||
| currentActionEligibility | No | Current eligibility of an immutable historical portfolio verdict. It never mutates the stored judgment being replayed. | |
| sourceConfidenceSemantics | No |