identify()
KeyRuns the identification strategy tree on the approved subgraph: randomized → backdoor (pgmpy adjustment sets) → frontdoor → IV if declared → DiD/ITS if preconditions are declared → not_identifiable / exploratory_only. Returns the full review, including forbidden controls and every required assumption, each linked to supporting or missing memory. No estimate exists without this review — invariant I3.
identify(treatment, outcome, as_of)→ IDENTIFICATION REVIEWCallable over MCP as identify(treatment, outcome, as_of). REST mirror POST /v1/identify Planned — alpha is MCP-only
The question almost nobody asks before quoting an effect: can this even be estimated from data we have? identify() answers it on the approved graph — here, discount → win_rate is identifiable by backdoor with adjustment set {segment, rep_experience} — and names the forbidden controls and the assumptions doing the work. Without its review id, estimate() refuses to run.
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 |
|---|---|---|
| treatmentREQUIRED | string | The cause variable, e.g. "discount". |
| outcomeREQUIRED | string | The effect variable, e.g. "win_rate". |
| as_of | timestamp | Identify on the graph as it stood then. Default now. |

