Skip to main content
Glama
Meador793

Stats Explorer MCP

by Meador793

Stats Explorer MCP

Stats Explorer MCP: verified statistics your AI assistant calls instead of guessing numbers

An MCP server with 18 statistics and analytics tools an AI assistant can call instead of guessing numbers, on data files of any size:

  • Tests: t-tests, z-tests, ANOVA (with a Tukey HSD post-hoc that names the groups that differ), ANCOVA, MANOVA, chi-square, Fisher's exact, binomial and correlation.

  • A/B testing: A/B and A/B/n readouts for conversion rates and revenue-type metrics (lift with intervals, sample ratio mismatch check, Holm-adjusted comparisons, Bayesian probability to beat the control, segment breakdowns), and sample-size planning.

  • Analytics: totals, averages and counts by category (top N), and "what drives X?" rankings across every column.

  • Helpers: descriptive stats, confidence intervals, power analysis, a "which test should I use?" tool, and a data-file inspector.

The tools can read a developer's CSV, TSV, Excel or Parquet files by column name, so large datasets never get pasted into the chat. Each result includes:

  • the effect size and confidence interval,

  • a plain-English interpretation,

  • warnings when an assumption looks shaky.

On top of that:

  • Correct. 43 reference cases are checked against SciPy and statsmodels on every commit, to at least 6 significant figures.

  • Guided by default. The agent first decides whether your request needs a hypothesis test or just exploration. Hypothesis tests follow the six steps of Stats Explorer's Bring it all together guide, in order.

  • You stay in control. Every column, group, chart type and report section the agent proposes is shown to you to confirm or change before anything runs.

  • Private. Runs locally over stdio. It makes no network calls and needs no API key (unless you turn on Jev's enforce mode, below). Data files are read only from your workspace folders.

  • Checked by Jev, if you want. Connect Jev, TypeSafe's fast judgment model, alongside it, and Jev independently checks the test plan and the assistant's written conclusions against the computed results. You can run it without an orchestrator, enforced by Stats Explorer itself, or under a production orchestrator that signs every decision.

The engine, the file import and the six-step guide are shared with the Stats Explorer app, so results match the app exactly.

Connect it (pick your assistant)

GitHub Copilot in VS Code: about 1 minute, nothing else to install

  1. In VS Code, open Extensions (Ctrl+Shift+X / Cmd+Shift+X), search Stats Explorer MCP, click Install.

  2. Open Copilot Chat and switch the mode dropdown to Agent.

  3. Click the tools icon in the chat box and check that Stats Explorer is listed and ticked.

  4. Open the folder that holds your data and ask a question (see Example questions).

The extension registers the server itself, using VS Code's built-in runtime, so you don't need Node.js or an mcp.json file. Confirmations appear as forms you can edit.

Claude Code (terminal or the Claude Code panel in VS Code): about 2 minutes

You need Node.js 22 or later (24 LTS recommended). In a terminal, run this once:

claude mcp add -s user stats-explorer -e STATS_EXPLORER_CONFIRM_VIA=chat -- npx -y stats-explorer-mcp
claude mcp list

claude mcp list should show stats-explorer … ✓ Connected. Then start a new Claude session, because servers are loaded when a session starts. In VS Code: Ctrl+Shift+P → Developer: Reload Window, then New session. Type /mcp in the chat to see the servers the session has.

  • -s user makes it available in every folder (without it, only in the folder where you ran the command).

  • STATS_EXPLORER_CONFIRM_VIA=chat makes confirmations appear as messages in the chat, which you answer by replying. Claude Code doesn't always display form-style prompts.

  • If you have the VS Code extension installed, Stats Explorer: Copy Setup Command for Claude Code copies this command for you.

Claude Desktop, Cursor, Windsurf, Cline and other MCP clients

Add this to the client's MCP config (claude_desktop_config.json, .cursor/mcp.json, and so on), then restart the client:

{
  "mcpServers": {
    "stats-explorer": {
      "command": "npx",
      "args": ["-y", "stats-explorer-mcp"],
      "env": { "STATS_EXPLORER_ROOTS": "/path/to/your/data", "STATS_EXPLORER_CONFIRM_VIA": "chat" }
    }
  }
}

Requires Node.js 22 or later. STATS_EXPLORER_ROOTS is the folder (or folders) the tools may read; see Data files.

Example questions

Name the file in your message (or attach it); the assistant passes it to the tools and never pastes the data into the chat.

  • What's in sales.csv?

  • Total revenue by state in sales.csv, top 10. (group_summary)

  • What drives profit in sales.csv? (find_relationships, then follow-ups)

  • Show the distribution of order value and a box plot by segment.

  • Does average profit differ between the Consumer and Business segments? Is it significant? (six-step hypothesis test)

  • Did the new checkout page (variant B) increase conversion in experiment.csv? Break it down by device. (ab_test)

  • How many visitors do I need to detect a 10% lift on a 4% conversion rate, with 3,000 visitors a day? (ab_test_plan)

  • Does revenue differ between the three regions, and which ones? (ANOVA + Tukey HSD)

  • Make an HTML report of what we found and save it as findings.html.

The analyze, explore_data and hypothesis_test prompts (slash commands in VS Code and Claude) start the same flows.

Related MCP server: mix_server

Working with Jev (optional)

When both Stats Explorer and a Jev MCP server are connected to Claude or Copilot, they split the work. Stats Explorer computes every number, and Jev checks two things before you see a result:

  • The test plan: is this the right test, are the hypotheses right, are these the right columns?

  • The written conclusions: does every number match, is "significant" stated correctly, are there claims of cause the analysis can't support?

Stats Explorer also runs its own number and significance checks on every claim. Only claims that pass go into reports, and each report lists every check under Independent checks.

Mode

Set STATS_EXPLORER_JEV to

Who calls Jev

Good for

Cooperate

cooperate

The assistant, through your Jev MCP server, using packets Stats Explorer prepares

Working in Claude Code or Copilot without any orchestration tool

Enforce

enforce (plus TYPESAFE_API_KEY)

Stats Explorer, directly from the Jev API

Checks the assistant can't skip or alter

Orchestrated

orchestrated (plus STATS_EXPLORER_APPROVAL_SECRET)

Your orchestrator (LangGraph, Temporal, Step Functions and so on), which signs each decision

Production pipelines with audit logs

Quick start with Claude Code (no orchestrator):

claude mcp add -s user jev -e TYPESAFE_API_KEY=YOUR_KEY -- npx -y @jkudish/jev-mcp
claude mcp add -s user stats-explorer -e STATS_EXPLORER_JEV=cooperate -e STATS_EXPLORER_CONFIRM_VIA=chat -- npx -y stats-explorer-mcp
npx -y stats-explorer-mcp init-jev     # adds routing rules to CLAUDE.md and .github/copilot-instructions.md

Any Jev MCP server works (@jkudish/jev-mcp, jev-mcp, typesafe-mcp, …): the packets come in the shapes their tools take. In VS Code, set Stats Explorer › Jev: Mode. See docs/JEV.md for every mode and setting, the signed-approval format (with JavaScript and Python), what is sent to Jev, and the runnable orchestrator example in examples/orchestrator/.

How it works (default)

1. The agent classifies your request

Every analysis starts with start_analysis, where the agent picks a mode:

Your request sounds like…

Mode

What happens

"Does the drug change scores?", "Is A better than B?", "Is this difference significant?"

hypothesis_test

The six-step workflow below

"Summarise…", "Show me the distribution of…", "Chart X by Y", "What's the average, with a CI?"

explore

Descriptive tools and charts only: no hypotheses, no p-values, and no hypothesis section in the report

If it's unclear, the agent is instructed to ask you. Nothing else runs until start_analysis has been called.

2. Hypothesis tests follow the six steps, in order

Step (from the app's Learn tab)

Tool

1. State your question and choose the right test

state_hypotheses: test, columns, groups, H₀/H₁, direction and α, fixed before any result is seen

2. Validate your data against the test's assumptions

check_assumptions: shape, small skewed samples, group sizes, outliers, expected counts, ANCOVA slope equality, missing values, "who is missing from the sample?"

3. Check spread

check_spread: SD, IQR, coefficient of variation, outliers, variance ratio

4. Calculate power before you run

power_analysis: power for the smallest effect you care about, and the n needed for 80%

5. Run the test, then report honestly

run_test: runs exactly what you confirmed in step 1, with the p-value, effect size, CI and verdict

6. Sanity-check rare events against base rates

base_rate_check (PPV/NPV), or skip_step with a reason when it isn't a rare-event question

Calling a step out of order is refused with a message that names the next step. Only steps 4 and 6 can be skipped, and only with a reason that appears in the report. If step 2 shows the chosen test doesn't fit, re-stating the plan in step 1 is allowed and restarts the later steps. The app's guide calls this a principled revision, not p-hacking.

A hypothesis-test write-up: question, hypotheses, assumption checks, power, result and verdict

3. You confirm every selection

When the agent proposes columns, groups, a chart type or report sections:

  • Clients that support MCP forms (elicitation), such as VS Code, show you a form with the agent's choices pre-filled as dropdowns and checkboxes. Change anything, then accept or decline. Declining runs nothing.

  • Other clients get a CONFIRMATION NEEDED response listing the proposal, the alternatives and a one-time token. The agent is instructed to show you the choices and call again with the token only after you agree. A token only works for the exact selection it was issued for, so a changed selection is proposed again.

A selection you've confirmed isn't asked about twice in the same session.

4. Charts and reports

  • create_visualization: histogram, box plot, scatter (with least-squares line), bar (mean or count by category), line, and pie. These are the app's chart types. Returns an accessible SVG (light and dark mode) and can save it as .svg.

  • build_report: only when you ask for one, and containing only the sections you tick. A completed hypothesis test becomes a write-up in the app's format: the question, the hypotheses, how it was tested (with steps 2–4), what was found, the verdict and base rates. Explorations never get a hypothesis section. Saved as HTML (default) or Markdown in your workspace; existing files are not overwritten unless you say so.

Charts: box plot, histogram, scatter with fitted line, and bar chart

An exploration report with summary statistics, a confidence interval and a histogram

Images show real output on a sample dataset.

Tools

Tool

Purpose

start_analysis

Classify the request (hypothesis test or exploration)

inspect_data_file

Columns, types, missing values, categories and a preview of a data file

choose_test

Recommend the right test for a question

state_hypotheses, check_assumptions, check_spread, power_analysis, run_test, base_rate_check, skip_step

The six steps

describe

n, mean, SD, median, quartiles, range, skewness, kurtosis, shape, mean CI (optionally by group)

confidence_interval

CI for a mean (t) or a proportion (Wilson)

correlation

Pearson or Spearman r with CI and fitted line, without a p-value (a significance test goes through step 1)

group_summary

Totals, averages, medians, counts per category; top N (analytics)

ab_test_plan

Visitors and days needed for an A/B test, or the smallest lift a given sample can detect

find_relationships

Which columns relate most to a numeric outcome ("what drives X")

create_visualization, build_report

Charts and reports

workflow_status

Where the current analysis is, and the saved results

large_file_plan, job_status, cancel_job, manage_cache

Very large files: read all or a sample, background jobs, kept columns

Tests available in step 1: t-test (one-sample, paired, Welch or Student), z-test (mean with known σ, proportion), one-way ANOVA (with a Tukey HSD post-hoc, plus optional Bonferroni Welch pairs), ANCOVA, MANOVA, chi-square (goodness of fit, independence), Fisher's exact, exact binomial, correlation and A/B test.

ANOVA post-hoc (Tukey HSD). Every one-way ANOVA with 3 or more groups includes Tukey's HSD (Tukey–Kramer for unequal group sizes), on in-memory and very large files alike: the difference, adjusted p-value and simultaneous interval for every pair, the significant pairs marked ★ ("B > A"), the best group and whether it beats all others, and a letter display (groups sharing a letter don't differ). Reports name the groups that differ.

A/B tests (ab_test). From inline numbers or a file with a variant column and an outcome column:

  • metric: "conversion" (converted yes/no): two-proportion z-test, with Fisher's exact p when counts are small. metric: "continuous" (revenue, time, order value): Welch's t-test.

  • Every variant against the control: absolute lift (percentage points) and relative lift, each with an interval; Cohen's h or d.

  • Sample ratio mismatch check against the planned split (expected_split): a broken assignment blocks the decision.

  • A/B/n: an omnibus test (chi-square, or ANOVA with Tukey HSD) and Holm-adjusted p-values (or Bonferroni / none).

  • Bayesian view: probability each variant beats the control, probability of being best and the expected loss of shipping it (Beta-Binomial, computed by quadrature, so the numbers are reproducible).

  • The minimum detectable effect of the test as run, an optional mde (smallest lift that matters) to judge practical significance, an optional segment_column breakdown with a Simpson's-paradox warning, and a plain decision.

  • In the guided workflow, step 2 adds the sample ratio check and step 4 sizes power in lift terms.

The server also offers the prompts analyze, hypothesis_test and explore_data, which clients such as VS Code show as slash commands.

Data files

Stats Explorer is built for tabular formats (CSV, TSV, Excel and Parquet) to run hypothesis tests or explore statistics. Files are read with the app's own import code:

  • quoted fields, embedded commas and line breaks, BOMs, and tab, semicolon or pipe separators;

  • missing values (blank, NA, N/A, null, #N/A, …) are skipped;

  • numbers are parsed strictly ("12 kg" is text, not 12), while 1,234, $12.50 and 45% still count as numbers;

  • dates become YYYY-MM-DD text;

  • duplicate column names are renamed rather than overwritten;

  • Excel serial dates are converted;

  • Parquet files compressed with Snappy, gzip, zstd, Brotli or LZ4 are all read.

There is no size limit for CSV, TSV and Parquet files; see Large files.

JSON, BSON, NDJSON and NoSQL databases (MongoDB, CouchDB, Redis connection strings, …) are document data, not tables. For these, every tool answers with that statement and suggests exporting to CSV or Parquet first (for example mongoexport --type=csv). Inline rows containing nested objects or arrays get the same answer.

Files are read only from allowed folders, and symlinks that point elsewhere are refused:

  1. STATS_EXPLORER_ROOTS, if set (separated by : on macOS/Linux, ; on Windows), otherwise

  2. the workspace roots your MCP client reports, otherwise

  3. the server's working directory.

Large files (gigabytes to terabytes)

Files up to 512 MB are loaded into compact column storage (a 190 MB, 1,000,000-row CSV loads in about 8 seconds using under 0.5 GB of memory). Larger CSV, TSV and Parquet files have no size limit. They are streamed instead, in a single pass that every tool needs:

  • One pass, fixed memory. Each tool reads only the columns it uses, in parallel pieces (one per CPU core), and keeps running totals: counts, means, variances, sums of squares and cross-products. Memory does not grow with the file: about 0.5 GB with one reader, plus about 0.2 GB per extra parallel reader. A 2.5 GB, 13-million-row CSV took 45 seconds on 1 core and 22 seconds on 2; the same data as a 340 MB Parquet file took 9 seconds.

  • Exact where it can be. t-tests, z-tests, ANOVA (with pairwise comparisons), ANCOVA, MANOVA, chi-square, Fisher's exact, Pearson correlation, means, standard deviations, skewness, kurtosis and confidence intervals are exact on every row. Groups of up to 100,000 values keep their actual values, so everything about them is exact, medians included.

  • Estimated where it must be, and labelled. Medians, quartiles, histogram bars and outlier counts of larger groups come from a KLL quantile sketch (rank error about 0.03% in testing). Spearman's ρ comes from a random sample of 100,000 pairs, and inspect_data_file's count of different values in a column, above 10,000, from HyperLogLog (within about 2%). Results that contain estimates list them in large_file.approximate and in their warnings.

  • Asked first. If reading the whole file would take more than 2 minutes, you are asked whether to read every row (exact) or a quick sample of about 1% of the rows in blocks spread across the file (fast, approximate). Clients with forms show the choice as a form; otherwise the assistant asks you and calls large_file_plan.

  • Runs in the background. A read that takes longer than 40 seconds continues as a background job; the tool answers STILL RUNNING with a job_id, and job_status returns the result when it's ready (with progress and time left meanwhile). cancel_job stops it. Clients that support MCP progress notifications see a progress bar.

  • Read once. The workflow steps share one pass: step 1 reads the file, and steps 2 to 5 reuse the totals. With your consent, the columns read can be kept on disk (8 bytes per number, 4 per text value), so later questions on them take seconds. manage_cache lists or deletes them.

  • Same rules as small files. The streaming reader applies the app's import rules exactly. It was checked against the in-memory reader on 24 edge-case files and 300 random ones, and on 228 tool calls (tests, charts and full six-step workflows) across CSV and Parquet files, split into as many as 3 parallel pieces. Line breaks inside quoted values are handled: if a split point falls inside one, the file is re-read in one piece.

Excel files are always read whole (up to about 1.9 GB); export very large workbooks to CSV or Parquet.

Configuration

Variable

Default

Effect

STATS_EXPLORER_GUIDED

on

off exposes the individual test tools (t_test, anova, …) directly, without start_analysis and the six steps

STATS_EXPLORER_CONFIRM_SELECTIONS

on

off runs with the agent's column, chart and report choices without asking you

STATS_EXPLORER_ROOTS

workspace

Folders data files may be read from (and reports written to)

STATS_EXPLORER_STREAM_MB

512

CSV/TSV/Parquet files above this size are streamed (Parquet: by rows × columns)

STATS_EXPLORER_WORKERS

cores − 1

Parallel readers for large files (at most 16 by default)

STATS_EXPLORER_ASK_SECONDS

120

Ask before a full read expected to take longer than this

STATS_EXPLORER_BACKGROUND_SECONDS

40

Continue as a background job after this long

STATS_EXPLORER_SAMPLE_PERCENT

1

Size of the quick sample

STATS_EXPLORER_CACHE

ask

Keep columns read from large files: ask, on or off

STATS_EXPLORER_CACHE_DIR

system temp

Where kept columns go

STATS_EXPLORER_MAX_FILE_MB

no limit

Refuse files larger than this

STATS_EXPLORER_CONFIRM_VIA

auto

chat asks for confirmations in the conversation even if the client claims to support forms (recommended for Claude Code)

STATS_EXPLORER_HIDE_LINK

0

1 removes the one-line app link at the end of results

STATS_EXPLORER_APP_URL

Changes that link

STATS_EXPLORER_JEV

off

Jev checks: cooperate, enforce or orchestrated. See docs/JEV.md for its other settings

Accuracy

test/reference/generate.py computes expected values with SciPy and statsmodels for 43 cases. They cover every test and alternative, Welch and Student t-tests, p-values below 1e-30, ties in Spearman, ANCOVA (Type II SS), MANOVA with 2 and 3 outcomes, and file inputs with missing values. test/reference/guided.json adds the ANCOVA slope-equality F test and the step-4 power calculations (two-sample, one-sample, proportion and correlation), checked against statsmodels. test/reference/abtest.py checks Tukey HSD (studentized range, adjusted p-values, intervals and rejections against scipy.stats.tukey_hsd and statsmodels' pairwise_tukeyhsd) and every A/B number: z, p and one-sided p (proportions_ztest), lift intervals (confint_proportions_2indep), Wilson intervals, Fisher's exact, chi-square, Holm/Bonferroni (multipletests), the sample ratio check, Welch t-tests, the Bayesian probabilities and expected loss (numerical integration in SciPy) and sample sizes (NormalIndPower). npm test runs everything through real MCP clients over stdio (with and without form support) and requires agreement to a relative error of 1e-6.

Known approximations, also stated in the results:

  • power uses the normal approximation (within about 0.01 of exact power, matching statsmodels' NormalIndPower);

  • Spearman p-values use the t approximation (as SciPy does);

  • chi-square tests use no continuity correction;

  • on very large files, medians, quartiles, histogram bars, outlier counts and Spearman's ρ are estimated (see Large files).

Limits worth knowing

  • Confirmation forms appear only in clients that support MCP elicitation. Elsewhere the token flow relies on the agent relaying the proposal to you, as the server instructs. A token can't be guessed, and it can't be reused for a different selection.

  • Which mode a request needs is decided by the agent, guided by the server's instructions. If it picks the wrong one, say so; it can start a new analysis.

Development

npm install
npm test                      # reference, unit, guided-workflow and large-file tests
STATS_EXPLORER_STREAM_MB=0 npm test                               # the same, every file through the streaming path
STATS_EXPLORER_STREAM_MB=0 STATS_EXPLORER_EXACT_CAP=3 npm test    # ... using only one-pass summaries
npm run inspect               # open the MCP Inspector
npm run reference             # regenerate reference cases (needs Python + scipy + statsmodels)
npm run reference:ab          # regenerate the Tukey / A/B reference values and test/fixtures/experiment.csv
npm run jev:eval -- --dry-run # measure Jev on labeled cases (drop --dry-run and set TYPESAFE_API_KEY to call Jev)
cd vscode-extension && npm install && npm test && npm run package   # build the .vsix

src/engine/ is copied from the Stats Explorer app by npm run sync-engine -- <path-to-app>: the statistics, the data import module and the Learn tab's workflow text. Fix them in the app and re-sync, so the two never drift.

License

MIT

Available Tools

23 tools
ab_test_planA/B test sample sizeA
Read-onlyIdempotent

Plan an A/B test: visitors needed per variant to detect the smallest lift that matters (mde) at a given power, and/or the smallest lift detectable with a given n_per_variant; days needed from daily_traffic. Conversion: baseline_rate. Continuous: baseline_sd (and baseline_mean for a relative mde). Use in an exploration (planning a future test); a running hypothesis test sizes itself in step 4.

NameRequiredDescriptionDefault
mdeNoSmallest lift that matters: absolute (0.005 = +0.5 percentage points) or relative with mde_type "relative" (0.1 = +10%).
alphaNoSignificance level. Default 0.05.
powerNo
metricYes
mde_typeNoabsolute
variantsNo
alternativeNotwo-sided (default), greater (first > second / sample > value), or less.two-sided
baseline_sdNo
baseline_meanNo
baseline_rateNo
daily_trafficNo
n_per_variantNo
adjust_for_variantsNoSplit α across the comparisons with the control (Bonferroni) when there are 3+ variants.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuinely new behavioral information: that the tool works in two directions (solve for n given mde, or solve for mde given n) and that it is a pre-experiment planning aid rather than an analysis of observed data. It does not state the statistical assumptions baked in (α, power defaults) beyond what the schema shows.

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

Conciseness4/5

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

Dense and front-loaded — the two solve-for modes come first, then the required baseline inputs, then the usage rule. It reads as telegraphic notes ("Conversion: baseline_rate. Continuous: baseline_sd") rather than prose, which costs a little clarity on first read but wastes no sentences.

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

Completeness3/5

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

For a 13-parameter planning tool with no output schema, the description omits a key decision rule: only metric is required, so which of mde / n_per_variant / daily_traffic / baseline_* must be supplied is never stated, and the shape of the result (per-variant n, total, days) is only implied. Coverage is adequate to call it but leaves the agent to infer valid parameter combinations from the schema alone.

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

Parameters4/5

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

Schema coverage is only 31% across 13 parameters, but the description compensates well for the important ones: it explains mde semantics, that n_per_variant and mde are the two alternative solve-for inputs, that daily_traffic drives the days estimate, and that baseline_mean is only needed for a relative mde with continuous metrics. It adds a cross-parameter dependency (relative mde + continuous ⇒ baseline_mean) that the schema does not encode. Unexplained: alpha, variants, mde_type, alternative and adjust_for_variants are left to the schema.

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

Purpose5/5

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

States a specific verb and resource ("Plan an A/B test") and immediately enumerates the two concrete outputs: visitors needed per variant for a given mde, and the smallest detectable lift for a given n_per_variant. It also names the metric branches (conversion vs continuous) and the derived days-needed output, so an agent knows exactly what it gets back without opening the schema.

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

Usage Guidelines4/5

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

"Use in an exploration (planning a future test); a running hypothesis test sizes itself in step 4" gives an explicit when-to-use and a when-not-to-use. The exclusion is weaker than it could be because it refers to the alternative by workflow position ("step 4") rather than naming the sibling it competes with — most plausibly run_test and power_analysis — so the agent must infer the routing.

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

base_rate_checkStep 6: sanity-check rare events against base ratesA
Read-only

Step 6 (or standalone in an exploration). For rare-event questions (fraud, defects, diagnoses, churn): what share of positive flags is real (PPV). Give prevalence, sensitivity, specificity (0–1), or file + condition_column + test_column (0/1 columns). If the question is not about rare events, use skip_step 6 instead.

NameRequiredDescriptionDefault
fileNo
prevalenceNo
sensitivityNo
specificityNo
test_columnNo
condition_columnNo
confirmation_tokenNoOnly after the user has confirmed the proposed choices: the confirmation_token from the previous response.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered elsewhere. The description adds workflow context (step 6, standalone mode) but says nothing about what output is produced, why idempotentHint is false, or what happens when supplied prevalence/sensitivity values are inconsistent — gaps that matter for a calculation tool.

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

Conciseness4/5

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

Three compact sentences, front-loaded with the workflow position and the eligibility condition; the usage exclusion is placed last where it belongs. The middle sentence is telegraphic ('Give prevalence, sensitivity, specificity (0–1), or file + condition_column + test_column') but still parseable.

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

Completeness4/5

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

For a read-only, non-destructive calculation tool with no output schema and no required parameters, the description states both the computed quantity and the input options, plus the escape hatch to skip_step. It has no structured output contract to lean on, and the confirmation_token gating is only covered by the schema, but nothing essential to making a correct call is missing.

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

Parameters4/5

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

Schema description coverage is only 14%, so the description must carry the load — and it largely does, defining prevalence/sensitivity/specificity as 0–1 quantities and test_column/condition_column as 0/1 indicator columns, plus the two alternative call shapes. It does not explain whether the two modes can be mixed or which combinations are valid, which is why this is a 4 rather than a 5.

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

Purpose4/5

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

The description names a specific computation (what share of positive flags is real, i.e. PPV) for a defined class of problems (rare events: fraud, defects, diagnoses, churn), and ties itself to workflow position step 6. It is distinguishable from siblings, though the phrasing 'sanity-check' in the title is looser than the body text.

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

Usage Guidelines5/5

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

It states both when to use (rare-event questions, or standalone during exploration) and when not to (non-rare-event questions → use skip_step 6), naming the alternative tool explicitly. It also tells the agent which of two input modes to supply.

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

build_reportBuild a reportA

Builds a report from results created in this session, only when the user asks for one. include = the result ids the user wants (default: the current analysis). The user confirms the sections. A hypothesis-test write-up (question, hypotheses, how it was tested, findings, verdict, base rates) appears only for completed hypothesis tests; explorations get no hypothesis section. format html (default) or markdown; save_to writes a file in the workspace.

NameRequiredDescriptionDefault
titleNo
formatNo
includeNo
save_toNo
overwriteNo
confirmation_tokenNoOnly after the user has confirmed the proposed choices: the confirmation_token from the previous response.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only say readOnly=false, destructive=false, idempotent=false, openWorld=false; the description adds real behaviour: gated on explicit user request, confirmation-based section selection, conditional hypothesis section, format defaults, and that save_to writes into the workspace. Gaps remain around `overwrite` (which can replace an existing file, a write hazard the annotations do not flag) and what the call returns before confirmation.

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

Conciseness4/5

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

Front-loaded with the gating condition and scope in the first sentence, then parameter semantics, then content rules — every sentence carries information. The telegraphic fragments ('format html (default) or markdown; save_to writes a file in the workspace') are dense but slightly clipped rather than flowingly clear.

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

Completeness3/5

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

With six parameters, no output schema, and sparse schema descriptions, the definition covers the main inputs and content rules but not the full two-phase flow it implies: the confirm → confirmation_token → build sequence is only hinted at, and `overwrite` behaviour plus what the built report looks like are unstated. Adequate to invoke correctly in the common path, incomplete for the file-overwrite path.

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

Parameters4/5

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

Schema coverage is only 17% (just confirmation_token), so the description must carry the load and largely does: `include` = result ids with default 'current analysis', `format` = html default or markdown, `save_to` = writes a file to the workspace. `title` and `overwrite` are left undocumented, keeping it short of a 5.

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

Purpose5/5

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

States a specific verb and resource ('Builds a report') plus the source scope ('from results created in this session'), which no sibling tool shares — the nearest neighbours (create_visualization, describe, job_status) do different things. It also disambiguates what the report contains (hypothesis write-up vs exploration), so an agent knows exactly what artifact this produces.

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

Usage Guidelines4/5

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

Gives an explicit trigger condition: 'only when the user asks for one', which is exactly the gate an agent needs before calling a non-idempotent write tool. It also notes the user must confirm the sections. It doesn't name alternatives or state what to do when the user asks for a report with no prior results, but there are no competing report tools to route between.

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

cancel_jobCancel a large-file jobB
Read-onlyIdempotent

Stops a background job started by a tool that answered STILL RUNNING.

NameRequiredDescriptionDefault
job_idYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false, closedWorld), so the description need only add context. It does add which jobs are cancellable, but says nothing about what happens to partial results, whether cancelling a completed job errors, or what the call returns. There is mild tension between "Stops" and readOnlyHint=true, but the idempotent/non-destructive framing is consistent, so this reads as a control-plane action rather than a flagrant contradiction.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; the scope qualifier is attached directly to the action. Slightly too terse for a tool with real edge cases, but nothing is wasted.

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

Completeness2/5

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

For a one-parameter control tool with no output schema and no parameter descriptions, the description leaves the agent guessing about the outcome: does cancelling discard results, does it return a final status, and how should an already-complete job be handled? The bare annotation set does not cover these, so the gaps are meaningful.

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 coverage is 0%, so the description must compensate for the undocumented job_id. It partially does by implying job_id is the identifier returned by the tool that answered STILL RUNNING, which is useful provenance, but it gives no format, validity, or error semantics for that parameter.

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

Purpose4/5

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

States a specific verb and resource ("Stops a background job") plus a scope qualifier (only jobs started by a tool that answered STILL RUNNING). An agent can distinguish it from the read-only job_status sibling, though the description never names that sibling explicitly.

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

Usage Guidelines3/5

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

The phrase "started by a tool that answered STILL RUNNING" gives a usable trigger condition for invocation, implying the job_id came from that prior response. However, there is no when-not guidance (e.g., job already finished), no mention of the job_status alternative for polling instead of cancelling, and no stated preconditions.

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

check_assumptionsStep 2: validate the data against the test's assumptionsA
Read-only

Step 2. Checks shape (skew, kurtosis, small samples), group sizes, outliers, expected counts, ANCOVA slope equality and missing values for the test fixed in step 1. If an assumption fails, revising the test now (state_hypotheses again) is principled.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=true, destructiveHint=false), and the description adds real content beyond them by enumerating exactly which assumptions are tested, so the agent knows the scope of the check. It doesn't describe the failure signal or response shape, and the idempotentHint=false is left unexplained for what looks like a pure read.

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

Conciseness5/5

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

Two tight sentences, with the step number front-loaded so the agent immediately places it in the sequence, followed by the concrete check list and the remediation pointer. No filler and nothing redundant with the schema.

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

Completeness4/5

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

With no parameters and no output schema, the description is nearly complete: it says what is validated and what to do if validation fails. The remaining gap is the return shape — an agent can't tell whether it gets per-assumption pass/fail flags, statistics, or a single verdict — but everything needed to decide to call it is present.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline applies. The description correctly implies all inputs come from prior workflow state rather than arguments.

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

Purpose5/5

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

States a specific verb ('Checks') and an enumerated set of resources: shape (skew, kurtosis, small samples), group sizes, outliers, expected counts, ANCOVA slope equality, missing values. It anchors itself in the workflow ('for the test fixed in step 1'), which clearly separates it from siblings like choose_test, state_hypotheses and run_test.

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

Usage Guidelines4/5

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

Explicitly positions the tool as step 2, downstream of step 1's test selection, so the 'when' is unambiguous. It also routes the agent on failure conditions by naming the alternative — 'revising the test now (state_hypotheses again) is principled' — though it doesn't state the prerequisite that a test must already be fixed or what to do on a pass.

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

check_spreadStep 3: check spreadA
Read-only

Step 3. Standard deviation, IQR, coefficient of variation, outliers and variance ratio for the data in the plan.

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds only that the computation targets 'the data in the plan', which tells the agent it depends on prior workflow state, but says nothing about what happens if the plan lacks the needed data. Oddly, idempotentHint=false sits unreconciled against a read-only metric computation, and the description does not clarify it.

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

Conciseness4/5

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

One short sentence that front-loads the named metrics with no filler. Minor redundancy: 'Step 3' is repeated from the title, so the first two words spend a little space restating structured metadata.

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

Completeness3/5

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

With no parameters and no output schema, the description is the only place an agent can learn what comes back, and it never says whether results are appended to the plan, returned inline, or persisted for build_report. The metric list is adequate for identification but leaves the output contract and failure behavior unspecified.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. It correctly does not waste words on phantom arguments and instead points at the implicit input source, 'the data in the plan'.

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

Purpose4/5

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

The description names a concrete resource (data in the plan) and enumerates the specific statistics produced: standard deviation, IQR, coefficient of variation, outliers and variance ratio. That is far more specific than 'analyze spread'. However, it never contrasts itself with nearby siblings such as describe, group_summary or correlation, so an agent must infer the boundary.

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

Usage Guidelines3/5

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

'Step 3' plus the title 'Step 3: check spread' implies the tool belongs to an ordered workflow and should follow the earlier steps, which is real positional guidance. There is no explicit when-to-use/when-not statement and no named alternative for the case where the agent already has spread numbers from describe or group_summary.

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

choose_testChoose a statistical testA
Read-onlyIdempotent

Recommends which test tool to run for a research question, with the assumptions to check. Call this first when unsure.

NameRequiredDescriptionDefault
goalYesab_test: compare variants of an experiment (A/B/n) against a control; plan_ab_test: sample size for one.
pairedNoSame subjects measured twice / matched pairs.
has_covariateNoA numeric variable to adjust for.
multiple_outcomesNoSeveral numeric outcomes analysed together.
outliers_or_ranksNoData are ranks, ordinal, or have strong outliers.
outcome_is_numericNoA/B tests: the metric is a number per visitor (revenue, time) rather than converted yes/no.
known_population_sdNo

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds that the result includes assumptions to check, but with no output schema it does not state the shape of the recommendation (a single tool name? ranked options? rationale text?), leaving the return value under-specified.

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

Conciseness5/5

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

Two sentences, both earning their place, with the purpose front-loaded and the routing rule second. No redundancy or filler.

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

Completeness3/5

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

For a 7-parameter decision-aid with no output schema, the description omits how the recommendation is returned and under what conditions it declines to recommend. With read-only annotations already covering behavior and the schema covering params well, this is adequate but has clear gaps in explaining the response.

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 86% and the goal enum documents its tricky members (ab_test vs plan_ab_test), so the schema carries the semantic load. The description mentions none of the seven parameters and adds nothing beyond what the schema already explains. Baseline 3 applies.

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

Purpose4/5

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

Names a specific verb and resource ('Recommends which test tool to run for a research question') and adds a second output ('with the assumptions to check'), which distinguishes it from sibling tools like run_test and check_assumptions. It stops short of naming those siblings explicitly, so the differentiation is inferable rather than stated.

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

Usage Guidelines4/5

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

'Call this first when unsure' gives a concrete decision rule for invoking this routing tool before run_test or check_assumptions. It gives no guidance on when NOT to call it (e.g., when the test is already known), so an agent must infer that.

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

confidence_intervalConfidence intervalC
Read-only

CI for a mean (column the user asked about) or a proportion. The user confirms the column first.

NameRequiredDescriptionDefault
nNo
fileNoPath to the data file: CSV, TSV, Excel (.xlsx/.xls) or Parquet. If the user attached the file to the chat, pass its path or name here (a file:// link, @name or #file:name also works); do not paste its contents. Relative names are found in the workspace folders. Files of millions of rows are fine. JSON/BSON and other NoSQL data are not tabular and are not supported.
typeYes
columnNo
valuesNo
successesNo
confidenceNoConfidence level for intervals. Default 0.95.
confirmation_tokenNoOnly after the user has confirmed the proposed choices: the confirmation_token from the previous response.

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds one genuinely useful behavioral fact — a user confirmation step precedes the call — but says nothing about how the confirmation_token round-trip works, what a pending state returns, or how inputs are validated.

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

Conciseness4/5

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

Two short sentences with no filler, and the quantity definition is front-loaded. The brevity is not padded, though it edges toward under-specification for an 8-parameter tool.

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

Completeness2/5

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

With 8 parameters, 38% schema coverage, no output schema, and two structurally different modes, the description should explain which inputs go together and what the response contains (interval bounds, point estimate, method). It does none of that, leaving the agent to guess at call shape.

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

Parameters2/5

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

Schema description coverage is only 38% of 8 parameters, and the description compensates almost nothing: it names 'column' but never explains the mutually exclusive input modes (column/values for a mean, successes/n for a proportion) that determine which parameters are required. The agent must infer the entire parameter relationship from an undocumented enum and four bare numeric/string fields.

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

Purpose4/5

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

States a specific computation and its two modes (CI for a mean, CI for a proportion), which is enough to distinguish it from siblings like check_spread or run_test at a glance. No explicit sibling differentiation is offered, and the parenthetical '(column the user asked about)' reads as an instruction to the agent rather than a scope statement.

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?

'The user confirms the column first' is a workflow prerequisite, not usage guidance — it never says when to pick this over run_test, describe, or check_spread, nor what happens when the requested quantity is neither a mean nor a proportion. The only actionable hint is the implicit two-step confirm-then-call flow.

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

correlationCorrelation (descriptive)A
Read-only

Strength and direction of the relationship between two numeric columns (r or ρ, CI, least-squares line), WITHOUT a p-value. To test whether a relationship is significant, use a hypothesis_test analysis with test "correlation". The user confirms the columns first.

NameRequiredDescriptionDefault
xNo
yNo
fileNoPath to the data file: CSV, TSV, Excel (.xlsx/.xls) or Parquet. If the user attached the file to the chat, pass its path or name here (a file:// link, @name or #file:name also works); do not paste its contents. Relative names are found in the workspace folders. Files of millions of rows are fine. JSON/BSON and other NoSQL data are not tabular and are not supported.
methodNopearson
x_nameNo
y_nameNo
x_columnNo
y_columnNo
confidenceNoConfidence level for intervals. Default 0.95.
confirmation_tokenNoOnly after the user has confirmed the proposed choices: the confirmation_token from the previous response.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the safety bar is low; the description still adds real value by disclosing that no p-value is returned and that a user confirmation step precedes execution. It does not say whether confirmation_token is mandatory or what happens if it is omitted.

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

Conciseness5/5

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

Three short sentences, front-loaded with what the tool computes, then the alternative, then the prerequisite. No filler.

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

Completeness3/5

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

For a 10-param, no-output-schema analytical tool the description covers purpose and the confirm-first workflow but leaves the input source (arrays vs file) and duplicate column-name parameters unexplained, which is exactly the ambiguity an agent will hit when constructing a call.

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

Parameters2/5

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

With 10 parameters and only 30% schema coverage, the description carries the burden but does not: it never explains the x/y arrays versus file versus x_name/y_name versus x_column/y_column alternatives, nor what pearson vs spearman do. Only the method choice ('r or rho') and CI are loosely implied.

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

Purpose5/5

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

The definition names a specific computation (strength/direction between two numeric columns) and enumerates the outputs: r or rho, CI, least-squares line. Its explicit exclusion of a p-value separates it cleanly from the significance-testing siblings.

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

Usage Guidelines4/5

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

It gives a clear when-not ('WITHOUT a p-value') and routes significance testing to a hypothesis_test with test "correlation", plus notes the user must confirm the columns first. The one weakness is that no sibling tool is literally named hypothesis_test (the list has run_test/choose_test), so the redirect is slightly ambiguous.

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

create_visualizationCreate a chartA

Creates a chart for the columns the user asked to see: histogram (column), box_plot (column, optional group_column), scatter (x_column, y_column), bar (x_column categories, optional y_column mean), line (x_column, y_column), pie (x_column categories, optional y_column sum). The user confirms the chart type and columns first. Optional save_to (.svg). Charts are kept for build_report.

NameRequiredDescriptionDefault
binsNo
fileYes
chartYes
titleNo
columnNo
save_toNo
x_columnNo
y_columnNo
overwriteNo
group_columnNo
confirmation_tokenNoOnly after the user has confirmed the proposed choices: the confirmation_token from the previous response.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only declare the safety profile (not read-only, non-destructive, non-idempotent); the description adds genuinely new behavior: a confirmation-token gate on the proposed choices and persistence of charts for later report building. It omits what happens on overwrite and what `file` refers to, keeping it below a 5.

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

Conciseness4/5

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

Dense but front-loaded: the chart-type-to-column mapping comes first, then the confirmation precondition, then persistence. Nearly every clause carries information, though the chart-type list makes it a heavy single paragraph that could be split for scanability.

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

Completeness3/5

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

For an 11-parameter mutation tool with no output schema, the description covers the core selection and confirmation workflow well. However, `file` is required yet never explained, and `overwrite`, `bins`, and `title` have no guidance anywhere, leaving real gaps for correct invocation.

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

Parameters4/5

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

Schema description coverage is only 9%, so the description carries most of the burden — and it does, by mapping each chart type to its required columns (e.g. box_plot needs column + optional group_column; pie needs x_column categories with optional y_column sum). Still leaves `file`, `title`, `bins`, and `overwrite` unexplained.

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

Purpose5/5

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

Opens with a specific verb+resource ('Creates a chart') and immediately enumerates the six supported chart types, making it clearly distinguishable from siblings like describe, group_summary, and build_report. An agent knows exactly what output this produces.

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

Usage Guidelines4/5

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

States a clear precondition ('The user confirms the chart type and columns first') and a downstream relationship ('Charts are kept for build_report'), which tells the agent both when to call and what the result feeds into. It does not explicitly name an alternative tool for non-chart exploration, so not quite a 5.

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

describeDescriptive statisticsB
Read-only

n, mean, SD, median, quartiles, range, skewness, kurtosis, shape and CI for the mean, for a column the user asked about (optionally by group). The user confirms the columns first.

NameRequiredDescriptionDefault
fileNoPath to the data file: CSV, TSV, Excel (.xlsx/.xls) or Parquet. If the user attached the file to the chat, pass its path or name here (a file:// link, @name or #file:name also works); do not paste its contents. Relative names are found in the workspace folders. Files of millions of rows are fine. JSON/BSON and other NoSQL data are not tabular and are not supported.
nameNo
columnNo
valuesNo
confidenceNoConfidence level for intervals. Default 0.95.
group_columnNo
confirmation_tokenNoOnly after the user has confirmed the proposed choices: the confirmation_token from the previous response.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the important confirmation prerequisite ('The user confirms the columns first'), but it doesn't explain the confirmation_token flow, the idempotentHint=false behavior, or what happens if no confirmation is given.

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

Conciseness4/5

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

The description is compact and front-loads the output list, followed by the scope and confirmation constraint. It is dense but every sentence carries information; a 5 is withheld only because the statistics list is somewhat mechanical.

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

Completeness3/5

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

There is no output schema, and the description helpfully enumerates the statistics returned, which is good. But for a 7-parameter tool with multiple input modes and a confirmation-token workflow, it omits how those parameters interact, leaving an agent to infer behavior from sparse schema descriptions.

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

Parameters2/5

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

With only 43% schema description coverage across 7 parameters, the description needs to compensate but largely doesn't. It maps 'column' and 'by group' to column and group_column, and mentions confidence intervals, but leaves the 'name', 'values', and 'file' input modes entirely unexplained – an agent cannot tell from the description that values can be supplied directly instead of a file/column.

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

Purpose4/5

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

The description states a specific set of outputs (n, mean, SD, median, quartiles, range, skewness, kurtosis, shape, CI) for a column, optionally by group, which is clearly a descriptive-statistics operation. It doesn't distinguish itself from close siblings like group_summary, check_spread, or confidence_interval, so it stops short of a 5.

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

Usage Guidelines3/5

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

It implies the tool is for a column the user asked about and that the user must confirm columns first, which is useful workflow context. However, it never says when to use this instead of group_summary, check_spread, or confidence_interval, nor when not to use it.

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

find_relationshipsWhat relates to a columnA
Read-onlyIdempotent

For open analytics questions such as "what drives revenue?", "what is related to churn time?" or "which factors matter for score?": ranks every other column (or the ones given) by how strongly it relates to a numeric target column. Pearson r for numeric columns, correlation ratio η plus the highest/lowest group for categorical ones. Descriptive (no p-values); follow up on the top findings with group_summary, correlation, charts or a hypothesis test. Works on files of any size. Use it in an explore analysis. The user confirms the target and the columns first.

NameRequiredDescriptionDefault
topNo
fileYesThe data file the user named or attached (path or name; never its contents).
targetYesThe numeric outcome to explain, e.g. Revenue.
columnsNoColumns to consider (default: all others).
confirmation_tokenNoOnly after the user has confirmed: the confirmation_token from the previous response.

TDQS

A4.5/5.0
Behavior4/5

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

Beyond the readOnly/idempotent annotations, it discloses the method (Pearson r for numeric, correlation ratio η plus highest/lowest group for categorical), that output is descriptive with no p-values, and that it scales to files of any size. The confirmation-token prerequisite is left to the schema rather than restated, which is the only gap.

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

Conciseness4/5

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

Front-loads the motivating question pattern, then the mechanics, then next steps — a logical flow with little waste. It is dense and slightly long for one paragraph, but nearly every clause carries information the agent needs.

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

Completeness4/5

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

With no output schema, the description still conveys what comes back (a ranking by association strength, group extremes for categoricals) and the confirmation workflow. It stops short of describing result shape or ordering/truncation behavior tied to `top`, which would have made it complete.

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

Parameters4/5

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

Schema coverage is 80%, so the baseline is 3; the description adds that `target` must be numeric and that `columns` defaults to 'every other column'. It does not clarify what `top` limits (the schema has no description for it either), which keeps it from a 5.

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

Purpose5/5

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

States a specific verb+resource outcome: ranks every other column by strength of relation to a numeric target, with concrete example questions ('what drives revenue?'). It also implicitly separates itself from the sibling `correlation` by being a broad exploratory ranking over all columns rather than a single pairwise computation.

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

Usage Guidelines5/5

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

Explicitly frames the when-to-use case (open analytics questions), names the follow-up alternatives (group_summary, correlation, charts, hypothesis test), and states the precondition that the user confirms the target and columns first. It also says to use it inside an explore analysis, giving the agent clear routing.

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

group_summarySummary by groupA
Read-only

Analytics-style breakdown: count, sum, mean, median, min, max or SD of a numeric column for each category of another column (e.g. total revenue by region, average order value by segment, top 10 products by profit, rows per status), sorted, top N. Without value_column it counts rows per category. Descriptive only, no p-values. The user confirms the columns first.

NameRequiredDescriptionDefault
topNo
fileNoPath to the data file: CSV, TSV, Excel (.xlsx/.xls) or Parquet. If the user attached the file to the chat, pass its path or name here (a file:// link, @name or #file:name also works); do not paste its contents. Relative names are found in the workspace folders. Files of millions of rows are fine. JSON/BSON and other NoSQL data are not tabular and are not supported.
statsNoWhich numbers to show (default count, sum, mean, median; just count without value_column).
sort_byNo
descendingNo
group_columnYes
value_columnNo
confirmation_tokenNoOnly after the user has confirmed the proposed choices: the confirmation_token from the previous response.

TDQS

A3.8/5.0
Behavior4/5

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

The annotations already declare this as a non-destructive, read-only, closed-world operation, so the description need not restate safety. It adds useful behavioral context: results are descriptive only, no p-values are produced, omitting value_column switches to row counts, and confirmation is required before execution.

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

Conciseness4/5

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

The description is front-loaded with the core operation and uses short follow-up sentences for key constraints. The first sentence is dense with examples and statistic names, but those examples earn their place by clarifying the tool's scope.

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

Completeness3/5

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

The definition is adequate for the core grouped-summary use case, but for an 8-parameter tool with no output schema it omits some parameter-level details and does not describe the return shape or top-N behavior beyond a brief mention. The schema covers some gaps, such as file input and confirmation_token, but not all.

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?

With schema description coverage at 38%, the description does add meaning for the core parameters: group_column is the category, value_column is the numeric column, stats are the summary measures, and sorting/top N are mentioned. However, it does not clarify sort_by, descending, top limits/defaults, or file handling, leaving several parameters dependent on the schema.

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

Purpose4/5

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

The description gives a clear verb-like operation and resource: grouped summary statistics over a numeric column by another category column. It distinguishes the tool from inferential siblings by stating 'Descriptive only, no p-values,' though it does not explicitly name alternatives such as describe or run_test.

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

Usage Guidelines4/5

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

The examples make the intended use cases concrete, and the 'Descriptive only, no p-values' line excludes inferential use cases. It also notes the workflow prerequisite that the user confirms the columns first, but it does not explicitly route the agent to named alternative tools.

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

inspect_data_fileInspect a data fileA
Read-onlyIdempotent

Lists the columns of a local CSV/TSV/JSON file with their types, missing values, ranges and category values, plus a 5-row preview. Use before running tests on a file so you pass correct column and group names.

NameRequiredDescriptionDefault
fileYesPath to the data file: CSV, TSV, Excel (.xlsx/.xls) or Parquet. If the user attached the file to the chat, pass its path or name here (a file:// link, @name or #file:name also works); do not paste its contents. Relative names are found in the workspace folders. Files of millions of rows are fine. JSON/BSON and other NoSQL data are not tabular and are not supported.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds useful output behavior (a preview plus per-column stats), but it contradicts the schema on supported formats by listing JSON as a valid input when the file parameter explicitly excludes JSON/BSON - a misleading claim an agent could act on.

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

Conciseness5/5

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

Two sentences with zero waste: the first front-loads what is returned, the second front-loads when to call it. Nothing redundant with title or schema.

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

Completeness4/5

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

With no output schema, the description correctly carries the return-value burden by enumerating the reported statistics and the preview size. It is nearly complete for a one-parameter read-only tool; the only gap is the conflicting statement about supported file formats.

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?

Only one parameter, and the schema documents it at 100% coverage including attachment conventions (file://, @name, #file:), relative path resolution and large-file tolerance. The description adds no parameter semantics beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb ('Lists the columns') plus what exactly is reported: types, missing values, ranges, category values and a 5-row preview. That distinguishes it from siblings like describe or group_summary, though it slightly misfires on scope by naming JSON as supported when the schema says JSON/BSON is not supported.

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

Usage Guidelines4/5

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

Gives a concrete when-to-use: 'before running tests on a file so you pass correct column and group names', which ties it to run_test/choose_test in the sibling list. It offers no exclusions or alternatives for cases where a full profiling tool (describe) would be a better fit.

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

job_statusWait for a large-file jobA
Read-onlyIdempotent

For a tool that answered STILL RUNNING: waits up to wait_seconds for the background job, then returns its result (the same result the tool would have returned) or its progress so far.

NameRequiredDescriptionDefault
job_idYes
wait_secondsNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the description's job is to add behavior beyond that, and it does: the wait is bounded by wait_seconds, and the return is either the original tool's result or a progress snapshot. It doesn't cover failure states or confirmation of what happens exactly at the wait boundary, so not a 5.

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

Conciseness4/5

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

One compact sentence, front-loaded with the trigger condition rather than burying it. The parenthetical 'the same result the tool would have returned' is slightly redundant but earns its place by clarifying equivalence.

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

Completeness4/5

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

With only two parameters, no output schema, and annotations covering safety, the description supplies the remaining essentials: trigger, bounded wait, and dual return (result vs. progress). Explicit failure/timeout behavior would complete it, but nothing critical is missing for correct invocation.

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 0%, so the description must compensate. It explains wait_seconds as a wait bound ('waits up to wait_seconds'), which adds meaning over the schema's bare numeric bounds, but it says nothing about job_id's origin or format. Partial compensation merits the baseline 3.

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

Purpose4/5

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

The description states a concrete action: it 'waits up to wait_seconds for the background job, then returns its result ... or its progress so far.' That gives verb+resource+outcome. It doesn't differentiate itself from siblings like cancel_job or workflow_status, so it isn't a 5.

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

Usage Guidelines4/5

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

The opening clause 'For a tool that answered STILL RUNNING' is an explicit trigger condition — a strong when-to-use signal. It lacks any when-not guidance (e.g., don't use after a job has already completed, use cancel_job to abort instead), which keeps it below 5.

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

large_file_planChoose how to read a large fileA
Read-onlyIdempotent

Only when a tool answered LARGE FILE, and only after asking the user: record their choice for that file. choice "full" reads every row (exact results, can take a long time, runs in the background); "sample" reads about 1% of the rows in blocks spread across the file (quick, approximate). save_columns keeps the columns that are read on disk so later questions on them are fast. Then call the original tool again.

NameRequiredDescriptionDefault
fileYes
choiceYes
save_columnsNo

TDQS

A4/5.0
Behavior1/5

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

The annotations declare readOnlyHint=true, but the description says it records the user's choice and that save_columns keeps columns on disk. Those are persistent state changes, which contradicts the read-only annotation.

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

Conciseness5/5

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

The description is dense but front-loaded with the critical trigger conditions. Every clause adds useful information about eligibility, choice semantics, caching, and the required follow-up call.

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

Completeness4/5

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

For a three-parameter tool with no output schema, it explains the trigger, the choice tradeoffs, the persistence option, and the next action. It does not describe what confirmation or return value the agent should expect, but the core call behavior is covered.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry parameter meaning. It explains both enum values for choice in detail and explains the effect of save_columns; only the file parameter remains unexplained, though its name is fairly self-evident.

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

Purpose5/5

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

The description uses a specific verb and resource: it records the user's choice for a specific large file. It also clearly distinguishes the tool from the original data-reading tool by tying its use to a prior 'LARGE FILE' response.

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

Usage Guidelines5/5

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

It gives explicit preconditions: only after a tool answered LARGE FILE and only after asking the user. It also tells the agent the next step: call the original tool again.

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

manage_cacheSaved large-file columnsB
DestructiveIdempotent

Lists or deletes the columns kept on disk from large files (see large_file_plan save_columns). action "list" or "clear" (all, or one file).

NameRequiredDescriptionDefault
fileNo
actionYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered structurally; the description adds what actually gets removed ('columns kept on disk'). It does not say whether cleared columns can be regenerated, whether confirmation is required, or what 'list' returns — meaningful gaps for a destructive op.

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

Conciseness4/5

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

Two short sentences with the verb and resource front-loaded and a useful pointer to the related tool. The nested quoting around "list" and "clear" is slightly awkward but not wasteful.

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

Completeness3/5

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

With destructive annotations present but no output schema, the description covers the mutation side adequately but leaves the read side underspecified — an agent can't tell what a 'list' returns or in what form. For a 2-parameter tool this is acceptable but not complete.

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 0% and there are no property descriptions, so the description must carry the load. It does explain the enum meanings ('list'/'clear') and that scope can be all files or one file, which effectively documents the optional `file` parameter, but it never names `file` or says what it should contain (path? name?).

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

Purpose4/5

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

The description gives a specific resource ('columns kept on disk from large files') and two concrete operations ('list', 'clear'). It clearly distinguishes the resource from siblings and points back to the producing tool (large_file_plan save_columns), though it doesn't name a competing sibling to steer away from.

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

Usage Guidelines3/5

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

It states the two actions and their scope ('all, or one file'), which implies when each is used, but there is no explicit when-to-use/when-not guidance or prerequisite such as a required prior large_file_plan run. Usage is inferred rather than stated.

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

power_analysisStep 4: calculate power / plan sample sizeA
Read-only

In a hypothesis test (step 4): power of the planned test for the smallest effect the user cares about, using the data's sample size. smallest_effect is Cohen's d for means, r for correlations, or the true proportion p₁ for proportion tests. Ask the user for it; if they don't know, pass use_conventional: true. In an exploration: give two of effect_size, n_per_group, power to plan a two-group study.

NameRequiredDescriptionDefault
alphaNo
powerNoTarget power (default 0.8 in a hypothesis test).
alternativeNotwo-sided
effect_sizeNo
n_per_groupNo
smallest_effectNo
use_conventionalNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, non-destructive, non-idempotent, and closed-world behavior. The description adds important behavioral context: it is a calculation tool that may require user input (smallest_effect) and offers a conventional fallback. Return values are not described, but for a read-only calculation tool with no output schema, this is a minor gap.

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

Conciseness4/5

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

The description is densely packed but front-loads the hypothesis-test case and then covers exploration. Every sentence contributes useful information, though a slightly more structured format (e.g., separating modes) could improve readability.

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

Completeness4/5

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

Given the tool's complexity (7 parameters, no output schema, annotations present), the description covers the two main modes and the most complex parameter (smallest_effect). It omits details on alpha, alternative, and return values, but these are either defaulted in the schema or inferable from the calculation context.

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 only 14% (only 'power' is described). The description compensates by explaining smallest_effect (Cohen's d, r, or p₁) and the use_conventional fallback, and it mentions effect_size, n_per_group, and power for exploration. However, alpha and alternative are not explained, leaving notable gaps.

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

Purpose4/5

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

The description clearly states what the tool does: compute power (hypothesis test) or plan sample size (exploration). It distinguishes two distinct modes of operation, though it does not name sibling tools like run_test or confidence_interval as alternatives.

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

Usage Guidelines4/5

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

It provides explicit guidance for two scenarios: in a hypothesis test, ask the user for smallest_effect, and if unknown, pass use_conventional: true; in an exploration, supply two of effect_size, n_per_group, and power. No when-not-to-use guidance is given, but the context is clear.

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

run_testStep 5: run the testA
Read-only

Step 5. Runs exactly the test, columns and hypotheses the user confirmed in step 1 and returns the statistic, p-value, effect size, CI and verdict. Requires steps 1–4.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, so safety is covered; the description adds the non-obvious behavioral fact that the call takes no inputs and instead recomputes from state confirmed in step 1, plus the exact result fields returned. It does not state what happens when prerequisites are missing (error vs empty result), which matters given idempotentHint=false.

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

Conciseness5/5

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

Two sentences, front-loaded with the step number and the action, then the outputs and prerequisite. No filler and nothing that could be cut without losing information.

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

Completeness4/5

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

With no output schema, the description compensates by listing the returned fields, and it states the workflow prerequisite. What remains unstated is the failure behavior when steps 1–4 are incomplete and whether re-running alters state, both relevant to a computation marked non-idempotent.

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

Parameters4/5

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

There are zero parameters, so the baseline is 4. The description usefully explains why: the call is driven entirely by the test, columns and hypotheses confirmed in step 1 rather than by arguments, which tells the agent not to look for input fields.

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

Purpose5/5

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

States a specific verb (runs) and resource (the test) plus the exact scope: 'exactly the test, columns and hypotheses the user confirmed in step 1.' That scope phrase implicitly separates it from choose_test and check_assumptions in the sibling list, which select or validate rather than execute. It also enumerates the outputs (statistic, p-value, effect size, CI, verdict), so an agent knows what comes back.

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

Usage Guidelines4/5

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

'Requires steps 1–4' gives an explicit prerequisite and the 'Step 5' framing makes the position in the workflow unambiguous. It does not name alternatives or say what to do if prerequisites are unmet, so it stops short of full when/when-not guidance.

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

skip_stepSkip step 4 or 6 with a reasonA
Read-only

Only steps 4 (power) and 6 (base rates) can be skipped, with a short reason that will appear in the report.

NameRequiredDescriptionDefault
stepYes
reasonYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is largely covered. The description adds one genuinely useful behavioral fact — the reason appears in the report — but does not say whether the skip persists, can be undone, or how it affects a running workflow, and there is a mild tension between 'skip' and readOnlyHint that is left unresolved.

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

Conciseness5/5

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

One sentence, no filler, with the hard constraint front-loaded before the secondary detail about the reason appearing in the report.

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

Completeness3/5

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

For a two-parameter tool with no output schema, the essentials are there, but the agent cannot predict the outcome of the call (does it return a confirmation, change workflow_status, or require a running analysis?) and could use a note on the reason's expected length.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does: it labels the enum values (4 = power, 6 = base rates) and constrains the reason parameter as short and reported downstream. It still does not indicate a length limit or expected reason format.

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

Purpose4/5

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

States a specific action (skip a step) with a concrete constraint (only steps 4 and 6) and names what those steps are (power, base rates). An agent can tell this apart from siblings like power_analysis or base_rate_check, though the description never says so explicitly.

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

Usage Guidelines3/5

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

The exclusion is implicit: 'Only steps 4 and 6 can be skipped' tells the agent what is not allowed, but there is no statement of when skipping is appropriate versus running power_analysis or base_rate_check instead, nor any prerequisite about the workflow state.

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

start_analysisStart an analysisA
Read-only

Call this first for every new question. Read the user's request and choose mode: "hypothesis_test" when they want to know whether a difference, effect or relationship is real / significant / caused by something, or want to test a claim; "explore" when they want to describe, summarise, visualise, estimate or plan, without testing a claim. If the request is ambiguous, ask the user before calling. Returns the steps to follow.

NameRequiredDescriptionDefault
fileNoThe data file the user named or attached to the chat (CSV, TSV, Excel or Parquet): pass its path or name, never its contents. Large files are fine.
modeYes"explore" for describing, comparing, ranking, summarising, charting or finding patterns (most analytics questions); "hypothesis_test" when asked whether a difference or relationship is significant / real.
questionYesThe user's request, in their own words.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered; the description usefully adds the ordering constraint that it must be called first and that it returns steps. It does not mention the consequence of calling it repeatedly (idempotentHint=false implies each call starts a fresh analysis, potentially discarding prior workflow state), which is the one behavioral trait an agent most needs here.

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

Conciseness4/5

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

It is front-loaded with the imperative call rule, then mode discrimination, then return value, with no filler. The only waste is the partial duplication of the mode semantics that already appear in the schema, which makes the middle sentence heavy.

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

Completeness4/5

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

With no output schema, the description correctly compensates by noting it 'returns the steps to follow', and it covers the required question/mode decisions fully. What is missing is the lifecycle context: what happens to an in-progress analysis if the tool is called again, and whether the returned steps must be passed to run_test, describe, or another sibling.

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 both required parameters are documented in the schema itself. The description's mode definitions ('caused by something', 'test a claim', 'describe, summarise, visualise, estimate or plan') add a little interpretive help beyond the enum descriptions, but the two texts largely overlap, so baseline 3 applies.

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

Purpose4/5

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

The description frames this as the mandatory entry point for every new question and states it returns the steps to follow, which distinguishes it from executable siblings like run_test or describe. However, it never states plainly what the tool does with the question (it classifies and routes into an analysis workflow), so the underlying action must be inferred from the mode rules.

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

Usage Guidelines4/5

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

It gives a clear invocation rule ('call this first for every new question') plus explicit decision criteria for choosing between the two modes, and tells the agent to ask the user when ambiguous. It does not reference any sibling tools such as skip_step or workflow_status, so the agent gets no guidance on how this tool relates to the rest of the workflow after the initial call.

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

state_hypothesesStep 1: state the question, hypotheses and testA
Read-only

Step 1 of a hypothesis test. Fix the test, the data selection and H₀/H₁ BEFORE looking at results. test_arguments are the same fields the test takes (e.g. t_test: {type, file, column, group_column, group1, group2, equal_variances, mu0}; anova: {file, column, group_column}; ab_test: {metric, file, variant_column, outcome_column, control, success_value, expected_split, segment_column}; chi_square: {type, file, row_column, col_column}; correlation: {file, x_column, y_column, method}). Only use columns the user asked about. The user confirms every column/group choice, the direction and α. Calling it again later revises the plan and restarts steps 2–6.

NameRequiredDescriptionDefault
h0NoNull hypothesis in plain words (a sensible default is proposed if omitted).
h1No
testYes
alphaNo
confidenceNo
alternativeNoDecide from the question, never from the data.two-sided
test_argumentsYesFields for the chosen test (file, columns, groups, type, method, ...). Not alpha/alternative.
confirmation_tokenNoOnly after the user has confirmed the proposed choices: the confirmation_token from the previous response.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and idempotentHint=false, and the description explains the non-idempotency concretely: re-calling revises the plan and restarts steps 2–6. It also discloses the confirmation_token trust flow (only after user confirmation). It does not describe the response payload beyond the token, leaving some behavioral opacity.

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

Conciseness4/5

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

Front-loaded with the step number and the ordering constraint, followed by the per-test field map, which earns its length. The run of examples is dense but purposeful; the parenthetical field lists could be framed slightly more scannably.

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

Completeness4/5

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

With no output schema and a free-form nested parameter, the description carries most of the burden and does so well: it covers state fixing, confirmation, revision semantics and per-test fields. It stops short of describing what the returned plan/token looks like or what downstream steps expect, which is the remaining gap.

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

Parameters4/5

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

Schema coverage is only 50% with a free-form nested object, and the description compensates substantially by enumerating the test_arguments fields for t_test, anova, ab_test, chi_square and correlation. The enumeration is incomplete for z_test, ancova, manova, fisher_exact and binomial_test, so an agent using those tests still lacks field guidance.

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

Purpose5/5

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

The description names the exact workflow position ('Step 1 of a hypothesis test') and the concrete action: fixing the test, data selection, and H₀/H₁ before execution. This cleanly separates it from run_test (execution) and choose_test (selection) without needing the schemas.

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

Usage Guidelines4/5

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

It states a strong temporal constraint ('BEFORE looking at results'), a data-scope rule ('Only use columns the user asked about'), and the confirmation requirement for columns, groups, direction and α. It does not explicitly name alternatives such as choose_test or check_assumptions, so routing is implied by workflow position rather than stated.

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

workflow_statusWorkflow statusA
Read-onlyIdempotent

Shows the current analysis, which of the six steps are done, and the saved results (for the report).

NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds what information is surfaced (step completion, saved results), which is useful, but does not describe the shape of those results or any caveats, which matters because there is no output schema.

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

Conciseness4/5

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

It is a single front-loaded sentence with no wasted clauses, and it leads with the core capability. The parenthetical '(for the report)' is slightly ambiguous but does not hurt readability.

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

Completeness3/5

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

For a no-parameter, read-only status tool with no output schema, the description should define the return contents more concretely. It names the categories (analysis, six steps, saved results) but not what a saved result contains or how step statuses are represented, leaving the agent to infer the return shape.

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

Parameters4/5

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

This tool takes zero parameters, so the baseline is 4. There are no parameters whose meaning the description needs to clarify.

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

Purpose4/5

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

States a specific verb ('Shows') and the exact content returned: current analysis, the six-step completion state, and saved results. This clearly distinguishes it from action-oriented siblings like run_test or start_analysis, though it does not explicitly contrast with job_status.

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

Usage Guidelines3/5

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

Usage is only implied by the name and the phrase 'current analysis'; there is no explicit guidance on when to call it (e.g., between steps, before build_report) or when to prefer job_status. No alternatives or exclusions are named.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 23 tool updatesv1.5.1
    • First observedab_test_plan
    • First observedbase_rate_check
    • First observedbuild_report
    • First observedcancel_job
    • First observedcheck_assumptions
    • First observedcheck_spread
    • First observedchoose_test
    • First observedconfidence_interval
    • First observedcorrelation
    • First observedcreate_visualization
    • First observeddescribe
    • First observedfind_relationships
    • First observedgroup_summary
    • First observedinspect_data_file
    • First observedjob_status
    • First observedlarge_file_plan
    • First observedmanage_cache
    • First observedpower_analysis
    • First observedrun_test
    • First observedskip_step
    • First observedstart_analysis
    • First observedstate_hypotheses
    • First observedworkflow_status

TDQS

A3.5/5.0

Scored across 23 tools

Disambiguation4/5

The six-step hypothesis workflow is explicitly numbered, and the tool descriptions draw deliberate lines (e.g. correlation vs. correlation hypothesis test, describe vs. group_summary). However, start_analysis and choose_test both claim to be "call this first," and describe/group_summary/confidence_interval overlap on summary statistics, so a few boundaries need careful reading.

Naming Consistency4/5

All names are consistently snake_case and readable, but conventions mix verbs (run_test, start_analysis, find_relationships) with bare nouns (describe, correlation, workflow_status, skip_step). The pattern is predictable enough to navigate, just not uniform verb_noun.

Tool Count3/5

23 tools is on the heavy side for a stats assistant; several workflow steps (check_assumptions/check_spread, skip_step, workflow_status) are granular enough that they could be folded into parameters or a single status tool. Each is individually justified by the guided methodology, so nothing is pure filler, but the surface is larger than necessary.

Completeness4/5

Coverage of the analysis lifecycle is strong: inspection, descriptives, assumption checks, power, tests, planning, visualization, reporting, plus caching and background-job management. Gaps exist around row filtering/derived columns and listing or exporting raw datasets, which limit deeper exploratory work but are workable around.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with local CSV and Parquet data files through natural language queries, facilitating tasks like summarizing datasets or retrieving specific information.
    4
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI assistants to analyze CSV files by providing statistical analysis and structural summaries via MCP tools.
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to perform data analysis on local datasets through natural language, orchestrating Python, R, SQL, Spark, Jupyter, Power BI, and Tableau engines for statistics, machine learning, dashboard generation, and batch processing.
    Apache 2.0