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 ChatGPT
ChatGPT does not read a local config file. A custom MCP server is added in the product, and only after developer mode is on. These steps were checked against OpenAI's plugin connect guide and the ChatGPT MCP guide on 2026-10-01. Developer mode can be hidden by a workspace policy, so a Team or Enterprise admin may have to allow it first.
- Open ChatGPT settings, then Security and login, and turn on Developer mode.
- Open ChatGPT plugins and select the plus button.
- Enter a name such as "Catalog QA Desk" and a one-line description of what you want it to answer.
- Under Connection, choose the public endpoint and paste this URL. Include the
/mcppath. Do not add a tunnel id: this server is already public.https://catalogqa.openkrill.app/mcp - Create the connection and review the tools ChatGPT lists. You should see
csv_import_preflight,merchant_feed_check,listing_text_audit,listing_fix_sheet,describe_product_photo. The feedback tools on the same server are optional and not required for the lookup. - Start a new conversation, add the connection from the tools menu, and ask: Will this Shopify product CSV import cleanly?
No API key and no OAuth client id are required. The server answers without a login. Calls are limited per network and per day, and a limit comes back as a tool error rather than a partial answer. If the tool list is stale after a server change, open the connection and select Refresh, then start a new conversation.
The ChatGPT desktop app, Codex CLI and IDE extension share a different config. In the desktop app, open Settings, then MCP servers, choose Add server, select Streamable HTTP, and paste the same URL. In ~/.codex/config.toml the equivalent is a table named mcp_servers.catalog-qa with url = "https://catalogqa.openkrill.app/mcp". ChatGPT on the web does not read that file. A published directory listing is also a different path: this page is the developer-mode connection, not a claim that Catalog QA Desk is already in the ChatGPT directory.
Treat the server as untrusted until you have read a few answers. A remote MCP server sees the arguments the model sends. Catalog QA Desk is read-only and documents what it sends onward on the privacy page.
If it does not work
The tool does not show up
Check that the endpoint ends in /mcp. Open the connection, select Refresh, then start a new conversation and add the connection from the tools menu. A conversation started before the connection was added does not see its tools.
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.
Developer mode is missing in ChatGPT
Developer mode is in ChatGPT settings, then Security and login, on the web. In a Team or Enterprise workspace an admin can hide it, so ask the admin to allow custom connections first. Without developer mode ChatGPT cannot add a custom MCP server.
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 Claude
- 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 ChatGPT?
Turn on Developer mode in ChatGPT settings, then Security and login. In ChatGPT plugins, select the plus button and paste https://catalogqa.openkrill.app/mcp as the public endpoint. Start a new conversation and add the connection from the tools menu.
Do I need an API key to run Catalog QA Desk in ChatGPT?
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 ChatGPT?
Check that the endpoint ends in /mcp. Open the connection, select Refresh, and start a new conversation. If Developer mode is missing, a workspace admin has to allow it first.