Skip to main content
Glama

Serbian Data MCP Server

PyPI - Version Python - Version License: MIT Smithery

MCP server for accessing Serbian open data portal (data.gov.rs) with built-in visualization, storytelling, and analytics capabilities.

pip install serbian-data-mcp

Features

Data Access

  • πŸ” Search 3,400+ datasets from Serbian government (data.gov.rs)

  • πŸ“₯ Download data in JSON, CSV, XML, XLSX formats

  • πŸ‡·πŸ‡Έ Full Serbian language support (UTF-8)

  • πŸš€ Built-in rate limiting and caching

Visualization β€” 15+ Chart Types

  • πŸ“Š Basic charts: line, bar, pie, scatter, histogram, box plot

  • πŸ—ΊοΈ Maps: choropleth (25 Serbian districts), bubble map, multi-layer map

  • πŸ“ˆ Data journalism: slope chart, waffle chart, population pyramid, sankey diagram, radar chart

  • 🎯 Advanced: heatmap, treemap, gauge/donut, funnel, sparklines, animated timelines

  • ✨ Special: arrow chart, dumbbell chart, lollipop chart

Storytelling & Analytics

  • πŸ“° Infographics: big number cards, auto-generated insights, timeline ribbon, data tables

  • πŸ“Š Dashboards: multi-panel layouts with mixed chart types

  • πŸ“œ Scrollytelling: scroll-driven HTML stories with IntersectionObserver

  • πŸ“ˆ Forecasting: linear/exponential projections with RΒ² and growth rates

  • πŸ† Benchmarking: compare against EU averages or custom references

  • πŸ” Cross-dataset analysis: correlations, outliers, rank divergences

Export & Sharing

  • 🌐 HTML: styled, responsive pages with dark data-journalism aesthetic

  • πŸ–ΌοΈ PNG/PDF: export with kaleido (graceful fallback if not installed)

  • πŸ“Ž Embed: iframe embed code for websites/blogs

  • πŸ“‹ JSON: raw Plotly spec for custom integration

Data Tools

  • πŸ”§ Transformation tools: filter, group, aggregate, sort, select

  • πŸ“‹ Auto-extracted insights: extremes, temporal changes, rankings, outliers

  • πŸ’¬ Auto-generated narrative summaries

  • πŸ”§ Git repository visualization and analysis

Related MCP server: opendata-ua-mcp

πŸš€ Quick Start

pip install serbian-data-mcp

Then add to your MCP client configuration (see Usage below).

Install from Smithery

Smithery is a registry and CLI for discovering and installing MCP servers.

# Install the Smithery CLI
npm install -g smithery@latest

# Add to Claude Desktop
smithery mcp add acailic/serbian-data-mcp --client claude

# Add to Cursor
smithery mcp add acailic/serbian-data-mcp --client cursor

# Or connect as a remote Smithery connection
smithery mcp add acailic/serbian-data-mcp --id serbian-data

Note: Requires Node.js 20+. After adding, restart your AI client for changes to take effect.

Install from Source

git clone https://github.com/acailic/serbian-data-mcp
cd serbian-data-mcp
uv sync

πŸ“– Configuration

The server works out of the box with sensible defaults. To customize, create a config.json in your working directory (or next to the installed package):

{
  "api_base": "https://data.gov.rs",
  "rate_limit": 1.0,
  "timeout": 30,
  "cache_dir": ".cache",
  "export_dir": "exports"
}

See config.example.json in the source repo for all options.

πŸš€ Usage

Claude Desktop Configuration

{
  "mcpServers": {
    "serbian-data": {
      "command": "serbian-data-mcp"
    }
  }
}

Or if you installed from source:

{
  "mcpServers": {
    "serbian-data": {
      "command": "python",
      "args": ["-m", "serbian_data_mcp"]
    }
  }
}

Via Smithery CLI

If you installed via Smithery, the configuration is handled automatically. Just run:

# For Claude Desktop
smithery mcp add acailic/serbian-data-mcp --client claude

# For Cursor
smithery mcp add acailic/serbian-data-mcp --client cursor

Then restart your AI client. No manual config editing needed.

All charts feature a polished dark data-journalism theme with Inter font, refined hover styles, and consistent Serbian flag color palette. Three themes available: dark, light, and infographic.

Line chart showing GDP trends

Bar Charts β€” Comparisons & Rankings

Bar chart comparing categories

Choropleth Map β€” Serbian Districts

Interactive map of 25 Serbian districts with Cyrillic/Latin name resolution, available as choropleth or bubble map.

Population Pyramid β€” Demographics

Population pyramid showing age Γ— sex distribution

Slope Chart β€” Ranking Changes

Shows how district rankings shifted between censuses (2002 β†’ 2022), with green for gainers and red for losers.

Sankey Diagram β€” Budget Flows

Visualize budget flows from revenue sources through ministries to spending categories.

Radar Chart β€” Multi-Metric Comparison

Compare cities across population, GDP per capita, schools, hospitals, and parks on a single spider plot.

Waffle Chart β€” Proportional Data

"1 in 4 Serbs live in Belgrade" β€” each category gets a block of squares in a 10Γ—10 grid.

Donut Charts β€” Sector Distribution

Donut chart showing proportional distribution

Infographics β€” Data Stories

Auto-generated single-page stories with big number cards, timeline ribbon, insights, and supporting charts.

Dashboards β€” Multi-Panel Views

Combine multiple chart types into a single dashboard layout with big number KPIs.

Scrollytelling β€” Scroll-Driven Stories

Interactive HTML stories that reveal data as the user scrolls, with IntersectionObserver animations.

Examples

Search & Visualize

# Search datasets
datasets = await mcp.call_tool("search_datasets", {
    "query": "population",
    "format": "json",
    "page_size": 10
})

# Create a basic chart
chart = await mcp.call_tool("create_visualization", {
    "data": data,
    "chart_type": "line",
    "title": "Population Trends",
    "x_column": "year",
    "y_column": "population",
})

# Create an advanced chart (slope chart for census changes)
slope = await mcp.call_tool("create_slope_chart", {
    "data": census_data,
    "entity_column": "district",
    "start_column": "pop_2002",
    "end_column": "pop_2022",
    "title": "Census Ranking Changes 2002β†’2022"
})

Forecast & Benchmark

# Forecast future GDP
forecast = await mcp.call_tool("forecast_data", {
    "data": gdp_data,
    "time_column": "year",
    "value_column": "gdp",
    "periods_ahead": 5
})

# Compare against benchmarks
comparison = await mcp.call_tool("benchmark_data", {
    "data": city_data,
    "value_column": "gdp_pc",
    "entity_column": "city",
    "benchmarks": {"EU average": 35000}
})

Create a Full Infographic

story = await mcp.call_tool("create_infographic", {
    "data": population_data,
    "title": "Srbija po Popisu 2022",
    "chart_type": "bar",
    "x_column": "district",
    "y_column": "population_2022",
    "extra_big_numbers": [
        {"number": "6.6M", "label": "Ukupno stanovnika", "color": "gold", "trend": "down"},
        {"number": "23%", "label": "Beograd region", "color": "blue", "trend": "up"},
    ],
    "timeline_events": [
        {"year": "2002", "label": "Popis 2002", "dot_class": ""},
        {"year": "2022", "label": "Popis 2022", "dot_class": "gold"},
    ]
})

Available MCP Tools

Data Access

Tool

Description

search_datasets

Search 3,400+ datasets with filters

get_dataset

Get complete dataset details

get_resource_data

Download and parse resource data

list_organizations

Browse data providers

suggest_datasets

Autocomplete for search

Data Transformation

Tool

Description

filter_data

Filter rows by conditions

group_data

Group and aggregate

sort_data

Sort by column(s)

select_columns

Select/rename columns

data_profile

Statistical summary of dataset

Basic Charts

Tool

Description

create_visualization

Line, bar, pie, scatter, histogram, box plot

create_advanced_visualization

Heatmap, treemap, gauge, funnel, sparklines, animated

create_arrow_chart

Directional arrow chart

create_dumbbell_chart

Before/after comparison

Novel Charts

Tool

Description

create_slope_chart

Ranking changes between two periods

create_waffle_chart

Proportional icon grid

create_population_pyramid

Age Γ— sex demographic distribution

create_sankey_diagram

Budget/energy flow visualization

create_radar_chart

Multi-metric spider comparison

Maps

Tool

Description

create_choropleth_map

Colored district map of Serbia

create_bubble_map

Bubble-sized district map

create_multi_layer_map

Toggle between indicators

Analytics & Forecasting

Tool

Description

forecast_data

Linear/exponential projections

benchmark_data

Compare against reference values

compare_cross_dataset

Cross-dataset correlations

Storytelling

Tool

Description

create_infographic

Full data story with KPIs, timeline, chart, insights

create_dashboard

Multi-panel dashboard layout

create_scrollytelling

Scroll-driven interactive story

Export & Sharing

Tool

Description

export_visualization

Export as HTML, JSON, PNG, or PDF

generate_embed

Generate iframe embed code

enhance_chart_tooltips

Add rich contextual tooltips

πŸ“š Documentation

Development

Setup Development Environment

make install

Generate Showcase Exports

uv run python generate_showcase.py

This creates 12 polished HTML files in exports/ demonstrating all chart types with sample Serbian data.

Running Tests

make test       # Run all tests with coverage
make test-quick # Quick tests (no coverage)

Code Quality Checks

make check      # Run all quality checks (lint, format, type-check, security)
make check-quick # Quick checks (lint + format only)

Project Structure

serbian-data-mcp/
β”œβ”€β”€ exports/                     # Generated HTML visualizations
β”œβ”€β”€ src/serbian_data_mcp/
β”‚   β”œβ”€β”€ api/                     # API client for data.gov.rs
β”‚   β”œβ”€β”€ catalog/                 # Dataset catalog and search
β”‚   β”œβ”€β”€ data/                    # Data parsing and transformation
β”‚   β”œβ”€β”€ intelligence/            # Query expansion and smart search
β”‚   β”œβ”€β”€ viz/
β”‚   β”‚   β”œβ”€β”€ charts.py            # Basic 6 chart types (auto-themed)
β”‚   β”‚   β”œβ”€β”€ advanced_charts.py   # Heatmap, treemap, gauge, funnel, sparklines
β”‚   β”‚   β”œβ”€β”€ novel_charts.py      # Slope, waffle, pyramid, sankey, radar
β”‚   β”‚   β”œβ”€β”€ maps.py              # Choropleth map of 25 Serbian districts
β”‚   β”‚   β”œβ”€β”€ map_advanced.py      # Bubble map, multi-layer map
β”‚   β”‚   β”œβ”€β”€ infographics.py      # Full infographic builder
β”‚   β”‚   β”œβ”€β”€ scrollytelling.py    # Scroll-driven HTML stories
β”‚   β”‚   β”œβ”€β”€ animations.py        # Animated charts (timeline, bars, comparison)
β”‚   β”‚   β”œβ”€β”€ themes.py            # Dark/light/infographic themes
β”‚   β”‚   β”œβ”€β”€ insights.py         # Auto-extracted insights & narratives
β”‚   β”‚   β”œβ”€β”€ tooltips.py          # Rich hover tooltips
β”‚   β”‚   β”œβ”€β”€ forecast.py          # Linear/exponential forecasting
β”‚   β”‚   β”œβ”€β”€ data_tables.py        # Styled data tables
β”‚   β”‚   β”œβ”€β”€ special_charts.py    # Arrow, dumbbell, lollipop
β”‚   β”‚   β”œβ”€β”€ exporters.py         # HTML/PNG/JSON/PDF/export
β”‚   β”‚   └── datawrapper_export.py # Datawrapper cloud API
β”‚   β”œβ”€β”€ config.py                # Configuration management
β”‚   β”œβ”€β”€ exceptions.py            # Custom exceptions
β”‚   └── tools.py                 # MCP tool definitions (30+ tools)
β”œβ”€β”€ tests/                       # Comprehensive test suite (314 tests)
β”œβ”€β”€ generate_showcase.py         # Generate showcase HTML exports
β”œβ”€β”€ .github/workflows/           # CI/CD configuration
β”œβ”€β”€ pyproject.toml               # Project configuration
└── Makefile                     # Development commands

License

MIT License - see LICENSE file

Available Tools

67 tools
add_chart_annotationC

Add a callout annotation to a chart for storytelling.

Text box with optional arrow pointing to a data point.

ParametersJSON Schema
NameRequiredDescriptionDefault
xNoX position (data coordinate)
yNoY position (data coordinate)
textYesAnnotation text
figureYesPlotly figure dict from create_chart()
font_sizeNoText size
show_arrowNoShow arrow pointing to data
arrow_colorNoArrow color (default: gold)#ffab00

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden. It only states that the tool adds an annotation with an optional arrow, but does not disclose behavioral traits such as whether the input figure is mutated, what the function returns, or any side effects. The return value and state changes are not mentioned.

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

Conciseness4/5

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

The description is very concise, consisting of two sentences that convey the core purpose and a key feature. It is front-loaded and efficient, though it could be slightly more informative given the tool's parameter complexity.

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

Completeness3/5

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

Given the tool has 7 parameters, 100% schema coverage, and an output schema, the description is adequate but incomplete. It does not explain the return value, that the figure is manipulated, or that the figure should come from create_chart(). Sibling tools and usage context are absent.

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

Parameters3/5

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

Schema description coverage is 100%, providing baseline. The description adds minimal context by describing the annotation as a 'text box with optional arrow,' which aligns with the 'show_arrow' parameter. It does not add significant meaning beyond what the schema already defines for parameters like x, y, figure, etc.

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

Purpose4/5

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

The description clearly states the tool adds a callout annotation to a chart for storytelling, with a text box and optional arrow. It specifies the resource (chart) and action (add callout annotation), but does not explicitly differentiate from the sibling tool 'add_chart_callouts', which may overlap in functionality.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'add_chart_callouts', 'add_chart_highlight_zone', or 'add_chart_threshold_line'. There is no mention of prerequisites, context, or when not to use this tool.

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

add_chart_calloutsA

Add multiple annotation callout boxes to highlight data points.

Each box has arrow pointing to data. Points: {x, y, text, color?, ax?, ay?}

Returns: Enhanced figure dict

ParametersJSON Schema
NameRequiredDescriptionDefault
figureYesPlotly figure dict from create_chart()
pointsYesList of {x, y, text, color?} dicts
prefixNoText before each callout
suffixNoText after each callout

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description partially covers behavior: each callout has an arrow, points structure is given, and it returns an enhanced figure dict. However, it does not disclose whether the input figure is mutated or if there are side effects like overwriting existing annotations. The return type is mentioned but no details on the enhanced dict structure.

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

Conciseness5/5

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

The description is concise with three sentences: first states purpose, second explains points structure, third states return value. Every sentence is essential and there is no unnecessary text.

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

Completeness4/5

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

Given the tool has 4 parameters, nested objects, and an output schema, the description adequately explains the points structure and return type. It could mention limitations (e.g., number of callouts) or that the figure should be from create_chart(). Overall, it provides sufficient context for a moderately complex tool.

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

