Skip to main content
Glama
italia

Schema.gov.it MCP Server

Official
by italia

Ask DeepWiki Docker ghcr.io

Schema.gov.it MCP Server

Un server MCP (Model Context Protocol) avanzato per interagire semanticamente con il catalogo dati di schema.gov.it.

Questo server permette agli agenti AI (come Claude Code) di esplorare ontologie, analizzare la copertura dei dati, verificare la qualità e scoprire connessioni tra concetti in modo intelligente.

Strumenti disponibili

Il server espone 47 strumenti organizzati in 12 categorie:

1. Operazioni Base

  • query_sparql: Esegue una query SPARQL raw con contesto source. Default: remoto schema.gov.it; supporta anche source="local" con file_path, content o upload_id. source="hybrid" non e' ancora supportato per SPARQL raw.

  • explore_catalog: Elenca i grafi e le ontologie disponibili nell'endpoint.

  • explore_classes: Elenca le classi disponibili con conteggio istanze, con filtro opzionale.

2. Analytics Semantiche

  • check_coverage: Analizza la copertura di una specifica classe/proprietà, o statistiche globali.

  • check_quality: Trova problemi di qualità (label o descrizioni mancanti).

  • check_overlaps: Identifica sovrapposizioni (stesse label) o mapping espliciti.

3. Modello Dati (Ontologie)

  • list_ontologies: Elenca le ontologie disponibili (es. Città, Servizi Pubblici).

  • explore_ontology: Mostra Classi e Proprietà definite in una specifica ontologia.

4. Vocabolari Controllati (Reference Data)

  • list_vocabularies: Elenca i vocabolari controllati disponibili (ConceptScheme) con conteggio istanze.

  • browse_vocabulary: Naviga un vocabolario con paginazione ed e' il default consigliato quando conosci gia' il ConceptScheme. Supporta keyword e lang.

  • search_in_vocabulary: Cerca concetti dentro un vocabolario specifico per label; utile quando vuoi una ricerca diretta senza scorrere le pagine. Supporta lang.

  • navigate_skos_hierarchy: Naviga la gerarchia skos:broader/skos:narrower a partire da un concetto, con direction e depth.

5. Cataloghi e Dataset (Dati)

  • list_datasets: Elenca i dataset DCAT-AP_IT disponibili.

  • explore_dataset: Mostra dettagli e distribuzioni di un dataset.

  • preview_distribution: Scarica e mostra le prime righe di una distribuzione CSV/JSON.

Nota: questi tool restano utili, ma su schema.gov.it sono spesso secondari. Il catalogo contiene soprattutto asset semantici pubblicati come dataset DCAT-AP_IT, ad esempio ontologie, vocabolari controllati e relative distribuzioni. Per esplorare schema.gov.it conviene di norma partire da ontologie, vocabolari, classi, proprietà e query SPARQL; i tool dataset sono più indicati per cataloghi esterni o per casi DCAT-AP_IT specifici.

6. Intelligence (Avanzato)

  • search_concepts: Ricerca fuzzy. Trova concetti (es. "Scuola") senza conoscere l'URI esatto; spesso e' il primo passo prima di inspect_concept o get_property_details. Supporta lang per ridurre duplicati it/en.

  • inspect_concept: Deep Dive. Ottiene in un colpo solo definizione, gerarchia, usage stats e vicini di un concetto. Supporta source="schema" (default), source="local" e source="hybrid" per usare un'ontologia locale come base con arricchimento mirato da schema.gov.it, oltre a lang per filtrare le label.

  • find_relations: Pathfinding. Scopre come due concetti sono collegati; supporta max_hops fino a 3 con flag paths_truncated.

  • suggest_improvements: Euristiche per trovare anomalie strutturali nell'ontologia (classi orfane, cicli, proprietà senza dominio/range, classi molto popolose senza ConceptScheme).

  • describe_resource: CBD. Ottiene tutte le triple di una risorsa (Concise Bounded Description).

7. Proprieta e Relazioni

  • list_properties: Elenca ObjectProperty e DatatypeProperty con dominio e range.

  • get_property_details: Ottiene dettagli completi di una proprieta. Supporta source="schema" (default), source="local" e source="hybrid"; in modalita ibrida arricchisce domini/range e super-proprieta mancanti da schema.gov.it.

  • list_instances_of_class: Elenca le istanze di una classe presente nel catalogo.

  • find_recommended_scheme_for_property: Suggerisce il ConceptScheme più adatto per i valori controllati di una proprietà.

8. Dati Geografici (Italia)

  • list_municipalities: Elenca i comuni italiani con codici ISTAT e Belfiore, con filtro per nome e parametro lang.

  • list_provinces: Elenca le province italiane con sigla automobilistica e codice metro, con parametro lang.

  • list_identifiers: Esplora gli identificatori CLV (Codice Catastale, Sigla Automobilistica, ecc.).

  • resolve_territorial_uri: Risolve codici territoriali italiani verso URI canonici del catalogo.

9. Endpoint SPARQL Esterni (linked data)

  • recommend_external_endpoints: Restituisce una short list curata di endpoint SPARQL pubblici utili da usare insieme a schema.gov.it.

  • list_linked_endpoints: Scopre gli endpoint SPARQL collegati al catalogo via dcat:DataService.

  • query_external_endpoint: Esegue una query SPARQL su qualsiasi endpoint HTTPS pubblico esterno. Non usarlo per schema.gov.it: in quel caso usa query_sparql.

  • find_external_alignments: Trova i mapping verso risorse esterne (Eurostat, DBpedia, ecc.).

  • explore_external_endpoint: Esplora la struttura di un endpoint esterno (classi e conteggi).

