Skip to main content
Glama
ghostiee-11

holoviz-viz-mcp

by ghostiee-11

holoviz-viz-mcp

The most advanced MCP server for data visualization. Give any AI assistant the power to create interactive charts, run statistical tests, perform auto-EDA, and build polished dashboards — all using the HoloViz ecosystem.

Python 3.10+ Tests Tools MCP Apps Prompts License Version


Why this exists

Most AI visualization tools generate static images or hand-roll JavaScript. This server uses Panel's embed mode to produce self-contained interactive HTML with the full Bokeh rendering pipeline — real pan/zoom/hover, linked selections, and Panel widgets. Not a JavaScript approximation.

pn.pane.HoloViews(plot).save(buf, embed=True)

One line. Standalone HTML. All Bokeh JS/CSS inlined. No server. No CDN. Open in any browser.

Related MCP server: Data Analytics MCP Toolkit

Feature highlights

Category

What you get

36 tools

Data loading, transforms, 14 chart types, annotations, crossfiltering, streaming, dashboards, export, and more

Intelligent analysis

One-call auto-EDA, statistical testing (t-test, ANOVA, regression, chi-square), data quality scoring, natural language queries

8 MCP Apps

Specialized UI viewers for charts, dashboards, streaming, crossfilter, EDA reports, statistics, time series, and data quality

9 workflow prompts

Guided workflows for EDA, crossfiltering, statistics, time series, big data, comparisons, storytelling, dashboards, and data quality

Big data

Datashader-powered visualization for 10K-5M+ points

Time series

Rolling stats, trend decomposition, anomaly detection, multi-series comparison

Dual output

Every viz returns PNG preview (inline in chat) + interactive HTML (full Bokeh interactivity)

Plot versioning

Modify freely, undo anytime — every change creates a new version

Session persistence

Save/load entire analysis sessions as JSON

8 sample datasets

iris, penguins, tips, stocks, diamonds, gapminder, weather, earthquakes

Professional templates

Material Design, Bootstrap, and Fast Design dashboard layouts


Quick start

Copy-paste these 4 lines to get started:

git clone https://github.com/ghostiee-11/holoviz-viz-mcp.git
cd holoviz-viz-mcp
pip install -e .
claude mcp add holoviz-viz -- holoviz-viz-mcp

That's it — restart your AI client and start asking for visualizations.

One-command setup for any AI client

bash setup.sh claude-desktop    # Claude Desktop
bash setup.sh claude-code       # Claude Code CLI
bash setup.sh cursor            # Cursor
bash setup.sh vscode            # VS Code Copilot
bash setup.sh all               # All clients at once

Restart your AI client and try:

"Load the iris dataset and create a scatter plot of sepal_length vs sepal_width, colored by species"

"Run auto_eda on the diamonds dataset"

"Test if sepal_length differs significantly between species using a t-test"

See DEMO_PROMPTS.md for 12 ready-to-use demo prompts.

Manual setup

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "holoviz-viz": {
      "command": "holoviz-viz-mcp"
    }
  }
}
claude mcp add holoviz-viz -- holoviz-viz-mcp

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "holoviz-viz": {
      "command": "holoviz-viz-mcp"
    }
  }
}

Add to .vscode/settings.json:

{
  "github.copilot.chat.mcpServers": {
    "holoviz-viz": {
      "command": "holoviz-viz-mcp"
    }
  }
}

Tools (36)

Data Management (5)

Tool

Description

load_data

Load from CSV/JSON text, URL, or file. Auto-detects Parquet/Excel/JSON from extension

load_sample_data

8 built-in datasets: iris, penguins, tips, stocks, diamonds, gapminder, weather, earthquakes

list_datasets

List all loaded datasets with shapes and columns

analyze_data

Statistical profile with distributions, correlations, and data types

suggest_visualizations

Auto-recommend plot types based on column characteristics

Data Transformation (2)

Tool

Description

transform_data

Filter, groupby, sort, derive columns, sample, drop nulls, pivot

merge_datasets

Join two datasets on shared columns (inner/left/right/outer)

Visualization (5)

Tool

Description

Output

create_plot

14 chart types: scatter, line, bar, barh, area, step, box, violin, hist, heatmap, hexbin, kde, contour, errorbars

PNG + HTML

modify_plot

Change title, colors, colormap, size, axis labels, legend position

PNG + HTML

undo_plot

Revert to any previous version

PNG + HTML

list_plots

List all plots with IDs and version counts

Text

execute_code

Run arbitrary hvPlot/HoloViews/Panel code

PNG + HTML

Advanced Visualization (6)

Tool

Description

Output

create_crossfilter

Linked brushing across views — select in one, all update

PNG + HTML

create_streaming_plot

Live-updating chart with play/pause/reset controls

PNG + HTML

annotate_plot

Add hline/vline/hspan/vspan/text/point/arrow annotations

PNG + HTML

overlay_plots

Composite multiple plots onto shared axes

PNG + HTML

create_datashader_plot

Big data visualization for 10K-5M+ points

PNG + HTML

time_series_analysis

Rolling stats, decomposition, anomaly detection, multi-series comparison

PNG + HTML

Interactive (4)

Tool

Description

handle_click

Process chart clicks — returns percentile, outlier status, group context

set_theme

Set global theme: default, dark, midnight

launch_panel

Open any chart as a full Panel app in the browser

stop_panel

Stop a running Panel server

Dashboard & Export (3)

Tool

Description

Output

create_dashboard

Combine plots in column/row/tabs/grid with Material/Bootstrap/Fast templates

PNG + HTML

get_plot_html

Get raw interactive HTML for embedding

HTML

export_plot

Export to HTML, PNG, or SVG

Encoded

Intelligent Analysis (4)

Tool

Description

Output

auto_eda

One-call complete EDA: distributions, correlations, missing data, outliers, narrative insights

PNG + HTML

statistical_test

T-test, correlation, regression, chi-square, normality, ANOVA — real p-values + diagnostic plots

PNG + HTML

data_quality_report

Missing values, outliers, type validation, duplicates, quality score (0-100)

PNG + HTML

compare_datasets

Side-by-side statistical comparison of two datasets

Text

Natural Language (1)

Tool

Description

natural_language_query

Plain English -> structured execution plan. "Show sales by region where revenue > 1M" -> filter + groupby + bar chart

Utility (6)

Tool

Description

describe_plot

AI-readable plot description for accessibility and context

clone_plot

Duplicate a plot for independent modification

get_data_sample

Return formatted data rows for AI context

save_session

Persist datasets + plot specs to JSON

load_session

Restore a saved session

generate_large_dataset

Generate synthetic data (clusters/spiral/grid/uniform, up to 5M points)


MCP Apps (8 interactive viewers)

Resource URI

Viewer

Key features

ui://holoviz/viz

Chart Viewer

Theme toggle, save, open in browser

ui://holoviz/dashboard

Dashboard Viewer

Multi-panel layout with stats sidebar

ui://holoviz/stream

Stream Viewer

Live pulse indicator, status bar

ui://holoviz/crossfilter

Crossfilter Viewer

Linked brush hint, open full size

ui://holoviz/eda

EDA Report

Tabbed insights/charts, completion badge

ui://holoviz/statistics

Statistics Viewer

P-value highlighting (green/red), side-by-side results+chart

ui://holoviz/timeseries

Time Series Viewer

Metrics bar, analysis type badge

ui://holoviz/quality

Quality Report

Score gauge (0-100, color-coded), issue severity cards


Workflow Prompts (9)

Pre-built step-by-step guides that the AI follows:

Prompt

Purpose

eda_workflow

Complete exploratory data analysis

crossfilter_workflow

Build linked brushing dashboards

data_quality_workflow

Assess and clean data quality

statistical_analysis_workflow

Rigorous hypothesis testing

storytelling_workflow

Data storytelling with annotations

time_series_workflow

Temporal analysis and trend detection

big_data_workflow

Datashader visualization for large datasets

comparison_workflow

Compare groups or datasets

dashboard_design_workflow

Polished, presentation-ready dashboards


Architecture

AI Assistant (Claude / Copilot / Cursor / any MCP client)
    |
    v  MCP Protocol (JSON-RPC 2.0 over stdio)
