Skip to main content
Glama
amirdaraee

Luxembourg MCP

by amirdaraee

Luxembourg MCP

CI PyPI License: MIT

Keyless Model Context Protocol access to Luxembourg public data.

Hosted endpoint — no install needed: point any MCP client at https://mcp.luxembourg-mcp.com/mcp (streamable HTTP). Or run it yourself with uvx luxembourg-mcp. Website: luxembourg-mcp.com

Luxembourg MCP turns fragmented public APIs and open datasets into 38 consistent tools that AI agents can call directly. It covers laws, official statistics, mobility, environmental measurements, parliament, accessibility, addresses, geospatial features, and the national open-data catalogue.

  • 38 MCP tools

  • 26 public data systems

  • No API keys or accounts

  • No scraping

  • Source URL returned with every result

  • Stdio and Streamable HTTP transports

Origin and credit

This project is directly inspired by Allemannsdata, created by Thomas Heggelund.

Heggelund's original idea was to give public data the same openness suggested by Norway's allemannsretten, the right to roam: public information should be straightforward to reach, combine, and use. Allemannsdata removes the repetitive integration work between agents and Norwegian public services by presenting many unrelated data sources through consistent, keyless MCP tools.

Luxembourg MCP applies that idea to the Grand Duchy. It is an independent implementation for Luxembourg, not a fork, official regional edition, or affiliated project. Credit for the original public-data-over-MCP catalogue concept belongs to Thomas Heggelund and Allemannsdata.

Related MCP server: mcp-gouv-fr

Available tools

Tool

Public source

Purpose

search_datasets

data.public.lu

Search the national open-data catalogue

get_dataset

data.public.lu

Inspect metadata and current resources

geocode_address

Geoportail

Resolve an official address

reverse_geocode

Geoportail

Find the nearest official address

list_geo_collections

Geoportail OGC API

Discover queryable geospatial layers

get_geo_features

Geoportail OGC API

Retrieve bounded GeoJSON features

get_weather_alerts

MeteoLux

Read current weather warnings

search_legislation

Legilux

Search legislation and consolidated laws

search_statistics

STATEC LUSTAT

Discover statistical dataflows

get_statistics

STATEC LUSTAT

Retrieve labelled SDMX observations

get_city_parking

Ville de Luxembourg

Read live city parking availability

list_cfl_parking

CFL

List Park and Ride facilities

get_cfl_parking

CFL

Read live P+R occupancy and free spaces

get_traffic

CITA

Read live motorway traffic measurements

get_water_levels

Water Management Administration

Read current water-station levels

get_air_quality

Environment Administration

Read national air-quality measurements

search_chamber_bodies

Chamber of Deputies

Search bodies, memberships, and roles

get_accessibility_figures

Digital Accessibility Observatory

Read national accessibility totals

get_accessibility_audits

Digital Accessibility Observatory

List recent public-sector audits

search_transit_stops

Public Transport Administration

Search nationwide GTFS stops

get_city_mobility

Ville de Luxembourg Maps

Retrieve mobility locations as GeoJSON

get_weather_observations

MeteoLux

Live temperature, wind, pressure at Findel

get_public_holidays

data.public.lu

Legal public holidays in four languages

search_parliamentary_questions

Chamber of Deputies

Search parliamentary questions and answers

get_housing_prices

Observatoire de l'Habitat

Advertised housing sale prices by commune

get_election_results

CTIE

2023 legislative election results

get_ev_charging

Chargy

Public EV charging with live availability

get_waste_collections

Environment Administration

Upcoming waste-collection dates by commune

get_weather_forecast

MeteoLux

Official forecast, UV index, sunrise and sunset

get_fuel_prices

Ministère de l'Économie

Monthly fuel, hydrogen and EV-charging prices

get_public_alerts

LU-Alert

National warnings, including food recalls

get_commune_leaders

Ministère des Affaires intérieures

Current mayor and aldermen per commune

get_commune_population

CTIE

Resident population by commune, age group and sex

get_pharmacies_on_duty

Pharmacie.lu

Pharmacies on duty, with address and phone

get_electricity_prices

Open Data Lëtzebuerg

Day-ahead power prices per quarter hour

get_carsharing

CFL Mobility

Available FLEX carsharing vehicles

get_bike_sharing

Vël'OK

Live bike-sharing availability in the south

search_tenders

Portail des marchés publics

Open public procurement notices

Quick start

Python 3.11 or newer is required.

python -m venv .venv
. .venv/bin/activate
pip install -e .
luxembourg-mcp --transport http --port 8000

Once running:

Interface

URL

Tool catalogue

http://127.0.0.1:8000/

MCP endpoint

http://127.0.0.1:8000/mcp

Health check

http://127.0.0.1:8000/health

Stdio client

{
  "mcpServers": {
    "luxembourg": {
      "command": "luxembourg-mcp"
    }
  }
}

Docker

docker build -t luxembourg-mcp .
docker run --rm -i luxembourg-mcp                                          # stdio (default)
docker run --rm -p 8000:8000 luxembourg-mcp --transport http --host 0.0.0.0  # HTTP

Example questions

After connecting an MCP client, an agent can answer questions such as:

  • What weather warnings are active in Luxembourg?

  • How many spaces are free at a CFL Park and Ride?

  • What is the latest water level at Mersch?

  • Find legislation concerning pensions.

  • Which STATEC datasets contain population figures?

  • What are the latest traffic measurements on the A6?

  • Find the official coordinates for an address in Luxembourg City.

  • Which bus or tram stops match Hamilius?

Protocol behavior

The server:

  • validates arguments against every advertised tool input schema;

  • rejects JSON-RPC batches and other non-object JSON with -32600 Invalid Request;

  • supports MCP 2026-07-28 (stateless: per-request _meta, server/discover, cache hints) alongside the initialize-handshake revisions 2025-11-25, 2025-06-18, and 2025-03-26 on the same endpoint and over stdio;

  • validates the MCP-Protocol-Version, Mcp-Method, and Mcp-Name headers against the request body for HTTP requests;

  • returns tool failures as MCP tool results without terminating the server;

  • bounds large upstream responses before placing them in agent context.

The built-in HTTP server is stateless and does not provide an SSE stream. By default it accepts browser origins only from loopback addresses; hosted deployments can extend this with LUXEMBOURG_MCP_ALLOWED_ORIGINS (a comma-separated origin list, or *), which also enables CORS preflight and response headers for the allowed origins. Public deployments should add TLS, response caching, and observability at a reverse proxy or application gateway.

Security and deployment

The built-in server includes baseline controls, but it is not a replacement for a production API gateway:

  • HTTP request bodies are limited to 1 MiB.

  • Upstream responses are limited to 25 MiB.

  • Metadata-derived downloads are restricted to trusted data.public.lu HTTPS resource hosts, including redirects; fixed upstream URLs only follow HTTPS redirects on the same host.

  • Upstream XML declaring DTD entities is rejected before parsing, and user-supplied identifiers cannot form ./.. URL path segments.

  • GTFS ZIP members are checked for decompressed size, encryption, and suspicious compression ratios before extraction.

  • HTTP clients are limited to 60 MCP requests per minute by default; IPv6 clients are grouped by /64 prefix.

  • The HTTP server serves at most 32 concurrent connections by default and closes connections idle for 30 seconds.

  • The Docker image runs as an unprivileged app user from a digest-pinned base image.

