Alpha MCPAPI reference · v1

The MCP your agents call.

Tritemporal memory that cannot lie about the past, a governed causal graph, knock-on simulation, and a decision ledger — the engine behind every Cascadian answer, at machine speed.

MCPPOSTGRESGOVERNED
Tools / Decisions

record_recommendation()

Key

Records the full recommendation: an action (act, wait, test, research, add, hold, trim, exit, hedge, escalate), the rationale, alternatives rejected, assumptions, caveats, invalidation criteria, and a monitoring plan. The expected_outcome is frozen at this moment — it is what record_outcome will be scored against. Status moves to awaiting_approval, or straight to decided for low-risk.

record_recommendation(decision_id, action, rationale, expected_outcome, invalidation_criteria)RECOMMENDATION

Callable over MCP as record_recommendation(decision_id, action, rationale, expected_outcome, invalidation_criteria). REST mirror POST /v1/recommendations Planned — alpha is MCP-only

Why your agent calls it

The agent's full case, on the record: the action, the rationale, what it rejected and why, the assumptions, the invalidation criteria, the monitoring plan — and the expected outcome, frozen. Months later there is no arguing about what was promised. This is the artifact the human actually approves.

What it returns
RECOMMENDATIONACTION · RATIONALEALTERNATIVES REJECTEDINVALIDATION CRITERIAMONITORING PLAN
record_recommendation() · The full recommendation — expectation frozen.ILLUSTRATIVE
Call it from an agent

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.

agent · python sdkSDK · PLANNED — ALPHA IS MCP-ONLY
from cascadian import Cascadian cx = Cascadian(api_key=os.environ["CASCADIAN_API_KEY"]) result = cx.record_recommendation( decision_id="dec_0142", action="act", rationale="Margin data shows the tier is net-negative.", expected_outcome={"win_rate_pp": -2.1, "gross_margin_pp": 3.4}, invalidation_criteria=["win_rate drop > 4pp in 60d"], )
Parameters
ParamTypeDescription
decision_idREQUIREDstringThe open decision this recommends on.
actionREQUIREDenumact · wait · test · research · add · hold · trim · exit · hedge · escalate.
rationaleREQUIREDstringWhy this action, in plain language.
expected_outcomeREQUIREDobjectThe measurable expectation. Frozen on write.
invalidation_criteriaREQUIREDstring[]Observable conditions that void the thesis.
Example response
record_recommendation()JSON · ILLUSTRATIVE
{ "decision_id": "dec_0142", "action": "act", "expected_outcome": { "win_rate_pp": -2.1, "gross_margin_pp": 3.4, "revenue_usd": 210000 }, "frozen": true, "status": "awaiting_approval" }
Related — Decisions