Parameters4/5

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

The schema provides 100% coverage for parameters, but the description adds meaningful detail: it documents optional fields 'ax' and 'ay' in points (not in schema), specifies the figure comes from create_chart(), and clarifies prefix/suffix as text before/after each callout. This adds value beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: adding multiple annotation callout boxes to highlight data points. It distinguishes from sibling tools like add_chart_annotation and add_chart_highlight_zone through the specific mention of callout boxes with arrows and the structured point data.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. There is no mention of prerequisites, such as requiring a figure from create_chart(), nor any exclusion criteria. The description implicitly indicates use for highlighting data points but lacks explicit when-to-use/when-not-to-use guidance.

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

add_chart_highlight_zoneA

Add a shaded vertical highlight zone to a chart.

Highlights a time period with a colored band. Ideal for: COVID years, crisis periods, policy changes.

Returns: Enhanced figure dict

ParametersJSON Schema
NameRequiredDescriptionDefault
x_endYesEnd of zone
figureYesPlotly figure dict from create_chart()
x_startYesStart of zone
fill_colorNoRGBA fill colorrgba(198, 40, 40, 0.1)
annotation_textNoOptional label above the zone

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations, but description accurately states it adds a shaded zone to a chart figure and returns an enhanced dict. Does not mention potential side effects, but for chart enhancement this is sufficient.

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

Conciseness5/5

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

Three sentences, front-loaded with action, purpose, and return value. No unnecessary words.

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

Completeness4/5

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

Adequately describes the tool's purpose and return. Lacks details on error conditions or figure modification behavior, but acceptable for a chart enhancement tool with output schema.

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

Parameters3/5

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

Schema has 100% coverage, so description adds no new parameter details beyond what's in the schema. Baseline score of 3 is appropriate.

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

Purpose5/5

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

Description clearly states it adds a shaded vertical highlight zone to a chart, with specific examples (COVID years, crisis periods). Distinguishes from sibling tools like add_chart_annotation and add_chart_threshold_line.

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

Usage Guidelines4/5

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

Provides ideal use cases (crisis periods, policy changes) but does not explicitly say when not to use or mention alternative tools.

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

add_chart_threshold_lineB

Add a horizontal threshold/reference line with label.

Ideal for: EU average benchmark, target/goal line, critical threshold.

Returns: Enhanced figure dict

ParametersJSON Schema
NameRequiredDescriptionDefault
colorNoLine color (default: gold)#ffab00
labelNoLabel text
figureYesPlotly figure dict from create_chart()
directionNo'above' or 'below'above
thresholdYesY-value of the line

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided; description only states action and return type. Does not disclose side effects, in-place mutation vs. new dict, or any other behavioral traits.

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

Conciseness5/5

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

Three short sentences, front-loaded with the action. Every sentence adds value; no waste.

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

Completeness4/5

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

Given parameter count and output schema existence, the description is mostly complete. Missing explicit comparison with sibling tools that add other chart elements.

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

Parameters3/5

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

Schema covers 100% of parameters with descriptions. The tool description adds no extra parameter meaning beyond what is already in the input schema.

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

Purpose4/5

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

The description clearly states 'Add a horizontal threshold/reference line with label', specifying the verb and resource. It is distinguishable from siblings like add_chart_annotation, but does not explicitly differentiate itself.

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

Usage Guidelines3/5

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

Provides example use cases (EU average benchmark, target/goal line, critical threshold), implying when to use. However, no guidance on when not to use or alternatives among siblings.

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

aggregate_data_toolA

Aggregate a single column using a function.

Shorthand for transform_data(operation='aggregate'). Returns the scalar result as {"value": ..., "column": ..., "function": ...}.

Functions: sum, mean, median, min, max, count, std, var.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts from get_resource_data()
columnYesColumn to aggregate
functionNoAggregation function (default "sum")sum

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations exist, so the description carries full burden. It discloses the return format (scalar JSON with value, column, function) and lists supported functions. It does not cover edge cases (e.g., empty data) but is transparent about core behavior.

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

Conciseness5/5

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

Two sentences, no redundancy. Purpose is front-loaded, and every sentence adds necessary information (purpose, alias, return format, functions).

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

Completeness5/5

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

Given the tool's simplicity (single column aggregation) and the presence of a full schema and output schema, the description is complete. It covers purpose, alias, return structure, and supported functions without gaps.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds value by explaining the result format and default function (sum), beyond what the schema provides.

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

Purpose5/5

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

The description states exactly what the tool does: aggregate a single column using a function. It distinguishes itself from siblings like filter_data_tool or group_data_tool by specifying it's a shorthand for transform_data(operation='aggregate') and returns a scalar result.

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

Usage Guidelines3/5

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

The description implies usage via 'Shorthand for transform_data(operation='aggregate')', suggesting when to use the simpler form. However, it does not explicitly state when not to use it or compare with alternatives like group_data_tool for multiple columns.

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

apply_chart_themeA

Apply visual theme to a chart figure from create_chart().

Themes: 'dark' (data-journalism), 'light' (clean), 'infographic' (large type). Add annotations: [{"text": "...", "x": val, "y": val}] for callouts. Add zones: [{"x_start": val, "x_end": val, "label": "..."}] for highlights.

ParametersJSON Schema
NameRequiredDescriptionDefault
themeNo'dark', 'light', or 'infographic'dark
figureYesPlotly figure dict from create_chart()
annotationsNoCallout annotations
highlight_zonesNoShaded highlight regions

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses theme options and optional features but lacks details on side effects (e.g., overwriting existing theme) or error handling for invalid figures.

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

Conciseness4/5

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

Three sentences, front-loaded core purpose, followed by theme options and optional features. No wasted words, but could be slightly more structured.

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

Completeness3/5

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

Given output schema exists, return values need not be explained. However, missing details on preconditions (figure must be from create_chart) and whether the tool modifies in place or returns a new figure.

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

Parameters4/5

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

With 100% schema coverage, the description adds value by explaining themes with examples and showing structure for annotations and zones, going beyond the schema's descriptions.

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

Purpose5/5

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

The description clearly states the tool applies a visual theme to a chart figure from create_chart(), lists three themes, and distinguishes itself from sibling tools like add_chart_annotation by offering bulk application.

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

Usage Guidelines4/5

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

The description implies usage after creating a chart, and mentions optional annotations and zones, but does not explicitly state when not to use it or provide alternatives for individual modifications.

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

benchmark_dataB

Compare against benchmarks (EU average, regional, custom).

Returns: {statistical_benchmarks, best_performer, worst_performer, comparisons, insights}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts
benchmarksNo{benchmark_name: value}, e.g. {"EU average": 50000}
value_columnYesNumeric column to benchmark
entity_columnYesEntity names

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description should reveal behavior beyond input/output. It does not mention whether the tool is read-only, how it handles missing values, or any required data formats. Only output structure is provided.

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

Conciseness5/5

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

Two sentences, front-loaded with purpose and output fields. No superfluous information.

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

Completeness3/5

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

Adequate for a straightforward tool with output schema. Missing details on error handling, data requirements, and best practices, but sufficient for basic understanding.

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

Parameters4/5

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

Schema coverage is 100% with basic descriptions. The tool description adds context by giving examples of benchmarks (EU average, regional, custom), augmenting the 'benchmarks' parameter's meaning. This adds value beyond the schema.

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

Purpose4/5

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

The description states the tool compares data against benchmarks and lists return fields. It gives examples like EU average, regional, custom, which clarifies scope. However, it could be more precise about what 'compare' entails (e.g., statistical analysis).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like compare_datasets or compute_metrics. The description does not mention prerequisites or exclusions.

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

browse_recent_datasetsA

Discover newly added/updated datasets. Returns most recently modified first.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLook-back window (1-365, default 7)
page_sizeNoResults to return (1-100, default 20)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Discloses ordering and parameters but doesn't add behavioral details like authentication needs, data scope, or pagination behavior beyond what schema provides. No annotations to supplement.

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

Conciseness5/5

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

Single sentence, front-loaded with action, no redundancy.

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

Completeness4/5

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

Sufficient for a simple list tool with two parameters and an output schema; lacks mention of return type or dataset scope but adequate overall.

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

Parameters3/5

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

Schema already describes both parameters (days, page_size) with ranges and defaults. Description adds no new meaning beyond the schema.

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

Purpose5/5

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

Clearly states the tool discovers newly added/updated datasets and returns them ordered by modification time, distinguishing it from siblings like search_datasets or get_dataset.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., search_datasets for keyword-based discovery, preview_dataset for a single dataset).

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

build_dashboardB

Build multi-panel dashboard HTML. Each panel: chart, HTML, or big number.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoDashboard titleSerbia Data Dashboard
panelsYesList of panel dicts
filenameNoOutput filename (without .html)dashboard

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavior. Only mentions output format (HTML) but not side effects, permissions, or data handling. Lacks details on how panels are built.

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

Conciseness5/5

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

Two short sentences, front-loaded with action. No extraneous information.

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

Completeness2/5

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

Despite output schema existing, the description is too minimal for a dashboard builder. Does not cover panel configuration, data sources, or theming.

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

Parameters3/5

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

Schema coverage is 100%, providing baseline of 3. Description adds that panels can be chart, HTML, or big number, which provides context beyond schema, but doesn't detail panel dict structure.

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

Purpose5/5

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

Clearly states 'Build multi-panel dashboard HTML' with specific panel types (chart, HTML, big number). Distinguishes from sibling tools like create_chart (single chart) or build_infographic.

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

Usage Guidelines3/5

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

Implied usage for creating dashboards but no explicit when-to-use or alternatives. Does not mention when not to use or prerequisites.

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

build_infographicA

Create a complete infographic HTML: headline + big number + chart + insights.

Self-contained HTML with responsive design. Opens in any browser. Saved to exports/ directory.

Returns: {filepath, metadata, insights, headline}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts from get_resource_data()
themeNo'dark', 'light', or 'infographic'infographic
titleNoInfographic titleSerbian Data Story
filenameNoOutput filename (without .html)infographic
x_columnNoX-axis column
y_columnNoY-axis column
chart_typeNoMain chart (line, bar, pie, scatter, histogram, box)bar
time_columnNoOptional time column for insight extraction
entity_columnNoOptional entity column for insight extraction

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden: it mentions output is self-contained HTML, responsive, saved to exports/, and returns fields. However, it omits details like file overwrite behavior, auth requirements, or performance implications.

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

Conciseness5/5

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

The description is very concise: three sentences covering purpose, output format, and return structure with no redundant information.

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

Completeness3/5

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

Given 9 parameters, schema descriptions, and existing output schema, the description provides a good overview but lacks details on parameter interplay (e.g., how data maps to chart components) and does not address error conditions or data prerequisites.

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

Parameters3/5

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

Schema coverage is 100% so baseline is 3. The description adds context about output fields (headline, insights) but does not significantly enhance parameter understanding beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the tool creates a 'complete infographic HTML' with specific components (headline, big number, chart, insights), and distinguishes itself from siblings like 'create_chart' by emphasizing completeness and self-containment.

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

Usage Guidelines3/5

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

The description implies usage for full infographics but provides no explicit guidance on when to use this tool versus alternatives (e.g., 'create_chart', 'build_dashboard'), nor any when-not-to or prerequisite conditions.

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

compare_cross_datasetA

Extract insights by comparing two related datasets.

Finds correlations, divergences, and rank disagreements. Ideal for: 'population vs air quality' analyses.

Returns: {summary_a, summary_b, correlation, insights}

ParametersJSON Schema
NameRequiredDescriptionDefault
data_aYesFirst dataset
data_bYesSecond dataset
label_aNoLabel for first datasetDataset A
label_bNoLabel for second datasetDataset B
value_column_aYesNumeric column in first dataset
value_column_bYesNumeric column in second dataset
entity_column_aNoEntity column in first dataset
entity_column_bNoEntity column in second dataset

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It discloses the return structure (summary_a, summary_b, correlation, insights) but does not mention behavioral traits like side effects, permissions, or limitations.

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

Conciseness5/5

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

The description is very concise with two sentences and a return line, no wasted words, well-structured and front-loaded.

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

Completeness4/5

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

Given the output schema exists and the tool has 8 parameters (4 required), the description covers purpose, use case, and return format. It could be improved by mentioning prerequisites like dataset alignment, but is largely complete.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds minimal parameter information beyond the schema, only stating the tool compares two datasets without elaborating on parameters.

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

Purpose4/5

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

The description clearly states the tool extracts insights by comparing two related datasets, and mentions correlations, divergences, and rank disagreements. However, it does not explicitly distinguish from the sibling tool 'compare_datasets', which may have a similar purpose.

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

Usage Guidelines3/5

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

Provides a usage example ('population vs air quality') indicating ideal use cases, but lacks explicit guidance on when not to use or alternatives.

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

compare_datasetsB

Compare two datasets side by side. Helps choose the best dataset for analysis.

Shows differences in publisher, tags, resource count, formats, quality.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_id_1YesFirst dataset ID (from search_datasets)
dataset_id_2YesSecond dataset ID (from search_datasets)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must convey behavioral traits. It describes what the tool shows but does not disclose whether it is read-only, requires authentication, or has any side effects. The read-only nature is implied but not explicit.

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

Conciseness5/5

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

Two sentences with no wasted words. First sentence states core action, second lists output details. Front-loaded and efficient.

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

Completeness4/5

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

Given the presence of an output schema, the description appropriately skips return value details and instead lists what differences are shown. It covers core functionality but could mention prerequisites like dataset existence.

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

Parameters3/5

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

Schema coverage is 100% and both parameters have clear descriptions referencing 'search_datasets'. The tool description does not add additional meaning beyond the schema, so baseline 3 applies.

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

Purpose4/5

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

The description clearly states the verb 'compare' and the resource 'datasets', and lists specific comparison dimensions (publisher, tags, resource count, formats, quality). However, it does not distinguish itself from sibling tool 'compare_cross_dataset', which may lead to confusion about when to use which tool.

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

Usage Guidelines3/5

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

The description implies the tool is for choosing the best dataset by comparing differences, providing a usage context. But it lacks explicit when-to-use or when-not-to-use guidance, and does not mention alternatives like 'compare_cross_dataset'.

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

compute_metricsA

Compute derived metrics: YoY changes, per-capita, growth rates, index (base=100).

Returns: {yoy_changes, per_capita, growth_rates, index_values, derived_data}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts
time_columnNoTemporal column for YoY/growth
entity_columnNoEntity names for per-entity breakdown
population_columnNoPopulation counts for per-capita

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations; description does not disclose side effects, authorization needs, or safety profile beyond implying non-destructive compute operation.

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

Conciseness5/5

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

Two concise sentences front-loaded with main action and return description, no fluff.

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

Completeness4/5

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

Adequately covers inputs, outputs, and computed metrics for a moderate-complexity tool; could mention prerequisites like column presence.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions; description adds output structure but does not significantly enhance parameter understanding.

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

