estimate()
KeyRequires 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 REPORTCallable over MCP as estimate(identification_review_id, estimator, as_of). REST mirror POST /v1/estimate Planned — alpha is MCP-only
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.
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 |
|---|---|---|
| identification_review_idREQUIRED | string | The review from identify(). No review, no estimate. |
| estimator | enum | diff_means · ols_adjusted · logistic · ipw. Default chosen by the review. |
| as_of | timestamp | Build the dataset as of this moment. Default the review's as_of. |

