record_outcome()
KeyWrites the measured actuals. The expected-vs-actual comparison is computed server-side against the expectation that was frozen at recommendation time — so neither the agent nor the human can quietly move the goalposts after the fact.
record_outcome(decision_id, actuals, measured_at)→ EXPECTED VS ACTUALCallable over MCP as record_outcome(decision_id, actuals, measured_at). REST mirror POST /v1/outcomes Planned — alpha is MCP-only
The loop closes. The agent writes what actually happened; the server computes expected-vs-actual against the frozen expectation. The discount cut came in at −$46k under the revenue estimate but inside the interval — and now that variance is data.
Over MCP, your agent invokes it on its own when the moment calls for it — just describe the situation. A Python SDK for headless runtimes is planned; this is what the call will look like.
| Param | Type | Description |
|---|---|---|
| decision_idREQUIRED | string | The decided decision to score. |
| actualsREQUIRED | object | The measured outcome values. |
| measured_at | timestamp | When the actuals were measured. |