+------------------------------------------------------------------+
|  holoviz-viz-mcp Server (FastMCP 3.1)                             |
|                                                                   |
|  Data Layer (7 tools)        Viz Layer (11 tools)                 |
|    load_data, analyze_data     create_plot (14 chart types)       |
|    suggest_visualizations      crossfilter, streaming, datashader |
|    transform_data, merge       annotate, overlay, time_series     |
|                                                                   |
|  Intelligence Layer (5 tools)  Utility Layer (6 tools)            |
|    auto_eda                    describe_plot, clone_plot           |
|    statistical_test            get_data_sample                    |
|    data_quality_report         save/load_session                  |
|    natural_language_query      generate_large_dataset             |
|                                                                   |
|  Rendering Pipeline            State Manager                      |
|    hvPlot -> HoloViews           Versioned plots with undo        |
|    -> Panel embed=True           Dataset storage                  |
|    Output: PNG + HTML            Session persistence              |
|                                                                   |
|  8 MCP Apps  |  9 Prompts  |  3 Dashboard Templates              |
+------------------------------------------------------------------+

How the output works

Each visualization tool returns three items in a single MCP response:

  1. TextContent — Plot ID and description

  2. ImageContent — PNG preview (renders inline in chat)

  3. EmbeddedResource — Interactive HTML at viz://plots/{id} (self-contained Bokeh document)

This dual-output pattern means the AI shows a quick preview while providing the full interactive version.


Examples

Auto-EDA (one call, complete analysis)

> "Run auto_eda on the diamonds dataset"

Returns: 6+ charts (distributions, correlations, categories, scatter),
narrative insights (skewness, outliers, strongest correlations),
all in a single tool call.

Statistical testing with real p-values

> "Test if sepal_length differs between iris species"

Returns: t-statistic, p-value, Cohen's d effect size,
box plot comparing groups, significance assessment.

Crossfilter (linked brushing)

# Behind the scenes:
from holoviews.selection import link_selections
linked = link_selections(hv.Layout([scatter, hist, box]))
# Brush in scatter -> histogram and box plot filter in real time

Time series decomposition

> "Decompose the weather temperature into trend, seasonal, and residual"

Returns: 4-panel decomposition plot + trend stats + seasonal amplitude.

Natural language queries

> natural_language_query("iris", "compare sepal_length by species")

Returns structured plan:
  Step 1: transform_data('iris', 'groupby', group_by='species', agg='mean')
  Step 2: create_plot('iris_grouped', 'bar', x='species', y='sepal_length')

Demos

python demos/quick_demo.py                # Full feature tour
python demos/showcase_stock_analysis.py   # Stock prices + annotations + dashboard
python demos/showcase_ml_evaluator.py     # Feature importance + confusion matrix + crossfilter

Testing

pytest tests/ -v
# 148 tests across 16 test files covering:
# state, data, viz, transforms, crossfilter, streaming, annotations,
# export, interaction, auto-EDA, statistics, data quality, NLQ,
# big data, time series, utilities, server integration

Project structure

src/holoviz_viz_mcp/
  server.py            # FastMCP entry: 36 tools, 8 resources, 9 prompts
  state.py             # Dataset + plot state with versioning/undo
  rendering.py         # HoloViews -> PNG/HTML via Panel embed (+ Material/Bootstrap/Fast templates)
  tools/
    data.py            # load, analyze, suggest, list, sample (8 datasets)
    transform.py       # filter, groupby, pivot, derive, merge
    viz.py             # create, modify, undo, list, execute_code
    crossfilter.py     # linked selections via hv.link_selections
    streaming.py       # live-updating charts with BokehJS streaming
    annotations.py     # hline, vline, spans, text, points, arrows, overlays
    dashboard.py       # layout composition with template support
    export.py          # HTML/PNG/SVG export
    interact.py        # handle_click, set_theme, launch/stop_panel
    auto_eda.py        # one-call complete exploratory analysis
    statistics.py      # t-test, correlation, regression, chi2, normality, ANOVA
    data_quality.py    # quality report + dataset comparison
    nlq.py             # natural language query interpretation
    bigdata.py         # datashader + synthetic data generation
    timeseries.py      # rolling stats, decomposition, anomaly detection
    utils.py           # describe, clone, sample, session management
  apps/
    viz.html           # Chart viewer with toolbar
    dashboard.html     # Dashboard viewer with stats
    stream.html        # Streaming viewer with pulse indicator
    crossfilter.html   # Crossfilter viewer with brush hints
    eda.html           # EDA report with tabbed insights
    statistics.html    # Statistics viewer with p-value highlights
    timeseries.html    # Time series viewer with metrics
    quality.html       # Quality report with score gauge
tests/                 # 148 tests across 16 files
demos/                 # 3 showcase scripts

Technical notes

  • Panel embed vs raw BokehJS: Most MCP viz tools use bokeh.embed.json_item() for static Bokeh. Panel's embed=True captures widget state, linked selections, and layout logic into standalone HTML. This is what makes crossfiltering work without a server.

  • Why hvPlot: Consistent .hvplot() API across pandas, xarray, dask, and geopandas. One API, many backends.

  • State management: Plots are versioned. Every modify_plot creates a new version; undo_plot reverts. The AI iterates freely without losing previous work.

  • Statistical rigor: Uses scipy.stats for real hypothesis testing — actual p-values, effect sizes, confidence intervals. Not approximations.

  • Code execution: execute_code is the escape hatch — run arbitrary HoloViews/Panel code in a sandboxed namespace with pd, np, hv, pn, and all loaded datasets.

  • Dashboard templates: create_dashboard supports template_style='material' (Material Design), 'bootstrap' (Bootstrap), and 'fast' (Fast Design) for polished, professional output.


Dependencies

Core: fastmcp, holoviews, hvplot, panel, bokeh, pandas, numpy, scipy

Optional: openpyxl (Excel), pyarrow (Parquet), scikit-learn (sample data)

License

MIT

Available Tools

36 tools
analyze_dataC

Generate a comprehensive data profile for a loaded dataset.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_nameYesName of a previously loaded dataset

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations exist, so the description must disclose behavioral traits. It fails to mention whether the tool is read-only, whether it requires specific permissions, or what constitutes 'comprehensive' output. The lack of detail leaves the agent uncertain about side effects.

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?

Single sentence is concise and front-loaded with the key action. However, it could be slightly more informative without losing conciseness.

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?

Despite an output schema existing, the description fails to clarify what the 'comprehensive data profile' includes (e.g., statistics, distributions, missing values). This is insufficient given the rich ecosystem of sibling tools that may overlap.

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 100% with a description for dataset_name. The tool description merely restates that it works on a loaded dataset, adding no new meaning. Baseline score of 3 is appropriate.

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 the tool generates a comprehensive data profile for a dataset, specifying the action and resource. However, it does not differentiate from siblings like data_quality_report or auto_eda, so it misses a point.

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?

No guidance on when to use this tool versus alternatives. With many sibling tools like auto_eda and data_quality_report, the description should indicate when analyze_data is preferred.

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

annotate_plotA

Add annotations and overlays to an existing plot.

Useful for marking thresholds, highlighting regions, or adding reference lines and labels.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoX position for text/point
yNoY position for text/point
colorNoColor for the annotation (default 'red')red
labelNoText label (for text annotation, or as hover label)
valueNoValue for hline/vline
x_endNoEnd x for vspan
y_endNoEnd y for hspan
plot_idYesID of the plot to annotate
x_startNoStart x for vspan
y_startNoStart y for hspan
line_dashNoLine dash style — 'solid', 'dashed', 'dotted' (default 'dashed')dashed
annotation_typeYesType — 'hline' (horizontal), 'vline' (vertical), 'hspan' (horizontal band), 'vspan' (vertical band), 'text' (label), 'point' (marker)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It describes the tool as additive ('add annotations'), but does not mention whether annotations are permanent, cumulative, or require specific permissions. For a mutation tool, more context on side effects is needed.

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 two sentences long, front-loaded with the core purpose, and provides concrete examples in the second sentence. Every word adds value with no redundancy or filler.

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 (12 parameters, 2 required) and the presence of an output schema, the description is adequate for agent understanding. It covers the primary use cases, but could briefly mention that different annotation types require different parameter combinations. Overall complete for selection and 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?

