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 drafts a listing from a product photo: the product type, the brand and model only when printed on the item, a likely brand marked as a guess, colour, visible wear, a title and bullet points, and what to ask the seller. The photo is read once by Google Gemini on its unpaid plan and is not kept.
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
- Drafts a listing from a product photo, with the brand and model only when printed on the item
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.describe_product_photo, Draft a listing from a product photo. Use this when the user has a photo of an item they want to sell or list (eBay, Shopify, Etsy, a marketplace post) and wants a listing draft from it. Pass the photo as file, image_url (a public https link) or image_base64. Returns the product type, the brand and model only when printed on the item (a brand guessed from the design comes apart as likely_brand, marked as a guess), colour, material, visible wear, items shown with it, a title under 80 characters, bullet points, and what to ask the seller. One JPEG, PNG, WebP or HEIC image up to 8 MB. It never invents a model number, a size or a condition grade. The photo goes once to a free Google Gemini model and nothing is kept. Not for photos of people, or for checking whether an item is genuine.
Add Catalog QA Desk in Claude
Claude connects to a remote MCP server as a custom connector. The connection is made from Anthropic's cloud, not from your laptop, so the server must be on the public internet. Catalog QA Desk is. These steps were checked against Claude's custom-connector article (updated 2026-08-11) and the Claude Code MCP docs on 2026-10-01.
On a Pro or Max plan:
- Open Customize, then Connectors.
- Select the plus button, then Add custom connector.
- Paste this URL. Leave Advanced settings empty: this server does not need an OAuth client id or secret.
https://catalogqa.openkrill.app/mcp - Select Add. The connector is yours. Anthropic has not reviewed it, and it is not a Directory listing.
- In a conversation, open the plus button, then Connectors, and enable Catalog QA Desk. Ask: Will this Shopify product CSV import cleanly?
On Team and Enterprise, an Owner adds the connector first at Organization settings, then Connectors, then Add, then Custom, then Web, and pastes the same URL. Members then connect it from Customize. A Free plan can add one custom connector.
In Claude Code, add it from the project directory:
claude mcp add --transport http catalog-qa https://catalogqa.openkrill.app/mcpThat writes a local or user config. A JSON entry needs "type": "http" (or streamable-http) plus the url. An entry with a url and no type is skipped. Confirm with claude mcp get catalog-qa. The tools you should see are csv_import_preflight, merchant_feed_check, listing_text_audit, listing_fix_sheet, describe_product_photo.
If Claude tries to fetch https://catalogqa.openkrill.app/mcp from its code sandbox and reports HTTP 403, the block is Claude's sandbox network allowlist, not this server. The sandbox proxy answers 403 with x-deny-reason: host_not_allowed for every host outside the allowlist. Use the connector above instead: connector calls come from Anthropic's cloud and do not pass the sandbox proxy. To let the sandbox reach it as well, an Owner adds catalogqa.openkrill.app under Settings, then Capabilities, then Additional allowed domains.
Enable the connector only in conversations that need it. Claude can call the tools while you work, including during research, so turn off any tool you do not want invoked. Catalog QA Desk does not write to your accounts. It still receives the arguments of each call. Read the privacy page before you paste anything that is not public.
If it does not work
The tool does not show up
In Claude, enable the connector in the conversation from the plus button, then Connectors. In Claude Code, run claude mcp list from the same directory you added it in, then start a new session: a running session does not load a new server.
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 | 25000 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 Cursor
- Catalog QA Desk in VS Code
- 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 Claude?
In Claude, open Customize, then Connectors, choose Add custom connector and paste https://catalogqa.openkrill.app/mcp. In Claude Code, run claude mcp add --transport http catalog-qa https://catalogqa.openkrill.app/mcp. No restart is needed for either.
Do I need an API key to run Catalog QA Desk in Claude?
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 Claude?
Check that the connector URL ends in /mcp and that Advanced settings are empty. In Claude Code, run claude mcp get catalog-qa; a JSON entry with a url but no type is skipped, so add type http.