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

estimate()

Key

Requires an identification_review_id — it will not run without one (invariant I3). Builds the dataset through the as-of repository (no future rows), hashes it, runs the estimator, then runs the deterministic skeptic checks: lookahead, post-treatment control, missing adjustment member, overlap, sample size, stale context, Granger-misuse, factor-mirage, regime-nonstationarity, multiple testing. Blockers abort with an explanation. Estimators: diff_means, ols_adjusted, logistic, ipw with bootstrap CIs; aipw/did/its are registered interface_only — never faked.

estimate(identification_review_id, estimator, as_of)ESTIMATE + SKEPTIC REPORT

Callable over MCP as estimate(identification_review_id, estimator, as_of). REST mirror POST /v1/estimate Planned — alpha is MCP-only

Why your agent calls it

Where the number comes from — and where bad numbers go to die. The dataset is built as-of (no future rows), hashed, estimated, then run through ten deterministic skeptic checks; blockers abort with an explanation instead of shipping a confident artifact. What survives is an effect with intervals you can defend in a post-mortem.

What it returns
RAW EFFECT−2.4pp10 SKEPTIC CHECKSESTIMATE · 95% CI−2.1pp [±1.4]DETERMINISTIC CHECKS · BLOCKERS ABORT WITH AN EXPLANATION
estimate() · A causal estimate that survives the skeptic checks.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.estimate( identification_review_id="idr_0271", estimator="ols_adjusted", as_of="2026-06-11T17:00:00Z", )
Parameters
ParamTypeDescription
identification_review_idREQUIREDstringThe review from identify(). No review, no estimate.
estimatorenumdiff_means · ols_adjusted · logistic · ipw. Default chosen by the review.
as_oftimestampBuild the dataset as of this moment. Default the review's as_of.
Example response
estimate()JSON · ILLUSTRATIVE
{ "identification_review_id": "idr_0271", "estimator": "ols_adjusted", "effect": { "treatment": "discount", "outcome": "win_rate", "estimate_pp": -2.1, "ci95_pp": [-3.5, -0.7] }, "dataset_hash": "sha256:91ce…", "skeptic_checks": { "lookahead": "pass", "post_treatment_control": "pass", "overlap": "pass", "n": "pass (n=1,412)", "regime_nonstationarity": "warn", "multiple_testing": "pass" }, "capability_status": "implemented" }
Related — Causal