The input schema has 100% description coverage, so the schema already documents all 12 parameters. The general description adds no additional parameter-level information beyond what is in the schema, resulting in a baseline score of 3.

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 clearly states the action (add annotations and overlays) and the resource (existing plot). It includes examples like marking thresholds, highlighting regions, and adding reference lines and labels, which precisely define the tool's scope and distinguish it from siblings like modify_plot.

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 description mentions common use cases ('marking thresholds, highlighting regions, or adding reference lines and labels'), which implies when to use it, but does not explicitly state when not to use it or provide alternatives among siblings. The guidance is implied rather than explicit.

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

auto_edaA

Run a complete exploratory data analysis in one call.

Automatically generates distributions, correlations, categorical breakdowns, and a narrative summary with key insights. Returns a multi-panel dashboard.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_plotsNoMaximum number of plots to generate (default 6)
dataset_nameYesName of the loaded dataset
include_missingNoWhether to include missing data analysis
include_correlationsNoWhether to include correlation heatmap
include_distributionsNoWhether to include distribution plots

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It mentions generating plots and a narrative summary but lacks details on side effects (e.g., data mutation), performance implications, or limitations. The description is adequate but not thorough.

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 concise with two sentences, front-loading the purpose. Every word adds value, with no redundancy.

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 (multi-panel dashboard, narrative summary) and the presence of an output schema, the description is fairly complete. It covers key outputs but does not detail the return format or dashboard layout.

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 100%, so the description need not add much. It mentions 'maximum number of plots' and the inclusion of distributions/correlations, but these are already covered by the schema. No additional semantic insight beyond 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?

The description clearly states the tool runs a complete exploratory data analysis in one call, listing specific outputs (distributions, correlations, categorical breakdowns, narrative summary) and returns a dashboard. This distinguishes it from siblings like analyze_data or statistical_test.

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 description implies use for quick, comprehensive EDA but does not explicitly state when to use this tool vs alternatives or when not to use it. No guidance on prerequisites or exclusions.

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

clone_plotA

Create a copy of an existing plot that can be modified independently.

Useful for creating variations of a visualization without altering the original.

ParametersJSON Schema
NameRequiredDescriptionDefault
plot_idYesID of the plot to clone
new_titleNoOptional new title for the clone

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It discloses the core behavior (creating a copy), but omits important traits like whether the copy inherits all properties, if it's a deep copy, if permissions are affected, or what is returned. Missing details reduce transparency for a mutation tool.

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 two short sentences, front-loaded with the primary action. Every word adds value; no repetitive or superfluous content.

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 only 2 parameters and existence of an output schema (not shown), the description is mostly sufficient. However, it lacks details about the return value (e.g., what the clone object looks like) and any edge cases or restrictions, which would be helpful for a complete understanding.

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 the schema already documents both parameters. The description adds no extra meaning beyond the schema, providing a baseline score. It does not elaborate on parameter constraints such as format or allowed values.

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 clearly states the action ('Create a copy') and the resource ('an existing plot'). It distinguishes this tool from siblings like 'modify_plot' (which alters original) and 'create_plot' (which creates from scratch) by emphasizing independence of the copy.

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 description explicitly says 'Useful for creating variations of a visualization without altering the original,' providing clear context for when to use. It does not explicitly state when not to use or mention alternatives, but the purpose is well-defined.

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

compare_datasetsA

Compare two datasets side-by-side: shapes, columns, distributions, and statistical differences.

Useful for comparing train/test splits, before/after transformations, or different time periods.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_aYesName of the first dataset
dataset_bYesName of the second dataset

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It indicates a read-style operation (comparison) without stating side effects or permissions. The description is adequate but does not explicitly disclose whether the tool modifies data, requires authentication, or has rate limits. For a safe comparison tool, it is minimally sufficient.

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 extremely concise, containing only three lines. The first line states the core purpose, followed by usage examples. Every sentence adds value with no redundancy. Well-structured and front-loaded.

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 that an output schema exists (not shown), the description does not need to explain return values. It covers the tool's purpose, parameters, and usage context. For a tool with only two string parameters and no nested objects, the description is sufficiently complete for an AI agent to decide when to use it.

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%, with both parameters having basic descriptions ('Name of the first dataset', etc.). The tool description adds context about what the comparison entails (shapes, distributions, etc.) but does not add specific constraints or formatting for the parameter values. Baseline score of 3 is appropriate.

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 it compares two datasets side-by-side, covering shapes, columns, distributions, and statistical differences. This is specific and goes beyond a mere verb. However, it does not explicitly differentiate from sibling tools like 'statistical_test' or 'data_quality_report', which may have overlapping purposes.

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 description gives concrete examples of when to use: comparing train/test splits, before/after transformations, or different time periods. This provides good context. However, it lacks 'when not to use' or explicit alternatives to other sibling tools.

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

create_crossfilterA

Create a linked crossfilter dashboard where selections in one view filter all others.

This is a HoloViews killer feature: brush/select points in any plot and all other plots update in real time to show only the matching data. Only possible with Panel-native rendering.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoDashboard titleCrossfilter Dashboard
viewsYesSemicolon-separated plot specs, each as 'type,x,y' (e.g. 'scatter,x,y;hist,x;box,cat,y')
color_byNoColumn to color all views by
dataset_nameYesName of the loaded dataset

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must cover behavioral traits. It describes the real-time updating behavior and technical constraint (Panel-native rendering). However, it does not disclose side effects, authorization needs, or the output structure (despite an output schema existing). The disclosure is adequate but not comprehensive.

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 three sentences, front-loading the main purpose. It is efficient but includes a slightly technical phrase ('HoloViews killer feature') that adds flavor but is not essential. Still, it remains concise.

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?

Given the complexity of a crossfilter tool, the description explains the real-time linking behavior but omits prerequisites (e.g., dataset loaded, Panel server running) and does not mention the output schema. It is sufficient for basic understanding but not fully 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 coverage is 100%, so each parameter is described in the input schema. The tool description does not add extra meaning beyond what's in the schema (e.g., no explanation of the views format). Thus, it meets the baseline expectation but adds no value.

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 clearly states the tool creates a 'linked crossfilter dashboard' with real-time filtering. It uses specific verbs and resources, and the mention of 'brush/select' explicitly distinguishes it from sibling tools like create_dashboard and create_plot.

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 description explains the interactive behavior (brush/select filtering) and notes that it's only possible with Panel-native rendering, which gives context on when to use it. However, it lacks explicit 'when not to use' or direct alternatives, so it doesn't fully guide selection among siblings.

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

create_dashboardA

Create a dashboard combining multiple plots.

Returns PNG preview + interactive HTML with full Panel layout. Supports professional dashboard templates for polished output.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoDashboard titleDashboard
layoutNoLayout type — 'column' (vertical), 'row' (horizontal), 'tabs', 'grid'column
plot_idsYesComma-separated list of plot IDs to include
template_styleNoProfessional template — None (simple), 'material', 'bootstrap', 'fast'

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description provides behavioral context: returns PNG preview and interactive HTML, supports professional templates. It does not cover potential side effects or authorization needs, but the output and templates are well stated.

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 concise sentences, each serving a purpose: action, output, templates. No wasted words.

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 output schema exists, the description reasonably covers creation and output. It lacks mention that plot_ids must reference existing plots, but overall adequate for a creation tool.

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 100%, so baseline 3. The description adds value by mentioning 'professional dashboard templates' directly tying to template_style and 'combining multiple plots' reinforcing plot_ids. This supplements schema details.

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 clearly states 'Create a dashboard combining multiple plots,' which is a specific verb+resource. It effectively distinguishes from sibling tools like 'create_plot' which creates a single plot.

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 description implies usage for creating dashboards from multiple plots but lacks explicit when-to-use or alternative guidance. No mention of prerequisites or 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.

create_datashader_plotA

Create a datashader-powered plot for large datasets (10K+ points).