Purpose5/5

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

Description clearly states verb 'Compute' and lists specific derived metrics (YoY changes, per-capita, growth rates, index) and return structure, distinguishing it from siblings like aggregate_data_tool.

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

Usage Guidelines3/5

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

Implies usage when these specific metrics are needed, but no explicit guidance on when not to use or alternatives.

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

create_animated_chartC

Create animated charts with smooth transitions and play/pause.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNoSingle dataset (for bars_evolution and timeline)
themeNoVisual themedark
titleNoChart title
datasetsNoDict of label→data (for comparison)
filenameNoOutput filename (without .html)animated
time_columnNoTime periods column
value_columnNoNumeric values column
animation_typeNo'bars_evolution', 'timeline', or 'comparison'bars_evolution
category_columnNoEntity names column

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description bears full burden. It mentions 'smooth transitions and play/pause' but fails to disclose output format, performance implications, data requirements (e.g., time series), or limitations. The existing output schema is not leveraged for behavioral clues.

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

Conciseness4/5

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

Extremely concise single sentence. No wasted words, but the brevity sacrifices completeness. Scores high for conciseness, not for structure.

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

Completeness2/5

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

Given 9 parameters, many sibling tools, and an output schema, the description is too sparse. It does not explain animation types, data formatting, or how to use the output. The output schema exists but is not referenced to aid completeness.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are well-documented. The description adds no additional meaning beyond what the schema provides, but the schema itself is sufficient. Baseline 3 applies.

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

Purpose4/5

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

The description clearly states the verb 'create' and resource 'animated charts' with specific features ('smooth transitions and play/pause'). It distinguishes from static chart tools but not from other animated chart variants among siblings.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'create_chart' or other chart creation tools. The description does not provide context on preferred 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.

create_arrow_chartA

Arrow-style chart showing directional changes. Green=positive, red=negative.

Ideal for: rankings change, budget surplus/deficit, growth/decline.

Returns: {filepath, title, rows}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts
themeNo'dark', 'light', or 'infographic'dark
titleNoChart title
filenameNoOutput filename (without .html)arrow_chart
label_columnYesCategory labels
value_columnYesNumeric values (change, growth rate)
reference_valueNoZero/baseline (default: 0)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It mentions the output structure (filepath, title, rows) and color coding but does not disclose potential side effects (e.g., file creation, permissions, or data persistence). This is adequate but leaves questions about behavior beyond the immediate output.

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

Conciseness5/5

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

The description is extremely concise with three focused sentences: one defining the chart, one listing ideal uses, and one summarizing the return format. No wasted words; each sentence serves a clear purpose.

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

Completeness5/5

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

Given the presence of an output schema (as indicated by context signals) and full schema coverage, the description provides sufficient context for a simple chart creation tool. It mentions return shape and use cases, leaving no obvious gaps for the agent to infer.

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

Parameters3/5

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

The input schema has 100% coverage, so the description adds limited additional meaning beyond parameter names and types. It provides context for the data (directional changes) and colors, but does not elaborate on parameter formats or constraints beyond what the schema already declares.

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

Purpose5/5

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

The description explicitly states it creates an arrow-style chart for showing directional changes, with clear color coding (green=positive, red=negative). It distinguishes itself from sibling chart tools by specifying the chart type and use cases like rankings change, budget surplus/deficit, and growth/decline.

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

Usage Guidelines4/5

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

The description provides ideal use cases (rankings change, budget surplus/deficit, growth/decline), giving context for when to use this tool. However, it does not explicitly contrast with sibling chart tools or state when not to use it, which would enhance decision-making.

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

create_bubble_mapA

Bubble map of Serbia β€” circle size = magnitude. Avoids large-district bias.

Returns: {filepath, districts_matched, title}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts with district names and values
themeNoVisual themedark
titleNoMap title
filenameNoOutput filename (without .html)bubble_map
name_columnYesDistrict names column
value_columnYesNumeric values (determines bubble size)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses the return format ({filepath, districts_matched, title}) and notes the bias-avoidance behavior. However, it lacks details on prerequisites, side effects (e.g., file creation), or performance implications.

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

Conciseness5/5

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

The description is extremely concise: two short sentences and a clear return line. Every word adds value, and the structure is front-loaded with the core purpose.

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

Completeness4/5

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

Given 6 parameters (3 required) and the presence of an output schema, the description adequately covers the tool's purpose, key behavior, and return format. It could be more complete with usage hints or prerequisites, but it is sufficient for an agent to understand the tool's role.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all parameters. The description adds minimal extra meaning beyond stating that circle size corresponds to magnitude (value_column), but does not elaborate on other parameters like theme or filename beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states 'Bubble map of Serbia' and explains that circle size represents magnitude, specifying the resource and distinguishing it from generic mapping tools. It also mentions avoiding large-district bias, adding unique context.

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

Usage Guidelines3/5

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

The description implies usage for visualizing numeric magnitudes on a map of Serbia but does not explicitly state when to use this tool over siblings like create_serbia_map or when not to use it. No alternatives or exclusions are provided.

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

create_chartA

Create interactive charts from data. Supports 20+ chart types.

BASIC CHARTS (most common):

  • "line": x_column + y_column β†’ time series, trends

  • "bar": x_column + y_column β†’ comparisons, rankings

  • "pie": values_column + names_column β†’ proportions

  • "scatter": x_column + y_column β†’ correlations

  • "histogram": x_column or y_column β†’ frequency distributions

  • "box": y_column (+ optional x_column) β†’ statistical distributions

ParametersJSON Schema
NameRequiredDescriptionDefault
binsNoHistogram bins (default auto)
dataYesRow dicts from get_resource_data()
fillNonone
labelNoGauge label
themeNo'dark', 'light', or 'infographic'dark
titleNoChart title
top_nNoMax entities for sparklines
valueNoSingle numeric value for gauge (0-100)
columnsNo
markersNo
max_valNo
min_valNo
a_columnNo
b_columnNo
c_columnNo
r_columnNo
x_columnNoX-axis column (line, bar, scatter, histogram)
y_columnNoY-axis column (line, bar, scatter, box)
z_columnNoHeat values (heatmap)
chart_typeNoChart type (see above)line
end_columnNoInterval end (date) for timeline
lat_columnNo
lon_columnNo
low_columnNo
high_columnNo
open_columnNo
orientationNoBar direction: "v" (vertical) or "h" (horizontal)v
size_columnNoOptional bubble sizes (scatter)
close_columnNo
color_columnNoOptional color grouping
frame_columnNoAnimation time column
locationmodeNocountry names
names_columnNoCategory labels (pie, treemap, funnel)
start_columnNoInterval start (date) for timeline
trend_columnNoSparkline time column
source_columnNo
target_columnNo
values_columnNoNumeric values column (pie, treemap, funnel)
category_columnNoAnimation grouping
hierarchy_columnNoTreemap parent column
comparison_columnsNo2 column names for comparison_bar

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It details chart types and column usage but does not disclose behavioral traits like data size limits, performance, or error handling. It mentions 'default auto' for bins but lacks broader behavioral context.

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

Conciseness4/5

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

The description is concise, with a clear opening sentence and a structured list of basic chart types. It is front-loaded with the core purpose, though the list could be slightly more organized with bullet points for readability.

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

Completeness4/5

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

Given 41 parameters and an output schema, the description covers the most common use cases (basic chart types) and references `get_resource_data()` for data input. It does not fully detail all 20+ chart types but is sufficient for typical usage.

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

Parameters4/5

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

With 56% schema description coverage, the description adds significant meaning beyond the schema. It groups chart types and maps columns (e.g., 'x_column', 'y_column') to specific chart behaviors, helping the agent select the right parameters for each chart type.

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

Purpose5/5

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

The description clearly states 'Create interactive charts from data. Supports 20+ chart types.' and lists basic chart types with their column mappings. This distinguishes it from siblings like `create_animated_chart` or `create_scatter_3d`, providing a specific verb and resource.

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

Usage Guidelines4/5

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

The description provides clear context for basic chart types, explaining which columns to use for each type (e.g., 'line: x_column + y_column β†’ time series, trends'). However, it does not explicitly state when not to use this tool versus sibling tools for specialized charts (e.g., 3D, animated).

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

create_cone_3dA

Interactive 3D vector field / quiver plot (WebGL, orbit-able).

Renders a cone at each (x, y, z) anchor pointing along the vector (u, v, w) β€” a 3D arrow field of direction + magnitude. Cones are colored by vector magnitude and sized by sizeref. Distinct from the scalar 3D charts: a cone field encodes a vector (flow, gradient, force) at each sample point.

Ideal for: wind / air-flow fields, magnetic or electric fields, fluid-flow simulations, gradient directions across a 3D domain.

Returns: {filepath, title, rows}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts (one per vector sample)
themeNo'dark', 'light', or 'professional'dark
titleNoChart title
anchorNo'tail' (default), 'center', or 'tip'tail
sizerefNoCone length scale factor
filenameNoOutput filename (without .html)cone_3d
sizemodeNo'scaled' (default) or 'absolute'scaled
u_columnYesColumn for the vector X component
v_columnYesColumn for the vector Y component
w_columnYesColumn for the vector Z component
x_columnYesColumn for the anchor X position
y_columnYesColumn for the anchor Y position
z_columnYesColumn for the anchor Z position (depth)
colorscaleNoPlotly colorscale name for magnitude mappingViridis

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses interactivity (WebGL, orbit-able), return fields ({filepath, title, rows}), and explains cone coloring by magnitude and sizing by sizeref. Missing details on performance with large datasets or error handling, but adequate for most use cases.

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

Conciseness5/5

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

The description is well-structured: first stating what it is, then explaining rendering, differentiation from siblings, ideal uses, and return value. Every sentence contributes value with no redundancy. Approximately 120 words, efficient and front-loaded.

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

Completeness4/5

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

Given 14 parameters, 7 required, and output schema present, the description covers purpose, usage, behavior, and return. It doesn't explain the output schema (acceptable since it exists) or error handling, but for a chart creation tool it is sufficiently complete.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explaining how parameters like sizeref and colorscale are used in the rendering context ('Cones are colored by vector magnitude and sized by sizeref'). This provides integrative context beyond schema descriptions.

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

Purpose5/5

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

The description clearly states the tool creates an interactive 3D vector field / quiver plot. It specifies the resource (3D vector field) and action (create) with detailed rendering explanation. It distinguishes itself from scalar 3D charts by emphasizing it encodes a *vector*.

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

Usage Guidelines5/5

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

The description explicitly lists ideal use cases: wind/air-flow fields, magnetic/electric fields, fluid-flow simulations, gradient directions. It also provides a clear exclusion by stating 'Distinct from the scalar 3D charts', helping the agent select the correct tool among siblings.

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

create_data_tableA

Create a styled, responsive HTML data table with conditional formatting.

Professional table with ranking indicators and value formatting. Highlights max or min value row.

Ideal for: district statistics, budget breakdowns, top-N listings.

Returns: {filepath, title, rows, total_rows, columns}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts
titleNoTable title
captionNoTable caption text
columnsNoColumns to include (auto-detected if None)
filenameNoOutput filenamedata_table
max_rowsNoMaximum rows to display
highlight_maxNoTrue=max, False=min
format_columnsNo{column: 'number'|'pct'|'currency'}
highlight_columnNoColumn to highlight max/min row

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses key behaviors: creates an HTML table, applies conditional formatting, highlights max/min values, and lists return fields. It does not mention side effects or authentication needs, but for a creation tool this is sufficient.

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

Conciseness5/5

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

The description is concise with five sentences, no fluff. It front-loads the main action, followed by features, ideal uses, and return format. Every sentence adds value.

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

Completeness4/5

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

Given the output schema exists (implied by the return object), the description adequately explains the tool's functionality and output. It could mention handling of large datasets, but overall it is complete for a table creation tool with good schema coverage.

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

Parameters3/5

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

The input schema has 100% coverage, so the baseline is 3. The description does not add individual parameter details beyond what the schema provides; it only gives overarching context. Therefore, the description does not significantly enhance parameter understanding.

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

Purpose5/5

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

The description clearly states 'Create a styled, responsive HTML data table with conditional formatting,' providing a specific verb and resource. It distinguishes the tool from siblings, which are primarily chart/map creation tools, by focusing on table generation with formatting.

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

Usage Guidelines4/5

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

The description includes ideal use cases ('district statistics, budget breakdowns, top-N listings'), giving context for when to use the tool. However, it does not explicitly mention when not to use or provide alternatives, though siblings are clearly different.

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

create_dumbbell_chartA

Dumbbell chart: before/after comparison with connected dots.

Green=increase, red=decrease. Shows magnitude and direction.

Ideal for: population 2010 vs 2022, budget planned vs executed.

Returns: {filepath, title, rows}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts with start and end values
themeNoVisual themedark
titleNoChart title
filenameNoOutput filenamedumbbell_chart
end_columnYesFinal/current values
label_columnYesCategory names
start_columnYesStarting/baseline values

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations provided, so the description carries full burden. It adds useful behavioral details such as color coding (green=increase, red=decrease) and return format, but does not discuss side effects, data requirements, or permissions.

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

Conciseness5/5

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

The description is three sentences, each adding value: definition, color coding, use cases and return format. No unnecessary words, highly efficient.

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

Completeness5/5

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

Given the output schema exists and schema coverage is 100%, the description is complete. It provides examples and return format, covering all necessary context for the agent.

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

Parameters3/5

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

Schema coverage is 100%, and all parameters are described in the schema. The description adds minimal extra meaning beyond the schema, thus baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states 'Dumbbell chart: before/after comparison' with specific examples (population 2010 vs 2022, budget planned vs executed), making the tool's purpose unambiguous and distinct from siblings.

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

Usage Guidelines4/5

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

The description explicitly provides ideal use cases through examples, giving clear context on when to use the tool. However, it does not explicitly state when not to use or differentiate from alternatives like create_slope_chart or create_arrow_chart.

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

create_isosurface_3dA

Interactive 3D iso-surface from a volumetric scalar field (WebGL, orbit-able).

Renders the 3D boundary where value_column falls within [isomin, isomax] β€” a level set of a continuous fourth variable sampled across (x, y, z). The marching-cubes extraction runs client-side at render, so scattered samples are accepted without a regular grid or SciPy.

Ideal for: pollution/concentration thresholds across a 3D monitoring volume, isotherms, groundwater head surfaces, any "region where value β‰₯ threshold".

Returns: {filepath, title, rows}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts (one per volumetric sample point)
themeNo'dark', 'light', or 'professional'dark
titleNoChart title
isomaxNoUpper scalar bound (defaults to column max)
isominNoLower scalar bound (defaults to column min)
opacityNoSurface opacity (0–1)
filenameNoOutput filename (without .html)isosurface_3d
x_columnYesColumn for the X axis
y_columnYesColumn for the Y axis
z_columnYesColumn for the Z axis (depth)
colorscaleNoPlotly colorscale name for value mappingViridis
value_columnYesColumn whose level sets define the surface

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries full behavioral burden. It clearly discloses client-side rendering, WebGL interaction, orbit capability, and that scattered samples are accepted without a regular grid. It also states the return object format. While it doesn't cover rate limits or permissions, for a visualization tool these are sufficient.

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

