Model Context Protocol server for Shopify operations
Five tools with basic verb-noun naming (get_*, search_*) and present descriptions. However, descriptions are generic (10-50 chars), lack context on WHEN to use each tool, and omit prerequisites. Parameter descriptions exist but are minimal. No output schemas documented. Error handling returns raw error messages without recovery guidance. All tools are read-only, reducing risk, but composition is weak, no pagination despite list tools, no chaining IDs in responses.
Get a list of customers from the Shopify store
Get a list of orders from the Shopify store
Get detailed information about a specific product
Get a list of products from the Shopify store
Search for products by title, vendor, or tags
Descriptions are too short (10-50 chars) and lack context. 'Get a list of products from the Shopify store' does not explain WHEN to use get_products vs search_products, what fields are returned, or pagination behavior.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. E.g., does get_products return product_id, title, price, inventory? Unknown.
List tools (get_products, get_orders, get_customers) accept a limit parameter but lack pagination support (no offset, cursor, or total_count). Returning 50 items without pagination metadata blocks chaining.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Error handling returns raw axios error messages ('Error fetching products: ...') without recovery guidance. LLM cannot determine if error is retryable, user-fixable, or fatal.
Parameter descriptions are minimal. E.g., 'status' in get_orders says 'Filter orders by status (open, closed, cancelled, any)' but does not explain what each status means or when to use each.