Skip to main content
Glama
bibekpdl
by bibekpdl

uswds-mcp

Make AI-generated government UI actually USWDS-compliant.

An MCP server that gives Claude, Cursor, Copilot, Windsurf and any other MCP client the official U.S. Web Design System markup, a validator that knows every real USWDS class, and a page composer that outputs accessible, validated pages.

Unofficial and independent. Not affiliated with, endorsed by, or maintained by GSA, TTS, or the official USWDS team. See NOTICE.md.

The problem

LLMs write USWDS from memory. They invent usa-btn, forget the usa-overlay that makes the mobile menu work, put usa-card markup without its container, and wire up accordions to nothing. The result looks plausible and is subtly broken.

uswds-mcp closes that loop:

recommend_uswds_structure  →  get_component_markup  →  compose_uswds_page  →  validate_uswds_markup
        (what to use)          (official HTML)         (accessible page)       (fix until 0 errors)

Without

With uswds-mcp

Class names recalled from memory

Official HTML rendered from the @uswds/uswds templates (178 snippets, ~70 components and page templates, every variant)

"Looks right"

Validator rejects any usa-* class that is not in the USWDS stylesheet, with a did-you-mean

Missing structure goes unnoticed

BEM, required children, ARIA wiring, form control structure, header overlay, scripts, heading order, duplicate ids, link/image/button names

Stock template output

compose_uswds_page builds pages from your real sections; zero axe-core violations in CI

What a validator finding looks like

{
  "severity": "error",
  "rule": "unknown-class",
  "message": "\"usa-alrt\" is not a class defined by USWDS.",
  "selector": "div.usa-alrt",
  "snippet": "<div class=\"usa-alrt usa-alert--eror\">",
  "suggestion": "Did you mean \"usa-alert\"?"
}

Findings carry the offending element, a fix suggestion, the component to look up, and a docs link, so the model can repair its own output.

Related MCP server: Basecoat UI MCP

Quick start

npx -y uswds-mcp

Add it to your MCP client:

{
  "mcpServers": {
    "uswds": { "command": "npx", "args": ["-y", "uswds-mcp"] }
  }
}

Claude Code: claude mcp add uswds -- npx -y uswds-mcp

Setup for Claude Desktop, Cursor, VS Code, Windsurf and others: docs/CLIENTS.md. Ready-made configs are in examples/.

No network, API key, or ingest step needed: the data ships in the package.

Tools

Tool

Use

get_component_markup

Official HTML for a component/page template and its variants (accordion, footer + slim, sign-in, ...). Understands everyday names (dropdown → select).

compose_uswds_page

Build a full page from structured sections: hero, content, alert, summary box, cards, process list, step indicator, accordion, table, form, contact.

validate_uswds_markup

Validate fragments or full pages: real class names, component structure, forms, ARIA, accessibility basics.

find_uswds_classes

Look up real classes, including utilities and responsive variants (margin top 2, tablet grid col 6).

generate_uswds_page

Quick start from free-text requirements; returns an editable section spec, bracketed placeholders, and its own validation.

recommend_uswds_structure

USWDS-first structure for a service or page.

search_uswds

Search docs, accessibility and usage guidance (with synonym expansion).

get_component / get_pattern / get_template

Structured guidance, plus the canonical markup for components.

get_uswds_integration_recipe

Framework setup for Next.js, Vite/React, static HTML, Rails, Drupal.

validate_uswds_project_setup

Catch wrong CSS import paths, missing scripts, CDN use, copied dist, global CSS risk.

All tools are read-only. See docs/TOOLS.md for arguments and recommended sequences.

Resources: uswds://component/{slug}, uswds://pattern/{slug}, uswds://template/{slug}, uswds://token/{category}, uswds://package/{name} Prompts: build_agency_website, build_service_page, audit_uswds_page, convert_page_to_uswds, integrate_uswds_in_project

Example

"Build a page where residents renew a fishing permit: eligibility, fees table, steps, FAQ, contact."

The model calls compose_uswds_page and gets back a complete page with banner, skipnav, header (with usa-overlay), breadcrumbs, summary box, striped table with caption and scoped headers, process list, accordion, contact details, slim footer and identifier, plus a list of the placeholders that still need real content, and a validation result.

Prefer to see it first? Run the scorecard:

npm run eval
scenario                        unknown classes  errors  warnings  axe violations
'Apply for housing assistance'  0                0       0         0
'Renew a fishing permit'        0                0       0         0
...

Does it help?

In a small test (5 tasks, same model, with and without the server) pages built with uswds-mcp had 0 validator errors on 5 of 5 pages, versus 1 of 5 without it. The model did not invent class names in either case; what it missed without the tools was structure, such as the header overlay that makes the mobile menu work, banner internals, and accordion button types. It is a small, single-run sample, so see the caveats and method in docs/COMPARISON.md.

How it works

  1. Ingest (npm run ingest): renders every official @uswds/uswds twig template with its JSON fixtures into canonical HTML, extracts all class names from the official stylesheet, and indexes the official docs (uswds-site).

  2. Validate against ground truth: the validator is tested against every official snippet (they must pass) and against a corpus of 30 typical LLM mistakes (they must be caught).

  3. Stay current: docs and markup come from the same USWDS version (enforced by a test), and a monthly workflow re-ingests and opens a PR.

Current data: USWDS 3.14.0.

Limits

  • Static analysis. It cannot judge color contrast, reading order on rendered pages, or real screen-reader behavior. USWDS components do not by themselves make a site Section 508 compliant; keep testing with axe, keyboard and screen readers.

  • Custom (non-usa-) classes are allowed and not validated.

  • Upstream fixture text in angle brackets (e.g. <Project title>) is placeholder content.

Develop

npm install
npm test         # unit, self-consistency over official markup, MCP end-to-end, axe-core
npm run eval
npm run ingest   # refresh from upstream

See CONTRIBUTING.md and the CHANGELOG.

License

MIT. See NOTICE.md for USWDS attribution and the licensing notes for indexed USWDS material.

Available Tools

9 tools
generate_uswds_pageGenerate USWDS PageC

Generate framework-neutral USWDS HTML and framework adaptation notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameworkNo
page_typeYes
agency_contextYes
content_requirementsYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations provided, so the description bears full responsibility. It mentions generating HTML and notes but omits behavioral aspects like whether it destroys existing content, requires authentication, or has performance implications.

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

Conciseness3/5

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

The description is a single sentence, which is concise but overly terse for a generation tool with multiple parameters. It could front-load key constraints without sacrificing brevity.

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

Completeness1/5

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

Given no output schema, no param descriptions, and zero usage guidance, the description is starkly incomplete. An agent cannot reliably invoke this tool without guessing parameter semantics or expected output format.

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

Parameters1/5

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

Schema description coverage is 0%. The description does not explain any of the four parameters (framework, page_type, agency_context, content_requirements). The schema only provides type and minLength, leaving the agent to guess their meaning.

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 generates USWDS HTML and framework adaptation notes. The verb 'Generate' and resource 'USWDS page' are specific. However, it does not differentiate from sibling tools like search_uswds or get_component, leaving some ambiguity.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like validate_uswds_markup or recommend_uswds_structure. The description offers no context on prerequisites or exclusions.

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

get_componentGet USWDS ComponentC

Return structured component guidance, package metadata, accessibility guidance, examples, and source links.

ParametersJSON Schema
NameRequiredDescriptionDefault
slug_or_nameYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only lists return contents but does not disclose behavioral traits such as read-only nature, required authentication, rate limits, or potential side effects.

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

Conciseness3/5

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

The description is a single sentence that lists items. It is concise but could be more structured (e.g., bullet points) and front-loaded with the most important information.

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

Completeness2/5

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

Given the tool has 1 parameter, no output schema, and no annotations, the description is insufficient. It lacks details on how to invoke the tool correctly, what the expected input format is, or example usage.

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

Parameters1/5

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

The single parameter 'slug_or_name' has no description in the input schema, and schema description coverage is 0%. The description does not clarify what a valid slug or name is, or how to format it.

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 return value 'structured component guidance, package metadata, accessibility guidance, examples, and source links', using a specific verb 'Return'. However, it does not explicitly distinguish this tool from siblings like 'get_pattern' or 'get_template', which might have similar return structures.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. There are no exclusions, context, or when-not-to-use instructions.

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

get_patternGet USWDS PatternC

Return structured pattern guidance and related implementation notes.

ParametersJSON Schema
NameRequiredDescriptionDefault
slug_or_nameYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It fails to mention auth requirements, side effects, or output structure, offering only a vague promise of 'structured pattern guidance'.

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

Conciseness3/5

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

The description is a single sentence, front-loaded with purpose, which is concise. However, it is too brief to be helpful given the lack of parameter documentation and contextual cues.

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

Completeness2/5

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