Conciseness5/5

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

The description is two paragraphs long, with the first paragraph explaining the core function and technical detail, and the second providing ideal use cases. Every sentence adds value, and the key purpose is front-loaded. No unnecessary words.

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

Completeness4/5

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

Given the tool has 12 parameters and no annotations, the description is fairly complete, covering the algorithm, use cases, and output format. However, it could mention limitations (e.g., performance with large datasets) or what 'rows' in the return value refers to. Overall, it provides sufficient context for an agent to understand the tool's purpose and behavior.

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

Parameters3/5

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

Schema coverage is 100%, so the description does not need to add much per-parameter detail. The description adds context about how parameters like isomin/isomax define the level set and that the marching cubes algorithm runs client-side, but this is supplementary. A baseline of 3 is appropriate given complete schema coverage.

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

Purpose5/5

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

The description clearly states the tool creates an interactive 3D iso-surface from a volumetric scalar field. It specifies the specific verb and resource, and distinguishes from sibling tools by mentioning client-side marching cubes and acceptance of scattered samples without a regular grid.

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

Usage Guidelines4/5

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

The description explicitly lists ideal use cases (pollution thresholds, isotherms, etc.) and mentions scattered samples are accepted. However, it does not explicitly state when not to use this tool or provide direct comparisons to sibling tools like create_surface_3d or create_volume_3d.

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

create_line_3dA

Interactive 3D line / trajectory chart (WebGL, orbit-able).

Connects points through 3-space β€” a trajectory. Split into one line per category via color_column.

Ideal for: a route through lat/lon/altitude, a metric evolving across region Γ— time, multi-decade demographic trajectories.

Returns: {filepath, title, rows}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts
themeNo'dark', 'light', or 'infographic'dark
titleNoChart title
filenameNoOutput filename (without .html)line_3d
x_columnYesColumn for the X axis
y_columnYesColumn for the Y axis
z_columnYesColumn for the Z axis (depth)
color_columnNoOptional column splitting points into separate lines

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Discloses interactivity (WebGL, orbit-able) and return structure ({filepath, title, rows}). However, does not clarify side effects (e.g., file saving) or data handling beyond the return.

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

Conciseness5/5

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

Five sentences, well-structured, front-loaded with key information. No unnecessary words or redundancy.

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

Completeness4/5

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

Describes purpose, ideal use, return value, and key behavior. Lacks details on parameter constraints (e.g., data must contain columns), but schema covers those. Good overall coverage for a tool with moderate complexity.

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

Parameters3/5

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

Schema coverage is 100%, so description adds marginal value. It clarifies that color_column splits points into separate lines, adding context beyond the schema's description. Adequate but not exceptional.

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

Purpose5/5

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

The description clearly states it creates an 'Interactive 3D line / trajectory chart' (specific verb and resource). It distinguishes from sibling 3D charts by emphasizing trajectory and splitting by color_column.

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

Usage Guidelines4/5

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

Explicit ideal use cases are given (e.g., route through lat/lon/altitude, metric across region Γ— time). Does not explicitly state when not to use or list alternatives, but the examples are clear and helpful.

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

create_lollipop_chartA

Lollipop chart β€” dots on stems for clean ranking. Can highlight one entity.

Ideal for: district population ranking, budget by ministry, top-N lists.

Returns: {filepath, title, rows}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts
themeNoVisual themedark
titleNoChart title
filenameNoOutput filenamelollipop_chart
label_columnYesCategory labels
value_columnYesNumeric values to rank by
highlight_valueNoValue to highlight (e.g., 'Grad Beograd')
highlight_columnNoColumn to match for highlighting

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations provided; description adds return format and highlighting capability but lacks details on sorting, missing values, or default behavior. Adequate but not comprehensive.

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

Conciseness5/5

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

Extremely concise, three sentences with no fluff. Front-loaded with purpose and use cases.

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

Completeness4/5

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

Given 8 parameters, full schema coverage, and existence of output schema, the description provides enough context for a straightforward chart tool. Could mention sorting or ranking order but not essential.

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

Parameters3/5

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

Schema covers all 8 parameters with descriptions. Tool description adds minimal value beyond the schema, only explaining the highlight feature. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states it creates a lollipop chart for ranking, with examples like district population ranking. It distinguishes from sibling chart tools by specifying the chart type and use case.

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

Usage Guidelines4/5

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

Lists ideal use cases (ranking, top-N lists), which guides when to use. Does not explicitly exclude alternatives but gives clear context.

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

create_mesh_3dA

Interactive 3D mesh from scattered points (WebGL, orbit-able).

Triangulates scattered (x, y, z) points into a connected surface or enclosing hull β€” unlike create_surface_3d which needs a regular grid. An optional intensity_column colors each vertex by a fourth metric.

Ideal for: irregular terrain/field point clouds, region bounding shapes, sparse 3D samples (e.g. pollution at uneven monitoring stations).

Returns: {filepath, title, rows}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts (one per scattered sample point)
themeNo'dark', 'light', or 'infographic'dark
titleNoChart title
filenameNoOutput filename (without .html)mesh_3d
x_columnYesColumn for the X axis
y_columnYesColumn for the Y axis
z_columnYesColumn for the Z axis (depth)
alphahullNo0 = convex hull, >0 = alpha shape, -1 = Delaunay (SciPy)
colorscaleNoPlotly colorscale name for intensity mappingViridis
face_colorNoSolid mesh color when no intensity_column is given
intensity_columnNoOptional column driving per-vertex color

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It states the mesh is interactive (WebGL, orbit-able) and returns {filepath, title, rows}. However, it does not disclose whether the tool is read-only or modifies state, or if there are side effects like file creation. It mentions returning a filepath but doesn't explicitly say it creates a file.

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

Conciseness5/5

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

The description is concise with three clear paragraphs: core functionality in first sentence, contrast with sibling, use cases, and return value. Every sentence adds value, and the structure is front-loaded with the most important information.

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

Completeness4/5

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

Given the tool complexity (11 parameters, 4 required) and the existence of an output schema, the description covers the core functionality, use cases, and return type. However, it could mention that the data must contain x, y, z columns (already required by schema) or any prerequisites like the data format. The description is mostly complete for an agent to use correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds context that the tool triangulates scattered points and distinguishes it from create_surface_3d. It explains the alphahull parameter's options (0=convex, >0=alpha, -1=Delaunay) but that is already in schema. It does not add new meaning to parameters like theme, title, filename, colorscale, face_color beyond what schema provides.

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

Purpose5/5

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

The description clearly states it creates an interactive 3D mesh from scattered points, specifies the triangulation method, and distinguishes itself from the sibling tool create_surface_3d which requires a regular grid. The verb 'creates' and resource '3D mesh' are explicit.

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

Usage Guidelines4/5

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

The description provides explicit use cases (irregular terrain point clouds, region bounding shapes, sparse 3D samples) and mentions when not to use it (vs create_surface_3d). However, it does not explicitly list when alternatives like create_scatter_3d or create_line_3d might be preferred.

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

create_multi_layer_mapA

Multi-layer choropleth with toggle buttons between indicators.

Each layer: {data, name_column, value_column, label, colorscale}

Returns: {filepath, layer_count, title}

ParametersJSON Schema
NameRequiredDescriptionDefault
themeNoVisual themedark
titleNoMap title
layersYesList of layer dicts
filenameNoOutput filename (without .html)multi_layer_map

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

Description discloses return structure (filepath, layer_count, title) and the interactive toggle feature, but does not mention permissions, rate limits, or side effects. No annotations are present, so the description carries the burden for behavioral disclosure, but it misses some aspects like whether the tool saves files or requires authentication.

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

Conciseness5/5

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

The description is extremely concise: two sentences plus a return format list, all front-loaded. No unnecessary words, every sentence earns its place.

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

Completeness4/5

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

The description covers the main purpose, layer structure, and return values. However, it lacks details on theme options, filename formatting, and data preparation requirements. Despite having an output schema (implied), minor gaps remain for a fully self-contained definition.

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

Parameters4/5

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

The description adds meaningful structure for the 'layers' parameter beyond the schema's 'List of layer dicts', specifying fields like data, name_column, value_column, label, colorscale. Other parameters have adequate schema descriptions, so the description provides additional valuable context.

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

Purpose4/5

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

Description clearly states it creates a multi-layer choropleth map with toggle buttons, distinguishing it from sibling map tools like create_bubble_map or create_serbia_map. However, it lacks an explicit verb like 'Creates', but the noun phrase implies creation.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like create_bubble_map or create_serbia_map. The description implies it's for multi-layer choropleths, but does not specify when not to use it or mention any prerequisites.

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

create_population_pyramidA

Population pyramid: age Γ— sex distribution. Males left, females right.

Essential for census data from RZS. Classic demographic visualization.

Returns: {filepath, title, age_groups}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts with age groups and male/female counts
themeNoVisual themedark
titleNoChart title
filenameNoOutput filenamepopulation_pyramid
age_columnYesAge group labels (e.g., '0-4', '5-9', '65+')
male_columnYesMale population counts
female_columnYesFemale population counts

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses orientation (males left, females right) and return structure, but does not mention side effects, permissions, or whether output is overwritten. Some context is provided but not comprehensive.

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

Conciseness5/5

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

Extremely concise with three sentences. The first sentence is front-loaded with the key purpose. Every sentence adds value with no filler.

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

Completeness3/5

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

Given the tool has 7 parameters and an output schema, the description covers the core visualization purpose and return fields but lacks details on parameter usage (e.g., data structure, age groups order) and assumes domain knowledge. Adequate but not rich.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are well-documented in the schema. The description adds minimal new meaning beyond stating the overall purpose (age Γ— sex distribution). It does not elaborate on how data should be structured or explain theme/filename defaults.

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

Purpose5/5

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

Description clearly states it creates a population pyramid showing age Γ— sex distribution with males left and females right. It distinguishes from sibling chart tools by specifying the visualization type and mentioning it's for census data from RZS.

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

Usage Guidelines3/5

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

Implies usage for census demographic data but does not explicitly state when to use this tool over alternatives like create_chart or other chart types. No exclusionary guidance is provided.

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

create_radar_chartA

Radar/spider chart for multi-metric comparison.

Compare entities across multiple indicators on one radar plot.

Ideal for: comparing districts on population+budget+schools+hospitals+air quality.

Returns: {filepath, title, entities, metrics}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts
themeNoVisual themedark
titleNoChart title
filenameNoOutput filenameradar
value_columnsYesList of numeric columns to compare
category_columnYesEntity names

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions the return structure but fails to disclose any behavioral traits such as potential file overwrites, permissions needed, or side effects. For a tool with zero annotations, this is insufficient transparency.

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

Conciseness5/5

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

The description is three short sentences plus labeled sections for 'Ideal for' and 'Returns'. It is front-loaded with the tool's core function, every sentence adds value, and there is no redundancy or wasted text.

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

Completeness3/5

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

Given 6 parameters, no annotations, and an output schema, the description is moderately complete. It covers return values and provides a usage example, but lacks details on data shape requirements, theme/filename defaults, and potential limitations. Schema descriptions compensate partially, but overall the description could be more informative.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema documents all 6 parameters. The description adds an example (population+budget+schools+hospitals+air quality) that contextualizes value_columns and category_column, but does not significantly enhance meaning beyond what the schema already states. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool creates a radar/spider chart for multi-metric comparison, using specific verbs 'create' and 'compare'. It distinguishes from sibling chart tools by naming the chart type and providing a concrete example of comparing districts across indicators.

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

Usage Guidelines4/5

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

The description provides a clear use case ('Ideal for: comparing districts on population+budget+schools+hospitals+air quality'), helping the agent understand when to use this tool. However, it does not explicitly state when not to use it or suggest alternative tools, which would strengthen guidance among 60+ siblings.

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

create_sankey_diagramA

Sankey (alluvial) diagram showing flow between categories.

Ideal for: budget flow (revenue→ministry→spending), energy distribution, migration flows, supply chains.

Returns: {filepath, title, flows}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts with source, target, and flow value
themeNoVisual themedark
titleNoChart title
filenameNoOutput filenamesankey
value_columnYesFlow magnitude
source_columnYesSource/origin category
target_columnYesTarget/destination category

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

Lists return fields {filepath, title, flows}, but with no annotations, the description lacks behavioral details such as data processing constraints, performance considerations, or 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.

Conciseness5/5

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

Description is 4 lines, front-loaded with purpose, ideal uses, and return values. No unnecessary words.

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

Completeness4/5

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

Given no annotations but with output schema present, the description adequately covers purpose, usage, and returns. Could be enhanced with more behavioral context but is sufficient.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are well-documented. The description adds minimal extra meaning beyond the schema, only providing a high-level example.

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

Purpose5/5

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

The description explicitly states 'Sankey (alluvial) diagram showing flow between categories' and lists ideal use cases, clearly distinguishing it from other chart creation tools in the sibling list.

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

Usage Guidelines4/5

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

Provides specific ideal use cases like budget flow and energy distribution, but does not mention when not to use the tool or alternatives among siblings.

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

create_scatter_3dA

Interactive 3D scatter / bubble chart (WebGL, orbit-able).

Plots three numeric dimensions as points in 3-space, with optional color, bubble size, and marker shape encoding up to three more variables.

Ideal for: spatial data (lat/lon/altitude), district Γ— year Γ— population, exploring three census indicators at once.

Returns: {filepath, title, rows}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts
themeNo'dark', 'light', or 'infographic'dark
titleNoChart title
filenameNoOutput filename (without .html)scatter_3d
x_columnYesColumn for the X axis
y_columnYesColumn for the Y axis
z_columnYesColumn for the Z axis (depth)
size_columnNoOptional column driving bubble size
color_columnNoOptional column driving marker color
symbol_columnNoOptional column driving marker shape

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It mentions interactivity, WebGL, and orbit capability, but does not disclose potential performance issues, data size limits, or side effects. The return format is partially described, but lacks detail on the 'rows' field.

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

Conciseness5/5

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

The description is concise (3 sentences) and front-loaded with the key purpose. It efficiently conveys the tool's capability, ideal uses, and return structure without unnecessary detail.

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

Completeness4/5

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

Given the tool's complexity (3D chart with 10 parameters), the description provides a good overview of its capabilities and typical use cases. The output schema exists, so return values are covered, but the description could be more thorough about interactive features.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds minimal extra beyond what's in the schema, only summarizing the optional encodings (color, size, symbol). No additional constraints or examples are provided for parameters.

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

Purpose5/5

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

The description clearly states it creates an interactive 3D scatter/bubble chart using WebGL, with three numeric dimensions and optional encodings. It distinguishes itself from sibling chart types like create_bubble_map and create_cone_3d by specifying the 3D scatter format.

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

