Skip to main content
Glama

Filo.

MCP server per il Design system .italia

Non perdere il filo.

⚠️ Progetto personale non ufficiale e sperimentale - I dati sono forniti così come sono e potrebbero essere incompleti o non aggiornati. Utilizzare a proprio rischio. / ⚠️ Unofficial & experimental personal sandbox project - Data is provided as-is and may be outdated or incomplete. Use at your own risk.

Ask DeepWiki License: BSD-3-Clause


Di cosa parliamo? / What are we talking about?

IT — Design system .italia è il sistema open source ufficiale per realizzare le interfacce della Pubblica Amministrazione. Una iniziativa del progetto Designers Italia, è distribuito in più repository indipendenti.

EN — Design System .italia is the official open source design system for Italian Public Administration interfaces. An initiative by Designers Italia, it is distributed across multiple independent repositories.


Related MCP server: ds-pilot

Cos'è Filo / What is Filo

IT — Filo è un server MCP (Model Context Protocol) non ufficiale che espone a assistenti AI i dati strutturati del Design system .italia: componenti e markup HTML Bootstrap Italia v3 ⚠️ beta, web component e props Dev Kit Italia v1 ⚠️ beta, token CSS con valori risolti, linee guida per componente, stato di accessibilità e issue GitHub collegate. I dati sono aggiornati nightly tramite snapshot CI nel branch data-fetched quando upstream rilascia una nuova versione (al più tardi settimanalmente).

EN — Filo is an unofficial MCP (Model Context Protocol) server providing AI assistants with structured access to Italy's Design System resources: Bootstrap Italia v3 components and HTML markup ⚠️ beta, Dev Kit Italia web components and props v1 ⚠️ beta, CSS tokens with resolved values, per-component usage guidelines, accessibility status, and related GitHub issues. Data is refreshed nightly via CI snapshot into the data-fetched branch whenever upstream releases a new version (at least weekly).


Perché Filo / Why Filo

IT — Tenere il filo della qualità nell’epoca degli LLM e dell’AI come scorciatoia per tutto. Rendere interrogabile il Design system .italia e il suo vasto ecosistema di risorse. Supportare persone e assistenti AI nella progettazione, esplorazione, generazione e validazione su dati reali e verificati. Un server MCP read-only e open source. Un esperimento sulle possibilità di sviluppare software utile per le persone, anche mentre litighi con qualche LLM.

EN — Keep the thread of quality in the age of LLMs and AI as a shortcut for everything. Make Italy’s Design System and its vast ecosystem of resources queryable. Support people and AI assistants in design, exploration, code generation and validation — on real, verified data. A read-only, open source MCP server. An experiment in the possibilities of building software that is actually useful for people, even while arguing with a few LLMs.​​​​​​​​​​​​​​​​


Strumenti disponibili / Available tools