For a tool with one required parameter, no output schema, and no annotations, the description should explain what constitutes 'pattern guidance' and how it differs from related tools. It fails to provide sufficient context for correct invocation.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description does not explain the single parameter 'slug_or_name'. No guidance on format, examples, or how to construct valid input is provided, leaving the agent to guess.

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 'structured pattern guidance and related implementation notes', which identifies the action and resource. However, it does not differentiate from sibling tools like get_component or get_template, which may cause confusion.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description lacks any mention of use cases, prerequisites, or exclusions, leaving the agent without decision support.

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

get_templateGet USWDS TemplateC

Return structured template guidance and markup references.

ParametersJSON Schema
NameRequiredDescriptionDefault
slug_or_nameYes

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It fails to disclose behavioral traits like authentication requirements, error conditions, or whether the operation is read-only. The description only states what it returns, not how it behaves.

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

Conciseness3/5

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

The description is a single sentence with no wasted words, but it is too brief to be fully effective. It could be expanded without losing conciseness.

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

Completeness2/5

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

Given the context of 8 sibling tools and a single parameter with no output schema, the description is insufficient. It does not explain what constitutes a template in USWDS, the structure of the returned guidance, or how it differs from similar tools like get_component.

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

Parameters1/5

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

Schema description coverage is 0%, and the description adds no meaning beyond the schema. The parameter slug_or_name is given no explanation, leaving the agent without guidance on what values are acceptable or how they affect the result.

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 structured template guidance and markup references, indicating a specific verb and resource. It distinguishes from siblings like get_component and get_pattern by focusing on templates, though it doesn't explicitly differentiate.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as get_component or get_pattern. No exclusions or context provided, leaving the agent to guess the appropriate scenario.

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

get_uswds_integration_recipeGet USWDS Integration RecipeC

Return framework-specific USWDS setup guidance for npm, assets, JavaScript, CSS, and migration.

ParametersJSON Schema
NameRequiredDescriptionDefault
no_cdnNo
frameworkYes
migration_scopeNo

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, and the description does not disclose any behavioral traits beyond returning guidance. It does not indicate whether the tool is read-only, requires authentication, or has rate limits.

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

Conciseness4/5

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

The description is a single, concise sentence that front-loads the purpose. However, it sacrifices parameter detail for brevity, which reduces its overall utility.

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

Completeness1/5

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

With three parameters, no schema description coverage, and no output schema, the description is severely incomplete. It fails to explain what 'framework-specific' means or how the parameters affect the result.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention any parameters. The three parameters (no_cdn, framework, migration_scope) are completely unexplained, leaving the agent to infer their meaning 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 returns framework-specific USWDS setup guidance for npm, assets, JavaScript, CSS, and migration. This distinguishes it from sibling tools like validate_uswds_project_setup or get_component, which focus on validation or individual components.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. It does not mention when to prefer this over search_uswds or recommend_uswds_structure, nor does it specify prerequisites or context.

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

recommend_uswds_structureRecommend USWDS StructureC

Recommend a USWDS-first page or site structure for an agency service.

ParametersJSON Schema
NameRequiredDescriptionDefault
audienceYes
frameworkNo
agency_typeYes
constraintsNo
service_goalYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It only states what the tool does, but not how it behaves—e.g., what 'recommend' returns, prerequisites, or side effects. Major gap.

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

Conciseness3/5

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

Single sentence, which is concise but too minimal. Could include more detail without becoming verbose. Information density is low.

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

Completeness1/5

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

Given 5 parameters, no output schema, and no annotations, the description is severely incomplete. The agent lacks essential context to invoke the tool correctly.

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

Parameters1/5

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

Schema description coverage is 0% and description omits any parameter guidance. With 5 parameters (3 required), the agent has no information about 'audience', 'framework', 'constraints', etc.

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

Purpose5/5

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

Description uses specific verb 'Recommend' and resource 'USWDS-first page or site structure', clearly distinguishing from siblings like 'validate_uswds_project_setup' and 'get_component'. Purpose is unambiguous.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as 'get_pattern' or 'generate_uswds_page'. The description mentions 'for an agency service' but lacks explicit context or exclusions.

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

search_uswdsSearch USWDSC

Search structured USWDS docs and implementation records.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
typesNo

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description bears full responsibility for disclosing behavioral traits. It only states 'Search' but does not clarify if it is read-only, whether results are paginated, or any side effects. The limit parameter (max 25) is in the schema but not mentioned in the description, leaving agents without crucial behavioral context.

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