Set LUXEMBOURG_MCP_RATE_LIMIT to change the per-minute, per-client limit. A value of 0 disables the built-in limiter. The limiter intentionally uses the direct TCP peer address and does not trust forwarding headers unless LUXEMBOURG_MCP_CLIENT_IP_HEADER names one explicitly (for example CF-Connecting-IP behind Cloudflare); only set it when a trusted proxy controls that header, since clients could otherwise spoof it to escape the limit. Set LUXEMBOURG_MCP_MAX_CONNECTIONS to change the concurrent-connection cap; connections beyond it are closed immediately.

Tool output is untrusted external data. Dataset descriptions, legislation titles, and other public text may contain misleading or adversarial instructions. MCP clients and agent hosts must treat tool results as data, not system instructions, and should require confirmation or policy checks before allowing powerful sibling tools to act on content returned here.

Testing

The default suite is deterministic and does not use the network. It covers JSON-RPC behavior, schema validation, provider parsers, catalogue packaging, and the tools/call contract for all 28 tools.

PYTHONPATH=src python -m unittest discover -s tests -v

The opt-in live suite calls every real upstream service:

LUXEMBOURG_MCP_LIVE=1 PYTHONPATH=src \
  python -m unittest tests.test_live_tools -v

Live tests may fail when a source is unavailable or changes its published data. They also download larger STATEC, air-quality, Chamber, and GTFS resources.

Current limitations

  • The official ATP API for real-time departures and journey planning requires a personal access key. This project exposes keyless static stops from the official GTFS feed instead.

  • The cache is bounded but local to one process. Multiple workers do not share cached data.

  • Upstream availability, update frequency, schemas, and licensing remain controlled by each data producer.

  • Tool coverage is not yet at parity with Allemannsdata. Candidates include parliamentary votes, court decisions, historical weather, EV charging, road works, and more environmental measurements.

Independence and data ownership

Luxembourg MCP is a community project. It is not affiliated with Thomas Heggelund, Allemannsdata, the Luxembourg government, or any agency whose data it exposes.

The project does not own the upstream data. Each producer's licence and terms continue to apply. Tool results preserve the upstream source URL so agents and users can inspect the authoritative record.

Licence

The Luxembourg MCP source code is released under the MIT licence. Upstream public data is licensed separately by its respective producer.


mcp-name: io.github.amirdaraee/luxembourg-mcp

Available Tools

38 tools
geocode_addressCInspect

Resolve a Luxembourg address to official Geoportail coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose behavior such as input format requirements, error handling, or whether it performs a lookup or transformation. It adds minimal context beyond the name.

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 concise sentence with no wasted words, but it lacks necessary details, resulting in under-specification rather than efficient completeness.

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

Completeness2/5

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

Given the tool's simplicity (1 parameter, no output schema, no annotations), the description should provide more context about input format, output type, and potential errors, which it fails to do.

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

Parameters1/5

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

The single parameter 'query' has 0% schema description coverage, and the description does not clarify what format the query should take (e.g., full address, postal code, street name) or any Luxembourg-specific requirements.

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 resolves a Luxembourg address to Geoportail coordinates, specifying the verb 'resolve' and the resource 'Luxembourg address to official Geoportail coordinates'. This distinguishes it from siblings like reverse_geocode.

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 vs alternatives (e.g., reverse_geocode, get_geo_features) or any prerequisites like address format or Luxembourg specificity.

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

get_accessibility_auditsBInspect

Get the latest public-sector digital accessibility audits.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

B3.1/5.0
Behavior2/5

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

No annotations exist, so the description must carry the full burden. It mentions 'latest' but fails to disclose that the operation is read-only, any rate limits, data freshness, or response format. For a read-only tool, this is minimal.

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 a single sentence with no wasted words. It is concise and front-loaded with the core purpose, though it could be slightly expanded without harming conciseness.

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 low complexity (one optional parameter, no output schema), the description covers the basic purpose. However, it lacks usage context, behavioral details, and comparison to similar siblings. It is adequate but not comprehensive.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds no detail about the 'limit' parameter beyond its obvious meaning. The parameter's constraints (integer, 1-100, default 10) are self-evident from the schema, so the description does not add meaningful semantics.

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 'Get the latest public-sector digital accessibility audits' clearly states the specific verb ('get'), resource ('audits'), and domain ('public-sector digital accessibility'). It distinguishes from siblings like 'get_accessibility_figures' by specifying 'audits' vs 'figures'.

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 (e.g., 'get_accessibility_figures' or 'search_statistics'), nor any conditions or pre-requisites. It lacks 'when-to-use' or 'when-not-to-use' context.

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

get_accessibility_figuresCInspect

Get national Digital Accessibility Observatory key figures.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.5/5.0
Behavior2/5

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

No annotations exist, so the description carries full burden. It only mentions a read operation ('Get') but does not disclose any behavioral traits such as side effects, data freshness, or permission requirements.

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 short sentence, but it lacks essential details and could be more informative while remaining concise. It is not structured to front-load critical 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?

With no parameters, output schema, or annotations, the description must be self-sufficient. It fails to explain what 'key figures' are, the scope (national), or the data format, leaving agents underinformed.

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 no parameters, so schema description coverage is 100%. The description does not need to add parameter info; baseline of 3 is appropriate.

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

Purpose3/5

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

The description states 'Get national Digital Accessibility Observatory key figures', which provides a verb and a resource. However, 'key figures' is vague and does not specify what data is included, making it ambiguous. It does not differentiate from siblings like get_accessibility_audits or get_statistics.

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. Given many sibling tools with similar 'get_' prefixes, the agent lacks context to differentiate use cases.

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

get_air_qualityBInspect

Get the latest national telemetric air-quality measurements by station.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoOptional city-name filter

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 must disclose behavioral traits. It mentions 'latest' but does not specify update frequency, data freshness, authentication needs, or rate limits. The term 'telemetric' hints at real-time data but lacks clarity.

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

Conciseness5/5

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

A single sentence conveys the core purpose with no redundancy. Every word is necessary and the structure is front-loaded with the action and resource.

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 air quality data (multiple pollutants, units, stations), the description lacks details about return format, data fields, or pagination. No output schema exists, so the description should compensate.

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

Parameters3/5

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

Schema description coverage is 100%, so the parameter 'city' is already documented with 'Optional city-name filter'. The tool description adds no additional semantics about format, examples, or behavior when omitted. 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 action ('Get'), the resource ('latest national telemetric air-quality measurements'), and the context ('by station'). This distinguishes it from sibling tools like 'get_traffic' or 'get_weather_observations'.

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 vs. alternatives such as 'get_weather_observations' or 'get_water_levels'. The description does not mention prerequisites, limitations, or exclusions.

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

get_bike_sharingBInspect

Get live Vel'OK bike-sharing availability at stations in southern Luxembourg.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional station, locality or commune filter
available_onlyNo

TDQS

B3.1/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 states 'live' availability, but doesn't mention response format, limitations, or whether it's read-only. For a data retrieval tool, the lack of any behavioral detail beyond 'live' is a gap.

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 with no waste, front-loads the core action and resource. Effectively concise.

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?

Simple tool but with 2 params and no output schema, description should explain parameter usage and expected results. It doesn't mention how to use query or available_only, nor what 'availability' includes (bikes vs docks). Incomplete for an agent to call correctly.

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

