Overview
The free MCP for monetizing AI-generated text with affiliate links. Commerce Insert MCP is a resolution + placement MCP tool. Giveinsert_product_links a piece of AI-generated text and it returns affiliate offers to insert into it - the exact anchor text to hyperlink, its character offsets in the text you sent, and the product URL to point it at. Your text comes back unchanged; your app does the substitution.
It doesn’t have to be a chat reply. Anything your model wrote is fair game:
- Generated articles and roundups - a programmatic “best running shoes” post, a buyer’s guide, a product comparison
- Newsletters and email copy - a weekly digest that names a few products
- Social posts and captions - short-form copy with a product mention in it
- Chat and assistant replies - the classic case: your assistant recommends something, you link it
- Product descriptions, summaries, scripts - any generated prose where a real product gets named
cak_ access key, so connecting once gets you all three.
Unlike Commerce Match, which returns untagged URLs, Commerce Insert applies your team’s own Amazon Associates tag - you earn on the links it returns. See Set Your Amazon Affiliate Tag.
This is a different server from the MCP Data Connector. That one is read-only access to your own widget data with a
uk_ user key. This one takes a cak_ team access key and analyzes text you send it.Get Your Access Key
Commerce Insert MCP authenticates with a team access key (cak_...) in the x-api-key header - the same key type Commerce Extract and Commerce Match use. If you already hold one, reuse it.
- Log into app.getchatads.com
- Open Commerce Insert
- In the Access Keys card, click Create Key
cwk_...) and user keys (uk_...) do not work here.
Set Your Amazon Affiliate Tag
Insert is the one commerce tool that returns commission-bearing links, so the tag is what makes it pay. Set it under Offer Settings on the Commerce Insert tab in app.getchatads.com, alongside marketplace targeting, category rules, and product filters - those settings shape what the tool returns.- Without a tag the tool still works, it just returns plain, untagged Amazon URLs. Nothing errors and nothing is blocked; you simply don’t earn on them. Set the tag before you ship.
- Tags are per marketplace, with no cross-marketplace fallback. A US tag is applied to
amazon.comlinks only and does nothing foramazon.co.uk, and vice versa. A URL whose marketplace has no tag of its own comes back untagged rather than borrowing another marketplace’s.
Connect
Commerce Insert runs on the same MCP server as Commerce Extract and Commerce Match. If you’ve already connected it,insert_product_links is there too - skip this section. Add the server once; one entry serves all three tools.
In Claude Code it’s one command. Most other clients (Claude Desktop, Cursor, Windsurf, etc.) take the JSON block - drop the transport field if your client rejects it:
insert_product_links is available.
Tool
Each offer:
Each product carries
title, url, image, brand_name, category, price, currency, stars, and reviews. Fields with no value are omitted.
Example
Calling the tool with:metadata comes back on a top-level metadata field of that response.
Response Statuses
data.status tells you what happened. Only filled and partial_fill carry offers; every other status below is a successful “nothing to link” response with an empty offers array, not an error - don’t retry it.
The word-count, content-filter, and brand-only screens above only run when
extraction_mode is standard (the default). Setting extraction_mode: "none" skips straight to resolution, so message_too_short, blocked_keyword, language_not_allowed, the two country statuses, and no_brand_found can’t come back. The message_too_long cap applies either way.
Client errors - a missing message, an unknown mode - come back the other way: data is null and error carries a code and message. Those are worth fixing, not retrying.
Limits
- Message length: 10,000 characters per call by default, and under 10 words is skipped as too short.
- Requests: the free tier includes 500 requests per month. Every call counts, including ones that return no offers. Get in touch to raise your cap - tell us roughly what volume you’re expecting.
- Commerce Insert shares one usage pool with Commerce Extract and Commerce Match and the rest of your team’s API usage, and the same per-minute burst limit. Your current month’s usage is shown at the top of the Commerce Insert tab.
- Your team’s blocked-keyword, language, country, category, and product-filter rules still apply - they’re the same rules configured under Offer Settings on the Commerce Insert tab. Content rules surface as a
data.status, not an error.
Troubleshooting
”This tool requires a cak_ API key”
You connected with a user key (uk_...). Commerce Insert MCP takes a team access key (cak_...) - create one on the Commerce Insert, Commerce Extract, or Commerce Match tab.
”Message is required”
Themessage argument was missing, empty, or whitespace only. An empty message is a client error, not an empty-offers success.
The URLs come back with no tag= parameter
Your team has no Amazon Affiliate Tag set for that marketplace, so the link is returned untagged and earns nothing. Add one under Offer Settings on the Commerce Insert tab - see Set Your Amazon Affiliate Tag.
Text that clearly names a product returns no_offer
In order of what usually fixes it:
- Check you sent the generated text, not the prompt. A prompt or user question has no product mention in it to link.
- Check the length. Under 10 words returns
message_too_shortbefore anything runs, unless you setextraction_mode: "none". - Check the casing. The same extraction engine backs all three tools and capitalization is a real signal - see Casing Is a Signal.
- Check the product is in the catalog. Amazon US today; some products legitimately aren’t there.
”Daily request limit exceeded” / “Monthly request limit exceeded” / “Per-minute rate limit exceeded”
You’ve used your plan’s allowance. See Limits.”API key disabled. Contact support.”
Your key’s team has been disabled. Email chris@getchatads.com.Tool not appearing in your MCP client
- Verify the URL is exactly:
https://api.getchatads.com/tools/mcp/mcp - If your client’s config uses a
transportfield, it should be"http" - Confirm the key in
x-api-keystarts withcak_ - Restart your MCP client completely
- Ask: “What tools do you have access to?”