Rasterizes data into a pixel-density heatmap — works with millions of points where scatter plots would be unusable. Uses hvPlot's datashade integration.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesColumn for x-axis
yYesColumn for y-axis
cmapNoColormap — 'fire', 'inferno', 'viridis', 'blues', 'hot'fire
titleNoPlot title
widthNoPlot width in pixels
heightNoPlot height in pixels
agg_typeNoAggregation type — 'count' (default), 'mean', 'sum', 'min', 'max'count
dataset_nameYesName of the loaded dataset

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description explains the rasterization behavior and scalability to millions of points. Does not disclose potential side effects, but as a creation tool, behavioral transparency is adequate.

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 concise sentences that front-load the purpose and key usage guidance. Every sentence adds value; no waste.

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 presence of an output schema and full parameter coverage, the description covers the core purpose, use case, and method (hvPlot integration). It does not mention aggregation options or colormaps but these are in schema; overall sufficient.

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 100%, so baseline 3 is appropriate. The description does not add individual parameter details beyond the schema but provides context for x and y columns. No additional value beyond 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?

Description clearly states it creates a datashader-powered plot for large datasets (10K+ points). It specifies the technique (rasterization into pixel-density heatmap) and distinguishes from sibling tools like create_plot (for small data).

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 states 'for large datasets (10K+ points)' and 'works with millions of points where scatter plots would be unusable', providing clear guidance on when to use. Lacks explicit mention of when not to use but implies alternatives (scatter plots).

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

create_plotA

Create an interactive plot from a loaded dataset.

Returns both a PNG preview (for inline chat display) and interactive HTML (as an embedded resource for full interactivity).

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesColumn name for x-axis
yNoColumn name for y-axis (optional for hist/kde)
themeNoVisual theme — None (default), 'dark', 'midnight'
titleNoPlot title
widthNoPlot width in pixels (default 700)
heightNoPlot height in pixels (default 450)
size_byNoColumn name to size points by (scatter only)
color_byNoColumn name to color points/bars by
group_byNoColumn name to create separate subplots by
plot_typeYesType — scatter, line, bar, barh, area, step, box, violin, hist, heatmap, hexbin, kde, contour, errorbars
dataset_nameYesName of the loaded dataset

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It mentions the output types but lacks details on side effects, resource usage, or prerequisites beyond 'loaded dataset'. Adequate but not comprehensive.

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 concise sentences that front-load the primary purpose and then detail the output. No wasted words.

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 complexity (11 params, many siblings) and presence of output schema, the description adequately covers the main action and return format. Minor omission: doesn't explain if plot is persisted for later modification.

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 100%, so the description adds no additional parameter meaning beyond what the schema already provides. Baseline of 3 is appropriate.

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 clearly states the tool creates an interactive plot from a loaded dataset and distinguishes it from siblings by specifying the dual output (PNG preview and interactive HTML).

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?

No guidance on when to use this tool versus alternatives like create_datashader_plot or modify_plot. The description does not provide context for selection among sibling tools.

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

create_streaming_plotA

Create a live-updating streaming visualization with simulated real-time data.

The output is a self-contained HTML page with Panel periodic callbacks that simulates streaming data — the chart updates in real time. This works entirely client-side, no server needed.

If a dataset is provided, the streaming simulation replays its data progressively. Otherwise, generates a random walk time series.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoColumn for x-axis (uses index if not provided)
yNoColumn for y-axis (uses first numeric column if not provided)
titleNoPlot titleLive Streaming Data
n_pointsNoNumber of initial points (for generated data)
plot_typeNoChart type for streaming — 'line', 'scatter', 'area', 'step'line
window_sizeNoMax visible points in the rolling window
dataset_nameNoOptional dataset to stream from (replays rows progressively)
update_intervalNoMilliseconds between updates

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses key behaviors: output is self-contained HTML, uses Panel callbacks, client-side execution, data replay vs random walk. Could mention limitations like performance or suitability for large data.

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 efficient paragraphs with no fluff. Every sentence adds value. Front-loaded with key purpose and output format.

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?

Covers main functionality: output type, client-side behavior, dataset handling. With 8 parameters and output schema, it is reasonably complete. Minor gaps: no mention of how to stop streaming or expected behavior with large datasets.

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 100%, so baseline is 3. The description adds context (e.g., dataset_name for replay, n_points for generated data) but does not significantly enhance individual parameter meaning beyond schema descriptions.

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 clearly states it creates a live-updating streaming visualization with simulated real-time data. It distinguishes from siblings like 'create_plot' (static) and 'create_datashader_plot' (for large data) by emphasizing real-time simulation and client-side execution.

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 context is implied (real-time simulation, client-side, no server), but no explicit guidance on when to use this versus siblings like 'create_plot' or 'create_crossfilter'. No exclusions or alternatives mentioned.

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

data_quality_reportB

Generate a comprehensive data quality report with visualizations.

Analyzes missing values, outliers, data types, uniqueness, and consistency. Returns a narrative report with diagnostic plots.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_nameYesName of the loaded dataset
outlier_methodNoMethod for outlier detection — 'iqr' (default) or 'zscore'iqr
outlier_thresholdNoThreshold for outlier detection (IQR multiplier or z-score cutoff)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It states it returns a narrative report with diagnostic plots, which implies a non-destructive read operation. However, it does not explicitly state whether it modifies any state (e.g., creates a plot object), nor does it mention performance implications or side effects. The description is adequate but minimal.

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 extremely concise: two sentences that front-load the core purpose and immediately detail the analyses performed. Every sentence provides essential information with no filler or repetition.

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 low complexity (3 parameters, no nested objects) and the presence of an output schema, the description is largely complete. It covers the tool's purpose, the scope of analysis, and the output format. The minor omission of prerequisites (e.g., dataset must be loaded) is mitigated by the parameter name 'dataset_name'.

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 the baseline is 3. The description adds overall context by listing what the tool analyzes (missing values, outliers, etc.), but does not add specific parameter details beyond what the schema already provides for 'dataset_name', 'outlier_method', and 'outlier_threshold'. The added value is marginal.

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 the verb 'generate' and the resource 'data quality report with visualizations'. It lists specific analyses (missing values, outliers, data types, etc.), making the tool's purpose distinct from siblings like 'analyze_data' or 'statistical_test'. However, lacking explicit sibling differentiation prevents 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 Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives such as 'analyze_data', 'auto_eda', or 'statistical_test'. The description does not include any contextual hints about prerequisites, best practices, or exclusion criteria.

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

describe_plotA

Generate a human-readable description of a plot for accessibility and context.

Provides a natural language summary including chart type, axes, data range, notable patterns — useful for screen readers and AI context building.

ParametersJSON Schema
NameRequiredDescriptionDefault
plot_idYesID of the plot to describe

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It mentions output content (chart type, axes, etc.) but does not disclose whether the operation is read-only, requires specific permissions, or has any side effects. It is adequate but not detailed.

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 two sentences, front-loaded with the core action and followed by details. Every sentence provides value without redundancy.

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

Completeness5/5

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

Given the tool's simplicity (one parameter, output schema exists), the description covers the purpose, output elements, and use cases. It is complete for the 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 coverage is 100% with one parameter 'plot_id'. The description adds no extra meaning beyond what the schema already provides, so baseline score of 3 is appropriate.

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 clearly states the verb 'Generate' and the resource 'description of a plot', with specific content elements (chart type, axes, etc.). It distinguishes from siblings like 'analyze_data' or 'annotate_plot' by focusing on human-readable natural language summary for accessibility and context.

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 description implies usage for accessibility and AI context building but does not explicitly mention when not to use or list alternative tools. It provides context but lacks explicit exclusions or comparisons.

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

execute_codeA

Execute arbitrary hvPlot/HoloViews/Panel code and return the result.

This is the power-user escape hatch for visualizations that go beyond the structured tools — linked selections, overlays, custom widgets, etc.

The code must assign the final visualization to a variable named result. Available in scope: pd, np, hv, hvplot, pn, and any loaded datasets.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesPython code that produces a HoloViews/Panel object in `result`
dataset_nameNoOptional dataset to make available as `df`

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It mentions code constraints and available imports but omits safety, destructive potential, rate limits, or error handling for arbitrary code execution.

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 sentences, front-loaded with main purpose, no wasted words. Efficient and well-structured.

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?