Parameters1/5

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

Schema description coverage is 50% (query described, available_only not). Description adds no parameter explanation. Agents cannot infer the purpose or format of 'available_only' from the description or schema. Description fails to compensate for missing 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?

States a specific verb (Get) and resource (live Vel'OK bike-sharing availability) with geographic scope (southern Luxembourg). Distinguishes from siblings like get_carsharing and get_city_mobility.

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: use for bike-sharing availability in southern Luxembourg, but no explicit guidance on when to choose this over alternatives or when not to use it. No exclusions or alternative references.

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

get_carsharingBInspect

Find currently available CFL FLEX carsharing vehicles by station, town or fuel type.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional station, town, address or model filter
fuel_typeNoOptional fuel filter such as electric or diesel

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It states that it 'finds' vehicles, implying a read operation, but does not disclose any additional behavior such as rate limits, authentication requirements, or what 'currently available' means (e.g., real-time vs. scheduled data). It also does not describe the response structure or any side effects, leaving the agent with only the surface action.

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, compact sentence with no wasted words. The core verb and resource are front-loaded, and the filtering scope is stated efficiently. It is optimally concise for an agent to quickly parse.

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 there is no output schema and no annotations, the description should provide more detail about what the tool returns and any constraints. It implies a list of available vehicles but does not specify the structure, pagination, or error behavior. For a simple query tool with two optional parameters, this is minimally adequate but leaves gaps an agent might need to discover empirically.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (query and fuel_type) are already documented. The description adds a slight contextual mapping by saying 'station, town or fuel type', which aligns with the schema's query filter options (station, town, address, model) and fuel_type. However, it does not enrich the meaning beyond the schema; it merely paraphrases the filter options. 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 uses a specific verb 'Find' with a clear resource ('currently available CFL FLEX carsharing vehicles') and a scoping phrase ('by station, town or fuel type'). It fully distinguishes this tool from siblings like get_bike_sharing by naming the exact service (CFL FLEX) and the data focus.

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 given on when to use this tool versus alternatives. While the description implies its purpose, it does not mention any exclusions or how to choose between get_carsharing and similar transport tools like get_bike_sharing or get_cfl_parking. The only contextual hint is the tool name itself, which is insufficient for an agent to route correctly.

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

get_cfl_parkingCInspect

Get live occupancy and details for a CFL Park and Ride facility.

ParametersJSON Schema
NameRequiredDescriptionDefault
parking_idYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, and the description only states the action without disclosing behaviors like data freshness, error handling, or required permissions. The agent is left guessing about 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.

Conciseness3/5

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

The description is a single concise sentence but lacks structure. It front-loads the purpose but omits necessary details, making brevity a drawback rather than an asset.

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

Completeness2/5

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

With a simple tool having one parameter and no output schema, the description should be complete. However, it fails to specify what 'details' are returned or any constraints, leaving the agent underinformed.

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

Parameters1/5

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

The input schema has one required parameter 'parking_id' with no description. The tool description does not explain what a parking_id is or how to obtain it, leaving the agent with no guidance despite 0% 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 verb 'Get' and the resource 'live occupancy and details for a CFL Park and Ride facility.' It distinguishes from sibling tool 'list_cfl_parking' which presumably returns a list of facilities.

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

Usage Guidelines3/5

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

Usage is implied: use to get live data for a specific facility. However, no explicit guidance on when to use versus alternatives like 'list_cfl_parking' or how to obtain the parking_id.

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

get_city_mobilityBInspect

Get Ville de Luxembourg mobility locations as GeoJSON features.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryYes

TDQS

B3.1/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 states the output format (GeoJSON) but does not mention read-only nature, authentication requirements, rate limits, or any side effects. This is insufficient for a data retrieval tool.

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

Conciseness4/5

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

The description is a single, focused sentence with no unnecessary words. However, given the need for more detail, it is slightly under-informative. It earns a 4 for efficiency but lacks completeness.

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 1 parameter, no output schema, and no annotations, the description is minimal. It states purpose and output format adequately, but lacks usage context and parameter explanation. An agent could use it but might select the wrong tool among many siblings.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should explain the parameter. It does not mention the 'category' parameter or its enum values. Although the schema is clear with enum definitions, the description adds no value beyond what the schema provides, and fails to guide the agent on how to use the parameter effectively.

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 'Get', resource 'mobility locations', scope 'Ville de Luxembourg', and output format 'GeoJSON features'. It distinguishes from sibling tools like get_city_parking or get_cfl_parking by specifying 'mobility locations' which encompasses multiple categories.

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. Among many sibling tools for similar data (e.g., get_city_parking, get_geo_features), there is no hint about when this tool is appropriate or what distinguishes it.

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

get_city_parkingCInspect

Get current Ville de Luxembourg car-park capacity and free spaces.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
available_onlyNo

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 states the tool 'gets' data, implying a read operation, but does not mention auth needs, rate limits, data freshness, 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.

Conciseness3/5

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

The description is a single concise sentence, but it omits important details about parameters and usage. It is not overly verbose, but could be more informative without sacrificing brevity.

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 (2 optional params, no nested objects, no output schema), the description minimally suffices but could be improved by noting the distinction from CFL parking tools and describing the return format.

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

Parameters1/5

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

The input schema has 2 parameters (query, available_only) with 0% schema description coverage, and the description does not explain either parameter. No additional meaning is provided beyond their names.

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 'Get' and the resource 'Ville de Luxembourg car-park capacity and free spaces'. It distinguishes from siblings like get_cfl_parking by specifying 'city' parking.

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 vs alternatives. While the name implies city parking, there is no context about when to prefer it over get_cfl_parking or list_cfl_parking.

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

get_commune_leadersBInspect

Get the current mayor and aldermen of Luxembourg communes.

ParametersJSON Schema
NameRequiredDescriptionDefault
communeNoOptional commune-name filter

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 carries the full burden of behavioral disclosure. It only mentions 'current', implying non-historical data, but does not state whether omitting the commune parameter returns all communes, what the response format is, or any error or rate-limit behavior. Significant behavioral details 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.

Conciseness5/5

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

The description is a single sentence that is efficient and front-loaded with the action and resource. It contains no filler or redundant information, making it easy for an agent to parse quickly.

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

Completeness2/5

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

For a tool with a single optional parameter and no output schema, the description omits critical context: it does not clarify the behavior when the commune filter is omitted (likely returns all communes), nor what fields the response contains (e.g., names, party, contact). This leaves an agent uncertain about the tool's full scope and expected output.

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 schema already documents the 'commune' parameter with the description 'Optional commune-name filter', and schema coverage is 100%. The tool description adds no additional meaning about the parameter beyond what the schema provides, so the baseline of 3 applies.

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 'Get' and the resource 'mayor and aldermen of Luxembourg communes', which is specific and distinguishes it from sibling tools like get_commune_population or get_election_results. The geographic scope and the specific role are unambiguous.

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, nor does it mention any exclusions or context such as 'use this for current leadership data, not historical'. The purpose is implied but no explicit usage direction is given.

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

get_commune_populationAInspect

Get official resident population by commune, split by adults, minors and sex.

ParametersJSON Schema
NameRequiredDescriptionDefault
communeNoOptional commune-name filter

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the output is split by adults, minors, and sex, which is useful, but it does not disclose the default behavior when the optional 'commune' parameter is omitted, the response format (e.g., list vs. single object), or any limitations such as pagination or rate limits. While 'Get' implies a read operation, the description does not explicitly confirm read-only behavior or other relevant traits. More context is needed for an agent to call it correctly.

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

Conciseness5/5

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

The description is a single, efficient sentence that immediately communicates the core purpose. It avoids redundancy, uses front-loaded information, and contains no wasted words. It is appropriately sized for a simple tool.

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 (one optional parameter, no output schema, no annotations), the description provides the basic purpose but lacks critical details about default behavior (e.g., whether all communes are returned when no filter is provided), the output structure beyond the breakdown, and any constraints. An agent would have to infer these aspects, making the description moderately complete but not fully self-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?

The schema covers 100% of the parameters (the single 'commune' parameter has a description), so the baseline is 3. The description does not add any additional meaning beyond what the schema already provides; it merely repeats the concept of commune filtering without offering syntax, format, or edge-case details. Thus, it neither enhances nor detracts from 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 specifies the tool's function: retrieving official resident population data per commune, with a specific breakdown by adults, minors, and sex. It uses a precise verb ('Get') and resource ('official resident population by commune'), making it unambiguous and distinct from sibling tools that focus on other data types. There is no tautology or vagueness.

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 does not explicitly state when to use this tool versus alternatives or provide exclusion criteria. The usage is implied by the name and description—an agent seeking population data would naturally select this tool—but there is no direct guidance on alternatives or when not to use it. This qualifies as implied usage rather than explicit guidance.

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

get_datasetAInspect

Get metadata and current download resources for an official dataset.

ParametersJSON Schema
NameRequiredDescriptionDefault
dataset_id_or_slugYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries full burden. It describes a read operation ('Get metadata and download resources') but does not address authentication, rate limits, or scope of metadata. Adequate but could be more detailed.

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

Conciseness5/5

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

Single sentence of 10 words, minimal and front-loaded. Every word 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?

Without an output schema, the description does not detail return values beyond 'metadata and current download resources', which is vague. For a simple get tool, it might suffice, but more completeness would benefit the agent.

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

Parameters2/5

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

The description adds no meaning beyond the parameter name 'dataset_id_or_slug'. With 0% schema description coverage, the description fails to explain the parameter format or examples, leaving ambiguity.

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 'Get' and the resource 'metadata and current download resources for an official dataset'. It distinguishes itself from siblings like 'search_datasets' which is for finding datasets, not retrieving metadata.

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?

While not explicit, the description implies usage when you have a dataset ID or slug. The sibling 'search_datasets' suggests an alternative for discovery. The context is clear enough, but no explicit when-not-to-use or prerequisites are mentioned.

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

get_election_resultsAInspect

Get machine-readable 2023 legislative election results, national and per circonscription.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

The description mentions 'machine-readable' but does not disclose behavioral traits beyond that. With no annotations provided, the description carries the full burden, yet it omits details about read-only nature, rate limits, authentication, or data format.

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 succinct sentence that conveys the essential information without filler. It is appropriately sized 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 tool's simplicity (no parameters, no output schema), the description is largely complete. It specifies the data scope (national and per circonscription) and year. Minor gaps like exact format are acceptable for a straightforward 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 input schema has zero parameters and schema description coverage is 100%. Per guidelines, zero parameters baseline is 4. The description adds no parameter detail, but none is needed.

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 'Get' and the specific resource 'machine-readable 2023 legislative election results, national and per circonscription'. It distinguishes from sibling tools that focus on other data domains like parking or weather.

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 does not explicitly state when to use this tool versus alternatives, nor does it provide exclusion criteria or prerequisites. However, the specificity of '2023 legislative election results' implies its use case, but guidance is absent.

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

get_electricity_pricesAInspect

Get Luxembourg day-ahead wholesale electricity prices per quarter hour, with the cheapest and most expensive slots.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/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 of behavioral disclosure. It does reveal important behavior: data is day-ahead, wholesale, quarter-hourly, and includes cheapest/most expensive slots. However, it omits details such as units, currency, time zone, output format, or availability caveats, which would be valuable given the absence of an output schema.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the resource and granularity, adds two meaningful qualifiers (day-ahead, wholesale), and notes the extra slot information. No filler or redundant 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?

For a parameterless read-only tool, the description gives enough context to invoke it correctly and understand the core output (prices and cheapest/most expensive slots). The main gap is the lack of an output schema and explicit statement about the response format, meaning an agent must assume or infer structural 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?

The tool has zero parameters)Skip, so the empty schema fully covers this dimension. Per the guidance, a baseline of 4 is appropriate when there are no parameters to document; the description need not explain parameter semantics.

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') with a clear resource ('Luxembourg day-ahead wholesale electricity prices') and granularity ('per quarter hour'). It also mentions the notable extra of 'cheapest and most expensive slots', which clearly distinguishes it from sibling data-getters like get_fuel_prices or get_housing_prices.

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 when to use the tool based on its obvious purpose, but it does not provide any explicit context, exclusions, or references to alternatives. It would benefit from a note like 'Use when you need Luxembourg wholesale electricity pricing data.'

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

