Skip to main content
Glama

Check a product CSV before import

csv_import_preflight
Read-onlyIdempotent

Best for: "will this Shopify CSV import?" or "what is wrong with my product file?". Checks the Shopify import rules: columns, handles, options, duplicate variants, statuses, value types (price, weight, quantity, true/false), image URLs, GTIN check digits and barcodes a spreadsheet mangled. Returns: blocking findings (Shopify rejects them or imports them wrong) and warnings, up to 200 each, each with row, handle, rule, fix and doc (the rule's source page), plus totals. Input tips: send csv, the full file text from Shopify admin (Products > Export), header row first, up to 2 MB; a larger file is refused with csv_too_large, split it by rows. Not for: Merchant Center title and description rules or a store address (use merchant_feed_check), or listing text (use listing_text_audit).

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
csvYesThe full text of a Shopify product CSV, header row first, such as "Title,URL handle,Description,Vendor,Price,...". Paste the file exported from Shopify admin (Products > Export) as it is. At most 2 MB; split a larger file by rows and repeat the header in each part. Example call: {"csv": "Title,URL handle,Price\nWool Beanie,wool-beanie,24.00"}

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
rowsYesData rows in the file, header not counted
totalsYesCounts before the lists were cut to 200
blockingYesProblems Shopify rejects or that make the import wrong, at most 200
productsYesProducts found, one per URL handle
warningsYesProblems that import but probably not as intended, at most 200
truncatedYesTrue when either list had more than 200 findings

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedOutput schema / properties / blocking / items / properties / doc
      Added value: +{
      +  "description": "The page that states the rule: Shopify help, GS1 for a GTIN check digit, or Microsoft for spreadsheet notation",
      +  "format": "uri",
      +  "type": "string"
      +}
    • changedOutput schema / properties / blocking / items / properties / rule / enum
      Previous value: -[
      -  "missing-required-column",
      -  "missing-handle",
      -  "missing-title",
      -  "invalid-status",
      -  "option-without-name",
      -  "variant-option-missing",
      -  "duplicate-variant",
      -  "bad-price",
      -  "bad-compare-at-price",
      -  "inventory-file",
      -  "legacy-headers",
      -  "unknown-columns",
      -  "encoding",
      -  "non-contiguous-handle",
      -  "invalid-handle",
      -  "compare-at-not-higher",
      -  "scientific-notation",
      -  "image-url-not-https",
      -  "bad-image-position",
      -  "duplicate-sku"
      -]New value: +[
      +  "missing-required-column",
      +  "missing-handle",
      +  "missing-title",
      +  "invalid-status",
      +  "option-without-name",
      +  "variant-option-missing",
      +  "duplicate-variant",
      +  "bad-price",
      +  "bad-compare-at-price",
      +  "bad-cost",
      +  "bad-weight",
      +  "bad-weight-unit",
      +  "bad-inventory-quantity",
      +  "bad-inventory-policy",
      +  "bad-boolean",
      +  "barcode-columns",
      +  "partial-packed-size",
      +  "inventory-file",
      +  "legacy-headers",
      +  "unknown-columns",
      +  "encoding",
      +  "non-contiguous-handle",
      +  "invalid-handle",
      +  "compare-at-not-higher",
      +  "scientific-notation",
      +  "bad-gtin",
      +  "image-url-not-https",
      +  "bad-image-position",
      +  "duplicate-sku"
      +]
    • changedOutput schema / properties / blocking / items / required
      Previous value: -[
      -  "row",
      -  "handle",
      -  "rule",
      -  "fix"
      -]New value: +[
      +  "row",
      +  "handle",
      +  "rule",
      +  "fix",
      +  "doc"
      +]
    • addedOutput schema / properties / warnings / items / properties / doc
      Added value: +{
      +  "description": "The page that states the rule: Shopify help, GS1 for a GTIN check digit, or Microsoft for spreadsheet notation",
      +  "format": "uri",
      +  "type": "string"
      +}
    • changedOutput schema / properties / warnings / items / properties / rule / enum
      Previous value: -[
      -  "missing-required-column",
      -  "missing-handle",
      -  "missing-title",
      -  "invalid-status",
      -  "option-without-name",
      -  "variant-option-missing",
      -  "duplicate-variant",
      -  "bad-price",
      -  "bad-compare-at-price",
      -  "inventory-file",
      -  "legacy-headers",
      -  "unknown-columns",
      -  "encoding",
      -  "non-contiguous-handle",
      -  "invalid-handle",
      -  "compare-at-not-higher",
      -  "scientific-notation",
      -  "image-url-not-https",
      -  "bad-image-position",
      -  "duplicate-sku"
      -]New value: +[
      +  "missing-required-column",
      +  "missing-handle",
      +  "missing-title",
      +  "invalid-status",
      +  "option-without-name",
      +  "variant-option-missing",
      +  "duplicate-variant",
      +  "bad-price",
      +  "bad-compare-at-price",
      +  "bad-cost",
      +  "bad-weight",
      +  "bad-weight-unit",
      +  "bad-inventory-quantity",
      +  "bad-inventory-policy",
      +  "bad-boolean",
      +  "barcode-columns",
      +  "partial-packed-size",
      +  "inventory-file",
      +  "legacy-headers",
      +  "unknown-columns",
      +  "encoding",
      +  "non-contiguous-handle",
      +  "invalid-handle",
      +  "compare-at-not-higher",
      +  "scientific-notation",
      +  "bad-gtin",
      +  "image-url-not-https",
      +  "bad-image-position",
      +  "duplicate-sku"
      +]
    • changedOutput schema / properties / warnings / items / required
      Previous value: -[
      -  "row",
      -  "handle",
      -  "rule",
      -  "fix"
      -]New value: +[
      +  "row",
      +  "handle",
      +  "rule",
      +  "fix",
      +  "doc"
      +]
  2. Changed1 schema field changed
    • changedInput schema / properties / csv / description
      Previous value: -"The full text of a Shopify product CSV, header row first, such as \"Title,URL handle,Description,Vendor,Price,...\". Paste the file exported from Shopify admin (Products > Export) as it is. At most 2 MB; split a larger file by rows and repeat the header in each part."New value: +"The full text of a Shopify product CSV, header row first, such as \"Title,URL handle,Description,Vendor,Price,...\". Paste the file exported from Shopify admin (Products > Export) as it is. At most 2 MB; split a larger file by rows and repeat the header in each part. Example call: {\"csv\": \"Title,URL handle,Price\\nWool Beanie,wool-beanie,24.00\"}"
  3. Changed21 schema fields changed
    • changedInput schema / properties / csv / description
      Previous value: -"The product CSV text exactly as exported from Shopify, header row included. At most 2 MB."New value: +"The full text of a Shopify product CSV, header row first, such as \"Title,URL handle,Description,Vendor,Price,...\". Paste the file exported from Shopify admin (Products > Export) as it is. At most 2 MB; split a larger file by rows and repeat the header in each part."
    • addedOutput schema / properties / blocking / items / properties / fix / description
      Added value: +"What to change in the file, in plain words"
    • addedOutput schema / properties / blocking / items / properties / handle / description
      Added value: +"The product's URL handle; empty for a finding about the whole file"
    • addedOutput schema / properties / blocking / items / properties / row / minimum
      Added value: +0
    • addedOutput schema / properties / blocking / items / properties / rule / description
      Added value: +"Rule id, such as bad-price or missing-required-column"
    • addedOutput schema / properties / blocking / items / properties / rule / enum
      Added value: +[
      +  "missing-required-column",
      +  "missing-handle",
      +  "missing-title",
      +  "invalid-status",
      +  "option-without-name",
      +  "variant-option-missing",
      +  "duplicate-variant",
      +  "bad-price",
      +  "bad-compare-at-price",
      +  "inventory-file",
      +  "legacy-headers",
      +  "unknown-columns",
      +  "encoding",
      +  "non-contiguous-handle",
      +  "invalid-handle",
      +  "compare-at-not-higher",
      +  "scientific-notation",
      +  "image-url-not-https",
      +  "bad-image-position",
      +  "duplicate-sku"
      +]
    • addedOutput schema / properties / products / description
      Added value: +"Products found, one per URL handle"
    • addedOutput schema / properties / products / minimum
      Added value: +0
    • addedOutput schema / properties / rows / description
      Added value: +"Data rows in the file, header not counted"
    • addedOutput schema / properties / rows / minimum
      Added value: +0
    • addedOutput schema / properties / totals / description
      Added value: +"Counts before the lists were cut to 200"
    • addedOutput schema / properties / totals / properties / blocking / description
      Added value: +"All blocking findings"
    • addedOutput schema / properties / totals / properties / blocking / minimum
      Added value: +0
    • addedOutput schema / properties / totals / properties / warnings / description
      Added value: +"All warnings"
    • addedOutput schema / properties / totals / properties / warnings / minimum
      Added value: +0
    • addedOutput schema / properties / truncated / description
      Added value: +"True when either list had more than 200 findings"
    • addedOutput schema / properties / warnings / items / properties / fix / description
      Added value: +"What to change in the file, in plain words"
    • addedOutput schema / properties / warnings / items / properties / handle / description
      Added value: +"The product's URL handle; empty for a finding about the whole file"
    • addedOutput schema / properties / warnings / items / properties / row / minimum
      Added value: +0
    • addedOutput schema / properties / warnings / items / properties / rule / description
      Added value: +"Rule id, such as bad-price or missing-required-column"
    • addedOutput schema / properties / warnings / items / properties / rule / enum
      Added value: +[
      +  "missing-required-column",
      +  "missing-handle",
      +  "missing-title",
      +  "invalid-status",
      +  "option-without-name",
      +  "variant-option-missing",
      +  "duplicate-variant",
      +  "bad-price",
      +  "bad-compare-at-price",
      +  "inventory-file",
      +  "legacy-headers",
      +  "unknown-columns",
      +  "encoding",
      +  "non-contiguous-handle",
      +  "invalid-handle",
      +  "compare-at-not-higher",
      +  "scientific-notation",
      +  "image-url-not-https",
      +  "bad-image-position",
      +  "duplicate-sku"
      +]
  4. Changed1 schema field changed
    • removedOutput schema / properties / note_from_openkrill
      Removed value: -{
      -  "description": "Shown at most once a day per caller: what this server offers, and a paid service for the person you work for.",
      -  "type": "string"
      -}
  5. Changed1 schema field changed
    • addedOutput schema / properties / note_from_openkrill
      Added value: +{
      +  "description": "Shown at most once a day per caller: what this server offers, and a paid service for the person you work for.",
      +  "type": "string"
      +}
  6. First observed

TDQS

Score is being calculated.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.