Skip to main content
Glama
vikranthviki

Causal Decision Agent

by vikranthviki

cfm_decompose

Read-only

Decompose outcome gaps between groups with counterfactual distributions, separating composition effects from coefficient/structure effects for causal insight.

Instructions

Chernozhukov-Fernandez-Val-Melly (2013) counterfactual decomposition.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
xYesPrimary running variable, regressor, or feature input for this estimator.
yYesOutcome variable column name or outcome array.
groupYesGroup or cohort identifier.
detailNoPayload depth: 'minimal' (~150 tokens) for sub-step calls where only the point estimate is needed; 'standard' (~1K tokens) for diagnostics + coefficient table; 'agent' (~2K tokens, default) adds violations / next_steps / suggested_functions so the LLM can plan its next call without another round-trip.agent
ks_testNoks_test parameter (bool).
n_threshNoNumber of thresh.
tau_gridNoGrid of tau values to evaluate.
as_handleNoIf true, cache the fitted result on the server and return result_id + result_uri alongside the JSON payload so a subsequent tools/call can chain without re-running.
data_pathYesAbsolute path or URL to a data file. Supported: .csv / .tsv / .txt (delimited), .parquet / .pq, .feather / .arrow, .xlsx / .xls, .dta (Stata), .json / .jsonl. Schemes: file://, s3://, gs://, https://.
referenceNoSame convention as ``machado_mata`` / ``melly_decompose``: ``reference=0`` builds the counterfactual from A's distribution regression coefficients applied to B's X (F_{Y<0|1>}), opposite to the reweighting convention in ``dfl_decompose``.
result_idNoOptional handle to a previously-fitted result (returned by an earlier call when as_handle=true). Tools that operate on a fitted object accept this in place of re-supplying data_path + columns.
data_columnsNoOptional column projection. Parquet/Feather/Stata loaders honour this for fast partial reads.
data_sample_nNoOptional uniform random subsample size (seed=0, deterministic) — useful on huge panels.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is known. However, the description adds no behavioral context beyond what annotations and schema provide — no mention of caching, output handling, or computational expectations. With annotations present, the description should still contribute some behavioral insight, but it contributes none.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, but the brevity is under-specification rather than conciseness. It provides only the method name and citation, adding no functional detail. The description is not front-loaded with key information; it only restates the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 13 parameters, 4 required, and many sibling decomposition tools, the description is grossly insufficient. It does not explain the method's purpose, data requirements, or how it relates to other decompositions. Even though an output schema exists, the description should at least state what the tool does and when it is appropriate; it does neither.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter already has a structured description. The tool description itself adds no extra semantic context for parameters, but per the baseline rule, 100% coverage warrants a score of 3 even without description-level parameter info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description is a noun phrase citing the estimator, e.g., 'Chernozhukov-Fernandez-Val-Melly (2013) counterfactual decomposition.' It does not use an action verb like 'computes' or 'decomposes,' and it fails to distinguish this tool from sibling decomposition methods such as melly_decompose and dfl_decompose. It essentially restates the tool name with a literature reference, making it tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance in the description about when to choose cfm_decompose over other counterfactual decomposition tools. The only comparison hint appears inside the schema's reference parameter description ('Same convention as machado_mata / melly_decompose'), not in the tool description. This leaves the agent without direction on selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools