Skip to main content
Glama
camerone05

shopify-admin-mcp-server

by camerone05

Bulk Update Variants

shopify_bulk_update_variants
Idempotent

Apply the same changes to many Shopify variants at once, including pricing, cost, customs codes, and shipping weight. Filter by SKU, product, or query, and preview with a dry run.

Instructions

Apply the same field changes to many variants in one go — customs data, cost, pricing, identifiers and shipping weight.

Select the variants with any combination of skus, productIds, query, onlyMissingHsCode and onlyMissingOrigin (combined with AND). At least one selector is required.

The common customs backfill is: onlyMissingHsCode: true, harmonizedSystemCode: '611030', countryCodeOfOrigin: 'AU'

dryRun defaults to TRUE when price or compareAtPrice is set, and FALSE otherwise — so pricing changes require an explicit dryRun: false, while customs and cost writes apply immediately. A dry run reports exactly which variants would change and writes nothing.

maxVariants (default 500) is a hard refusal, not a truncation: if the selector matches more, nothing is written and you are told the match count.

SKU cannot be changed here — bulk-rewriting SKUs would break the selectors used to address variants. Use shopify_update_inventory_item for single-SKU changes.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
costNoUnit cost e.g. '12.50'
skusNoExact variant SKUs
priceNoPrice e.g. '29.99'
queryNoShopify variant search, e.g. 'product_type:Socks'
dryRunNoPreview without writing. Defaults true when price fields are set.
barcodeNoBarcode / GTIN
taxCodeNo
taxableNo
trackedNoWhether Shopify tracks stock for this SKU
productIdsNoProduct GIDs — targets every variant of each
weightUnitNo
maxVariantsNoRefuse if the selector matches more than this
weightValueNoShipping weight, e.g. 0.25
compareAtPriceNoCompare-at price e.g. '39.99'
inventoryPolicyNoWhether to keep selling when out of stock
requiresShippingNofalse for digital/service items
onlyMissingHsCodeNoRestrict to variants with no HS code
onlyMissingOriginNoRestrict to variants with no country of origin
countryCodeOfOriginNo2-letter ISO country code e.g. 'AU'
harmonizedSystemCodeNoHS/HTS code, 6-13 digits e.g. '611030' or '6110.30'
provinceCodeOfOriginNoProvince/state code e.g. 'BC'
countryHarmonizedSystemCodesNoDestination-specific HTS overrides — replaces the existing list

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv4.0.1

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare readOnly/destructive/idempotent/openWorld; the description adds far more: dryRun defaults to true only when price or compareAtPrice is set, maxVariants is a hard refusal rather than a truncation, dry runs write nothing and report the affected variants, and countryHarmonizedSystemCodes replaces the existing list. These are exactly the mutation-safety details an agent needs.

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

Conciseness5/5

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

Front-loads the tool's effect, then groups selectors, dry-run behavior, limits, and exclusions into short scannable blocks. Length is justified by a 22-parameter mutation surface; no sentence is filler.

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

Completeness4/5

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

No output schema exists, so the description carries return-value burden; it describes dry-run and refusal outputs but not the shape of a successful write response. For selection, safety, and limits it is otherwise thorough given the parameter count.

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 86%, so the baseline is 3, but the description adds real meaning the schema lacks: the AND-combination and required-selector semantics, the default-dryRun logic keyed to price fields, and the refusal behavior of maxVariants. It stops short of explaining a few params such as tracking/inventoryPolicy interactions.

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 (bulk update variants) plus the exact field families touched (customs data, cost, pricing, identifiers, shipping weight). An agent can distinguish it from shopify_create_variants, shopify_delete_variants, and shopify_update_inventory_item without opening any schema.

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

Usage Guidelines5/5

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

Explicitly states at least one selector is required, that selectors combine with AND, gives the canonical customs-backfill invocation, and names the alternative for the excluded case (SKU changes → shopify_update_inventory_item). When-to-use and when-not-to-use are both covered.

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