Shopify order management tools for LLM agents
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation and output schema clarity. Tool names follow verb_noun convention (get_, add_). Descriptions exist but are minimal (10-50 chars, below the 50-200 char LLM-optimized baseline). Parameters lack detailed constraints and format guidance. No documented output schemas. Error handling is present but generic. The add-tracking tool accepts optional parameters without documenting mutual exclusivity or dependencies. Overall structure is functional but falls short of production-grade quality.
Add tracking information to a fulfilled order
Get a list of all active orders
Get detailed information about a specific order
Descriptions are too brief (10-50 chars vs. 50-200 char baseline). 'Get detailed information about a specific order' and 'Get a list of all active orders' lack context on WHEN to use each tool, what data is returned, and how they differ from each other.
Output schemas are not documented. Code shows GraphQL response types (OrderResponse, OrdersResponse, FulfillmentTrackingInfoUpdateResponse) but no schema is exposed to the LLM. The agent cannot plan downstream calls or extract required fields (e.g., order IDs for chaining).
Parameter descriptions lack format and constraint guidance. 'orderId' accepts '#1001', '1001', or 'gid://shopify/Order/...' but the description does not explain these formats or when to use each. 'trackingCompany' and 'trackingUrl' are optional but no guidance on when both are required or mutually exclusive.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Error responses use generic formatErrorResponse() without recovery guidance. Code shows 'Order not found' but does not suggest 'Try get-active-orders() to list available orders' or offer similar order names. Agents cannot self-correct.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). add-tracking modifies state but is not marked as destructive. get-order-details and get-active-orders are read-only but lack annotations. Agents cannot reason about side effects or retry safety.