get_ev_chargingAInspect

Get Chargy public EV charging stations with live connector availability.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoOptional name or address filter
available_onlyNo

TDQS

A3.7/5.0
Behavior3/5

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

The description mentions 'live connector availability', indicating real-time data, which adds behavioral context beyond a generic 'get'. However, with no annotations provided, it fails to explicitly state that the operation is read-only, safe, or whether it 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 a single sentence with no wasted words. It is front-loaded with the key verb and resource, making it easy to parse quickly.

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 2 parameters, no output schema, and no annotations, the description covers the core purpose but lacks details on return format, parameter usage beyond schema, limitations, or error conditions. It is adequate but not fully complete for a confident agent invocation.

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

Parameters3/5

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

Schema description coverage is 50% (query has description, available_only does not). The overall description mentions 'live connector availability', which loosely relates to available_only, but does not explain parameter semantics 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 action (Get), resource (Chargy public EV charging stations), and a key feature (live connector availability). It distinguishes from sibling tools which cover different domains like parking, air quality, and traffic.

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

Usage Guidelines3/5

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

The description implies use for EV charging queries but provides no explicit context on when to use this tool versus alternatives (e.g., other transportation tools). No exclusions or prerequisites mentioned.

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

get_fuel_pricesBInspect

Get official monthly Luxembourg prices for petrol, diesel, hydrogen, LPG, home electricity and public EV charging.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthsNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden; it does convey that this is a read-only retrieval of monthly official data, which is useful. It does not disclose response shape, units, or whether `months` controls the number of historical months returned, so transparency is partial.

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

Conciseness5/5

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

One compact sentence front-loads the verb and object and enumerates all commodities without redundancy. No filler or repeated schema 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?

For a simple one-parameter getter, the description covers the data scope but omits the meaning of `months` and any return-format cues. Since there is no output schema or annotations, these omissions leave the tool minimally viable rather than complete.

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

Parameters2/5

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

The `months` integer is the sole parameter, with default/min/max in the schema but no schema description, and the tool description never mentions it. The name and bounds provide a weak inference, but the description adds no meaning at 0% schema coverage.

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

Purpose4/5

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

