{"id":731861,"recorded_at":"2026-10-28T02:28:16.227866Z","observed_at":"2026-10-28T02:28:16.227783Z","subject_kind":"endpoint","subject":"9010d007-0a8a-4683-92ed-02ebdd4d6e80","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":9,"tools":[{"description":"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.","inputSchema":{"additionalProperties":false,"properties":{"limite":{"default":10,"description":"Maximum number of matches, 1-20, default 10.","maximum":20,"minimum":1,"type":"integer"},"nome":{"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).","maxLength":80,"minLength":2,"type":"string"},"provincia":{"description":"Optional: keep only comuni of this province, given by its Italian name in any case (\"Trento\", \"Bolzano\", \"Monza e Brianza\").","maxLength":60,"minLength":2,"type":"string"},"regione":{"description":"Optional: keep only comuni of this region, given by its Italian name (\"Toscana\", not \"Tuscany\"; Bolzano and Trento are in \"Trentino-Alto Adige\").","maxLength":60,"minLength":2,"type":"string"}},"required":["nome"],"type":"object"},"name":"cerca_comune"},{"description":"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.","inputSchema":{"additionalProperties":false,"properties":{"andamento":{"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`).","enum":["crescita","stabile","calo"],"type":"string"},"anno":{"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.","maximum":2100,"minimum":2000,"type":"integer"},"filtri":{"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}].","items":{"additionalProperties":false,"properties":{"max":{"description":"Highest accepted value, inclusive; omit it for no upper bound.","type":"number"},"metrica":{"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.","enum":["presenze","arrivi","permanenza","variazione","stagionalita","tasso_occ","posti_letto","n_esercizi","quota_extra"],"type":"string"},"min":{"description":"Lowest accepted value, inclusive; omit it for no lower bound.","type":"number"}},"required":["metrica"],"type":"object"},"maxItems":5,"type":"array"},"limite":{"default":10,"description":"Rows per page, 1-50, default 10.","maximum":50,"minimum":1,"type":"integer"},"livello":{"default":"comune","description":"What to rank: \"comune\" (default), \"provincia\" or \"regione\".","enum":["comune","provincia","regione"],"type":"string"},"offset":{"default":0,"description":"Items to skip, default 0: for the next page pass the previous `offset` plus `limite` while `ha_altri` is true.","minimum":0,"type":"integer"},"ordina_per":{"default":"presenze","description":"Metric to sort by (meanings under `filtri`), or nome for alphabetical order; default presenze. Rows without the metric come last.","enum":["presenze","arrivi","permanenza","variazione","stagionalita","tasso_occ","posti_letto","n_esercizi","quota_extra","nome"],"type":"string"},"ordine":{"default":"desc","description":"\"desc\" (default) puts the highest values first, \"asc\" the lowest.","enum":["desc","asc"],"type":"string"},"provincia":{"description":"Optional: keep only these provinces, up to 5, by Italian name, e.g. [\"Firenze\", \"Bolzano\"]; not with \"regione\" as `livello`.","items":{"maxLength":60,"minLength":2,"type":"string"},"maxItems":5,"type":"array"},"regione":{"description":"Optional: keep only these regions, up to 5, by Italian name in any case, e.g. [\"Toscana\", \"Umbria\"].","items":{"maxLength":60,"minLength":2,"type":"string"},"maxItems":5,"type":"array"}},"type":"object"},"name":"classifica_territori"},{"description":"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.","inputSchema":{"additionalProperties":false,"properties":{"anno":{"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.","maximum":2100,"minimum":2000,"type":"integer"},"cod_istat":{"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.","items":{"pattern":"^\\d{6}$","type":"string"},"maxItems":5,"minItems":2,"type":"array","uniqueItems":true}},"required":["cod_istat"],"type":"object"},"name":"confronta_comuni"},{"description":"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.","inputSchema":{"additionalProperties":false,"properties":{"limite":{"default":50,"description":"Items per page, 1-200, default 50.","maximum":200,"minimum":1,"type":"integer"},"livello":{"description":"What to list: \"regione\" (regions), \"provincia\" (provinces, optionally of one `regione`) or \"comune\" (comuni, optionally of one `regione` or `provincia`).","enum":["regione","provincia","comune"],"type":"string"},"offset":{"default":0,"description":"Items to skip, default 0: for the next page pass the previous `offset` plus `limite` while `ha_altri` is true.","minimum":0,"type":"integer"},"provincia":{"description":"Optional: only the comuni of this province, by its Italian name in any case (\"Firenze\", \"Bolzano\", \"Monza e Brianza\").","maxLength":60,"minLength":2,"type":"string"},"regione":{"description":"Optional: only the provinces or comuni of this region, by its Italian name in any case (\"Toscana\", \"trentino alto adige\").","maxLength":60,"minLength":2,"type":"string"}},"required":["livello"],"type":"object"},"name":"elenca_territori"},{"description":"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. Read-only, public, no authentication; 30 requests per minute per client, shared across tools.","inputSchema":{"additionalProperties":false,"properties":{"cod_istat":{"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.","pattern":"^\\d{6}$","type":"string"}},"type":"object"},"name":"leggi_copertura_dati"},{"description":"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. Missing figures are null and `nota` says why (also from 2025, when the counts changed scope), 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.","inputSchema":{"additionalProperties":false,"properties":{"anno":{"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.","maximum":2100,"minimum":2000,"type":"integer"},"cod_istat":{"description":"6-digit ISTAT code of the comune as a string, leading zeros kept (\"058091\" is Roma); it comes from cerca_comune.","pattern":"^\\d{6}$","type":"string"}},"required":["cod_istat"],"type":"object"},"name":"leggi_dati_comune"},{"description":"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.","inputSchema":{"additionalProperties":false,"properties":{"anno":{"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.","maximum":2100,"minimum":2000,"type":"integer"},"livello":{"description":"What to total: \"regione\" (one region), \"provincia\" (one province) or \"nazione\" (the whole of Italy, the sum of the regions).","enum":["regione","provincia","nazione"],"type":"string"},"nome":{"description":"Italian name of the region or province, in any case (\"Toscana\", \"Bolzano\", \"Monza e Brianza\"); required for regione and provincia, omitted for nazione.","maxLength":60,"minLength":2,"type":"string"}},"required":["livello"],"type":"object"},"name":"leggi_dati_territorio"},{"description":"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.","inputSchema":{"additionalProperties":false,"properties":{"cod_istat":{"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.","pattern":"^\\d{6}$","type":"string"}},"required":["cod_istat"],"type":"object"},"name":"leggi_previsioni_comune"},{"description":"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.","inputSchema":{"additionalProperties":false,"properties":{"a_anno":{"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.","maximum":2100,"minimum":2000,"type":"integer"},"cod_istat":{"description":"6-digit ISTAT code of the comune as a string, leading zeros kept (\"058091\" is Roma); it comes from cerca_comune.","pattern":"^\\d{6}$","type":"string"},"da_anno":{"description":"First year to include, e.g. 2015; default: the first year with data.","maximum":2100,"minimum":2000,"type":"integer"}},"required":["cod_istat"],"type":"object"},"name":"leggi_serie_comune"}]},"body_sha256":"cb5f6c672735f8dfd01c54dc74cb583664bc98a1122cb99cb5d5f87ab4448d16","prev_id":null,"leaf":"0x8080f8b3fb8ac88428a63b24cd766196930e872b6dccc6a5b2131b2b7cd7e721","leaf_text":"{\"body\":\"cb5f6c672735f8dfd01c54dc74cb583664bc98a1122cb99cb5d5f87ab4448d16\",\"id\":731861,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793154496227783,\"prev\":null,\"subject\":\"9010d007-0a8a-4683-92ed-02ebdd4d6e80\",\"subject_kind\":\"endpoint\"}","day":null,"proof":[]}