Output schema exists, so return values handled. However, description lacks critical behavioral details for a powerful tool like code execution (e.g., security, timeout, side effects). Adequate but gaps remain.

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 100% (baseline 3), but description adds valuable context: for 'code' it defines expected output variable and available libraries, and for 'dataset_name' it explains making data available as 'df'.

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 specific verb 'Execute' and resource 'arbitrary hvPlot/HoloViews/Panel code', and distinguishes itself from siblings by labeling it a 'power-user escape hatch' for beyond structured tools.

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 description implies when to use (for linked selections, overlays, custom widgets) but does not explicitly state when not to use or list alternatives, leaving room for improvement.

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

export_plotA

Export a plot to a specified format and return the encoded content.

Returns the exported content as base64 (for binary formats) or raw text (for HTML). The AI assistant can then save it to a file or display it.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNoOverride width in pixels
formatNoExport format — 'html', 'png', 'svg'html
heightNoOverride height in pixels
plot_idYesID of the plot to export

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description adds value by disclosing the return format (base64 for binary, raw text for HTML) and the intended AI action (save or display). However, it omits potential side effects, permissions, or limitations, leaving moderate transparency.

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 no fluff: first sentence states purpose, second explains return format. Front-loaded and efficient.

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?

Output schema exists, so description need not detail return values. It covers key behavioral context (base64 vs raw text) and intended AI use case. Minor omissions like error handling or size limits don't detract significantly for a simple export tool.

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 the schema already documents parameters well. The description adds minimal extra context (e.g., 'binary formats' vs 'HTML'), placing it at the baseline of 3.

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 clearly states 'Export a plot to a specified format and return the encoded content.' It specifies the verb (export), resource (plot), and mentions format, distinguishing it from siblings like get_plot_html or clone_plot.

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 description implies usage when the AI needs to save or display the plot, but it does not explicitly compare to alternatives like get_plot_html or provide when-not-to-use guidance. This is adequate but not explicit.

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

generate_large_datasetA

Generate a large synthetic dataset for big-data visualization demos.

Creates datasets with patterns that are only visible at scale — clusters, spirals, or random noise — perfect for datashader showcases.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoDataset name (default: auto-generated)
n_pointsNoNumber of points to generate (default 100,000)
distributionNoPattern — 'clusters' (Gaussian blobs), 'spiral', 'grid', 'uniform'clusters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided, so description must fully disclose behavior. It lacks details on performance, memory usage, whether the dataset is temporary or saved, and what the tool returns beyond generating data. The output schema exists but is not referenced.

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 purpose, and every sentence provides useful information. No unnecessary words.

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?

Sufficient for a simple generation tool with output schema, but missing explanation of return value or how the dataset is used downstream. Could be more complete given the sibling landscape.

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 100%, so the description adds marginal value by describing patterns (e.g., 'random noise' corresponding to 'uniform'). It does not introduce new parameter semantics beyond 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?

Description clearly states the verb 'Generate', the resource 'large synthetic dataset', and the purpose 'for big-data visualization demos'. It distinguishes from sibling tools like load_data and load_sample_data by emphasizing synthetic generation for scale.

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 mentions suitability for datashader showcases, implying use when large-scale patterns are needed. However, no explicit when-not or alternatives beyond that context, leaving room for clearer guidance.

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

get_data_sampleB

Get a sample of rows from a dataset as formatted text.

Useful for providing data context to the AI or for quick inspection.

ParametersJSON Schema
NameRequiredDescriptionDefault
n_rowsNoNumber of rows to return (default 5, max 50)
randomNoWhether to sample randomly (default: first N rows)
columnsNoComma-separated list of columns to include (default: all)
dataset_nameYesName of the loaded dataset

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states the tool gets a formatted text sample, without disclosing safety, side effects, or any behavioral traits. There is no mention of read-only nature, auth needs, or potential impact.

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 extremely concise with two sentences. The first sentence precisely defines the action and result, and the second adds useful context. No redundant words or fluff.

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?

Given the tool has 4 parameters (all documented in schema) and an output schema exists, the description provides a decent overview. However, it lacks behavioral and usage guidance, leaving some gaps for the agent to fully understand when and how to invoke this tool correctly.

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 the baseline is 3. The description does not add extra meaning beyond the schema's parameter descriptions. It mentions 'formatted text' which relates to output, not parameters.

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 the verb 'get' and the resource 'sample of rows from a dataset as formatted text', providing a specific action and outcome. It also gives a use case, though it does not explicitly differentiate from sibling tools like 'data_quality_report' or 'analyze_data'.

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 description implies usage for providing data context or quick inspection, but it lacks explicit guidance on when not to use this tool (e.g., for statistical analysis) or references to alternative sibling tools. No exclusions or prerequisites are mentioned.

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

get_plot_htmlB

Get a plot as standalone interactive HTML for embedding.

ParametersJSON Schema
NameRequiredDescriptionDefault
plot_idYesID of the plot

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility. It discloses the output format (HTML) but fails to mention any behavioral traits like authentication needs, performance implications, or idempotency.

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 extremely concise (one sentence) with no wasted words. However, it could be slightly restructured to include more detail in the same space.

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 that output schema exists (so return values are documented) and schema coverage is 100%, the description is fairly complete for a simple retrieval tool. It could mention that the HTML is interactive and self-contained, which it does.

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 100%, so baseline is 3. The description adds no additional meaning beyond the schema's 'ID of the plot' for plot_id.

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 explicitly states the action ('Get a plot') and the specific output ('standalone interactive HTML for embedding'), making the tool's purpose crystal clear and distinguishing it from siblings like export_plot or describe_plot.

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?

No guidance is provided on when to use this tool instead of alternatives such as export_plot or clone_plot. The description lacks any context about use cases or exclusions.

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

handle_clickA

Process a click event on a chart and return AI-friendly insights.

When a user clicks on a data point in a visualization, this tool analyzes the clicked point in context and returns insights about it. This enables bidirectional communication: the AI creates a chart, the user clicks a point, and the AI explains what that point means.

ParametersJSON Schema
NameRequiredDescriptionDefault
plot_idYesID of the plot that was clicked
x_valueNoX-axis value of the clicked point
y_valueNoY-axis value of the clicked point
point_indexNoIndex of the clicked data point in the source dataset

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It implies read-only analysis but does not disclose state changes, authentication needs, or side effects. The term 'returns insights' suggests a safe operation, but details are lacking.

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?

Description is concise (three sentences) and front-loaded with the main action. Every sentence adds value: purpose, usage scenario, and bidirectional communication benefit.

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 presence of an output schema, return values are covered. The description explains the tool's role in the AI-user interaction loop. Lacks some behavioral details but is sufficient for the tool's apparent simplicity.

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 100%, baseline 3. Description adds context about analyzing the clicked point but does not elaborate on parameter meanings beyond what the schema already describes.

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?

Description clearly states it processes click events on charts and returns AI-friendly insights. It specifies the verb 'process' and resource 'click event' and implicitly distinguishes from siblings like describe_plot or analyze_data by focusing on click interaction.

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 states when to use: when a user clicks a data point in a visualization. Provides context for bidirectional communication. Does not explicitly state when not to use or name alternatives, but the usage scenario is clear.

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

launch_panelA

Open a plot as a full interactive Panel app in the browser.

This launches a local Panel server and opens the visualization in your default browser with full Panel interactivity — widgets, linked selections, and all Panel features that can't fit in an iframe.

ParametersJSON Schema
NameRequiredDescriptionDefault
portNoPort number (0 = auto-assign)
titleNoBrowser tab title
plot_idYesID of the plot to launch

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden. It discloses that the tool launches a local Panel server and opens the browser, but does not detail blocking behavior, side effects, or whether it returns immediately. The behavioral information is adequate but could be more complete.

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 concise with two short paragraphs, the first starting with a clear action verb. It is well-structured but could be slightly more efficient by combining the second paragraph into the first.

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 presence of an output schema and full parameter documentation, the description is fairly complete. It explains the tool's purpose and behavioral aspects, though it omits prerequisites (e.g., plot existence) and return value details, which are likely in the output schema.

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?

