An MCP server that provides access to an office supply inventory stored in a CSV file, allowing clients to query item names and retrieve detailed information about specific items.
Two tools with minimal descriptions (10-15 chars each) and no parameter descriptions. get_items has empty input schema ({}); get_item_info has one parameter with a description. No output schemas documented. No error handling guidance. No tool annotations. Naming is verb-noun compliant but descriptions are far below the 194-char baseline for production tools. No pagination, no result limits, no recovery guidance.
Given an item name, return all details of the item.
Return the list of all item names in the inventory.
Tool descriptions are critically short (10-15 chars). 'Return the list of all item names in the inventory.' is 54 chars but lacks WHEN to use, prerequisites, or output structure. Baseline is 194 chars. LLMs cannot reliably select tools with such sparse descriptions.
get_items has empty input schema ({}). No parameters documented. get_item_info has one parameter (item_name) with description, but no output schema documented for either tool. LLMs cannot plan downstream calls or extract required fields without knowing return structure.
No error handling guidance. get_item_info returns {'error': 'Item not found.'} but does not suggest recovery (e.g., 'Try get_items() to see available items'). Agents cannot self-correct on failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
No pagination or result limits. get_items returns all unique item names as a list with no limit, offset, or total count. If inventory grows to thousands of items, response bloats context window and degrades LLM reasoning.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Both tools are read-only but this is not declared in the schema. Agents cannot distinguish safe tools from destructive ones without explicit hints.