I tool sono organizzati per sorgente/namespace: dsi_ (inventario unificato componenti Design system .italia), bsi_ e devkit_ (markup/varianti/props da Bootstrap Italia e Dev Kit Italia — mirror solo dove le sorgenti producono artefatti distinti), tokens_ (design token e variabili CSS, asse sorgente unico), docs_ (da schede linee guida Designers Italia), github_ (issue dalle repo dell'ecosistema). Rispetto alle prime release, per un approccio di risparmio token, non esiste più un tool aggregatore full: combinare più fonti in un'unica risposta è responsabilità del client, componendo più chiamate mirate. Per lo stesso motivo, non tutti i tool espongono i dati anche in forma strutturata (structuredContent), solo dove il numero di risultati è naturalmente limitato dal parametro di input.

Componenti — dsi_

  • dsi_list_components() — inventario unificato di tutti i componenti: una riga per componente con bsi:{status, accessibility} (null se non presente in Bootstrap Italia) e devkit:{tags, storybookUrl, componentType} (null se non presente in Dev Kit Italia). Un componente è un'unica entità con due possibili implementazioni. Punto di partenza prima di markup, token o props.

  • dsi_search_components(query) — ricerca sulla stessa unione, per nome, slug, alias IT/EN o tag Dev Kit.

Markup e varianti — bsi_ / devkit_

  • bsi_list_component_variants(component) — nomi di tutte le varianti Bootstrap Italia disponibili, senza markup.

  • bsi_get_component_markup(component, variant?) — markup HTML completo di una variante specifica (variant omesso → prima variante).

  • bsi_list_components_by_status(status, library?) — componenti filtrati per stato di implementazione (PRONTO, DA RIVEDERE, DA FARE, ...). library sceglie la colonna: bootstrapItalia (default) o devKitItalia — cambia anche a cosa punta docUrl nel risultato (documentazione BSI o pagina Storybook). uiKitItalia non è ancora filtrabile qui (vive solo su Figma).

  • devkit_list_component_variants(component) — nomi di tutte le varianti Dev Kit Italia disponibili.

  • devkit_get_component_markup(component, variant?) — markup HTML di una variante Dev Kit, estratto da Storybook via snapshot CI (variant omesso → prima variante).

  • devkit_list_component_props(component) — attributi HTML it-* di un web component Dev Kit: nome, tipo, descrizione, default, opzioni — incluse le props dei subcomponenti (es. it-accordion-item).

Design tokens e variabili CSS — tokens_

  • tokens_list_component_vars(component) — variabili CSS --bsi-* personalizzabili di un componente, con descrizione semantica, catena di risoluzione e valore risolto. I valori compositi (shorthand, calc()) sono risolti riferimento per riferimento; le variabili dichiarate più volte con valori diversi sono segnalate esplicitamente invece di apparire come righe duplicate.

  • tokens_list_globals(match?) — coppie di token globali che Bootstrap Italia usa davvero: Design Token centrale (--it-*/$it-*, non sovrascrivibile per progetto) + --bsi-* corrispondente (sovrascrivibile a runtime), con valore risolto. match filtra per sottostringa nel nome, omesso restituisce tutti.

  • tokens_resolve(variable) — risolve qualunque variabile (--bsi-*, --it-* o $it-*) al valore concreto, seguendo l'intera catena. Su un valore composito o su una dichiarazione ambigua, la risposta lo segnala invece di restituire un valore arbitrario.

  • tokens_find_components(variable) — componenti Bootstrap Italia impattati da una variabile, incluso l'impatto indiretto tracciato lungo la catena — anche quando la variabile è solo uno dei riferimenti embedded in un valore composito di un altro componente.

  • tokens_search(query) — ricerca per sottostringa su nome, descrizione e valore della variabile, su token BSI e Design Tokens Italia globali; per le variabili con dichiarazioni multiple, cerca anche in ciascun valore dichiarato.

Ogni token include resolvedVia: l'elenco degli hop intermedi della catena di risoluzione, ciascuno con role (bsi-component | bsi-global | dti) e overridable (true per le --bsi-* sovrascrivibili a runtime, false per i Design Token centrali --it-*/$it-*, definiti upstream). Un valore che incorpora più riferimenti in un'unica stringa (shorthand spacing, calc(), box-shadow) include anche composedOf: un riferimento risolto per elemento, oltre al valore finale già sostituito. Se lo stesso nome è dichiarato più volte con valori diversi nel sorgente del componente (breakpoint responsive, varianti di tema, stati dell'elemento), il token include declaredTimes/ambiguousValues invece di un valore unico silenzioso.

Linee guida componenti e stato accessibilità — docs_

  • docs_get_component_guide(component) — linee guida d'uso da Designers Italia: descrizione, quando/come usarlo, stato verifiche accessibilità, stato libreria (Bootstrap Italia, UI Kit Italia, Dev Kit Italia). Lo stato accessibilità per-componente è disponibile anche in dsi_list_components (campo bsi.accessibility). Se l'URL Dev Kit registrato nella board diverge da quello reale su Storybook, o se il tab "Uso e accessibilità" non viene trovato per titolo su Designers Italia (contenuto preso dal primo tab come fallback), la risposta lo segnala in warnings invece di restare in silenzio.

Issue e stato progetto — github_

  • github_get_component_issues(component) — issue GitHub aperte per componente sulle repository monitorate (bootstrap-italia, design-ui-kit, dev-kit-italia, design-tokens-italia), più le issue note già registrate in components_status.json.

  • github_get_project_repo_links() — link alle issue aperte di ciascuna repository. Non include i dati live delle board GitHub Projects v2 (non ancora integrate).

Connessione e meta

  • ping — verifica connessione al server, versione, timestamp e warning sulle sorgenti in beta. Da usare all'inizio della sessione per confermare i tool disponibili.


Il valore del server è la combinazione contestuale di sorgenti frammentate — componendo più chiamate mirate.

Esempi: "Quali varianti ha l'Accordion e quali token posso personalizzare?", "Quali variabili devo sovrascrivere nel mio CSS per cambiare i colori di header e footer?", "..."

Flusso tipico: dsi_list_components/dsi_search_components per orientarsi → bsi_list_component_variants/devkit_list_component_variants per i nomi delle varianti → bsi_get_component_markup/devkit_get_component_markup per il markup di una variante specifica → tokens_list_component_vars/tokens_resolve per i token.

Ogni risposta include le versioni delle risorse (Design system .italia, Bootstrap Italia, Dev Kit Italia, Design Tokens Italia), URL verificato della documentazione ufficiale e dataFetchedAt, la data dell'ultimo snapshot CI che avviene tendenzialmente* ogni notte, non il momento della richiesta. (* = laddove ci sono rilasci di nuove versioni upstream).

I tool bsi_get_component_markup/devkit_get_component_markup restituiscono sempre una sola variante per chiamata; usa prima bsi_list_component_variants/devkit_list_component_variants per scoprire i nomi delle varianti disponibili.

I nomi dei componenti funzionano in italiano e inglese: "fisarmonica", "dialog", "pulsante" trovano accordion, modal, button.


Per ridurre gli errori o allucinazioni, istruisci il tuo assistente AI a basarsi esclusivamente sui dati restituiti da Filo.

IT

## Regole dati Design System .italia (Filo MCP)

DATI VERIFICATI: usa esclusivamente i dati restituiti dagli strumenti MCP di Filo. Non integrare con conoscenza pregressa su Bootstrap Italia, Dev Kit Italia, Design Tokens Italia o altri framework CSS/web component.

QUANDO IL DATO MANCA: se un'informazione non è presente nelle risposte MCP, dillo esplicitamente. Scrivi "Questo dato non è disponibile nelle sorgenti MCP" anziché fornire una stima o inferenza. Non inventare valori numerici.

QUANDO COMPONI ELEMENTI: se combini markup MCP reale con HTML/CSS che aggiungi tu, segnala chiaramente cosa viene dai dati MCP e cosa è tua inferenza.

VERSIONI E FONTI: in ogni risposta che usa dati MCP, includi la versione delle sorgenti e il link alla documentazione ufficiale restituiti dal tool.

REGOLA D'ORO: se non sei sicuro che un dato provenga da MCP, trattalo come inferenza e segnalalo.

TOOL DISPONIBILI: all'inizio della sessione, usa il tool ping per verificare la connessione e leggi la lista dei tool disponibili. Non assumere quali tool esistono.

COMPLETEZZA DATI: se un componente non è presente in una sorgente (es. `devkit: null` in dsi_list_components/dsi_search_components), segnalalo all'utente invece di presumerne l'assenza totale.

EN

## Data rules — Design System .italia (Filo MCP)

VERIFIED DATA: use exclusively the data returned by Filo's MCP tools. Do not supplement with prior knowledge of Bootstrap Italia, Dev Kit Italia, Design Tokens Italia, or any other CSS/web component framework.

WHEN DATA IS MISSING: if information is not present in the MCP responses, say so explicitly. Never invent numeric values.

WHEN COMPOSING ELEMENTS: clearly indicate what comes from MCP data and what is your own inference.

VERSIONS AND SOURCES: in every response that uses MCP data, include the source versions and official documentation URL returned by the tool.

GOLDEN RULE: if you are unsure whether a piece of data comes from MCP, treat it as inference and label it as such.

AVAILABLE TOOLS: at the start of the session, use the ping tool to verify the connection and read the list of available tools. Do not assume which tools exist.

DATA COMPLETENESS: if a component is missing from one source (e.g. `devkit: null` in dsi_list_components/dsi_search_components), flag this to the user instead of assuming it doesn't exist at all.

Come connettersi / How to connect

Claude Desktop / Cursor / VS Code (via NPX — consigliato)

Non richiede installazione — npx scarica e avvia il server automaticamente.

Aggiungi al file di configurazione MCP del tuo client:

{
  "mcpServers": {
    "design-system-italia": {
      "command": "npx",
      "args": ["-y", "@fupete/design-system-italia-mcp"],
      "env": {
        "TRANSPORT": "stdio",
        "GITHUB_TOKEN": "your_token_here"
      }
    }
  }
}

ℹ️ nvm su macOS — se npx risolve a una versione vecchia di Node ("You must supply a command" o "Cannot find module 'node:path'"), usa il path esplicito. Trova il path con nvm use 22 && which npx, poi:

{
  "mcpServers": {
    "design-system-italia": {
      "command": "/Users/tuonome/.nvm/versions/node/v22.12.0/bin/npx",
      "args": ["-y", "@fupete/design-system-italia-mcp"],
      "env": {
        "PATH": "/Users/tuonome/.nvm/versions/node/v22.12.0/bin:/usr/local/bin:/usr/bin:/bin",
        "TRANSPORT": "stdio",
        "GITHUB_TOKEN": "your_token_here"
      }
    }
  }
}

Sostituisci tuonome e v22.12.0 con i tuoi valori.

Oppure via CLI (Claude Desktop):

claude mcp add design-system-italia \
  --command "npx -y @fupete/design-system-italia-mcp" \
  --env TRANSPORT=stdio \
  --env GITHUB_TOKEN=your_token

ℹ️ Problemi con nvm su macOS? Usa la configurazione JSON sopra con path esplicito.

Self-hosting con Docker (locale o VPS)

Funziona su qualsiasi macchina con Docker installato — locale, VPS personale, server aziendale.

docker pull ghcr.io/fupete/design-system-italia-mcp
docker run -e GITHUB_TOKEN=your_token -p 8080:8080 \
  ghcr.io/fupete/design-system-italia-mcp

⚠️ Docker multiarch — se docker pull scarica un'architettura incompatibile, fai una build locale: docker build -t design-system-italia-mcp .

ℹ️ GITHUB_TOKEN (opzionale ma consigliato) — serve per il tool github_get_component_issues. Senza token: 60 richieste/ora per IP. Con token: 5000 richieste/ora. Basta un token con scope pubblico read-only — nessun permesso speciale richiesto.


Sorgenti dati / Data sources

I dati sono aggiornati nightly tramite CI snapshot e serviti dal branch data-fetched. Solo le GitHub Issues sono fetchate live a runtime.

#

Repo

Contenuto

Tool MCP

1

bootstrap-italia

Markup HTML varianti per componente

bsi_get_component_markup bsi_list_component_variants

2

bootstrap-italia

Lista ~55 componenti, stato librerie (BSI/UI Kit/Dev Kit), accessibilità, note issue ⚠️ beta

dsi_list_components dsi_search_components bsi_list_components_by_status

3

bootstrap-italia

Token CSS --bsi-* per-componente con descrizioni semantiche

tokens_list_component_vars tokens_search tokens_find_components

4

bootstrap-italia

Bridge --bsi-*--it-* (token resolution)

tokens_list_globals tokens_resolve tokens_find_components

5

designers.italia.it

Linee guida d'uso, accessibilità, quando/come usare

docs_get_component_guide

6

design-tokens-italia

Token globali --it-*/$it-* con valori concreti. Risolve var(--bsi-spacing-m)24px

tokens_list_globals tokens_resolve tokens_search

7

dev-kit-italia

Indice Storybook: tag stato, varianti, id univoco

dsi_list_components dsi_search_components devkit_list_component_variants

8

dev-kit-italia

Markup HTML per variante, estratto da Storybook source panel

devkit_get_component_markup devkit_list_component_variants

9

dev-kit-italia

Props it-*: attributi HTML, tipo, descrizione, default, opzioni

devkit_list_component_props

10

GitHub REST API

Issue aperte: bootstrap-italia, design-ui-kit, dev-kit-italia, design-tokens-italia

github_get_component_issues github_get_project_repo_links

11

designers.italia.it + BSI + Dev Kit

Versioni Design System / BSI / Dev Kit / DTI. URL verificati pagine componenti

meta in tutte le risposte

Le sorgenti 1–9 e 11 sono controllate ogni notte e aggiornate quando upstream rilascia una nuova versione (al più tardi settimanalmente), cached per 24h lato server. La sorgente 10 (GitHub Issues) è l'unica fetchata live a runtime (cache 15 min). dataFetchedAt nelle risposte riflette la data dell'ultimo snapshot CI.

⚠️ Layer token e web component in beta — Il server usa Bootstrap Italia 3.x (beta) e Dev Kit Italia (beta). Token CSS --bsi-* e web component it-* possono avere alcune breaking change prima della release stabile.

⚠️ Token and web component layer in beta — This server uses Bootstrap Italia 3.x (beta) and Dev Kit Italia (beta). CSS tokens --bsi-* and web components it-* may have some breaking changes before stable release.


Stack tecnico / Tech stack

  • Node.js + TypeScript

  • @modelcontextprotocol/sdk

  • Streamable HTTP transport / stdio transport (via TRANSPORT=stdio)

  • Docker (self-hosting — locale o VPS)

  • Playwright (CI only — snapshot Dev Kit Storybook markup)


Sviluppo locale / Local development

git clone https://github.com/fupete/design-system-italia-mcp
cd design-system-italia-mcp
npm install
cp .env.example .env
# aggiungi GITHUB_TOKEN in .env
npm run dev

# Typecheck
npm run typecheck
# Test unitari
npm run test
# Verifica sorgenti upstream e freschezza snapshot
npm run canary

Server disponibile su http://localhost:8080/mcp

Testare con MCP Inspector:

npx @modelcontextprotocol/inspector http://localhost:8080/mcp

Riferimenti / References


Provenienza dei dati e licenze / Data provenance & licenses

Il server recupera e serve dati da repository pubblici upstream. Le sorgenti includono Bootstrap Italia, Dev Kit Italia, Design Tokens Italia e Designers Italia — tutte BSD-3-Clause. I contenuti editoriali di Designers Italia (linee guida d'uso, note di accessibilità) sono licenziati sotto CC-BY-SA 4.0. I lavori derivati ereditano il requisito ShareAlike / This server fetches and serves data from public upstream repositories. Sources include Bootstrap Italia, Dev Kit Italia, Design Tokens Italia and Designers Italia — all BSD-3-Clause. Editorial content from Designers Italia (usage guidelines, accessibility notes) is licensed under CC-BY-SA 4.0. Derivatives of that content inherit the ShareAlike requirement.

Dettagli completi, link agli autori upstream e riferimenti alle licenze: / Full provenance details, upstream author links and license references: data-fetched branch README


Licenza / License

BSD 3-Clause — © 2026 Daniele Tabellini (Fupete) Documentazione: CC BY SA 4.0 I dati esposti mantengono la licenza delle rispettive sorgenti

Illustrazione hero: Open Doodles (remix)


Filo è un progetto sperimentale sviluppato da @Fupete anche litigando con qualche LLM. Issue benvenute. / Filo is an experimental project developed by @Fupete, partly by arguing with a few LLMs. Issues welcome.

Available Tools

17 tools
bsi_get_component_markupGet Component MarkupA
Read-only

Returns the HTML markup for one specific variant of a Bootstrap Italia component. If variant is omitted returns the default (first) variant. Use bsi_list_component_variants to discover available names.

ParametersJSON Schema
NameRequiredDescriptionDefault
variantNoVariant name (e.g. "Base", "Tabella base"). Omit for the default (first) variant.
componentYesComponent name or slug (e.g. "accordion", "card")

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
resultYes
variantYes
componentYes

TDQS

A4/5.0
Behavior3/5

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

With readOnlyHint annotation already declaring the tool as safe/read-only, the description adds the behavior of defaulting to the first variant when omitted. It does not disclose error handling, output format details, or any edge cases, but the annotation reduces the burden. This is consistent with a moderate score.

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 three sentences long, front-loaded with the core purpose, and every sentence adds value—returning markup, default behavior, and a pointer to a sibling tool. No fluff or 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?

For a simple read-only tool with only two parameters and an output schema present, the description is sufficiently complete. It clarifies the default variant behavior and how to discover variants. Slightly more detail on error cases or output structure could push it to 5, but the existing context is adequate.

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%, and both 'component' and 'variant' are well-documented in the schema. The description repeats the default-variant behavior already present in the schema, adding no additional parameter meaning. Baseline 3 applies here.

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

Purpose5/5

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

The description clearly states the verb 'Returns' and the resource 'HTML markup for one specific variant of a Bootstrap Italia component', making the tool's purpose unambiguous. It also distinguishes from the sibling tool by pointing to bsi_list_component_variants for discovering variant names, which sets it apart from listing tools.

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 guidance on when to use this tool: for getting markup for a specific variant, and explicitly tells the user to use bsi_list_component_variants to discover available names. It lacks an explicit exclusion or comparison with devkit_get_component_markup, but the reference to the variant-discovery sibling covers the main alternative usage.

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

bsi_list_components_by_statusList Components By StatusA
Read-only

Lists Design System .italia components filtered by implementation status, for Bootstrap Italia or Dev Kit Italia (library param, default bootstrapItalia). Valid values: PRONTO, DA RIVEDERE A11Y, DA RIVEDERE, IN REVIEW, DA COMPLETARE VARIANTI, NON PRESENTE, DA FARE, N/D. uiKitItalia not yet filterable here (Figma-only). Use dsi_list_components for full status overview.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusYesStatus to filter (e.g. "PRONTO", "DA FARE", "NON PRESENTE")
libraryNoWhich library status to filter on. Defaults to "bootstrapItalia".

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
totalYes
statusYes
resultsYes

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`, and the description adds useful non-obvious context: the library-specific behavior, the complete set of valid statuses, the default library, and the uiKitItalia limitation (Figma-only). It does not describe the response format, but an output schema is present, so the description carries acceptable weight for a read-only filter tool.

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 only three sentences and front-loads the core action. Every sentence earns its place: the first states the operation and main parameters, the second lists valid values, and the third covers a limitation and points to the sibling alternative. No filler or redundant restating.

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 modest complexity, a complete input schema, a read-only annotation, and an output schema, the description covers all essential operational details: valid statuses, library choices and default, an explicit limitation, and a clear alternative. There are no critical gaps that would leave an agent guessing.

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

Parameters4/5

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

The input schema already describes both parameters at 100% coverage, so the baseline is 3. The description goes beyond the schema by enumerating every accepted status value, specifying the default library (`bootstrapItalia`), and warning that uiKitItalia is unsupported, which adds meaningful parameter-level guidance.

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 opens with a specific verb ('Lists') and clearly names the resource ('Design System .italia components') and the filtering dimension (implementation status). It also distinguishes itself from the sibling `dsi_list_components` by noting its per-library filtering and explicitly pointing to that sibling for full 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 states when to use this tool versus alternatives: 'Use dsi_list_components for full status overview.' It also clarifies that uiKitItalia is not filterable here (Figma-only), provides the default library, and enumerates all valid status values, leaving little ambiguity about when this tool is appropriate.

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

bsi_list_component_variantsList Component VariantsA
Read-only

Lists all available variant names for a Bootstrap Italia component. Returns names only — no markup. Use bsi_get_component_markup to fetch a specific variant.

ParametersJSON Schema
NameRequiredDescriptionDefault
componentYesComponent name or slug (e.g. "accordion", "Accordion")

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
totalYes
componentYes
variantsAvailableYes

TDQS

A4.5/5.0
Behavior4/5

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

The readOnlyHint annotation already indicates a safe read operation. The description adds useful behavioral context by stating 'Returns names only — no markup,' which clarifies the output scope and prevents the agent from expecting markup. This goes beyond the annotation without contradicting it.

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, front-loads the primary purpose, and includes the alternative reference without unnecessary fluff. Every sentence earns its place.

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

Completeness5/5

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

For a simple one-parameter tool with an output schema, the description fully covers the purpose, output, and alternative. No additional context is needed.

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% for the single 'component' parameter, with the schema already providing an example and type. The tool description adds no additional parameter-specific details, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's function: 'Lists all available variant names for a Bootstrap Italia component.' It uses a specific verb and resource, and explicitly differentiates from the sibling tool by saying 'Returns names only — no markup. Use bsi_get_component_markup to fetch a specific variant.'

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 direct usage guidance and an alternative: 'Use bsi_get_component_markup to fetch a specific variant.' This clearly tells the agent when to use this tool versus the complementary markup-fetching tool.

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

devkit_get_component_markupGet Dev Kit Component MarkupA
Read-only

Returns the HTML markup for one specific variant of a Dev Kit Italia web component. Markup extracted from Storybook via CI snapshot. If variant is omitted returns the default (first) variant.

ParametersJSON Schema
NameRequiredDescriptionDefault
variantNoVariant name. Omit for the default (first) variant.
componentYesComponent name or slug (e.g. "accordion", "icon")

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
resultYes
variantYes
componentYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations declare readOnlyHint, and the description adds useful context beyond that: markup is extracted from Storybook via CI snapshot, and omitting the variant returns the default (first) variant. This provides meaningful behavioral information without contradicting 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 three sentences, front-loaded with the main purpose, then concise supporting details. Every sentence earns its place with no redundancy or filler.

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

Completeness4/5

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

For a simple read-only retrieval tool with an output schema and good annotations, the description covers purpose, source, and default behavior. It is largely complete, though it could mention how this tool differs from the bsi_get_component_markup sibling.

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%, so the baseline is 3. The description adds value by clarifying that variant is optional and defaults to the first variant, which supplements the schema's parameter description.

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 returns HTML markup for a specific variant of a Dev Kit Italia web component, using a specific verb and resource. It does not explicitly distinguish this from the similar sibling bsi_get_component_markup, so it is clear but lacks explicit sibling differentiation.

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

Usage Guidelines3/5

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

The description implies usage when you need markup for a particular variant, and explains the default behavior when variant is omitted. However, it does not state when to choose this tool over alternatives like bsi_get_component_markup or devkit_list_component_variants.

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

devkit_list_component_propsList Dev Kit Component PropsA
Read-only

Lists all HTML attributes (props) for a Dev Kit Italia web component (it-*): name, type, description, default value, accepted options. Includes subcomponent props (e.g. it-accordion-item).

ParametersJSON Schema
NameRequiredDescriptionDefault
componentYesComponent name or slug (e.g. "accordion", "icon")

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
propsYes
tagNameYes
componentYes
subcomponentsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true, and the description adds behavioral detail about including subcomponent props and listing specific fields (name, type, description, default, options). This goes beyond the bare annotation without contradicting it.

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, front-loaded with the core action and resource, and includes a concrete example ('it-accordion-item'). No filler or redundant content.

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 list tool with one parameter and an output schema, the description is sufficient. It specifies what is returned, the target components, and the inclusion of subcomponents, leaving no major 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%, providing a baseline of 3. The description adds meaning by restricting the 'component' parameter to Dev Kit Italia it-* components and mentioning subcomponent support, which clarifies valid input beyond the schema's simple examples.

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

Purpose5/5

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

The description clearly identifies the tool's action ('Lists all HTML attributes'), the resource ('Dev Kit Italia web component (it-*)'), and the scope ('Includes subcomponent props'). It distinguishes from sibling tools like devkit_list_component_variants by focusing specifically on props.

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 on when to use the tool — when you need HTML attributes/props for a Dev Kit component. It does not explicitly mention alternatives or when not to use it, but the usage scenario is unambiguous due to the focus on props.

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

devkit_list_component_variantsList Dev Kit Component VariantsA
Read-only

Lists all available variant names for a Dev Kit Italia web component. Returns names only. Use devkit_get_component_markup to fetch a specific variant.

ParametersJSON Schema
NameRequiredDescriptionDefault
componentYesComponent name or slug (e.g. "accordion", "icon")

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
totalYes
componentYes
variantsAvailableYes

TDQS

A4.3/5.0
Behavior4/5

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

The readOnlyHint annotation already declares a safe read operation. The description adds behavioral context by specifying that the tool 'returns names only,' which clarifies the return shape and avoids expecting full component data. It doesn't mention edge cases like empty results or ordering, but for a simple list tool this is sufficient.

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, with the key action stated immediately. It wastes no words and every sentence earns its place by explaining purpose and the alternative 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?

This is a simple read-only list tool with one parameter, an output schema, and a clear description of return semantics ('names only'). The description, combined with annotations and schema, fully covers what the agent needs to know. The existence of an output schema also means return values need not be elaborated further.

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 input schema provides 100% coverage for the single 'component' parameter, including an example. The tool description adds no additional parameter detail beyond the schema. As schema coverage is high, the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool lists all available variant names for a Dev Kit Italia web component, with a specific verb (lists) and resource (variant names). It also notes the output is names only, which distinguishes it from sibling tools like devkit_get_component_markup that fetch full markup.

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 gives clear guidance to use devkit_get_component_markup for fetching a specific variant, establishing an explicit alternative. It implies this tool is for discovering variant names. However, it doesn't explicitly state 'when not to use' beyond the markup reference, so it falls just 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.

docs_get_component_guideGet Component GuideA
Read-only

Returns usage guidelines for a component from Designers Italia website: when to use it (whenToUse, includes recommended alternatives where Designers Italia lists them), how to use it (howToUse), accessibility notes, library status (Bootstrap Italia, Dev Kit Italia) and, when available, the Dev Kit Storybook entry (tags, markup URL). Flags devKitUrlMismatch in warnings when the Dev Kit doc URL in components-status.json diverges from the live Storybook entry.

ParametersJSON Schema
NameRequiredDescriptionDefault
componentYesComponent name or slug (e.g. "accordion", "Alert")

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
nameYes
slugYes
devKitYes
statusYes
categoriesYes
guidelinesYes
sourceUrlsYes
descriptionYes

TDQS

A4.5/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description adds valuable behavioral context: it flags devKitUrlMismatch in warnings when the Dev Kit doc URL diverges, and notes that Storybook entries are included 'when available'. This discloses conditional behavior and special warning flags, going well beyond the annotation.

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

Conciseness5/5

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

The description is a single, dense sentence that is front-loaded with the core purpose ('Returns usage guidelines') and efficiently packs the list of returned content and a special warning behavior. Every clause adds value with 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 returns a rich guide with multiple sections and the output schema exists, the description sufficiently sets expectations by naming the main sections and the warning flag. It does not over-explain return formats, relying on the 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?

Schema coverage for the single parameter is 100%, and the schema description already explains it with examples. The tool description adds no additional parameter-level detail, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool 'Returns usage guidelines for a component from Designers Italia website' and lists specific content (whenToUse, howToUse, accessibility, library status, Storybook entry). This specific verb+resource distinguishes it from siblings like bsi_get_component_markup or tokens_list_component_vars.

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 clearly implies when to use the tool (when you need usage guidelines for a component) by enumerating the returned sections. However, it does not explicitly mention alternatives or when not to use it, though the context is clear and no exclusions are stated.

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

dsi_list_componentsList ComponentsA
Read-only

Lists all Design System .italia components as a single unified inventory: one row per component with bsi:{status, accessibility} (null if not in Bootstrap Italia) and devkit:{tags, storybookUrl, componentType} (null if not in Dev Kit). A component is one entity with two possible implementations — filter by which field is null to get BSI-only or DevKit-only. Call before fetching markup, tokens or props.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

The annotation readOnlyHint=true is complemented by rich behavioral details: the description explains that each component is a single entity with two possible implementations, and that bsi and devkit subobjects can be null. This goes beyond the mere read-only hint and discloses the inventory's structure and null semantics, which is valuable for an agent.

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

Conciseness5/5

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

Two sentences deliver a dense but clear description. Front-loaded with the main purpose, then details of output structure and null semantics, plus a usage directive. No wasted words; every sentence earns its place.

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

Completeness5/5

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

Despite no output schema, the description fully explains what the tool returns: one row per component, with specific keys and null behavior. Combined with usage guidance and clear scoping, it is complete for a list tool. The sibling context shows many related tools, but this description sufficiently distinguishes itself.

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 zero parameters, so the baseline of 4 applies. The description adds relevant output semantics (rows, fields, nulls) but no parameter-specific information is needed. It appropriately explains the tool's behavior without parameter overhead.

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 'Lists' and clearly identifies the resource: 'all Design System .italia components as a single unified inventory'. It also details the output structure with bsi and devkit fields, distinguishing it from sibling tools like bsi_list_component_variants or devkit_list_component_variants by focusing on a unified component list rather than variants.

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 guidance is given: 'Call before fetching markup, tokens or props.' This sets clear context for when to use the tool. Additionally, it explains how to filter for BSI-only or DevKit-only components using null fields, providing practical usage direction. It does not explicitly name alternatives or exclusions, but 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.

dsi_search_componentsSearch ComponentsA
Read-only

Search the unified Design System component inventory by name, slug, Italian/English alias or Dev Kit tag. Searches the union of Bootstrap Italia and Dev Kit components — same unified rows as dsi_list_components (bsi:{}|null, devkit:{}|null). Alias examples: fisarmonica->accordion, toast->notifications.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch text (e.g. "button", "accordion", "toast")

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, so the safe-read nature is already known. The description adds meaningful behavioral context: it searches the union of Bootstrap Italia and Dev Kit, returns rows shaped as bsi:{}|null/devkit:{}|null, and provides alias normalization examples. This goes beyond the minimal annotation coverage, though details like match semantics (substring vs exact) are not disclosed.

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 three concise sentences with the action verb first, followed by scope, row-shape note, and examples. Every sentence earns its place and no filler or repetition exists.

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 single-parameter read-only search tool, the description is complete: it defines the search scope, the data source, the field types, and the output row shape via the reference to dsi_list_components. The absence of an output schema is mitigated by the row-shape hint, and no critical usage context is missing.

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% for the single 'query' parameter, but the description adds semantic depth by clarifying that the query can be a name, slug, Italian/English alias, or Dev Kit tag, plus concrete alias examples. This enriches the parameter meaning beyond the schema's simple 'Search text' label.

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

Purpose5/5

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

The description clearly identifies the tool as a search over the unified Design System component inventory, specifying searchable dimensions (name, slug, Italian/English alias, Dev Kit tag). It distinguishes itself from dsi_list_components by explicitly noting it returns the same unified rows but is a search operation, and the alias examples reinforce its purpose.

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 implies when to use this tool versus listing all components by referencing dsi_list_components as the source of the same rows. It does not explicitly list exclusions or compare to sibling search tools like tokens_search, but the context is clear enough for an agent to determine this is the component-search entry point.

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

github_get_component_issuesGet Component IssuesA
Read-only

Returns open GitHub issues for a component across the 4 Design System .italia repositories: bootstrap-italia, design-ui-kit, dev-kit-italia, design-tokens-italia. Also includes known issues already present in components_status.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
componentYesComponent name or slug (e.g. "accordion", "Alert")

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
nameYes
issuesYes
componentYes

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, which covers the read-only safety profile. The description adds useful behavioral context by enumerating the four repositories queried and mentioning the integration with components_status.json, revealing that the result is a blend of GitHub issues and pre-existing known issues.

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

Conciseness5/5

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

The description is a single, well-structured sentence that leads with the main action and clearly lists the repositories and the supplementary data source. There is no redundant phrasing or unnecessary detail.

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

Completeness4/5

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

With one well-documented parameter and an output schema present, the description does not need to explain return values in depth. It provides the essential scope, the four repositories, and the inclusion of known issues, offering sufficient contextual completeness for an 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.

Parameters3/5

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

The single parameter 'component' is fully documented in the schema with examples, so schema coverage is 100%. The description only alludes to 'component' generically and does not add format or syntax details beyond what the schema already provides, so it adds minimal additional meaning.

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

Purpose5/5

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

The description uses the specific verb 'Returns' and clearly identifies the resource: 'open GitHub issues for a component' across four named repositories. It also differentiates from sibling tools by focusing on issues, whereas siblings handle tokens, markup, variants, or component listings, none of which are issues.

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 clearly defines the scope: this tool retrieves open GitHub issues for a specified component from four specific repositories and also incorporates known issues from components_status.json. It does not explicitly name alternatives or state when not to use it, but the context is sufficiently clear given the focused toolset.

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

pingPingA
Read-only

Checks connection to the MCP server. Returns status, version, timestamp and source state warnings.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description adds value by listing specific return fields (status, version, timestamp, source state warnings). This provides useful behavioral context beyond the annotation.

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

Conciseness5/5

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

The description is a single concise sentence that efficiently communicates purpose and return information without unnecessary words.

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 no parameters, no output schema, and a simple health-check purpose, the description fully covers what the agent needs to know about purpose 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?

No parameters exist, so schema coverage is 100% by default. The description does not need to add parameter info, but it correctly lists return fields, adding some semantic value.

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 ('Checks') and specifies the resource ('connection to the MCP server'), clearly distinguishing it from sibling tools that deal with tokens, components, or boards.

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 verifying connectivity, but does not explicitly state when to use this tool versus alternatives, nor does it provide any exclusions or prerequisites.

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

tokens_find_componentsFind Components By TokenA
Read-only

Returns the Bootstrap Italia components impacted by a given design variable, including indirect impact via the resolution chain. Accepts --bsi-* (direct usage) or --it-/$it- (impact traced through the chain). Useful for theming: identifies what changes if you override a variable. Note: component reflects BSI's own internal grouping keys in custom_properties.json (e.g. "navbar", "tab"), not always the same as the canonical component name from dsi_list_components — some BSI groupings aren't tracked as standalone components.

ParametersJSON Schema
NameRequiredDescriptionDefault
variableYesToken name in any form: --bsi-*, --it-*, or $it-*

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
queryYes
totalYes
resultsYes

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description discloses important behavioral nuances: indirect impact via resolution chain, accepted token formats, and the fact that components reflect BSI's internal grouping keys rather than canonical names. This adds significant context and helps the agent set expectations.

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 three well-structured sentences. The first states the primary purpose, the second explains input formats and typical use case, and the third provides a key caveat. It is information-dense without fluff, making it appropriately sized and 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 that an output schema exists, the description does not need to detail return values. It covers the tool's scope, input variations, indirect impact, theming use case, and a subtle but important caveat about component naming. This is complete for the tool's complexity.

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 schema provides 100% coverage for the single parameter, so the description need not repeat basic syntax. However, it adds semantic value by explaining the distinction between direct usage (--bsi-*) and indirect impact traced through the chain (--it-*/$it-*), which is not clear from the schema alone.

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

Purpose5/5

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

The description clearly states the tool's function with a specific verb ('Returns the Bootstrap Italia components impacted by a given design variable') and distinguishes it from related tools like dsi_list_components by explaining the internal grouping key caveat. This exceeds basic clarity and explicitly differentiates from siblings.

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 usage context: it accepts different token forms and is 'useful for theming.' It also implicitly contrasts with dsi_list_components by warning about grouping key differences, offering guidance on when to use this tool. However, it does not explicitly name alternatives or state when not to use the tool, so it falls short of a perfect 5.

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

tokens_list_component_varsList Component TokensA
Read-only

Lists the CSS custom properties (--bsi-) you can override in your own CSS to customize a Bootstrap Italia component, each with a semantic description, resolution chain (resolvedVia), and concrete resolved value (e.g. var(--bsi-spacing-m) → 24px). These --bsi- variables are always safe to override at runtime; the central Design Tokens they resolve through (--it-/$it-, visible in resolvedVia) are not meant to be overridden per-project, override the --bsi- variable itself instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
componentYesComponent name or slug (e.g. "accordion", "Alert")

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
totalYes
tokensYes
summaryYes
componentYes

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, but the description adds valuable behavioral context: it explains that --bsi- variables are safe to override at runtime and warns against overriding the central Design Tokens (--it-/$it-). It also clarifies the resolution chain and concrete value output, going beyond the read-only hint.

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, tightly written, with no fluff. It front-loads the core purpose (lists CSS custom properties) and then adds essential usage nuance. Every sentence 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?

Given the tool's moderate complexity, an output schema exists, and the readOnly annotation is present, the description is adequately complete. It covers purpose, output details, and override safety. It does not discuss error cases or invalid component names, but these are not necessary for a list-style tool with a simple parameter.

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 input schema has one parameter with a description ('Component name or slug (e.g. "accordion", "Alert")') and schema_description_coverage is 100%. The description does not add any extra parameter-specific meaning beyond what the schema already provides, so the baseline of 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 uses a specific verb ('Lists') with a precise resource ('CSS custom properties (--bsi-)... to customize a Bootstrap Italia component') and states the output fields (semantic description, resolvedVia, resolved value). This distinguishes it from sibling tools like tokens_list_globals (global tokens) and tokens_resolve (single token 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 description clearly implies when to use this tool: when you need to customize a component via CSS overrides. It also provides crucial guidance that --bsi- variables are safe to override while --it-/$it- are not. However, it does not explicitly name alternative tools or state conditions when not to use it, though the context is strong.

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

tokens_list_globalsList Global TokensA
Read-only

Lists the global design tokens of the Design System that Bootstrap Italia actually uses. Each entry pairs the central Design Token (--it-/$it-, not overridable per-project) with the corresponding global --bsi-* CSS custom property (project-overridable), plus its resolved value. Without arguments returns all global tokens; pass match to filter (e.g. "spacing", "color"). Only tokens bridged into BSI are listed. For per-component variables use tokens_list_component_vars.

ParametersJSON Schema
NameRequiredDescriptionDefault
matchNoSubstring filter on token/variable name (e.g. "spacing", "blue"). Not a semantic category — matches literal text in the name only. Omit to list all.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true, and the description is consistent. It adds behavioral context beyond annotations by explaining the output entry structure (paired central token, global --bsi-* property, resolved value), the filter semantics (substring, not semantic), and the scope limitation (only bridged tokens). No contradictions. This is valuable transparency for a read-only tool.

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: the first states purpose, the second explains output structure, and the third covers usage and alternatives. No unnecessary words. The description is front-loaded and every sentence earns its place.

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

Completeness5/5

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

The tool is simple (one optional param), no output schema, but the description adequately covers return entry structure, filtering behavior, scope, and sibling differentiation. It even notes the inclusion criteria. This is complete for the tool's complexity with minimal 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 input schema percent coverage is 100% and already fully documents the 'match' parameter semantics, including examples and the fact it is literal substring matching. The description adds little beyond what the schema provides—it only repeats the example usage. Baseline 3 is appropriate since the schema carries the documentation burden.

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 global design tokens used by Bootstrap Italia, with a specific verb and resource. It explicitly distinguishes itself from sibling tool tokens_list_component_vars by directing per-component variable lookups there. The scope is precise ('global design tokens... that Bootstrap Italia actually uses'), avoiding ambiguity.

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 usage instructions: 'Without arguments returns all global tokens; pass match to filter' with examples. It states the alternative tool for per-component variables and clarifies the inclusion rule ('Only tokens bridged into BSI are listed'). This gives clear when-to-use and when-not-to-use guidance.

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

tokens_resolveResolve TokenA
Read-only

Resolves any --bsi-, --it-, or $it- variable to its concrete value, following the full chain to a literal (e.g. --bsi-accordion-body-padding-x → --bsi-spacing-m → $it-spacing-m → $it-spacing-6x → 24px). Each hop in resolvedVia carries role and overridable: --bsi- hops (role bsi-component/bsi-global) are safe to override in project CSS at runtime; $it-/--it- hops (role dti) are central Design Tokens defined upstream, do not suggest overriding them directly; override the --bsi-* variable that consumes them instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
variableYesToken name in any form: --bsi-*, --it-*, or $it-*

Output Schema

ParametersJSON Schema
NameRequiredDescription
metaYes
inputYes
valueYes
composedOfNo
resolvedViaYes
normalizedNameYes
ambiguousValuesNo

TDQS

A4.5/5.0
Behavior5/5

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

The description reveals the resolution process (following the full chain to a literal) and explains the semantics of each hop's role and overridable flag. This adds significant behavioral context beyond the readOnlyHint annotation, which is consistent. It also clarifies the distinction between bsi and dti token roles, helping the agent understand output implications.

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: the first sentence states the core function, the second explains the output semantics, and the example chain is concise and illustrative. Every sentence adds value without redundancy or padding.

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 the tool's behavior, interpretation of results, and actionable guidance for overriding tokens. With a single parameter, complete schema coverage, and an output schema present, the description is thorough and self-sufficient for an agent to use correctly.

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 input schema already documents the parameter ('Token name in any form: --bsi-*, --it-*, or $it-*') with 100% coverage. The description reinforces this by showing an example but does not add new parameter-level meaning. Baseline of 3 is appropriate.

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

Purpose5/5

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

The description states exactly what the tool does: resolves --bsi-, --it-, or $it- variables to their concrete literal values. It is specific and distinct from sibling tools like tokens_search or tokens_list_component_vars, which search/list rather than resolve. The example chain clarifies the scope.

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 on how to use the resolved output—explaining which hops are safe to override and which are not—and instructs to override --bsi-* variables rather than $it-/--it- ones. It does not explicitly contrast with sibling tools, but the usage intent is clear enough for an agent to decide when to invoke it.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 12 tool updatesv0.5.0
    • Changedbsi_get_component_markup1 field changed
      • addedOutput schema / properties / meta / properties / designersUrl
        Added value: +{
        +  "type": "string"
        +}
    • Changedbsi_list_component_variants1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "component": {
        +      "type": "string"
        +    },
        +    "meta": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "dataFetchedAt": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "designersUrl": {
        +          "type": "string"
        +        },
        +        "sourceUrls": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "stability": {
        +          "enum": [
        +            "beta",
        +            "stable"
        +          ],
        +          "type": "string"
        +        },
        +        "versions": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "bootstrapItalia": {
        +              "type": "string"
        +            },
        +            "designSystem": {
        +              "type": "string"
        +            },
        +            "designTokensItalia": {
        +              "type": "string"
        +            },
        +            "devKitItalia": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "designSystem",
        +            "bootstrapItalia",
        +            "devKitItalia",
        +            "designTokensItalia"
        +          ],
        +          "type": "object"
        +        },
        +        "warnings": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "dataFetchedAt",
        +        "sourceUrls",
        +        "warnings",
        +        "stability"
        +      ],
        +      "type": "object"
        +    },
        +    "total": {
        +      "type": "number"
        +    },
        +    "variantsAvailable": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "component",
        +    "total",
        +    "variantsAvailable",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Changedbsi_list_components_by_status1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "meta": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "dataFetchedAt": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "designersUrl": {
        +          "type": "string"
        +        },
        +        "sourceUrls": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "stability": {
        +          "enum": [
        +            "beta",
        +            "stable"
        +          ],
        +          "type": "string"
        +        },
        +        "versions": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "bootstrapItalia": {
        +              "type": "string"
        +            },
        +            "designSystem": {
        +              "type": "string"
        +            },
        +            "designTokensItalia": {
        +              "type": "string"
        +            },
        +            "devKitItalia": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "designSystem",
        +            "bootstrapItalia",
        +            "devKitItalia",
        +            "designTokensItalia"
        +          ],
        +          "type": "object"
        +        },
        +        "warnings": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "dataFetchedAt",
        +        "sourceUrls",
        +        "warnings",
        +        "stability"
        +      ],
        +      "type": "object"
        +    },
        +    "results": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "docUrl": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "slug": {
        +            "type": "string"
        +          },
        +          "status": {
        +            "enum": [
        +              "PRONTO",
        +              "DA RIVEDERE A11Y",
        +              "DA RIVEDERE",
        +              "IN REVIEW",
        +              "DA COMPLETARE VARIANTI",
        +              "NON PRESENTE",
        +              "DA FARE",
        +              "N/D"
        +            ],
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "slug",
        +          "status",
        +          "docUrl"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "status": {
        +      "type": "string"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "status",
        +    "total",
        +    "results",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Changeddevkit_get_component_markup1 field changed
      • addedOutput schema / properties / meta / properties / designersUrl
        Added value: +{
        +  "type": "string"
        +}
    • Changeddevkit_list_component_props1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "component": {
        +      "type": "string"
        +    },
        +    "meta": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "dataFetchedAt": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "designersUrl": {
        +          "type": "string"
        +        },
        +        "sourceUrls": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "stability": {
        +          "enum": [
        +            "beta",
        +            "stable"
        +          ],
        +          "type": "string"
        +        },
        +        "versions": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "bootstrapItalia": {
        +              "type": "string"
        +            },
        +            "designSystem": {
        +              "type": "string"
        +            },
        +            "designTokensItalia": {
        +              "type": "string"
        +            },
        +            "devKitItalia": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "designSystem",
        +            "bootstrapItalia",
        +            "devKitItalia",
        +            "designTokensItalia"
        +          ],
        +          "type": "object"
        +        },
        +        "warnings": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "dataFetchedAt",
        +        "sourceUrls",
        +        "warnings",
        +        "stability"
        +      ],
        +      "type": "object"
        +    },
        +    "props": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "default": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "options": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "type": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "type",
        +          "description",
        +          "default",
        +          "options"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "subcomponents": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "props": {
        +            "items": {
        +              "$ref": "#/properties/props/items"
        +            },
        +            "type": "array"
        +          },
        +          "tagName": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "tagName",
        +          "props"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "tagName": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "component",
        +    "tagName",
        +    "props",
        +    "subcomponents",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Changeddevkit_list_component_variants1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "component": {
        +      "type": "string"
        +    },
        +    "meta": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "dataFetchedAt": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "designersUrl": {
        +          "type": "string"
        +        },
        +        "sourceUrls": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "stability": {
        +          "enum": [
        +            "beta",
        +            "stable"
        +          ],
        +          "type": "string"
        +        },
        +        "versions": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "bootstrapItalia": {
        +              "type": "string"
        +            },
        +            "designSystem": {
        +              "type": "string"
        +            },
        +            "designTokensItalia": {
        +              "type": "string"
        +            },
        +            "devKitItalia": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "designSystem",
        +            "bootstrapItalia",
        +            "devKitItalia",
        +            "designTokensItalia"
        +          ],
        +          "type": "object"
        +        },
        +        "warnings": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "dataFetchedAt",
        +        "sourceUrls",
        +        "warnings",
        +        "stability"
        +      ],
        +      "type": "object"
        +    },
        +    "total": {
        +      "type": "number"
        +    },
        +    "variantsAvailable": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "component",
        +    "total",
        +    "variantsAvailable",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Changeddocs_get_component_guide1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "categories": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "description": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "devKit": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "slug": {
        +              "type": "string"
        +            },
        +            "storybookUrl": {
        +              "type": "string"
        +            },
        +            "tags": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "slug",
        +            "tags",
        +            "storybookUrl"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "guidelines": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "howToUse": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "whenToUse": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "required": [
        +            "whenToUse",
        +            "howToUse"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "meta": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "dataFetchedAt": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "designersUrl": {
        +          "type": "string"
        +        },
        +        "sourceUrls": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "stability": {
        +          "enum": [
        +            "beta",
        +            "stable"
        +          ],
        +          "type": "string"
        +        },
        +        "versions": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "bootstrapItalia": {
        +              "type": "string"
        +            },
        +            "designSystem": {
        +              "type": "string"
        +            },
        +            "designTokensItalia": {
        +              "type": "string"
        +            },
        +            "devKitItalia": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "designSystem",
        +            "bootstrapItalia",
        +            "devKitItalia",
        +            "designTokensItalia"
        +          ],
        +          "type": "object"
        +        },
        +        "warnings": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "dataFetchedAt",
        +        "sourceUrls",
        +        "warnings",
        +        "stability"
        +      ],
        +      "type": "object"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "slug": {
        +      "type": "string"
        +    },
        +    "sourceUrls": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "bsiDoc": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "designersItalia": {
        +          "type": "string"
        +        },
        +        "devKitDoc": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "figma": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        }
        +      },
        +      "required": [
        +        "designersItalia",
        +        "bsiDoc",
        +        "figma",
        +        "devKitDoc"
        +      ],
        +      "type": "object"
        +    },
        +    "status": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "accessibility": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "amichevoleConLettoriDiSchermo": {
        +                  "$ref": "#/properties/status/anyOf/0/properties/libraryStatus/properties/bootstrapItalia"
        +                },
        +                "checkCompleted": {
        +                  "type": "boolean"
        +                },
        +                "comprensibile": {
        +                  "$ref": "#/properties/status/anyOf/0/properties/libraryStatus/properties/bootstrapItalia"
        +                },
        +                "navigabile": {
        +                  "$ref": "#/properties/status/anyOf/0/properties/libraryStatus/properties/bootstrapItalia"
        +                },
        +                "visivamenteAccessibile": {
        +                  "$ref": "#/properties/status/anyOf/0/properties/libraryStatus/properties/bootstrapItalia"
        +                }
        +              },
        +              "required": [
        +                "visivamenteAccessibile",
        +                "amichevoleConLettoriDiSchermo",
        +                "navigabile",
        +                "comprensibile",
        +                "checkCompleted"
        +              ],
        +              "type": "object"
        +            },
        +            "knownIssueUrls": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            },
        +            "libraryStatus": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "bootstrapItalia": {
        +                  "enum": [
        +                    "PRONTO",
        +                    "DA RIVEDERE A11Y",
        +                    "DA RIVEDERE",
        +                    "IN REVIEW",
        +                    "DA COMPLETARE VARIANTI",
        +                    "NON PRESENTE",
        +                    "DA FARE",
        +                    "N/D"
        +                  ],
        +                  "type": "string"
        +                },
        +                "devKitItalia": {
        +                  "$ref": "#/properties/status/anyOf/0/properties/libraryStatus/properties/bootstrapItalia"
        +                },
        +                "uiKitItalia": {
        +                  "$ref": "#/properties/status/anyOf/0/properties/libraryStatus/properties/bootstrapItalia"
        +                }
        +              },
        +              "required": [
        +                "bootstrapItalia",
        +                "uiKitItalia",
        +                "devKitItalia"
        +              ],
        +              "type": "object"
        +            },
        +            "notes": {
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            }
        +          },
        +          "required": [
        +            "libraryStatus",
        +            "accessibility",
        +            "notes",
        +            "knownIssueUrls"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "required": [
        +    "name",
        +    "slug",
        +    "description",
        +    "categories",
        +    "status",
        +    "guidelines",
        +    "devKit",
        +    "sourceUrls",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Changedgithub_get_component_issues1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "component": {
        +      "type": "string"
        +    },
        +    "issues": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "known": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "note": {
        +              "type": "string"
        +            },
        +            "total": {
        +              "type": "number"
        +            },
        +            "urls": {
        +              "items": {
        +                "type": "string"
        +              },
        +              "type": "array"
        +            }
        +          },
        +          "required": [
        +            "total",
        +            "urls",
        +            "note"
        +          ],
        +          "type": "object"
        +        },
        +        "live": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "results": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "createdAt": {
        +                    "type": "string"
        +                  },
        +                  "labels": {
        +                    "items": {
        +                      "type": "string"
        +                    },
        +                    "type": "array"
        +                  },
        +                  "repo": {
        +                    "type": "string"
        +                  },
        +                  "state": {
        +                    "enum": [
        +                      "open",
        +                      "closed"
        +                    ],
        +                    "type": "string"
        +                  },
        +                  "title": {
        +                    "type": "string"
        +                  },
        +                  "url": {
        +                    "type": "string"
        +                  }
        +                },
        +                "required": [
        +                  "title",
        +                  "url",
        +                  "repo",
        +                  "state",
        +                  "createdAt",
        +                  "labels"
        +                ],
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "total": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            }
        +          },
        +          "required": [
        +            "total",
        +            "results"
        +          ],
        +          "type": "object"
        +        }
        +      },
        +      "required": [
        +        "live",
        +        "known"
        +      ],
        +      "type": "object"
        +    },
        +    "meta": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "dataFetchedAt": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "designersUrl": {
        +          "type": "string"
        +        },
        +        "sourceUrls": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "stability": {
        +          "enum": [
        +            "beta",
        +            "stable"
        +          ],
        +          "type": "string"
        +        },
        +        "versions": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "bootstrapItalia": {
        +              "type": "string"
        +            },
        +            "designSystem": {
        +              "type": "string"
        +            },
        +            "designTokensItalia": {
        +              "type": "string"
        +            },
        +            "devKitItalia": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "designSystem",
        +            "bootstrapItalia",
        +            "devKitItalia",
        +            "designTokensItalia"
        +          ],
        +          "type": "object"
        +        },
        +        "warnings": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "dataFetchedAt",
        +        "sourceUrls",
        +        "warnings",
        +        "stability"
        +      ],
        +      "type": "object"
        +    },
        +    "name": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "component",
        +    "name",
        +    "issues",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Changedgithub_get_project_repo_links1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "board": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "repos": {
        +          "items": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "openIssuesUrl": {
        +                "type": "string"
        +              },
        +              "repo": {
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "repo",
        +              "openIssuesUrl"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "repos",
        +        "note"
        +      ],
        +      "type": "object"
        +    },
        +    "meta": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "dataFetchedAt": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "designersUrl": {
        +          "type": "string"
        +        },
        +        "sourceUrls": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "stability": {
        +          "enum": [
        +            "beta",
        +            "stable"
        +          ],
        +          "type": "string"
        +        },
        +        "versions": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "bootstrapItalia": {
        +              "type": "string"
        +            },
        +            "designSystem": {
        +              "type": "string"
        +            },
        +            "designTokensItalia": {
        +              "type": "string"
        +            },
        +            "devKitItalia": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "designSystem",
        +            "bootstrapItalia",
        +            "devKitItalia",
        +            "designTokensItalia"
        +          ],
        +          "type": "object"
        +        },
        +        "warnings": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "dataFetchedAt",
        +        "sourceUrls",
        +        "warnings",
        +        "stability"
        +      ],
        +      "type": "object"
        +    },
        +    "projectBoard": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "note": {
        +          "type": "string"
        +        },
        +        "url": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "url",
        +        "note"
        +      ],
        +      "type": "object"
        +    }
        +  },
        +  "required": [
        +    "board",
        +    "projectBoard",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Changedtokens_find_components1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "meta": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "dataFetchedAt": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "designersUrl": {
        +          "type": "string"
        +        },
        +        "sourceUrls": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "stability": {
        +          "enum": [
        +            "beta",
        +            "stable"
        +          ],
        +          "type": "string"
        +        },
        +        "versions": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "bootstrapItalia": {
        +              "type": "string"
        +            },
        +            "designSystem": {
        +              "type": "string"
        +            },
        +            "designTokensItalia": {
        +              "type": "string"
        +            },
        +            "devKitItalia": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "designSystem",
        +            "bootstrapItalia",
        +            "devKitItalia",
        +            "designTokensItalia"
        +          ],
        +          "type": "object"
        +        },
        +        "warnings": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "dataFetchedAt",
        +        "sourceUrls",
        +        "warnings",
        +        "stability"
        +      ],
        +      "type": "object"
        +    },
        +    "query": {
        +      "type": "string"
        +    },
        +    "results": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "component": {
        +            "type": "string"
        +          },
        +          "composedOf": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "name": {
        +                  "type": "string"
        +                },
        +                "ref": {
        +                  "type": "string"
        +                },
        +                "resolvedVia": {
        +                  "items": {
        +                    "$ref": "#/properties/results/items/properties/resolvedVia/items"
        +                  },
        +                  "type": "array"
        +                },
        +                "value": {
        +                  "type": [
        +                    "string",
        +                    "null"
        +                  ]
        +                }
        +              },
        +              "required": [
        +                "ref",
        +                "name",
        +                "value",
        +                "resolvedVia"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "resolvedVia": {
        +            "items": {
        +              "additionalProperties": false,
        +              "properties": {
        +                "form": {
        +                  "enum": [
        +                    "css-custom-property",
        +                    "sass-variable"
        +                  ],
        +                  "type": "string"
        +                },
        +                "name": {
        +                  "type": "string"
        +                },
        +                "overridable": {
        +                  "type": "boolean"
        +                },
        +                "role": {
        +                  "enum": [
        +                    "bsi-component",
        +                    "bsi-global",
        +                    "dti"
        +                  ],
        +                  "type": "string"
        +                },
        +                "sourceName": {
        +                  "type": "string"
        +                }
        +              },
        +              "required": [
        +                "name",
        +                "sourceName",
        +                "form",
        +                "role",
        +                "overridable"
        +              ],
        +              "type": "object"
        +            },
        +            "type": "array"
        +          },
        +          "token": {
        +            "type": "string"
        +          },
        +          "valueResolved": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "component",
        +          "token",
        +          "resolvedVia",
        +          "valueResolved"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "total": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "query",
        +    "total",
        +    "results",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
    • Changedtokens_list_component_vars8 fields changed
      • addedOutput schema / properties / meta / properties / designersUrl
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / summary / properties / ambiguous
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / summary / properties / composite
        Added value: +{
        +  "type": "number"
        +}
      • changedOutput schema / properties / summary / required
        Previous value: -[
        -  "tokenReference",
        -  "literal",
        -  "scssExpression"
        -]New value: +[
        +  "tokenReference",
        +  "literal",
        +  "scssExpression",
        +  "composite",
        +  "ambiguous"
        +]
      • addedOutput schema / properties / tokens / items / properties / ambiguousValues
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "description": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "resolvedVia": {
        +        "items": {
        +          "$ref": "#/properties/tokens/items/properties/resolvedVia/items"
        +        },
        +        "type": "array"
        +      },
        +      "value": {
        +        "type": "string"
        +      },
        +      "valueResolved": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "required": [
        +      "value",
        +      "description",
        +      "valueResolved",
        +      "resolvedVia"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / tokens / items / properties / composedOf
        Added value: +{
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "name": {
        +        "type": "string"
        +      },
        +      "ref": {
        +        "type": "string"
        +      },
        +      "resolvedVia": {
        +        "items": {
        +          "$ref": "#/properties/tokens/items/properties/resolvedVia/items"
        +        },
        +        "type": "array"
        +      },
        +      "value": {
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      }
        +    },
        +    "required": [
        +      "ref",
        +      "name",
        +      "value",
        +      "resolvedVia"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / tokens / items / properties / declaredTimes
        Added value: +{
        +  "type": "number"
        +}
      • changedOutput schema / properties / tokens / items / properties / valueType / enum
        Previous value: -[
        -  "token-reference",
        -  "scss-expression",
        -  "literal"
        -]New value: +[
        +  "token-reference",
        +  "scss-expression",
        +  "literal",
        +  "composite"
        +]
    • Changedtokens_resolve1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "ambiguousValues": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "component": {
        +            "type": "string"
        +          },
        +          "value": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "component",
        +          "value"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "composedOf": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "ref": {
        +            "type": "string"
        +          },
        +          "resolvedVia": {
        +            "items": {
        +              "$ref": "#/properties/resolvedVia/items"
        +            },
        +            "type": "array"
        +          },
        +          "value": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "ref",
        +          "name",
        +          "value",
        +          "resolvedVia"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "input": {
        +      "type": "string"
        +    },
        +    "meta": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "dataFetchedAt": {
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "designersUrl": {
        +          "type": "string"
        +        },
        +        "sourceUrls": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "stability": {
        +          "enum": [
        +            "beta",
        +            "stable"
        +          ],
        +          "type": "string"
        +        },
        +        "versions": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "bootstrapItalia": {
        +              "type": "string"
        +            },
        +            "designSystem": {
        +              "type": "string"
        +            },
        +            "designTokensItalia": {
        +              "type": "string"
        +            },
        +            "devKitItalia": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "designSystem",
        +            "bootstrapItalia",
        +            "devKitItalia",
        +            "designTokensItalia"
        +          ],
        +          "type": "object"
        +        },
        +        "warnings": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "dataFetchedAt",
        +        "sourceUrls",
        +        "warnings",
        +        "stability"
        +      ],
        +      "type": "object"
        +    },
        +    "normalizedName": {
        +      "type": "string"
        +    },
        +    "resolvedVia": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "form": {
        +            "enum": [
        +              "css-custom-property",
        +              "sass-variable"
        +            ],
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "overridable": {
        +            "type": "boolean"
        +          },
        +          "role": {
        +            "enum": [
        +              "bsi-component",
        +              "bsi-global",
        +              "dti"
        +            ],
        +            "type": "string"
        +          },
        +          "sourceName": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "name",
        +          "sourceName",
        +          "form",
        +          "role",
        +          "overridable"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "value": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "input",
        +    "normalizedName",
        +    "value",
        +    "resolvedVia",
        +    "meta"
        +  ],
        +  "type": "object"
        +}
  2. 28 tool updatesv0.4.0
    • Addedbsi_get_component_markup
    • Addedbsi_list_component_variants
    • Addedbsi_list_components_by_status
    • Addeddevkit_get_component_markup
    • Addeddevkit_list_component_props
    • Addeddevkit_list_component_variants
    • Addeddocs_get_component_guide
    • Addeddsi_list_components
    • Addeddsi_search_components
    • Removedfind_token
    • Removedget_component
    • Removedget_component_full
    • Removedget_component_guidelines
    • Removedget_component_issues
    • Removedget_component_tokens
    • Removedget_component_variant
    • Removedget_project_board_status
    • Addedgithub_get_component_issues
    • Addedgithub_get_project_repo_links
    • Removedlist_accessibility_issues
    • Removedlist_by_status
    • Removedlist_components
    • Removedsearch_components
    • Addedtokens_find_components
    • Addedtokens_list_component_vars
    • Addedtokens_list_globals
    • Addedtokens_resolve
    • Addedtokens_search
  3. 13 tool updatesv0.3.12
    • First observedfind_token
    • First observedget_component
    • First observedget_component_full
    • First observedget_component_guidelines
    • First observedget_component_issues
    • First observedget_component_tokens
    • First observedget_component_variant
    • First observedget_project_board_status
    • First observedlist_accessibility_issues
    • First observedlist_by_status
    • First observedlist_components
    • First observedping
    • First observedsearch_components

TDQS

A4.3/5.0

Scored across 17 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: token tools cover list/resolve/search/find, component tools cover inventory/variants/markup/props, and docs/GitHub tools are separated. The only potential overlap (dsi_list_components vs. bsi_list_components_by_status) is differentiated by scope, so agents can reliably choose the right tool.

Naming Consistency4/5

Most tools follow a [domain]_[verb]_[entity] pattern (e.g., tokens_list_component_vars, bsi_get_component_markup, github_get_component_issues) with consistent use of list/get/search. Minor deviations like 'ping' and 'tokens_search' (missing explicit object) slightly break the pattern, but the convention remains predictable.

Tool Count4/5

At 17 tools, the server is slightly above the typical 3-15 range, but the breadth is justified by the many facets of the design system (tokens, components, variants, markup, props, docs, issues). The tools are tightly scoped to read-only information retrieval, so the count feels reasonable rather than excessive.

Completeness5/5

The tool set comprehensively covers the domain: you can discover components, list/search tokens, resolve variables, fetch variants and markup for both libraries, get props for Dev Kit components, access usage docs, and link to GitHub issues. There are no dead ends—any component found can be further explored through the available tools.

Maintenance

ActivityMaintained
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    MCP server that exposes the @bunge/ds-components design system catalog, allowing AI assistants to list, search, and retrieve component details including inputs, outputs, usage examples, and import instructions.
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server that exposes your design system components and tokens to AI agents, preventing duplicate component creation and hardcoded token values.
    9 npm
    9
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A read-only MCP server that provides AI coding agents with a queryable contract for design system tokens, components, patterns, and anti-patterns.
    12 npm
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server that gives AI assistants structured access to a design system's tokens, components, guidelines, and patterns, enabling them to read, lint, and author design system data.
    1
    MIT