MCP server for Blue Perfumery website - provides perfume data access
The server defines 5 tools with complete input schemas and descriptions. All tools follow verb_noun naming convention (list_, get_, search_). However, descriptions are minimal (10-64 chars, below the 194-char production baseline), and output schemas are not documented. Parameter descriptions are present but terse. No error recovery guidance beyond validation messages. The tools are read-only catalog queries with low composition complexity, appropriate for the domain, but descriptions lack context for LLM selection (when to use search_perfumes vs list_all_perfumes, etc.).
Get a specific perfume by its ID
Get perfumes by category (men, women, niche)
Get the Shopier purchase link for a specific perfume
List all perfumes in the Blue Perfumery collection
Search perfumes by name or brand
Output schemas not documented. Tool descriptions state what they return (e.g. 'a JSON object') but do not formally specify the schema structure (fields, types). LLMs cannot plan downstream tool chains without knowing returned field names.
Descriptions lack context for LLM tool selection. E.g. 'List all perfumes in the Blue Perfumery collection' does not explain when to use this vs search_perfumes. Production baseline is 194 chars; most here are 30-64 chars. Descriptions should include WHEN to call the tool.
Parameter descriptions are terse or missing guidance. E.g. 'search_perfumes' query param says 'Search query for perfume name or brand' but does not explain format constraints (min length, case sensitivity, wildcard support). LLMs need explicit guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 68 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Error responses provide validation but no recovery guidance. E.g. when 'get_perfume_by_id' returns 'Perfume not found', there is no hint to try search_perfumes(). Production pattern: 'Resource not found. Try search_perfumes() with partial name or browse list_all_perfumes().'
No pagination or result limiting documented. list_all_perfumes() could return unbounded results, which would bloat the context window. Response strategy should cap results and offer pagination.