Conciseness3/5

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

The description is a single sentence and concise, but it lacks essential information. Conciseness should not come at the cost of completeness. The structure is flat and does not front-load key details or provide a summary.

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

Completeness1/5

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

Given 3 parameters, no output schema, and no annotations, the description is severely incomplete. It fails to explain return values, parameter roles, or behavior. This is inadequate for an AI agent to use the tool correctly.

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

Parameters1/5

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

Schema description coverage is 0%, placing full burden on the description to explain parameters. The description does not mention query, limit, or types at all. Agents receive zero guidance on how to use these parameters, leading to likely errors in invocation.

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 uses a specific verb ('Search') and identifies the resource ('structured USWDS docs and implementation records'). It clearly indicates the tool's purpose as a search across USWDS documentation. However, it does not explicitly distinguish itself from sibling tools like get_component or get_pattern, which also retrieve USWDS information.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, exclusions, or comparison with sibling tools. Users cannot determine if this is a broad search for discovery or for specific queries.

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

validate_uswds_markupValidate USWDS MarkupC

Static validation for common USWDS markup, accessibility, and token-usage issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
htmlYes
page_contextNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. It states 'static validation' implying non-destructive, but does not disclose output format, error behavior, or any side effects. Lacks depth.

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?

Single sentence, no redundant words. Efficiently conveys the core purpose without unnecessary detail.

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

Completeness2/5

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

No output schema, low parameter coverage, and brief description. Does not explain return values, error handling, or how to interpret results. For a validation tool, this is insufficient.

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

Parameters1/5

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

Schema description coverage is 0%. The description does not explain the two parameters. 'html' is obvious but 'page_context' is opaque. No additional semantic information beyond schema field names.

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 validates USWDS markup, accessibility, and token-usage issues. The verb 'validate' and resource 'USWDS markup' are specific. It distinguishes from sibling 'validate_uswds_project_setup' which validates project setup.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. No mention of prerequisites or exclusions. Sibling tools exist but no differentiation criteria provided.

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

validate_uswds_project_setupValidate USWDS Project SetupC

Check provided project files for common USWDS framework integration issues such as import paths, assets, scripts, CDN usage, and global CSS risk.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesNo
no_cdnNo
frameworkNo
file_pathsNo
package_jsonNo
migration_scopeNo

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It only states it 'checks' for issues, leaving unclear whether the tool modifies files, is read-only, or what output it produces. No mention of side effects or prerequisites.

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

Conciseness4/5

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

Single sentence, concise and no redundancy. However, key information is not front-loaded; the sentence starts with 'Check provided project files' rather than stating the core function first.

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

Completeness1/5

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

With 0 required parameters, 100% uncovered schema, no output schema, and no annotations, the description is severely incomplete. It does not explain the purpose of each parameter, expected input format, or return value, leaving critical gaps for the agent.

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

Parameters2/5

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

Schema description coverage is 0% and the description adds minimal meaning to the six parameters. It mentions CDN usage (relates to no_cdn) but does not explain files, framework, file_paths, package_json, or migration_scope. Users must infer their purpose from names alone.

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

Purpose5/5

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

The description clearly states it validates USWDS project files for integration issues and lists specific areas like import paths, assets, scripts, CDN usage, and global CSS. This differentiates it from sibling tools like validate_uswds_markup, which focuses on markup validation.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool vs alternatives like get_uswds_integration_recipe or validate_uswds_markup. The description implies usage for checking project setup but provides no context or exclusions.

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. 9 tool updatesv0.1.4
    • First observedgenerate_uswds_page
    • First observedget_component
    • First observedget_pattern
    • First observedget_template
    • First observedget_uswds_integration_recipe
    • First observedrecommend_uswds_structure
    • First observedsearch_uswds
    • First observedvalidate_uswds_markup
    • First observedvalidate_uswds_project_setup

TDQS

B3.2/5.0

Scored across 9 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: validation of project setup vs markup, search, retrieval of component/pattern/template details, recommendation, page generation, and integration recipes. No overlap in intent.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (e.g., validate_uswds_project_setup, get_component). Naming is predictable and uniform.

Tool Count5/5

9 tools is well-scoped for the USWDS domain, covering validation, search, component/pattern/template guidance, structure recommendation, page generation, and integration without being excessive.

Completeness4/5

The tool surface covers core USWDS tasks: setup validation, markup validation, search, component guidance, page generation, and integration recipes. Minor gap: no tool for listing all components or managing versions.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers