MCP server for Shopify and Stripe e-commerce operations — read + write, multi-store native.
Server has 10 tools with consistent naming (verb_noun pattern) and reasonable descriptions (avg ~120 chars). All tools have input schemas with types and descriptions. However, output schemas are not documented, LLMs cannot predict response structure for chaining. Parameter descriptions lack format constraints (e.g., ISO date format stated but not enforced). Error handling is minimal; no recovery guidance. Missing tool annotations (readOnlyHint, destructiveHint). Pagination support exists but not uniformly documented. No confirmation pattern for destructive operations despite cancel_order being marked DESTRUCTIVE.
Update prices for multiple variants at once. Max 100 variants per call. Accepts an array of { variantId, price, compareAtPrice }.
Cancel an order. DESTRUCTIVE: requires confirm=true. Optionally restock items and notify customer.
Create a price rule and discount code. Supports percentage or fixed amount discounts.
Fulfill an order using the modern FulfillmentOrder API. Auto-fetches fulfillment orders and fulfills all open items. Optionally provide tracking info.
Get revenue analytics: total revenue, order count, AOV, items sold. Computed from paid orders in the given period. Uses pagination for accurate totals.
List customers with optional filters. Returns customer details including order count and total spent. Set paginate=true to auto-follow pages.
Output schemas not documented. LLMs cannot predict response structure, breaking tool chaining. E.g., shopify_get_orders returns order details but response fields are not specified.
Destructive operation (shopify_cancel_order) lacks confirmation pattern. No dry-run or explicit confirm step beyond confirm=true flag. Agents can accidentally cancel orders.
Tool annotations missing. No readOnlyHint, destructiveHint, or idempotentHint in tool definitions. LLMs cannot distinguish safe reads from destructive writes without explicit hints.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
Get fulfillment orders for a Shopify order. Use this to inspect fulfillment status and line items before fulfilling.
List orders with optional filters. Returns order details including total, status, customer, line items. Set paginate=true to auto-follow pages (up to ~1250 orders).
List products with optional filters. Returns product details including variants, prices, inventory. Set paginate=true to auto-follow pages.
Update a product's title, description, status, tags, or vendor. For price changes, use shopify_bulk_update_prices.
Parameter format constraints not enforced. ISO date parameters (since, until, starts_at, ends_at) documented as 'ISO date' but no regex pattern or validation. LLMs may pass invalid formats.
Error handling lacks recovery guidance. No actionable error messages or suggestions for next steps. E.g., if storeId is invalid, error should suggest available stores.