States a specific retrieval verb ('Get') and a clearly bounded resource: official monthly Luxembourg prices for six named commodities. It distinguishes the tool's fuel-price scope from most siblings, though it does not explicitly differentiate from overlapping siblings like get_electricity_prices.

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 scope implies 'use for official monthly fuel/energy prices in Luxembourg,' but there is no explicit when/when-not guidance or mention of alternative tools. Given sibling overlaps (get_electricity_prices, get_ev_charging), this is a notable gap.

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

get_geo_featuresCInspect

Fetch GeoJSON features from an official Geoportail OGC collection.

ParametersJSON Schema
NameRequiredDescriptionDefault
bboxNoWGS84 [west, south, east, north]
limitNo
collection_idYes

TDQS

C2.4/5.0
Behavior1/5

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

With no annotations provided, the description carries full burden. It fails to disclose that this is a read operation, whether pagination exists, rate limits, or data volume implications. The single sentence provides no behavioral traits beyond the basic fetch action.

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, front-loaded with verb and resource. However, it is too brief and omits essential information, making it under-informative rather than appropriately concise.

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

Completeness1/5

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

Given 3 parameters, no output schema, and no annotations, the description is severely incomplete. It fails to explain how to specify collection_id, the bbox syntax, limit behavior, or the structure of the returned GeoJSON.

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

Parameters1/5

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

Schema coverage is only 33% (only bbox has description). The description does not mention any parameters, leaving collection_id and limit entirely unexplained. It does not compensate for the low 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 action (Fetch) and resource (GeoJSON features from an official Geoportail OGC collection). It distinguishes this tool from siblings like list_geo_collections (lists collections, not features) and geocode_address (address geocoding).

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 such as list_geo_collections or search_datasets. The description lacks context on prerequisites (e.g., need to know collection_id from list_geo_collections) and does not mention any exclusion criteria.

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

get_housing_pricesBInspect

Get advertised housing sale prices by commune from the official Observatoire de l'Habitat.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFour-digit year such as 2025; defaults to the latest
communeNoOptional commune-name filter
property_typeNoapartment

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 bears full responsibility for behavioral disclosure. It only states what the tool gets, but does not mention read-only nature, potential errors, rate limits, or any side effects. For a simple retrieval tool, basic transparency 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?

A single sentence with no wasted words. It directly states the tool's purpose without extraneous details.

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

Completeness2/5

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

Despite having no output schema, the description does not hint at the format of the returned data (e.g., list of prices, averages, per commune). Given the tool has multiple parameters and no output schema, the description should provide more context on what the agent can expect.

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 67% (two of three parameters have descriptions). The description adds 'by commune', which is already in the commune parameter description. It does not add significant meaning beyond the schema for the undocumented property_type parameter.

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 'Get', the resource 'advertised housing sale prices', and the scope 'by commune' with an authoritative source. It distinguishes this tool from sibling get_* tools like get_air_quality or get_city_parking.

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 retrieving housing sale prices, but it does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites or context. In a list of many get_* tools, some direction would help.

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

get_pharmacies_on_dutyAInspect

Get the pharmacies on duty in Luxembourg for a date, with address and phone number.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoYYYY-MM-DD within the published window; defaults to today
localityNoOptional locality or address filter

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 behavioral burden. It indicates a read-only lookup and the key returned fields, but it does not describe data source, date-window boundaries, error handling, or behavior when no pharmacies are found. The schema provides the published-window detail, but the description itself adds little beyond the obvious get 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 a single front-loaded sentence that states the operation, scope, temporal condition, and expected output fields with no filler or redundancy. Every phrase contributes to the agent's understanding.

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?

This is a simple two-optional-parameter read tool with no output schema, and the description names the essential return fields (address, phone). The schema covers date format and locality behavior. Missing details such as invalid-date handling or empty-result behavior are minor given the low 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?

The input schema already documents both parameters with 100% coverage: date format/default behavior and optional locality filter. The description only echoes 'date' and Luxembourg, adding no semantic detail 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 uses a specific verb ('Get') and resource ('pharmacies on duty'), with clear geographic scope ('in Luxembourg'), temporal scope ('for a date'), and expected return fields ('address and phone number'). It is clearly distinguishable from all sibling tools, none of which target pharmacies.

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 the operational context: retrieving duty pharmacies for a specific date in Luxembourg, with an optional locality filter implied by the schema. It does not explicitly mention exclusions or alternatives, but no pharmacy-specific sibling exists, so the context is sufficient for an agent to select it.

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

get_public_alertsCInspect

Get recent LU-Alert public warnings: floods, storms, food recalls and other national alerts.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
languageNoen
active_onlyNo

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are present, so the description must carry the behavioral burden. It only says the tool returns recent alerts with example categories; it does not disclose filtering semantics, response shape, pagination, locality scope, or whether active_only/language affect results.

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 a single, front-loaded sentence with no wasted words. It conveys the core topic efficiently, though it could have traded some examples for parameter or usage context.

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

Completeness2/5

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

With three optional parameters, no annotations, and no output schema, the description is thin. It gives no return format, default behavior, or interaction with parameters, so an agent cannot confidently predict the tool's exact behavior before calling it.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention limit, language, or active_only. It adds nothing beyond a general sense of recency and alert categories, leaving an agent to infer or inspect the schema for parameter meaning.

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 uses a specific verb (Get) and a clear resource (LU-Alert public warnings), with examples of alert types. It is reasonably distinguishable from siblings like get_weather_alerts by the 'public warnings' and food recalls framing, though it 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 Guidelines2/5

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

There is no guidance about when to use this tool instead of get_weather_alerts or other alert/data tools. The word 'recent' implies recency selection, but no conditions, exclusions, or alternatives are provided.

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

get_public_holidaysAInspect

List Luxembourg legal public holidays in four languages, optionally for one year.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNo

TDQS

A4.3/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 adds that results are in four languages and can be filtered by year, but does not mention the number of holidays, response format, or any rate limits. It is adequate but not fully transparent.

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 of 12 words, front-loading the purpose and including key details without any waste. It earns its place entirely.

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 simple tool with one optional parameter and no output schema, the description covers the essential aspects: what it lists, where (Luxembourg), and the multilingual and year-filter capabilities. It is sufficiently complete for an agent to understand its 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?

With 0% schema description coverage, the description compensates by explicitly stating the year parameter is optional ('optionally for one year'). However, it does not provide further detail on the parameter's format or behavior. Since there is only one parameter, the description 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 'List Luxembourg legal public holidays in four languages, optionally for one year.' It specifies the verb (list), resource (public holidays), scope (Luxembourg legal), and additional details (four languages, optional year filter). This effectively distinguishes it from sibling tools, which cover other domains.

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 context (listing Luxembourg public holidays) and the sibling tool names clearly differentiate their purposes. However, it does not explicitly state when to use this tool versus alternatives or provide exclusions. The context is clear enough but lacks explicit guidance.

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

get_statisticsCInspect

Retrieve recent observations from a STATEC LUSTAT SDMX dataflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoSDMX dimension key or allall
max_rowsNo
dataflow_idYesSTATEC identifier such as DF_D7100
last_n_observationsNo

TDQS

C2.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 (e.g., read-only, rate limits, what 'recent' means). It only says 'Retrieve recent observations' – insufficient detail for an agent to understand side effects or constraints.

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?

Single sentence, no wasted words. However, it is too terse and sacrifices important details for brevity. Adequate conciseness but not optimal given the tool's complexity.

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?