Usage Guidelines4/5

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

The description provides context for ideal use cases (spatial data, district Γ— year Γ— population, exploring three census indicators) but does not explicitly state when not to use this tool or mention alternatives. However, the guidance is clear enough for typical scenarios.

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

create_scrollytelling_storyA

Create a scroll-driven HTML data story (scrollytelling).

Multi-section page with narrative text scrolling left and interactive charts updating right β€” the visualise.admin.ch pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault
stepsYesList of step dicts
themeNo'dark' or 'light'dark
titleNoStory titleSerbian Data Story
bylineNoAuthor credit
filenameNoOutput filename (without .html)story
subtitleNoStory subtitle

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It describes the output pattern (text left, charts right) and mentions parameter defaults, but it does not disclose behaviors like file overwriting, validation of steps, required permissions, or error handling. The presence of an output schema (indicated in context) is not mentioned, and step structure is left undefined.

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

Conciseness5/5

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

The description is two sentences, each adding value: the first states the core action, the second provides a concrete pattern reference. No redundant words; it is efficiently scoped.

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

Completeness3/5

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

Given the tool creates a multi-section interactive story, the description covers the basic layout and parameters. However, it lacks details about the step structure (required nested keys), expected behavior with empty steps, and output handling. With an output schema present, some burden is relieved, but step semantics remain underspecified.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description does not add significant meaning beyond what param descriptions provideβ€”it repeats the purpose but doesn't clarify the structure of 'steps' or usage of other params. The step object is left as 'additionalProperties: true' with no extra guidance.

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

Purpose5/5

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

The description clearly states the tool creates a 'scroll-driven HTML data story (scrollytelling)' with a specific pattern (text left, charts right). It uses a specific verb 'create' and resource, and the title and description distinguish it from sibling tools like create_chart or build_dashboard.

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives, nor does it mention prerequisites or when not to use it. It only describes what it does, leaving the agent to infer usage context without explicit direction.

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

create_serbia_mapA

Choropleth map of Serbia by 25 administrative districts. Color-coded by metric.

District names in Natural Earth format (English transliteration). Cyrillic and city shorthand also supported (e.g., 'NiΕ‘', 'Novi Sad'). Use list_serbia_districts() to see all recognized names.

Returns: {filepath, districts_matched, total_districts, title}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts with district names and values
themeNo'dark', 'light', 'infographic'dark
titleNoMap title
filenameNoOutput filename (without .html)serbia_map
colorscaleNo'red', 'blue', 'diverging', 'heat' (default: blue)
name_columnYesDistrict names column
value_columnYesNumeric values to color by

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description fully discloses the mapping behavior, supported name formats, and return values, but could mention any side effects or limitations.

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

Conciseness5/5

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

The description is brief yet comprehensive, with no redundant sentences, and efficiently uses three paragraphs for key information.

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

Completeness5/5

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

For a 7-parameter mapping tool with an output schema, the description covers input, output, and special constraints (name formats), making it fully informative.

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

Parameters4/5

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

Schema coverage is 100%, but the description adds practical context about district name formats and the helper tool, enhancing parameter understanding beyond the schema.

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

Purpose5/5

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

The description clearly states it creates a choropleth map of Serbia by 25 administrative districts, which is specific and distinguishes from sibling tools like bubble maps or multi-layer maps.

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

Usage Guidelines4/5

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

The description implies usage for Serbian district maps and provides a helper tool reference, but lacks explicit when-not or alternative tool guidance.

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

create_slope_chartA

Slope chart: ranking changes between two periods with connecting lines.

Green=gained rank, red=lost rank.

Ideal for: census ranking 2002β†’2022, budget share shifts, district reorderings.

Returns: {filepath, title, rows}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts with entity names and two period values
themeNoVisual themedark
titleNoChart title
top_nNoNumber of entities to show
filenameNoOutput filenameslope_chart
end_columnYesSecond period values
start_columnYesFirst period values
entity_columnYesEntity/district names

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations exist, so the description carries full burden. It describes the return format ('{filepath, title, rows}') and color meaning, but does not disclose potential side effects, authentication needs, or input constraints beyond schema. Adequate but not exceptional.

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

Conciseness5/5

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

The description is extremely concise, using four short lines to convey purpose, color legend, ideal uses, and return type. No filler or redundant information; every sentence adds value.

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

Completeness4/5

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

Given the tool's complexity (8 parameters, 4 required) and presence of an output schema, the description covers the core concept, usage, and return structure. It lacks details about top_n behavior or ranking logic, but is still reasonably complete for a chart creation tool.

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

Parameters3/5

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

Schema description coverage is 100%, so each parameter is documented. The description adds high-level context (e.g., color coding for rank change) but does not explain parameter-specific semantics beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool creates a slope chart for ranking changes between two periods, with specific color coding (green=gained rank, red=lost rank). It distinguishes from sibling chart types and includes concrete use cases (census ranking, budget shifts).

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

Usage Guidelines4/5

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

The description provides explicit ideal use cases (e.g., 'census ranking 2002β†’2022, budget share shifts, district reorderings'), which helps the agent decide when to use this tool. It lacks explicit 'when not to use' or alternatives, but the context is sufficient.

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

create_streamtube_3dA

Interactive 3D streamtube plot of a vector field's flow (WebGL, orbit-able).

Integrates the (u, v, w) vector field into streamlines rendered as tubes whose diameter encodes local flow magnitude. Distinct from create_cone_3d (one discrete arrow per sample): a streamtube shows the integrated trajectories β€” wind corridors, ocean currents, magnetic field lines β€” rather than the instantaneous direction at each point. The streamline integration runs client-side at render, so a sampled grid needs no SciPy or iterative solver.

Ideal for: wind / ocean circulation, ventilation or HVAC airflow, magnetic / electric field lines, any continuous flow domain where the path of the flow matters more than the per-point arrow.

Returns: {filepath, title, rows}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts (one per field-sample point, ideally on a (x, y, z) grid)
themeNo'dark', 'light', or 'professional'dark
titleNoChart title
sizerefNoTube radius scale factor (larger = thicker tubes)
filenameNoOutput filename (without .html)streamtube_3d
u_columnYesColumn for the vector X component
v_columnYesColumn for the vector Y component
w_columnYesColumn for the vector Z component
x_columnYesColumn for the field-sample X position
y_columnYesColumn for the field-sample Y position
z_columnYesColumn for the field-sample Z position (depth)
colorscaleNoPlotly colorscale name for flow-magnitude mappingViridis

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so the description carries full burden. It discloses that the plot is interactive (WebGL, orbit-able), integrates client-side, and returns filepath/title/rows. However, it does not cover potential behaviors like data size limits or rendering performance considerations.

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

Conciseness5/5

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

Concise and well-structured: purpose sentence, integration explanation, contrast with sibling, ideal use cases, and return information. Every sentence adds value without redundancy.

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

Completeness4/5

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

Given the complexity (12 params, 7 required) and the presence of an output return description, the description is fairly complete. It explains the concept, differentiates from similar tools, and provides use case guidance. Minor gap: no explicit mention of data format expectations beyond schema.

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

Parameters3/5

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

Input schema has 100% coverage with descriptions for all parameters. The description adds context about diameter encoding local flow magnitude, but this is more about behavior than parameter meaning. Schema descriptions are sufficient, so baseline 3 is appropriate.

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

Purpose5/5

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

Clearly states the tool creates an interactive 3D streamtube plot of a vector field's flow, using specific verbs ('create') and a specific resource ('streamtube 3d plot'). Explicitly distinguishes from the sibling 'create_cone_3d' by explaining the difference between integrated trajectories and discrete arrows.

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

Usage Guidelines4/5

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

Provides ideal use cases (wind, ocean currents, magnetic field lines) and contrasts with the sibling tool. However, does not explicitly state when not to use the tool or list alternatives beyond the one sibling mentioned.

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

create_surface_3dA

Interactive 3D surface (landscape) chart from gridded data (WebGL, orbit-able).

Long-format (x, y, z) rows are pivoted into a z-value grid and rendered as a continuous surface. Suited to elevation, density, or any scalar field sampled on a regular grid.

Ideal for: temperature/air-quality across city Γ— month, terrain surfaces, optimization landscapes.

Returns: {filepath, title, rows}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts (one per (x, y) grid cell)
themeNo'dark', 'light', or 'infographic'dark
titleNoChart title
filenameNoOutput filename (without .html)surface_3d
x_columnYesColumn forming the surface's X grid
y_columnYesColumn forming the surface's Y grid
z_columnYesColumn giving the surface height
colorscaleNoPlotly colorscale name for height mappingViridis

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Discloses interactivity (WebGL, orbit-able) and return format. Lacks details on limitations (e.g., handling of missing data) or performance implications, but adequate for typical chart creation.

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

Conciseness4/5

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

Concise and front-loaded with key information. The first sentence captures the essence. Could trim the second sentence slightly, but overall efficient.

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

Completeness3/5

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

Covers purpose, usage, and return values (with output schema). Does not address error conditions, input validation (e.g., requirement for complete grid), or performance considerations. Adequate but incomplete for a tool with 8 parameters.

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

Parameters4/5

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

Schema coverage is 100% (baseline 3). The description adds value by explaining that long-format rows are pivoted into a z-value grid, clarifying relationship between data and columns beyond schema definitions.

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

Purpose5/5

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

Description clearly states it creates an interactive 3D surface chart from gridded data, using specific verbs and resource. It distinguishes from sibling 3D tools (e.g., create_scatter_3d) by mentioning the pivoting of long-format data into a grid.

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

Usage Guidelines4/5

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

Provides explicit ideal use cases (temperature/air-quality across city Γ— month, terrain surfaces, optimization landscapes). Does not explicitly state when not to use, but for a specialized tool these are sufficient.

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

create_volume_3dA

Interactive 3D volume render of a volumetric scalar field (WebGL, orbit-able).

Renders the full semi-transparent scalar field across (x, y, z) β€” a see-through cloud whose density + color encode value_column, with a configurable number of internal iso-surfaces. Distinct from create_isosurface_3d (which draws only the single boundary where value equals a threshold): a volume shows the interior distribution of the field, not just its level-set shell. The ray-marched rendering runs client-side, so scattered samples are accepted without a regular grid or SciPy.

Ideal for: 3D pollution / concentration clouds, temperature or humidity fields across a monitoring volume, groundwater head distributions, any scalar field where the interior structure β€” not just the boundary β€” matters.

Returns: {filepath, title, rows}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts (one per volumetric sample point)
themeNo'dark', 'light', or 'professional'dark
titleNoChart title
isomaxNoUpper scalar bound (defaults to column max)
isominNoLower scalar bound (defaults to column min)
opacityNoVolume opacity (0–1); keep low so the interior stays legible
filenameNoOutput filename (without .html)volume_3d
x_columnYesColumn for the X axis
y_columnYesColumn for the Y axis
z_columnYesColumn for the Z axis (depth)
colorscaleNoPlotly colorscale name for value mappingViridis
show_surfaceNoFalse = pure translucent cloud (no internal surfaces)
value_columnYesColumn whose values fill the volume
surface_countNoNumber of internal iso-surfaces drawn inside the volume

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations provided, but description explains ray-marched rendering runs client-side, accepts scattered samples, and returns filepath/title/rows. Does not mention side effects, but as a create tool, it’s implicitly creating a file.

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

Conciseness4/5

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

The description is well-structured with a lead sentence, technical detail, sibling differentiation, and ideal use cases. Slightly verbose but every sentence adds value.

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

Completeness5/5

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

For a complex tool with 14 params and 5 required, the description covers purpose, behavior, rendering method, ideal use, and return values comprehensively, given the 100% schema coverage and output schema.

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

Parameters3/5

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

Schema has 100% coverage with descriptions for all parameters. Description adds minor context (e.g., 'configurable number of internal iso-surfaces') but does not significantly enrich beyond schema.

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

Purpose5/5

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

The description clearly states it renders an interactive 3D volume of a scalar field, using specific verbs like 'render' and 'see-through cloud', and explicitly distinguishes itself from the sibling tool create_isosurface_3d.

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

Usage Guidelines4/5

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

Provides clear ideal use cases (pollution clouds, temperature fields) and contrasts with isosurface for when only boundaries matter. Lacks explicit when-not-to-use, but the contrast is strong enough.

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

create_waffle_chartA

Waffle chart (icon grid) for proportional data. 'X out of 100' visualization.

More intuitive than pie charts for showing proportions.

Ideal for: '1 in 4 Serbs live in Belgrade', budget share, sector breakdown.

Returns: {filepath, title, categories}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts
themeNoVisual themedark
titleNoChart title
filenameNoOutput filenamewaffle_chart
total_iconsNoTotal icons in grid (100=10Γ—10)
names_columnYesCategory labels
values_columnYesNumeric values (normalized to fill grid)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Specifies return format {filepath, title, categories} and mentions normalization behavior for values_column. Lacks details on side effects, permissions, or rate limits.

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

Conciseness5/5

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

Extremely concise: a single paragraph with a brief list. Every sentence adds value, no wasted words.

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

Completeness4/5

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

Given no annotations and 7 parameters, the description explains purpose, usage, and return format adequately. Could benefit from more detail on data requirements or output structure, but sufficient.

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

Parameters3/5

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

Schema coverage is 100%, baseline 3. Description adds minimal new meaning beyond schema, e.g., 'normalized to fill grid' for values_column, but mostly reiterates field descriptions.

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

Purpose5/5

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

Clearly states it's for waffle chart (icon grid) for proportional data, specifically 'X out of 100' visualization. Provides examples and distinguishes from other chart tools among siblings.

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

Usage Guidelines4/5

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

Mentions ideal use cases like proportional data, but does not explicitly state when not to use or suggest alternatives. Clear context for appropriate use.

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

data_profileA

Understand data structure BEFORE creating charts or transforming.

Returns column names, types, unique counts, null counts, sample values. For numeric columns: min, max, mean, median.

ALWAYS use after get_resource_data() and before create_chart() to choose correct columns.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts from get_resource_data()
sample_sizeNoSample values per column (default 5)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior4/5

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

No annotations, but description fully discloses what the tool returns (column stats, sample values) and implies read-only analysis. Minor omission: no mention of idempotency or caching.

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

Conciseness5/5

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

Four concise sentences, front-loaded with the most important usage context. No wasted words; each sentence adds essential info.

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

Completeness5/5

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

Output schema exists, so description doesn't need to detail return format, but it still lists return content. Tool is well-defined with no missing aspects for an agent to use correctly.

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

Parameters5/5

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

Schema coverage is 100%, but description adds context: 'Row dicts from get_resource_data()' for data param and clarifies sample_size as sample values per column. Also explains return data types.

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

Purpose5/5

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

Description clearly states verb ('Understand') and resource ('data structure'), specifies it's for before charting/transforming, and distinguishes from siblings by listing exact output (column names, types, etc.).

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

