DatiTuristici.it MCP
An official MCP server providing read-only access to Italian municipal tourism data (arrivals, stays, capacity) from ISTAT, including search, classification, comparison, and forecasting tools for agents.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://datituristici.it/mcpWhat its tools do
9 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Passed Official MCP Registry namespace is tied to datituristici.it ·
- Passed Endpoint is on the registry namespace domain ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Cerca comuni italiani per nome o provincia
- Classifica territori per presenze o arrivi
- Confronta dati turistici tra diversi comuni
- Leggi serie storiche e previsioni turistiche
Source and maintenance
Protocol and capabilities
- Server
- datituristici 1.1.0
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 9 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
9 advertised
cerca_comune — Search Italian comuni by name
Searches Italian municipalities (comuni) by name, tolerating partial names and typos, and returns each match with its 6-digit ISTAT code, province and region. Use it when you have a place name and need the code; when you already have the 6-digit code, do not search again and use leggi_dati_comune instead, to pick comuni by criteria use classifica_territori, and to browse a province use elenca_territori. All homonyms are returned, most similar first (narrow them with `provincia` or `regione`); an empty list means nothing resembles the text and is not an error. Read-only, public, no authentication; 30 requests per minute per client, shared across tools.
{
"type": "object",
"required": [
"nome"
],
"properties": {
"nome": {
"type": "string",
"maxLength": 80,
"minLength": 2,
"description": "Name of the comune, full or partial, 2-80 characters, in any case; typos, missing accents and apostrophes are tolerated (\"cassano adda\" finds Cassano d'Adda)."
},
"limite": {
"type": "integer",
"default": 10,
"maximum": 20,
"minimum": 1,
"description": "Maximum number of matches, 1-20, default 10."
},
"regione": {
"type": "string",
"maxLength": 60,
"minLength": 2,
"description": "Optional: keep only comuni of this region, given by its Italian name (\"Toscana\", not \"Tuscany\"; Bolzano and Trento are in \"Trentino-Alto Adige\")."
},
"provincia": {
"type": "string",
"maxLength": 60,
"minLength": 2,
"description": "Optional: keep only comuni of this province, given by its Italian name in any case (\"Trento\", \"Bolzano\", \"Monza e Brianza\")."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"risultati",
"fonte"
],
"properties": {
"nota": {
"type": [
"string",
"null"
],
"description": "Set only when `provincia` or `regione` excluded every match: how many comuni with a similar name exist elsewhere. Null otherwise."
},
"fonte": {
"type": "string",
"description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
},
"risultati": {
"type": "array",
"items": {
"type": "object",
"required": [
"cod_istat",
"nome"
],
"properties": {
"nome": {
"type": "string",
"description": "Official name of the comune."
},
"regione": {
"type": [
"string",
"null"
],
"description": "Region as recorded by ISTAT (Bolzano and Trento are provinces of TRENTINO-ALTO ADIGE); null if not recorded."
},
"cod_istat": {
"type": "string",
"description": "6-digit ISTAT code, as a string with leading zeros kept: the `cod_istat` input of leggi_dati_comune."
},
"provincia": {
"type": [
"string",
"null"
],
"description": "Province (or metropolitan city) as recorded by ISTAT; null if not recorded."
}
}
},
"description": "Matching comuni, most similar name first, at most `limite`; empty when nothing resembles the text."
}
}
}{
"title": "Search Italian comuni by name",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}leggi_dati_comune — Read tourism figures of an Italian comune
Reads the tourism figures of one Italian municipality (comune) in one year: nights spent (presenze), arrivals, bed places, accommodation establishments and resident population. Use it when you have the 6-digit `cod_istat` from cerca_comune; do not use it to look a place up by name (use cerca_comune instead), to follow a comune over the years (use leggi_serie_comune instead) or to put comuni side by side (use confronta_comuni instead). Presenze are nights, not people (one guest staying three nights counts three); `anno` defaults to the latest year with data, and capacity figures are for `anno_capacita`: the latest year published, as on the comune's page, or the latest up to `anno` when `anno` is given; `profilo` adds the comune's altitude, surface, coordinates, UNESCO sites and tourism pressure, each group with its own year. Missing figures are null and `nota` says why (also from 2025, when the counts changed scope, and when `profilo` is null), and a year outside `anni_disponibili` or an unknown code returns an error that says what to pass. Read-only, public, no authentication; 30 requests per minute per client, shared across tools.
{
"type": "object",
"required": [
"cod_istat"
],
"properties": {
"anno": {
"type": "integer",
"maximum": 2100,
"minimum": 2000,
"description": "Year of the figures, e.g. 2024; default: the latest year with data for this comune. A year outside its years with data returns an error that gives them."
},
"cod_istat": {
"type": "string",
"pattern": "^\\d{6}$",
"description": "6-digit ISTAT code of the comune as a string, leading zeros kept (\"058091\" is Roma); it comes from cerca_comune."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"cod_istat",
"nome",
"fonte",
"scheda"
],
"properties": {
"anno": {
"type": [
"integer",
"null"
],
"description": "Year of the movement figures (presenze and arrivi): `anno_richiesto`, or the latest year with data when it was omitted; null if the comune has no tourism data."
},
"nome": {
"type": "string",
"description": "Official name of the comune."
},
"nota": {
"type": [
"string",
"null"
],
"description": "Notes in English on reading the figures, 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); capacity from a year other than `anno`; a year or a comune without movement figures; a comune without a `profilo`."
},
"fonte": {
"type": "string",
"description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
},
"scheda": {
"type": "string",
"description": "Link to the comune's public page on datituristici.it, to cite."
},
"profilo": {
"type": [
"object",
"null"
],
"required": [
"zona_altimetrica",
"altitudine_m",
"litoraneo",
"isolano",
"montano",
"grado_urbanizzazione",
"superficie_kmq",
"arrivi_per_abitante",
"posti_letto_per_kmq",
"lat",
"lon",
"siti_unesco",
"anni",
"fonte"
],
"properties": {
"lat": {
"type": [
"number",
"null"
],
"description": "Latitude of the comune in degrees (Wikidata, WGS 84); null if not available, including the few comuni with two different points, none of which is chosen."
},
"lon": {
"type": [
"number",
"null"
],
"description": "Longitude of the comune in degrees (Wikidata, WGS 84); null when `lat` is null."
},
"anni": {
"type": "object",
"required": [
"classificazioni",
"arrivi",
"popolazione",
"posti_letto",
"wikidata"
],
"properties": {
"arrivi": {
"type": [
"integer",
"null"
],
"description": "Reference year of the arrivals used in `arrivi_per_abitante`: the latest year with movement figures; null if that group is not available."
},
"wikidata": {
"type": [
"integer",
"null"
],
"description": "Reference year of the Wikidata group (`lat`, `lon`, `siti_unesco`): the year read; null if that group is not available."
},
"popolazione": {
"type": [
"integer",
"null"
],
"description": "Reference year of the resident population used in `arrivi_per_abitante`: the year closest to `anni.arrivi`, which can differ from it; null if that group is not available."
},
"posti_letto": {
"type": [
"integer",
"null"
],
"description": "Reference year of the bed places used in `posti_letto_per_kmq`: the latest year of the accommodation establishments; null if that group is not available."
},
"classificazioni": {
"type": [
"integer",
"null"
],
"description": "Reference year of the ISTAT group (`altitudine_m`, `superficie_kmq` and the classifications): the year the file refers to; null if that group is not available."
}
},
"description": "The reference year of each group of the profile, only of what was used; null where the group is not available."
},
"fonte": {
"type": "string",
"description": "Sources to cite with the profile: processed by DatiTuristici.it from institutional data (ISTAT) and Wikidata (CC0)."
},
"isolano": {
"type": [
"boolean",
"null"
],
"description": "True if the comune is on an island, false if not (ISTAT); null if not available."
},
"montano": {
"enum": [
"T",
"P",
"NM",
null
],
"type": [
"string",
"null"
],
"description": "Mountain classification of the comune (ISTAT): T entirely mountain, P partly mountain, NM not mountain; null if not available."
},
"litoraneo": {
"type": [
"boolean",
"null"
],
"description": "True if the comune is on the coast, false if not (ISTAT); null if not available."
},
"siti_unesco": {
"type": [
"integer",
"null"
],
"description": "Number of UNESCO World Heritage sites located in the comune (Wikidata), a count taken from Wikidata as it is; 0 if none; null if the comune is not in Wikidata."
},
"altitudine_m": {
"type": [
"integer",
"null"
],
"description": "Altitude of the comune's centre in metres above sea level (ISTAT); null if not available."
},
"superficie_kmq": {
"type": [
"number",
"null"
],
"description": "Surface area of the comune in square kilometres (ISTAT); null if not available."
},
"zona_altimetrica": {
"type": [
"integer",
"null"
],
"description": "Altimetric zone of the comune (ISTAT): 1 inland mountain, 2 coastal mountain, 3 inland hill, 4 coastal hill, 5 plain; null if not available."
},
"arrivi_per_abitante": {
"type": [
"number",
"null"
],
"description": "Tourism pressure: arrivals in the latest year with movement figures (`anni.arrivi`) per resident (population of `anni.popolazione`), rounded to two decimals; null if a term is missing. Arrivals are guests checked in, not nights."
},
"posti_letto_per_kmq": {
"type": [
"number",
"null"
],
"description": "Bed places in the latest year of the accommodation establishments (`anni.posti_letto`) per square kilometre of `superficie_kmq`, rounded to two decimals; null if a term is missing."
},
"grado_urbanizzazione": {
"type": [
"integer",
"null"
],
"description": "Degree of urbanisation (ISTAT): 1 city, 2 towns and suburbs, 3 rural areas; null if not available."
}
},
"description": "The comune's territorial profile, the same data as the Territorial profile section of its page: altitude, surface, coordinates, UNESCO World Heritage sites and two tourism-pressure ratios, with the year of each group in `anni` and its own `fonte`. Null when no profile is recorded for the comune or this server does not serve it; `nota` then says which."
},
"regione": {
"type": [
"string",
"null"
],
"description": "Region as recorded by ISTAT (Bolzano and Trento are provinces of TRENTINO-ALTO ADIGE); null if not recorded."
},
"esercizi": {
"type": [
"integer",
"null"
],
"description": "Number of accommodation establishments in `anno_capacita`; null if not available."
},
"cod_istat": {
"type": "string",
"description": "6-digit ISTAT code of the comune, as a string with leading zeros kept."
},
"provincia": {
"type": [
"string",
"null"
],
"description": "Province (or metropolitan city) as recorded by ISTAT; null if not recorded."
},
"popolazione": {
"type": [
"integer",
"null"
],
"description": "Resident population in `popolazione_anno` (the latest year loaded, whatever `anno` is); null if not available."
},
"posti_letto": {
"type": [
"integer",
"null"
],
"description": "Bed places in accommodation establishments in `anno_capacita`: the ISTAT total, or hotel plus non-hotel beds where the total is missing, as on the site; null if not available."
},
"anno_capacita": {
"type": [
"integer",
"null"
],
"description": "Year of the capacity figures (bed places and establishments): with `anno`, the latest year published up to it; without, the latest year published, as on the comune's page. It can be earlier or later than `anno`, and `nota` then gives both years; null if none is published."
},
"arrivi_totali": {
"type": [
"integer",
"null"
],
"description": "Guest arrivals (check-ins) at accommodation establishments during `anno`; null if not available."
},
"anno_richiesto": {
"type": [
"integer",
"null"
],
"description": "The `anno` argument as given; null when it was omitted."
},
"arrivi_italiani": {
"type": [
"integer",
"null"
],
"description": "Arrivals of guests resident in Italy during `anno`; null if not available."
},
"presenze_totali": {
"type": [
"integer",
"null"
],
"description": "Nights spent by all guests in accommodation establishments during `anno` (one guest staying three nights counts three); null if not available."
},
"anni_disponibili": {
"type": [
"object",
"null"
],
"required": [
"primo",
"ultimo"
],
"properties": {
"primo": {
"type": "integer",
"description": "First year with movement figures."
},
"ultimo": {
"type": "integer",
"description": "Latest year with movement figures, the default `anno`."
}
},
"description": "First and last year with movement figures for this comune, the accepted range of `anno`; null if the comune has none."
},
"arrivi_stranieri": {
"type": [
"integer",
"null"
],
"description": "Arrivals of guests resident abroad during `anno`; null if not available."
},
"popolazione_anno": {
"type": [
"integer",
"null"
],
"description": "Reference year of `popolazione`; null if not available."
},
"presenze_italiani": {
"type": [
"integer",
"null"
],
"description": "Nights spent by guests resident in Italy during `anno`; null if not available."
},
"presenze_stranieri": {
"type": [
"integer",
"null"
],
"description": "Nights spent by guests resident abroad during `anno`; null if not available."
}
}
}{
"title": "Read tourism figures of an Italian comune",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}elenca_territori — List Italian regions, provinces and comuni
Lists Italian regions, provinces or comuni in alphabetical order, with how many provinces and comuni each region has and how many comuni each province has. Use it to browse the territory and to get the exact names that classifica_territori accepts; do not use it to rank places by tourism figures (use classifica_territori instead) or to look one comune up by name (use cerca_comune instead). Names ignore case, accents and punctuation, and Trentino-Alto Adige is one region with the two provinces of Bolzano and Trento; an unknown or ambiguous name returns an error with the closest names, a comune without a recorded province has null there, and a page past the end is an empty list. Read-only, public, no authentication; 30 requests per minute per client, shared across tools.
{
"type": "object",
"required": [
"livello"
],
"properties": {
"limite": {
"type": "integer",
"default": 50,
"maximum": 200,
"minimum": 1,
"description": "Items per page, 1-200, default 50."
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "Items to skip, default 0: for the next page pass the previous `offset` plus `limite` while `ha_altri` is true."
},
"livello": {
"enum": [
"regione",
"provincia",
"comune"
],
"type": "string",
"description": "What to list: \"regione\" (regions), \"provincia\" (provinces, optionally of one `regione`) or \"comune\" (comuni, optionally of one `regione` or `provincia`)."
},
"regione": {
"type": "string",
"maxLength": 60,
"minLength": 2,
"description": "Optional: only the provinces or comuni of this region, by its Italian name in any case (\"Toscana\", \"trentino alto adige\")."
},
"provincia": {
"type": "string",
"maxLength": 60,
"minLength": 2,
"description": "Optional: only the comuni of this province, by its Italian name in any case (\"Firenze\", \"Bolzano\", \"Monza e Brianza\")."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"elementi",
"totale",
"offset",
"ha_altri",
"fonte"
],
"properties": {
"fonte": {
"type": "string",
"description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
},
"offset": {
"type": "integer",
"description": "Items skipped before this page, as requested."
},
"totale": {
"type": "integer",
"description": "Number of matching items across all pages."
},
"elementi": {
"type": "array",
"items": {
"type": "object",
"required": [
"nome"
],
"properties": {
"nome": {
"type": "string",
"description": "Name as recorded by ISTAT (regions and provinces in capitals): for a region or province, the exact value for `regione` or `provincia` of classifica_territori."
},
"regione": {
"type": [
"string",
"null"
],
"description": "Region of a comune or province, or the region itself (Bolzano and Trento are provinces of TRENTINO-ALTO ADIGE); null if not recorded."
},
"n_comuni": {
"type": [
"integer",
"null"
],
"description": "Number of comuni of a region or province; null for comuni."
},
"cod_istat": {
"type": [
"string",
"null"
],
"description": "6-digit ISTAT code of a comune, leading zeros kept: the `cod_istat` input of leggi_dati_comune. Null for regions and provinces."
},
"provincia": {
"type": [
"string",
"null"
],
"description": "Province of a comune, or the province itself; null for regions and for a comune without a recorded province."
},
"n_province": {
"type": [
"integer",
"null"
],
"description": "Number of provinces of a region; null for provinces and comuni."
}
}
},
"description": "The page of regions, provinces or comuni in alphabetical order; an empty list past the last page."
},
"ha_altri": {
"type": "boolean",
"description": "True when more items follow this page: ask again with a larger `offset`."
}
}
}{
"title": "List Italian regions, provinces and comuni",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}classifica_territori — Rank Italian territories by tourism figures
Ranks and filters Italian comuni, provinces or regions by the tourism figures of one year, with the same rows, order and values as the advanced search (Esplora) on datituristici.it. Use it for questions with criteria, such as the comuni of a region with the most nights or those above a bed occupancy threshold; do not use it to read one known comune (use leggi_dati_comune instead), to look a place up by name (use cerca_comune instead) or to browse names (use elenca_territori instead). Figures are for `anno`, by default the latest year with data; a figure that is not available is null, an empty list means that no territory meets the criteria, and in 2025 `variazione` is null because the counts started including privately rented holiday flats (`nota` explains it). Read-only, public, no authentication; 30 requests per minute per client, shared across tools.
{
"type": "object",
"properties": {
"anno": {
"type": "integer",
"maximum": 2100,
"minimum": 2000,
"description": "Year 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."
},
"filtri": {
"type": "array",
"items": {
"type": "object",
"required": [
"metrica"
],
"properties": {
"max": {
"type": "number",
"description": "Highest accepted value, inclusive; omit it for no upper bound."
},
"min": {
"type": "number",
"description": "Lowest accepted value, inclusive; omit it for no lower bound."
},
"metrica": {
"enum": [
"presenze",
"arrivi",
"permanenza",
"variazione",
"stagionalita",
"tasso_occ",
"posti_letto",
"n_esercizi",
"quota_extra"
],
"type": "string",
"description": "Metric to bound: presenze: Nights spent by guests in accommodation establishments in `anno` (one guest staying three nights counts three).; arrivi: Guest arrivals (check-ins) at accommodation establishments in `anno`.; permanenza: Average length of stay in nights: presenze divided by arrivi.; variazione: Percent change of presenze on the previous year; null in 2025 by construction (see `nota`).; stagionalita: Seasonality index from 0 to 100: how much the nights concentrate in the three busiest months (0 = spread evenly over the year, 100 = all in three months).; tasso_occ: Gross bed occupancy in percent: presenze / (posti_letto * 365) * 100.; posti_letto: Bed places in accommodation establishments.; n_esercizi: Number of accommodation establishments.; quota_extra: Share of nights spent in non-hotel establishments (holiday homes, campsites, rented flats and others), in percent."
}
},
"additionalProperties": false
},
"maxItems": 5,
"description": "Optional thresholds, up to 5 and one per metric: a row is kept when each metric is within its bounds, and a row without that metric is dropped. Example: [{\"metrica\": \"presenze\", \"min\": 100000}, {\"metrica\": \"tasso_occ\", \"max\": 40}]."
},
"limite": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1,
"description": "Rows per page, 1-50, default 10."
},
"offset": {
"type": "integer",
"default": 0,
"minimum": 0,
"description": "Items to skip, default 0: for the next page pass the previous `offset` plus `limite` while `ha_altri` is true."
},
"ordine": {
"enum": [
"desc",
"asc"
],
"type": "string",
"default": "desc",
"description": "\"desc\" (default) puts the highest values first, \"asc\" the lowest."
},
"livello": {
"enum": [
"comune",
"provincia",
"regione"
],
"type": "string",
"default": "comune",
"description": "What to rank: \"comune\" (default), \"provincia\" or \"regione\"."
},
"regione": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 2
},
"maxItems": 5,
"description": "Optional: keep only these regions, up to 5, by Italian name in any case, e.g. [\"Toscana\", \"Umbria\"]."
},
"andamento": {
"enum": [
"crescita",
"stabile",
"calo"
],
"type": "string",
"description": "Optional trend of presenze on the previous year: crescita = variazione at least +3%, calo = at most -3%, stabile = in between. Not applied in 2025, where variazione does not exist (see `nota`)."
},
"provincia": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 2
},
"maxItems": 5,
"description": "Optional: keep only these provinces, up to 5, by Italian name, e.g. [\"Firenze\", \"Bolzano\"]; not with \"regione\" as `livello`."
},
"ordina_per": {
"enum": [
"presenze",
"arrivi",
"permanenza",
"variazione",
"stagionalita",
"tasso_occ",
"posti_letto",
"n_esercizi",
"quota_extra",
"nome"
],
"type": "string",
"default": "presenze",
"description": "Metric to sort by (meanings under `filtri`), or nome for alphabetical order; default presenze. Rows without the metric come last."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"righe",
"totale",
"offset",
"ha_altri",
"anno",
"nota",
"fonte"
],
"properties": {
"anno": {
"type": [
"integer",
"null"
],
"description": "Year of the figures: the requested one, or the latest with data; null only when no figures are loaded."
},
"nota": {
"type": [
"string",
"null"
],
"description": "Comparability warning in English for 2025 and later (privately rented holiday flats entered the counts), saying in 2025 which arguments were not applied; null otherwise."
},
"fonte": {
"type": "string",
"description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
},
"righe": {
"type": "array",
"items": {
"type": "object",
"required": [
"livello",
"chiave",
"nome",
"anno",
"ha_dati"
],
"properties": {
"anno": {
"type": "integer",
"description": "Year of the figures."
},
"nome": {
"type": "string",
"description": "Name as recorded by ISTAT. Among comuni, a row whose name starts with 'Altri comuni' is not a comune: it is the ISTAT total of the small comuni of its province, published as one row."
},
"arrivi": {
"type": [
"integer",
"null"
],
"description": "Guest arrivals (check-ins) at accommodation establishments in `anno`. Null if not available."
},
"chiave": {
"type": "string",
"description": "6-digit ISTAT code for a comune (the `cod_istat` input of leggi_dati_comune), the name for a province or region."
},
"ha_dati": {
"type": "boolean",
"description": "False when ISTAT published no movement figures for this territory in `anno`: its metrics are then null."
},
"livello": {
"type": "string",
"description": "Kind of territory: \"comune\", \"provincia\" or \"regione\"."
},
"regione": {
"type": [
"string",
"null"
],
"description": "Region of the row (for a region, itself); null if not recorded."
},
"presenze": {
"type": [
"integer",
"null"
],
"description": "Nights spent by guests in accommodation establishments in `anno` (one guest staying three nights counts three). Null if not available."
},
"provincia": {
"type": [
"string",
"null"
],
"description": "Province of the row (for a province, itself); null for regions."
},
"tasso_occ": {
"type": [
"number",
"null"
],
"description": "Gross bed occupancy in percent: presenze / (posti_letto * 365) * 100. Null if not available."
},
"n_esercizi": {
"type": [
"integer",
"null"
],
"description": "Number of accommodation establishments. Null if not available."
},
"permanenza": {
"type": [
"number",
"null"
],
"description": "Average length of stay in nights: presenze divided by arrivi. Null if not available."
},
"variazione": {
"type": [
"number",
"null"
],
"description": "Percent change of presenze on the previous year; null in 2025 by construction (see `nota`). Null if not available."
},
"posti_letto": {
"type": [
"integer",
"null"
],
"description": "Bed places in accommodation establishments. Null if not available."
},
"quota_extra": {
"type": [
"number",
"null"
],
"description": "Share of nights spent in non-hotel establishments (holiday homes, campsites, rented flats and others), in percent. Null if not available."
},
"stagionalita": {
"type": [
"number",
"null"
],
"description": "Seasonality index from 0 to 100: how much the nights concentrate in the three busiest months (0 = spread evenly over the year, 100 = all in three months). Null if not available."
}
}
},
"description": "The page of ranked rows; an empty list when no territory meets the criteria or past the last page."
},
"offset": {
"type": "integer",
"description": "Items skipped before this page, as requested."
},
"totale": {
"type": "integer",
"description": "Number of matching items across all pages."
},
"ha_altri": {
"type": "boolean",
"description": "True when more items follow this page: ask again with a larger `offset`."
}
}
}{
"title": "Rank Italian territories by tourism figures",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}leggi_dati_territorio — Read tourism totals of an Italian region, province or Italy
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.
{
"type": "object",
"required": [
"livello"
],
"properties": {
"anno": {
"type": "integer",
"maximum": 2100,
"minimum": 2000,
"description": "Year 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."
},
"nome": {
"type": "string",
"maxLength": 60,
"minLength": 2,
"description": "Italian name of the region or province, in any case (\"Toscana\", \"Bolzano\", \"Monza e Brianza\"); required for regione and provincia, omitted for nazione."
},
"livello": {
"enum": [
"regione",
"provincia",
"nazione"
],
"type": "string",
"description": "What to total: \"regione\" (one region), \"provincia\" (one province) or \"nazione\" (the whole of Italy, the sum of the regions)."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"livello",
"nome",
"regione",
"anno",
"presenze_totali",
"presenze_italiani",
"presenze_stranieri",
"arrivi_totali",
"arrivi_italiani",
"arrivi_stranieri",
"posti_letto",
"n_esercizi",
"popolazione",
"popolazione_anno",
"n_comuni",
"n_comuni_con_dati",
"nota",
"fonte"
],
"properties": {
"anno": {
"type": [
"integer",
"null"
],
"description": "Year of the figures: the requested one, or the latest year with data; null only when no figures are loaded."
},
"nome": {
"type": [
"string",
"null"
],
"description": "Name of the region or province as recorded by ISTAT (in capitals), the one `nome` resolved to; null for nazione."
},
"nota": {
"type": [
"string",
"null"
],
"description": "Notes 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`."
},
"fonte": {
"type": "string",
"description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
},
"livello": {
"type": "string",
"description": "Kind of territory, as requested: \"regione\", \"provincia\" or \"nazione\" (the whole of Italy)."
},
"regione": {
"type": [
"string",
"null"
],
"description": "Region of the province, or the region itself (Bolzano and Trento are provinces of TRENTINO-ALTO ADIGE); null for nazione."
},
"n_comuni": {
"type": "integer",
"description": "Number of comuni of the territory, as counted by elenca_territori."
},
"n_esercizi": {
"type": [
"integer",
"null"
],
"description": "Accommodation establishments in `anno` of the same comuni, the total of classifica_territori; null if not available."
},
"popolazione": {
"type": [
"integer",
"null"
],
"description": "Resident population in `popolazione_anno`, summed over the comuni of the territory; null if not available."
},
"posti_letto": {
"type": [
"integer",
"null"
],
"description": "Bed places in `anno` of the comuni with movement figures in `anno`, the total of classifica_territori; null if not available."
},
"arrivi_totali": {
"type": [
"integer",
"null"
],
"description": "Guest arrivals (check-ins) at accommodation establishments during `anno`; null if not available."
},
"arrivi_italiani": {
"type": [
"integer",
"null"
],
"description": "Arrivals of guests resident in Italy during `anno`; null if not available."
},
"presenze_totali": {
"type": [
"integer",
"null"
],
"description": "Nights spent by all guests in accommodation establishments during `anno` (one guest staying three nights counts three); null if not available."
},
"arrivi_stranieri": {
"type": [
"integer",
"null"
],
"description": "Arrivals of guests resident abroad during `anno`; null if not available."
},
"popolazione_anno": {
"type": [
"integer",
"null"
],
"description": "Reference year of `popolazione`: the latest year loaded; null if not available."
},
"n_comuni_con_dati": {
"type": "integer",
"description": "How many of those comuni have movement figures of their own in `anno`."
},
"presenze_italiani": {
"type": [
"integer",
"null"
],
"description": "Nights spent by guests resident in Italy during `anno`; null if not available."
},
"presenze_stranieri": {
"type": [
"integer",
"null"
],
"description": "Nights spent by guests resident abroad during `anno`; null if not available."
}
}
}{
"title": "Read tourism totals of an Italian region, province or Italy",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}leggi_serie_comune — Read the yearly tourism series of an Italian comune
Reads the yearly series of nights spent (presenze) and arrivals of one Italian comune, split by guests resident in Italy and abroad, over a range of years. Use it for the trend of one comune, given its 6-digit `cod_istat` from cerca_comune; do not use it for one year or for capacity and population (use leggi_dati_comune instead), or for several comuni (use confronta_comuni instead). Rows are yearly, oldest first; from 2025 ISTAT counts include privately rented holiday flats, so `anno_discontinuita` and `nota` flag that totals across 2025 are not comparable (hotel figures are). A comune without figures returns an empty list in `serie` with a `nota`, and a range outside its years with data or an unknown code returns an error that says what to pass. Read-only, public, no authentication; 30 requests per minute per client, shared across tools.
{
"type": "object",
"required": [
"cod_istat"
],
"properties": {
"a_anno": {
"type": "integer",
"maximum": 2100,
"minimum": 2000,
"description": "Last year to include, e.g. 2024, not before `da_anno`; default: the latest year with data. A range with no year of data returns an error that gives the years."
},
"da_anno": {
"type": "integer",
"maximum": 2100,
"minimum": 2000,
"description": "First year to include, e.g. 2015; default: the first year with data."
},
"cod_istat": {
"type": "string",
"pattern": "^\\d{6}$",
"description": "6-digit ISTAT code of the comune as a string, leading zeros kept (\"058091\" is Roma); it comes from cerca_comune."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"cod_istat",
"nome",
"provincia",
"regione",
"serie",
"anno_discontinuita",
"nota",
"fonte",
"scheda"
],
"properties": {
"nome": {
"type": "string",
"description": "Official name of the comune."
},
"nota": {
"type": [
"string",
"null"
],
"description": "Notes in English on reading the series (the change of scope above, a comune without figures, or a range without a year of figures); null otherwise."
},
"fonte": {
"type": "string",
"description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
},
"serie": {
"type": "array",
"items": {
"type": "object",
"required": [
"anno",
"presenze_totali",
"presenze_italiani",
"presenze_stranieri",
"arrivi_totali",
"arrivi_italiani",
"arrivi_stranieri"
],
"properties": {
"anno": {
"type": "integer",
"description": "Year of the row."
},
"arrivi_totali": {
"type": [
"integer",
"null"
],
"description": "Guest arrivals (check-ins) at accommodation establishments during `anno`; null if not available."
},
"arrivi_italiani": {
"type": [
"integer",
"null"
],
"description": "Arrivals of guests resident in Italy during `anno`; null if not available."
},
"presenze_totali": {
"type": [
"integer",
"null"
],
"description": "Nights spent by all guests in accommodation establishments during `anno` (one guest staying three nights counts three); null if not available."
},
"arrivi_stranieri": {
"type": [
"integer",
"null"
],
"description": "Arrivals of guests resident abroad during `anno`; null if not available."
},
"presenze_italiani": {
"type": [
"integer",
"null"
],
"description": "Nights spent by guests resident in Italy during `anno`; null if not available."
},
"presenze_stranieri": {
"type": [
"integer",
"null"
],
"description": "Nights spent by guests resident abroad during `anno`; null if not available."
}
}
},
"description": "One row per year with movement figures, oldest first, from `da_anno` to `a_anno`; yearly figures only. An empty list when the comune has none, or none in that range (`nota` then lists the years that have figures)."
},
"scheda": {
"type": "string",
"description": "Link to the comune's public page on datituristici.it, to cite."
},
"regione": {
"type": [
"string",
"null"
],
"description": "Region as recorded by ISTAT (Bolzano and Trento are provinces of TRENTINO-ALTO ADIGE); null if not recorded."
},
"cod_istat": {
"type": "string",
"description": "6-digit ISTAT code of the comune, as a string with leading zeros kept."
},
"provincia": {
"type": [
"string",
"null"
],
"description": "Province (or metropolitan city) as recorded by ISTAT; null if not recorded."
},
"anno_discontinuita": {
"type": [
"integer",
"null"
],
"description": "2025 when the series reaches it: 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). Null when every row is before 2025."
}
}
}{
"title": "Read the yearly tourism series of an Italian comune",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}confronta_comuni — Compare tourism figures of Italian comuni side by side
Compares 2 to 5 Italian comuni side by side in the same year: nights, arrivals, bed places, establishments, population, average stay and share of arrivals from abroad. Use it when the question is about several comuni at once and you have their 6-digit codes from cerca_comune; do not use it for one comune (use leggi_dati_comune instead) or to rank many by a criterion (use classifica_territori instead). `anno` defaults to the latest year with figures for every comune, so the numbers stay comparable; a comune without figures in that year keeps null values and `nota` names it, also flagging 2025 and later, when the counts changed scope. Fewer than 2 or more than 5 codes, a repeated code or an unknown one returns an error that says what to pass. Read-only, public, no authentication; 30 requests per minute per client, shared across tools.
{
"type": "object",
"required": [
"cod_istat"
],
"properties": {
"anno": {
"type": "integer",
"maximum": 2100,
"minimum": 2000,
"description": "Year of the figures for every comune, e.g. 2024; default: the latest year they all have. A year outside their years with data returns an error that gives them."
},
"cod_istat": {
"type": "array",
"items": {
"type": "string",
"pattern": "^\\d{6}$"
},
"maxItems": 5,
"minItems": 2,
"description": "2 to 5 different 6-digit ISTAT codes as strings, leading zeros kept, e.g. [\"058091\", \"015146\"] for Roma and Milano; they come from cerca_comune.",
"uniqueItems": true
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"anno",
"comuni",
"nota",
"fonte"
],
"properties": {
"anno": {
"type": [
"integer",
"null"
],
"description": "The one year of every figure: the requested one, or the latest year with figures for every comune; null if none of them has figures."
},
"nota": {
"type": [
"string",
"null"
],
"description": "Notes in English, 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); comuni without figures in `anno`; capacity from an earlier year."
},
"fonte": {
"type": "string",
"description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
},
"comuni": {
"type": "array",
"items": {
"type": "object",
"required": [
"cod_istat",
"nome",
"scheda"
],
"properties": {
"nome": {
"type": "string",
"description": "Official name of the comune."
},
"scheda": {
"type": "string",
"description": "Link to the comune's public page on datituristici.it, to cite."
},
"regione": {
"type": [
"string",
"null"
],
"description": "Region as recorded by ISTAT (Bolzano and Trento are provinces of TRENTINO-ALTO ADIGE); null if not recorded."
},
"esercizi": {
"type": [
"integer",
"null"
],
"description": "Number of accommodation establishments in `anno_capacita`; null if not available."
},
"cod_istat": {
"type": "string",
"description": "6-digit ISTAT code of the comune, as a string with leading zeros kept."
},
"provincia": {
"type": [
"string",
"null"
],
"description": "Province (or metropolitan city) as recorded by ISTAT; null if not recorded."
},
"permanenza": {
"type": [
"number",
"null"
],
"description": "Average length of stay in nights: presenze_totali / arrivi_totali, not rounded, the same value as `permanenza` in classifica_territori; null if not available."
},
"popolazione": {
"type": [
"integer",
"null"
],
"description": "Resident population in `popolazione_anno` (the latest year loaded, whatever `anno` is); null if not available."
},
"posti_letto": {
"type": [
"integer",
"null"
],
"description": "Bed places in accommodation establishments in `anno_capacita`: the ISTAT total, or hotel plus non-hotel beds where the total is missing, as on the site; null if not available."
},
"anno_capacita": {
"type": [
"integer",
"null"
],
"description": "Year of the capacity figures (bed places and establishments): the latest year published up to `anno`, so it can be earlier; null if none is."
},
"arrivi_totali": {
"type": [
"integer",
"null"
],
"description": "Guest arrivals (check-ins) at accommodation establishments during `anno`; null if not available."
},
"arrivi_italiani": {
"type": [
"integer",
"null"
],
"description": "Arrivals of guests resident in Italy during `anno`; null if not available."
},
"presenze_totali": {
"type": [
"integer",
"null"
],
"description": "Nights spent by all guests in accommodation establishments during `anno` (one guest staying three nights counts three); null if not available."
},
"arrivi_stranieri": {
"type": [
"integer",
"null"
],
"description": "Arrivals of guests resident abroad during `anno`; null if not available."
},
"popolazione_anno": {
"type": [
"integer",
"null"
],
"description": "Reference year of `popolazione`; null if not available."
},
"presenze_italiani": {
"type": [
"integer",
"null"
],
"description": "Nights spent by guests resident in Italy during `anno`; null if not available."
},
"presenze_stranieri": {
"type": [
"integer",
"null"
],
"description": "Nights spent by guests resident abroad during `anno`; null if not available."
},
"quota_arrivi_stranieri": {
"type": [
"number",
"null"
],
"description": "Share of arrivals by guests resident abroad, in percent: arrivi_stranieri / arrivi_totali * 100, rounded to one decimal; null if not available."
}
}
},
"description": "The comuni in the requested order, each with its figures of `anno`."
}
}
}{
"title": "Compare tourism figures of Italian comuni side by side",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}leggi_previsioni_comune — Read the projection of an Italian comune with uncertainty and reliability
Reads the statistical projection of one Italian municipality (comune) for the year after the latest ISTAT year: total, hotel and non-hotel nights and arrivals. Use it when you have the 6-digit `cod_istat` from cerca_comune and the question is what to expect next; do not use it for past figures (use leggi_serie_comune instead) or to set comuni side by side (use confronta_comuni instead). Each line gives last year's real figure, the projected figure and `affidabilita_pct` (0 to 100, measured by projecting a past year), and only the total has the p10 to p90 uncertainty band; a line that fails the checks has `disponibile` false and a `motivo`, a comune without a yearly series returns an empty list in `linee` with a `nota`, and a missing figure is null. These are estimates, not official statistics, and they are served only while the site shows projections to everyone, otherwise the call returns an error. Read-only, public, no authentication; 30 requests per minute per client, shared across tools.
{
"type": "object",
"required": [
"cod_istat"
],
"properties": {
"cod_istat": {
"type": "string",
"pattern": "^\\d{6}$",
"description": "6-digit ISTAT code of the comune as a string, leading zeros kept (\"058091\" is Roma); it comes from cerca_comune. An unknown code returns an error that says what to pass."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"cod_istat",
"nome",
"anno_orizzonte",
"soglia_affidabilita_bassa",
"linee",
"metodo",
"nota",
"fonte",
"scheda"
],
"properties": {
"nome": {
"type": "string",
"description": "Official name of the comune."
},
"nota": {
"type": "string",
"description": "Notes in English on reading the projection: what it is, how the total and its band are built when the year adds any months ISTAT has already published, which lines are not projected and why, which may be derived from the total, where reliability is missing, and the change of ISTAT scope in 2025. When no projection is stored, it says so."
},
"fonte": {
"type": "string",
"description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
},
"linee": {
"type": "array",
"items": {
"type": "object",
"required": [
"linea",
"disponibile",
"motivo",
"reale_anno_prima",
"proiettato",
"p10",
"p90",
"affidabilita_pct",
"anno_di_prova"
],
"properties": {
"p10": {
"type": [
"integer",
"null"
],
"description": "Lower end of the uncertainty band: the 10th percentile of the model's forecast or, when `nota` says the total adds any months ISTAT has already published, those months (if any) plus the sum of the monthly 10th percentiles of the projected months, a wider band than a plain 10th percentile. Only the line totale has it; null for the others."
},
"p90": {
"type": [
"integer",
"null"
],
"description": "Upper end of the uncertainty band: the 90th percentile of the model's forecast or, when `nota` says the total adds any months ISTAT has already published, those months (if any) plus the sum of the monthly 90th percentiles of the projected months, a wider band than a plain 90th percentile. Only the line totale has it; null for the others."
},
"linea": {
"enum": [
"totale",
"alberghieri",
"extra",
"arrivi"
],
"type": "string",
"description": "What is projected: totale = nights spent in all establishments, alberghieri = nights in hotels, extra = nights in non-hotel establishments, arrivi = guest arrivals."
},
"motivo": {
"type": [
"string",
"null"
],
"description": "Why the line is not projected, null when it is: nessun_dato = no figure in the recent years the check looks at; serie_corta = a recent year is missing; zeri = a recent year is zero; salto = a jump between consecutive years too large to project from (the 2025 change of ISTAT scope is not counted as a jump); senza_totale = the line itself passes but `totale` does not, and every other line is anchored to it."
},
"proiettato": {
"type": [
"integer",
"null"
],
"description": "The projected figure for `anno_orizzonte` (nights, or arrivals for the line arrivi). For totale it is the median of the model's forecast for the year or, when `nota` says the total adds any months ISTAT has already published, those months (if any) plus the projected remaining months. alberghieri, extra and arrivi may be derived from the total, as `nota` says. Null when the line is not available."
},
"disponibile": {
"type": "boolean",
"description": "True when this line has a projection; false when it was rejected (see `motivo`) and its numbers are null."
},
"anno_di_prova": {
"type": [
"integer",
"null"
],
"description": "The year on which the reliability was measured; null when the line is not available."
},
"affidabilita_pct": {
"type": [
"integer",
"null"
],
"description": "Reliability from 0 to 100: 100 minus the percent error the model made when it projected `anno_di_prova` from the earlier years only, floored at 0. Null when the line is not available or too few earlier years allowed the test (see `nota`)."
},
"reale_anno_prima": {
"type": [
"integer",
"null"
],
"description": "The real figure of the year before `anno_orizzonte`, the latest year with ISTAT figures, to set beside `proiettato`; null when the line is not available."
}
}
},
"description": "The four lines in the order totale, alberghieri, extra, arrivi; an empty list when no projection is stored for this comune (see `nota`)."
},
"metodo": {
"type": [
"string",
"null"
],
"description": "Name of the statistical model that made the projections; null when none is stored."
},
"scheda": {
"type": "string",
"description": "Link to the comune's public page on datituristici.it, to cite."
},
"cod_istat": {
"type": "string",
"description": "6-digit ISTAT code of the comune, as a string with leading zeros kept."
},
"anno_orizzonte": {
"type": [
"integer",
"null"
],
"description": "The one year projected: the year after the latest year with ISTAT yearly figures. Null when no projection is stored for this comune (see `nota`)."
},
"soglia_affidabilita_bassa": {
"type": [
"integer",
"null"
],
"description": "Reliability percentage below which the site labels a projection as low; null when no projection is stored."
}
}
}{
"title": "Read the projection of an Italian comune with uncertainty and reliability",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}leggi_copertura_dati — Read how far the tourism figures go and how recent they are
Reads which tourism figures the service holds and how recent they are: the latest year, how many comuni are covered, the last import, what each metric means and the 2025 break in the series. Use it to check how current the figures are, what a metric means or why a comune has a gap; do not use it to read the figures themselves (use leggi_dati_comune instead) or to find a comune by name (use cerca_comune instead). With a 6-digit `cod_istat` it adds the years with figures and with capacity for that comune and whether it has a projection and why not; without one `per_comune` is null. `aggiornato_il` is the time of the last successful import, null if none is recorded, not of the last check for new files; `profilo_territoriale` gives the year and the last import of the sources of the territorial profile. Read-only, public, no authentication; 30 requests per minute per client, shared across tools.
{
"type": "object",
"properties": {
"cod_istat": {
"type": "string",
"pattern": "^\\d{6}$",
"description": "Optional: 6-digit ISTAT code of one comune as a string, leading zeros kept (\"058091\" is Roma), from cerca_comune, to add its own coverage; omit it for the summary of the whole country. An unknown code returns an error that says what to pass."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"ultimo_anno_annuale",
"ultimo_periodo_infrannuale",
"comuni_con_dati",
"comuni_totali",
"aggiornato_il",
"cadenza",
"definizioni",
"discontinuita",
"per_comune",
"profilo_territoriale",
"nota",
"fonte"
],
"properties": {
"nota": {
"type": [
"string",
"null"
],
"description": "Notes in English, null when there is nothing to say: no figures loaded yet, or the comune has no movement figures."
},
"fonte": {
"type": "string",
"description": "Source to cite with the figures: processed by DatiTuristici.it from institutional data (ISTAT)."
},
"cadenza": {
"type": "string",
"description": "How the figures are kept up to date: when the service checks for new ISTAT files and what makes the figures change."
},
"per_comune": {
"type": [
"object",
"null"
],
"required": [
"cod_istat",
"nome",
"anni_con_dati",
"anni_con_capacita",
"ha_previsioni",
"motivo"
],
"properties": {
"nome": {
"type": "string",
"description": "Official name of the comune."
},
"motivo": {
"type": [
"string",
"null"
],
"description": "Why there is no projection, null when there is one: the `motivo` codes of leggi_previsioni_comune, or non_calcolata = none is stored for the comune, or non_pubbliche = projections are not public at the moment."
},
"cod_istat": {
"type": "string",
"description": "6-digit ISTAT code of the comune, as a string with leading zeros kept."
},
"anni_con_dati": {
"type": "array",
"items": {
"type": "integer",
"description": "A year."
},
"description": "Years with a row of movement figures (nights and arrivals), oldest first; an empty list when the comune has none."
},
"ha_previsioni": {
"type": [
"boolean",
"null"
],
"description": "True when leggi_previsioni_comune has a projection of the total nights for this comune; null when projections are not public at the moment."
},
"anni_con_capacita": {
"type": "array",
"items": {
"type": "integer",
"description": "A year."
},
"description": "Years with a row of capacity figures (bed places and establishments), oldest first; an empty list when the comune has none."
}
},
"description": "The coverage of the one comune asked for with `cod_istat`; null when `cod_istat` was omitted."
},
"definizioni": {
"type": "object",
"required": [
"presenze",
"arrivi",
"permanenza",
"tasso_occ",
"stagionalita",
"variazione",
"quota_extra"
],
"properties": {
"arrivi": {
"type": "string",
"description": "Definition of the metric arrivi."
},
"presenze": {
"type": "string",
"description": "Definition of the metric presenze."
},
"tasso_occ": {
"type": "string",
"description": "Definition of the metric tasso_occ."
},
"permanenza": {
"type": "string",
"description": "Definition of the metric permanenza."
},
"variazione": {
"type": "string",
"description": "Definition of the metric variazione."
},
"quota_extra": {
"type": "string",
"description": "Definition of the metric quota_extra."
},
"stagionalita": {
"type": "string",
"description": "Definition of the metric stagionalita."
}
},
"description": "What the metrics of classifica_territori mean, one entry per metric, with the same wording as its `filtri` parameter. Presenze are nights spent, not people."
},
"aggiornato_il": {
"type": [
"string",
"null"
],
"description": "UTC timestamp of the last successful import of the ISTAT tourism files (ISO 8601): when the figures were last loaded, not when they were last checked. Null if no import is recorded."
},
"comuni_totali": {
"type": "integer",
"description": "Number of comuni, as counted by elenca_territori."
},
"discontinuita": {
"type": "object",
"required": [
"anno",
"spiegazione"
],
"properties": {
"anno": {
"type": "integer",
"description": "First year counted with the new scope."
},
"spiegazione": {
"type": "string",
"description": "What changed and which figures are no longer comparable."
}
},
"description": "The break in the series: the year ISTAT changed what its counts include."
},
"comuni_con_dati": {
"type": "integer",
"description": "How many comuni have movement figures in `ultimo_anno_annuale`; the ISTAT rows that group the small comuni of a province are not counted."
},
"ultimo_anno_annuale": {
"type": [
"integer",
"null"
],
"description": "Latest year with yearly movement figures (the default `anno` of the other tools); null only when no figures are loaded."
},
"profilo_territoriale": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"required": [
"fonte",
"dati",
"anno",
"aggiornato_il"
],
"properties": {
"anno": {
"type": [
"integer",
"null"
],
"description": "Reference year of the data held (the latest year of the ISTAT file, the year Wikidata was read); null if none is loaded."
},
"dati": {
"type": "string",
"description": "What this source gives to the profile."
},
"fonte": {
"type": "string",
"description": "How to cite this source."
},
"aggiornato_il": {
"type": [
"string",
"null"
],
"description": "UTC timestamp of the last successful import of this source (ISO 8601), not of the last check; null if none is recorded."
}
},
"description": "One source of the territorial profile."
},
"description": "The sources of the `profilo` that leggi_dati_comune gives, one entry each, with the year of their data and the time of their last successful import; null when this server does not serve the profile."
},
"ultimo_periodo_infrannuale": {
"type": [
"string",
"null"
],
"description": "Latest period with sub-annual (monthly) nights, as YYYY-MM. Only this date is given: the monthly figures themselves are not served here. Null if there are none."
}
}
}{
"title": "Read how far the tourism figures go and how recent they are",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 673 ms
- 95th percentile latency
- 673 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 673 ms · metadata changed · 9 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http datituristici-it-mcp https://datituristici.it/mcpCodex
codex mcp add datituristici-it-mcp --url https://datituristici.it/mcpCursor
{
"mcpServers": {
"datituristici-it-mcp": {
"url": "https://datituristici.it/mcp"
}
}
}Cline
{
"mcpServers": {
"datituristici-it-mcp": {
"type": "streamableHttp",
"url": "https://datituristici.it/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"datituristici-it-mcp": {
"type": "http",
"url": "https://datituristici.it/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http datituristici-it-mcp https://datituristici.it/mcpClaude Desktop
https://datituristici.it/mcpWindsurf
{
"mcpServers": {
"datituristici-it-mcp": {
"serverUrl": "https://datituristici.it/mcp"
}
}
}Let your agent find its tools
Find servers like DatiTuristici.it MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run DatiTuristici.it MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.