A local QA MCP server and Cursor Agent workflow.
Three tools with clear verb-noun naming (analyze_user_story, create_test_charter, draft_bug_report) and reasonable descriptions (80-120 chars). All tools have input schemas with Zod validation and type constraints. However, parameter descriptions are sparse or missing entirely, 'feature' and 'risk' in create_test_charter lack descriptions; 'title', 'actual', 'expected' in draft_bug_report lack descriptions. Output schemas are not documented, responses return JSON text without field-level documentation. No error handling guidance, no recovery paths, no validation error messages. Tools are READ_ONLY (good), but lack idempotent/destructive hints. Composition is sound (three independent concerns), but parameter naming could be more explicit (e.g., 'story_text' vs 'story').
Extract acceptance criteria, product risks, and open questions before testing.
Create a concise, risk-based exploratory testing charter.
Turn verified observations into a review-ready Markdown bug report.
Missing parameter descriptions in create_test_charter and draft_bug_report. 'feature', 'risk', 'title', 'actual', 'expected' lack descriptions; LLMs cannot infer parameter meaning from names alone.
Output schemas not documented. Tools return JSON text without field-level documentation. LLMs cannot plan downstream operations or extract structured data reliably.
No error handling or recovery guidance. Invalid inputs (e.g., story < 20 chars, steps array empty) fail silently or with generic errors. No actionable error messages to guide LLM retry.
Tool annotations missing. No readOnlyHint, destructiveHint, or idempotentHint declared, even though all three tools are READ_ONLY and idempotent.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Parameter naming inconsistency. 'story' vs 'feature' vs 'title', no consistent suffix pattern (e.g., _text, _name). Ambiguous whether 'story' is a string ID or full text.