Skip to main content
Glama

🏛️ MCP Banca Dati di Merito — Civile

Server MCP (Model Context Protocol) che permette a qualsiasi LLM o sistema compatibile di consultare direttamente la Banca Dati di Merito del Ministero della Giustizia — la banca dati gratuita che raccoglie sentenze, decreti e ordinanze civili dei tribunali italiani.

Compatibile con Claude Desktop, Cursor, Windsurf, Continue, Zed e qualsiasi altro client che supporta il protocollo MCP.

Una volta configurato, puoi chiedere al tuo assistente AI:

"Cerca sentenze del Tribunale di Bologna sulla locazione abitativa degli ultimi due anni"

"Leggi il testo integrale di questa sentenza e dimmi se è rilevante per il mio caso"

"Trova abstract sulla responsabilità medica con precedenti conformi"

L'assistente cercherà, leggerà e analizzerà i provvedimenti per te, direttamente in chat.


Cosa serve prima di iniziare

  1. Windows 10/11 (il progetto è testato su Windows — funziona anche su macOS)

  2. Un client MCP installato — es. Claude Desktop, Cursor, Windsurf o altro

  3. Node.js 20 o superiore — scaricalo da nodejs.org (scegli la versione "LTS")

  4. La tua CIE (Carta d'Identità Elettronica) fisica con PIN

  5. L'app CieID installata sul tuo smartphone (App Store / Google Play)

  6. Un lettore NFC sul telefono (tutti gli smartphone moderni ce l'hanno)


Related MCP server: gov-it-legal-mcp

Installazione

1. Scarica il progetto

Apri un terminale PowerShell: premi Win + R, digita powershell e premi Invio (oppure usa Terminale Windows se lo hai installato). Poi incolla questi comandi uno alla volta:

cd $HOME\Documents        # su macOS: cd ~/Documents
git clone https://github.com/avvocati-e-mac/mcp-bdm-civile.git
cd mcp-bdm-civile

Se preferisci il prompt dei comandi (CMD), usa cd %USERPROFILE%\Documents al posto di cd $HOME\Documents.

2. Installa le dipendenze

Sempre nel Terminale, nella cartella del progetto:

npm install
npx playwright install chromium

Questo scarica le librerie necessarie e il browser interno usato dallo strumento. Ci vuole qualche minuto.

3. Esegui il login con la CIE

Questo passaggio va fatto una sola volta (la sessione dura circa un anno):

node src/auth/save-session.js

Si aprirà un browser. Segui questi passi:

  1. Clicca "Accedi" nella homepage della Banca Dati

  2. Seleziona "Entra con CIE"

  3. Apparirà un QR code — apri l'app CieID sul telefono e scansionalo

  4. Avvicina la CIE al telefono (NFC) e inserisci il PIN nell'app

  5. Aspetta che il browser torni sulla homepage della Banca Dati

  6. Torna nel Terminale e premi Invio

Se vedi ✅ Sessione verificata, hai completato il login con successo.

4. Configura il tuo client MCP

Trova il percorso assoluto del file src/server.js nella cartella del progetto.

Su Windows (PowerShell) incolla questo comando:

(Resolve-Path .\src\server.js).Path

In alternativa, apri la cartella del progetto in Esplora file e copia il percorso dalla barra degli indirizzi, poi aggiungi \src\server.js alla fine.

Su macOS (Terminale) incolla invece:

echo "$(pwd)/src/server.js"

Copia l'output (es. C:\Users\tuonome\mcp-bdm-civile\src\server.js su Windows, oppure /Users/tuonome/Documents/mcp-bdm-civile/src/server.js su macOS).

Poi aggiungi il server alla configurazione del tuo client. Su Windows il blocco sarà così:

{
  "mcpServers": {
    "bdm-civile": {
      "command": "node",
      "args": ["C:\\Users\\tuonome\\mcp-bdm-civile\\src\\server.js"]
    }
  }
}

Su macOS invece:

{
  "mcpServers": {
    "bdm-civile": {
      "command": "node",
      "args": ["/Users/tuonome/Documents/mcp-bdm-civile/src/server.js"]
    }
  }
}

⚠️ Sostituisci il percorso con quello copiato prima.

Dove si trova il file di configurazione a seconda del client:

Client

Windows

macOS

Claude Desktop

%APPDATA%\Claude\claude_desktop_config.json (cioè C:\Users\<utente>\AppData\Roaming\Claude\claude_desktop_config.json)

~/Library/Application Support/Claude/claude_desktop_config.json

Cursor

.cursor\mcp.json nella cartella del progetto, oppure %USERPROFILE%\.cursor\mcp.json globale

.cursor/mcp.json nella cartella del progetto, oppure ~/.cursor/mcp.json globale

Windsurf

%USERPROFILE%\.codeium\windsurf\mcp_config.json

~/.codeium/windsurf/mcp_config.json

Continue

.continue\config.json nella cartella del progetto

.continue/config.json nella cartella del progetto

Altri

Consulta la documentazione del tuo client per la posizione del file MCP

Consulta la documentazione del tuo client per la posizione del file MCP

Se nel file c'era già altro contenuto (altri server MCP), aggiungi solo la parte "bdm-civile": { ... } dentro "mcpServers".

5. Riavvia il client

Chiudi e riapri il tuo client MCP. Gli strumenti della Banca Dati di Merito saranno disponibili nell'interfaccia.


Come si usa

Chiedi normalmente al tuo assistente AI, in italiano. Alcuni esempi:

Ricerca provvedimenti:

  • "Cerca sentenze sulla locazione commerciale del distretto di Milano"

  • "Trova ordinanze del 2024 del Tribunale di Roma in materia di separazione"

  • "Cerca provvedimenti che citano l'articolo 1453 del codice civile"

Lettura provvedimenti:

  • "Leggi il testo integrale di questa sentenza: [incolla URL dalla BDP]"

  • "Dimmi i metadati di questo provvedimento: giudice, materia, parole chiave"

Abstract e precedenti:

  • "Cerca abstract sulla responsabilità del medico"

  • "Ci sono precedenti conformi per questo abstract?"

Navigazione archivio:

  • "Mostrami i tribunali del distretto di Napoli presenti in archivio"

  • "Quali materie sono disponibili per il Tribunale di Torino?"

Utilità:

  • "La sessione della Banca Dati è ancora attiva?"

  • "Elenca tutte le materie disponibili nella BDP"


Quando la sessione scade

La sessione CIE dura circa un anno. Quando scade, l'assistente risponderà con un messaggio del tipo:

Sessione CIE scaduta. Ferma il server, esegui: npm run save-session, poi riavvia.

Per rinnovarla, apri un terminale (PowerShell o Terminale Windows) nella cartella del progetto e ripeti il login:

cd $HOME\Documents\mcp-bdm-civile     # su macOS: cd ~/Documents/mcp-bdm-civile
node src/auth/save-session.js

Poi riavvia il client MCP.


Domande frequenti

Il browser si apre quando uso il server — è normale? Sì. Il server usa un browser interno in background per navigare la BDP. Alla prima chiamata dopo l'avvio del client, il browser si inizializza e potresti vederlo comparire brevemente nella taskbar (barra delle applicazioni) o nel Dock.

I miei dati sono al sicuro? Il server accede alla BDP usando le tue credenziali CIE, esattamente come faresti tu nel browser. Non invia nulla a server esterni — tutto rimane sul tuo computer e sulla BDP del Ministero.

Posso usarlo senza CIE? No. La BDP richiede autenticazione con CIE livello 3. Senza login non è possibile accedere ai provvedimenti.

Funziona su Windows? Sì, il progetto è testato su Windows 10/11 (e funziona anche su macOS).

Il client non trova i tool della BDP dopo la configurazione — cosa faccio? Verifica che il percorso nel file di configurazione sia corretto e che il file sia salvato nella posizione giusta per il tuo client. Poi riavvia completamente il client.


Struttura del progetto

mcp-bdm-civile/
├── src/
│   ├── server.js              punto di ingresso del server MCP
│   ├── auth/
│   │   ├── save-session.js    script di login CIE
│   │   └── session-manager.js carica la sessione salvata
│   ├── browser/               gestione del browser interno
│   └── tools/                 gli 11 strumenti disponibili
├── spec/                      documentazione tecnica dei selettori DOM
├── sessioni/                  diario delle sessioni di sviluppo
├── CLAUDE.md                  istruzioni tecniche per lo sviluppo
└── GUIDA.md                   guida tecnica all'architettura

Licenza e crediti

Sviluppato da @avvocati-e-mac.

I dati provengono dalla Banca Dati di Merito del Ministero della Giustizia — accesso gratuito previa autenticazione CIE.

Available Tools

11 tools
cerca_abstractCerca Abstract / Massime BDPB
Read-only

Cerca abstract/massime redazionali nella Banca Dati del Merito del Ministero della Giustizia

ParametersJSON Schema
NameRequiredDescriptionDefault
annoNo
tipoNoTUTTI
queryNo
data_aNo
numeroNo
data_daNo
materiaNo
distrettoNo
full_textNo
tipo_dataNoDATA
anno_ruoloNo
sort_fieldNodata
sort_orderNodesc
max_resultsNo
numero_ruoloNo
tipo_ricercaNoTUTTE_LE_PAROLE
parola_chiaveNo
nelle_cartelleNo
testo_abstractNo
titolo_abstractNo
riferimento_normativoNo

TDQS

B3.1/5.0
Behavior2/5

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

The annotations already declare readOnlyHint=true, and the description's 'Cerca' (search) is consistent. However, the description adds no behavioral context beyond what the annotation and tool name imply, such as result limits, default sorting, pagination, or any search idiosyncrasies.

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?

The description is a single, direct Italian sentence with no redundancy. It front-loads the verb and target, making it immediately clear what the tool does.

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

Completeness2/5

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

For a tool with 21 optional parameters, no output schema, and no parameter descriptions, a one-line description is insufficient. It fails to mention how filters interact, default behavior, or what the response contains, leaving significant gaps for an agent to navigate.

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

Parameters2/5

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

With 21 parameters and 0% schema description coverage, the description does nothing to explain the meaning or usage of parameters like tipo_ricerca, sort_field, or max_results. It only identifies the general search target, leaving agents to infer parameter semantics from names alone.

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 uses a specific verb ('Cerca' / 'search') and a clear resource ('abstract/massime redazionali' / editorial abstracts/headnotes) in the context of the Merit Database of the Ministry of Justice. This clearly distinguishes the tool from sibling search tools such as cerca_provvedimenti, which targets rulings rather than abstracts.

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?

The description provides no guidance on when to use this tool versus alternatives like cerca_provvedimenti or leggi_abstract. There are no usage scenarios, exclusions, or mentions of how this search differs from searching full court decisions.

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

cerca_provvedimentiCerca Provvedimenti BDPB
Read-only

Cerca provvedimenti (sentenze, decreti, ordinanze) nella Banca Dati del Merito del Ministero della Giustizia

ParametersJSON Schema
NameRequiredDescriptionDefault
annoNo
tipoNoTUTTI
queryNo
data_aNo
numeroNo
data_daNo
materiaNo
distrettoNo
full_textNo
tipo_dataNoDATA
anno_ruoloNo
sort_fieldNodata
sort_orderNodesc
max_resultsNo
numero_ruoloNo
tipo_ricercaNoTUTTE_LE_PAROLE
parola_chiaveNo
nelle_cartelleNo
riferimento_normativoNo

TDQS

B3.1/5.0
Behavior2/5

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

The readOnlyHint annotation already declares this as a safe read operation. The description adds no behavioral traits beyond that, such as scoping constraints (e.g., date ranges, filtering), pagination behavior, or authentication requirements. It merely repeats the resource scope.

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?

The description is a single sentence that immediately states the action and resource without redundancy. It is front-loaded and contains no filler, making it maximally concise for its limited content.

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

Completeness2/5

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

Given the high complexity (19 parameters) and absence of an output schema, the description is far too thin. It does not explain search behavior, result shape, default sorting, or how to combine filters. A tool of this complexity requires much more contextual guidance than one line.

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

Parameters1/5

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

With 19 parameters and 0% schema description coverage, the description carries the full burden of explaining parameters. It only hints at the 'tipo' parameter by listing 'sentenze, decreti, ordinanze', but does not explain the meanings of 'query', 'data_da', 'sort_field', or other fields. This is inadequate for correct invocation.

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 identifies the tool as a search operation for provvedimenti (sentenze, decreti, ordinanze) within a specific database (Banca Dati del Merito del Ministero della Giustizia). The verb 'Cerca' plus the resource and subtypes distinguishes it from sibling search tools like 'cerca_abstract'.

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 description implies usage for finding judicial decisions but provides no explicit guidance on when to use this tool versus alternatives such as 'cerca_abstract' or 'naviga_archivio'. No exclusions or contextual cues are given.

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

leggi_abstractLeggi Testo AbstractA
Read-onlyIdempotent

Legge testo completo di un abstract BDP con precedenti conformi e difformi

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL della pagina dettaglio (da cerca_provvedimenti o cerca_abstract)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare the tool as read-only and idempotent, and the description aligns by saying 'Legge' (reads). The description adds that it reads the full text of an abstract including precedents, which is useful content-wise, but it does not disclose additional behavioral traits such as return format, authentication, or error handling. Since annotations already cover the safety profile, the added value is moderate.

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?

The description is a single, concise sentence that front-loads the verb and clearly states the resource and its special features. No filler or redundant information is present.

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 one-parameter read-only tool with no output schema, the description adequately conveys that the tool retrieves the full text of an abstract, including precedents, which effectively describes the return value. It lacks explicit details about output format or error behavior, but these are not critical for a simple retrieval task. The context is complete enough for an agent to understand the tool's role.

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 has 100% description coverage for the single 'url' parameter, clearly stating it is the detail page URL from specific search tools. The tool description adds no additional parameter explanation. With high schema coverage, 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 uses a specific verb 'Legge' (reads) and a clear resource: the full text of a BDP abstract, further specifying that it includes conforming and non-conforming precedents. This distinguishes it from sibling tools like leggi_dettaglio_provvedimento and leggi_testo_provvedimento, which target different resources.

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 description does not explicitly state when to use this tool versus alternatives, nor does it mention exclusions. However, the input schema for the 'url' parameter indicates that the URL comes from cerca_provvedimenti or cerca_abstract, which implies a search-and-read workflow. This gives a clear context but no explicit comparison to other tools.

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

leggi_dettaglio_provvedimentoLeggi Dettaglio ProvvedimentoA
Read-onlyIdempotent

Legge metadati completi, timeline gradi di giudizio e abstract collegati di un provvedimento BDP

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL della pagina dettaglio (da cerca_provvedimenti o cerca_abstract)

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint, and the description's 'Legge' aligns with these. The description adds that three data types are retrieved (metadata, timeline, abstracts), but does not disclose potential behaviors like pagination, error conditions, or rate limits. With annotations covering safety, this is acceptable but not rich.

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?

The description is a single, front-loaded sentence that lists the key output components without repetition or fluff. It is concise and immediately comprehensible to a domain-aware agent.

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 one parameter and no output schema, the description adequately outlines the expected data (metadata, timeline, abstracts). It does not detail the exact return structure, but for a simple read tool this provides sufficient context for the agent to understand the tool's role.

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 coverage is 100% and the parameter description already explains that the URL must come from search tools. The tool description adds no extra meaning about the parameter, but the baseline for high schema coverage is met.

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 reads ('Legge') complete metadata, judgment timeline, and linked abstracts for a BDP provision. This specific verb+resource scope differentiates it from siblings like leggi_abstract and ottieni_timeline, which focus on individual components.

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 description implies use when a comprehensive detail view is needed, but does not explicitly state when to use this tool versus alternatives. The parameter schema adds context that the URL comes from cerca_provvedimenti or cerca_abstract, but the main description lacks direct usage guidance.

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

leggi_testo_provvedimentoLeggi Testo Integrale ProvvedimentoA
Read-onlyIdempotent

Estrae il testo integrale anonimizzato di un provvedimento aprendolo dalla pagina dettaglio e cliccando "Mostra". Il testo completo (tutte le pagine) è nel DOM in .visually-hidden dentro #document-modal.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL della pagina dettaglio (da cerca_provvedimenti o cerca_abstract)

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is clear. The description adds valuable behavioral details beyond those annotations: it reveals that the tool navigates to the detail page, clicks 'Mostra', and that the full text is located in the DOM under '.visually-hidden' inside '#document-modal'. This gives concrete expectations of tool behavior.

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?

The description is two sentences long and front-loaded with the primary purpose. The first sentence states exactly what the tool does, and the second provides a precise implementation detail. Every sentence earns its place without unnecessary fluff.

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?

Given the simple nature of the tool (one parameter, no output schema), the description is quite complete: it explains what is extracted, where it comes from, and where the data resides in the DOM. It stops short of explicitly describing the return format or how the agent should consume the extracted text, but for a one-parameter read-only extraction tool this is a minor gap.

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 the single 'url' parameter clearly described as the detail page URL from 'cerca_provvedimenti' or 'cerca_abstract'. The description does not add any extra parameter-level meaning beyond what the schema already provides, so the baseline score 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 extracts the full anonymized text of a provision ('Estrae il testo integrale anonimizzato di un provvedimento'), using a specific verb and resource. It distinguishes itself from siblings like 'leggi_abstract' and 'leggi_dettaglio_provvedimento' by emphasizing complete text extraction via the detail page.

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 description provides procedural guidance ('aprendolo dalla pagina dettaglio e cliccando "Mostra"') and implies the tool is used when full text is needed, but it does not explicitly state when to use this tool versus alternatives. There is no mention of exclusions or other tool recommendations.

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

ottieni_distrettiOttieni Distretti GiudiziariA
Read-onlyIdempotent

Estrae i distretti giudiziari disponibili dal select della ricerca BDP (live, non hardcoded)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
distrettiYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, so the agent knows it's a safe read operation. The description adds valuable context by stating the data is 'live, non hardcoded', which informs the agent that results are dynamically fetched and not a static list. This goes 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?

The description is a single, concise sentence that immediately states the tool's action and resource. Every word earns its place; it is front-loaded with the purpose and includes the key behavioral note about live data.

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

Completeness5/5

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

For a simple, zero-parameter tool with an output schema and safety annotations, the description is sufficient. It clearly communicates what the tool does, the source of the data, and the live nature, leaving no critical gaps.

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

Parameters4/5

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

The input schema is empty with zero parameters, so the baseline is 4. The description naturally does not add parameter details since there are none, and it correctly implies no inputs are required.

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 verb 'estrae' (extracts) and the resource 'distretti giudiziari' (judicial districts), and further specifies the source as the BDP search select. This distinctively identifies the tool's purpose and differentiates it from sibling tools like ottieni_materie.

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 description provides context (it's for the BDP search select) and notes that data is live rather than hardcoded, implying it is the appropriate tool for fetching current district options. However, it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions.

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

ottieni_materieOttieni Materie DisponibiliA
Read-onlyIdempotent

Estrae le materie disponibili dal select della ricerca BDP (live, non hardcoded)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
materieYes

TDQS

A4.2/5.0
Behavior4/5

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

The annotations already declare readOnlyHint and idempotentHint, indicating a safe, non-mutating operation. The description adds useful behavioral context: 'live, non hardcoded' means the data is dynamically extracted from the actual select, not from a static list. This gives the agent insight into the data source and freshness 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?

The description is a single, front-loaded sentence that clearly states the action and resource: 'Estrae le materie disponibili dal select della ricerca BDP'. There is no filler or redundant information. It is appropriately sized for the tool's simplicity.

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?

The tool has no parameters, read-only/idempotent annotations, and an output schema exists, so return values are covered. The description explains the core function and adds the 'live' qualifier. For a simple retrieval tool, this is sufficiently complete, though it does not describe exact usage context relative to the search process.

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

Parameters4/5

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

This tool has zero parameters, so the input schema is fully covered by default. The description correctly does not need to explain parameter semantics. Per the baseline for 0 params, a score of 4 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 uses the specific verb 'Estrae' (extracts) with a clear resource: 'le materie disponibili dal select della ricerca BDP' (available subjects from the BDP search select). It distinguishes itself from siblings like 'ottieni_distretti' by indicating it returns subject data. The additional 'live, non hardcoded' further clarifies the data source.

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 description implies usage for retrieving the subjects available in the BDP search form, but does not explicitly state when to use this tool versus alternatives like 'ottieni_distretti' or 'ottieni_timeline'. No exclusions or conditions are mentioned. The context is clear, but there is no explicit guidance on alternatives.

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

ottieni_precedentiOttieni Precedenti Conformi/DifformiA
Read-onlyIdempotent

Estrae la lista di precedenti conformi e/o difformi dalla pagina dettaglio di un abstract BDP

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesURL pagina dettaglio abstract
tipoNoentrambi

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint, so the safety profile is clear. The description adds that the tool works on the detail page and supports conformi/difformi types, but does not disclose further behavior such as output format, pagination, or error conditions. This is adequate but not rich.

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?

The description is a single, front-loaded sentence that states the action, object, and source without any filler. Every word adds value.

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 simple read-only extraction tool with clear annotations and only two parameters, the description is largely complete. It could optionally mention the return structure or prerequisites, but the detail-page source and type selection are communicated. No output schema exists, yet the description's simplicity suffices.

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 50%: url has a description, tipo has an enum but no text description. The description and title clarify the meaning of tipo via 'conformi e/o difformi', which partially compensates. However, the description does not explicitly map parameters to their roles, so it stays at baseline.

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 uses a specific verb 'Estrae' (extracts) with a clear resource 'lista di precedenti' and scopes the operation to 'pagina dettaglio di un abstract BDP'. This clearly distinguishes it from sibling tools like leggi_abstract or ottieni_timeline, none of which mention precedents.

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 description implies when to use the tool (when needing precedents from an abstract detail page) but does not explicitly state alternatives or exclusion criteria. It lacks a 'when not to use' or reference to sibling tools, so usage guidance is only implicit.

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

ottieni_timelineOttieni Timeline Gradi di GiudizioA
Read-onlyIdempotent

Estrae la catena dei gradi di giudizio dalla pagina dettaglio di un provvedimento BDP

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

TDQS

A4/5.0
Behavior3/5

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

Annotations (readOnlyHint=true, idempotentHint=true) already cover safety and idempotency. The description adds context about operating on a page detail but does not disclose additional behavior such as error handling or authentication needs.

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?

The description is a single, front-loaded sentence that directly states the purpose with no unnecessary words or duplication.

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 simple tool with one parameter, read-only/it idempotent annotations, and no output schema, the description provides the essential purpose and input context. The output concept ('catena dei gradi di giudizio') is implied but not detailed in structure, which is acceptable for this simplicity.

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

Parameters4/5

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

The input schema has only 'url' with format uri and 0% description coverage. The description compensates by specifying that the URL should point to the detail page of a BDP provision, adding meaningful semantic context to the parameter.

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 specific action (Estrae/extracts) and resource (catena dei gradi di giudizio/chain of judgment degrees) from a provision detail page. It distinguishes itself from siblings like leggi_dettaglio_provvedimento (full detail) and cerca_provvedimenti (search).

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 description implies usage by explaining what the tool does but does not explicitly state when to use it over alternatives or provide exclusions. There is no direct comparison to sibling tools.

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

verifica_sessioneVerifica Sessione CIEA
Read-only

Verifica se la sessione CIE è ancora attiva navigando la BDP

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
validaYes
messaggioYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, and idempotentHint=false. The description adds that the verification is performed 'navigando la BDP,' which clarifies the operation is a navigation (likely a read). It does not contradict the annotations. However, it does not provide additional context about side effects, authentication, or what 'BDP' entails, so it adds minimal value 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?

The description is a single, concise sentence that is front-loaded with the action and resource. It contains no filler or redundant information, and it fully fits in one line. Every word adds value.

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?

Given the tool's simplicity (no parameters, output schema exists), the description is sufficiently complete. It conveys what the tool does and how. It does not explain acronyms like BDP or what happens on session expiry, but with an output schema provided and annotations covering safety, these are minor omissions. It is adequate for the tool's scope.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. There are no parameters to describe, and the description does not need to compensate for schema gaps. The mention of 'navigando la BDP' is a behavioral action, not a parameter, so the score aligns with the zero-param baseline.

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's purpose: to verify if the CIE session is still active. It uses a specific verb ('verifica') and resource ('sessione CIE'), and the method ('navigando la BDP') adds distinctiveness. None of the sibling tools perform a session check, so it is well differentiated.

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 description implies usage: when you need to confirm an active CIE session by navigating the BDP. It does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. The guidance is limited to the implication that this is a session verification step.

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

TDQS

A4/5.0
Disambiguation5/5

Each tool targets a distinct resource or action: searching decisions vs. abstracts, reading metadata vs. full text, extracting timelines vs. precedents. The descriptions clearly separate these purposes, leaving no ambiguity for an agent.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in Italian (cerca, leggi, naviga, ottieni, verifica). The style is uniform with underscores, and even longer names maintain the same structure.

Tool Count5/5

With 11 tools, the server is well-scoped for a legal research domain. Each tool serves a clear function, and the count is neither too sparse nor overwhelming.

Completeness5/5

The toolset covers the full workflow: searching, reading metadata and full texts, extracting related legal context (timeline, precedents), navigating archives, and verifying session status. No obvious gaps for the intended read-only BDP access.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/CarlSamma/mcp-bdm'

If you have feedback or need assistance with the MCP directory API, please join our Discord server