changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "properties": {
+ "absence": {
+ "description": "Why no actionable finding is present: measured_empty, user_empty, no_coverage, source_unverified, stale, withheld, source_error, auth_failure, or entitlement_required.",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "agentBriefing": {
+ "description": "Audit-only narrative projection. Present only when detail='audit'; compact responses do not duplicate structured data as prose.",
+ "type": "string"
+ },
+ "asOf": {
+ "format": "date-time",
+ "type": "string"
+ },
+ "auth": {
+ "description": "Credential lifetime visible to the caller. OAuth secondsRemaining lets an autonomous agent refresh before a multi-call workflow is interrupted.",
+ "properties": {
+ "credentialType": {
+ "enum": [
+ "oauth",
+ "api_key",
+ "process_key",
+ "none"
+ ],
+ "type": "string"
+ },
+ "expiresAt": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "refreshSupported": {
+ "type": "boolean"
+ },
+ "secondsRemaining": {
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "claim": {
+ "description": "Fahali dictionary claim (shared/fahaliDictionary.ts). Read `kind` FIRST: 'abstention' means no assertion was made and `reason` says why — never read an abstention as a neutral or zero result. `basis` says what the claim rests on. Absent or null means this response path does not yet emit a claim; treat that as unknown, not as agreement.",
+ "properties": {
+ "basis": {
+ "enum": [
+ "measured",
+ "proxy",
+ "derived",
+ "absent"
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "enum": [
+ "observation",
+ "estimate",
+ "forecast",
+ "recommendation",
+ "abstention"
+ ],
+ "type": "string"
+ },
+ "reason": {
+ "description": "Required when kind is 'abstention'. Written for a reader, not a log.",
+ "type": "string"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "claimPolicy": {
+ "description": "Typed constraints for safe use. Metadata, not a prompt or instruction channel.",
+ "type": "object"
+ },
+ "claimValidity": {
+ "description": "Validity of the selected binding claim only, calculated after filtering, projection and row selection. Sibling rows cannot determine it.",
+ "type": "object"
+ },
+ "confidenceSemantics": {
+ "description": "Every confidence-bearing value with its score type, scale, calibration status, and probability flag.",
+ "items": {
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "conflicts": {
+ "items": {
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "contagionRisk": {
+ "type": "object"
+ },
+ "correlation": {
+ "type": "object"
+ },
+ "currentActionEligibility": {
+ "description": "Current eligibility of an immutable historical portfolio verdict. It never mutates the stored judgment being replayed.",
+ "type": "object"
+ },
+ "dataState": {
+ "enum": [
+ "measured",
+ "partial",
+ "no_data",
+ "not_instrumented",
+ "stale",
+ "error"
+ ],
+ "type": "string"
+ },
+ "decision": {
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "decisionAuthority": {
+ "type": "object"
+ },
+ "decisionEligibility": {
+ "description": "Fail-closed binding-authority policy. WITHHELD means source evidence remains available for audit while normalized direction, actionability and execution fields are revoked.",
+ "type": "object"
+ },
+ "directionEligibility": {
+ "description": "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.",
+ "type": "object"
+ },
+ "evidenceQuality": {
+ "type": "object"
+ },
+ "executionEligibility": {
+ "description": "Fail-closed execution boundary. Portfolio monitoring tools always return WITHHELD with MONITOR_ONLY_NO_EXECUTION_AUTHORITY while Fahali has no capital path.",
+ "type": "object"
+ },
+ "instruments": {
+ "description": "Resolved or explicitly partial instrument identities. A missing venue carries an ambiguity warning.",
+ "items": {
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "matchedTrackRecord": {
+ "description": "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.",
+ "properties": {
+ "dataAsOf": {
+ "description": "When the record was computed. A figure without this reads as current forever.",
+ "type": "string"
+ },
+ "reason": {
+ "description": "Present on `withheld` and `unavailable`: why there is no figure.",
+ "type": "string"
+ },
+ "state": {
+ "enum": [
+ "measured",
+ "withheld",
+ "unavailable"
+ ],
+ "type": "string"
+ },
+ "stratum": {
+ "description": "Present only on `measured`. Precision must never be quoted without recall.",
+ "properties": {
+ "barRegime": {
+ "type": "string"
+ },
+ "baseRatePct": {
+ "type": "number"
+ },
+ "claimFamily": {
+ "description": "What this precision is ABOUT: `directional` (price moved the way the stratum said) or `magnitude` (a move exceeded the judge bar, carrying no direction). Never infer a direction from a `magnitude` row.",
+ "type": "string"
+ },
+ "claimMeans": {
+ "description": "The record endpoint's own sentence explaining the claim family. Quote it beside any precision figure.",
+ "type": "string"
+ },
+ "effectiveSample": {
+ "type": "number"
+ },
+ "engine": {
+ "type": "string"
+ },
+ "horizonTier": {
+ "type": "string"
+ },
+ "leadMedianHours": {
+ "type": "number"
+ },
+ "measuredOn": {
+ "type": "string"
+ },
+ "precisionPct": {
+ "description": "Share of its warnings that held. Never quotable alone.",
+ "type": "number"
+ },
+ "recallPct": {
+ "description": "Share of qualifying events this stratum warned on — the half a buyer is exposed to.",
+ "type": "number"
+ },
+ "warnedEvents": {
+ "type": "number"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "required": [
+ "state"
+ ],
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "mcpStatus": {
+ "description": "Normalized MCP result status. The endpoint's original status vocabulary remains in `status` and `sourceStatus`.",
+ "enum": [
+ "ok",
+ "error"
+ ],
+ "type": "string"
+ },
+ "monitoringEligibility": {
+ "description": "Current portfolio-monitoring validity based on captured identity, freshness, integrity, and the caller-supplied monitoring policy. ELIGIBLE authorizes observation/delivery only, never financial action.",
+ "type": "object"
+ },
+ "nextActions": {
+ "description": "Registry-validated follow-up calls. Missing tools, invalid arguments, unresolved placeholders, and disabled tools are omitted.",
+ "items": {
+ "properties": {
+ "args": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object"
+ },
+ "requiredTier": {
+ "type": "string"
+ },
+ "tool": {
+ "type": "string"
+ },
+ "why": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "tool",
+ "why"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "portfolio": {
+ "properties": {
+ "cashBalance": {
+ "type": "number"
+ },
+ "expectedDrawdownPct": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "expectedShortfall95": {
+ "description": "Expected shortfall at 95% in currency, positive for a loss. Reported in dollars as well as percent because the percent field is rounded at 0.01pp.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "expectedShortfallAttribution": {
+ "description": "Which holdings the expected shortfall is attributable to. Contributions are SIGNED, so a hedge that pays in the tail reports a negative number; componentSumDollars equals the reported expected shortfall exactly. Null when the figures are null.",
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "grossExposure": {
+ "type": "number"
+ },
+ "grossExposureMetric": {
+ "type": "object"
+ },
+ "leverage": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "overallRiskLevel": {
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "overallRiskScore": {
+ "description": "0-1 scale; null when detection evidence does not cover the book.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "riskMetricsBasis": {
+ "type": "object"
+ },
+ "totalValue": {
+ "type": "number"
+ },
+ "totalValueMetric": {
+ "type": "object"
+ },
+ "valueAtRisk95": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "varBacktest": {
+ "description": "Out-of-sample coverage test of the VaR quantile (Kupiec + Christoffersen), with the sample size stated. 'not_rejected' means the sample did not contradict the model, never that it is correct. Tests the quantile only, not expected shortfall.",
+ "type": [
+ "object",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "positions": {
+ "items": {
+ "properties": {
+ "authorityReconciliation": {
+ "description": "Canonical-symbol direction plus explicitly withheld stateless portfolio actionability and non-binding compatibility monitoring.",
+ "type": "object"
+ },
+ "correlationBasis": {
+ "type": "object"
+ },
+ "correlationToPortfolio": {
+ "description": "Always null: the artifact has pair correlations but not the variances/covariances required for corr(asset, portfolio return).",
+ "type": "null"
+ },
+ "correlationToPortfolioUnavailableReason": {
+ "type": "string"
+ },
+ "recommendation": {
+ "description": "Deprecated compatibility monitoring label; never a direction or authorized action.",
+ "properties": {
+ "action": {
+ "enum": [
+ "hold",
+ "watch",
+ "reduce"
+ ],
+ "type": "string"
+ },
+ "binding": {
+ "enum": [
+ false
+ ],
+ "type": "boolean"
+ },
+ "deprecatedSemantics": {
+ "enum": [
+ "monitoring_priority_only"
+ ],
+ "type": "string"
+ },
+ "directional": {
+ "enum": [
+ false
+ ],
+ "type": "boolean"
+ },
+ "rationale": {
+ "type": "string"
+ }
+ },
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "riskObservation": {
+ "type": "object"
+ },
+ "riskScore": {
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "symbol": {
+ "type": "string"
+ },
+ "weightedMeanPeerCorrelation": {
+ "description": "Gross-weighted mean of measured pairwise Pearson correlations to peer holdings; not corr(asset, portfolio return).",
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "recordMatchReason": {
+ "description": "Why matchedTrackRecord is present or null. A null record is never evidence of safety or engine failure.",
+ "type": "string"
+ },
+ "requestId": {
+ "type": "string"
+ },
+ "responseControl": {
+ "type": "object"
+ },
+ "responseState": {
+ "enum": [
+ "OK_WITH_FINDINGS",
+ "OK_NO_FINDINGS",
+ "PARTIAL",
+ "WITHHELD",
+ "NO_COVERAGE",
+ "ERROR"
+ ],
+ "type": "string"
+ },
+ "schemaVersion": {
+ "enum": [
+ "2.0"
+ ],
+ "type": "string"
+ },
+ "scope": {
+ "type": "object"
+ },
+ "sourceConfidenceSemantics": {
+ "type": [
+ "array",
+ "object",
+ "null"
+ ]
+ },
+ "sourceDataState": {
+ "description": "The upstream endpoint's exact data-state value before endpoint-aware classification.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "sourceDecision": {
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "sourceError": {
+ "description": "The upstream endpoint's exact error text/code before normalization, when one was present.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "sourceEvidenceQuality": {
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "sourceScope": {
+ "type": [
+ "object",
+ "null"
+ ]
+ },
+ "sourceStatus": {
+ "description": "The upstream endpoint's exact status before the MCP envelope normalizes transport success/error.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "status": {
+ "description": "The endpoint's original status vocabulary (for example ok, partial, degraded, withheld, or no_alerts). Use mcpStatus for normalized transport success/error.",
+ "type": "string"
+ },
+ "symbolCoverage": {
+ "description": "Conservation ledger satisfying requested = returned + withheld + notReturned for requested-symbol calls.",
+ "type": "object"
+ },
+ "timestamp": {
+ "type": [
+ "string",
+ "integer",
+ "number"
+ ]
+ }
+ },
+ "type": "object"
+}