Tool has 4 parameters and no output schema, yet description provides no information about return format, pagination, or how parameters interact. With no annotations, this is insufficient for an agent to effectively use the tool.

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

Parameters2/5

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

Schema description coverage is 50% (only dataflow_id described). The tool description does not add meaning to the other parameters (key, max_rows, last_n_observations) beyond what the schema provides (defaults, constraints). Baseline of 3 is not met because description fails to compensate for missing schema descriptions.

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 retrieves recent observations from a specific dataflow (STATEC LUSTAT SDMX). It distinguishes from siblings like get_dataset (likely different scope) and search_statistics (search vs retrieve). However, 'observations' is somewhat vague without further context.

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 such as get_dataset or search_statistics. No conditions or exclusions mentioned.

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

get_trafficCInspect

Get live CITA motorway speed, occupancy, and flow measurements.

ParametersJSON Schema
NameRequiredDescriptionDefault
roadNoa6

TDQS

C2.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 does not disclose behavioral traits such as data freshness, rate limits, or whether the operation is read-only. The term 'live' is used but lacks elaboration.

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, clear sentence with no redundant information. It is efficiently front-loaded.

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

Completeness2/5

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

Given the tool's simplicity (1 parameter, no output schema), the description is incomplete. It does not describe the output format, units of measurement, or how to interpret the returned data. Missing guidance for effective use.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain the 'road' parameter's meaning or its possible enum values beyond what the schema provides. No additional context is given.

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

Purpose4/5

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

The description clearly states it retrieves live traffic data (speed, occupancy, flow) from CITA motorways, distinguishing it from other get_* tools. However, it doesn't explicitly mention the limited set of roads, though that is captured in the schema.

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

Usage 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 get_city_mobility or other traffic-related tools. The description does not mention any prerequisites or exclusions.

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

get_waste_collectionsBInspect

Get upcoming municipal waste-collection dates for a Luxembourg commune.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
streetNoOptional street-name filter; commune-wide rows always match
communeYes
waste_typeNoOptional collection-type filter such as verre, papier, biodechets

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavioral traits. However, it does not mention that this is a read-only operation, whether authentication is needed, what 'upcoming' means (time horizon), or how pagination works (e.g., the limit parameter effect). The description is too terse to provide adequate 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?

A single eight-word sentence that is front-loaded and efficient. Every word contributes meaning without redundancy or unnecessary detail.

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

Completeness2/5

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

With no output schema, no annotations, and four parameters where only half have schema descriptions, the description is too sparse. An agent lacks details on output format, parameter constraints beyond defaults, and behavioral traits, making invocation uncertain.

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

Parameters2/5

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

Schema coverage is 50% (street and waste_type have descriptions, commune and limit do not). The description only adds context for commune ('for a Luxembourg commune') but offers no detail on limit's meaning or format for commune values. It fails to compensate for the missing 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 verb 'Get' and the resource 'upcoming municipal waste-collection dates', scoped to 'a Luxembourg commune'. This distinguishes it from sibling tools like get_air_quality or get_traffic, as it is specific to waste collection.

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 (e.g., other get_* tools for municipal data). The description only implies usage when waste collection dates are needed, with no exclusions or when-not-to-use information.

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

get_water_levelsBInspect

Get the latest official measured water level at Luxembourg stations.

ParametersJSON Schema
NameRequiredDescriptionDefault
stationNoOptional station-name filter

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 carry the behavioral transparency burden. It does not mention read-only nature, response format, rate limits, or any side effects. The description is too minimal for a tool without annotations.

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 with no filler, front-loaded with the core action. Every word is necessary and informative.

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?

No output schema exists, but the description does not explain what the response contains (e.g., units, timestamps). Users must guess the return structure. Given the simplicity of the tool, additional context about outputs would be valuable.

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

Parameters3/5

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

Schema coverage is 100% with a clear description for the station parameter ('Optional station-name filter'). The tool description adds no extra semantic value beyond what the schema provides, meeting the baseline of 3.

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

Purpose5/5

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

The description clearly states the verb 'Get', the resource 'water level', and specifies scope: 'latest official measured' at 'Luxembourg stations'. It is specific and distinguishes from sibling tools like get_air_quality or get_traffic.

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

Usage Guidelines3/5

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

No explicit guidance on when to use or avoid this tool versus alternatives. However, the purpose is so clear that the context (one optional parameter) implies simple retrieval. Lacks any comparison to other data retrieval tools.

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

get_weather_alertsAInspect

Get current official MeteoLux weather warnings published on data.public.lu.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoen

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 indicates a read operation fetching current warnings, but lacks details on data freshness, pagination, or behavior when no warnings exist.

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, concise sentence that conveys essential information without any unnecessary words.

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

Completeness3/5

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

For a simple tool with one optional parameter and no output schema, the description covers the basic purpose but lacks details on return format, error handling, or content of alerts.

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

Parameters2/5

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

The description does not mention the single 'language' parameter. While the schema provides enum and default, the description adds no additional context about how or why to use the parameter.

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 retrieves current official MeteoLux weather warnings from a specific source, distinguishing it from sibling tools like get_weather_observations.

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 weather warnings but provides no explicit guidance on when to use this tool versus alternatives, nor any prerequisites or limitations.

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

get_weather_forecastBInspect

Get the official MeteoLux forecast for a place in Luxembourg: current conditions, 24 hours, 5 days, UV index, sunrise and sunset.

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoen
latitudeNo
longitudeNo

TDQS

B3.1/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 the full burden. It mentions the data source and included fields, but it does not disclose behaviors such as coordinate semantics, defaults for latitude/longitude, update frequency, units, limitations, or output format. This is a meaningful gap for a data-returning tool.

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

Conciseness5/5

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

The description is a single well-structured sentence that front-loads the action and scope, then efficiently enumerates the forecast contents. Every part earns its place and there is no filler.

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?

Without an output schema or annotations, the description should explain how to specify a place, whether defaults apply, and what the response looks like. It lists the returned data categories but omits essential invocation context, leaving an agent under-informed for a tool with three undocumented parameters.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not compensate. It does not explain how latitude and longitude map to 'a place', what units are expected, or what the language parameter controls. The only hint is 'a place in Luxembourg,' which is too vague to support accurate invocation.

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 and resource: 'Get the official MeteoLux forecast for a place in Luxembourg.' It also lists the exact contents (current conditions, 24 hours, 5 days, UV index, sunrise and sunset), which clearly differentiates it from sibling tools like get_weather_observations and get_weather_alerts.

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 word 'forecast' implies this tool is for forecast data rather than observations or alerts, and 'for a place in Luxembourg' gives context. However, the description never explicitly names alternatives or states when not to use this tool, leaving selection partially to inference.

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

get_weather_observationsAInspect

Get live MeteoLux weather observations at Luxembourg-Airport: temperature, wind, pressure, humidity, visibility.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

Mentions 'live' observations but does not disclose update frequency, caching, or that it is a read-only operation. With no annotations, description could provide more 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.

Conciseness5/5

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

Single sentence, front-loaded with key information, no superfluous text.

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 and simple output, the description sufficiently covers location, data types, and live nature. No output schema required.

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; schema coverage is 100%. Description adds no param info but not needed. Baseline 4 for 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?

