MCP server providing fruit and vegetable market data with pricing, search, and shopping cost calculation tools
Server has 4 tools with basic descriptions and partial schemas. All tools have descriptions (10-50 chars, below ideal 50-200 char range), but parameter descriptions are present. Input schemas visible but incomplete: calculate_shopping_cost has nested object schema without required field declarations; search_by_price_range lacks enum constraints on 'category'; find_organic_products and compare_regular_vs_organic have empty input schemas ({}). No output schemas documented. No error handling guidance. Tool names are action-oriented (calculate_, search_, find_, compare_) but descriptions are terse. No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Resources are well-defined (4 resource endpoints with clear URIs and descriptions), but tools lack the depth expected for production use.
Calculate the total cost of a shopping list Args: items: List of dictionaries with keys 'type' (fruit/vegetable), 'name', and 'quantity' Example: [{"type": "fruit", "name": "apple", "quantity": 2}] Returns: Dictionary with total cost and itemized breakdown
Compare prices between regular and organic products
Find all organic fruits and vegetables
Search for fruits or vegetables within a specific price range Args: min_price: Minimum price max_price: Maximum price category: Optional category filter ('fruit', 'vegetable', or None for both) Returns: Dictionary with matching items
Two tools (find_organic_products, compare_regular_vs_organic) have empty input schemas ({}).
Descriptions are terse (10-50 chars, below baseline 50-200 chars). 'Find all organic fruits and vegetables' and 'Compare prices between regular and organic products' lack context on WHEN to use, WHAT is returned, and any prerequisites. LLMs cannot reliably select these tools.
search_by_price_range 'category' parameter lacks enum constraint. Description says 'Optional category filter (fruit, vegetable, or None for both)' but no enum in schema. LLMs may hallucinate invalid values like 'produce' or 'organic'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract fields reliably. E.g., calculate_shopping_cost returns a dict with 'total_cost', 'items', 'errors', 'timestamp', none of this is declared in the tool definition.
No error handling guidance. Tools return error dicts (e.g., {'error': 'Fruit not found'}) but do not guide the LLM on recovery steps. No actionable error messages per pattern:recovery-guide.