Skip to main content
Glama

Run a ready-made report across stores

store_report
Read-only

Generate combined, store-labelled Shopify reports across multiple stores for sales, orders, inventory, catalog gaps, and duplicate SKUs, so you can compare performance and spot issues in one answer.

Instructions

Ask every store (or the ones listed) at once and get one combined, store-labelled answer. Reports:

  • overview: Name, currency, plan, active and draft product counts, orders in the period, open unfulfilled orders and locations, per store.

  • sales: Order count, sales total (current order totals, after edits and refunds) and average order value per store for a period, excluding test and cancelled orders. Totals stay in each store's own currency.

  • unfulfilled: Open orders not yet fully fulfilled, grouped by age (under 1 day, 1-2, 2-7, over 7 days), with the oldest listed per store.

  • low_stock: Variants of active products with tracked inventory at or below a threshold (default 5). When more than one store is included, each low SKU is looked up in the other stores so stock can be moved.

  • find_product: Look a product up by SKU, handle or title words in every store, with its status, price, compare-at price and stock per variant. Use it to compare one product across stores.

  • catalog_gaps: Compares products by handle across stores: products missing from some stores, and products whose status (active, draft, archived) differs between stores.

  • catalog_health: Active products with gaps that hurt sales or search: no image, image without alt text, empty description, no SEO description, no product type, or a zero price.

  • duplicate_skus: SKUs used by more than one variant inside a store, and SKUs that point at different products in different stores.

  • recent_changes: Products updated in the period (default the last 7 days), newest first, per store. Periods default to the last 7 days; a bare date is read in each store's own time zone. Large stores are read up to max_pages pages and the result says when it stopped early.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "report": "<report>"
    },
    "name": "store_report"
  }
}

Input Schema

NameRequiredDescriptionDefault
skuNofind_product: exact SKU.
daysNooverview, sales, recent_changes: how many days back (default 7; 1 means since yesterday).
limitNounfulfilled: how many of the oldest orders to list per store (default 5).
queryNofind_product: title words or Shopify search syntax. catalog_gaps, catalog_health, duplicate_skus: optional filter such as "vendor:Acme".
sinceNosales, overview, recent_changes: start date, for example 2026-10-01. Overrides days.
untilNosales, overview, recent_changes: end date (exclusive), for example 2026-10-31.
handleNofind_product: product handle.
reportYesWhich report to run.
storesNoStores to include. Omit for every connected store.
max_pagesNoUpper bound on pages read per store (each page is 100-250 records). Defaults differ per report.
thresholdNolow_stock: report variants at or below this quantity (default 5).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.3.1

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond readOnlyHint/openWorldHint the description discloses real behavioral detail: sales excludes test and cancelled orders and keeps each store's own currency, low_stock cross-checks SKUs in other stores, periods default to 7 days with bare dates read in each store's time zone, and large stores are truncated at max_pages with the result saying so. These are exactly the caveats an agent needs before trusting the output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lead sentence states scope up front and the bulleted report catalog is scannable, with each bullet carrying distinct information needed to choose an enum value. It is long, but the length is justified by nine report modes; minor trimming of repeated 'per store' phrasing is possible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 11 parameters, no output schema, and a single required enum, the description carries the return-value burden and does so by naming the fields each report yields (counts, totals, AOV, age buckets, image/alt/SEO gaps, status diffs). Pagination limits and truncation signaling are also covered, leaving no material gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: period defaults and per-store time-zone interpretation of dates, the default low-stock threshold, and the early-stop behavior tied to max_pages. It does not add much for sku/handle/query beyond what the schema already says.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Ask every store ... and get one combined, store-labelled answer') and then enumerates all nine report modes with the exact metrics each returns. This clearly separates it from siblings like search_products, list_orders and graphql_query_all_stores, which are single-resource or raw-query tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Each bullet implies the situation that selects it (e.g. find_product 'Use it to compare one product across stores'; low_stock notes cross-store lookup 'so stock can be moved'), and the opening sentence explains the multi-store scope. It stops short of explicit when-not guidance, such as when to prefer search_products or graphql_query_all_stores over this aggregated report.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.