Usage Guidelines5/5

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

Explicitly says 'ALWAYS use after get_resource_data() and before create_chart()', providing clear sequential context and when-to-use guidance.

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

enhance_chart_tooltipsA

Add rich contextual tooltips to any Plotly figure.

Enriches hover with formatted values, deviation from mean, and rank. Without: 'Value: 7150000'. With: 'Value: 7.15M / Prosečno: 4.2M / Rank: #1'.

Returns: Enhanced figure dict

ParametersJSON Schema
NameRequiredDescriptionDefault
unitNoUnit suffix (e.g., ' stanovnika', ' RSD')
figureYesPlotly figure dict from create_chart()
show_meanNoShow average and deviation
show_rankNoShow rank position
value_columnNoName of the value axisvalue

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It explains that the tool modifies hover information and returns an enhanced figure dict. It does not mention side effects like mutating the original figure or limitations, but the behavior is sufficiently disclosed for typical understanding.

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

Conciseness5/5

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

The description is extremely concise: two sentences stating purpose, a one-line example, and a return type declaration. Every part is informative with no fluff.

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

Completeness5/5

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

Given the complexity (5 parameters, output schema exists), the description covers what the tool does, how parameters affect output, and what is returned. Combined with parameter descriptions, it is fully complete for an agent to select and invoke correctly.

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

Parameters5/5

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

Schema coverage is 100% with parameter descriptions. The tool description adds value by explaining how parameters like show_mean, show_rank, unit, and value_column affect the tooltip content, including example formatting. This goes beyond the schema definitions.

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

Purpose5/5

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

The description clearly states the tool adds rich contextual tooltips to Plotly figures. It provides a before/after example and mentions specific enrichments (formatted values, deviation from mean, rank). This distinguishes it from siblings like add_chart_annotation or add_chart_callouts, which serve different purposes.

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

Usage Guidelines4/5

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

The description implicitly suggests using this tool after creating a chart to enhance tooltips. However, it does not explicitly state when to use versus alternative tools or when not to use it. The context is clear enough for typical use, but lacks explicit exclusions.

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

export_chart_pdfA

Export a chart to PDF. Requires kaleido (pip install kaleido).

Returns: {filepath, format, width, height} or {error} if kaleido missing

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNoPage width in pixels
figureYesPlotly figure dict from create_chart()
heightNoPage height in pixels
filenameNoOutput name (without .pdf)chart

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

No annotations provided, so description carries the burden. It discloses the need for kaleido, the return value structure, and error condition. However, it does not explain side effects such as file save location, overwrite behavior, or validation of input figure. Transparency is adequate but incomplete.

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

Conciseness5/5

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

The description is extremely concise with two sentences plus a return line. Every word adds value: purpose, prerequisite, return structure, and error case. No fluff.

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

Completeness4/5

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

With 4 parameters, no annotations, and an output schema (context indicates its existence), the description covers the key aspects: purpose, prerequisite, return format, and error handling. It could mention file save location or naming conventions, but overall completeness is good for a well-parameterized tool.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description adds no additional meaning to parameters beyond what the schema already provides (e.g., width, height, filename, figure). The prerequisite note is not parameter-specific.

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

Purpose5/5

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

The description clearly states 'Export a chart to PDF' with a specific verb and resource. It distinguishes from sibling export tools (export_data, export_to_datawrapper, export_visualization) by focusing on PDF format and including a prerequisite note about kaleido.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like export_visualization or export_data. The description mentions a prerequisite (kaleido) but does not provide context for selecting this tool over siblings.

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

export_dataB

Save data from get_resource_data() or transform_data() to file.

Formats: 'csv' (universal), 'json' (API-friendly), 'xlsx' (requires openpyxl).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts
formatNo'csv', 'json', or 'xlsx'csv
filenameNoOutput name (without extension)data

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description must fully disclose behavioral traits. It mentions format dependencies (xlsx requires openpyxl) but omits critical details such as where files are saved, whether they overwrite existing files, authentication requirements, or the return value (despite an output schema existing). The description fails to convey important side effects and limitations.

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

Conciseness5/5

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

The description is extremely concise: two sentences that front-load the purpose and then list the formats. Every sentence earns its place with no filler or redundancy.

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

Completeness3/5

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

Given the tool's simplicity (3 parameters, all documented in schema), the description is minimally adequate. It explains formats and data sources but lacks details about file path, overwrite behavior, and permissions. The presence of an output schema is unmentioned. Overall, functional but with gaps.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description adds context for the format parameter by explaining format characteristics ('csv universal, json API-friendly, xlsx requires openpyxl'), which adds value. However, it does not enrich the data or filename parameters beyond what the schema provides. Overall, moderate added value.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Save data from get_resource_data() or transform_data() to file.' It specifies the verb 'Save' and the resource 'data to file', and it distinguishes from sibling tools like export_visualization (which exports charts) and export_chart_pdf (which exports PDFs of charts).

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

Usage Guidelines2/5

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

The description does not provide any guidance on when to use this tool versus alternatives. It mentions data sources but lacks explicit when-to-use or when-not-to-use instructions. No alternatives are named, and there is no context about excluding other export tools.

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

export_to_datawrapperA

Export data to Datawrapper for professional cloud-hosted charts.

Creates a chart on Datawrapper (datawrapper.de) with your data, publishes it, and returns embed URLs and embed code. Requires the DATAWRAPPER_ACCESS_TOKEN environment variable.

Get a free API token at: https://app.datawrapper.de/account/api-tokens

Supported chart types:

  • 'd3-bars-vertical' β€” vertical bar chart

  • 'd3-bars-horizontal' β€” horizontal bar chart

  • 'd3-lines' β€” line chart

  • 'd3-area' β€” area chart

  • 'd3-pies' β€” pie chart

  • 'd3-pie-donut' β€” donut chart

  • 'd3-scatter' β€” scatter plot

  • 'd3-table' β€” data table

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesList of row dicts (from get_resource_data())
titleYesChart title
labelsNoColumn name β†’ display label mapping
chart_typeNoDatawrapper chart type (default: d3-bars-vertical)d3-bars-vertical

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Since no annotations are provided, the description carries the full burden. It discloses that the tool creates and publishes a chart, and lists supported chart types. However, it does not mention potential side effects (e.g., overwriting existing charts), rate limits, or failure behavior. The information is adequate but not exhaustive.

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

Conciseness5/5

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

The description is concise and well-structured: it opens with the core purpose, then provides necessary details (API token requirement and supported chart types). Every sentence adds value with no redundancy.

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

Completeness4/5

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

Given the presence of an output schema (so return values need not be described), and 100% schema coverage, the description covers essential context (environment variable, chart type options). It is mostly complete for an external export tool, though missing error handling details.

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

Parameters4/5

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

With 100% schema description coverage, the parameters are already documented. The description adds value by explaining that 'data' should come from get_resource_data() and by listing all supported chart types for the chart_type parameter, enhancing clarity beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose: exporting data to Datawrapper to create charts, publish them, and return embed URLs. It distinguishes from sibling tools like create_chart and export_data by specifying the external platform and embed output.

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

Usage Guidelines2/5

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

The description mentions the required environment variable but does not provide guidance on when to use this tool versus alternatives (e.g., create_chart for internal charts or export_data for raw data). No explicit usage scenarios or exclusions are given.

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

export_visualizationA

Save a chart from create_chart() to a file.

ParametersJSON Schema
NameRequiredDescriptionDefault
figureYesPlotly figure dict from create_chart()
formatNo'html' or 'json'html
filenameNoOutput name (without extension)chart

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided; description carries full burden. It fails to disclose side effects like file overwriting, permissions, storage location, or error handling. Only states it saves to a file, but no details on return values or behavior, despite output schema existence.

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

Conciseness5/5

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

Single sentence of 9 words, no fluff. Action is front-loaded. Every word serves a purpose.

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

Completeness3/5

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

Given the existence of output schema (covers return values) and full parameter descriptions, the minimal description is adequate for a simple file save. However, lacks behavioral details that might be needed for robust usage, such as overwrite behavior or error messages.

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

Parameters4/5

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

Schema coverage is 100%. Description adds value by clarifying 'Plotly figure dict from create_chart()' for figure, specifying format values as 'html' or 'json', and noting filename is 'without extension'. This goes beyond schema descriptions.

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

Purpose5/5

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

Description explicitly states 'Save a chart from create_chart() to a file', specifying the action (save), source (create_chart()), and output (file). This clearly distinguishes from sibling tools like export_data (data export) and export_chart_pdf (PDF specific).

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives such as export_chart_pdf or export_to_datawrapper. Does not mention prerequisites, when not to use, or context for selection among many export-related siblings.

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

extract_data_insightsA

Extract surprising findings from data: extremes, trends, outliers, inequality.

Each insight has severity (critical/high/medium/low), headline, and narrative. Sorted by severity. Use AFTER data_profile() to identify time/entity columns.

Returns: {insights: [...], total_found, headline, severity_summary}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts from get_resource_data()
time_columnNoColumn with years/dates for temporal analysis
max_insightsNoMax insights (default 10)
entity_columnNoColumn with entity names (cities, districts)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

No annotations exist, so description carries full burden. It mentions output is sorted by severity and includes severity levels, but lacks info on destructive behavior, auth, rate limits, or performance constraints for large datasets.

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

Conciseness4/5

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

Three short paragraphs, each serving a purpose: purpose, output details, usage guidance. Information is front-loaded, but the structure could be tightened by merging usage hint into the purpose sentence.

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

Completeness4/5

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

Given output schema exists and no annotations, description adequately covers the tool's behavior. It explains insight categories, sorting, and prerequisite step. Missing slight nuance on behavior when optional columns are omitted, but overall complete.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. Description adds value by specifying that data comes from get_resource_data(), and clarifies the meaning of time_column and entity_column as temporal/entity identifier columns.

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

Purpose5/5

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

The description clearly states it extracts surprising findings (extremes, trends, outliers, inequality) and details the output structure (severity, headline, narrative). This distinctively differentiates it from sibling tools like compute_metrics or generate_data_narrative.

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

Usage Guidelines4/5

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

Explicitly instructs to use AFTER data_profile() to identify time/entity columns, giving clear usage context. However, it does not explicitly mention when not to use or list alternative tools for other analysis needs.

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

filter_data_toolA

Filter rows by criteria. Shorthand for transform_data(operation='filter').

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts from get_resource_data()
filtersYesColumn β†’ value or column β†’ {operator: value}

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, and the description only notes it 'filters rows by criteria' without disclosing behavioral details such as mutability, side effects, or error handling. The description adds minimal value beyond the schema.

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

Conciseness5/5

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

Two sentences efficiently convey the purpose and relationship to transform_data. No wasted words, and the most important information is front-loaded.

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

Completeness4/5

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

For a simple filtering tool with two parameters and an output schema, the description is adequate. It could elaborate on filter syntax (e.g., logical operators) but remains sufficiently complete given the schema coverage.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds no extra meaning beyond the existing schema descriptions. The baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Filter rows by criteria.' It also specifies it is a shorthand for transform_data(operation='filter'), which distinguishes it from sibling tools like transform_data and aggregate_data_tool.

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

Usage Guidelines4/5

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

The description indicates this tool is an alternative to transform_data with a specific operation, providing some usage context. However, it does not explicitly state when to prefer this over siblings like group_data_tool or sort_data_tool.

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

forecast_dataB

Forecast future values using regression. 'At this rate, X by 2030.'

Returns: {forecast_data, growth_rate, projection_note, r_squared, historical_data, trend_line}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts with time series
methodNo'linear' or 'exponential'linear
time_columnYesTime ordering column
value_columnYesColumn to forecast
periods_aheadNoFuture periods to predict

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility. It mentions the method ('regression') and lists return fields (forecast_data, growth_rate, etc.), which informs about outputs. However, it does not disclose assumptions, limitations (e.g., short data), or the existence of a method parameter (linear/exponential) beyond the schema.

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

Conciseness4/5

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

The description is brief and to the point, with no wasted words. The quote adds a touch of context. Could be slightly improved by removing the quote to save space, but it remains concise.

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

Completeness3/5

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

Given the complexity (5 parameters, output schema), the description covers the basic purpose and output structure but lacks details on parameter choices (e.g., linear vs exponential) and interpretation of outputs like r_squared, which might be needed for proper use.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds no extra meaning to the parameters themselves; it only provides overall context. Baseline 3 is appropriate.

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

Purpose4/5

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

The description clearly states the action ('Forecast future values using regression'), identifying the resource (future values) and the method. It is distinct from sibling tools like 'benchmark_data' or 'compare_datasets' but does not explicitly differentiate itself.

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

Usage Guidelines3/5

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

The quote 'At this rate, X by 2030' hints at a typical use case, but there is no explicit guidance on when to use this tool vs alternatives, or when not to use it. Sibling tools like 'compute_metrics' or 'aggregate_data_tool' could overlap, but no comparison is made.

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

generate_data_narrativeC

Generate a data story: headline, big number, narrative text.

Returns: {title, headline, big_number, big_label, insights, summary}

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts from get_resource_data()
titleNoStory topic
time_columnNoOptional time column
max_insightsNoMax insights in narrative
entity_columnNoOptional entity column

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It does not mention whether the tool is read-only, requires authentication, or has any side effects. The return structure is shown, but the underlying process (e.g., AI generation, data size limits) is not disclosed.

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

Conciseness4/5

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

The description is extremely concise: one sentence plus a return type annotation. It front-loads the purpose effectively. However, it could be slightly more informative without becoming verbose, e.g., noting that input must be a list of dicts from 'get_resource_data'.

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

Completeness3/5

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

Given the tool has 5 parameters and a defined output, the description is minimally adequate. It explains the return structure (which acts as an output schema), but it does not clarify the role of optional parameters like 'time_column' or 'entity_column' in generating the narrative. The schema descriptions help, but the tool could benefit from a brief usage hint.

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

Parameters3/5

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

Schema coverage is 100%, so all parameters have descriptions. The description adds no extra meaning beyond the schema, such as explaining how 'time_column' influences the narrative or formatting expectations. Baseline 3 is appropriate since the schema already documents the parameters.

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

Purpose4/5

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

The description clearly states the tool generates a 'data story' with headline, big number, and narrative text. This distinguishes it from sibling tools like 'create_chart' for visualizations, though it could more explicitly differentiate from 'extract_data_insights' or 'data_profile' which also handle data summaries.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool over alternatives like 'extract_data_insights' or 'get_data_summary'. There are no prerequisites, exclusions, or context about appropriate use cases, leaving the agent to infer from the name alone.

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

generate_embedA

Generate iframe embed code for sharing a chart in websites/blogs.

Self-contained embed snippet pasteable into any website or CMS. Renders via Plotly.js CDN.

Returns: {iframe_code, width, height, note}

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoAccessible title for the iframeChart
widthNoEmbed width in pixels
figureYesPlotly figure dict from create_chart()
heightNoEmbed height in pixels

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It notes the output structure (iframe_code, width, height, note) and that it renders via Plotly.js CDN. However, it does not mention any dependencies, limitations (e.g., requires internet access for CDN), or side effects. The transparency 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.

