MCP tools exposing CSV-backed todo CRUD endpoints. Includes list, get, create, update, and delete operations.
Five tools with reasonable naming conventions (all verb_noun pattern) and functional schemas. However, descriptions are minimal (15 - 28 characters), falling well below the 50 - 200 char optimum for LLM-driven tool selection. No parameter descriptions provided across any tool, violating the 100% baseline for A+ tools. Schemas are present but sparse, only required fields declared, no constraints, enums, or ranges. No documented error handling or output schemas. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear semantic differences (list/get are read-only; delete is destructive).
Create a new todo
Delete a todo by ID
Get a specific todo by ID
List all todos
Update an existing todo
All tool descriptions are under 20 characters, fail the critical threshold.
Zero parameter descriptions across all tools. The rubric baseline (100% of A+ tools have param descriptions) is not met. LLMs cannot infer whether 'todo_id' is a database ID, user-visible identifier, or something else. 'title' parameter lacks constraints on length, required characters, or examples of valid values.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear semantic risk levels declared: list_todos and get_todo are READ_ONLY; update_todo is WRITE; delete_todo is DESTRUCTIVE. Per current MCP spec (2026-07-28), tool annotations enable agents to reason about side effects and retryability.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 51 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 53 | - | v1 |
No output schemas documented. Baseline (100% of A+ tools have documented return types) not met. LLMs cannot plan downstream operations or extract chaining IDs (e.g., todo_id after create_todo) without knowing the response structure.
No error handling guidance. If create_todo fails due to duplicate title, missing title, or database error, the response does not tell the LLM whether to retry, ask the user, or abort. Per pattern:recovery-guide, error responses must be actionable.
Destructive operation (delete_todo) has no confirmation or dry-run support. Per pattern:confirmation-request, agents should be able to confirm before irreversible side effects. Current schema allows silent deletion.
Parameter schemas lack constraints. update_todo 'title' has no maxLength, minLength, or pattern. 'todo_id' accepts any integer with no documented range or format.