W3C MCP — web-standards lookup over w3c/browser-specs (GitHub, CF-reachable). ~800 current web specs (W3C + WHATWG): HTML, CSS, WCAG, DOM, SVG, ARIA, WebAuthn, Fetch, etc.
Two tools with clear, detailed descriptions and well-formed schemas. Naming follows verb_noun convention (w3c_search, w3c_spec). Descriptions are 194 - 250 chars, within the 10 - 1024 baseline. Both tools have input schemas with type definitions and parameter descriptions. However, w3c_spec has a critical schema defect: required array is empty despite 'spec' being the only meaningful parameter. Output schemas are not documented, LLMs cannot predict response structure. Error handling is present but minimal (throws generic errors without recovery guidance). No tool annotations (readOnlyHint, idempotentHint). Search tool caps results at 25 (good), but detail tool lacks pagination guidance. Parameter descriptions are adequate but could specify format constraints more explicitly (e.g., 'shortname format: 2 - 20 alphanumeric chars').
Find W3C / web-standards specifications by keyword or topic — HTML, CSS, WCAG accessibility, DOM, SVG, WAI-ARIA, WebAuthn, Fetch, and 800+ others. Answers "what W3C spec defines X", "the CSS grid specification", "web accessibility standard", "which spec covers custom elements". Returns specs with shortname, title, status (Recommendation / Working Draft / Living Standard), organization, and official URL. Example: w3c_search({ query: "flexbox" }).
Detail for one web-standards spec by shortname ("WCAG21", "css-grid-1", "html") or title fragment ("web content accessibility"). Returns title, status, organization (W3C/WHATWG), working groups, series, official URL, editor's-draft URL. Example: w3c_spec({ spec: "WCAG21" }). Accepts shortname/name/title too.
w3c_spec schema has empty required array despite 'spec' being the only meaningful parameter. This violates JSON Schema best practices and leaves LLMs uncertain whether the parameter is optional.
Output schemas are not documented. LLMs cannot predict response structure (e.g., fields returned by w3c_search or w3c_spec). This forces LLMs to guess at downstream field names and risks extraction errors.
Error messages lack recovery guidance. Errors like 'w3c_search requires a query' do not suggest next steps (e.g., 'Provide a keyword like "accessibility" or "flexbox"'). This violates the recovery-guide pattern.
No tool annotations (readOnlyHint, idempotentHint). Both tools are read-only and idempotent, but this is not declared in the schema. LLMs cannot infer safety properties without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
w3c_spec accepts multiple parameter aliases (spec, shortname, name, title, query) but the schema only documents 'spec'. This hidden flexibility is not discoverable and violates the principle of explicit parameter contracts.