shopify-multi-store
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OPT_OUT_INSTRUMENTATION | No | Set to 'true' to turn off Shopify skill telemetry. | |
| SHOPIFY_MULTI_STORE_CONFIG | No | Path to the configuration file. Default: ~/.config/codex-shopify-multi-store/stores.json |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| shopify_get_store_capabilitiesB | Inspect store identity and granted access scopes. |
| shopify_switch_shopA | Resolve a named store without disconnecting other stores. Continue to pass the store alias on every call. |
| shopify_search_productsB | Search products with cursor pagination. |
| shopify_get_productB | Get product details, variants and media. Follow each returned cursor independently. |
| shopify_search_collectionsA | Search manual and smart collections with cursor pagination. |
| shopify_get_collectionA | Get collection details, rules and a page of products. |
| shopify_list_ordersB | List orders with Shopify search filters and cursor pagination. |
| shopify_get_orderB | Get order, shipping, fulfillment, tracking and a page of line items. |
| shopify_list_customersA | Search customers with cursor pagination. Shopify protected-data permissions apply. |
| shopify_get_inventory_levelsA | Get inventory by product or inventory item. Use inventoryItemId and after to page through additional locations. |
| shopify_graphql_schemaB | Explore the Admin GraphQL schema for this store API version. |
| shopify_validate_graphql_codeblocksA | Validate Admin GraphQL operations against this store API version without executing them. |
| shopify_run_analytics_queryA | Run ShopifyQL and return columns, rows and chart metadata. Requires reports access. |
| shopify_create_productA | Create a product, options, variants and images. Defaults to draft. Optional collection membership is a separate step. |
| shopify_update_productB | Update product fields, variants and media with a before/after result. |
| shopify_create_collectionB | Create a manual or smart collection. Pass publicationIds to publish to explicitly selected channels. |
| shopify_update_collectionC | Update collection fields, rules or image with a before/after result. |
| shopify_add_to_collectionA | Add products to a manual collection and return its current state. |
| shopify_list_publicationsA | List publication IDs before publishing products or collections. |
| shopify_publish_resourceC | Publish a product or collection to explicit publication IDs. |
| shopify_bulk_update_product_statusA | Update explicitly selected products or one collection, with bounded selection and per-product outcomes. |
| shopify_set_inventoryA | Set available inventory using compare-and-set protection. Read inventory first. |
| shopify_create_discountC | Create a percentage discount with an explicit start date and customer audience. |
| shopify_upload_imageA | Upload a local image or HTTPS source to Shopify, wait for processing, and return a CDN URL. |
| shopify_get_uploaded_imageA | Read image processing status and its CDN URL without creating another file. |
| shopify_bulk_export_startC | Start an asynchronous read-only Shopify bulk export. Save the returned operation ID to resume. |
| shopify_bulk_export_statusC | Resume a bulk export by its operation ID. Partial exports remain explicitly incomplete. |
| shopify_create_preview_storeA | Create a real temporary Shopify store that a merchant can claim. No existing store is modified. Reuse requestId after interruptions to prevent duplicate creation. |
| shopify_get_preview_storeB | Refresh preview and claim links for a temporary store created by this app. |
| shopify_get_new_store_previewsA | Start an asynchronous build of 1–3 designed storefront previews on separate NEW temporary Shopify stores, with a real claim link. Generate concrete design specifications from the user brief. Uses Shopify Dawn; does not alter an existing store. Reuse requestId after interruption. Generate demo products and designs from the brief. Products, pricing, and storefront copy remain editable after claiming. |
| shopify_get_new_store_preview_statusA | Check an asynchronous storefront preview request and retrieve fresh preview and claim links. |
| shopify_search_docs_chunksA | Search Shopify documentation and return source links. No store credentials are sent. |
| shopify_find_sample_productA | Find sample products across published Shopify demo catalogs. For categories without suitable samples, generate original product concepts from the user query and pass generatedCandidates to display draft-creation cards. Label concepts as examples, never supplier offers or verified products. Images are optional; use only available relevant image URLs. |
| shopify_list_storesA | List every Shopify Admin store that remains connected to this plugin. This tool does not expose access tokens. |
| shopify_get_shop_infoA | Get identity and account information from one named Shopify Admin store. Use this tool before a sensitive change to make sure that the selected store is correct. |
| shopify_graphql_queryA | Run one read-only GraphQL Admin API query against one named store. Use cursor pagination and request only necessary fields. |
| shopify_graphql_query_manyA | Run the same read-only GraphQL Admin API query across multiple named stores in parallel. Each store returns its own success or error result. |
| shopify_graphql_mutationA | Run one GraphQL Admin API mutation against one named store. Set confirm to true only after the user authorizes the exact store and change. |
| shopify_portfolio_snapshotA | Create a read-only operating snapshot across selected stores or every configured store. Includes shop identity and product, order, customer, and location counts when scopes permit. |
| shopify_compare_inventoryA | Compare inventory, price, product status, and catalog details for selected SKUs across multiple Shopify stores. |
| shopify_get_product_everywhereA | Find one exact SKU or product handle across selected stores and return a normalized product, price, status, and inventory matrix. |
| shopify_search_products_manyA | Search products across selected stores using plain terms or Shopify product-search syntax. Returns bounded per-store results and completeness indicators. |
| shopify_list_unfulfilled_ordersA | List recent open, unfulfilled orders across multiple Shopify stores with independent per-store results. |
| shopify_fulfillment_sla_reportA | Group open unfulfilled orders into age buckets and identify orders older than a configurable fulfillment SLA across selected stores. |
| shopify_compare_catalogA | Compare product titles, status, vendor, product type, and inventory for exact handles across multiple Shopify stores. |
| shopify_catalog_gap_reportA | Discover products that are missing or have different publication statuses across selected stores. Bounded scans are labeled as potential rather than definitive gaps. |
| shopify_order_summaryA | Summarize recent order values, discounts, shipping, tax, cancellations, and financial and fulfillment statuses across selected stores. Currency totals remain separate. |
| shopify_low_stock_reportA | Find every active product variant at or below an inventory threshold across selected stores. Separates low, zero, and negative inventory. |
| shopify_catalog_healthA | Audit recent products across selected stores for missing vendor, product type, SEO fields, featured media, media alt text, and active products without inventory. |
| shopify_recent_product_changesA | List products updated during a selected lookback window across multiple stores, including status, inventory, vendor, and product type. |
| shopify_customer_growthA | Compare new-customer counts across the current and previous periods for selected stores. Count precision remains visible when Shopify caps a count. |
| shopify_compare_collectionsA | Compare exact collection handles across stores, including titles, sort order, product counts, SEO fields, and collection images. |
| shopify_store_locationsA | Review active, inactive, legacy, fulfillment, inventory, and address status for locations across selected stores or the full portfolio. |
| shopify_duplicate_sku_reportA | Find duplicate SKUs inside each store and identify SKUs shared across stores. The report labels incomplete scans when a store exceeds the row limit. |
| shopify_compare_pricesA | Compare price and compare-at price for exact SKUs across selected stores and highlight mismatches or missing variants. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| shopify-results |
TDQS
Scored across 55 tools
Several tools overlap heavily: get_product_everywhere, compare_catalog, compare_inventory, compare_prices, and search_products_many all return product/price/inventory/catalog comparisons across stores, while get_shop_info and get_store_capabilities both cover store identity. Detailed descriptions help, but an agent would still struggle to reliably choose between these near-duplicate multi-store report tools.
Nearly all tools follow a shopify_verb_noun snake_case convention, with consistent verbs like get, search, list, create, update, and compare. Minor inconsistencies exist: store vs. shop terminology is mixed, shopify_graphql_schema has no verb, and preview/previews vary across tools, but overall the pattern is disciplined.
55 tools is far beyond a focused multi-store toolset. Many single-purpose report variants such as compare_prices, compare_catalog, compare_inventory, catalog_health, and catalog_gap_report could be consolidated into parameterized reporting tools, making the surface feel bloated and harder to navigate.
Read-side coverage is very broad, and products, collections, inventory, discounts, publishing, and bulk export are all represented. Dedicated customer/order/discount mutation and delete tools are missing, but the generic shopify_graphql_mutation tool provides a workaround, so there is no hard dead end.