The input schema covers all 3 parameters with descriptions (100% coverage). The description adds no additional parameter meaning beyond what the schema provides, so the baseline score of 3 is appropriate.

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 clearly states the tool opens a plot as a full interactive Panel app in the browser, specifying the verb 'open', the resource 'plot', and the modality 'as Panel app'. It distinguishes from siblings like 'get_plot_html' and 'stop_panel' by emphasizing full interactivity beyond iframe capabilities.

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 description implies when to use this tool by contrasting with iframe limitations, but does not explicitly state when not to use or list alternatives like 'get_plot_html' for static views. It provides context for use cases requiring full Panel interactivity.

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

list_datasetsA

List all loaded datasets with their shapes and column names.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It correctly implies a read operation with 'List', but does not explicitly state that it is read-only, idempotent, or safe. For a simple list tool, this is minimally adequate but lacks explicit behavioral disclosure.

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 a single sentence that is front-loaded with the action and outcome. Every word contributes meaning without any fluff or repetition.

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

Completeness5/5

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

Given the tool has no parameters and an output schema exists, the description sufficiently explains what the tool returns (shapes and column names). It is complete for a straightforward listing operation.

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 input schema has zero parameters, so schema coverage is 100% trivially. The description adds no parameter information, which is appropriate since there are none. Baseline for zero parameters is 4.

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 clearly states the verb 'List', the resource 'all loaded datasets', and the specific information returned ('shapes and column names'). It distinguishes from sibling tools like 'load_data' (loading) and 'compare_datasets' (comparison).

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?

No explicit when-to-use or when-not-to-use guidance is provided. The purpose is clear enough for a simple listing tool, but the description does not mention alternatives or context for choosing this over siblings like 'get_data_sample' or 'suggest_visualizations'.

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

list_plotsA

List all created plots with their IDs, types, and version counts.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It clearly states the action and output fields. However, it does not disclose sorting order, pagination, or whether it includes all plots regardless of state, which could be relevant.

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?

A single sentence of 13 words, front-loaded with the verb and resource. No redundant 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?

Given the output schema exists, the description sufficiently covers the purpose. It could mention that it returns a list, but the schema likely defines the structure. The description is adequate for a zero-parameter list tool.

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 has zero parameters and 100% schema coverage. The description does not need to add parameter details; baseline is 4 for no parameters.

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 clearly states the tool lists all created plots and specifies the returned fields (IDs, types, version counts). It distinguishes itself from siblings like create_plot or describe_plot by offering a global list view.

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 description lacks explicit guidance on when to use this tool versus alternatives. While it's obvious for getting an overview, there is no mention of alternatives like search or filter, nor any exclusion criteria.

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

load_dataA

Load data into the server from CSV text, JSON text, or a URL.

Supports CSV, JSON, Parquet, and Excel formats. For URL loading, the format is auto-detected from the file extension.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoURL to fetch data from (supports csv, json, parquet, xlsx)
nameNoOptional name for the dataset (auto-generated if not provided)
formatNoData format when using csv_data/json_data — 'csv' or 'json'csv
csv_dataNoCSV-formatted string data
json_dataNoJSON-formatted string data (records or columnar orientation)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden for behavioral transparency. It discloses auto-detection for URL load but does not mention what happens on overwrite or naming conflicts, error handling, or dataset naming limits.

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 no fluff, front-loaded with the core purpose. Every sentence earns its place.

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 presence of an output schema, the description adequately explains the tool's purpose and supported formats. It could be more complete by mentioning behavior on duplicate names or URL failures, but overall it is sufficient.

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 100%, so baseline is 3. The description adds value by summarizing data sources (CSV text, JSON text, URL) and noting auto-detection for URL formats, which is extra information beyond 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?

The description clearly states the tool loads data from CSV text, JSON text, or a URL, specifying the verb 'load' and resource 'data'. It distinguishes from sibling tools like load_sample_data by focusing on external data import.

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 description mentions supported formats and auto-detection for URLs, providing clear context on data sources. However, it lacks explicit guidance on when to use this tool versus alternatives like load_sample_data or generate_large_dataset, and no exclusion criteria are given.

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

load_sample_dataA

Load a built-in sample dataset for quick demos.

ParametersJSON Schema
NameRequiredDescriptionDefault
datasetNoName of sample dataset — 'iris', 'penguins', 'tips', 'stocks', 'diamonds', 'gapminder', 'weather', 'earthquakes'iris

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It only states the action without disclosing side effects, permissions, or limitations, which is insufficient for a mutation-like tool.

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 a single, efficient sentence with no extraneous words. It is well front-loaded and earns its place.

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 simplicity (one parameter with enumerated options, an output schema), the description is mostly complete. However, the lack of behavioral transparency slightly reduces completeness.

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 the parameter description in the schema already lists the available datasets. The tool description adds no additional semantic value beyond what the schema provides.

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 clearly states the tool loads built-in sample datasets for quick demos, distinguishing it from siblings like load_data (user data) and generate_large_dataset (synthetic data).

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 phrase 'for quick demos' implies usage context, but no explicit guidance on when to avoid or alternatives is provided. Given the sibling names, the purpose is clear enough.

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

load_sessionA

Load a previously saved session, restoring datasets and plot specs.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathNoPath to the session file (default: holoviz_session.json)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral disclosure. It does not mention behaviors like file format, error handling, overwrite, or what happens if the file does not exist. Only states restoration of datasets and plot specs.

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 a single, front-loaded sentence that directly states the action and outcome. Every word is essential.

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?

Given the tool's simplicity and the presence of an output schema (though not shown), the description is adequate but lacks details about return values, failure modes, or file format. More context would improve completeness.

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?

The input schema has 100% description coverage for the single parameter 'file_path', and the description does not add meaning beyond the schema. Baseline score of 3 is appropriate.

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 clearly states the verb 'Load' and the resource 'previously saved session', and specifies what is restored ('datasets and plot specs'). This distinguishes it from sibling tools like 'save_session'.

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?

No explicit guidance on when to use this tool versus alternatives (e.g., load_data) or when not to use it. The description implies usage for loading a session, but lacks context like prerequisites or error conditions.

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

merge_datasetsB

Merge two datasets together on a common column.

ParametersJSON Schema
NameRequiredDescriptionDefault
onYesColumn name(s) to join on (comma-separated for multiple)
howNoJoin type — 'inner', 'left', 'right', 'outer'inner
left_nameYesName of the left dataset
right_nameYesName of the right dataset
output_nameNoName for the merged dataset

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It does not explain whether the tool modifies existing datasets, creates a new one, or any validation or side effects. The schema hints at creating an output dataset, but the description remains silent.

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?

Single sentence, no redundancy, direct wording. Every word carries meaning.

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?

Despite having an output schema, the description fails to explain the result (e.g., a new dataset) or error conditions. For a tool with 5 parameters and no annotations, more detail is needed to ensure 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?

The input schema covers all parameters with descriptions (100% coverage), so the baseline is 3. The description adds minimal extra meaning beyond 'merge on a common column', not elaborating on join types or default behavior.

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 clearly states the verb 'merge' and the resource 'two datasets on a common column', which is specific and distinguishes from sibling tools like 'compare_datasets'.

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 description does not provide any guidance on when to use this tool versus alternatives, such as 'compare_datasets' or 'transform_data'. No when-not-to-use or context hints are given.

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

modify_plotB

Modify an existing plot's appearance. Returns updated PNG + HTML.

ParametersJSON Schema
NameRequiredDescriptionDefault
cmapNoColormap name (e.g. 'viridis', 'plasma', 'Set1')
titleNoNew title
widthNoNew width in pixels
heightNoNew height in pixels
xlabelNoX-axis label
ylabelNoY-axis label
plot_idYesID of the plot to modify
color_byNoColumn to re-color by
legend_positionNoLegend position (e.g. 'top_right', 'bottom_left')

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations provided; description mentions mutation and output but does not disclose side effects (e.g., overwriting original), error handling, or reversibility. Incomplete disclosure for a mutation 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?

One concise sentence effectively communicates action and output. Could potentially include that all parameters are optional except plot_id, but not necessary given schema. Well structured and front-loaded.

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?

