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 / Causal

simulate_intervention()

Key

The knock-on engine. Fits or loads a mechanism per node on the approved DAG (DoWhy-GCM — linear or spline from as-of data, or asserted elasticities labeled assumed), then applies do(X=x) and draws interventional samples. Returns the expected change and interval for every downstream variable, the causal path it travelled, every assumption on that path — and a suggested experiment when the intervals are too wide to act on.

simulate_intervention(intervention, targets, as_of)KNOCK-ON REPORT

Callable over MCP as simulate_intervention(intervention, targets, as_of). REST mirror POST /v1/simulate Planned — alpha is MCP-only

Why your agent calls it

The knock-on question, answered before the action: cut the discount tier, and what ripples? do(X=x) on the approved graph returns every downstream variable — win rate −2.1pp [±1.4], gross margin +3.4pp [±0.9], revenue net +$210k [−40k, +485k] — with the path each effect travelled and every assumption on it labeled fit-from-data or assumed. When the interval is too wide to act on, it tells you which experiment would narrow it.

What it returns
DO(X=x)+$485K+$210K−$40KINTERVENTIONAL SAMPLES · APPROVED DAG · EVERY ASSUMPTION LABELED
simulate_intervention() · do(X=x) on the approved graph — the knock-on report.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.simulate_intervention( intervention={"discount_tier": "removed"}, targets=["win_rate", "gross_margin", "revenue"], as_of="2026-06-11T17:00:00Z", )
Parameters
ParamTypeDescription
interventionREQUIREDobjectThe do() — variable and value, e.g. {"discount_tier": "removed"}.
targetsstring[]Downstream variables to report. Default: all descendants.
as_oftimestampFit mechanisms from data as of this moment. Default now.
Example response
simulate_intervention()JSON · ILLUSTRATIVE
{ "intervention": { "discount_tier": "removed" }, "graph_version": "v14 (approved)", "downstream": [ { "variable": "win_rate", "expected_change_pp": -2.1, "interval_pp": [-3.5, -0.7], "path": ["discount → win_rate"], "assumptions": [ { "edge": "discount → win_rate", "mechanism": "ols, fit from as-of data" } ] }, { "variable": "gross_margin", "expected_change_pp": 3.4, "interval_pp": [2.5, 4.3], "path": ["discount → gross_margin"], "assumptions": [ { "edge": "discount → gross_margin", "mechanism": "elasticity, assumed" } ] }, { "variable": "revenue", "expected_change_usd": 210000, "interval_usd": [-40000, 485000], "path": ["discount → win_rate → revenue", "discount → gross_margin → revenue"], "assumptions": [ { "edge": "win_rate → revenue", "mechanism": "linear, fit" } ] } ], "suggested_experiment": "revenue interval is wide — A/B the cut in one segment for 60 days" }
Try it — sandbox

Run this call right here. The response is canned and spec-true — the exact shape your agent gets back over MCP, on sample data.

Sandbox — canned, spec-true responses. No key, no server, no live data.

Sandbox — sample responsesimulate_intervention()
// Press RUN to call simulate_intervention() in the sandbox.
Sample — canned from the spec, not a live server
Related — Causal