Clearly states verb ('Get'), specific resource ('live MeteoLux weather observations at Luxembourg-Airport'), and lists included data fields. Distinguishes from sibling tools like get_weather_alerts by focusing on current observations.

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

Usage Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives (e.g., get_weather_alerts). Usage is implied but not contrasted with sibling tools.

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

list_cfl_parkingAInspect

List official CFL Park and Ride facilities.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description must convey behavioral traits. It accurately indicates a read-only list operation with no destructive side effects. Although it doesn't specify authorization needs or rate limits, the simplicity of listing facilities makes the description 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 a single, concise sentence that contains no filler. Every word contributes to the purpose, making it highly efficient.

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

Completeness3/5

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

The description tells what the tool does but omits details about the return format (e.g., fields like name, address) and whether results are paginated. Given the lack of an output schema, the agent lacks information about the response structure, which is a notable gap for a list operation.

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

Parameters4/5

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

The tool has no parameters, and schema coverage is 100% vacuously. Per guidelines, 0 parameters earns a baseline of 4. The description adds no parameter info because none exist, which 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 lists official CFL Park and Ride facilities. The verb 'List' and specific resource make the purpose unambiguous. The sibling 'get_cfl_parking' suggests a different operation (get details of one facility), so the name and description effectively distinguish it.

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 'get_cfl_parking' or other parking tools. There are no explicit when-to-use or when-not-to-use instructions, leaving the agent to infer usage from names alone.

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

list_geo_collectionsCInspect

Search official Geoportail OGC feature collections by title, description, or keyword.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations exist. The description states it searches but does not disclose pagination behavior, authentication requirements, rate limits, or whether the search is full-text or exact match. Important behavioral traits 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?

A single sentence that conveys the core purpose without unnecessary words. It is front-loaded and efficient, though very brief.

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

Completeness2/5

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

With no output schema, 0% parameter coverage, and no annotations, the description is too brief. It does not mention the format or structure of results, pagination, or any constraints beyond the search fields. Given the tool's complexity (listing feature collections), more details are needed.

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

Parameters2/5

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

Schema description coverage is 0%. The description mentions searching by title, description, or keyword, but the schema only has 'query' and 'limit' parameters. There is no explicit mapping of 'query' to the search fields, nor explanation of 'limit' (e.g., max results). The description adds some context but falls short given the lack of schema descriptions.

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 (Search) and resource (official Geoportail OGC feature collections) and the search fields (title, description, or keyword). It is distinguishable from siblings like 'get_geo_features' and 'search_transit_stops' due to the specific resource mentioned, but does not explicitly differentiate from other list/search tools.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. No context on prerequisites, when not to use, or typical use cases provided.

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

reverse_geocodeAInspect

Find the nearest official Luxembourg address to WGS84 coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeYes
longitudeYes

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 must carry the full burden of behavioral disclosure. It only states the tool finds an address but does not disclose whether it is read-only, any side effects, or the format or range of return values. The agent lacks critical safety and output expectations.

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, well-structured sentence that front-loads the key information: verb, resource, and input. There is no redundancy or unnecessary detail.

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

Completeness3/5

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

For a simple two-parameter tool, the description covers the main purpose and geographic scope (Luxembourg). However, it lacks details on the return format, behavior for invalid coordinates, and whether multiple results are possible. Without an output schema, more context is needed for complete understanding.

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

Parameters3/5

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

The schema has 0% description coverage, so the description must add meaning. It specifies that the coordinates are in 'WGS84', which provides essential context for the latitude and longitude parameters. However, it does not explain valid ranges or format requirements, leaving some ambiguity.

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: reverse geocoding to find the nearest official Luxembourg address from WGS84 coordinates. It uses a specific verb ('Find') and resource ('nearest official Luxembourg address'), and the name 'reverse_geocode' distinguishes it from the sibling 'geocode_address'.

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 the tool is for reverse geocoding, which is clear from the context. However, it does not explicitly mention when to use it over alternatives like 'geocode_address' or provide any exclusions. This is adequate for a tool with a straightforward name and purpose.

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

search_chamber_bodiesCInspect

Search official Chamber committees, delegations, bodies, memberships, and roles.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does not mention that the tool is read-only, how results are returned, pagination behavior, or any side effects. The description only states the purpose without 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.

Conciseness3/5

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

The description is a single sentence with no wasted words, but it lacks important details. Conciseness is good, but at the cost of completeness.

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 lack of annotations, output schema, and parameter descriptions, the description is incomplete. It does not clarify return values, search fields, or how the tool fits into the broader context of sibling tools.

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

Parameters2/5

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

Schema coverage is 0%, yet the description adds no information about parameters. It does not explain what the 'query' searches (e.g., name, keyword) or how 'limit' affects results. The schema provides ranges but no semantics.

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 searches 'official Chamber committees, delegations, bodies, memberships, and roles,' which is specific. However, it does not distinguish from sibling tools like search_legislation or search_parliamentary_questions, which might have overlapping use cases.

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 over alternatives such as search_legislation or search_datasets. There is no mention of use cases, prerequisites, or exclusions.

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

search_datasetsCInspect

Search Luxembourg's official data.public.lu catalog.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
queryYes
page_sizeNo

TDQS

C2.9/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 bear the full burden of behavioral disclosure. It only states that the tool searches a catalog, omitting details such as read-only nature, pagination behavior, sorting, result limits, 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.

Conciseness5/5

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

The description is a single sentence with no wasted words, front-loading the essential information about the tool's purpose.

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 three parameters and no output schema, the description is insufficiently complete. It lacks information on return format, pagination details, error handling, rate limits, or prerequisites, which are important for a search tool.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning to the parameters. It does not explain the query field's expected format (free text? exact match?) or the behavior of page and page_size (e.g., zero-based? inclusive?). The schema provides only type and constraints.

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 searches Luxembourg's official data.public.lu catalog, using the verb 'search' with a specific resource (datasets) and distinguishes it from sibling tools like search_legislation or search_statistics.

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. With many sibling search tools (e.g., search_legislation, search_transit_stops), the absence of usage context or conditions for selection limits the agent's ability to choose correctly.

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

search_legislationCInspect

Search official Luxembourg legislation and consolidated laws through Legilux.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

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 must disclose behavioral traits. It only mentions 'search through Legilux' but does not cover read-only hint, rate limits, authentication, result format, or any side effects. Minimal transparency.

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 concise sentence, but it lacks necessary details. It is not excessively long, but the conciseness comes at the expense of completeness, making it barely adequate.

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 two parameters, no output schema, and many sibling tools, the description is incomplete. It does not explain return values, pagination, or how to form queries. An agent would lack sufficient context to use it effectively.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain parameters. The 'query' parameter is implied but not described, and 'limit' is not mentioned. The description adds no semantic value beyond the schema 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?

The description clearly states the tool searches 'official Luxembourg legislation and consolidated laws through Legilux', specifying the source and content domain, which distinguishes it from sibling tools that search other data (e.g., parliamentary questions, statistics).

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 usage guidelines are provided. The description does not indicate when to use this tool versus alternatives, nor any prerequisites or limitations. It simply states what it does, leaving the agent without context for decision-making.

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

search_parliamentary_questionsBInspect

Search Chamber of Deputies parliamentary questions by keyword, newest first.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

B3.1/5.0
Behavior2/5

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

