Skip to main content
Glama

DatiTuristici.it

Read tourism totals of an Italian region, province or Italy

leggi_dati_territorio
Read-onlyIdempotent

Reads the tourism totals of one Italian region, one province or the whole of Italy in one year: nights, arrivals, bed places, establishments and population. Use it for the figures of a whole territory, split by guests resident in Italy and abroad; do not use it to rank or filter territories (use classifica_territori instead) or for a single comune (use leggi_dati_comune instead). Names ignore case and accents, Trentino-Alto Adige is one region with the provinces of Bolzano and Trento, and an unknown name returns an error with the closest names (elenca_territori lists them all). The totals are those of classifica_territori for the same year; a figure that is not available is null and nota says why, also from 2025, when the counts changed scope. Read-only, public, no authentication; 30 requests per minute per client, shared across tools.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "livello": "<livello>"
    },
    "name": "leggi_dati_territorio"
  }
}

Input Schema

NameRequiredDescriptionDefault
annoNoYear of the figures, e.g. 2024; default: the latest year with data. A year outside the years with data returns an error that gives them.
nomeNoItalian name of the region or province, in any case ("Toscana", "Bolzano", "Monza e Brianza"); required for regione and provincia, omitted for nazione.
livelloYesWhat to total: "regione" (one region), "provincia" (one province) or "nazione" (the whole of Italy, the sum of the regions).

Output Schema

NameRequiredDescriptionDefault
annoYesYear of the figures: the requested one, or the latest year with data; null only when no figures are loaded.
nomeYesName of the region or province as recorded by ISTAT (in capitals), the one `nome` resolved to; null for nazione.
notaYesNotes in English on reading the totals, null when there is nothing to say: from 2025 ISTAT counts include privately rented holiday flats, so totals and non-hotel figures are not comparable with years before 2025 (hotel figures are); ISTAT rows that group the small comuni of a province, counted in the totals; a territory without figures in `anno`.
fonteYesSource to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT).
livelloYesKind of territory, as requested: "regione", "provincia" or "nazione" (the whole of Italy).
regioneYesRegion of the province, or the region itself (Bolzano and Trento are provinces of TRENTINO-ALTO ADIGE); null for nazione.
n_comuniYesNumber of comuni of the territory, as counted by elenca_territori.
n_eserciziYesAccommodation establishments in `anno` of the same comuni, the total of classifica_territori; null if not available.
popolazioneYesResident population in `popolazione_anno`, summed over the comuni of the territory; null if not available.
posti_lettoYesBed places in `anno` of the comuni with movement figures in `anno`, the total of classifica_territori; null if not available.
arrivi_totaliYesGuest arrivals (check-ins) at accommodation establishments during `anno`; null if not available.
arrivi_italianiYesArrivals of guests resident in Italy during `anno`; null if not available.
presenze_totaliYesNights spent by all guests in accommodation establishments during `anno` (one guest staying three nights counts three); null if not available.
arrivi_stranieriYesArrivals of guests resident abroad during `anno`; null if not available.
popolazione_annoYesReference year of `popolazione`: the latest year loaded; null if not available.
n_comuni_con_datiYesHow many of those comuni have movement figures of their own in `anno`.
presenze_italianiYesNights spent by guests resident in Italy during `anno`; null if not available.
presenze_stranieriYesNights spent by guests resident abroad during `anno`; null if not available.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Adds substantial context beyond the readOnly/idempotent annotations: read-only/public/no authentication, a 30 requests-per-minute per-client limit shared across tools, unknown-name error behavior with closest-name suggestions, null plus `nota` for unavailable figures, and a scope change from 2025. These are exactly the operational facts an agent needs before calling.

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?

Purpose and scope are front-loaded and nearly every clause carries information (siblings, rate limit, null handling). It is somewhat dense and run-on, packing naming rules, error behavior and a 2025 scope caveat into one long chain, but there is no filler.

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?

Covers input naming rules, level semantics, rate limits, error paths, missing-data representation and the `nota` explanation field. Since an output schema exists, the description rightly omits return-field detail and still says everything needed to invoke the tool correctly.

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 real semantics the schema lacks: names ignore case and accents, and Trentino-Alto Adige is treated as one region containing the Bolzano and Trento provinces. The year/level semantics are left almost entirely to the schema, hence not a 5.

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 ('Reads the tourism totals') plus the exact resource and scope (one Italian region, one province, or all of Italy in one year) and enumerates the measures returned. It is immediately distinguishable from siblings like classifica_territori and leggi_dati_comune, which the description itself contrasts.

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?

Gives explicit when-to-use ('figures of a whole territory, split by residents in Italy and abroad') and two explicit when-not-to-use routes: classifica_territori for ranking/filtering and leggi_dati_comune for a single comune. It also points to elenca_territori as the fallback for discovering valid names.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources