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 28 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.

  • 28 MCP tools

  • 18 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

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 revisions 2025-11-25, 2025-06-18, and 2025-03-26;

  • validates the MCP-Protocol-Version header 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.

  • 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.

  • The Docker image runs as an unprivileged app user.

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.

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

21 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_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_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_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_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_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.

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_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_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. 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 21 tools

Disambiguation4/5

Most tools have clearly distinct domains (geocoding, air quality, traffic, legislation, etc.). However, a few pairs like 'get_statistics' vs 'search_statistics' and 'get_dataset' vs 'search_datasets' could cause confusion if descriptions are not carefully read, but overall ambiguity is low.

Naming Consistency4/5

Tools consistently use a verb_noun pattern with underscores (e.g., get_air_quality, list_cfl_parking, search_legislation). Minor variations like 'geocode_address' and 'reverse_geocode' still follow the verb_noun structure, so naming is mostly consistent.

Tool Count5/5

With 21 tools, the server covers a comprehensive range of Luxembourg open data domains without being overwhelming. Each tool serves a distinct purpose and the count feels well-scoped for the server's intended functionality.

Completeness5/5

The tool set covers a broad spectrum of official Luxembourg data: geospatial, transport, environment, legislation, statistics, accessibility, and more. Both search and retrieval operations are present for major datasets, leaving no obvious gaps for its stated purpose.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    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.
    -
  • 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