MCP tools for accessibility evidence capture and diagnosis
This server has critically weak definition quality. Only 2 tools are registered, both with minimal descriptions and severely incomplete input schemas. The 'a11y.evidence' tool has a generic description ('Evidence capture') without context for when/why to use it. Its input schema defines 'bundle_id' (string) and 'input' (object) but the 'input' parameter has no property definitions, it is just a bare object type with no fields described, making it impossible for an LLM to know what data structure to pass. The 'a11y.diagnose' tool similarly has a terse description ('Accessibility diagnosis') and accepts either 'bundle_id' or 'bundle' as alternatives, but again no details on the 'bundle' object structure. Neither tool has documented output schemas. Parameter descriptions are minimal (e.g., 'Bundle identifier' for bundle_id is 10 chars, below the 20-char floor for meaningful guidance). No error handling, recovery guidance, or actionable error messages are evident. The tool names use dot notation (a11y.evidence, a11y.diagnose) rather than verb_noun patterns, which is non-standard and less intuitive for LLM tool selection. No pagination, validation rules, or composition chain support is visible. The source code references (src/a11y-mcp-tools/src/tools/evidence.js, diagnose.js) are mentioned but the actual implementation files are not provided in the source excerpt, so schemas and output types cannot be verified, they are only inferred from the summary provided.
Accessibility diagnosis
Evidence capture
Tool names do not follow verb_noun pattern. 'a11y.evidence' and 'a11y.diagnose' use dot notation and lack clear action verbs (e.g., 'capture_evidence', 'diagnose_accessibility'). LLMs cannot reliably infer intent from non-verb names.
Tool descriptions are under 20 characters or generic. 'Evidence capture' (16 chars) and 'Accessibility diagnosis' (23 chars) lack context for when to use each tool, what they return, or how they differ. No guidance on prerequisites or next steps.
Input schema for 'a11y.evidence' defines 'input' parameter as bare object type with no properties documented. LLM cannot determine what fields to pass. This violates the requirement that every parameter must have type definition and description.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 26 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 21 | 2024-11-05+ | v1 |
No output schemas documented for either tool. LLMs cannot plan downstream calls or extract relevant data without knowing the response structure (fields, types, required vs optional).
No error handling guidance. Tools do not provide actionable error messages, recovery steps, or error categorization (retryable vs user-fixable vs fatal). An LLM receiving an error has no context for next steps.
Parameter 'bundle_id' description ('Bundle identifier') is only 17 characters and provides no format, range, or constraint guidance. Invites hallucinated values from LLM.
Tool composition is unclear. 'a11y.diagnose' accepts 'bundle_id' (output of 'a11y.evidence'?) but this chain is not documented. No guidance on whether evidence must be captured before diagnosis, or how to compose multi-step workflows.