Skip to main content
Glama

Server Details

Sagre, feste e manifestazioni dei comuni italiani, ricavate ogni giorno dagli albi pretori.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.7% over 56 days
Last Tested
Transport
Streamable HTTP · MCP 2025-06-18
URL
ChatGPT
–
Claude
–

TDQS

A3.8/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct role: cerca_eventi searches events, comuni_coperti lists municipalities with IDs, and dettaglio_evento retrieves full event details by ID. The descriptions make the search-vs-detail boundary clear, and comuni_coperti is explicitly positioned as a helper for finding IDs.

Naming Consistency3/5

All names are lowercase snake_case and in Italian, which is readable. However, the pattern is not consistently verb_noun: cerca_eventi is verb+noun while comuni_coperti and dettaglio_evento are noun phrases, so the convention is mixed.

Tool Count4/5

Three tools is a compact but reasonable surface for a read-only event search service. It covers search, helper lookup, and detail retrieval without redundancy, though it sits at the low end of the typical 3-15 range.

Completeness4/5

For a read-only event discovery domain, the surface covers the core lifecycle: find municipalities, search events, and inspect an event's full details including source link. Minor gaps like explicit category/date filter tools or pagination controls may exist, but the essentials are present.

Available Tools

3 tools
cerca_eventiCerca eventi e sagre nei comuni italianiA
Read-onlyIdempotent
Inspect

Cerca sagre, feste patronali, fiere, mercatini, concerti, mostre e manifestazioni nei comuni italiani. I dati sono ricavati ogni giorno dagli atti pubblicati sugli albi pretori dei comuni (ordinanze, delibere, concessioni di suolo pubblico), quindi comprendono anche i paesi piccoli, che non stanno su nessun altro calendario. Ogni evento riporta il link alla propria scheda e alla fonte ufficiale.

NameRequiredDescriptionDefault
qNoRicerca testuale nel titolo e nella descrizione, minimo 3 caratteri.
alNoData massima di inizio, formato 'YYYY-MM-DD'.
dalNoData minima di inizio, formato 'YYYY-MM-DD'.
comuneNoIdentificativo del comune, in minuscolo e con i trattini (es. 'barolo', 'santo-stefano-belbo'). Usa comuni_coperti per trovarlo.
limiteNoQuanti eventi restituire, massimo 50.
regioneNoNome della regione. Valori: Sicilia, Piemonte, Valle d'Aosta/Vallée d'Aoste, Lombardia, Liguria, Trentino-Alto Adige/Südtirol, Umbria, Veneto, Emilia-Romagna, Toscana, Friuli-Venezia Giulia, Lazio, Marche, Campania, Puglia, Abruzzo, Basilicata, Calabria, Molise, Sardegna
categoriaNoFiltra per tipo di evento.

Output Schema

NameRequiredDescription
eventiYesLa pagina di risultati, lunga al massimo quanto `limite`.
totaleYesQuanti eventi rispondono ai criteri in tutto, anche oltre quelli riportati qui.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered; the description earns credit by adding real behavioral context beyond them: the index is rebuilt daily from municipal albi pretori acts, it covers small towns absent from other calendars, and every result carries links to its detail page and official source. Return-shape granularity is left to the output schema, which is fine.

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?

Three sentences, front-loaded with what is searched before the provenance justification, and no filler. The provenance sentence is longer than strictly necessary but carries genuine differentiating information.

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 full schema coverage, an output schema, and read-only annotations, the description supplies the one thing structured fields cannot: data provenance, update cadence, and rural coverage. A reader could still wonder about result ordering or pagination behavior beyond 'limite', but nothing essential to correct invocation is missing.

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

Parameters3/5

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

Schema description coverage is 100% with enums and format constraints already documented for all seven parameters, so the schema does the heavy lifting. The description adds no parameter-level meaning (e.g., how q interacts with categoria, or default result ordering), so the baseline 3 applies.

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?

States a specific verb (cerca) and a well-bounded resource, enumerating the event types covered (sagre, feste patronali, fiere, mercatini, concerti, mostre, manifestazioni) and the geographic scope (comuni italiani). It does not name or contrast itself with the siblings comuni_coperti or dettaglio_evento, though their purposes are clearly distinct, so it falls just short of the 5 bar.

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

Usage Guidelines2/5

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

There is no explicit when-to-use / when-not-to-use guidance and no mention of alternatives — the only routing hint ('usa comuni_coperti per trovarlo') lives in the schema's comune parameter, not the description. The provenance note explains what the data is, not when to reach for this tool versus dettaglio_evento.

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

comuni_copertiComuni coperti, con il loro identificativoA
Read-onlyIdempotent
Inspect

L'elenco dei comuni per cui abbiamo eventi, con il loro identificativo. Serve a trovare l'identificativo giusto prima di chiamare cerca_eventi.

NameRequiredDescriptionDefault
regioneNoLimita a una regione.

Output Schema

NameRequiredDescription
comuniYesAl massimo 500 comuni: senza il filtro regione la lista nazionale sarebbe di migliaia di righe.
totaleYesQuanti comuni hanno eventi in tutto, anche oltre quelli elencati qui.

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds useful scope information: the list contains only municipalities we have events for and includes identifiers. It does not over-explain, but it also does not add much behavioral depth beyond the annotations.

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

Conciseness5/5

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

Two short sentences with no filler. The first states what the tool returns, and the second explains why it mattersaren't used, each earning its place.

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?

The tool is a simple read-only list with one optional filter, and an output schema exists. The description gives enough context for an agent to know when and why to call it, and nothing important is missing.

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

Parameters3/5

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

The schema documents the single optional parameter `regione` with 100% coverage. The description provides no additional meaning beyond what the schema already states, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns the list of municipalities that have events, along with their identifierschers. It explicitly frames the purpose as a lookup step before calling cerca_eventi, which distinguishes it from the sibling event-oriented tools even without naming them.

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

Usage Guidelines4/5

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

The description says this tool is meant to be used before calling cerca_eventi, to find the correct identifier. This gives a clear contextual trigger, though it does not state explicit conditions for when not to use it. Given the tool's simple role, the guidance is adequate.

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

dettaglio_eventoScheda completa di un eventoA
Read-onlyIdempotent
Inspect

Tutti i dati di un evento a partire dal suo identificativo, compresi descrizione, informazioni pratiche, organizzatore, se l'ingresso e' libero o a pagamento e il link alla fonte ufficiale.

NameRequiredDescriptionDefault
idYesIdentificativo dell'evento, come restituito da cerca_eventi.

Output Schema

NameRequiredDescription
eventoYes

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld=false, so the safety profile is covered. The description adds useful content scope by naming the categories of data returned, though it says nothing about errors or missing events; an output schema exists so return values need no further explanation.

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?

One front-loaded sentence with zero filler: the action and key first, then the enumerated payload categories. Nothing redundant.

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?

For a single-id read tool with full schema coverage, complete annotations and an output schema, the description covers everything an agent needs to invoke it. Only the behavior on a non-existent id is left unaddressed.

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 a single parameter at 100% schema coverage, whose description already explains it is the id as returned by cerca_eventi. The tool description only restates 'a partire dal suo identificativo' without adding format or sourcing detail, so baseline 3 applies.

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 retrieval action (returning all data of an event) keyed on its identifier, and enumerates the payload contents (description, practical info, organizer, free/paid, official source link). This clearly separates it from the sibling cerca_eventi, which searches rather than fetches by id.

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 phrase 'a partire dal suo identificativo' implies a follow-up lookup after a search, but the description never states when to use this versus cerca_eventi or what happens with an unknown id. Usage is inferred rather than declared.

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. 2 tool updates
    • Changedcerca_eventi2 fields changed
      • addedOutput schema / properties / eventi / items / properties / ora_fine
        Added value: +{
        +  "description": "Orario di fine 'HH:MM' (24h, ora italiana), null se la fonte non lo dice.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / eventi / items / properties / ora_inizio
        Added value: +{
        +  "description": "Orario di inizio 'HH:MM' (24h, ora italiana). null se la fonte non lo dice: non vuol dire tutto il giorno.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
    • Changeddettaglio_evento2 fields changed
      • addedOutput schema / properties / evento / properties / ora_fine
        Added value: +{
        +  "description": "Orario di fine 'HH:MM' (24h, ora italiana), null se la fonte non lo dice.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / evento / properties / ora_inizio
        Added value: +{
        +  "description": "Orario di inizio 'HH:MM' (24h, ora italiana). null se la fonte non lo dice: non vuol dire tutto il giorno.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
  2. 3 tool updates
    • Changedcerca_eventi1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "eventi": {
        +      "description": "La pagina di risultati, lunga al massimo quanto `limite`.",
        +      "items": {
        +        "properties": {
        +          "biglietteria_url": {
        +            "description": "Dove si comprano i biglietti, solo se l'atto lo riportava.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "categoria": {
        +            "description": "Uno dei valori ammessi per il filtro categoria.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "comune": {
        +            "description": "Identificativo del comune, quello che vuole il filtro comune.",
        +            "type": "string"
        +          },
        +          "comune_nome": {
        +            "description": "Nome del comune per esteso.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "created_at": {
        +            "description": "ISO 8601 UTC.",
        +            "type": "string"
        +          },
        +          "data_fine": {
        +            "description": "Formato 'YYYY-MM-DD'. Uguale a data_inizio se l'evento dura un giorno.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "data_inizio": {
        +            "description": "Formato 'YYYY-MM-DD'.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "date_occorrenze": {
        +            "description": "Le singole date quando l'evento non occupa un intervallo pieno, per esempio tre domeniche di fila.",
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": [
        +              "array",
        +              "null"
        +            ]
        +          },
        +          "descrizione": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "fonte_permanente_url": {
        +            "description": "La nostra copia permanente dell'atto, che non scade.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "fonte_url": {
        +            "description": "L'atto sul portale del comune. Puo' sparire quando l'albo ruota.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "id": {
        +            "description": "Identificativo da passare a dettaglio_evento.",
        +            "type": "string"
        +          },
        +          "info_utili": {
        +            "description": "Note pratiche: orari, come arrivare, prenotazioni.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "ingresso": {
        +            "description": "Nullo quando l'atto non lo dichiara, ed e' il caso di gran lunga piu' frequente. Nullo NON vuol dire gratis: se manca, dillo, non dedurlo.",
        +            "enum": [
        +              "libero",
        +              "pagamento",
        +              null
        +            ],
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "lat": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "locandina_url": {
        +            "description": "La locandina, quando il comune ne ha pubblicata una.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "lon": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "luogo": {
        +            "description": "Indirizzo o luogo preciso, quando l'atto lo dice.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "maps_url": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "organizzatore_ente": {
        +            "description": "Chi organizza, quando e' un ente e non una persona.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "provincia": {
        +            "description": "Sigla della provincia.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "regione": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "stato_temporale": {
        +            "description": "Se e' in corso, in arrivo o concluso.",
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "titolo": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "updated_at": {
        +            "description": "ISO 8601 UTC.",
        +            "type": "string"
        +          },
        +          "url": {
        +            "description": "La pagina dell'evento sul nostro sito: e' questo il link da citare.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "comune",
        +          "url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "totale": {
        +      "description": "Quanti eventi rispondono ai criteri in tutto, anche oltre quelli riportati qui.",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "totale",
        +    "eventi"
        +  ],
        +  "type": "object"
        +}
    • Changedcomuni_coperti1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "comuni": {
        +      "description": "Al massimo 500 comuni: senza il filtro regione la lista nazionale sarebbe di migliaia di righe.",
        +      "items": {
        +        "properties": {
        +          "comune": {
        +            "description": "Identificativo da passare al filtro comune.",
        +            "type": "string"
        +          },
        +          "comune_nome": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "eventi": {
        +            "description": "Quanti eventi ha in catalogo.",
        +            "type": "integer"
        +          },
        +          "provincia": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "regione": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "comune",
        +          "eventi"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "totale": {
        +      "description": "Quanti comuni hanno eventi in tutto, anche oltre quelli elencati qui.",
        +      "type": "integer"
        +    }
        +  },
        +  "required": [
        +    "totale",
        +    "comuni"
        +  ],
        +  "type": "object"
        +}
    • Changeddettaglio_evento1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "properties": {
        +    "evento": {
        +      "properties": {
        +        "biglietteria_url": {
        +          "description": "Dove si comprano i biglietti, solo se l'atto lo riportava.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "categoria": {
        +          "description": "Uno dei valori ammessi per il filtro categoria.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "comune": {
        +          "description": "Identificativo del comune, quello che vuole il filtro comune.",
        +          "type": "string"
        +        },
        +        "comune_nome": {
        +          "description": "Nome del comune per esteso.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "created_at": {
        +          "description": "ISO 8601 UTC.",
        +          "type": "string"
        +        },
        +        "data_fine": {
        +          "description": "Formato 'YYYY-MM-DD'. Uguale a data_inizio se l'evento dura un giorno.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "data_inizio": {
        +          "description": "Formato 'YYYY-MM-DD'.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "date_occorrenze": {
        +          "description": "Le singole date quando l'evento non occupa un intervallo pieno, per esempio tre domeniche di fila.",
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": [
        +            "array",
        +            "null"
        +          ]
        +        },
        +        "descrizione": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "fonte_permanente_url": {
        +          "description": "La nostra copia permanente dell'atto, che non scade.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "fonte_url": {
        +          "description": "L'atto sul portale del comune. Puo' sparire quando l'albo ruota.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "id": {
        +          "description": "Identificativo da passare a dettaglio_evento.",
        +          "type": "string"
        +        },
        +        "info_utili": {
        +          "description": "Note pratiche: orari, come arrivare, prenotazioni.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "ingresso": {
        +          "description": "Nullo quando l'atto non lo dichiara, ed e' il caso di gran lunga piu' frequente. Nullo NON vuol dire gratis: se manca, dillo, non dedurlo.",
        +          "enum": [
        +            "libero",
        +            "pagamento",
        +            null
        +          ],
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "lat": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "locandina_url": {
        +          "description": "La locandina, quando il comune ne ha pubblicata una.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "lon": {
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "luogo": {
        +          "description": "Indirizzo o luogo preciso, quando l'atto lo dice.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "maps_url": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "organizzatore_ente": {
        +          "description": "Chi organizza, quando e' un ente e non una persona.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "provincia": {
        +          "description": "Sigla della provincia.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "regione": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "stato_temporale": {
        +          "description": "Se e' in corso, in arrivo o concluso.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "titolo": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "updated_at": {
        +          "description": "ISO 8601 UTC.",
        +          "type": "string"
        +        },
        +        "url": {
        +          "description": "La pagina dell'evento sul nostro sito: e' questo il link da citare.",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "id",
        +        "comune",
        +        "url"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "evento"
        +  ],
        +  "type": "object"
        +}
  3. 3 tool updates
    • First observedcerca_eventi
    • First observedcomuni_coperti
    • First observeddettaglio_evento

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources