This server has significant quality gaps that would prevent production use. While tool names follow basic verb-noun conventions (add_item, remove_item, fetch_items, mark_purchased), the parameter schemas are incomplete, descriptions lack actionable detail, and there is no documented output structure. The codebase contains duplicate tool definitions (tools 1-4 are identical to tools 5-8), suggesting either incomplete refactoring or a build artifact issue. The shopping list service implementation is not visible in the provided source, making it impossible to verify error handling or output structure. STDIO-only transport further limits deployment options.
Add a shopping list item. Parameters: name (str): The name of the item. quantity (int): The quantity to add. Returns: str: The unique ID of the newly added item.
Add a shopping list item. Parameters: name (str): The name of the item. quantity (int): The quantity to add. Returns: str: The unique ID of the newly added item.
Retrieve all shopping list items, optionally filtered by purchased status. Parameters: purchased (bool, optional): Filter items by purchased status. None returns all items, True returns only purchased items, False returns only unpurchased items. Returns: list: A list of shopping items matching the filter criteria.
Retrieve all shopping list items, optionally filtered by purchased status. Parameters: purchased (bool, optional): Filter items by purchased status. None returns all items, True returns only purchased items, False returns only unpurchased items. Returns: list: A list of shopping items matching the filter criteria.
Mark an item as purchased or not. Parameters: item_id (str): The unique ID of the item. purchased (bool, optional): True to mark as purchased; False otherwise. Defaults to True. Returns: bool: True if the update succeeded; otherwise False.
Duplicate tool definitions: tools 1-4 are identical to tools 5-8. This indicates either incomplete refactoring, build system issues, or duplicated registrations that will confuse clients.
Output schemas are not documented. The tools return str, bool, and list but there is no description of the structure, fields, or format of list items returned by fetch_items() or what string format add_item() returns (UUID? custom ID?).
No error handling guidance. There is no documentation of what errors each tool can raise, when to retry, or how to recover. For example, remove_item() returns bool but does not explain what False means, item not found? Permission denied? This violates the recovery-guide pattern.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 57 | - | v1 |
Mark an item as purchased or not. Parameters: item_id (str): The unique ID of the item. purchased (bool, optional): True to mark as purchased; False otherwise. Defaults to True. Returns: bool: True if the update succeeded; otherwise False.
Remove an item from the shopping list. Parameters: item_id (str): The unique ID of the item. Returns: bool: True if the item was removed successfully; otherwise False.
Remove an item from the shopping list. Parameters: item_id (str): The unique ID of the item. Returns: bool: True if the item was removed successfully; otherwise False.
Parameter description for 'purchased' in fetch_items() uses 'default:null' in the schema but JSON Schema does not formally support null as a type in the way implied. The description says 'None returns all items' but the actual schema type is 'boolean' with default true, creating a type mismatch.
No pagination or result limits. fetch_items() returns a list with no documented limit, offset, or pagination parameters. If the shopping list grows large, returning all items will blow the context window and degrade LLM reasoning.
Tool descriptions lack actionable context. For example, remove_item() description does not clarify whether the tool is idempotent (can it be safely retried?), whether it requires special permissions, or what happens if the item ID does not exist.
Destructive operations lack confirmation/dry-run support. remove_item() is marked DESTRUCTIVE but has no dry-run mode or confirmation step. Agents can accidentally delete items without safeguards.