holoviz-viz-mcp
Provides dashboard templates using Bootstrap for professional layouts.
Provides dashboard templates using Material Design for professional layouts.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@holoviz-viz-mcpRun auto-EDA on the iris dataset"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
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-mcpThat'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 onceRestart 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-mcpAdd 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 from CSV/JSON text, URL, or file. Auto-detects Parquet/Excel/JSON from extension |
| 8 built-in datasets: iris, penguins, tips, stocks, diamonds, gapminder, weather, earthquakes |
| List all loaded datasets with shapes and columns |
| Statistical profile with distributions, correlations, and data types |
| Auto-recommend plot types based on column characteristics |
Data Transformation (2)
Tool | Description |
| Filter, groupby, sort, derive columns, sample, drop nulls, pivot |
| Join two datasets on shared columns (inner/left/right/outer) |
Visualization (5)
Tool | Description | Output |
| 14 chart types: scatter, line, bar, barh, area, step, box, violin, hist, heatmap, hexbin, kde, contour, errorbars | PNG + HTML |
| Change title, colors, colormap, size, axis labels, legend position | PNG + HTML |
| Revert to any previous version | PNG + HTML |
| List all plots with IDs and version counts | Text |
| Run arbitrary hvPlot/HoloViews/Panel code | PNG + HTML |
Advanced Visualization (6)
Tool | Description | Output |
| Linked brushing across views — select in one, all update | PNG + HTML |
| Live-updating chart with play/pause/reset controls | PNG + HTML |
| Add hline/vline/hspan/vspan/text/point/arrow annotations | PNG + HTML |
| Composite multiple plots onto shared axes | PNG + HTML |
| Big data visualization for 10K-5M+ points | PNG + HTML |
| Rolling stats, decomposition, anomaly detection, multi-series comparison | PNG + HTML |
Interactive (4)
Tool | Description |
| Process chart clicks — returns percentile, outlier status, group context |
| Set global theme: default, dark, midnight |
| Open any chart as a full Panel app in the browser |
| Stop a running Panel server |
Dashboard & Export (3)
Tool | Description | Output |
| Combine plots in column/row/tabs/grid with Material/Bootstrap/Fast templates | PNG + HTML |
| Get raw interactive HTML for embedding | HTML |
| Export to HTML, PNG, or SVG | Encoded |
Intelligent Analysis (4)
Tool | Description | Output |
| One-call complete EDA: distributions, correlations, missing data, outliers, narrative insights | PNG + HTML |
| T-test, correlation, regression, chi-square, normality, ANOVA — real p-values + diagnostic plots | PNG + HTML |
| Missing values, outliers, type validation, duplicates, quality score (0-100) | PNG + HTML |
| Side-by-side statistical comparison of two datasets | Text |
Natural Language (1)
Tool | Description |
| Plain English -> structured execution plan. "Show sales by region where revenue > 1M" -> filter + groupby + bar chart |
Utility (6)
Tool | Description |
| AI-readable plot description for accessibility and context |
| Duplicate a plot for independent modification |
| Return formatted data rows for AI context |
| Persist datasets + plot specs to JSON |
| Restore a saved session |
| Generate synthetic data (clusters/spiral/grid/uniform, up to 5M points) |
MCP Apps (8 interactive viewers)
Resource URI | Viewer | Key features |
| Chart Viewer | Theme toggle, save, open in browser |
| Dashboard Viewer | Multi-panel layout with stats sidebar |
| Stream Viewer | Live pulse indicator, status bar |
| Crossfilter Viewer | Linked brush hint, open full size |
| EDA Report | Tabbed insights/charts, completion badge |
| Statistics Viewer | P-value highlighting (green/red), side-by-side results+chart |
| Time Series Viewer | Metrics bar, analysis type badge |
| 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 |
| Complete exploratory data analysis |
| Build linked brushing dashboards |
| Assess and clean data quality |
| Rigorous hypothesis testing |
| Data storytelling with annotations |
| Temporal analysis and trend detection |
| Datashader visualization for large datasets |
| Compare groups or datasets |
| 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:
TextContent — Plot ID and description
ImageContent — PNG preview (renders inline in chat)
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 timeTime 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 + crossfilterTesting
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 integrationProject 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 scriptsTechnical notes
Panel embed vs raw BokehJS: Most MCP viz tools use
bokeh.embed.json_item()for static Bokeh. Panel'sembed=Truecaptures 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_plotcreates a new version;undo_plotreverts. 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_codeis the escape hatch — run arbitrary HoloViews/Panel code in a sandboxed namespace with pd, np, hv, pn, and all loaded datasets.Dashboard templates:
create_dashboardsupportstemplate_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 toolsanalyze_dataC
Generate a comprehensive data profile for a loaded dataset.
| Name | Required | Description | Default |
|---|---|---|---|
| dataset_name | Yes | Name of a previously loaded dataset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | X position for text/point | |
| y | No | Y position for text/point | |
| color | No | Color for the annotation (default 'red') | red |
| label | No | Text label (for text annotation, or as hover label) | |
| value | No | Value for hline/vline | |
| x_end | No | End x for vspan | |
| y_end | No | End y for hspan | |
| plot_id | Yes | ID of the plot to annotate | |
| x_start | No | Start x for vspan | |
| y_start | No | Start y for hspan | |
| line_dash | No | Line dash style — 'solid', 'dashed', 'dotted' (default 'dashed') | dashed |
| annotation_type | Yes | Type — 'hline' (horizontal), 'vline' (vertical), 'hspan' (horizontal band), 'vspan' (vertical band), 'text' (label), 'point' (marker) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| max_plots | No | Maximum number of plots to generate (default 6) | |
| dataset_name | Yes | Name of the loaded dataset | |
| include_missing | No | Whether to include missing data analysis | |
| include_correlations | No | Whether to include correlation heatmap | |
| include_distributions | No | Whether to include distribution plots |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| plot_id | Yes | ID of the plot to clone | |
| new_title | No | Optional new title for the clone |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dataset_a | Yes | Name of the first dataset | |
| dataset_b | Yes | Name of the second dataset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Dashboard title | Crossfilter Dashboard |
| views | Yes | Semicolon-separated plot specs, each as 'type,x,y' (e.g. 'scatter,x,y;hist,x;box,cat,y') | |
| color_by | No | Column to color all views by | |
| dataset_name | Yes | Name of the loaded dataset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Dashboard title | Dashboard |
| layout | No | Layout type — 'column' (vertical), 'row' (horizontal), 'tabs', 'grid' | column |
| plot_ids | Yes | Comma-separated list of plot IDs to include | |
| template_style | No | Professional template — None (simple), 'material', 'bootstrap', 'fast' |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Column for x-axis | |
| y | Yes | Column for y-axis | |
| cmap | No | Colormap — 'fire', 'inferno', 'viridis', 'blues', 'hot' | fire |
| title | No | Plot title | |
| width | No | Plot width in pixels | |
| height | No | Plot height in pixels | |
| agg_type | No | Aggregation type — 'count' (default), 'mean', 'sum', 'min', 'max' | count |
| dataset_name | Yes | Name of the loaded dataset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| x | Yes | Column name for x-axis | |
| y | No | Column name for y-axis (optional for hist/kde) | |
| theme | No | Visual theme — None (default), 'dark', 'midnight' | |
| title | No | Plot title | |
| width | No | Plot width in pixels (default 700) | |
| height | No | Plot height in pixels (default 450) | |
| size_by | No | Column name to size points by (scatter only) | |
| color_by | No | Column name to color points/bars by | |
| group_by | No | Column name to create separate subplots by | |
| plot_type | Yes | Type — scatter, line, bar, barh, area, step, box, violin, hist, heatmap, hexbin, kde, contour, errorbars | |
| dataset_name | Yes | Name of the loaded dataset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | Column for x-axis (uses index if not provided) | |
| y | No | Column for y-axis (uses first numeric column if not provided) | |
| title | No | Plot title | Live Streaming Data |
| n_points | No | Number of initial points (for generated data) | |
| plot_type | No | Chart type for streaming — 'line', 'scatter', 'area', 'step' | line |
| window_size | No | Max visible points in the rolling window | |
| dataset_name | No | Optional dataset to stream from (replays rows progressively) | |
| update_interval | No | Milliseconds between updates |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dataset_name | Yes | Name of the loaded dataset | |
| outlier_method | No | Method for outlier detection — 'iqr' (default) or 'zscore' | iqr |
| outlier_threshold | No | Threshold for outlier detection (IQR multiplier or z-score cutoff) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| plot_id | Yes | ID of the plot to describe |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Python code that produces a HoloViews/Panel object in `result` | |
| dataset_name | No | Optional dataset to make available as `df` |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| width | No | Override width in pixels | |
| format | No | Export format — 'html', 'png', 'svg' | html |
| height | No | Override height in pixels | |
| plot_id | Yes | ID of the plot to export |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Dataset name (default: auto-generated) | |
| n_points | No | Number of points to generate (default 100,000) | |
| distribution | No | Pattern — 'clusters' (Gaussian blobs), 'spiral', 'grid', 'uniform' | clusters |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| n_rows | No | Number of rows to return (default 5, max 50) | |
| random | No | Whether to sample randomly (default: first N rows) | |
| columns | No | Comma-separated list of columns to include (default: all) | |
| dataset_name | Yes | Name of the loaded dataset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| plot_id | Yes | ID of the plot |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| plot_id | Yes | ID of the plot that was clicked | |
| x_value | No | X-axis value of the clicked point | |
| y_value | No | Y-axis value of the clicked point | |
| point_index | No | Index of the clicked data point in the source dataset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| port | No | Port number (0 = auto-assign) | |
| title | No | Browser tab title | |
| plot_id | Yes | ID of the plot to launch |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | URL to fetch data from (supports csv, json, parquet, xlsx) | |
| name | No | Optional name for the dataset (auto-generated if not provided) | |
| format | No | Data format when using csv_data/json_data — 'csv' or 'json' | csv |
| csv_data | No | CSV-formatted string data | |
| json_data | No | JSON-formatted string data (records or columnar orientation) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dataset | No | Name of sample dataset — 'iris', 'penguins', 'tips', 'stocks', 'diamonds', 'gapminder', 'weather', 'earthquakes' | iris |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No | Path to the session file (default: holoviz_session.json) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| on | Yes | Column name(s) to join on (comma-separated for multiple) | |
| how | No | Join type — 'inner', 'left', 'right', 'outer' | inner |
| left_name | Yes | Name of the left dataset | |
| right_name | Yes | Name of the right dataset | |
| output_name | No | Name for the merged dataset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| cmap | No | Colormap name (e.g. 'viridis', 'plasma', 'Set1') | |
| title | No | New title | |
| width | No | New width in pixels | |
| height | No | New height in pixels | |
| xlabel | No | X-axis label | |
| ylabel | No | Y-axis label | |
| plot_id | Yes | ID of the plot to modify | |
| color_by | No | Column to re-color by | |
| legend_position | No | Legend position (e.g. 'top_right', 'bottom_left') |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Natural 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_name | Yes | Name of the loaded dataset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| title | No | Title for the combined plot | Overlay |
| plot_ids | Yes | Comma-separated list of plot IDs to overlay |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | No | Path to save the session file (default: holoviz_session.json) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| theme | No | Theme name — 'default' (white), 'dark' (dark blue), 'midnight' (GitHub dark) | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| column_x | Yes | Primary column (numeric for most tests) | |
| column_y | No | Second column (for correlation/regression) or value column (for ttest) | |
| test_type | Yes | Test to run — 'ttest', 'correlation', 'regression', 'chi2', 'normality', 'anova' | |
| confidence | No | Confidence level (default 0.95) | |
| dataset_name | Yes | Name of the loaded dataset | |
| group_column | No | Grouping column for t-test/ANOVA (splits data into groups) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| plot_id | No | ID of the plot server to stop (stops all if not provided) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dataset_name | Yes | Name of a previously loaded dataset |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| window | No | Rolling window size (default 7) | |
| analysis | No | Type — 'overview' (line + rolling mean/std), 'decomposition' (trend + seasonal + residual), 'change_detection' (highlight anomalies), 'comparison' (multiple series) | overview |
| group_by | No | Column to split series by (for comparison analysis) | |
| date_column | Yes | Column containing dates/timestamps | |
| dataset_name | Yes | Name of the loaded dataset | |
| value_column | Yes | Numeric column to analyze |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| agg | No | Aggregation function for groupby — mean, sum, count, min, max, median, std | mean |
| limit | No | Limit number of rows in output | |
| value | No | Filter value or expression (e.g. '> 5', '== "setosa"', 'in ["A","B"]') | |
| column | No | Column to operate on (for filter/sort) | |
| sort_by | No | Column to sort by | |
| group_by | No | Column(s) to group by (comma-separated for multiple) | |
| ascending | No | Sort ascending (default True) | |
| operation | Yes | One of 'filter', 'groupby', 'sort', 'derive', 'sample', 'drop_na', 'pivot' | |
| expression | No | Python expression for derive (e.g. 'col_a * col_b') | |
| new_column | No | Name for derived column | |
| output_name | No | Name for the resulting dataset (auto-generated if not provided) | |
| dataset_name | Yes | Source dataset name |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| plot_id | Yes | ID of the plot to undo |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
36 tool updates
v0.5.0- First observed
analyze_data - First observed
annotate_plot - First observed
auto_eda - First observed
clone_plot - First observed
compare_datasets - First observed
create_crossfilter - First observed
create_dashboard - First observed
create_datashader_plot - First observed
create_plot - First observed
create_streaming_plot - First observed
data_quality_report - First observed
describe_plot - First observed
execute_code - First observed
export_plot - First observed
generate_large_dataset - First observed
get_data_sample - First observed
get_plot_html - First observed
handle_click - First observed
launch_panel - First observed
list_datasets - First observed
list_plots - First observed
load_data - First observed
load_sample_data - First observed
load_session - First observed
merge_datasets - First observed
modify_plot - First observed
natural_language_query - First observed
overlay_plots - First observed
save_session - First observed
set_theme - First observed
statistical_test - First observed
stop_panel - First observed
suggest_visualizations - First observed
time_series_analysis - First observed
transform_data - First observed
undo_plot
TDQS
Scored across 36 tools
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.
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.
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.
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
Related MCP Connectors
MCP server for building and testing AI agents with multi-model experimentation and insights.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- AlicenseAqualityCmaintenanceAn 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.1275MIT
- FlicenseBqualityDmaintenanceAn 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-
- FlicenseBqualityDmaintenanceAn 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-
- AlicenseBqualityDmaintenanceA standalone MCP server that brings complete data science capabilities to AI assistants, enabling them to load data, train models, and track experiments through natural language.301MIT