Description is too brief given tool complexity (9 parameters) and absence of annotations. Fails to mention that plot must exist, that changes are applied in-place, or constraints like immutability. Output mention is helpful but insufficient.

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 covers all parameters with descriptions (100% coverage). Description adds minimal value beyond schema, simply grouping parameters under 'appearance.' Baseline of 3 is appropriate.

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?

Description clearly states action ('Modify an existing plot's appearance') and output ('Returns updated PNG + HTML'). Distinct from siblings that create, clone, describe, or export plots.

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?

Implies use when modifying an existing plot's appearance, but no explicit when-to-use or alternatives guidance. Lacks context for when to choose this over annotate_plot or other related tools.

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

natural_language_queryB

Interpret a natural language query about a dataset and return a structured plan.

Analyzes the query against the dataset's columns and types to produce a step-by-step execution plan using the MCP tools. The AI assistant can then execute these steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural language question or command (e.g., "show average salary by department", "what are the top 10 products by revenue", "is there a correlation between age and income")
dataset_nameYesName of the loaded dataset

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden. It states the tool returns a plan but does not disclose side effects, read-only nature, permissions, or error behavior. The description lacks safety and operational context.

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 two sentences plus a clarifying paragraph, front-loaded with the primary action. No extraneous content, efficient.

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 description covers purpose and output plan but omits details like plan format, error handling, or constraints on query complexity. Since an output schema is present, the agent can infer structure, so completeness is adequate but not comprehensive.

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 100% with clear parameter descriptions for query and dataset_name. The tool description adds context that the query is interpreted against the dataset's schema, but this is marginal improvement over 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?

The description clearly states the tool interprets a natural language query against a dataset and returns a structured plan for execution. This differentiates it from sibling tools like analyze_data or execute_code by focusing on plan generation rather than direct analysis.

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 description implies usage when an NL query needs to be converted to steps, but it does not explicitly state when to use this tool vs alternatives like analyze_data or compare_datasets. No when-not or alternative recommendations are provided.

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

overlay_plotsA

Overlay multiple plots on top of each other (shared axes).

Unlike a dashboard which places plots side by side, overlay composites them onto a single set of axes — useful for comparing distributions, showing model vs actual, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoTitle for the combined plotOverlay
plot_idsYesComma-separated list of plot IDs to overlay

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It describes that plots are composites onto a single set of axes, but does not disclose potential side effects (e.g., scaling behavior, how different plot types interact, or whether overlaid plots are modified).

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 two sentences, front-loaded with the core purpose, and includes a helpful analogy to dashboards. Every sentence adds value without redundancy.

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?

The tool has an output schema (not shown but indicated), so return values may be documented there. The description covers the main idea and distinguishes from siblings. However, it lacks details on prerequisites (e.g., plot IDs must exist) and edge cases.

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 100%, so the schema already documents both parameters. The description adds no extra meaning beyond what the schema provides for 'plot_ids' (comma-separated) and 'title' (default 'Overlay'). Baseline 3 is appropriate.

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 clearly states the tool overlays multiple plots on shared axes, using specific verbs ('overlay') and resource ('plots'). It distinguishes from dashboards by contrasting side-by-side placement with compositing onto a single set of axes, and gives concrete use cases (comparing distributions, model vs actual).

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 description explains when to use overlay (comparing on shared axes) versus dashboard (side-by-side), but does not explicitly state when not to use it or mention other alternatives beyond that one comparison.

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

save_sessionA

Save the current session state (datasets + plot specs) to a JSON file.

Allows resuming work later by loading the session back. Note: plot objects are not serialized — only specs and data are saved.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathNoPath to save the session file (default: holoviz_session.json)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Discloses that plot objects are not serialized, only specs and data, which is a key limitation. With no annotations, this provides necessary transparency, though other details like overwrite behavior or error conditions are 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?

Two concise sentences, no fluff. Purpose and important caveat are front-loaded.

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?

Covers the essential purpose and a key limitation. With an output schema present, return format need not be explained. However, for a simple save tool, it is nearly 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?

The single parameter file_path is fully described in the input schema (100% coverage). The description does not add extra meaning beyond what the schema provides, so baseline 3 is appropriate.

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?

Clearly states it saves session state (datasets + plot specs) to a JSON file for later resumption. Verb and resource are specific, and it is distinct from sibling load_session.

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 mentions the use case of resuming work later, implying when to use. Does not explicitly state when not to use or mention alternatives beyond context, but the sibling list includes load_session.

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

set_themeA

Set the global visualization theme for all subsequent plots.

Affects the background color, font colors, and grid styling of new visualizations created after this call.

ParametersJSON Schema
NameRequiredDescriptionDefault
themeNoTheme name — 'default' (white), 'dark' (dark blue), 'midnight' (GitHub dark)default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Discloses that it affects background, font colors, and grid styling, and only applies to new plots. Lacks details on persistence or undo behavior, but the description is adequate for the tool's simplicity.

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 concise sentences front-loading the main action, with no extraneous 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?

Given the tool's simplicity and the presence of an output schema (not shown), the description covers the key aspects. Could mention what the output/confirmation looks like, but not essential.

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

Parameters5/5

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

The description adds meaning beyond the input schema by explaining the theme options ('default' white, 'dark' dark blue, 'midnight' GitHub dark) in a way that helps the agent choose correctly.

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?

Clearly states it sets the global visualization theme for all subsequent plots, distinguishing it from per-plot operations like modify_plot or create_plot.

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 mentions it affects new visualizations created after the call, providing clear usage context. Could be improved by noting it does not alter existing plots, but that is implied.

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

statistical_testA

Run a statistical test and return results with a diagnostic plot.

Supports t-test, correlation, regression, chi-square, and normality tests. Returns both numerical results (p-values, effect sizes) and a visualization.

ParametersJSON Schema
NameRequiredDescriptionDefault
column_xYesPrimary column (numeric for most tests)
column_yNoSecond column (for correlation/regression) or value column (for ttest)
test_typeYesTest to run — 'ttest', 'correlation', 'regression', 'chi2', 'normality', 'anova'
confidenceNoConfidence level (default 0.95)
dataset_nameYesName of the loaded dataset
group_columnNoGrouping column for t-test/ANOVA (splits data into groups)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

The description mentions returning numerical results and a visualization, but lacks details on side effects (e.g., whether data is modified), required permissions, or assumptions (e.g., dataset must be loaded). With no annotations, the description provides moderate transparency.

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 main action, no fluff. Efficient and to the point.

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?

Given the complexity (6 parameters, many test options) and existence of an output schema, the description is minimally complete. It does not explain how to use parameters like group_column vs column_y, or what the diagnostic plot shows. More context would benefit a complex tool.

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 100%, so baseline is 3. The description does not add significant meaning beyond the schema; it reiterates test types already in test_type description and does not clarify parameter combinations or defaults.

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 clearly states the tool runs a statistical test and returns results with a diagnostic plot. It lists supported test types (t-test, correlation, etc.), making the purpose specific and distinct from general analysis tools.

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?

No guidance on when to use this tool versus sibling tools like analyze_data or auto_eda. No mention of prerequisites, limitations, or alternative tools for specific tasks.

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

stop_panelA

Stop a running Panel server launched by launch_panel.

ParametersJSON Schema
NameRequiredDescriptionDefault
plot_idNoID of the plot server to stop (stops all if not provided)

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so description must disclose behavioral traits. It mentions 'stop' which is destructive, but lacks details on side effects, reversibility, or what happens if no server is running. The parameter schema adds the detail that omitting plot_id stops all servers, which supplements the description.

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?

Single sentence directly stating the tool's purpose. No unnecessary words, front-loaded with the action verb. Every word earns its place.

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 simple stop action with one optional parameter and an output schema (not shown but present), the description is mostly complete. It could mention what happens if no panel server is running or the return format, but given the low complexity, it is adequate.

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 has 100% coverage for the single parameter 'plot_id' with its own description. The tool description does not add any additional meaning about the parameter beyond what the schema provides.

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?

Description clearly identifies verb 'Stop' and resource 'Panel server launched by launch_panel', distinguishing it from sibling tools like 'launch_panel'. It is specific and unambiguous.

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 that the tool stops a server launched by 'launch_panel', providing clear context for when to use it. Does not explicitly mention when not to use it or alternatives, but the pairing with 'launch_panel' is sufficient guidance.

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

suggest_visualizationsB

Suggest appropriate visualization types based on data characteristics.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_nameYesName of a previously loaded dataset

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations exist; description does not disclose behavioral traits such as being read-only, requiring data to be loaded, or any side effects. The description is too generic.

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?

Single sentence that is front-loaded and concise. Every word adds value without redundancy.

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 one required parameter and an output schema (existence indicated), the description is adequate but vague. It does not specify what visualization types might be suggested or constraints.

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 is 100% with one parameter 'dataset_name'. The description adds 'based on data characteristics' but provides minimal additional meaning beyond 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?

The description clearly states the tool's verb ('suggest') and resource ('visualization types') and adds context ('based on data characteristics'), distinguishing it from siblings like 'create_plot' or 'analyze_data'.

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?

No guidance on when to use this tool vs. alternatives like 'analyze_data' or 'create_plot'. Lacks when-not-to-use or prerequisite conditions.

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

time_series_analysisC

Analyze a time series with rolling statistics, trend detection, and decomposition.

ParametersJSON Schema
NameRequiredDescriptionDefault
windowNoRolling window size (default 7)
analysisNoType — 'overview' (line + rolling mean/std), 'decomposition' (trend + seasonal + residual), 'change_detection' (highlight anomalies), 'comparison' (multiple series)overview
group_byNoColumn to split series by (for comparison analysis)
date_columnYesColumn containing dates/timestamps
dataset_nameYesName of the loaded dataset
value_columnYesNumeric column to analyze

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavioral traits such as side effects, performance implications, data requirements, or limitations. The description is purely functional with no behavioral context.

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 sentence, clear and to the point. No wasted words, but could benefit from listing the analysis types explicitly as they appear in the schema.

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?

Given the presence of many sibling analytical tools and no output schema details shown, the description lacks completeness. It does not explain the output or how to choose this tool over similar ones.

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 100%, so the baseline is 3. The description does not add any additional meaning beyond what the parameter descriptions already provide.

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?

Description clearly states verb 'analyze' and resource 'time series', and lists specific methods (rolling statistics, trend detection, decomposition). However, it does not differentiate from sibling tools like 'analyze_data', 'auto_eda', or 'statistical_test', which may also perform time series analysis.

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?

No guidance on when to use this tool versus alternatives. Does not mention prerequisites, when-not-to-use, or trade-offs compared to sibling tools like 'statistical_test' or 'auto_eda'.

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

transform_dataC

Transform a dataset using common operations. Saves the result as a new dataset.

ParametersJSON Schema
NameRequiredDescriptionDefault
aggNoAggregation function for groupby — mean, sum, count, min, max, median, stdmean
limitNoLimit number of rows in output
valueNoFilter value or expression (e.g. '> 5', '== "setosa"', 'in ["A","B"]')
columnNoColumn to operate on (for filter/sort)
sort_byNoColumn to sort by
group_byNoColumn(s) to group by (comma-separated for multiple)
ascendingNoSort ascending (default True)
operationYesOne of 'filter', 'groupby', 'sort', 'derive', 'sample', 'drop_na', 'pivot'
expressionNoPython expression for derive (e.g. 'col_a * col_b')
new_columnNoName for derived column
output_nameNoName for the resulting dataset (auto-generated if not provided)
dataset_nameYesSource dataset name

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must fully convey behavior. It only states that the result is saved as a new dataset, but omits details like side effects, performance considerations, or error handling.

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 extremely concise with two short sentences. No redundant information, front-loaded with the main action.

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?

Given the tool's complexity (12 parameters, 6 operations), the description is too minimal. It does not explain operation-specific details or output expectations, leaving gaps despite the output schema.

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?

Parameter descriptions in the schema are comprehensive (100% coverage). The description does not add extra meaning beyond the schema, so the baseline score of 3 is appropriate.

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

Purpose3/5

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

The description states the tool transforms a dataset, but it does not specify which operations are available, making it somewhat vague. It differentiates from siblings like 'merge_datasets' but is not precise about the scope.

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 description provides no guidance on when to use this tool versus alternatives such as 'analyze_data' or 'execute_code'. It lacks context for selection.

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

undo_plotA

Undo the last modification to a plot. Returns the previous version.

ParametersJSON Schema
NameRequiredDescriptionDefault
plot_idYesID of the plot to undo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden for behavioral transparency. It only mentions returning the previous version but does not disclose critical behaviors like whether the operation is reversible, what happens with no undo history, or if it is destructive. The description is minimal and lacks important context.

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 extremely concise with two short sentences, no redundant phrases, and all information is front-loaded. Every word serves a purpose.

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 simple tool with one parameter and an output schema, the description is adequate but incomplete. It mentions returning the previous version but does not specify the return format, whether multiple undos are possible, or error handling. The presence of an output schema partially mitigates this, but the description still lacks completeness.

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 100% with one parameter (plot_id) described as 'ID of the plot to undo'. The description adds no additional meaning beyond the schema, meeting the baseline. No extra details like format or constraints are provided.

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 clearly states the tool undoes the last modification to a plot and returns the previous version. It uses a specific verb 'Undo' and resource 'last modification to a plot', effectively distinguishing it from siblings like modify_plot or clone_plot.

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 description implies usage for reverting the last plot modification but provides no explicit guidance on when to use this tool versus alternatives, such as using modify_plot for incremental changes. It lacks when-not-to-use or alternative recommendations.

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. 36 tool updatesv0.5.0
    • First observedanalyze_data
    • First observedannotate_plot
    • First observedauto_eda
    • First observedclone_plot
    • First observedcompare_datasets
    • First observedcreate_crossfilter
    • First observedcreate_dashboard
    • First observedcreate_datashader_plot
    • First observedcreate_plot
    • First observedcreate_streaming_plot
    • First observeddata_quality_report
    • First observeddescribe_plot
    • First observedexecute_code
    • First observedexport_plot
    • First observedgenerate_large_dataset
    • First observedget_data_sample
    • First observedget_plot_html
    • First observedhandle_click
    • First observedlaunch_panel
    • First observedlist_datasets
    • First observedlist_plots
    • First observedload_data
    • First observedload_sample_data
    • First observedload_session
    • First observedmerge_datasets
    • First observedmodify_plot
    • First observednatural_language_query
    • First observedoverlay_plots
    • First observedsave_session
    • First observedset_theme
    • First observedstatistical_test
    • First observedstop_panel
    • First observedsuggest_visualizations
    • First observedtime_series_analysis
    • First observedtransform_data
    • First observedundo_plot

TDQS

A3.6/5.0

Scored across 36 tools

Disambiguation4/5

Most tools have clearly distinct purposes with detailed descriptions. Some overlap exists (e.g., analyze_data vs. auto_eda vs. data_quality_report) but descriptions emphasize different aspects. Overall, an agent can reliably distinguish tools.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., analyze_data, create_plot, export_plot). There are no deviations or mixed conventions, making it easy to predict tool names.

Tool Count3/5

With 36 tools, the server is on the heavier side for a typical MCP server. While it provides extensive functionality for visualization and data analysis, the count feels slightly bloated and could be streamlined by merging related tools.

Completeness5/5

The tool surface is exceptionally complete: data loading, transformation, analysis, statistical testing, plotting, animation, dashboards, crossfilters, streaming, and session management are all covered. There are no obvious gaps for the intended domain.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    An open-source MCP server that connects to various data sources (SQL databases, CSV, Parquet files), allowing AI models to execute SQL queries and generate data visualizations for analytics and business intelligence.
    12
    75
    MIT
  • F
    license
    B
    quality
    D
    maintenance
    An MCP server that provides data visualization and machine learning tools, featuring automated intent-based pipeline routing for data cleaning and model training. It enables LLMs to process CSV or JSON data to generate visual charts, perform regressions, or execute clustering analysis.
    16
    -
  • F
    license
    B
    quality
    D
    maintenance
    An MCP server that provides AI assistants with full access to Apache Superset instances, enabling interaction with dashboards, charts, datasets, databases, and SQL execution capabilities.
    34
    -