Skip to main content
Glama

Expat Living Italy

Server Details

Sourced data on Italy's ~7,900 comuni for people relocating or retiring there.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.2/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a distinct role: search_comuni resolves names to IDs, get_comune returns figures for one resolved ID, and list_datasets describes available data sources. Descriptions explicitly state search_comuni returns identifiers only and get_comune needs that code, so boundaries are crystal clear.

Naming Consistency5/5

All three follow a strict snake_case verb_noun pattern (get_comune, list_datasets, search_comuni). The noun language mixing (Italian 'comune/comuni' vs English 'datasets') is thematic, not a convention break.

Tool Count4/5

Three tools is on the thin side but each earns its place in a lookup workflow (resolve → fetch → catalog). It is well-scoped rather than padded or critically sparse.

Completeness4/5

The search→get→catalog chain covers the core read workflow with no dead ends. However, there is no way to filter or rank comuni by criteria (e.g., cheapest rent, most foreign residents) or query datasets by topic, so cross-cutting discovery requires iterative per-comune calls.

Available Tools

3 tools
get_comuneGet one comune's profileA
Read-only
Inspect

One Italian comune's population, foreign residents by citizenship, property purchase/rent price, price-to-rent, verified tax-regime eligibility, its province's rollup, layers (climate, air quality, crime, healthcare quality, age, population change and every other Italy-map layer) and provinceWellbeing (ISTAT BES indicators, polarity-aware percentiles) — looked up by 6-digit ISTAT code. Each layer's grain and measuredFor say whose number it is: a province or region value is not a measurement of this comune — say so when you quote it. Every field is wrapped in a provenance envelope (source, vintage, extractedOn, license); repeat the vintage when you state the number, and if a value is null, say why rather than treating it as zero.

ParametersJSON Schema
NameRequiredDescriptionDefault
istatCodeYes6-digit ISTAT comune code, e.g. 075029.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations only provide readOnlyHint=true; the description goes well beyond that by warning that layer `grain`/`measuredFor` may describe a province or region rather than the comune, that null values must be explained rather than read as zero, and that each field carries a provenance envelope. These are genuine behavioral caveats not present in the structured fields.

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 opening sentence is very long and enumerates the payload, but it is front-loaded with the core action and key, and the two follow-up sentences each carry distinct, actionable guidance (grain interpretation, provenance/null handling). Dense but nearly every clause earns its place.

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

Completeness4/5

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

With no output schema, the description must carry the burden of describing the return shape, and it does so thoroughly (layers, provinceWellbeing, provenance envelope fields). It stops short of describing result granularity or error behavior for an invalid/unknown code, but is sufficient to call and interpret the tool.

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

Parameters3/5

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

There is exactly one parameter with 100% schema description coverage, including the pattern and an example (075029), so the schema does the work. The description repeats the '6-digit ISTAT code' lookup key but adds no syntax or format detail beyond what is already documented.

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?

Specific verb+resource: retrieves one comune's profile by 6-digit ISTAT code, and enumerates the returned payload (population, foreign residents, prices, tax eligibility, layers, provinceWellbeing). This clearly differentiates it from search_comuni (search) and list_datasets (catalog listing), so an agent can pick it without opening sibling schemas.

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 lookup key ('6-digit ISTAT code') is stated, which implies use when the code is already known, but the description never explicitly contrasts this with search_comuni or states when-not to use it. Usage is inferable rather than spelled out.

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

list_datasetsList every dataset behind expatliving.itA
Read-only
Inspect

The catalog: each dataset's source institution, vintage (the period it describes), geographic grain, license, the expatliving.it page that presents it, and whether it is servable (false = still an unverified draft; never quote its values). Use it to say what data exists and where a reader can see it.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

readOnlyHint already establishes the safety profile, and the description goes further by explaining the servable flag: false means an unverified draft whose values must never be quoted. That is exactly the kind of non-obvious behavioral caveat an agent needs. It stops short of describing ordering or completeness of the listing.

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

Conciseness5/5

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

Two sentences: the first front-loads what the catalog contains, the second states the use case. Nothing is padded, and the parenthetical glosses (vintage, servable) earn their space by disambiguating field meaning.

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

Completeness4/5

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

With no output schema, the description usefully enumerates the returned fields and flags the draft caveat, which covers the essentials for a parameterless read tool. It does not mention result volume or ordering, a minor gap for a catalog endpoint.

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 takes zero parameters, so the baseline of 4 applies; there is nothing for the description to add or omit on this dimension.

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 names the resource precisely (the dataset catalog) and enumerates the fields it exposes, so an agent knows exactly what comes back. It is clearly distinct from the comuni-oriented siblings (get_comune, search_comuni) by resource, though it never states that contrast explicitly.

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?

"Use it to say what data exists and where a reader can see it" gives a clear, actionable context for invoking the tool. There are no exclusions or named alternatives, but with only two unrelated siblings there is little routing ambiguity to resolve.

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

search_comuniFind a comune by nameA
Read-only
Inspect

Look up Italian comuni by name (case- and accent-insensitive, partial names work) and get each one's 6-digit ISTAT code, province and region — the code get_comune needs. Returns identifiers only, no figures. Several comuni share a name; check the province before choosing.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesA comune name or part of one, accents optional — e.g. "Introdacqua" or "reggio".
limitNoHow many matches to return, 1–25. Default 10.

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already cover read-only safety, so the bar is lower, and the description still adds real context: matching is case- and accent-insensitive, partial names work, and results are identifiers only with no figures. The one gap is that it does not describe ordering or how matches are ranked when truncated by limit.

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

Conciseness5/5

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

Three short sentences, zero filler, and the most load-bearing facts (what it returns, how matching works, the ambiguity caveat) all appear up front in the first sentence.

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 two-parameter lookup with no output schema, the description covers the return shape (identifiers only, no figures), the matching rules, and the routing to get_comune. An agent has everything needed to call it correctly and interpret results.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds matching semantics for q beyond the schema text — case-insensitivity and partial-name matching — which is exactly the kind of behavior an agent needs to phrase queries correctly. Limit behavior is left entirely to 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?

Specific verb (look up) plus resource (Italian comuni) and it names exactly what comes back (6-digit ISTAT code, province, region). It also explicitly contrasts with the sibling get_comune by framing itself as the tool that supplies the code get_comune needs.

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

Usage Guidelines5/5

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

Explicitly states when to use it (to obtain the ISTAT code for get_comune) and adds a genuine decision rule for ambiguity: several comuni share a name, so check the province before choosing. Alternatives and edge cases are both covered.

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. 3 tool updates
    • First observedget_comune
    • First observedlist_datasets
    • First observedsearch_comuni

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables querying a comprehensive data lake of Italian civic open data, returning cited facts about Italian municipalities across domains like environment, education, finance, and governance.
    1
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables querying Italian national statistics (ISTAT) data through natural language questions, with tools for accessing demographic, economic, and social indicators.
    189 npm
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables LLMs to access and analyze Italian statistical data from ISTAT via natural language queries, supporting dataset discovery, exploration, and data retrieval.
    9
    2
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources