AI shopping agents
Your model has decided the answer is a cast iron skillet. Match turns that decision into three real products with ASINs and links, so the agent can point at something instead of describing it.
For developers & agent builders
Commerce Match takes a product phrase, plus the text around it if you have it, and hands back up to 3 ranked product matches - ASIN, brand, confidence, merchant, and a product URL you can link from.
A real response from the live tool, captured verbatim. Press the button.
Call find_product_matches with a term and its context.
Fixed sample. Run your own term in the dashboard.
Observe the result returned by the MCP tool.
Ready to run the MCP tool.
Status · Timing · Structured output
{
"matches": [
{
"asin": "B00006JSUA",
"url": "https://www.amazon.com/dp/B00006JSUA",
"brand_name": "Lodge",
"confidence": 0.91,
"merchant": "amazon"
},
{
"asin": "B01BM6WPZS",
"url": "https://www.amazon.com/dp/B01BM6WPZS",
"brand_name": "Utopia Kitchen",
"confidence": 0.84,
"merchant": "amazon"
},
{
"asin": "B07QVJZ3RT",
"url": "https://www.amazon.com/dp/B07QVJZ3RT",
"brand_name": "Cuisinel",
"confidence": 0.79,
"merchant": "amazon"
}
],
"count": 3
}The Amazon catalog ID of the matched product, for fetching listing content (title, image, price) with your own Product Advertising API access.
A directional 0-1 retrieval-similarity score. Not a conversion probability, and not the ranking order - matches[0] is always the top pick.
The brand on the matched product. Empty when the catalog doesn't name one.
The full merchant product page - untagged, so no affiliate account is required.
Which merchant the match came from, so your code branches on the field instead of assuming. Amazon is the catalog live today.
Match is resolution only. No mention-finding, no intent scoring, no need to hand over your whole assistant reply - just the term you send and the products that come back: ASINs, brands, and product pages you can link from. If you want the mentions found for you as well, Commerce Insert reads a whole block of text and resolves what it finds.
Your model has decided the answer is a cast iron skillet. Match turns that decision into three real products with ASINs and links, so the agent can point at something instead of describing it.
You have the product phrases already, from an editor, a spreadsheet, or your own extraction. Match resolves each one against a live catalog so your pages carry real listings, not placeholders.
Attach a product card to the moment your assistant recommends something. One call per term, three ranked options back, and you pick how many to render.
Map free-text product language onto a catalog: normalize messy inputs, check whether something is buyable, or pull an ASIN, brand, and department for anything a user typed.
Call find_product_matches with the product phrase you've already identified, as the term param. context is optional - the surrounding text the term appeared in, which sharpens the category read. To match a specific brand, put the brand in the term itself.
The same resolution engine that powers the ChatAds widget scores the term against the catalog and keeps only genuinely passing products. The engine is catalog-agnostic; Amazon US is the catalog wired up today, and there is no country or marketplace parameter to set.
matches[0] is the top match and the rest are runners-up in ranked order. Fewer than three is normal, and an empty list is a real answer - nothing good enough matched, so don't retry it.
A Streamable HTTP MCP server. One URL, authenticated with an access key.
Sign up and open the Commerce Match tab in your dashboard. Create a cak_ access key - one per client is fine.
Add the server to Claude Desktop, Cursor, or any MCP-compatible client, swapping in your key.
Restart your client and find_product_matches is available. Try it in the dashboard first if you'd rather see a live result before wiring anything up.
{
"mcpServers": {
"chatads-commerce": {
"url": "https://api.getchatads.com/tools/mcp/mcp",
"headers": {
"x-api-key": "cak_YOUR_KEY"
}
}
}
}
Up to three matching products, each with five fields: asin, url, brand_name, confidence, and merchant. matches[0] is the top match. No title, image, or price is returned - fetch listing content from Amazon by ASIN or URL with your own Product Advertising API access. The tool returns only products that genuinely pass, so it never pads the list, and an empty matches array is a successful answer rather than an error.
The resolution engine is catalog-agnostic, and Amazon US is the catalog wired up today - so every match currently comes back with merchant: "amazon" and a US url. There is no country or marketplace parameter to set. Branch on the merchant field rather than assuming, and tell us which catalog you want next.
No. The url is the full, untagged merchant product page, so there is no affiliate tag in the response and nothing to sign up for. Add your own tag if you have one, or link as-is if you don't.
Match takes a phrase you already have and resolves it to real products, returning untagged URLs. Insert reads a whole block of text, finds the phrases itself, and returns URLs carrying your own affiliate tag. Same server and same key, so you can run both.
The widget is the finished product: an AI chat assistant you drop onto your blog that answers readers and turns the products it recommends into affiliate links. Match is the resolution layer underneath it, exposed on its own for builders who already have their own agent or commerce stack.
A cak_ access key, created in the Commerce Match tab of your dashboard. Send it in the x-api-key header. Widget keys (cwk_) do not work here, and you can hold as many access keys as you have clients.
Yes, up to 500 requests a month, shared with Commerce Insert. No credit card and no approval step - create an account, generate an access key, and start calling the tool. If you need more, get in touch with a rough volume and we'll raise your cap.
Yes - anything that speaks Streamable HTTP MCP, including Claude Desktop, Claude Code, and Cursor. There is nothing to install locally and no Python or Node dependency; it's one URL in a config file.