Conciseness5/5

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

The description is very concise: four sentences with no fluff. It front-loads the purpose in the first sentence, then describes the output and return structure. Every sentence earns its place, and the length is appropriate for the tool's simplicity.

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

Completeness4/5

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

For a simple tool with high schema coverage and an output schema, the description covers the essential input (figure from create_chart()) and output structure. It implies a prerequisite (a chart must be created first). One could argue it could mention the embed code's reliance on the Plotly CDN, but overall it is sufficiently complete for an agent to use correctly.

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

Parameters3/5

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

Schema coverage is 100%, so the baseline is 3. The description adds minimal extra meaning beyond the schema: it notes that 'figure' is a Plotly figure dict from create_chart(), which is already in the parameter description. The description does not elaborate on parameter usage or constraints, so it scores at baseline.

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

Purpose5/5

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

The description clearly states the tool generates iframe embed code for sharing a chart. It specifies the resource (embed code) and the action (generate for sharing). Among sibling tools like export_chart_pdf or export_visualization, this one uniquely focuses on embedding, so it is well-differentiated.

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

Usage Guidelines3/5

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

The description indicates the embed snippet is for websites/blogs and is self-contained, giving a sense of when to use. However, it does not explicitly compare to alternatives (e.g., export tools) or state when not to use it. The guidance is implied but not explicit enough for an agent to easily decide between this and similar export tools.

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

get_catalog_statsA

Get statistics about the cached dataset catalog.

Summarizes the local catalog (used by intelligent_search/preview_dataset) without triggering a refresh: total datasets, distinct organizations and formats, downloadable count, and cache age.

Returns: {total_datasets, total_organizations, total_formats, downloadable_datasets, formats, organizations, cache_path, cache_age_hours, cache_exists}

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the tool is read-only (does not trigger refresh) and lists the return structure. Does not cover error or performance, but adequate for a simple stat tool.

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

Conciseness5/5

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

Two short sentences front-loading the purpose and then listing return fields. No wasted words.

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

Completeness5/5

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

Given zero parameters, an output schema, and clear sibling context (e.g., 'refresh_catalog'), the description fully covers the tool's purpose, behavior, and output.

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

Parameters4/5

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

The tool has zero parameters, so baseline is 4. No parameter info needed in description.

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

Purpose5/5

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

The description uses a specific verb ('Get statistics') and resource ('cached dataset catalog'), and distinguishes from sibling tools like 'refresh_catalog' by noting it does not trigger a refresh.

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

Usage Guidelines4/5

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

The description states it summarizes the local catalog used by 'intelligent_search' and 'preview_dataset' without triggering a refresh, implicitly indicating when to use it versus 'refresh_catalog'. No explicit exclusions, but clear enough.

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

get_config_toolA

Get the current MCP server configuration settings.

Returns the resolved runtime configuration: API endpoint, rate limit, request timeout, and the cache/export directories. Useful for debugging connectivity or understanding where exported files are written.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It accurately describes the tool as returning configuration data with no mention of side effects or destructive actions, implying a read-only operation.

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

Conciseness5/5

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

The description is exceptionally concise: two sentences, front-loaded with the purpose, and every sentence adds value without redundancy.

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

Completeness5/5

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

Given the tool has no parameters and an output schema exists, the description fully covers what the tool returns and its utility. It is complete for the complexity of the tool.

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

Parameters4/5

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

There are no parameters, so the baseline is 4. The description adds value by detailing what the returned configuration contains, although it does not add parameter-level details since there are none.

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

Purpose5/5

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

The description clearly states it gets the current MCP server configuration settings, listing specific configuration items. It distinguishes itself from sibling tools which are primarily chart/data manipulation tools.

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

Usage Guidelines4/5

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

The description explicitly mentions it is useful for debugging connectivity or understanding where files are written, giving clear context for when to use this tool. However, it does not explicitly state when not to use it or point to alternatives.

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

get_datasetC

Get dataset details. detail_level controls response size.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesDataset identifier from search_datasets()
detail_levelNoOne of: metadata, resources, preview, summarymetadata

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are present, so the description carries full responsibility. It only mentions that detail_level controls response size, but lacks disclosure of error handling, default behavior, or any side effects. Important behavioral aspects like required permissions or response format are missing.

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

Conciseness4/5

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

The description is very concise with two front-loaded sentences. It efficiently conveys the basic purpose and a key parameter insight, but could include more useful information without losing conciseness.

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

Completeness2/5

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

Given the complexity of retrieving dataset details with multiple detail levels, the description is incomplete. It lacks explanation of the detail_level values and does not leverage the existence of an output schema to reduce need for return value description. The description should at least define what each detail_level returns.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds that detail_level controls response size, which provides some context beyond the schema. However, it does not explain the meaning of each level (metadata, resources, preview, summary), limiting the added value.

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

Purpose4/5

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

The description clearly states the verb 'Get' and resource 'dataset details', making the purpose identifiable. However, it does not differentiate from sibling tools like get_dataset_resources or preview_dataset, which also retrieve dataset-related information.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. For instance, it is unclear when to prefer get_dataset over get_dataset_resources or preview_dataset.

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

get_dataset_resourcesA

List the data files (resources) available for a specific dataset.

Use this before get_resource_data() to discover:

  • Resource IDs (required by get_resource_data)

  • Available formats (json, csv, xlsx, xls, xml)

  • File descriptions and sizes

  • Direct download URLs

Equivalent to get_dataset(detail_level="resources"), exposed as its own tool for callers that only need the file listing.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_idYesDataset identifier from search_datasets()

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior3/5

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

No annotations provided; description implies read-only but does not explicitly state behavioral traits like authentication or safety. The equivalence to get_dataset with detail_level suggests no destructive actions, but more direct disclosure would improve transparency.

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

Conciseness5/5

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

Concise with front-loaded summary, structured bullet points, and an equivalence note. Every sentence adds value without redundancy.

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

Completeness5/5

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

Given low complexity (1 parameter, no nested objects) and presence of output schema, the description fully covers usage, purpose, and relation to sibling tools. No gaps.

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

Parameters4/5

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

Schema coverage is 100%, providing baseline of 3. Description adds value by specifying that dataset_id comes from search_datasets(), aiding parameter understanding beyond the schema description.

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

Purpose5/5

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

Clearly states 'List the data files (resources) available for a specific dataset' with specific output details (resource IDs, formats, etc.) and distinguishes from related tools like get_resource_data and get_dataset.

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

Usage Guidelines5/5

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

Explicitly says 'Use this before get_resource_data()' and notes equivalence to get_dataset(detail_level='resources'), providing clear usage context and alternatives.

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

get_data_summaryA

Quick schema summary of a resource's data without downloading the full file.

Returns column names, dtypes, row count, and sample values for the first few rows. Much faster than get_resource_data() for large XLSX/CSV files where you only need to know the schema.

ParametersJSON Schema
NameRequiredDescriptionDefault
resource_idYesResource identifier from a dataset's resources list

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations provided, so description carries the burden. It discloses the returned items (column names, dtypes, row count, sample values) and implies a read-only, non-destructive operation. Missing mention of permissions or speed details, but sufficient for a summary tool.

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

Conciseness5/5

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

Two concise sentences: first states primary purpose, second details return values and performance comparison. No unnecessary words, front-loaded with key information.

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

Completeness5/5

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

Given the low complexity, presence of output schema (not shown but known), and single parameter, the description fully covers the tool's behavior and context. It explains return values, mentions speed advantage, and provides an alternative, making it complete.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter, with a clear description in the JSON schema. The description adds no further meaning beyond what the schema already provides, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb ('summary') and resource ('resource's data'), specifying it returns column names, dtypes, row count, and sample values without downloading the full file. This distinguishes it from sibling tools like get_resource_data, which downloads full data.

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

Usage Guidelines5/5

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

Explicitly states when to use ('quick schema summary') and when to use an alternative ('Much faster than get_resource_data() for large XLSX/CSV files where you only need to know the schema'), providing clear usage context.

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

get_portal_statisticsB

Get dataset and organization counts for the portal overview.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description bears full responsibility for disclosing behavior. It only says 'Get', implying a read-only operation, but does not confirm safety, required permissions, or potential side effects. The description lacks critical behavioral details.

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

Conciseness5/5

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

The description is a single, short sentence that efficiently conveys the tool's purpose without any fluff. It is well front-loaded and every word adds value.

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

Completeness3/5

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

Given that the tool has no parameters and an output schema exists, the description provides a basic understanding of the output. However, it lacks context about the scope ('portal overview') and does not explain how this tool differs from similar ones like 'get_catalog_stats'. The description is minimally adequate.

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

Parameters4/5

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

The input schema has zero parameters with 100% schema coverage. For no-parameter tools, the baseline is 4. The description does not need to add parameter semantics, but it does clarify the output, which is relevant context.

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

Purpose4/5

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

The description clearly states that the tool retrieves dataset and organization counts for the portal overview. The verb 'Get' and the specific resources (dataset and organization counts) make the purpose clear. However, it does not explicitly differentiate from the sibling tool 'get_catalog_stats', which might have similar functionality.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, limitations, or context where the tool is appropriate. The user must infer usage from the name and vague reference to 'portal overview'.

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

get_resource_dataA

Download and parse a data file from data.gov.rs.

Parses JSON, CSV, XLSX, XLS, and XML automatically. Resource IDs come from get_dataset(detail_level="metadata").

ParametersJSON Schema
NameRequiredDescriptionDefault
resource_idYesResource identifier from get_dataset() resources list

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool downloads and parses data in multiple formats automatically. However, it does not mention any limitations (e.g., file size, rate limits), error behavior, or whether the data is returned inline or referenced. This is adequate but not exhaustive.

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

Conciseness5/5

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

The description is two sentences long, front-loaded with the primary action ('Download and parse a data file'). Each sentence adds essential information (formats supported, source of resource IDs). No extraneous text.

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

Completeness4/5

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

Given the tool has only one parameter and an output schema exists (so return format is defined elsewhere), the description is fairly complete. It explains the input source and supported formats. However, it could be improved by briefly noting what the parsed output looks like (e.g., 'returns the data as a structured object'), but this is a minor gap.

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

Parameters4/5

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

Schema description coverage is 100%, and the schema already indicates the resource_id comes from get_dataset(). The description adds value by specifying the exact function call get_dataset(detail_level='metadata'), which clarifies how to obtain valid IDs beyond the schema's minimal description. This helps the agent produce correct invocations.

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

Purpose5/5

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

The description clearly states the tool downloads and parses a data file from data.gov.rs, listing supported formats (JSON, CSV, XLSX, XLS, XML). It also specifies that resource IDs come from get_dataset(detail_level='metadata'), which differentiates it from sibling tools like get_dataset_resources (which lists resources) and preview_dataset (which may show a preview).

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

Usage Guidelines4/5

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

The description explicitly directs users to obtain resource IDs from get_dataset(detail_level='metadata'), providing clear usage guidance. It does not explicitly state when not to use the tool or list alternatives, but the context is sufficient for correct invocation.

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

group_data_toolA

Group data by one or more columns with optional aggregations.

Shorthand for transform_data(operation='group'). Returns one row per group with the requested aggregation(s) applied.

Aggregation functions: sum, mean, median, min, max, count, std, var.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts from get_resource_data()
group_byYesColumn name or list of column names to group by
aggregationsNo{column: agg_func} e.g. {"population": "sum"}

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Without annotations, the description carries full burden. It explains the grouping behavior, return format, and lists aggregation functions. It does not cover edge cases like handling of nulls or performance limits, but for a straightforward grouping tool, the transparency is adequate.

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

Conciseness5/5

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

The description is concise with three sentences and a list. It front-loads the main purpose and immediately provides additional context, with no redundant or unnecessary words.

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

Completeness4/5

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

Given the tool has an output schema and three parameters, the description covers the core functionality and return format. It could mention expected input data format or behavior with no aggregations, but overall it is sufficiently complete.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by explicitly listing the available aggregation functions (sum, mean, etc.), which are not detailed in the schema. This enhances parameter understanding beyond the schema.

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

Purpose5/5

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

The description clearly states the tool groups data by columns with optional aggregations, specifies it is a shorthand for transform_data(operation='group'), and notes it returns one row per group. This effectively distinguishes it from sibling tools.

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

Usage Guidelines4/5

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

The description indicates it is a shorthand for transform_data, providing implicit guidance when to use it versus the more general transform_data. However, it does not explicitly contrast with aggregate_data_tool or other siblings, nor does it state when not to use this tool.

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

health_checkA

Check server health and API connectivity.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states 'Check' implying a read-only operation, but does not disclose specifics such as whether authentication is required, what exactly is checked (e.g., ping vs. full API test), or possible side effects. The description is too minimal to fully inform an AI agent of behavioral traits.

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

Conciseness5/5

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

The description is extremely concise: one short sentence that directly states the purpose. No filler or redundancy. Ideal length for this simple tool.

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

Completeness4/5

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

Given the tool's simplicity (no parameters, clear purpose, and an output schema exists to define return values), the description is sufficiently complete. It covers the essential action and resource. However, it could benefit from a small note on when this check is useful (e.g., before other operations), but not strictly necessary.

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

Parameters4/5

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

The tool has no parameters, so the baseline is 4. The description adds no parameter-level information because none is needed. The input schema already provides full coverage (100%) with zero parameters.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Check server health and API connectivity.' It uses a specific verb ('Check') and resource ('server health and API connectivity'), and is distinct from sibling tools which are all about data visualization and manipulation.

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

Usage Guidelines3/5

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

The description implies usage context (when you need to verify server status) but provides no explicit guidance on when or when not to use this tool versus alternatives. Sibling tools are unrelated, so no comparison is needed, but still lacks explicit usage boundaries.

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

list_organizationsA

List publishers on data.gov.rs. Use returned IDs to filter search_datasets().

Key orgs: Π Π—Π‘ (statistics), ΠœΠΈΠ½ΠΈΡΡ‚Π°Ρ€ΡΡ‚Π²ΠΎ Ρ„ΠΈΠ½Π°Π½ΡΠΈΡ˜Π° (budget), Π—Π°Π²ΠΎΠ΄ Π·Π° јавно Π·Π΄Ρ€Π°Π²Ρ™Π΅ (health).

Returns: {organizations: [{id, name, description, url, logo}], count, page, page_size}

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-indexed)
page_sizeNoResults per page (1-100, default 50)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description adds the return format but does not disclose whether the operation is read-only, idempotent, or any prerequisites, which is acceptable but not thorough.

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

Conciseness5/5

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

The description is concise with three sentences, front-loading the core purpose, then usage hint, then return format, with no wasted words.

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

Completeness4/5

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

Given the tool's simplicity, the description covers the essential: what it does, how to use its output, and the return structure. It could mention filtering capabilities but is largely complete.

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

