MCP server that provides to-do list management tools integrated with Azure AI Foundry
The server provides 5 well-named CRUD tools for todo management with consistent verb-noun naming (add_, get_, update_, complete_, delete_). All tools have descriptions and input schemas with typed parameters. However, output schemas are not explicitly documented in code, descriptions are minimal (10-30 chars, below ideal 50-200 char baseline), parameter descriptions are sparse in some cases, and there is no error handling guidance or recovery paths. The tool definitions are explicit (via [McpServerTool] attributes) and not inferred. Composition is clean (one responsibility per tool), but lack of structured output documentation and missing error context significantly impacts agent usability.
Adds a to-do item to database.
Completes a to-do item in the database.
Deletes a to-do item from the database.
Gets a list of to-do items from database.
Updates a to-do item in the database.
Descriptions are too brief (10-30 chars; baseline is 50-200 chars for A+ tools). Descriptions lack WHEN to use the tool and context for LLM selection. 'Adds a to-do item to database.' is minimal; should explain intent, prerequisites, and what result to expect.
Output schemas not documented in code. Tools return string responses ('Todo item added: ...') but the exact structure is not formally specified. LLMs cannot plan downstream calls or extract structured data. Missing documentation of return type violates 100% baseline for A+ tools.
No error handling guidance. When update_todo_item and delete_todo_item return 'Todo item with ID X not found', there is no recovery hint. Should indicate: 'Try get_todo_items() to verify the ID exists' or suggest next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-21 | D | 52 | 2026-07-28+ | v2 |
| 2026-03-09 | C | 64 | - | v1 |
get_todo_items has no pagination parameters (limit, offset, page_size). If the todo list grows large, all items are returned, risking context window exhaustion. Should accept optional limit (default 20) and offset parameters.
No destructive operation safeguards. delete_todo_item is irreversible but has no dry-run, confirmation step, or audit logging visible in code. No tool annotation (destructiveHint) visible to guide agents to request confirmation.