Questions it answers
Check an online store's product catalog before you import it or send it to a shopping feed.
Ask "will this Shopify product CSV import cleanly?", "what would Google Merchant Center reject in my catalog?", "which products have no image alt text or a copied description?" or "write me a sheet that fixes the empty alt text".
Catalog QA Desk checks a Shopify product CSV against the import rules (required columns, handles, options, duplicate variants, prices, statuses, image URLs, barcodes mangled by a spreadsheet) and returns the rows that block the import and the ones that import wrongly, each with the fix.
It checks products for Google Merchant Center feed rules: missing or invalid barcodes (GTIN length and check digit), titles that are too long, promotional or in capitals, missing descriptions, links in descriptions and missing images.
It audits listing text: images without alt text, descriptions copied between products, thin descriptions and title problems; and it builds an advisory CSV of corrected titles and alt text for you to review and import yourself.
You can pass the CSV text (up to 2 MB), or a store address: the store's public product feed (/products.json, at most 5 pages of 250 products) is read once, after its robots.txt, only when you ask. Large stores often block that feed, and then a CSV is needed.
It does not use the Shopify admin API, does not log in to any store, changes nothing in a store and does not submit anything to Google. Nothing you send or read is stored, no catalog is kept or indexed, and there is no account; only a daily count of calls per tool is recorded.
What it can do
- Checks a Shopify product CSV before import and lists blocking rows and warnings, each with the fix
- Finds products Merchant Center would reject: bad or missing GTINs, long or promotional titles, empty descriptions
- Finds images without alt text, copied or thin descriptions and title problems
- Builds a CSV of corrected titles and alt text to review and import; changes nothing in the store
- Reads a store's public product feed once on request, after robots.txt, instead of a CSV
Tools
csv_import_preflight, Check a product CSV before import. 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).merchant_feed_check, Check products for Merchant Center rules. Best for: "what would Google Merchant Center reject?" or "are my barcodes valid?". Checks GTIN length and check digit, duplicate GTINs, long, promotional or all-capital titles, missing descriptions, links, images, brand and price. Returns: a summary (products, no_gtin, bad_gtin, long_title, no_description), up to 200 issues (one per product and rule, with detail) and notes on checks that could not run. Input tips: send exactly one of csv (a Shopify product CSV or a Google Merchant feed file) or domain (a store address such as example.com). Domain mode reads the public product feed once, after robots.txt. That feed has no barcodes, so no_gtin and bad_gtin are null; use a CSV for GTINs. Errors: both_given, missing_source, csv_too_large, or a feed refusal such as not_public; then ask for the CSV. Not for: Shopify import errors (use csv_import_preflight) or alt text (use listing_text_audit). It submits nothing to Google.listing_text_audit, Audit product listing text. Best for: "which products have no alt text?", "are any descriptions copied?" or "which descriptions are too thin?". Returns: four lists, up to 100 entries each: no_alt (images without alt text), duplicate_descriptions, thin_descriptions and title_issues, with totals before the cut. Input tips: send exactly one of csv (a Shopify product CSV) or domain (a store address such as example.com); optional min_words, the word count below which a description is thin (default 20). Domain mode reads the public product feed once, after robots.txt. Errors: both_given, missing_source, csv_too_large, or a feed refusal; then ask for the CSV. Not for: writing the fixes (use listing_fix_sheet), GTINs or Merchant Center rules (use merchant_feed_check).listing_fix_sheet, Build a CSV of listing text fixes. Best for: "write the alt text for my images" or "fix the shouting titles". Builds a CSV of corrected titles and image alt text to review and import. Returns: csv with only the rows that change (URL handle, Title, Product image URL, Image position, Image alt text), 200 rows in one call (pass next_offset for more), with counts per fix and a notice. It changes nothing in any store. Input tips: send exactly one of csv or domain. Optional fixes, any of alt_text, title_whitespace, title_caps (default all three), and alt_text_template with {title}, {vendor}, {type}, {position} (default "{title}"). Errors: both_given, missing_source, csv_too_large, or a feed refusal; then ask for the CSV. Not for: rewriting descriptions or changing a live store. Run listing_text_audit first to see what is wrong.
Add Catalog QA Desk in VS Code
VS Code reads MCP servers from mcp.json and offers their tools to Copilot Chat in Agent mode. A workspace file at .vscode/mcp.json applies to that project. For every workspace, run MCP: Open User Configuration from the Command Palette and add the same entry there. These steps were checked against the VS Code MCP servers guide on 2026-10-09.
Create or edit the file so it contains this server. VS Code uses a top-level servers object, not mcpServers. Merge it with servers you already have.
{
"servers": {
"catalog-qa": {
"type": "http",
"url": "https://catalogqa.openkrill.app/mcp"
}
}
}No command, no headers and no input variables for a key: Catalog QA Desk answers without a login. Save the file and select Start above the entry. VS Code asks once whether you trust the server: confirm it. Run MCP: List Servers to check that Catalog QA Desk is running. You should see csv_import_preflight, merchant_feed_check, listing_text_audit, listing_fix_sheet.
Open the Chat view, choose Agent mode and ask: Will this Shopify product CSV import cleanly? The Configure Tools button in the chat input lists the tools of each server, and VS Code may ask you to confirm the first call. The server is public and read-only. It sees only the arguments of each call, so do not paste secrets into the question.
Command line users can add it to the user profile in one step with code --add-mcp and the same name, type and url as JSON. The portable .mcp.json at the project root also works in VS Code, with mcpServers as its top-level key. An organization can turn MCP off through Copilot policy: if the MCP commands are missing, ask the admin.
If it does not work
The tool does not show up
Run MCP: List Servers, select the server and choose Restart. If it shows an error, choose Show Output to read the log. Check that the entry sits under servers with "type": "http", and that Chat is in Agent mode, where MCP tools are offered.
429 or rate_limited
Each server takes 60 calls a minute from one network, and some tools take fewer. Past that the call comes back as a tool error that starts with rate_limited: wait a minute and ask again. daily_limit means the server reached its shared daily cap, which resets at 00:00 UTC. A limit is not an answer, so do not read it as no results. For higher limits, ask support@openkrill.app for a key.
JSON entry has no type
Claude Code skips an entry in .mcp.json that has a url but no type. Add "type": "http" next to the url, or add the server with claude mcp add --transport http, which writes the type for you. The VS Code entry needs the same type field. Cursor and Pi read the url alone.
A call checked on 2026-10-17
A two-column Shopify product CSV is enough for the import preflight to return row findings. The request below was posted to https://catalogqa.openkrill.app/mcp as tools/call. HTTP 200. Source: the Catalog QA Desk server, read 2026-10-17.
{
"method": "tools/call",
"params": {
"name": "csv_import_preflight",
"arguments": {
"csv": "Handle,Title,Variant Price\nmug,Blue mug,12\n"
}
}
}
- warnings. 1 returned
Repeat the call yourself if you need a newer reading. Cached answers expire. A rate limit is not a result: wait and try again. Nothing in the call is a ranking, a filing, or advice.
Using it in production
Nothing to install and nothing to run: no package, no Python or Node.js version and no environment variable. Catalog QA Desk runs on our servers, and your client only needs the URL https://catalogqa.openkrill.app/mcp.
| Rate limit | 60 tool calls a minute from one network. initialize and tools/list do not count. |
|---|---|
| Daily cap | 5000 tool calls a day per server, shared by every caller. It resets at 00:00 UTC. |
| At a limit | The call comes back as a tool error that starts with rate_limited (wait a minute) or daily_limit (try after 00:00 UTC), never as a partial answer. |
| Key | None. Do not add an Authorization header or a key field. |
| Higher limits | Email support@openkrill.app with the server name, the calls a day you expect and what they are for. We answer within 1 business day. |
| Freshness | Some answers come from a short cache. Each guide shows the date of its checked call; repeat a call when you need a newer reading. |
| Uptime | Scheduled test calls check the servers through the same endpoint. There is no SLA yet. |
| Data | What each server receives and keeps is on the privacy page. |
Use it in other apps
- Catalog QA Desk in ChatGPT
- Catalog QA Desk in Claude
- Catalog QA Desk in Cursor
- Catalog QA Desk in Pi
Roles that use Catalog QA Desk
Frequently asked questions
How do I install the Catalog QA Desk MCP server in VS Code?
Add catalog-qa with type http and the url https://catalogqa.openkrill.app/mcp under servers in .vscode/mcp.json and save the file. Select Start above the entry, confirm that you trust the server, then use it from Chat in Agent mode.
Do I need an API key to run Catalog QA Desk in VS Code?
No. This server takes no API key. For higher limits, email support@openkrill.app with the server name (Catalog QA Desk), the calls a day you expect and what they are for. We answer within 1 business day.
What should I do if Catalog QA Desk does not connect in VS Code?
Check that the entry sits under servers, not mcpServers, and has type http. Run MCP: List Servers, select catalog-qa and choose Restart, then open Show Output if it still fails.