Discloses only the ordering behavior ('newest first'), no other behaviors like pagination, rate limits, or read-only nature. Without annotations, the description should provide more 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?

Extremely concise single sentence, no redundancy. However, it is too brief, missing important details about parameters.

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 simple search tool, but missing information on limit parameter and return format. Without output schema, more context would be helpful.

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

Parameters2/5

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

Description mentions 'by keyword' aligning with query parameter, but does not explain the limit parameter. With 0% schema coverage, description should compensate for both parameters, but it falls short.

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 verb 'Search', resource 'parliamentary questions', specific to 'Chamber of Deputies', and ordering 'newest first'. Distinguishes from sibling tools like search_legislation.

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, no exclusions or context. The description is minimal with no mention of when not to use.

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

search_statisticsBInspect

Search STATEC LUSTAT statistical dataflows by topic or title.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

B3.1/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. It only indicates the search action and criteria but fails to mention pagination, result limits, error handling, or any side effects. The read-only nature is not explicitly stated.

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

Conciseness5/5

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

The description is a single, concise sentence that front-loads the core purpose. No extraneous words, ideal for quick parsing by an AI agent.

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 is a search with no output schema, the description lacks details on return values, result format, or behavior with empty results. It is incomplete for an agent to understand what to expect.

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

Parameters2/5

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

Schema coverage is 0%, so the description must compensate. It mentions 'by topic or title' which hints at the query parameter's use, but does not explicitly describe `query` or `limit`. The `limit` parameter is not addressed at all, leaving the agent to infer its purpose from 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 verb 'Search', the specific resource 'STATEC LUSTAT statistical dataflows', and the search criteria 'by topic or title'. It effectively distinguishes this tool from sibling tools that search other domains (e.g., datasets, legislation).

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 like search_datasets or search_legislation. The description does not mention when not to use it or any prerequisites.

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

search_tendersBInspect

Search Luxembourg public procurement notices with deadlines, buyers and CPV codes.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNoOptional full-text filter
open_onlyNo

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that the tool 'searches' and notes result attributes, but it does not disclose read-only status, pagination, default limit behavior, or what 'open_only' implies. This is a significant gap for a tool with no annotation coverage.

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

Conciseness5/5

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

A single sentence with no filler. The core verb, resource, and distinguishing attributes are all front-loaded, making the description easy to parse quickly. Every word earns its place.

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

Completeness2/5

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

With no output schema and no annotations, the description should cover return values, defaults, and edge cases. It does none of that. An agent calling this with no arguments doesn't know what the default 'limit' or 'open_only' will do, nor what response shape to expect. The description is too thin for a tool with three optional parameters.

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

Parameters2/5

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

Schema description coverage is only 33% (only 'query' has a description). The tool description does not compensate by explaining 'limit' or 'open_only' semantics, and it doesn't add any meaning beyond what the schema already provides. An agent would need to guess the meaning of 'open_only' and the default limit behavior.

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

Purpose5/5

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

Description states a specific verb ('Search'), a resource ('Luxembourg public procurement notices'), and key result attributes ('deadlines, buyers and CPV codes'). This clearly differentiates it from sibling search tools like search_legislation or search_datasets without needing to open the schema.

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

Usage Guidelines3/5

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

The description implies use for procurement-related queries, but it does not explicitly address when to use this tool versus alternatives, nor does it mention any exclusions or conditions. With many search_* siblings, some explicit routing would be beneficial, but the resource is distinct enough that an agent can infer intended use.

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

search_transit_stopsCInspect

Search official nationwide public-transport stops from the current ATP GTFS feed.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It only mentions the data source (ATP GTFS feed) but doesn't explain query behavior, result format, scope (real-time vs. static), or any side effects. Basic transparency 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.

Conciseness3/5

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

The description is a single sentence, concise but lacking structure. It conveys the core function without additional details like parameter info or examples. While not verbose, it could be more informative without increasing length significantly.

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 (2 parameters, no nested objects, no output schema), the description provides minimal but adequate context to understand what the tool does. However, it lacks completeness about output, parameter behavior, and integration with sibling tools.

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

Parameters2/5

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

Schema coverage is 0%, meaning the description doesn't explain parameter meanings. While 'query' and 'limit' are somewhat self-explanatory, the description does not add any value beyond the schema. For a tool with required parameters, this is insufficient.

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 searches for nationwide public-transport stops from the ATP GTFS feed, with a specific verb 'search' and resource 'public-transport stops'. It distinguishes from siblings which are mostly 'get_' tools for specific data, not searches.

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, nor any exclusions or prerequisites. The description lacks context about when to prefer this over similar search tools like geocode_address or search_datasets.

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

Tool Schema Changelog

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

  1. 17 tool updatesv0.7.0
    • Addedget_bike_sharing
    • Addedget_carsharing
    • Addedget_commune_leaders
    • Addedget_commune_population
    • Addedget_election_results
    • Addedget_electricity_prices
    • Addedget_ev_charging
    • Addedget_fuel_prices
    • Addedget_housing_prices
    • Addedget_pharmacies_on_duty
    • Addedget_public_alerts
    • Addedget_public_holidays
    • Addedget_waste_collections
    • Addedget_weather_forecast
    • Addedget_weather_observations
    • Addedsearch_parliamentary_questions
    • Addedsearch_tenders
  2. 21 tool updatesv0.3.0
    • First observedgeocode_address
    • First observedget_accessibility_audits
    • First observedget_accessibility_figures
    • First observedget_air_quality
    • First observedget_cfl_parking
    • First observedget_city_mobility
    • First observedget_city_parking
    • First observedget_dataset
    • First observedget_geo_features
    • First observedget_statistics
    • First observedget_traffic
    • First observedget_water_levels
    • First observedget_weather_alerts
    • First observedlist_cfl_parking
    • First observedlist_geo_collections
    • First observedreverse_geocode
    • First observedsearch_chamber_bodies
    • First observedsearch_datasets
    • First observedsearch_legislation
    • First observedsearch_statistics
    • First observedsearch_transit_stops

TDQS

B3.2/5.0

Scored across 38 tools

Disambiguation4/5

Each tool targets a distinct resource or action, and the descriptions clarify the differences between similar-sounding tools like weather observations, forecasts, and alerts. A few parking and mobility tools could be momentarily confused, but their live/current versus list/static distinction is clear.

Naming Consistency5/5

All 38 tool names follow a consistent lowercase snake_case verb_noun pattern, with get_, search_, and list_ used predictably. The naming convention is uniform and makes the tool set easy to scan despite its size.

Tool Count3/5

38 tools is on the heavy side and spans many unrelated domains, from weather to legislation to carsharing. The breadth is somewhat justified for a national open-data gateway, but the surface is large enough to feel overwhelming for typical agent use.

Completeness4/5

The server covers most major Luxembourg public-data areas: transport, weather, geo, energy, government, statistics, and legislation. Minor gaps exist—such as no dedicated legal-text retrieval or train schedules—but the core workflows an agent would need are largely covered.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for exploring French public open data via APIs like data.gouv.fr, geo.api.gouv.fr, INSEE Sirene, and Radio France.
    11
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Keyless remote MCP server for German public-infrastructure open data: weather, air quality, traffic, public transit, parking and roadworks across 84+ German cities (DWD, Umweltbundesamt, Mobilithek, GovData). 38 read-only tools.
    12
    14
    Apache 2.0