Parameters3/5

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

Schema coverage is 100% for both parameters (page, page_size), and the description adds no extra meaning beyond what the schema already provides, meeting the baseline.

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

Purpose5/5

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

The description clearly states the verb 'List' and the resource 'publishers on data.gov.rs', and distinguishes itself from sibling tools like search_datasets by indicating that its output is used for filtering.

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

Usage Guidelines4/5

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

It provides explicit guidance on when to use this tool ('Use returned IDs to filter search_datasets()'), but does not mention when not to use it or list specific alternatives beyond search_datasets.

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

list_serbia_districtsA

List 25 administrative districts for create_serbia_map(). Returns recognized names.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses that it returns 'recognized names', but lacks details on side effects, auth needs, or rate limits. Adequate but minimal.

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

Conciseness5/5

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

The description is a single sentence, directly stating the key information without any fluff. It is well front-loaded and every word earns its place.

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

Completeness5/5

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

Given the tool's simplicity, no parameters, and existence of an output schema, the description is sufficient. It specifies what the tool lists, the target purpose, and what it returns.

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

Parameters4/5

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

The tool has no parameters, so the schema coverage is 100% with an empty schema. The description adds no additional parameter information, but baseline for 0 parameters is 4.

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

Purpose5/5

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

The description clearly states the action (List), resource (administrative districts), and purpose (for create_serbia_map()). It distinguishes this tool from siblings by specifying a unique dataset.

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

Usage Guidelines4/5

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

The description explicitly ties the tool to create_serbia_map(), guiding when to use it. However, it doesn't state when not to use it or provide alternatives, leaving some ambiguity.

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

preview_datasetA

Show dataset metadata with a data preview (first N rows) before downloading.

Use this BEFORE get_resource_data() to understand structure cheaply. Reads metadata and sample rows from the first downloadable resource.

ParametersJSON Schema
NameRequiredDescriptionDefault
nrowsNoRows to preview (1-100, default 10)
dataset_idYesDataset identifier (from intelligent_search or search_datasets)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses that the tool reads metadata and sample rows from the first downloadable resource, implying a read-only operation. However, it does not explicitly state that it is non-destructive or mention any side effects or auth requirements. Adequate for a simple preview tool.

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

Conciseness5/5

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

Two sentences, no fluff. First sentence states purpose, second provides usage guidance and behavioral context. Every sentence earns its place.

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

Completeness4/5

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

Output schema exists, so return values are covered. Description explains purpose, usage before a sibling, and what data is accessed. Could mention limitations (e.g., only works if dataset has a downloadable resource), but overall sufficient for the tool's simplicity.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions. The description adds context about 'first downloadable resource' but does not significantly enhance parameter meaning beyond the schema. Baseline 3 due to full schema coverage.

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

Purpose5/5

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

The description states a specific verb ('Show') and resource ('dataset metadata with a data preview'), and distinguishes from sibling tool get_resource_data() by explicitly recommending usage before it.

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

Usage Guidelines4/5

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

Explicitly advises using this tool BEFORE get_resource_data() to understand structure cheaply, providing clear context. Does not mention when not to use, but the guidance is strong.

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

refresh_catalogA

Refresh the dataset catalog cache from data.gov.rs.

Re-fetches all datasets from the API and rebuilds the local cache used by intelligent_search() and preview_dataset(). The cache also auto-refreshes every 24h on first use; call this when you need fresh data immediately.

Returns: {total_datasets, cache_path, built_at, duration_seconds, timestamp}

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. It describes the re-fetching of all datasets, rebuilding of local cache, auto-refresh behavior, and return fields. No contradictions or omissions.

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

Conciseness5/5

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

Three sentences plus return format. Front-loaded with action and purpose. Every sentence adds value without redundancy.

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

Completeness5/5

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

Description fully covers purpose, usage context, behavior, and output. Given no parameters and the presence of output schema hints, no additional information is needed for correct invocation.

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

Parameters4/5

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

No parameters exist; schema coverage is 100% (null). The description adds meaning by detailing the return object structure (total_datasets, cache_path, etc.), which goes beyond the empty schema.

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

Purpose5/5

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

Clearly states the tool refreshes the dataset catalog cache from data.gov.rs and specifies the effect (rebuilds cache used by intelligent_search and preview_dataset). Distinguishes from sibling tools by focusing on cache refresh versus chart creation or data retrieval.

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

Usage Guidelines4/5

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

Explicitly says to call when fresh data is needed immediately and mentions auto-refresh every 24 hours as a default. Provides clear context for when to use, though no explicit when-not-to-use or alternative tools are mentioned.

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

search_by_tagB

Find all datasets tagged with specific topics regardless of publisher.

Common tags: "statistika", "budžet", "obrazovanje", "zdravlje", "saobraćaj", "cene", "registar", "ekologija", "stanovniőtvo".

Returns: Same shape as search_datasets().

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-indexed)
tagsYesTag strings to search (joined as query)
page_sizeNoResults per page (1-100, default 10)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for behavioral disclosure. It only says 'Find all datasets...' and 'Returns: Same shape as search_datasets()', with no mention of read-only nature, authentication needs, rate limits, or error behavior. Critical behavioral context is missing.

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

Conciseness5/5

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

The description is extremely concise with no wasted words. It front-loads the core purpose in the first sentence, then provides a helpful list of common tags and a clear reference to output shape. Every sentence earns its place.

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

Completeness3/5

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

Given the tool has 3 parameters, an output schema (referenced), and no annotations, the description is adequate but incomplete. It explains what the tool does and references the output shape, but lacks behavioral context (e.g., read-only, rate limits) and usage guidance. The common tags list adds some completeness, but overall it could do more to fully equip an agent.

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

Parameters4/5

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

The input schema already covers all 3 parameters with descriptions (100% coverage). The description adds value by listing common tags (e.g., 'statistika', 'budΕΎet') which provides practical examples for the 'tags' parameter. It also clarifies the return format by referencing 'search_datasets()', helping users anticipate output structure.

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

Purpose4/5

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

The description states it finds datasets by tags (specific verb 'Find' and resource 'datasets tagged'), and adds 'regardless of publisher' which hints at a differentiating scope. However, it does not explicitly contrast with sibling tools like 'search_datasets' or 'intelligent_search', leaving room for ambiguity. The common tags list aids understanding but does not fully distinguish the tool's purpose.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives. There is no mention of when to prefer tag-based search over full-text search (search_datasets) or other discovery tools. Users must infer usage from the tool's name and description alone.

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

search_datasetsA

Search data.gov.rs datasets. ALWAYS call this first β€” never guess dataset IDs.

Returns dataset IDs needed for get_dataset(). Serbian and English both work (e.g. 'stanovniΕ‘tvo' or 'population', 'budΕΎet' or 'budget').

Returns: {datasets: [{id, title, organization, resources, tags, ...}], total, page, page_size, has_next}

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoPage number (1-indexed)
queryNoSearch terms (empty = newest datasets). Serbian or English.
formatNoFilter by format: json, csv, xlsx, xls, xml
page_sizeNoResults per page (1-100, default 10)
organizationNoFilter by org ID (get from list_organizations)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses language support, that empty query returns newest datasets, and the return structure. It is fairly transparent, though it doesn't mention pagination behavior or any side effects.

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

Conciseness4/5

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

The description is concise and front-loaded with the key instruction. It includes a return example, which is helpful. Slight repetition of the 'IDs for get_dataset' point, but overall efficient.

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

Completeness4/5

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

Given the tool's complexity (5 params, pagination, language, filters), the description covers purpose, usage priority, language, and return structure. It omits explicit pagination handling but the output schema is effectively described. It is mostly complete for effective use.

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

Parameters4/5

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

Schema coverage is 100%, baseline 3. The description adds value by explaining query behavior (Serbian/English, empty returns newest) and connecting to get_dataset. While it doesn't elaborate on all parameters, it provides meaningful context beyond schema.

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

Purpose5/5

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

The description clearly states it searches data.gov.rs datasets and emphasizes it as the first call to obtain dataset IDs, distinguishing it from siblings like browse_recent_datasets or search_by_tag.

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

Usage Guidelines4/5

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

It explicitly instructs to call this first before get_dataset and never guess IDs, providing clear context. However, it doesn't mention when not to use it, such as when an ID is already known.

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

select_columns_toolA

Select specific columns from data, dropping all others.

Shorthand for transform_data(operation='select').

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts from get_resource_data()
columnsYesColumn names to keep

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses that it drops columns not listed, but does not mention whether the operation returns a copy or modifies the input, nor any 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.

Conciseness5/5

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

The description is extremely concise, using two short sentences. The purpose is front-loaded, and every word adds value.

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

Completeness5/5

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

Given the tool's simplicity (2 required params, no nested objects) and the presence of an output schema, the description is sufficient. It covers the essential behavior and the shorthand relationship.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents both parameters. The description adds minor context by linking to transform_data, but does not provide additional semantic meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's function: 'Select specific columns from data, dropping all others.' It distinguishes itself from sibling tools like filter_data_tool (row filtering) and aggregate_data_tool by focusing on column selection.

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

Usage Guidelines4/5

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

The description notes it's a shorthand for transform_data(operation='select'), providing context on when to use this convenience wrapper versus the more general transform_data. However, it doesn't explicitly state 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.

sort_data_toolA

Sort data by one or more columns.

Shorthand for transform_data(operation='sort').

ParametersJSON Schema
NameRequiredDescriptionDefault
byYesColumn name or list of column names to sort by
dataYesRow dicts from get_resource_data()
ascendingNoSort direction (default True)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits like idempotency or side effects; it only states the sorting operation without any such context.

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

Conciseness5/5

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

The description is extremely concise with two sentences, front-loading the main purpose, and contains no unnecessary information.

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

Completeness4/5

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

Given the availability of an output schema and full parameter descriptions, the description adequately covers the tool's functionality for a simple sorting operation.

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

Parameters3/5

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

Parameter descriptions in the schema are fully covered (100%), and the description adds no additional meaning beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the tool sorts data by one or more columns, distinguishing it from sibling tools by noting it is a shorthand for transform_data(operation='sort').

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

Usage Guidelines3/5

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

The description implies usage as a shorthand for transform_data, but does not explicitly state when to use this tool versus alternatives 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.

suggest_datasetsA

Autocomplete dataset titles. Use when unsure of exact Serbian terms.

Example: suggest_datasets("stanov") β†’ ["StanovniΕ‘tvo Republike Srbije", ...]

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoSuggestions to return (1-20, default 10)
queryYesPartial text (2+ chars recommended)
formatNoOptional format filter: json, csv, xlsx, xls, xml

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

The description includes an example showing typical input and output, indicating it returns a list of matching dataset titles. It does not disclose behaviors like handling of no matches, maximum suggestions beyond the size parameter, or whether it works only for Serbian terms. Given no annotations, more behavioral detail would improve transparency.

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

Conciseness5/5

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

The description is extremely concise: two sentences and one example. It front-loads the purpose and provides immediate actionable guidance. Every element earns its place with zero redundancy.

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

Completeness4/5

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

The tool has an output schema, so return values are documented elsewhere. The description covers the core autocomplete functionality adequately. It could mention the output schema or provide more on matching logic, but overall it is sufficient for a simple tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds an example of usage and contextualizes the query parameter for Serbian terms, but does not provide additional 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.

Purpose4/5

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

The description clearly states 'Autocomplete dataset titles' and specifies the context 'when unsure of exact Serbian terms.' This effectively communicates the primary purpose and distinguishes it from exact-match search tools, though it could be more explicit in differentiating from sibling tools like search_datasets.

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

Usage Guidelines4/5

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

The description explicitly advises using the tool 'when unsure of exact Serbian terms,' providing clear usage context. However, it does not mention when not to use it or cite specific alternative tools, leaving some implicit guidance.

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

transform_dataC

Transform data: filter, group, aggregate, sort, or select columns.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataYesRow dicts from get_resource_data()
columnNoPrimary column for filter/sort/aggregate
columnsNoColumn list for select
functionNoAggregation function for aggregate (sum, mean, median, min, max, count, std, var)sum
group_byNoColumn(s) for group
ascendingNoSort direction
operationYesOne of: filter, group, aggregate, sort, select
aggregationsNo{column: agg_func} for group

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It only lists operations and does not mention any behavioral traits such as side effects, immutability, or return behavior beyond what the schema provides.

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

Conciseness3/5

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

The description is a single sentence, making it concise, but it lacks crucial details that would help an agent select and invoke the tool correctly. The brevity comes at the expense of informativeness.

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

Completeness2/5

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

Given the tool has 8 parameters, many sibling tools, and no annotations, the description is incomplete. It does not clarify the meta-operation nature, prerequisites, or when to use combined operations.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds no additional meaning beyond what is in the schema; it does not explain which parameters correspond to which operation or provide usage context.

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

Purpose4/5

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

The description clearly states the tool performs data transformations: filter, group, aggregate, sort, or select columns. It uses a verb and resource, but does not differentiate from sibling tools like filter_data_tool or sort_data_tool, which individually perform each operation.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus the many sibling tools that each handle a single operation. There is no mention of combining operations or when this meta-tool is preferable.

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

TDQS

B3.4/5.0
Disambiguation2/5

With 67 tools, many overlap in purpose (e.g., over 20 chart creation tools, multiple search tools, multiple transform shorthands). Despite detailed descriptions, an agent would struggle to reliably distinguish between similar tools like 'create_chart' and 'create_animated_chart' or 'filter_data_tool' vs 'transform_data(operation="filter")'.

Naming Consistency4/5

Most tools follow a clean verb_noun pattern with underscores (e.g., search_datasets, create_chart, get_resource_data). A few deviations like 'health_check' and 'get_config_tool' are minor, but the overall naming system is predictable and readable.

Tool Count2/5

67 tools is excessive for a data MCP server. Many highly specialized tools (e.g., 11 distinct 3D chart types) could be consolidated into parameterized versions. The sheer number overwhelms the tool surface and reduces discoverability.

Completeness5/5

The tool set covers the full lifecycle of working with Serbian open data: discovery (search, browse, suggest), retrieval (get, preview, summary), transformation (filter, sort, group, aggregate), analysis (forecast, benchmark, compare, insight extraction), and extensive visualization (maps, charts, 3D, dashboards, infographics, export). No obvious gaps for its intended domain.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables querying and analyzing over 90,000 public datasets from the Spanish Government Open Data Portal (datos.gob.es) using natural language, with tools for search, filtering, metadata access, and SPARQL queries.
    10
    5
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables AI agents to search and analyze Ukraine's national open-data portal (data.gov.ua) using natural language, with tools for finding datasets, inspecting metadata, and retrieving actual data.
    6
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables searching and accessing EU open datasets from data.europa.eu, including metadata discovery and dataset retrieval.
    16
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides access to Poland's national open data portal (Otwarte Dane) through natural language queries, enabling users to search and retrieve datasets from dane.gov.pl.
    10
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/acailic/serbian-data-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server