Model Context Protocol server for the DAG Studio causal-inference engine. Provides tools for parsing, analyzing, and validating directed acyclic graphs (DAGs) for causal inference.
Nine tools with consistent structure but significant quality gaps. All tools have names starting with action verbs (parse_, analyze_, check_, get_, validate_, generate_, classify_, simulate_, compute_) and brief descriptions. However, parameter schemas are not visible in the provided source code, only tool names and descriptions are shown. Without access to the actual InputSchema and OutputSchema definitions in src/tools/*.ts files, schema quality cannot be verified. Descriptions are present but generic (10-50 chars), lacking WHEN to use, prerequisites, or recovery guidance. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) detected. Error handling returns raw error messages without recovery guidance. Output structure is undocumented.
Analyze a DAG to compute adjustment sets and causal paths
Check for overadjustment bias in a DAG
Classify effect modification (interaction) in a DAG
Compute bias in causal estimates from a DAG
Generate code for causal inference analysis from a DAG
Retrieve a canonical example DAG for testing and validation
Parse a DAG from Dagitty DOT notation
Simulate data from a DAG structure
Input and output schemas not visible in provided source. Cannot verify parameter types, constraints, descriptions, or return structure. Per HARD SCORING RULES, schema score must be 0 when schemas cannot be seen.
Tool descriptions are extremely brief (10-50 chars) and lack context. Missing: WHEN to use each tool, what it returns, prerequisites, and how it differs from similar tools. Descriptions should be 50-200 chars with actionable guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 36 | 2025-06-18+ | v2 |
Validate the DAG Studio engine against reference implementations
Error handling in src/index.ts returns raw error messages without recovery guidance. When a tool fails, the LLM receives only the error text with no hint about what to try next or whether the error is retryable.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. All tools are marked READ_ONLY in the spec but this is not reflected in tool descriptors, preventing LLMs from understanding idempotency and retry safety.
Output schemas are not documented. LLMs cannot infer what fields each tool returns, forcing them to guess at response structure and breaking downstream tool chaining.