mcp-italian-workplace-safety
This server exposes Italian workplace safety data (D.Lgs 81/08) to any MCP-compatible AI assistant, enabling queries about ATECO sectors, mandatory training courses, renewal schedules, legal glossary terms, and regulations.
Capabilities:
Look up ATECO sectors (
get_ateco): Retrieve details about a specific ATECO 2007 economic sector by code or slug, including risk classification (basso/medio/alto) and required safety courses per D.Lgs 81/08.Search ATECO sectors (
search_ateco): Fuzzy-search Italian business sectors by name fragment (e.g. "costruzioni", "ristorazione") and get up to 20 matches.Get mandatory training courses (
get_corsi_obbligatori): List all mandatory workplace safety training courses for a given ATECO sector, including course name, duration, legal reference, and refresh periodicity.Get training renewal schedules (
get_scadenze_formazione): Retrieve the renewal/refresh schedule for a specific safety training course (or all courses), including initial duration in hours, refresh interval in months, required modalities, and normative references.Search the D.Lgs 81/08 glossary (
search_glossario): Query a glossary of 200+ legal and technical terms by name or definition fragment, with optional category filtering (e.g. "figure", "rischi", "normativa").Get regulations (
get_normativa): Retrieve a specific Italian workplace safety regulation by slug, or the full index of regulations (D.Lgs 81/08, Accordi Stato-Regioni, DM applicativi, EU regulations).Search regulations (
search_normativa): Fuzzy-search Italian workplace safety regulations by name, scope, or article reference.Autocomplete suggestions (
suggest): Get OpenSearch-style autocomplete combining courses and glossary terms, useful for building search UIs or refining queries.Static resources: Access full datasets for ATECO sectors, scadenze, glossario, normativa, an LLM site map, and the OpenAPI spec.
Allows Windsurf (Codeium's AI assistant) to access Italian workplace safety data via MCP tools.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-italian-workplace-safetyQuali corsi servono per ATECO 41?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-italian-workplace-safety
MCP server che espone i dati di 123Formazione sulla sicurezza sul lavoro italiana (D.Lgs 81/08) a qualsiasi AI assistant compatibile Model Context Protocol — Claude Desktop, Cursor, Cline, Windsurf, Continue, e altri.
Chiedi al tuo assistente AI cose tipo:
"Quali corsi sicurezza sono obbligatori per il codice ATECO 41 (costruzioni di edifici)?"
"Ogni quanto va aggiornato il corso preposto secondo l'Accordo Stato-Regioni 78/CSR del 17 aprile 2025?"
"Cerca nel glossario D.Lgs 81/08 il termine RSPP e dammi la definizione + normativa di riferimento."
"Mostrami tutte le sanzioni dell'art. 55 D.Lgs 81/08 per omessa formazione."
L'assistente userà gli strumenti MCP per chiamare l'API pubblica gratuita di 123formazione.com/api/public e restituire dati strutturati, citabili e aggiornati.
Install
Quick install (npx — no global install)
// claude_desktop_config.json (Claude Desktop) o equivalente
{
"mcpServers": {
"italian-workplace-safety": {
"command": "npx",
"args": ["-y", "github:tutor-sicurezza/mcp-italian-workplace-safety"]
}
}
}Local install
git clone https://github.com/tutor-sicurezza/mcp-italian-workplace-safety.git
cd mcp-italian-workplace-safety
npm install
npm run buildPoi nel client MCP punta al binario dist/index.js:
{
"mcpServers": {
"italian-workplace-safety": {
"command": "node",
"args": ["/absolute/path/to/mcp-italian-workplace-safety/dist/index.js"]
}
}
}Related MCP server: Consulente Legale
Client-specific instructions
Claude Desktop
Apri il file di configurazione:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
Aggiungi il blocco
italian-workplace-safetycome sopra.Riavvia Claude Desktop. Vedrai i tool
get_ateco,search_ateco,get_corsi_obbligatori,get_scadenze_formazione,search_glossario,get_normativa,search_normativa,suggestdisponibili nelle conversazioni.
Cursor
Apri
~/.cursor/mcp.json(crea il file se non esiste).Aggiungi lo stesso JSON dell'esempio sopra.
Riavvia Cursor.
Cline (VS Code extension)
Apri le settings VS Code → cerca "Cline MCP".
Aggiungi il server
italian-workplace-safetycon il blocco JSON.
Windsurf
Apri
~/.codeium/windsurf/mcp_config.json.Aggiungi il blocco MCP server come sopra.
Continue (VS Code/JetBrains)
Apri
~/.continue/config.json.Aggiungi nella sezione
mcpServers.
Tools
Tool | Descrizione |
| Dettagli ATECO 2007 (codice o slug) con classificazione rischio e corsi obbligatori |
| Ricerca fuzzy ATECO per nome settore |
| Lista corsi sicurezza obbligatori per settore ATECO |
| Periodicità rinnovo formazione (D.Lgs 81/08 + Accordi SR) |
| Glossario 200+ termini D.Lgs 81/08 |
| Index normative italiane SSL |
| Ricerca fuzzy normative |
| Autocomplete combinato corsi + glossario |
Resources
URI | Descrizione |
| Dataset ATECO completo |
| Scadenze formazione |
| Glossario completo |
| Normative complete |
| Site map per LLM (llmstxt.org) |
| OpenAPI 3.1 spec |
Data source
Tutti i dati sono serviti dall'API pubblica gratuita di 123Formazione — REST + OpenAPI 3.1 + DCAT-AP-IT, licenza CC-BY 4.0.
L'API espone:
ATECO 2007 + classificazione rischio (Accordo Stato-Regioni 21/12/2011)
Scadenze formazione (D.Lgs 81/08 + Accordi 2011/2012/2016 + Rep. 78/CSR 2025)
Glossario 200+ termini
Index normative (D.Lgs 81/08, Accordi SR, DM 388/2003, DM 02/09/2021, DPR 177/2011, GDPR, Reg. CE 852/2004, CEI 11-27)
Environment variables (optional)
MCP_123F_BASE_URL— override base URL (defaulthttps://123formazione.com)
English summary
This MCP server exposes Italian workplace-safety data (D.Lgs 81/08 — Italy's main occupational safety code) to any MCP-compatible AI assistant. It uses the free public REST API of 123formazione.com and provides 8 tools and 6 resources for querying ATECO economic sectors with risk classification, required training courses, renewal schedules, glossary terms, and regulations.
Useful for: legal-tech tools, compliance assistants, HR / RSPP (workplace safety officers) chatbots, content generation for Italian SSL (Salute e Sicurezza sul Lavoro) topics.
Related repositories
Open dataset / tooling ecosystem for Italian workplace safety (D.Lgs 81/08) maintained by @tutor-sicurezza:
Datasets
italian-ateco-database — ATECO 2007 codes + workplace-safety risk
italian-province-regioni-dataset — Italian provinces + regions metadata
comuni-italiani-istat — Italian municipalities with ISTAT codes
dlgs-81-08-glossario — 218 D.Lgs 81/08 glossary terms
dlgs-81-08-testo-unico — D.Lgs 81/08 structured by Title + key articles index
haccp-italia-normativa-regionale — HACCP regional regulations (20 Italian regions)
verifiche-periodiche-inail-attrezzature — Equipment subject to INAIL periodic verification
accordi-stato-regioni-sicurezza-lavoro — Stato-Regioni training agreements
Libraries / tools
scadenze-formazione-calculator — Training renewal schedule calculator
next-seo-italian-helpers — Next.js SEO helpers for Italian B2B
Online services
Public REST API + OpenAPI 3.1 + DCAT-AP-IT — Free open data API
Live documentation site (GitHub Pages) — Accordi Stato-Regioni
All resources are MIT or CC-BY licensed and maintained as production-quality open data.
License
MIT © 2026 tutor-sicurezza / 123Formazione
Data served from the API is licensed under CC-BY 4.0 with attribution 123Formazione — https://123formazione.com.
Available Tools
8 toolsget_atecoA
Get a single ATECO 2007 economic sector entry by code (e.g. '41') or slug (e.g. '41-costruzioni-edifici'). Returns sector name, risk classification (basso/medio/alto), required courses per D.Lgs 81/08 and Accordo Stato-Regioni 21/12/2011. Use this when the user mentions an Italian business sector or activity.
| Name | Required | Description | Default |
|---|---|---|---|
| codice | Yes | ATECO code (e.g. '41') or slug (e.g. '41-costruzioni-edifici') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that it returns sector name, risk classification, and required courses. No annotations provided, so description carries the full burden. It does not cover error behavior or authentication needs, but for a simple lookup it is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences: input specification, output description, and usage hint. No unnecessary words, well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and lack of output schema, the description adequately covers what the user needs to know. No mention of geographic applicability (Italy), but it's implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, and the description repeats examples already present in the schema. Adds no new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get a single ATECO 2007 economic sector entry by code or slug', specifying the resource and action. Differentiates from sibling search_ateco by explicitly targeting single entry retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear usage hint: 'Use this when the user mentions an Italian business sector or activity.' Lacks explicit exclusion or alternative suggestion, but context implies search_ateco for multiple results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_corsi_obbligatoriA
Get the list of mandatory workplace-safety training courses for a given ATECO sector. Includes course name, duration, normative reference, and refresh periodicity.
| Name | Required | Description | Default |
|---|---|---|---|
| ateco | Yes | ATECO code or slug |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It states the tool returns a list with specific fields, implying a read-only operation, but does not disclose permission requirements, rate limits, or side effects. It is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the main purpose and includes key output details. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 explains the return fields. However, it omits potential error conditions or pagination details. For a simple list tool, it is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% coverage for the single parameter 'ateco' with description 'ATECO code or slug'. The description adds only the context of 'given ATECO sector', which is marginal beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies exactly what the tool does: 'Get the list of mandatory workplace-safety training courses for a given ATECO sector.' It lists included fields (course name, duration, normative reference, refresh periodicity), distinguishing it from sibling tools like get_normativa or search_normativa.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states the context for use: retrieving mandatory courses for an ATECO sector. However, it does not explicitly mention when not to use it or suggest alternatives, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_normativaA
Get an Italian workplace-safety regulation by slug, or the full index of regulations if no slug provided. Includes D.Lgs 81/08, Accordi Stato-Regioni, DM applicativi, EU regulations.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Optional regulation slug. Omit for index. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the dual behavior (single vs. index) and the scope of regulations, but does not mention side effects, permissions, or rate limits. Adequate but could be more thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no wasted words. It is front-loaded and efficient, presenting all necessary information succinctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one optional parameter and no output schema, the description covers the functionality well. It could be improved by hinting at the structure of the index, but is generally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single parameter 'slug'. The description adds value by clarifying the dual usage (omit for index) and listing included regulation types, going beyond the schema's minimal description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the specific verb 'Get' and resource 'Italian workplace-safety regulation', and clearly distinguishes two modes: by slug or full index. It also lists included regulation types, differentiating it from sibling tools like search_normativa.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (with a slug for a specific regulation, without for the index), but does not explicitly mention when not to use it or suggest alternatives like search_normativa for fuzzy searches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scadenze_formazioneA
Get the renewal schedule for a specific Italian workplace-safety training course, or all schedules if no course is specified. Includes initial duration (hours), refresh interval (months), required modalities, and normative reference (D.Lgs 81/08, Accordi Stato-Regioni).
| Name | Required | Description | Default |
|---|---|---|---|
| corso | No | Optional course slug (e.g. 'lavoratori-alto', 'preposto', 'rspp-modulo-a', 'antincendio-l2'). Omit to get all. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries the burden. It describes the tool as a read operation that returns structured data about schedules. Since it's a read-only tool with no side effects, the description is sufficient without mentioning auth or destructive actions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main action and clear structure. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has one optional parameter, no output schema, and no annotations, the description is complete. It explains what the tool returns, the effect of omitting the parameter, and the normative references included.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description of the corso parameter. The description adds examples and explains that omitting it returns all schedules, providing meaningful context beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets renewal schedules for Italian workplace-safety training courses, with or without a course specified, and lists included fields (duration, interval, modalities, normative reference). It distinguishes from sibling tools by being specifically about schedules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use (to get a renewal schedule or all) and that omitting the corso parameter returns all. While it doesn't explicitly discuss when not to use or list alternatives, the purpose is straightforward and the single-parameter design makes usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_atecoA
Fuzzy search ATECO 2007 sectors by name fragment (e.g. "costruzioni", "ristorazione"). Returns up to 20 matches.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query (sector name fragment) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description carries full burden. Discloses fuzzy search behavior and result limit (up to 20 matches). No mention of side effects or authentication, but acceptable for a read-only search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, 17 words, includes all key elements: action (fuzzy search), target (ATECO 2007), input (name fragment), examples, and output limit. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers essential aspects for a simple search tool: what it searches, how it searches (fuzzy, by fragment), and result cap. No output schema exists, so missing details about result structure; but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage for the single parameter 'query' is 100%. Description repeats the parameter's purpose ('name fragment') but adds no new semantic detail beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Fuzzy search ATECO 2007 sectors by name fragment', specifying the target resource (ATECO 2007 sectors) and the action (fuzzy search). Distinguishes from sibling tools like 'get_ateco' which presumably retrieves by exact code.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides examples ('costruzioni', 'ristorazione') and mentions result limit (up to 20 matches). Implicitly contrasts with siblings, but no explicit when-not-to-use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_glossarioA
Search the Italian D.Lgs 81/08 glossary (200+ legal/technical terms) by term or definition fragment. Returns matched terms with definitions and normative references.
| Name | Required | Description | Default |
|---|---|---|---|
| termine | Yes | Term or fragment to search | |
| categoria | No | Optional category filter ('concetti', 'documenti', 'figure', 'normativa', 'rischi') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the input and output behavior succinctly, but does not explicitly state that the tool is read-only, idempotent, or free of side effects. For a search tool, this is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loading the action and then the result. Every word adds value, with no fluff. It is efficiently structured for agent consumption.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with two parameters and no output schema, the description effectively covers the purpose, input, and output. It mentions the glossary size and categories of terms. It could mention result limits or pagination, but overall it is sufficiently complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with descriptions. The tool description adds context about searching by 'term or definition fragment' but does not provide additional semantics beyond the schema. With 100% schema coverage, the baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: searching an Italian glossary of legal/technical terms by term or definition fragment. It specifies the domain (D.Lgs 81/08) and scope (200+ terms), making it distinct from sibling tools like search_normativa or search_ateco.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates what the tool does and what it returns, but does not explicitly state when to use it vs. alternatives. However, the context of 'glossary' differentiates it from other search tools, and the intended use case (searching a specific glossary) is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_normativaA
Fuzzy search Italian workplace-safety regulations by name, scope, or article reference.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It only states 'fuzzy search' without elaborating on matching behavior, result limits, sorting, or error handling. This is insufficient for a mutation-free tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single 11-word sentence that is front-loaded with the action and resource, containing no fluff. It is appropriately concise for a simple search tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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), the description covers the core functionality adequately. It could mention pagination or result format, but for a fuzzy search with minimal inputs, it is nearly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a single 'query' parameter described as 'Search query'. The description adds value by specifying what can be searched (name, scope, article reference), enhancing semantic understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs a fuzzy search on Italian workplace-safety regulations, specifying the searchable attributes (name, scope, article reference). It distinguishes from siblings like 'get_normativa' (exact retrieval) and 'search_ateco' (different domain).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for approximate matching but does not provide explicit when-to-use or when-not-to-use guidance. No alternatives or exclusions are mentioned, leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggestA
OpenSearch-style autocomplete combining courses + glossary terms. Useful for autocomplete UI in client integrations.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Prefix or partial term |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It mentions 'OpenSearch-style autocomplete' implying prefix matching and suggestion behavior, but omits details like rate limits, result limits, or whether it is a read-only operation. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at two sentences, front-loading the core purpose and use case. It avoids unnecessary details, though it could be slightly more structured with bullet points for key aspects.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter autocomplete tool, the description covers the main purpose and usage context. However, it lacks details such as maximum number of suggestions, sorting order, case sensitivity, and what happens with empty or invalid queries. The absence of an output schema is acceptable but the description could compensate more.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already describes the 'query' parameter as 'Prefix or partial term', achieving 100% coverage. The tool description adds context by specifying 'OpenSearch-style autocomplete', reinforcing the parameter's purpose and behavior. This adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides OpenSearch-style autocomplete combining courses and glossary terms, which is a specific and identifiable purpose. It distinguishes itself from sibling search tools by focusing on autocomplete rather than full-text search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it is useful for autocomplete UI in client integrations, giving a clear use case. However, it does not explicitly state when not to use it or differentiate from alternative tools like search_glossario or search_normativa, leaving some ambiguity for the agent.
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.
8 tool updates
v1.0.0- First observed
get_ateco - First observed
get_corsi_obbligatori - First observed
get_normativa - First observed
get_scadenze_formazione - First observed
search_ateco - First observed
search_glossario - First observed
search_normativa - First observed
suggest
TDQS
Scored across 8 tools
Each tool targets a distinct entity or action: sector lookup vs search, courses vs schedules, regulations vs glossary. No two tools perform overlapping functions.
All tool names follow a consistent verb_object pattern using snake_case (e.g., get_ateco, search_normativa). No mixing of conventions.
8 tools are well-scoped for an Italian workplace safety information server, covering all major areas without redundancy or insufficiency.
The tool set covers retrieval of sectors, courses, regulations, schedules, and glossary, plus autocomplete. No obvious gaps for an information-only server.
Maintenance
Related MCP Connectors
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
DocBase MCP server for AI agents
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMCP server that exposes French public APIs (Data Inclusion, Légifrance, La Bonne Alternance) as tools for LLMs, enabling social, legal, and employment assistance.4MIT
- FlicenseAqualityCmaintenanceLocal MCP server that provides Italian legal assistance by querying a local corpus of Italian legislation, integrated with Claude Desktop.3-
- AlicenseNot gradedqualityBmaintenanceMCP server for US workplace-safety standards (OSHA 29 CFR parts 1900–1990). Enables querying safety regulations via natural language through the Pipeworx gateway.1 npmMIT
- FlicenseNot gradedqualityBmaintenanceMCP server for GlossaryAI, an AI assistant specialized in legal and regulatory vocabularies. Provides tools for vector search, planning, legal link resolution, and concept comparison using Qdrant and an OpenAI-compatible LLM.-