10. Ontologia Locale

  • inspect_local_ontology: Carica e riassume un'ontologia RDF/OWL disponibile al server via file_path, contenuto inline o upload_id. Attenzione: file_path indica sempre un path leggibile dal server MCP, non dal laptop dell'utente.

  • inspect_local_concept: Deep dive su una classe (locale o caricata). Tool legacy/compatibile: per i nuovi flussi puoi anche usare inspect_concept con source="local" o source="hybrid".

  • inspect_local_property: Deep dive su una proprietà (locale o caricata). Tool legacy/compatibile: per i nuovi flussi puoi anche usare get_property_details con source="local" o source="hybrid". Espone separatamente: assertedDomain/assertedRange (dichiarati nel file), inheritedDomain/inheritedRange (da super-proprietà via rdfs:subPropertyOf+, con indicazione dell'antenato), effectiveDomain/effectiveRange (unione). Per super-proprietà non presenti nel file locale (es. l0:name, l0:description da ontologie importate), interroga automaticamente schema.gov.it come fallback. Ogni super-proprietà è marcata con source local | remote | not-found. Include nota sul limite Unicode nei nomi locali SPARQL con oxigraph.

  • query_local_ontology: Esegue una query SPARQL SELECT su un'ontologia accessibile dal server o caricata prima via POST /upload. Usalo solo per query custom; per profili standard di concetti/proprieta usa i tool inspect_local_*.

  • compare_local_with_remote: Confronta le classi/proprietà definite in un'ontologia accessibile dal server o via upload_id con quelle presenti in schema.gov.it — utile per scoprire cosa riusare o allineare.

  • query_uploaded_store: Esegue query SPARQL SELECT su uno store temporaneo creato via POST /upload. Tool legacy: per i nuovi flussi e' preferibile query_local_ontology con upload_id.

11. Meta-Ottimizzazione

  • suggest_new_tools: Analizza i log delle query RAW e suggerisce nuovi tool specializzati in base all'utilizzo reale.

  • analyze_usage: Analizza i log interni per identificare pattern, errori e query frequenti.

12. Open Knowledge Graphs (OKG)

Integrazione con api.openknowledgegraphs.com — catalogo di oltre 1.800 ontologie, vocabolari, tassonomie e strumenti semantici con metadati da Wikidata. Tutti i dati sono CC0, nessuna autenticazione richiesta.

  • list_okg_categories: Recupera a runtime le categorie tematiche disponibili nel catalogo OKG (le categorie sono scaricate dinamicamente da api.openknowledgegraphs.com e messe in cache).

  • search_okg_resources: Cerca ontologie, vocabolari e tassonomie nel catalogo OKG per parola chiave e/o categoria tematica.

  • find_okg_alignments: Dato un URI di schema.gov.it, trova le risorse OKG correlate: prima cerca allineamenti Wikidata già presenti nel catalogo (owl:sameAs, skos:exactMatch), poi usa il Wikidata ID come ponte verso OKG per identificare corrispondenze internazionali confermate.

  • find_semantic_software: Cerca strumenti software semantici nel catalogo OKG (editor di ontologie, motori SPARQL, convertitori RDF, reasoner, ecc.).

  • compare_coverage_with_okg: Gap analysis per dominio: confronta le risorse di schema.gov.it con il catalogo OKG internazionale, classificando le risorse come "coperte" (già collegate via Wikidata) o "gap" (non ancora presenti in schema.gov.it).

Related MCP server: OntoPortal MCP Server

Scelta Rapida Dei Tool

Se vuoi fare X

Tool consigliato

Cercare un URI senza conoscerlo

search_concepts

Profilare un concetto gia' presente in schema.gov.it

inspect_concept

Ottenere il dump RDF grezzo di una risorsa remota

describe_resource

Profilare una proprieta gia' presente in schema.gov.it

get_property_details

Fare una query custom su schema.gov.it

query_sparql

Fare una query custom su un endpoint SPARQL esterno

query_external_endpoint

Esplorare un vocabolario noto con paginazione

browse_vocabulary

Riassumere un'ontologia locale o caricata

inspect_local_ontology

Profilare un concetto in un'ontologia locale/uploaded

inspect_local_concept

Profilare una proprieta in un'ontologia locale/uploaded

inspect_local_property

Fare una query custom su un'ontologia locale/uploaded

query_local_ontology

Caricare un file che il server non puo' leggere direttamente

get_upload_instructions


Installazione & Uso

1. Tramite Docker (Consigliato per uso remoto/condiviso)

Il server può essere eseguito come container Docker con trasporto HTTP/SSE, rendendolo accessibile via URL da qualsiasi client MCP.

Avvio rapido con Docker Compose (immagine remota da GHCR)

docker compose up -d mcp

Per default, questo usa l'immagine pubblicata su ghcr.io/italia/dati-semantic-mcp:latest e la aggiorna automaticamente prima dell'avvio.

Con il file docker-compose.yaml il server sarà disponibile su http://localhost:8088/mcp. I log vengono salvati nella cartella ./logs/.

Build locale esplicita con Docker Compose

Se vuoi costruire l'immagine dal checkout locale invece di usare quella remota:

docker compose -f docker-compose.build.yaml up -d mcp

Avvio con Docker

docker run -d \
  --name schema-gov-it-mcp \
  -p 3000:3000 \
  -e MCP_TRANSPORT=sse \
  -v ./logs:/app/logs \
  ghcr.io/italia/dati-semantic-mcp:latest

Verifica

curl http://localhost:3000/health
# {"status":"ok","service":"schema-gov-it-mcp","sessions":0}

2. Tramite NPX (Senza installazione permanente)

npx schema-gov-it-mcp

3. Installazione da GitHub (Senza NPM Registry)

Puoi installare globalmente direttamente dal repository:

npm install -g git+https://github.com/italia/dati-semantic-mcp.git

Poi usa schema-gov-it-mcp come comando.

4. Installazione Locale (Sviluppo)

git clone https://github.com/italia/dati-semantic-mcp.git
cd dati-semantic-mcp
npm install
npm run build   # Automatico via prepare, ma puoi lanciarlo manualmente
node dist/index.js

Configurazione Client MCP

Modalità stdio (processo locale)

Adatta per uso personale: il client lancia il server come processo figlio.

Claude Code

claude mcp add schema-gov-it -- npx -y github:italia/dati-semantic-mcp

Oppure aggiungi manualmente a ~/.claude.json:

{
  "mcpServers": {
    "schema-gov-it": {
      "command": "npx",
      "args": ["-y", "github:italia/dati-semantic-mcp"]
    }
  }
}

VS Code / Cursor

In .vscode/mcp.json:

{
  "servers": {
    "schema-gov-it": {
      "command": "npx",
      "args": ["-y", "github:italia/dati-semantic-mcp"]
    }
  }
}

Modalità HTTP/SSE (server remoto o Docker)

Adatta per ambienti condivisi, CI/CD o deployment remoto. Il server deve essere già in esecuzione (es. via Docker Compose).

Importante: in questa modalità file_path si riferisce al filesystem del server/container. Se il file RDF sta sul computer del client, il flusso corretto è POST /upload e poi uso di upload_id.

Claude Code

claude mcp add --transport http schema-gov-it http://localhost:8088/mcp

Oppure aggiungi manualmente a ~/.claude.json:

{
  "mcpServers": {
    "schema-gov-it": {
      "type": "http",
      "url": "http://localhost:8088/mcp"
    }
  }
}

VS Code / Cursor

In .vscode/mcp.json:

{
  "servers": {
    "schema-gov-it": {
      "type": "http",
      "url": "http://localhost:8088/mcp"
    }
  }
}

Upload di un file locale verso un server remoto

Quando il server gira altrove e non può leggere il file locale del client, evita di provare percorsi diversi. Carica il file una volta e riusa l'id restituito.

Questo punto è importante anche per i costi e l'affidabilità: non usare la conversazione con il modello come canale di trasporto del file, e non incollare ontologie grandi nel prompt. Il file va inviato dal client con un tool locale che spedisca i byte direttamente al server, per esempio curl, nc o un helper equivalente del client MCP.

Con curl:

curl -X POST \
  -H "Content-Type: text/turtle" \
  --data-binary @./mia-ontologia.ttl \
  http://localhost:3000/upload

Se stai usando docker-compose.yaml, sostituisci localhost:3000 con localhost:8088.

Risposta tipica:

{"id":"9d7...","tripleCount":1234,"format":"text/turtle","endpoint":"/sparql/9d7..."}

Poi usa quell'id come upload_id con inspect_local_ontology, query_local_ontology o compare_local_with_remote. L'interrogazione diretta dello store resta possibile, ma per i nuovi flussi e' preferibile query_local_ontology con upload_id:

curl --get \
  --data-urlencode 'query=SELECT ?c WHERE { ?c a <http://www.w3.org/2002/07/owl#Class> } LIMIT 10' \
  http://localhost:3000/sparql/9d7...

Con nc:

{ printf 'POST /upload HTTP/1.1\r\nHost: localhost:3000\r\nContent-Type: text/turtle\r\nContent-Length: %s\r\n\r\n' "$(wc -c < ./mia-ontologia.ttl)"; cat ./mia-ontologia.ttl; } | nc localhost 3000

Esempi di Utilizzo

Una volta configurato, puoi chiedere all'agente cose come:

  • "Cerca concetti relativi alla 'Sanità' e dimmi quali sono le classi principali." (Userà search_concepts)

  • "Analizza la classe Persona e dimmi con chi è collegata." (Userà inspect_concept)

  • "Controlla se ci sono sovrapposizioni tra i concetti di Luogo." (Userà check_overlaps)

  • "Come posso ottimizzare le mie query?" (Userà analyze_usage sui log)

  • "Elenca le ontologie disponibili e mostrami le classi di quella sui Servizi Pubblici." (Userà list_ontologies + explore_ontology)

  • "Trova i comuni della Lombardia e il loro codice Belfiore." (Userà list_municipalities)

  • "Consigliami alcuni endpoint SPARQL esterni da interrogare dopo schema.gov.it." (Userà recommend_external_endpoints)

  • "Esegui una query SPARQL su DBpedia per trovare le città italiane." (Userà query_external_endpoint)

  • "Dammi una panoramica dell'ontologia in /srv/ontologie/mia-ontologia.ttl." (Userà inspect_local_ontology con file_path, se il file è davvero leggibile dal server)

  • "Ho un server MCP remoto e un file TTL sul mio laptop: caricalo via POST /upload e poi confronta le classi con schema.gov.it." (Userà upload_id + compare_local_with_remote)

  • "Trova tutte le classi senza rdfs:label nel file che ho appena caricato via upload." (Userà query_local_ontology con upload_id)

  • "Esistono vocabolari internazionali nel settore pubblico che potremmo allineare a schema.gov.it?" (Userà search_okg_resources)

  • "La classe Person di CPV ha equivalenti riconosciuti a livello internazionale?" (Userà find_okg_alignments)

  • "Quali tool open source posso usare per lavorare con SKOS e OWL?" (Userà find_semantic_software)

  • "Cosa manca a schema.gov.it rispetto agli standard semantici internazionali del settore pubblico?" (Userà compare_coverage_with_okg)

Variabili d'Ambiente

Variabile

Default

Descrizione

MCP_TRANSPORT

stdio

Modalità di trasporto. Usa http o sse per avviare il server HTTP (obbligatorio per l'upload e per l'uso remoto).

PORT

3000

Porta su cui il server HTTP si mette in ascolto (solo in modalità http/sse).

HOST

0.0.0.0

Indirizzo di bind del server HTTP. Usa 127.0.0.1 per limitare l'accesso al solo localhost.

MCP_PUBLIC_URL

(non impostato)

URL esterno del server, usato dal tool get_upload_instructions per restituire l'endpoint di upload raggiungibile dal client. Necessario quando la porta interna differisce da quella esposta (Docker, reverse proxy). Esempio: http://localhost:8080.

Esempi:

# Avvio locale su porta 3000 con upload abilitato
MCP_TRANSPORT=http node dist/index.js

# Porta personalizzata
MCP_TRANSPORT=http PORT=8080 node dist/index.js

# Docker con port mapping 8080→3000 (porta interna 3000, esposta 8080)
docker run -d \
  -e MCP_TRANSPORT=http \
  -e MCP_PUBLIC_URL=http://localhost:8080 \
  -p 8080:3000 \
  ghcr.io/italia/dati-semantic-mcp:latest

Nota upload: La porta HTTP (e di conseguenza /upload) è disponibile solo in modalità http o sse. In modalità stdio il server non espone nessuna porta; per passare file RDF usa il parametro content di inspect_local_ontology per file piccoli, oppure attiva la modalità HTTP.


Note Tecniche

  • Endpoint Esterni: Usa recommend_external_endpoints per una lista curata (es. lod.dati.gov.it come possibile server SPARQL per dati.gov.it, dati.cultura.gov.it, endpoint istituzionali italiani, endpoint europei e knowledge graph pubblici) e list_linked_endpoints per scoprire quelli pubblicati nel catalogo via metadata DCAT.

  • Riduzione Token per Query Esterne: query_external_endpoint restituisce risultati compressi: conserva solo i valori utili, usa un formato tabellare compatto per result set più grandi e tronca risposte eccessive. Non aggiunge automaticamente LIMIT, quindi per query esterne conviene specificarlo sempre.

  • Compatibilità Endpoint Esterni: Per migliorare l'interoperabilità con endpoint protetti da proxy o filtri anti-bot, le query SPARQL verso server esterni vengono inviate con header HTTP più simili a quelli di un browser standard. Se un endpoint esterno rifiuta il POST con 403, il server riprova automaticamente in GET.

  • Prefixes Automatici: Non serve definire rdf:, owl:, skos:, ecc. nelle query interne. Il server li aggiunge automaticamente. Per gli endpoint esterni i prefissi non vengono iniettati di default.

  • Compressione Token: Le liste lunghe (> 5 item) vengono restituite in formato tabellare compatto per risparmiare token.

  • Input Sanitizzati: Tutti i parametri utente sono sanitizzati per prevenire SPARQL injection.

  • Ontologia Locale: I tool del gruppo 10 (inspect_local_ontology, inspect_local_concept, inspect_local_property, query_local_ontology, compare_local_with_remote) usano oxigraph (WASM) per caricare file RDF/OWL in memoria ed eseguire SPARQL. file_path funziona solo per file davvero leggibili dal processo server; non trasferisce file dal client. I file vengono cachati dopo il primo caricamento; le query successive sullo stesso file non rileggono il disco. Formati supportati: .ttl, .owl, .rdf, .nt, .jsonld.

  • Context-aware core tools: inspect_concept, get_property_details e query_sparql accettano ora source="schema" | "local" | "hybrid" dove applicabile. hybrid oggi e' supportato solo sui tool specializzati di concetto/proprieta; per query_sparql raw non e' ancora disponibile un vero grafo unificato locale+remoto.

  • Workflow Upload HTTP: usa get_upload_instructions quando il file sta sul client e il server non puo' leggerlo. Dopo l'upload, il flusso principale consigliato e' query_local_ontology con upload_id; query_uploaded_store resta un percorso legacy specifico dello store temporaneo.

  • Open Knowledge Graphs (OKG): I tool della categoria 12 chiamano api.openknowledgegraphs.com (REST JSON, CC0, nessuna autenticazione, timeout 10s). Le categorie tematiche vengono scaricate dinamicamente dalla root dell'API (GET /) al primo utilizzo e messe in cache in memoria per la durata della sessione; non è più necessario aggiornarle manualmente nel codice. Il tool compare_coverage_with_okg combina una chiamata OKG con una query SPARQL su schema.gov.it usando i Wikidata ID come chiave di collegamento.

  • Test e CI: la CI esegue npm run build, npm run test:http e npm run test:mcp. I test MCP includono anche chiamate live a api.openknowledgegraphs.com, quindi richiedono accesso di rete verso l'esterno.

  • Logging: Tutte le chiamate vengono loggate in logs/usage_log.jsonl per analisi e miglioramento continuo. Ogni entry include argomenti, riepilogo, source_data_metrics e ai_data_metrics: metriche quantitative dei dati ricevuti e del payload finale passato al modello, ad esempio numero di caratteri e, quando rilevabile, righe, colonne o numero di elementi.

  • Trasporto: Il server supporta sia stdio (default, per uso locale) che HTTP/SSE (via MCP_TRANSPORT=sse, per uso remoto/Docker).

Licenza

MIT - vedi LICENSE

Available Tools

47 tools
analyze_usageAnalyze UsageA
Read-only

Analyze the server's own usage logs for patterns and errors.

Args: None

Returns:

  • total_calls: Total number of tool invocations

  • tool_breakdown: Calls per tool

  • recent_errors: Last 5 distinct errors

  • last_activity: Most recent timestamp

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description adds value by detailing the return fields (total_calls, tool_breakdown, etc.). It does not contradict 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 extremely concise (three bullet points for Args and Returns) with no superfluous text. Every element serves a clear purpose.

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?

Without an output schema, the description adequately lists the return fields. It could benefit from specifying types (e.g., 'total_calls' is an integer) but is sufficient for a simple introspection tool.

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?

There are no parameters, and schema coverage is 100%. The description correctly reflects this with 'Args: None'. With zero parameters, the baseline 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 a specific verb 'analyze' and a precise resource 'server's own usage logs'. It clearly distinguishes from sibling tools by focusing on introspection rather than external queries or operations.

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 or mention alternatives. However, the zero parameters and self-referential nature imply it's for internal diagnostics, but no comparative guidance is provided.

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

browse_vocabularyBrowse VocabularyA
Read-onlyIdempotent

Browse concepts in a vocabulary with pagination support.

Args:

  • schemeUri: URI of the ConceptScheme

  • limit: Items per page (default: 50)

  • offset: Items to skip (default: 0)

  • keyword: (optional) Filter by label

  • lang: "it" | "en" | "any" (default: "any")

Returns:

  • concepts: List of concepts with code and label

  • pagination: Total count, offset, has_more

When to use this vs X:

  • vs search_in_vocabulary: this is the preferred default for exploring a known ConceptScheme because it supports pagination and optional keyword

  • use search_in_vocabulary only for a lightweight keyword lookup when pagination is not needed

Use for: Large vocabularies that need pagination (e.g., ICD codes, municipalities)

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoPreferred label language; "any" keeps all languages.any
limitNo
offsetNo
keywordNoOptional keyword filter
schemeUriYesURI of the ConceptScheme

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnly, non-destructive, and idempotent behavior. The description adds that it supports pagination, returns a list of concepts with code and label, and gives output structure. No contradictions.

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?

Well-structured with clear headers (Args, Returns, When to use, Use for). Every sentence adds value, no redundancy. Front-loaded with the core purpose.

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?

Comprehensive for a tool with 5 parameters and sibling comparison. Explains input, output, usage guidance, and use cases. No output schema, but description provides clear output structure.

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

Parameters4/5

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

Schema description coverage is 60% (3 of 5 parameters have descriptions). The description adds value for the undocumented 'limit' and 'offset' by listing defaults and purpose, and clearly explains optional parameters and language options.

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?

Clearly states 'Browse concepts in a vocabulary with pagination support', specifying the verb 'browse' and resource 'concepts in a vocabulary'. Explicitly distinguishes from sibling 'search_in_vocabulary'.

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

Usage Guidelines5/5

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

Provides explicit 'When to use this vs X' section, comparing with 'search_in_vocabulary' and stating that this is the preferred default for exploring a known ConceptScheme due to pagination support, while the alternative is for lightweight keyword lookups.

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

check_coverageCheck CoverageA
Read-onlyIdempotent

Analyze usage coverage of a specific class or property, or get global stats.

Args:

  • targetUri: (optional) URI of class or property to check

Returns:

  • If targetUri provided: instance count and properties used

  • If no targetUri: top 50 types by instance count

Examples:

  • No args: Global coverage statistics

  • targetUri="http://...#Person": Coverage for Person class

How to interpret the two modes:

  • without targetUri = heatmap of the catalog, useful to see which types are most used overall

  • with targetUri = targeted coverage analysis for one URI

ParametersJSON Schema
NameRequiredDescriptionDefault
targetUriNoURI of class or property to check coverage for

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds behavioral details beyond annotations, such as the return format (instance count, properties used, top 50 types) and the effect of providing/omitting targetUri. No contradictions.

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 well-structured with clear sections (Args, Returns, Examples, How to interpret). Each sentence adds value, and the format is front-loaded with the core purpose. No redundancy.

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?

Given the tool has only one optional parameter and no output schema, the description fully covers return values, usage scenarios, and interpretation. It is complete for an AI agent to select and invoke the tool correctly.

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

Parameters5/5

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

Input schema has 100% description coverage, but the description significantly adds meaning by explaining the two modes of operation with and without the parameter, including concrete examples. This goes well beyond the schema description.

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?

Clearly states the tool analyzes usage coverage of a class/property or provides global stats, with two distinct modes. The verb+resource is specific and distinguishes from sibling tools like 'analyze_usage' through explicit mode descriptions.

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?

Provides explicit guidance on when to use each mode via examples and the 'How to interpret' section. However, it does not explicitly mention when not to use this tool or name alternatives among siblings, so it loses a point.

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

check_overlapsCheck OverlapsB
Read-onlyIdempotent

Identify potential overlaps (same labels) or explicit mappings.

Args:

  • limit: Maximum results to return (default: 50)

Returns:

  • List of potential overlaps with relation type:

    • owl:sameAs mappings

    • skos:exactMatch mappings

    • Same Label collisions

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare the tool is read-only, idempotent, and non-destructive. The description adds that it returns a list of overlaps with relation types (owl:sameAs, skos:exactMatch, Same Label), which is useful but does not disclose full behavioral traits like result limits beyond the default 50, or whether results are exhaustive.

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

Conciseness3/5

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

The description is concise but slightly redundant: the Returns section repeats the relation types already mentioned in the first sentence. It is front-loaded with the purpose, but the Args section is necessary. Overall, it could be more streamlined.

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

Completeness3/5

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

For a simple read-only tool with one parameter and no output schema, the description covers purpose, parameter, and return structure. However, it lacks context about the scope of the check (e.g., entire knowledge graph vs. specific dataset) and does not explain what 'Same Label collisions' means precisely.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It clearly documents the single parameter 'limit' with its default value (50), adding meaning beyond the schema's type and default. However, it could be improved by noting any accepted range or behavior when omitted.

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?

The description clearly states the tool identifies potential overlaps (same labels) or explicit mappings, using specific verbs and resources. It distinguishes its function from sibling tools like 'check_quality' or 'check_coverage' by focusing on overlaps, but does not explicitly differentiate from all siblings.

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, no prerequisites, and no exclusions. It only describes what the tool does without context for usage decisions.

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

check_qualityCheck QualityA
Read-onlyIdempotent

Verify quality issues like missing labels or descriptions.

Args:

  • limit: Maximum results to return (default: 50)

  • ontologyUri: (optional) Restrict check to resources whose URI starts with this ontology namespace. Use this to avoid false positives from resources imported from other ontologies (e.g. core ontology classes referenced as range/domain in the target ontology). Mirrors the URI prefix heuristic used by explore_ontology.

Returns:

  • List of resources missing rdfs:label or skos:prefLabel (checked in both default graph and all named graphs)

When to use ontologyUri:

  • Pass the ontology URI (from list_ontologies) when checking a specific ontology to exclude imported resources. Resources imported from another ontology (e.g. a core class used as range) are NOT a quality issue of the importing ontology — they are defined, with their labels, in the originating ontology.

Note: Checks owl:Class, owl:ObjectProperty, owl:DatatypeProperty, and skos:Concept. Label lookup spans both the default graph and all named graphs to avoid false positives caused by label triples residing in a named graph different from where the type assertion was found.

False positive filtering: Resources that have only a bare type declaration (a owl:Class with no other properties) are automatically excluded. These are typically import stubs — classes or properties referenced from another module but never developed locally. Only resources with at least one non-type triple are flagged, ensuring the report covers entities that are being actively developed but are missing editorial metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
ontologyUriNoRestrict check to resources whose URI starts with this ontology namespace (use the URI from list_ontologies). Excludes resources imported from other ontologies.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations indicate read-only, open-world, idempotent, non-destructive behavior. The description adds significant detail: specific resource types checked, label lookup across all graphs, and false positive filtering of import stubs, providing behavioral depth beyond annotations without contradiction.

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?

Well-structured with sections for args, returns, when-to-use, notes, and false positive filtering. Front-loaded with purpose. While slightly lengthy, every section adds value with minimal redundancy.

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 quality check tool with no output schema, the description comprehensively covers what is checked, how parameters affect results, false positive handling, and return format. It is complete enough for an AI agent to use correctly.

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

Parameters4/5

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

Schema coverage is 50% (ontologyUri described, limit not). The description adds: default for limit (50), detailed usage of ontologyUri to avoid false positives, and its relationship to explore_ontology. This meaningfully supplements the schema.

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 it verifies quality issues like missing labels or descriptions, specifying the resource types checked (owl:Class, owl:ObjectProperty, etc.). This distinctly separates it from siblings like 'check_overlaps' or 'check_coverage'.

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 includes a 'When to use ontologyUri' section with explicit guidance on when to pass the ontology URI to exclude imported resources, reducing false positives. It also explains false positive filtering. While it doesn't list alternatives explicitly, the context is clear.

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

compare_coverage_with_okgCompare schema.gov.it Coverage with OKGA
Read-onlyIdempotent

Gap analysis: compare schema.gov.it semantic resources against the international OKG catalog for a given domain.

How it works:

  1. Fetches OKG resources for the given category

  2. For resources that have a Wikidata ID, queries schema.gov.it for matching owl:sameAs / skos:exactMatch links

  3. Classifies each OKG resource as "covered" (linked in schema.gov.it) or "gap" (not linked)

Args:

  • category: OKG thematic category to analyze

  • limit: Max OKG resources to fetch (default: 50)

Returns:

  • summary: total, covered count, gap count, coverage percentage

  • covered: OKG resources already linked in schema.gov.it (with local URI and relation type)

  • gaps: OKG resources with no corresponding link in schema.gov.it

  • without_wikidata: OKG resources without a Wikidata ID (cannot be cross-referenced automatically)

Available categories: fetched dynamically from api.openknowledgegraphs.com at runtime.

Use when: Assessing which international standards are missing in schema.gov.it for a specific domain, or prioritizing new ontology and vocabulary contributions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax OKG resources to fetch (default: 50)
categoryYesOKG thematic category to analyze

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, establishing a safe, idempotent, read-only operation. The description goes further by detailing the three-step workflow, explaining that categories are fetched dynamically, and noting that resources without Wikidata IDs cannot be cross-referenced. No contradiction with 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 well-structured with clear headings: 'How it works', 'Args', 'Returns', 'Available categories', and 'Use when'. It is concise yet complete, with no unnecessary sentences.

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?

Given the tool's moderate complexity, no output schema, and two parameters, the description fully covers the return structure (summary, covered, gaps, without_wikidata), explains the dynamic nature of categories, and provides usage context. It is adequately complete for an AI agent to invoke and interpret the result.

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

Parameters5/5

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

Input schema covers both parameters with descriptions (100% coverage). The description adds value by explaining the 'limit' default (50), noting that 'category' comes from a dynamic list, and providing a 'Returns' section that clarifies the output structure. This exceeds what the schema alone provides.

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 'Gap analysis: compare schema.gov.it semantic resources against the international OKG catalog for a given domain.' This is a specific verb-resource combination that distinguishes the tool from siblings like 'check_coverage' or 'check_overlaps' by naming the external catalog.

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 'Use when' section provides explicit guidance: 'Assessing which international standards are missing in schema.gov.it for a specific domain, or prioritizing new ontology and vocabulary contributions.' While clear, it does not mention when not to use this tool or suggest specific alternatives.

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

compare_local_with_remoteCompare Local Ontology with schema.gov.itA
Read-onlyIdempotent

Compare classes and/or properties defined in an ontology available on the server filesystem or through HTTP upload against schema.gov.it.

Args (provide exactly one of file_path or upload_id):

  • file_path: Absolute path on the MCP server filesystem. Use only if the server can really read that path.

  • upload_id: UUID returned by POST /upload. Use this in HTTP/remote mode when the ontology file is not present on the server.

  • type: What to compare — "classes" | "properties" | "all" (default: "classes")

  • limit: Max local items to check (default: 50)

Important for remote MCP servers:

  • file_path is not a transport mechanism. It works only for files visible to the server process.

  • If the ontology sits on the client machine, call get_upload_instructions, execute the curl command via Bash tool (without reading the file), then use the upload_id here.

  • Never copy ontology text into the conversation — use get_upload_instructions + Bash tool to send bytes directly.

Returns:

  • matched: URIs found in both local file and schema.gov.it (with Italian label if available)

  • local_only: URIs defined locally but absent from schema.gov.it

  • summary counts

Use when: Starting to build an ontology — quickly discover which of your classes/properties already exist in schema.gov.it so you can reuse or align them.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoWhat to compareclasses
limitNoMax local items to check remotely
file_pathNoAbsolute path to the local ontology file (local/Docker)
upload_idNoUpload UUID returned by POST /upload (HTTP mode)

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already mark it as read-only, idempotent, non-destructive. Description adds behavioral details: input methods (file_path vs upload_id), limitations of file_path for remote servers, and return structure (matched, local_only, summary).

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 well-structured with clear sections (args, important notes, returns, usage hint). It is concise yet thorough, front-loading the main purpose.

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?

Given the complexity (4 params, no output schema, comparative logic), the description covers all necessary aspects: input, behavior, return values, and usage context. No gaps remain.

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

Parameters4/5

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

Schema coverage is 100%, but description adds value by explaining the requirement to provide exactly one of file_path or upload_id, defining the type enum, and detailing the limit parameter. This goes beyond the schema.

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 it compares classes and/or properties from a local ontology against schema.gov.it, using specific verbs and resources. It distinguishes itself from siblings by focusing on alignment with schema.gov.it.

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

Usage Guidelines5/5

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

Explicitly says when to use (starting to build an ontology) and provides alternatives (use get_upload_instructions + Bash if file is not on server). Also warns against incorrect usage of file_path.

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

describe_resourceDescribe ResourceA
Read-onlyIdempotent

Get all triples for a resource (Concise Bounded Description).

Args:

  • uri: URI of the resource

  • depth: 1 for direct properties only, 2 to include linked resources (default: 1)

Returns:

  • All properties and values of the resource

When to use this vs X:

  • vs inspect_concept: use this when you need the raw RDF description of a resource; use inspect_concept when you want a semantic profile with hierarchy, usage, and inherited properties

  • vs query_sparql: use this for the standard CBD dump of one resource; use query_sparql only for custom graph patterns not covered here

Use when: You need the complete RDF description of a specific resource.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesURI of the resource
depthNo1 for direct, 2 for linked resources

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. Description adds value by explaining the return type ('All properties and values') and depth behavior, but does not disclose authorization or rate limits.

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?

Highly concise and well-structured: brief intro, clear args/returns sections, bulleted usage guidance. No unnecessary sentences; every sentence adds value.

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?

Given 2 parameters, rich annotations, and no output schema, the description covers purpose, parameters, return info, and usage guidance. It adequately addresses the tool's scope and context among 40+ siblings.

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%, so baseline is 3. Description repeats the parameter info from the schema in 'Args' without adding new meaning beyond default value for depth.

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?

Description states 'Get all triples for a resource (Concise Bounded Description)', providing a specific verb and resource type. It clearly distinguishes from siblings like inspect_concept and query_sparql in the 'When to use' section.

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

Usage Guidelines5/5

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

Explicitly includes a 'When to use this vs X' section with two alternatives, stating conditions for each. Also adds a 'Use when' line, providing clear context for tool selection.

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

explore_catalogExplore CatalogA
Read-onlyIdempotent

List named graphs and ontologies available in the endpoint.

Args: None

Returns:

  • graphs: List of named graphs in the endpoint

  • ontologies: List of owl:Ontology and skos:ConceptScheme resources

When to use this vs X:

  • use this for a quick structural overview of the endpoint

  • use list_ontologies or list_vocabularies when you want richer, more task-oriented views of ontologies or vocabularies

Note: This tool returns TWO lists in one call (named graphs + ontology/vocabulary resources). Both queries run in parallel for performance.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds useful context about parallel query execution and the dual-list return, which goes beyond the annotations without contradicting them.

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 well-structured with separate sections for Args, Returns, When to use, and a Note. Each sentence serves a purpose, no fluff, and information is front-loaded.

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?

Given no output schema, the description fully explains the return value (two lists: graphs and ontologies) and adds context about parallel execution. It covers all necessary information for an agent to understand the tool's behavior and output.

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 no parameters, and the schema coverage is 100% (empty). The description explicitly states 'Args: None', which is clear but slightly redundant. With no parameters, the baseline is 4, and the description adequately conveys the lack of inputs.

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 lists named graphs and ontologies in the endpoint. It uses the specific verb 'list' and identifies the resources, distinguishing it from siblings like list_ontologies and list_vocabularies by emphasizing a quick structural overview.

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

Usage Guidelines5/5

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

Explicit guidance is provided: use this for a quick structural overview, and use list_ontologies or list_vocabularies for richer views. The Note also mentions parallel execution, providing context for performance considerations.

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

explore_classesExplore ClassesA
Read-onlyIdempotent

List available classes in the ontology with instance counts.

Args:

  • limit: Maximum number of classes to return (default: 50)

  • filter: Optional regex filter for class URI (case-insensitive)

Returns:

  • List of classes with instance counts, ordered by count descending

Examples:

  • No args: Returns top 50 classes by instance count

  • filter="Person": Returns classes containing "Person" in URI

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
filterNoOptional text filter for class URI

TDQS

A4.7/5.0
Behavior5/5

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

The description fully discloses behavior beyond annotations: results are ordered by count descending, filter is regex case-insensitive, and limit defaults to 50. Annotations already indicate safe, read-only operation, so no contradiction.

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 well-structured with clear sections (Args, Returns, Examples) and a front-loaded purpose sentence. Every sentence adds value, and there is no redundancy.

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?

Given two parameters and no output schema, the description fully explains input semantics, return format, and provides examples. No gaps in understanding for an AI agent.

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

Parameters4/5

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

Schema coverage is 50% (filter has description in schema, limit has none). The description adds meaning: filter is regex case-insensitive, limit is maximum with default 50. Examples clarify usage. Slight deduction as filter could be more explicitly tied to URI.

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 lists available classes in the ontology with instance counts, using a specific verb and resource. It distinguishes from siblings like explore_ontology or search_concepts by emphasizing instance counts and ordering.

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 provides clear context for when to use (listing classes with counts) but does not explicitly mention when not to use or offer alternatives among siblings. However, the specificity is sufficient.

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

explore_datasetExplore DatasetA
Read-onlyIdempotent

Get details of a specific Dataset including metadata and distributions.

Use this for targeted DCAT-AP_IT inspection. On schema.gov.it, many datasets describe semantic assets, so this tool is usually secondary to ontology, vocabulary, class/property, and SPARQL exploration.

Args:

  • datasetUri: URI of the dataset to explore

Returns:

  • metadata: Dataset properties (literals and distribution references)

  • distributions: List of distributions with format and download URLs

Note: Both queries run in parallel for performance.

ParametersJSON Schema
NameRequiredDescriptionDefault
datasetUriYesThe URI of the Dataset

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, and the description adds behavioral context: 'Both queries run in parallel for performance.' No contradiction. However, it doesn't mention any potential side effects or prerequisites, but the safety profile is clear from 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 concise and well-structured: a one-sentence summary, a brief contextual note, and a clear Args/Returns/Note section. Every sentence adds value, and the most important information is front-loaded.

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?

With only one parameter, clear annotations, and no output schema, the description is complete. It explains what the tool does, what arguments it takes, what it returns (metadata and distributions), and includes a performance note. No gaps.

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 sole parameter 'datasetUri' has a schema description 'The URI of the Dataset'. The description adds 'URI of the dataset to explore,' which is essentially a restatement. Since schema coverage is 100%, baseline is 3. The description does not provide examples, format constraints, or additional context beyond the schema.

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 'Get details of a specific Dataset including metadata and distributions.' It uses a specific verb ('Get details') and identifies the resource ('Dataset'). It also distinguishes this tool from siblings by noting it is for targeted DCAT-AP_IT inspection and usually secondary to other exploration tools.

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

Usage Guidelines5/5

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

Explicitly states 'Use this for targeted DCAT-AP_IT inspection' and provides clear guidance on when not to use it: 'On schema.gov.it, many datasets describe semantic assets, so this tool is usually secondary to ontology, vocabulary, class/property, and SPARQL exploration.' This gives a clear context and alternatives.

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

explore_external_endpointExplore External SPARQL EndpointA
Read-only

Explore the structure of an external SPARQL endpoint: discover its main classes and instance counts.

Args:

  • endpointUrl: URL of the SPARQL endpoint to explore (must be HTTPS)

  • limit: Maximum number of classes to return (default: 20)

Returns:

  • List of classes with instance counts, ordered by count descending

Security: Only HTTPS endpoints are allowed. Requests timeout after 15 seconds.

Use when: Getting a quick overview of what data an external endpoint contains before writing detailed queries.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of classes to return
endpointUrlYesURL of the SPARQL endpoint to explore (HTTPS required)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, but the description adds security details (HTTPS only, 15s timeout), which are behavioral traits beyond 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?

Very concise: four sentences plus bullet-pointed Args and Returns. No wasted words, front-loaded with purpose.

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?

Covers purpose, usage context, security, and return format (ordered list with counts). Lacks error handling description, but adequate for a quick overview tool.

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 has 100% coverage with descriptions for each parameter; description repeats this info without adding new semantics beyond what schema provides.

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 explores an external SPARQL endpoint to discover main classes and instance counts, and the 'Use when' context distinguishes it from siblings like query_sparql.

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?

Explicit 'Use when' section provides context for when to use (quick overview before detailed queries), but does not explicitly mention when not to use or name alternatives.

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

explore_ontologyExplore OntologyA
Read-onlyIdempotent

List Classes and Properties defined in a specific Ontology.

Args:

  • ontologyUri: URI of the ontology (from list_ontologies)

Returns:

  • List of classes and properties with labels, grouped by type

Note: Uses URI prefix heuristic - items whose URI starts with the ontology URI.

ParametersJSON Schema
NameRequiredDescriptionDefault
ontologyUriYesThe URI of the Ontology (from list_ontologies)

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already mark read-only/idempotent, and description adds the URI prefix heuristic and return structure, enhancing transparency beyond 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?

Extremely concise with bulleted args and returns; every sentence adds value with no redundancy.

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?

Adequately covers purpose, usage, return, and a heuristic for a single-parameter tool, though it could mention when to use more specific siblings.

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

Parameters4/5

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

Schema covers 100% of parameters, but description adds the heuristic note and clarifies the return grouping, adding value beyond schema.

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?

Clearly states the tool lists classes and properties from a specific ontology, distinguishing it from siblings like explore_classes or list_properties.

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?

Indicates the ontologyUri comes from list_ontologies, implying a prerequisite, but does not explicitly state when to use alternatives.

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

find_external_alignmentsFind External AlignmentsA
Read-onlyIdempotent

Find all alignment links from a concept in schema.gov.it toward external resources.

Args:

  • uri: URI of the concept in schema.gov.it

Returns:

  • concept: The queried URI

  • alignments: List of external URIs with relation type and domain (base URL)

Alignment types searched:

  • owl:sameAs (bidirectional)

  • skos:exactMatch

  • skos:closeMatch

  • skos:broadMatch

  • skos:narrowMatch

Use when: Understanding how a local concept maps to external systems (Eurostat, DBpedia, EU Publications Office, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesURI of the concept in schema.gov.it

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and description confirms 'Find' (read operation). Additionally, description lists specific alignment types searched (owl:sameAs, skos:exactMatch, etc.), adding context beyond annotations.

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?

The description is well-structured with Args and Returns sections, plus a usage line. Sentences are concise and front-loaded with the core purpose.

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 read-only query tool with one parameter and no output schema, the description fully covers purpose, parameters, return fields, and use case. No gaps.

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% (one parameter 'uri' with description 'URI of the concept in schema.gov.it'). Description repeats this without adding new meaning, 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?

The description states 'Find all alignment links from a concept in schema.gov.it toward external resources.' This is a specific verb (Find) and resource (alignment links), clearly distinguishing it from siblings like find_okg_alignments (OKG-specific) and others.

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 'Use when' section explicitly states: 'Understanding how a local concept maps to external systems (Eurostat, DBpedia, EU Publications Office, etc.)' This provides clear context, though it doesn't mention when not to use.

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

find_okg_alignmentsFind OKG Alignments for a schema.gov.it ResourceA
Read-onlyIdempotent

Given a schema.gov.it URI, find related resources in the Open Knowledge Graphs catalog.

How it works (3 steps):

  1. Queries schema.gov.it for the resource's label and any Wikidata alignments (owl:sameAs, skos:exactMatch)

  2. Searches OKG using the resource label

  3. Cross-references OKG results: those whose wikidataId matches a known alignment are "confirmed matches"; the rest are "candidates" (label-based, need manual review)

Args:

  • uri: URI of a schema.gov.it concept, class, or vocabulary

Returns:

  • label: The label used for OKG search

  • wikidata_alignments: Wikidata URIs already present in schema.gov.it for this resource

  • okg_matches: OKG resources with a confirmed Wikidata alignment (high confidence)

  • okg_candidates: OKG resources found by label search only (lower confidence)

Use when: Discovering international equivalents of a local ontology or vocabulary, or checking whether a schema.gov.it concept is represented in global semantic standards.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesURI of a schema.gov.it resource

TDQS

A4.5/5.0
Behavior4/5

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

Annotations (readOnlyHint, idempotentHint, destructiveHint) already cover safety. The description adds valuable behavioral details: the three-step process, how matches are classified (confirmed vs candidates), and how cross-referencing works. No contradiction with 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 well-structured with numbered steps, separate sections for args and returns, and a 'Use when' clause. Every sentence is concise and informative, with no fluff.

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?

Given the simple input (one param), clear annotations, and no output schema, the description fully explains the process, return fields, and confidence levels. The agent has all necessary information to use the tool correctly.

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

Parameters4/5

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

The single parameter 'uri' is fully described in both the schema and the description as 'URI of a schema.gov.it resource'. Schema coverage is 100%, so the description's additional mention of 'concept, class, or vocabulary' adds useful specificity.

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: given a schema.gov.it URI, find related resources in the Open Knowledge Graphs catalog. It uses a specific verb 'find' and resource 'OKG alignments', distinguishing it from sibling tools like search_okg_resources or find_external_alignments.

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 includes a 'Use when' section that explicitly advises discovering international equivalents or checking representation in global standards. While it does not list counterexamples, the context strongly implies appropriate usage.

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

find_relationsFind RelationsA
Read-onlyIdempotent

Find how two concepts are connected.

Args:

  • sourceUri: URI of the source concept

  • targetUri: URI of the target concept

  • max_hops: 1 | 2 | 3 (default: 1)

Returns:

  • Direct connections (single predicate)

  • Multi-hop paths up to the configured depth

ParametersJSON Schema
NameRequiredDescriptionDefault
max_hopsNoMaximum number of intermediate nodes to traverse. 1 preserves the previous behaviour.
sourceUriYesURI of the source concept
targetUriYesURI of the target concept

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds valuable context about the depth parameter and return types (direct connections vs. multi-hop paths), beyond what annotations provide. However, it does not mention authentication or rate limits.

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 concise and well-structured with an introductory sentence, clear 'Args' and 'Returns' sections, and no redundant information. Every sentence is informative.

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, the description covers the purpose, parameters, and return types. However, it could be more explicit about the exact return format (e.g., JSON structure) since there is no output schema.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for all parameters. The description adds value by explaining max_hops options (1|2|3, default 1) and noting that '1 preserves previous behaviour,' which clarifies the schema's const values.

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?

The description clearly states 'Find how two concepts are connected' with specific arguments and return types. It is distinctive among siblings but does not explicitly differentiate itself from similar tools like search_concepts or check_overlaps.

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 inputs and outputs, but it does not explicitly state when to use this tool versus alternatives or when not to use it. No guidance on preconditions or exclusions.

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

find_semantic_softwareFind Semantic Software Tools (OKG)A
Read-onlyIdempotent

Search the Open Knowledge Graphs catalog for semantic web software tools.

OKG indexes semantic tools such as ontology editors, SPARQL engines, vocabulary managers, RDF converters, and reasoning engines — with version and release metadata. Data is CC0.

Args:

  • query: Search term (e.g. "SPARQL", "ontology editor", "SKOS", "RDF converter", "reasoner")

  • limit: Maximum results (default: 10)

Returns:

  • List of tools with title, description, latestVersion, releaseDate, homepage, licenses

Use when: Looking for open-source tools to validate ontologies, work with SKOS/OWL/RDF data, or build semantic applications on top of schema.gov.it content.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results (default: 10)
queryYesSearch term for semantic software tools

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the description's role is reduced. The description adds that data is CC0 and specifies return fields, which is useful but not critical. No contradictions with 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 concise, well-organized with clear sections, and every sentence adds value. No redundant or verbose phrasing.

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 search tool with only 2 simple parameters and no output schema, the description adequately covers usage, examples, and return structure. It could mention pagination or error behavior, but the current level is sufficient for this complexity.

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%, so parameters are fully documented. The description repeats the parameter names and adds example values for 'query', but does not provide additional syntactic or behavioral details beyond the schema. 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 explicitly states it searches the OKG catalog for semantic web software tools, listing concrete examples like ontology editors and SPARQL engines. This clearly defines the resource and action, distinguishing it from sibling tools like 'search_okg_resources' or 'list_okg_categories'.

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 'Use when' section provides specific scenarios (e.g., validating ontologies, working with RDF data). However, it lacks explicit guidance on when not to use this tool or mention of alternatives (e.g., 'search_okg_resources' for broader searches), which would improve decision-making.

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

get_property_detailsGet Property DetailsA
Read-onlyIdempotent

Get comprehensive details of a specific property from schema.gov.it, with explicit raw vs effective views.

Args:

  • propertyUri: URI of the property

  • mode: "raw" | "effective" (default: "effective")

  • source: "schema" | "local" | "hybrid" (default: "schema")

  • file_path / content / upload_id: local context when source="local" or source="hybrid"

Tip: Use search_concepts first if you do not know the URI.

mode: "raw" — only explicitly asserted triples:

  • definition: type, label, comment, rdfs:domain, rdfs:range, rdfs:subPropertyOf, owl:inverseOf, functional flags

mode: "effective" (default) — full inherited view, adds:

  • assertedDomain: rdfs:domain declared directly on this property

  • assertedRange: rdfs:range declared directly on this property

  • superproperties: ancestor chain via rdfs:subPropertyOf+, each with hasDomainLocally / hasRangeLocally flags

  • inheritedDomain: domain values from super-properties, each annotated with ancestor URI and label

  • inheritedRange: range values from super-properties, each annotated with ancestor URI and label

  • effectiveDomain: deduplicated union of assertedDomain + inheritedDomain

  • effectiveRange: deduplicated union of assertedRange + inheritedRange

  • redundancy_analysis: diagnostic view of each asserted value:

    • "redundant": identical to an inherited value — the axiom can be dropped without semantic loss

    • "specialization": a rdfs:subClassOf of an inherited value — genuinely narrows the domain/range

    • "new": not present in any inherited value — adds information not implied by the super-property chain

    • summary counts per category for quick overview

Interpreting the output:

  • If assertedDomain is empty but effectiveDomain is not → domain is inherited; no need to re-assert it on this property

  • If assertedDomain equals effectiveDomain → the domain is fully explicit, not relying on inheritance

  • Use redundancy_analysis.summary to immediately see if the local TTL has redundant axioms or genuine specializations

  • owl:equivalentProperty and owl:equivalentClass expansions are not included (use query_sparql for those)

Hybrid mode:

  • source="hybrid" uses the local/uploaded ontology as the base graph

  • it enriches missing super-property semantics from schema.gov.it when a super-property URI is known locally but absent from the local store

  • it still does not build a generic unified graph or guarantee full owl:imports resolution

When to use this vs X:

  • vs inspect_local_property: use this for a property already published in schema.gov.it; use inspect_local_property for a local/uploaded ontology

  • vs query_sparql: use this for the standard semantic profile of one property; use query_sparql only for custom questions not covered here

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo"raw": only asserted triples. "effective" (default): adds assertedDomain/Range, super-property chain, inheritedDomain/Range, effectiveDomain/Range.effective
formatNoRDF content type for inline content
sourceNoExecution context: "schema" for schema.gov.it, "local" for a local/uploaded ontology, "hybrid" for local base + schema.gov.it enrichment.schema
contentNoInline RDF content when source='local' or 'hybrid'
file_pathNoAbsolute path to a local ontology file when source='local' or 'hybrid'
upload_idNoUploaded ontology store ID when source='local' or 'hybrid'
propertyUriYesURI of the property to inspect

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds extensive behavioral context: mode differences, inheritance details, redundancy analysis, hybrid mode behavior, and what is not included (owl:equivalentProperty expansions).

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?

The description is lengthy but well-structured with clear sections (Args, Tip, mode details, interpretation, hybrid mode, when to use). It front-loads core information and each section earns its place, though could be slightly more concise.

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?

Given the tool's complexity (7 parameters, no output schema), the description is remarkably complete. It explains output interpretation, redundancy analysis, hybrid mode behavior, and limitations, leaving little ambiguity for an AI agent.

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

Parameters5/5

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

The input schema has 100% description coverage. The description enriches each parameter with detailed explanations of enum values (e.g., mode 'raw' vs 'effective', source 'schema' vs 'local' vs 'hybrid') and the local context parameters, adding significant meaning beyond the schema.

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 it retrieves comprehensive details of a specific property from schema.gov.it, with explicit raw vs effective views. It also distinguishes itself from sibling tools like inspect_local_property and query_sparql in the 'When to use this vs X' section.

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

Usage Guidelines5/5

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

Includes a tip to use search_concepts first if the URI is unknown, and explicitly contrasts with inspect_local_property and query_sparql, providing clear when-to-use guidance.

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

get_upload_instructionsGet Upload Instructions for Local OntologyA
Read-onlyIdempotent

Returns the exact curl command to upload a local RDF file to this MCP server and get back an upload_id — without the AI ever reading the file content.

CRITICAL — how to use this tool:

  1. Call this tool with the local file path

  2. Execute the returned curl_command via the Bash tool (do NOT read the file first, do NOT pass its content through the conversation)

  3. Parse the id field from the curl JSON output

  4. Pass the id as upload_id to inspect_local_ontology, query_local_ontology, compare_local_with_remote, or query_uploaded_store

Why this matters: Reading the file and sending its content through the AI conversation wastes tokens and may hit context limits. curl sends the raw bytes directly from the filesystem to the server — the AI never sees the content.

When to use this vs X:

  • use this only when the file is on the client machine and the MCP server cannot read it directly

  • if the server can already read the file, prefer file_path on the local ontology tools

  • if the file is small and you only need a quick summary, inspect_local_ontology with content + format may be enough

HTTP mode only: This workflow requires the MCP server to be running in HTTP mode (MCP_TRANSPORT=http). In stdio mode the HTTP endpoint is not available; use the content parameter of inspect_local_ontology for small files instead.

Docker / reverse-proxy: Set the MCP_PUBLIC_URL env var to the externally reachable base URL (e.g. http://localhost:8080). Without it, the tool falls back to the internal bind address which may be unreachable from outside the container.

Supported formats: .ttl (Turtle), .owl/.rdf (RDF/XML), .nt (N-Triples), .jsonld (JSON-LD), .graphol (Graphol XML)

Uploaded stores expire after 1 hour.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesAbsolute path to the local RDF file to upload

TDQS

A4.6/5.0
Behavior5/5

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

Annotations indicate read-only and idempotent; description adds context about not reading file content, one-hour expiration, and HTTP mode requirement, with no contradiction.

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?

Well-structured with headings and lists, but lengthy; every sentence is meaningful given workflow complexity.

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

Completeness5/5

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

Covers all aspects: return value, workflow steps, prerequisites, format support, and expiration, despite no output schema.

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?

One parameter with 100% schema coverage; description adds usage context but no new semantic meaning beyond schema definition.

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?

Description clearly states it returns a curl command to upload a local RDF file, distinguishing it from sibling tools that use upload_id or file_path directly.

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

Usage Guidelines5/5

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

Provides step-by-step instructions, when to use vs alternatives (e.g., server-read file, small file), and prerequisites like HTTP mode and Docker setup.

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

inspect_conceptInspect ConceptA
Read-onlyIdempotent

Get a comprehensive profile of a concept from schema.gov.it, with explicit raw vs effective views.

Args:

  • uri: URI of the concept to inspect

  • mode: "raw" | "effective" (default: "effective")

  • source: "schema" | "local" | "hybrid" (default: "schema")

  • file_path / content / upload_id: local context when source="local" or source="hybrid"

  • lang: "it" | "en" | "any" (default: "any")

Tip: Use search_concepts first if you do not know the URI.

mode: "raw" — only explicitly asserted triples:

  • definition: literal annotations (label, comment, definition…)

  • hierarchy: direct type, parent classes (rdfs:subClassOf / skos:broader), child classes

  • usage: instance count

  • own_properties: properties with rdfs:domain exactly this class

mode: "effective" (default) — full OWL/RDFS-implied view, adds:

  • inherited_properties: properties from ancestor classes via rdfs:subClassOf+/skos:broader+, each row annotated with the ancestor that declares domain (distinguishes asserted-on-this-class from inherited)

  • incoming: properties pointing to instances of this type (data-level)

  • outgoing: properties used by instances of this type (data-level)

Interpreting own vs inherited:

  • own_properties = rdfs:domain written explicitly for this class → if missing, the property may still apply via inheritance

  • inherited_properties = rdfs:domain written on an ancestor → redundant to re-assert on this class unless restricting range

  • A property absent from both may still apply via owl:restriction, owl:equivalentClass, or owl:unionOf/intersectionOf (not shown — use query_sparql for those cases)

Limitations of effective mode:

  • owl:equivalentClass: not expanded (equivalent classes share all properties but this tool shows only the rdfs:subClassOf chain)

  • owl:unionOf / owl:intersectionOf: not traversed (anonymous class expressions)

  • owl:imports: schema.gov.it resolves these server-side; the endpoint already includes imported triples

Hybrid mode:

  • source="hybrid" uses the local/uploaded ontology as the base graph

  • for effective mode it enriches missing inherited properties and labels from schema.gov.it when ancestor URIs are known locally

  • it does not create a fully unified graph and does not resolve arbitrary owl:imports chains

When to use this vs X:

  • vs inspect_local_concept: use this for concepts already in the remote schema.gov.it catalog; use inspect_local_concept for a local/uploaded ontology

  • vs describe_resource: use this for a semantic profile (hierarchy, inherited properties, usage); use describe_resource for the raw RDF dump of a resource

  • vs query_sparql: use this when you want the standard profile of one concept; use query_sparql only for custom questions not covered here

All queries run in parallel for performance.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesThe URI of the concept to inspect
langNoPreferred label language; "any" keeps all languages.any
modeNo"raw": only asserted triples (own_properties, no ancestor traversal). "effective" (default): adds inherited_properties via rdfs:subClassOf+/skos:broader+ and data-level incoming/outgoing.effective
formatNoRDF content type for inline content
sourceNoExecution context: "schema" for schema.gov.it, "local" for a local/uploaded ontology, "hybrid" for local base + schema.gov.it enrichment.schema
contentNoInline RDF content when source='local' or 'hybrid'
file_pathNoAbsolute path to a local ontology file when source='local' or 'hybrid'
upload_idNoUploaded ontology store ID when source='local' or 'hybrid'

TDQS

A5/5.0
Behavior5/5

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

The description goes far beyond the annotations (readOnlyHint, openWorldHint, idempotentHint, destructiveHint) by detailing the exact behavior of each mode, including limitations of effective mode (owl:equivalentClass, owl:unionOf, owl:imports not expanded), hybrid mode details, and interpretation of own vs inherited properties. There is no contradiction with 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 well-structured with clear headings, bullet points for args and mode details, and a concise 'When to use this vs X' section. Despite its length, every sentence provides necessary information, and the structure allows for easy scanning. It is front-loaded with the core purpose and immediately useful details.

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?

Given the complexity of the tool (8 parameters, 3 enums, no output schema), the description covers all relevant aspects: parameter behavior, return structure (including differentiation of sections for each mode), limitations, and comparative guidance. The inclusion of interpretation details and performance notes ('All queries run in parallel') adds completeness.

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

Parameters5/5

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

With 100% schema coverage, the description adds significant meaning beyond the schema by explaining the semantics of each parameter. For example, it elaborates on the 'mode' parameter ('raw' vs 'effective') with detailed sub-sections, explains how 'source' modes interact, and provides tips for interpreting 'own_properties' and 'inherited_properties'. The lang parameter is also clarified.

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: 'Get a comprehensive profile of a concept from schema.gov.it, with explicit raw vs effective views.' It distinguishes between modes and explicitly contrasts with sibling tools like inspect_local_concept, describe_resource, and query_sparql in the 'When to use this vs X' section, ensuring the agent knows exactly what this tool does and how it differs.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use and when-not-to-use guidance. It includes a dedicated 'When to use this vs X' section that compares with three sibling tools, stating clear conditions for each. Additionally, it gives a tip to use search_concepts first if the URI is unknown, providing practical usage context.

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

inspect_local_conceptInspect Concept in Local / Uploaded OntologyA
Read-onlyIdempotent

Get a full profile of a class or concept from a local or uploaded ontology.

CRITICAL — file access workflow:

  1. Try file_path first (works only if the file is readable by the MCP server process).

  2. If file_path fails for any reason → call get_upload_instructions with the local path, execute the returned curl command via Bash tool, parse the id from the JSON response, then call this tool again with upload_id.

  3. NEVER read the file content and pass it through the conversation. NEVER attempt to parse or analyse the TTL text manually. The upload workflow sends raw bytes directly from disk to server without the AI ever seeing the content — it is always faster, cheaper, and more reliable.

Quale modalita di input usare:

  • stdio / stessa macchina → file_path

  • server remoto, file grande → get_upload_instructions + upload_id

  • server remoto, file piccolo (<1 MB) → valuta content + format con inspect_local_ontology, poi passa a upload se servono query ripetute

Args:

  • uri: URI of the class/concept to inspect

  • file_path / upload_id: exactly one (see workflow above)

  • mode: "raw" | "effective" (default: "effective")

Tip: Use search_concepts first if you are checking whether a similar concept already exists in schema.gov.it. Use this tool only after you know you want to inspect the local/uploaded ontology.

mode: "raw" — only triples explicitly present in the local file:

  • definition, hierarchy, usage, own_properties (rdfs:domain asserted directly on this class)

  • No ancestor traversal, no incoming/outgoing

mode: "effective" (default) — full OWL/RDFS-implied view:

  • All raw sections, plus:

  • inherited_properties: properties from superclasses via rdfs:subClassOf+/skos:broader+, each annotated with the ancestor that declares them

  • incoming / outgoing: data-level relations via instances

Distinguishing own vs inherited:

  • own_properties = rdfs:domain explicitly written as this class in the local file

  • inherited_properties = rdfs:domain written on an ancestor class (traversed via property paths)

  • Properties applicable only via owl:restriction or anonymous class expressions are NOT shown — use query_local_ontology for those

Limitation with owl:imports: inherited_properties traverses only superclasses present in the local file. Classes from imported external ontologies (e.g. l0:, COV:, CPV:) are absent from the local store unless the file includes them. For complete property semantics of a property that subPropertyOf an external one, use inspect_local_property instead — it falls back to schema.gov.it for missing super-properties.

When to use this vs X:

  • vs inspect_concept: use this for a local or uploaded ontology; use inspect_concept for the remote schema.gov.it catalog

  • vs query_local_ontology: use this when you want the standard profile of one concept; use query_local_ontology only for custom SPARQL questions not covered here

Unicode SPARQL note: oxigraph rejects prefixed names with non-ASCII local parts (e.g. myont:modalità_cup). Always use full URIs in angle brackets (<https://...#modalità_cup>) for properties or classes with Unicode in the local name.

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesURI of the class or concept to inspect
modeNo"raw": only asserted triples (own_properties, no ancestor traversal). "effective" (default): adds inherited_properties via rdfs:subClassOf+/skos:broader+ and data-level incoming/outgoing.effective
file_pathNoAbsolute path readable by the MCP server process. If this fails, do NOT read the file — use get_upload_instructions + Bash curl + upload_id instead.
upload_idNoUUID from POST /upload. Preferred when the file is on the client machine or file_path failed.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations readOnlyHint=true, idempotentHint=true, destructiveHint=false indicate a safe read operation. The description adds extensive behavioral context: modes (raw vs effective), limitations with owl:imports, Unicode SPARQL note, and the file access workflow. No contradictions with annotations.

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?

The description is lengthy but well-structured with sections, bold headers, and lists. It is front-loaded with the core purpose and workflow. While every sentence is informative, slight trimming could improve conciseness without losing clarity.

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 complex with 4 parameters and no output schema. The description comprehensively covers input modes, return behavior (raw vs effective sections), limitations, and cross-references to sibling tools. The agent is fully equipped to invoke the tool correctly.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds significant meaning beyond schema: it explains when to use file_path vs upload_id with detailed workflow, elaborates on mode values with examples and behaviors, and clarifies the uri parameter's role. This far exceeds baseline expectations.

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: 'Get a full profile of a class or concept from a local or uploaded ontology.' It distinguishes from siblings like inspect_concept (remote) and query_local_ontology (custom SPARQL). The workflow and use cases are explicitly explained.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use and when-not-to-use guidelines, including a step-by-step file access workflow, a comparison with related tools, and a tip to use search_concepts first. It covers prerequisites and alternatives comprehensively.

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

inspect_local_ontologyInspect Local OntologyA
Read-onlyIdempotent

Load and summarize an RDF/OWL ontology from the server filesystem, inline content, or an uploaded HTTP store (TTL, OWL/RDF-XML, NT, JSON-LD, Graphol XML).

Input (provide exactly one):

  • file_path: Absolute path on the MCP server filesystem. Use this only when the server process can really read that path (local stdio, same machine, or Docker with that directory mounted).

  • content + format: Raw RDF text sent inline. Works in remote HTTP mode too, but only for small payloads (max 1 MB).

  • upload_id: UUID returned by POST /upload. This is the preferred remote workflow when the ontology file is on the client machine instead of the server.

Important for remote MCP servers:

  • Do not assume file_path points to the user's laptop or local workstation.

  • If the MCP server runs on another machine/container and cannot access the file directly, call get_upload_instructions first, execute the returned curl command via Bash tool (do NOT read the file), then use the upload_id here.

  • Prefer upload_id over trying many path variants when access to the original file is uncertain.

  • Never read the file content and relay it through the conversation — this wastes tokens. Use get_upload_instructions + Bash tool instead.

format values: "text/turtle" (default), "application/rdf+xml", "application/n-triples", "application/ld+json", "application/graphol+xml"

Returns:

  • File info: format, triple count, source

  • Classes: defined owl:Class / rdfs:Class with instance counts (top 20)

  • Properties: count of object and datatype properties

  • Namespaces used

Efficiency: file_path results are cached by mtime; repeated calls on unchanged files skip re-parsing.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoRDF format of content: "text/turtle" (default), "application/rdf+xml", "application/n-triples", "application/ld+json", "application/graphol+xml"
contentNoRaw RDF content as string (for remote server use; max 1 MB)
file_pathNoAbsolute path to the ontology file on the server filesystem
upload_idNoUpload UUID returned by POST /upload (HTTP mode)

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already indicate readOnlyHint=true and idempotentHint=true. The description adds caching by mtime, repeated calls skip re-parsing, and explains return structure, aligning with annotations without contradiction.

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?

The description is well-structured with sections and front-loaded purpose, but slightly lengthy due to multiple input workflows. Every sentence adds value, so still efficient.

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?

Given tool complexity (multiple input modes, remote considerations, caching), the description covers all aspects: input selection, format, returns, efficiency. No output schema, but description sufficiently explains return structure.

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

Parameters5/5

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

Schema descriptions cover all 4 parameters (100%), but the description adds crucial context: max size for content, workflow for upload_id, default format, and usage scenarios, going beyond schema.

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 explicitly states the tool loads and summarizes an RDF/OWL ontology from three sources (filesystem, inline content, upload). It uses specific verbs and resource, and the purpose is clearly differentiated from siblings like query_local_ontology or explore_ontology.

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

Usage Guidelines5/5

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

The description provides detailed guidance on when to use each input, with explicit workflow for remote servers (prefer upload_id, use get_upload_instructions). It warns against assumptions about file paths and inefficient token usage, making selection guidance exemplary.

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

inspect_local_propertyInspect Property in Local / Uploaded OntologyA
Read-onlyIdempotent

Get the full semantic profile of a property from a local or uploaded ontology, resolving inherited domain and range via rdfs:subPropertyOf+.

CRITICAL — file access workflow:

  1. Try file_path first (works only if the file is readable by the MCP server process).

  2. If file_path fails for any reason → call get_upload_instructions with the local path, execute the returned curl command via Bash tool, parse the id from the JSON response, then call this tool again with upload_id.

  3. NEVER read the file content and pass it through the conversation. NEVER attempt to parse or analyse the TTL text manually. The upload workflow sends raw bytes directly from disk to server without the AI ever seeing the content — it is always faster, cheaper, and more reliable.

Quale modalita di input usare:

  • stdio / stessa macchina → file_path

  • server remoto, file grande → get_upload_instructions + upload_id

  • server remoto, file piccolo (<1 MB) → valuta content + format con inspect_local_ontology, poi passa a upload se servono query ripetute

Tip: Use search_concepts first if you are checking whether an equivalent property already exists in schema.gov.it. Use this tool only after you know you want to inspect the local/uploaded ontology.

Returns:

  • definition: direct attributes from the local store (type, label, comment, subPropertyOf, inverseOf, functional flags)

  • assertedDomain: rdfs:domain declared directly on this property in the local file

  • assertedRange: rdfs:range declared directly on this property in the local file

  • superproperties: ancestor chain via rdfs:subPropertyOf+; each entry has source:

    • "local" = found in the local store

    • "remote" = not in local file, resolved from schema.gov.it

    • "not-found" = absent from both

  • inheritedDomain: domain values collected from super-properties, each annotated with ancestor URI and source

  • inheritedRange: range values collected from super-properties, each annotated with ancestor URI and source

  • effectiveDomain: deduplicated union of assertedDomain + inheritedDomain

  • effectiveRange: deduplicated union of assertedRange + inheritedRange

  • redundancy_analysis: diagnostic view of each asserted value:

    • "redundant": identical to an inherited value — the axiom can be dropped without semantic loss

    • "specialization": a rdfs:subClassOf of an inherited value — genuinely narrows the domain/range

    • "new": not present in any inherited value — adds information not implied by the super-property chain

  • summary counts per category for quick overview

  • warnings: super-properties not resolved, remote lookup failures

owl:imports handling: The local store typically does NOT contain imported ontologies (owl:imports declarations are not followed automatically). Super-properties from external namespaces (e.g. l0:name, l0:description from OntoPiA) are resolved against schema.gov.it automatically, making the effective semantics complete without requiring the full import chain to be loaded.

Use case — subproperty chains: For properties like ha_cup_collegato_per_fusione rdfs:subPropertyOf ha_cup_collegato, this tool shows whether domain/range are asserted directly, inherited from ha_cup_collegato, or need remote resolution. For subPropertyOf l0:name, it fetches l0:name's domain/range from schema.gov.it and shows it as source "remote".

When to use this vs X:

  • vs get_property_details: use this for a local or uploaded ontology; use get_property_details for a property already published in the remote schema.gov.it catalog

  • vs query_local_ontology: use this when you want the standard semantic profile of one property; use query_local_ontology only for custom SPARQL questions not covered here

Unicode SPARQL note: oxigraph rejects prefixed names with non-ASCII local parts. For properties with Unicode in the local name (e.g. myont:modalità_cup), always pass the full URI in angle brackets (<https://...#modalità_cup>).

ParametersJSON Schema
NameRequiredDescriptionDefault
uriYesURI of the property to inspect
file_pathNoAbsolute path readable by the MCP server process. If this fails, do NOT read the file — use get_upload_instructions + Bash curl + upload_id instead.
upload_idNoUUID from POST /upload. Preferred when the file is on the client machine or file_path failed.

TDQS

A4.9/5.0
Behavior5/5

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

Annotations declare readOnlyHint, idempotentHint, and openWorldHint, already indicating safety. The description adds extensive behavioral details: how super-properties are resolved (local/remote/not-found), owl:imports handling, redundancy analysis, Unicode SPARQL note, and return structure. No contradictions.

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?

The description is long but well-structured with clear sections (critical workflow, input mode guidance, returns, etc.). It front-loads essential purpose and uses formatting (e.g., lists, bold) for clarity. Could be slightly more concise, but every section adds necessary detail.

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?

Given the tool's complexity and absence of an output schema, the description thoroughly covers return values, edge cases (file access failures, Unicode, remote resolution), and provides a complete semantic profile. It leaves no gaps for an AI agent to misinterpret.

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

Parameters5/5

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

Schema description coverage is 100%, but the description adds significant context: explains when to use each parameter, the workflow for file_path failure, and the difference between file_path and upload_id. Also provides a tip for Unicode handling with the uri 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 'Get the full semantic profile of a property' and mentions resolving inherited domain/range, distinguishing it from siblings like get_property_details (for remote properties) and query_local_ontology (for custom SPARQL).

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

Usage Guidelines5/5

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

Provides explicit when-to-use guidance, including a critical file access workflow with step-by-step instructions, alternatives for input modes, and comparisons to other tools like get_property_details and query_local_ontology. Also advises using search_concepts first.

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

list_datasetsList DatasetsA
Read-onlyIdempotent

List available Datasets (dcatapit:Dataset) in the catalog.

Use this when you explicitly need DCAT-AP_IT dataset records. On schema.gov.it, these are often semantic assets such as ontologies, controlled vocabularies, and related distributions rather than classic tabular datasets, so ontology/vocabulary/SPARQL tools are usually a better starting point.

Args:

  • limit: Maximum datasets per page (default: 20)

  • offset: Number of datasets to skip (default: 0)

Returns:

  • items: List of datasets with labels

  • pagination: Metadata with count, offset, has_more, next_offset

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo

TDQS

A4.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false, covering safety and idempotency. The description adds context that the datasets are often semantic assets like ontologies and controlled vocabularies, which is a behavioral trait beyond annotations. It does not contradict 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 concise and well-structured: a brief purpose statement, usage guidance, then clearly labeled Args and Returns sections. Every sentence serves a purpose, and the most important information (what the tool does) comes first.

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?

Given the tool is a simple list with 2 parameters, no output schema, and rich annotations, the description covers everything needed: it explains what the tool returns (items with labels and pagination metadata), how to use parameters, and even gives usage context. Nothing is missing for an agent to invoke it correctly.

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

Parameters5/5

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

The input schema has 2 parameters (limit, offset) with no descriptions in the schema (0% coverage). The description compensates fully by providing explicit descriptions: 'Maximum datasets per page (default: 20)' and 'Number of datasets to skip (default: 0).' This adds significant meaning beyond the schema.

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 'List available Datasets (dcatapit:Dataset) in the catalog.' It uses a specific verb ('List') and resource ('Datasets'), and distinguishes itself from siblings by noting that other tools (ontology/vocabulary/SPARQL) are usually better starting points, aligning with the context of the sibling tools list.

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

Usage Guidelines5/5

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

The description explicitly says 'Use this when you explicitly need DCAT-AP_IT dataset records.' It also provides guidance on when not to use it: 'so ontology/vocabulary/SPARQL tools are usually a better starting point.' This helps the agent decide between this tool and its numerous siblings.

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

list_identifiersList IdentifiersA
Read-onlyIdempotent

List CLV Identifier resources by type, with counts and sample values.

Args:

  • identifierType: (optional) Filter by identifier type string (e.g. "Codice Catastale", "Sigla Automobilistica")

  • limit: Maximum results (default: 20)

Returns:

  • If no identifierType: Summary of all identifier types with counts

  • If identifierType provided: Sample identifiers of that type with their values and linked entities

Use when: Exploring the clv:Identifier resources and their identifierType values in the triplestore.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results
identifierTypeNoFilter by type (e.g. "Codice Catastale")

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already supply readOnlyHint, idempotentHint, and destructiveHint false. The description adds value by detailing the conditional return behavior based on the identifierType parameter, which aids understanding 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 very concise and well-structured with clear headings (Args, Returns, Use when). Every sentence serves a purpose, and the main action is front-loaded.

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 list tool with two parameters and no output schema, the description adequately covers behavior, parameter effects, and usage context. Minor omissions like pagination details do not significantly detract from completeness.

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

Parameters4/5

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

Schema coverage is 100%, but the description enriches both parameters: limit with default value (also in schema) and identifierType with concrete examples ('Codice Catastale', 'Sigla Automobilistica'). This adds practical semantic value.

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?

The description clearly states the tool lists CLV Identifier resources by type with counts and sample values, specifying the action and resource. It does not explicitly differentiate from sibling tools like explore_classes or describe_resource, but the purpose is unambiguous.

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 'Use when' section provides clear context for when to use the tool (exploring clv:Identifier resources). However, it offers no exclusions or alternative tool references, so it falls short of a top score.

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

list_instances_of_classList Instances of ClassA
Read-onlyIdempotent

List instances of a given class in the catalog.

Args:

Returns:

  • instances: list of URIs with labels

  • pagination: total count, offset, has_more

Use when: You found a class and want to know if it has real instances (i.e., whether it is used in the catalog, not just defined theoretically).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoItems per page (max 200)
offsetNoItems to skip
class_uriYesURI of the class to list instances of

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior. The description adds transparency about pagination parameters (limit, offset) and return structure, which is useful beyond 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 succinct and well-organized with separate sections for Args, Returns, and Use when. Every sentence adds value without redundancy.

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?

Given the tool's simplicity, the description fully covers parameters, return format, and usage context. No output schema is needed because Returns are described in prose.

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%, so the description mainly echoes the schema with defaults and constraints. It adds an example URI for class_uri, but does not significantly enhance understanding beyond the schema.

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 'List instances of a given class in the catalog' with a specific verb and resource. It distinguishes from sibling tools like explore_classes or inspect_concept by focusing on listing actual instances.

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?

Includes a 'Use when' section that provides clear context: when you have a class and want to know if it has real instances. Although it doesn't explicitly exclude other tools, the guidance is precise and actionable.

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

list_linked_endpointsList Linked SPARQL EndpointsA
Read-onlyIdempotent

Discover SPARQL endpoints referenced in the schema.gov.it catalog via dcat:DataService.

Args: None

Returns:

  • List of data services with endpoint URL, title, description, and conformsTo standard

Use when: Exploring what external SPARQL endpoints are connected to the Italian PA semantic catalog.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so safety is clear. The description adds value by detailing the return structure (list with endpoint URL, title, description, conformsTo standard) and source catalog, which goes beyond 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 extremely concise, using a few short sentences to cover purpose, arguments, returns, and usage. The structured format with 'Args:' and 'Returns:' sections, plus a 'Use when' tip, is efficient and easy to parse.

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 no parameters and no output schema, the description provides adequate context: it specifies the source (schema.gov.it catalog), return fields, and usage scenario. It might lack details on pagination or limits, but for a catalog exploration tool, it is sufficiently complete.

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 description has no need to explain parameters. Schema coverage is 100% (vacuously). The description correctly states 'Args: None', which is sufficient.

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 discovers SPARQL endpoints from the schema.gov.it catalog via dcat:DataService. It uses a specific verb ('Discover') and resource ('SPARQL endpoints'), distinguishing it from sibling tools like list_datasets or list_ontologies.

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 'Use when' section explicitly advises to use the tool when exploring external SPARQL endpoints connected to the Italian PA semantic catalog. While it doesn't mention alternatives or when not to use it, the guidance is clear and context-appropriate.

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

list_municipalitiesList MunicipalitiesA
Read-onlyIdempotent

Browse Italian municipalities (comuni) with their codes.

Args:

  • limit: Items per page (default: 50, max: 500)

  • offset: Items to skip (default: 0)

  • keyword: (optional) Filter by name (case-insensitive)

  • withBelfiore: (optional) If true, include Belfiore/cadastral codes via URI extraction (slower)

  • lang: "it" | "en" | "any" (default: "any")

Returns:

  • municipalities: List of cities with ISTAT code, name, and optionally Belfiore code

  • pagination: Total count, offset, has_more

Note: Uses BIND+REPLACE URI extraction for Belfiore codes to avoid Virtuoso timeout on identifierType joins. Each ISTAT code may appear with multiple historical names; results are deduplicated by notation.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoPreferred name language; "any" keeps all languages.any
limitNoItems per page (max 500)
offsetNoItems to skip
keywordNoFilter by municipality name
withBelfioreNoInclude Belfiore/cadastral codes

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and idempotentHint, but the description adds valuable behavioral context: the BIND+REPLACE URI extraction for Belfiore codes to avoid timeout, deduplication logic, and return structure. No contradictions.

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?

The description is well-structured with Args, Returns, and Notes. It is front-loaded and clear, though the technical note about Virtuoso timeout adds slight verbosity.

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 5 parameters and no output schema, the description covers the return structure, pagination, and deduplication. It provides sufficient context for an agent to use the tool correctly.

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

Parameters4/5

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

Schema description coverage is 100%, baseline 3. The description adds meaning: keyword is a filter, lang sets name language, withBelfiore is slower and optional. It explains the tradeoff for withBelfiore beyond the schema.

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 browses Italian municipalities (comuni) with their codes. It uses specific verbs and resource, distinguishing it from sibling tools like list_provinces or list_identifiers.

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 listing municipalities and provides parameter guidance, but does not explicitly state when to use this tool versus alternatives or when not to use it.

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

list_okg_categoriesList OKG Thematic CategoriesA
Read-onlyIdempotent

Fetch the available thematic categories from the Open Knowledge Graphs (OKG) catalog.

Returns: List of category names that can be used as filters in search_okg_resources and compare_coverage_with_okg.

Use when: You need to know which categories are available before filtering OKG searches.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. Description adds no additional behavioral context about side effects, auth needs, or rate limits, only describes return value.

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?

Three concise sentences: what it does, what it returns, when to use. No fluff, well-structured with bolded headings for returns and use case.

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?

Despite simplicity, description fully covers purpose, return value, and usage context. Sibling tools like search_okg_resources are referenced, making it complete for its role.

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?

No parameters, so description needs no parameter info. Baseline 4 as per instructions for 0-param tools.

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?

Description clearly states it fetches thematic categories from OKG catalog, specifying the resource and action. Differentiates from siblings by focusing on listing categories for filtering.

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

Usage Guidelines5/5

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

Explicit 'Use when' statement provides clear guidance: when you need categories before filtering OKG searches. Also notes the output can be used as filters in specific tools, avoiding misuse.

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

list_ontologiesList OntologiesA
Read-onlyIdempotent

List available Ontologies (Data Models) and their titles.

Args:

  • limit: Maximum number of ontologies to return (default: 50)

  • normalize_trailing_slash: If true, merge ontology IRIs that differ only by a final "/" (default: true)

  • include_variants: If true and normalization is enabled, include raw URI variants to expose catalog inconsistencies

Returns:

  • List of ontology URIs with labels/titles, ordered alphabetically

Note: Some ontologies are duplicated in the catalog with and without a trailing slash. By default this tool normalizes them, but you can inspect the raw variants when cleaning the catalog.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
include_variantsNo
normalize_trailing_slashNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive. Description adds value by explaining normalization of trailing slashes and return ordering, which are behavioral traits beyond annotations.

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?

Well-structured with Args, Returns, and Note sections. Efficiently covers multiple aspects without verbosity. Purpose is front-loaded.

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?

Covers purpose, parameters, behavior, and return format. No output schema exists, but description adequately documents return list content and ordering.

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?

All three parameters are explained with defaults and effects, compensating for 0% schema description coverage. Provides meaningful usage context (e.g., normalize_trailing_slash, include_variants).

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?

Description clearly states 'List available Ontologies' and mentions specific resource type and ordering. It is specific but does not explicitly differentiate from sibling list tools like list_vocabularies or list_datasets.

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?

Description explains default parameter behaviors and provides guidance on using include_variants for catalog cleaning. However, it does not give when-not-to-use context or compare with alternative tools.

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

list_propertiesList PropertiesA
Read-onlyIdempotent

List ObjectProperty and DatatypeProperty defined in an ontology or globally.

Args:

  • ontologyUri: (optional) URI of the ontology to filter by

  • propertyType: (optional) "object", "datatype", or "both" (default: "both")

  • limit: Maximum results (default: 50)

Returns:

  • List of properties with domain, range, and label

Examples:

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
ontologyUriNoURI of ontology to filter by
propertyTypeNoboth

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnly, idempotent, non-destructive. The description adds behavioral details: returns a list of properties with domain, range, and label, and limits results to 50 by default. It does not contradict 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 concise and well-structured with Args, Returns, and Examples sections. It front-loads the purpose and uses minimal but complete sentences. No redundant or extraneous information.

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 tool with 3 optional params and no output schema, the description covers all aspects: argument details, return value structure, and concrete examples. It is complete for an agent to understand and use the tool correctly.

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

Parameters4/5

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

Schema has 3 params with only 33% description coverage (ontologyUri has description). The description adds meaning for all params: ontologyUri as optional filter, propertyType as enum with default 'both', limit as max results default 50. It compensates for low schema coverage.

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 lists ObjectProperty and DatatypeProperty from an ontology or globally. It uses specific verbs and resource types, and distinguishes from sibling tools like get_property_details (which likely retrieves a single property) and explore_ontology (broader context).

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 provides explicit arguments, defaults, and examples (empty args, with ontologyUri). It implicitly guides when to use (listing properties) but does not state when not to use or alternatives. Still, the usage context is clear.

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

list_provincesList ProvincesA
Read-onlyIdempotent

List Italian provinces with their codes (ISTAT, car plate, metropolitan city).

Args:

  • keyword: (optional) Filter by province name (case-insensitive)

  • lang: "it" | "en" | "any" (default: "any")

Returns:

  • List of provinces with notation (ISTAT code), name, sigla (car plate), and metro code (if metropolitan city)

Note: Runs 3 parallel queries for names, car plates, and metro codes, then joins client-side. There are ~107 provinces, 14 of which are metropolitan cities.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoPreferred name language; "any" keeps all languages.any
keywordNoFilter by province name

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, idempotentHint, destructiveHint, and openWorldHint. The description adds behavioral transparency by stating it runs 3 parallel queries and joins client-side, and gives specific counts of provinces and metropolitan cities. No contradictions.

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?

The description is well-structured with Args and Returns sections, and the Note adds useful context. It is not overly verbose but could be slightly more concise.

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?

Given no output schema, the description adequately explains return fields (ISTAT code, name, sigla, metro code). It also describes the parallel query execution and counts, making the tool's behavior fully understandable.

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

Parameters4/5

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

Schema coverage is 100% with both parameters described. The description adds extra semantic value: keyword is case-insensitive, and lang default behavior is clarified. This goes beyond the schema's enum and default.

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 it lists Italian provinces with their codes, using specific verbs and resource (list provinces). It distinguishes itself from sibling tools like list_municipalities, list_ontologies, or list_identifiers by focusing on provinces.

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 explains what the tool does and optional arguments but does not provide guidance on when to use this tool vs alternatives. No explicit when-to-use or when-not-to-use context is given.

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

list_vocabulariesList VocabulariesA
Read-onlyIdempotent

List available Controlled Vocabularies (ConceptSchemes) and their instance counts.

Args:

  • limit: Maximum vocabularies to return (default: 20)

Returns:

  • List of ConceptSchemes with labels and concept counts, ordered by count descending

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate readOnly, openWorld, idempotent, and non-destructive behavior. The description adds transparency by specifying the return format (list of ConceptSchemes with labels and concept counts, ordered by count descending), which is beyond annotation coverage.

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 plus a structured Args/Returns section. No wasted words, front-loaded with the core purpose, and well-organized for quick parsing.

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 (one optional parameter, no output schema, safety annotations), the description covers the essential behavior. It returns a list with ordering and fields, which is adequate for agent decision-making.

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

Parameters4/5

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

Schema coverage is 0%, but the description documents the 'limit' parameter with a default value of 20, providing meaning beyond the schema's type and default. For a single self-explanatory parameter, this is sufficient compensation.

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 lists available Controlled Vocabularies (ConceptSchemes) with instance counts. The verb 'list' and specific resource 'ConceptSchemes' differentiate it from sibling tools like browse_vocabulary or search_in_vocabulary.

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 browsing vocabularies but does not explicitly state when to use this tool versus alternatives like explore_catalog or list_ontologies. No exclusion criteria or alternative suggestions are provided.

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

preview_distributionPreview DistributionA
Read-onlyIdempotent

Download and preview the first rows of a distribution file.

Most useful after you already identified a concrete distribution URL. On schema.gov.it, distributions often belong to semantic assets rather than classic tabular datasets.

Args:

  • url: Download URL of the distribution (CSV or JSON)

Returns:

  • Preview of first 10-15 rows/items of data

Supported formats: CSV, JSON (auto-detected by content-type or extension) Timeout: 10 seconds

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe download URL of the distribution

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already indicate read-only, idempotent, non-destructive. The description adds significant behavioral details: it downloads and previews data, returns 10-15 rows, auto-detects CSV/JSON formats, and has a 10-second timeout. No contradictions with 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 well-structured: a concise purpose sentence, followed by usage context, then clearly labeled sections for Args, Returns, Supported formats, and Timeout. No redundant information; every sentence adds value.

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?

Given the tool's simplicity (one parameter, no output schema, rich annotations), the description covers purpose, usage context, parameter details, return format, supported formats, and timeout. The note about semantic assets adds domain-specific completeness. No gaps are apparent.

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

Parameters4/5

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

Schema coverage is 100% (one param with description). The description adds value by specifying the accepted formats (CSV or JSON) and that format is auto-detected, which goes beyond the schema's generic description. This benefits the agent beyond the baseline of 3 for high coverage.

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 first sentence clearly states the action (Download and preview) and the resource (distribution file). The phrase 'most useful after you already identified a concrete distribution URL' distinguishes it from sibling tools like explore_dataset or inspect_concept, which deal with broader resources. The domain-specific note about semantic assets further clarifies its niche.

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 explicitly states when to use: 'most useful after you already identified a concrete distribution URL.' It provides context about schema.gov.it and distributions belonging to semantic assets. However, it does not explicitly exclude alternative tools or mention when not to use it, so it lacks exclusions.

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

query_external_endpointQuery External SPARQL EndpointA
Read-onlyIdempotent

Execute a SPARQL query against any public HTTPS SPARQL endpoint.

Args:

  • endpointUrl: URL of the target SPARQL endpoint (must be HTTPS)

  • query: SPARQL query to execute

  • injectPrefixes: Whether to inject schema.gov.it standard prefixes (default: false)

Returns:

  • Compressed SPARQL results in the same format as internal tools

Security: Only HTTPS endpoints are allowed. Requests timeout after 15 seconds.

Examples:

When to use this vs X:

  • vs query_sparql: use this only for an external HTTPS endpoint; use query_sparql for the built-in schema.gov.it endpoint

  • vs explore_external_endpoint: use this when you already know the query you want to run; use explore_external_endpoint first if you just need a structural overview

Do not use this if:

  • you want to query schema.gov.it itself → use query_sparql

  • you want a curated shortlist of endpoints → use recommend_external_endpoints

  • you only need endpoints already linked in the catalog metadata → use list_linked_endpoints

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSPARQL query to execute
endpointUrlYesURL of the target SPARQL endpoint (HTTPS required)
injectPrefixesNoWhether to inject schema.gov.it standard prefixes (rdf, rdfs, owl, skos, dct...)

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, destructiveHint=false. The description adds valuable behavioral context: security constraint (HTTPS only), timeout (15 seconds), and return format (compressed results). No contradiction.

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 well-organized with clear section headers (Args, Returns, Security, Examples, When to use). Each sentence adds value, no repetition. Appropriate length given complexity (11 lines).

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 description covers all critical aspects: purpose, parameters, security, return format, usage guidance with alternatives, and examples. Despite no output schema, the return description is sufficient. For a tool with 3 parameters and security considerations, this is complete.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for all three parameters. The description adds value with examples (DBpedia, EU Publications Office), clarifies the injectPrefixes default, and reiterates security constraint on endpointUrl. This goes beyond baseline 3.

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 it executes SPARQL queries against any public HTTPS SPARQL endpoint, with specific verb 'Execute a SPARQL query' and resource 'public HTTPS SPARQL endpoint'. It distinguishes from siblings like query_sparql (internal endpoint) and explore_external_endpoint (structural overview).

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

Usage Guidelines5/5

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

The description explicitly provides a 'When to use this vs X' section with clear alternatives (query_sparql, explore_external_endpoint, recommend_external_endpoints, list_linked_endpoints) and a 'Do not use this if' section with specific conditions and correct tool recommendations.

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

query_local_ontologyQuery Local OntologyA
Read-onlyIdempotent

Execute a SPARQL SELECT query against an ontology available on the server filesystem or through HTTP upload.

Quale modalita di input usare:

  • stdio / stessa macchina → file_path

  • server remoto, file grande → get_upload_instructions + upload_id

  • server remoto, file piccolo (<1 MB) → usa inspect_local_ontology con content + format per l'analisi; per query ripetute preferisci upload + upload_id

Args (provide exactly one of file_path or upload_id):

  • file_path: Absolute path on the MCP server filesystem. Use only if the server can really read that path.

  • upload_id: UUID returned by POST /upload. Use this in HTTP/remote mode when the file is local to the client, not the server.

  • query: SPARQL SELECT query

  • inject_prefixes: Inject standard prefixes (rdf, rdfs, owl, skos, dct…) — default true

Important for remote MCP servers:

  • If a direct file path is not accessible from the server, do not keep retrying with alternative local paths.

  • Call get_upload_instructions with the file path, execute the returned curl command via Bash tool (do NOT read the file first), then use the upload_id here.

  • Never relay the file content through the conversation — this wastes tokens. curl sends bytes directly from disk to server.

Returns:

  • Compressed SPARQL results (tabular for >5 rows, compact for ≤5 rows)

When to use this vs X:

  • vs query_sparql: use this for a local/uploaded ontology; use query_sparql for the default remote catalog

  • vs query_uploaded_store: prefer this tool when you already have an upload_id; query_uploaded_store is only a thinner upload-specific path

Do not use this if:

  • you need a standard profile of a concept or property → use inspect_local_concept or inspect_local_property

  • you just need a summary of the ontology → use inspect_local_ontology

Supported formats: .ttl (Turtle), .owl / .rdf (RDF/XML), .nt (N-Triples), .jsonld (JSON-LD), .graphol (Graphol XML) Efficiency: File is cached after first load; repeated queries on the same unchanged file skip re-parsing. Note: Standard prefixes (rdf, rdfs, owl, skos…) are injected automatically unless inject_prefixes=false.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSPARQL SELECT query to execute
file_pathNoAbsolute path to the local ontology file (local/Docker)
upload_idNoUpload UUID returned by POST /upload (HTTP mode)
inject_prefixesNoInject standard prefixes (default: true)

TDQS

A4.8/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint=true, idempotentHint=true, destructiveHint=false), the description adds file caching, automatic prefix injection, compressed result format, supported file formats, and efficiency notes. No contradictions.

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?

Well-structured with headings, bullet points, and clear sections. While lengthy, every part serves a purpose. Slightly verbose but not wasteful.

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?

Given the complexity (multiple input modes, remote server considerations, many siblings), the description covers all necessary aspects: return format, caching, prefixes, supported formats, and links to related tools. No 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?

Schema coverage is 100%, so baseline is 3. The description adds context: mutual exclusivity of file_path and upload_id, logic for choosing input mode, and default for inject_prefixes. Adds value beyond schema.

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 executes SPARQL SELECT queries against a local or uploaded ontology, using a specific verb and resource. It distinguishes from sibling tools like query_sparql and query_uploaded_store by specifying when to use each.

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

Usage Guidelines5/5

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

Provides explicit when-to-use and when-not-to-use guidance, including three input modes (file_path, upload_id, inspect_local_ontology) with conditions, and lists alternatives for concept/property inspection and ontology summary.

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

query_sparqlExecute SPARQL QueryA
Read-onlyIdempotent

Execute a RAW SPARQL query against schema.gov.it.

Args:

  • query: The SPARQL query to execute (prefixes are auto-injected)

  • source: "schema" | "local" | "hybrid" (default: "schema")

  • file_path / content / upload_id: local context when source="local"

Returns:

  • Compressed JSON result (tabular for >5 rows, object array otherwise)

Examples:

  • SELECT ?s ?p ?o WHERE { ?s ?p ?o } LIMIT 10

  • SELECT ?class (COUNT(?s) AS ?count) WHERE { ?s a ?class } GROUP BY ?class

When to use this vs X:

  • vs query_local_ontology: use this for the default remote catalog schema.gov.it; use query_local_ontology for a file/store loaded locally or via upload_id

  • vs query_external_endpoint: use this for the built-in schema.gov.it endpoint; use query_external_endpoint only for another HTTPS SPARQL endpoint

  • vs specialized tools: use this only when no dedicated tool already covers the task

Do not use this if:

  • you need a concept profile → use inspect_concept

  • you need property semantics → use get_property_details

  • you need to search by keyword without a known URI → use search_concepts

  • you need to browse a vocabulary or dataset → use the dedicated vocabulary/dataset tools

Important: raw hybrid SPARQL is not supported yet. Use source="hybrid" only on specialized concept/property tools, not here.

Note: Use this for ad-hoc exploration. Prefer specialized tools for common operations.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe SPARQL query to execute
formatNoRDF content type for inline content
sourceNoExecution context: "schema" for schema.gov.it, "local" for a file/uploaded store. "hybrid" is reserved and not supported for raw SPARQL.schema
contentNoInline RDF content when source='local'
file_pathNoAbsolute path to a local ontology file when source='local'
upload_idNoUploaded ontology store ID when source='local'

TDQS

A4.8/5.0
Behavior5/5

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

Adds behavioral details beyond annotations: prefix auto-injection, compressed JSON response format, unsupported hybrid mode. No contradiction with annotations.

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?

Well-structured with sections (Args, Returns, Examples, guidance), but somewhat lengthy. Every sentence adds value, but could be more concise.

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?

Given 6 parameters, no output schema, and annotations, the description covers the tool comprehensively with examples, return format, and usage scenarios.

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

Parameters4/5

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

Schema coverage is 100%, but description adds context for parameters (grouping, default source, hybrid restriction) and includes examples. Could be slightly more detailed for source 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 it executes a RAW SPARQL query against schema.gov.it, and distinguishes from sibling tools by listing alternatives and disclaimers.

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

Usage Guidelines5/5

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

Explicitly provides when-to-use and when-not-to-use guidance with specific alternative tools, making selection unambiguous.

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

query_uploaded_storeQuery Uploaded StoreA
Read-onlyIdempotent

Execute a SPARQL SELECT query against a temporary ontology store created via HTTP upload.

Workflow (HTTP mode only):

  1. Call get_upload_instructions with the local file path → get the curl command

  2. Execute the curl command via Bash tool (file bytes go directly to the server, no AI token consumption)

  3. Parse the id from the curl response

  4. Use id here to run SPARQL queries, OR pass it as upload_id to inspect_local_ontology, query_local_ontology, compare_local_with_remote

When to use this workflow:

  • The MCP server is remote, containerized, or otherwise cannot read the user's local filesystem.

  • A previous file_path attempt failed because the path only exists on the client machine.

  • You want to send raw file bytes directly without consuming model tokens.

When to use this vs X:

  • prefer query_local_ontology with upload_id for the main MCP workflow

  • use this only if you already have the upload store id and explicitly want to query that temporary store directly

Deprecated direction: this is an upload-specific shortcut; for new agent flows prefer query_local_ontology with upload_id

Supported Content-Types for upload: text/turtle, application/rdf+xml, application/n-triples, application/ld+json, application/graphol+xml

Notes:

  • Uploaded stores are kept for 1 hour then evicted

  • Standard prefixes (rdf/rdfs/owl/skos/dct/xsd/dcat/foaf/clv/cpv/l0/sm) are auto-injected

  • The same store is also queryable directly via GET /sparql/<id>?query=...

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesUpload UUID returned by POST /upload
queryYesSPARQL SELECT query to execute against the uploaded store

TDQS

A4.7/5.0
Behavior5/5

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

Builds on annotations (readOnly, idempotent, non-destructive) by adding key behavioral facts: stores evicted after 1 hour, standard prefixes auto-injected, and alternative direct endpoint access. No contradiction with annotations.

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?

Well-structured with clear sections (summary, workflow, when-to-use, alternatives, notes). Front-loaded with purpose. Slightly verbose due to workflow details that could be external, but every sentence is informative and earns its place.

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?

Very complete for a complex tool: explains prerequisite workflow, supported content types, eviction policy, and prefix injection. Lacks specification of the output format (e.g., SPARQL results JSON), but this is somewhat implied by the nature of a SPARQL query tool.

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

Parameters4/5

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

Schema already has 100% description coverage for both parameters (id and query). The description adds context about where the id comes from (workflow step 3) and that query is a SPARQL SELECT, but does not add syntax or format details beyond the schema.

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 it executes SPARQL SELECT queries against a temporary ontology store created via HTTP upload, specifying both the resource (temporary store) and action (querying). It distinguishes from siblings like query_local_ontology and query_sparql by emphasizing the upload workflow.

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

Usage Guidelines5/5

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

Provides explicit step-by-step workflow, conditions for when to use (HTTP mode only, remote server scenario), and clear alternatives (prefer query_local_ontology with upload_id). Also includes deprecation note guiding toward newer flows.

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

recommend_external_endpointsRecommend External SPARQL EndpointsA
Read-onlyIdempotent

Return a curated list of useful public SPARQL endpoints to pair with schema.gov.it.

Args:

  • category: (optional) Filter by endpoint family: "italian-pa", "eu", or "knowledge-graph"

  • limit: Maximum results (default: 10)

Returns:

  • Curated endpoint recommendations with rationale, suggested use cases, and example query ideas

Use when: You want a high-signal shortlist of external endpoints before using query_external_endpoint or explore_external_endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of endpoints to return
categoryNoOptional category filter

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds value by specifying that results include rationale, suggested use cases, and example query ideas, and that the list is curated (high-signal). No contradictions.

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 concise and well-structured: a one-sentence purpose, bullet-pointed Args and Returns, and a clear 'Use when' section. Every sentence adds necessary information with no redundancy.

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 no output schema, the description adequately describes the return as curated recommendations with rationale, use cases, and example queries. It also sets context for when to use the tool. Could mention behavior without category filter, but still complete enough.

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%, so baseline is 3. The description repeats the parameter names and default but adds little beyond the schema descriptions. Category filter is described as 'endpoint family' with enumerated values, but this is already in the schema.

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 a curated list of useful public SPARQL endpoints to pair with schema.gov.it, which is a specific verb+resource. It distinguishes from sibling tools by explicitly mentioning use before query_external_endpoint or explore_external_endpoint.

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

Usage Guidelines5/5

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

Description includes 'Use when: You want a high-signal shortlist of external endpoints before using query_external_endpoint or explore_external_endpoint', providing explicit context and alternatives. This tells the agent when to use this tool and what to do next.

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

resolve_territorial_uriResolve Territorial URIA
Read-onlyIdempotent

Resolve an Italian territorial code to its canonical CLV URI with labels and related URIs.

Args:

  • code_type: Type of code: "istat-comune", "istat-provincia", "istat-regione", or "belfiore"

  • code: The code value (e.g. "046030" for ISTAT comune, "F205" for Belfiore)

  • date: (optional) ISO date string (e.g. "2022-08-12") — noted in output, full temporal filtering not yet implemented

Returns:

  • uri: canonical CLV URI

  • name: official name

  • code_type and code

  • related: connected territorial URIs (province for cities, region for provinces)

  • date_note: reminder if date was provided

Use when: You have a raw territorial code (ISTAT or Belfiore) and need the official semantic URI to use in JSON-LD or RDF modeling.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThe code value (e.g. '046030', 'F205', '001')
dateNoOptional ISO date for temporal context (e.g. '2022-08-12')
code_typeYesType of territorial code

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, openWorld, idempotent, non-destructive. The description adds that the date parameter is noted in output but full filtering not yet implemented, providing useful behavioral context beyond 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 well-structured with clear sections (Args, Returns, Use when). It uses bullet-like formatting and every sentence adds value without redundancy.

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?

Given the tool's simplicity (3 params, no output schema), the description covers purpose, parameters, return fields, usage guidance, and a limitation. It is fully self-contained.

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

Parameters4/5

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

Schema coverage is 100% with descriptions for all params. The description adds examples, allowed values (matching enum), and explains the date parameter's partial implementation, adding value beyond the schema.

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 resolves Italian territorial codes to canonical CLV URIs. It uses a specific verb-resource combination and distinguishes from siblings which handle search, listing, or querying rather than code resolution.

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 'Use when' section explicitly tells agents to use this when they have a raw code and need a semantic URI. It does not list alternatives, but the context of sibling tools makes the purpose sufficiently clear.

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

search_conceptsSearch ConceptsA
Read-onlyIdempotent

Fuzzy search for concepts/classes/properties by keyword.

Args:

  • keyword: Search term (e.g. 'amministrazione')

  • limit: Maximum results (default: 10)

  • resource_type: (optional) Filter by type: "class", "property", "concept"

  • ontology_filter: (optional) URI prefix to restrict the search (e.g. 'https://w3id.org/italia/onto/COV/')

  • prefer_core: (optional) If true, results from core ontologies (COV, CPV, CLV, l0) are ranked first

  • lang: "it" | "en" | "any" (default: "any")

Returns:

  • Matching subjects with type and label

When to use this vs X:

  • use this when you do not know the exact URI yet

  • vs search_in_vocabulary: use this to search across the whole catalog; use search_in_vocabulary or browse_vocabulary only when the ConceptScheme is already known

Use when: You don't know the exact URI of a concept. Use resource_type and ontology_filter to reduce noise.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoPreferred label language; "any" keeps all languages.any
limitNo
keywordYesThe search term (e.g. 'amministrazione')
prefer_coreNoIf true, rank results from COV, CPV, CLV, l0 ontologies first
resource_typeNoFilter by resource type: "class", "property", or "concept"
ontology_filterNoRestrict results to URIs starting with this prefix (e.g. 'https://w3id.org/italia/onto/COV/')

TDQS

A4.9/5.0
Behavior5/5

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

Disclosures include fuzzy search behavior, return format ('Matching subjects with type and label'), ranking with prefer_core, and default limit. Annotations (readOnlyHint, etc.) are consistent and description adds significant context beyond them.

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?

Well-structured with sections (description, args, returns, when to use). Every sentence provides value; no redundancy. Efficient length for a 6-parameter tool.

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?

Given the tool's complexity and no output schema, the description covers return format, parameter usage, and when to use. It is complete for an agent to select and invoke correctly.

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

Parameters4/5

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

Schema coverage is high (83%), and the description adds meaningful context: keyword example, limit default, resource_type options, ontology_filter example, prefer_core explanation, lang options. However, some parameter details are already in schema, so slightly above 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 'Fuzzy search for concepts/classes/properties by keyword', specifying the verb and resource. It distinguishes from sibling tools like search_in_vocabulary by explaining when to use each.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool ('when you do not know the exact URI yet') and contrasts with alternatives (search_in_vocabulary, browse_vocabulary). Also advises using resource_type and ontology_filter to reduce noise.

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

search_in_vocabularySearch in VocabularyA
Read-onlyIdempotent

Search for concepts within a specific Controlled Vocabulary (ConceptScheme).

Args:

  • schemeUri: URI of the ConceptScheme (from list_vocabularies)

  • keyword: Search term for label matching (case-insensitive regex)

  • limit: Maximum results (default: 20)

  • lang: "it" | "en" | "any" (default: "any")

Returns:

  • Matching concepts with labels and optional notation codes

When to use this vs X:

  • vs browse_vocabulary: use this only for a quick keyword search inside a scheme you already know

  • browse_vocabulary is usually the better default because it supports pagination and already accepts keyword

Deprecated: Deprecated. Usa browse_vocabulary con il parametro keyword.

ParametersJSON Schema
NameRequiredDescriptionDefault
langNoPreferred label language; "any" keeps all languages.any
limitNo
keywordYesThe search keyword
schemeUriYesThe URI of the ConceptScheme (from list_vocabularies)

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds behavioral details: case-insensitive regex keyword matching, default limit, language options, and return format (labels and optional notation codes). No contradictions.

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 well-structured: a one-sentence summary, clear list of args, return info, usage guidance, and deprecation notice. Every sentence adds value; no wasted words.

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?

Covers all parameters, return values, and usage context. Differentiates from sibling browse_vocabulary. Lacks error handling or edge cases, but for a deprecated search tool it is sufficient.

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

Parameters4/5

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

Schema coverage is 75%; description adds meaning beyond schema: schemeUri comes from list_vocabularies, keyword is case-insensitive regex, limit is maximum results, lang values are explicitly listed. Adds useful context not in schema.

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 searches for concepts within a specific Controlled Vocabulary, with a specific verb and resource. It distinguishes itself from browse_vocabulary by noting it is for quick keyword search in a known scheme.

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

Usage Guidelines5/5

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

Explicitly provides when-to-use vs alternatives: 'use this only for a quick keyword search inside a scheme you already know', and recommends browse_vocabulary as a better default. Also marks the tool as deprecated, guiding agents away from it.

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

search_okg_resourcesSearch Open Knowledge Graphs ResourcesA
Read-onlyIdempotent

Search the Open Knowledge Graphs (OKG) catalog for ontologies, vocabularies, and taxonomies.

OKG indexes 1800+ semantic resources with metadata sourced from Wikidata. All data is CC0.

Args:

  • query: Search term (required)

  • category: Optional thematic category filter

  • type: Optional resource type filter ("Ontology", "ControlledVocabulary", "Taxonomy")

  • limit: Maximum results (default: 20)

Returns:

  • List of resources with title, wikidataId, description, category, homepage, licenses, types

Available categories: fetched dynamically from api.openknowledgegraphs.com at runtime.

Use when: Discovering international ontologies and vocabularies in a domain before aligning with schema.gov.it resources. Pair with find_okg_alignments or compare_coverage_with_okg.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoOptional resource type filter
limitNoMaximum number of results (default: 20)
queryYesSearch term
categoryNoOptional thematic category filter (see OKG categories)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, idempotentHint, etc. Description adds that data is CC0, categories are fetched dynamically, and explains the return format, offering solid behavioral context beyond 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?

Structured with sections, bullet points, and no filler. Every sentence adds value, including usage context and return explanation.

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?

Despite no output schema, description explains return fields. All 4 parameters are covered, and context (CC0 license, dynamic categories) is provided. Complete for this tool's complexity.

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?

Input schema covers 100% of parameters with descriptions. The description repeats the parameter list but adds example values and default (limit: 20). No contradiction, but adds little beyond schema.

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 it searches the OKG catalog for ontologies, vocabularies, and taxonomies, which distinguishes it among many sibling search tools like search_concepts and search_in_vocabulary.

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

Usage Guidelines5/5

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

Explicitly states when to use: 'Discovering international ontologies... before aligning with schema.gov.it resources,' and suggests complementary tools (find_okg_alignments, compare_coverage_with_okg), meeting the highest standard.

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

suggest_improvementsSuggest ImprovementsA
Read-onlyIdempotent

Analyze the ontology for structural issues.

Args:

  • limit: Maximum issues per category (default: 20)

Returns:

  • possible_cycles: Classes with mutual rdfs:subClassOf

  • unused_classes: Classes with no instances and no subclasses

  • properties_missing_domain_or_range: Properties with incomplete domain/range declarations

  • large_classes_without_scheme: Classes with >1000 instances and no evidence of skos:ConceptScheme membership

Note: Both analyses run in parallel.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint, idempotentHint, destructiveHint. Description adds value by noting parallel execution and specific return categories, but does not contradict 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?

Well-structured with Args, Returns, Note sections. Every sentence adds value, no waste.

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?

Given one parameter, no output schema, and complexity of ontology analysis, the description adequately covers return values and parallel execution behavior.

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

Parameters5/5

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

Despite 0% schema coverage, the description fully explains the limit parameter with default value and meaning: 'Maximum issues per category (default: 20)'.

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?

Description clearly states the tool analyzes ontology for structural issues, listing specific categories (cycles, unused classes, etc.). It distinguishes from siblings like check_overlaps and check_quality by focusing on improvement suggestions.

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?

Usage context is implied ('analyze the ontology for structural issues') but no explicit guidance on when to use versus alternatives or when not to use.

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

suggest_new_toolsSuggest New ToolsB
Read-only

Analyze usage logs to suggest new specialized tools.

Args: None

Returns:

  • List of recommendations based on frequently queried types in raw SPARQL

Note: Requires at least 2 queries for the same type to suggest a tool.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. Description adds a behavioral constraint (min query count) and explains the analysis source (usage logs), complementing annotations without contradicting them.

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?

Description is concise with only two sentences plus a note. Purpose is stated upfront, and no unnecessary text is present. However, it could be slightly more structured (e.g., listing args and returns explicitly).

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 no parameters and no output schema, the description covers the tool's purpose, input condition, and output type (list of recommendations). It omits details like recommendation format or examples, but remains complete enough for a simple tool.

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?

No parameters exist, so description is not required to add parameter details. Baseline score of 4 applies as schema coverage is 100% and description adds no redundant information.

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?

Description clearly states the tool analyzes usage logs to suggest new specialized tools, using a specific verb and resource. It distinguishes itself from sibling tools like 'suggest_improvements' by focusing on new tools from usage data, though it doesn't explicitly contrast them.

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?

Description provides a precondition (requires at least 2 queries for same type) but lacks guidance on when to use this tool versus alternatives like suggest_improvements or analyze_usage. No explicit context for selection.

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. Dates show when Glama detected each change.

  1. 47 tool updatesv1.0.0
    • First observedanalyze_usage
    • First observedbrowse_vocabulary
    • First observedcheck_coverage
    • First observedcheck_overlaps
    • First observedcheck_quality
    • First observedcompare_coverage_with_okg
    • First observedcompare_local_with_remote
    • First observeddescribe_resource
    • First observedexplore_catalog
    • First observedexplore_classes
    • First observedexplore_dataset
    • First observedexplore_external_endpoint
    • First observedexplore_ontology
    • First observedfind_external_alignments
    • First observedfind_okg_alignments
    • First observedfind_recommended_scheme_for_property
    • First observedfind_relations
    • First observedfind_semantic_software
    • First observedget_property_details
    • First observedget_upload_instructions
    • First observedinspect_concept
    • First observedinspect_local_concept
    • First observedinspect_local_ontology
    • First observedinspect_local_property
    • First observedlist_datasets
    • First observedlist_identifiers
    • First observedlist_instances_of_class
    • First observedlist_linked_endpoints
    • First observedlist_municipalities
    • First observedlist_okg_categories
    • First observedlist_ontologies
    • First observedlist_properties
    • First observedlist_provinces
    • First observedlist_vocabularies
    • First observednavigate_skos_hierarchy
    • First observedpreview_distribution
    • First observedquery_external_endpoint
    • First observedquery_local_ontology
    • First observedquery_sparql
    • First observedquery_uploaded_store
    • First observedrecommend_external_endpoints
    • First observedresolve_territorial_uri
    • First observedsearch_concepts
    • First observedsearch_in_vocabulary
    • First observedsearch_okg_resources
    • First observedsuggest_improvements
    • First observedsuggest_new_tools

TDQS

A3.9/5.0
Disambiguation3/5

Many tools have distinct purposes, but there are several overlapping pairs (e.g., query_sparql vs query_local_ontology vs query_external_endpoint; inspect_concept vs inspect_local_concept). The descriptions help differentiate, but with 47 tools an agent may still struggle to select the correct one.

Naming Consistency4/5

Tool names follow a consistent verb_noun pattern with underscores (e.g., list_ontologies, explore_classes). A few names are longer phrases (find_recommended_scheme_for_property), but overall the pattern is predictable.

Tool Count3/5

At 47 tools, the count is high for a single server. While the domain is broad (semantic catalog, external endpoints, OKG, territorial codes), many tools are specialized. The count is borderline between 'slightly over' and 'too many' for typical use.

Completeness4/5

The tool set covers a wide range: SPARQL execution, ontology/vocabulary/dataset exploration, quality checks, coverage analysis, external endpoint integration, and OKG catalog interaction. Missing reasoning or classification tools, but the surface is largely complete for the stated catalog purpose.

Maintenance

ActivityInactive
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

  • A
    license
    A
    quality
    A
    maintenance
    Enables AI assistants to search, explore, and query any CKAN open data portal through natural language, making public datasets accessible without requiring knowledge of the portal's API.
    20
    414
    57
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables LLMs to access and analyze Italian statistical data from ISTAT via natural language queries, supporting dataset discovery, exploration, and data retrieval.
    9
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying Italy's open data portal (dati.gov.it) via its CKAN API, providing access to thematic categories and datasets.
    5
    MIT

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/italia/dati-semantic-mcp'

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