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. price is always in USD and currency is always "USD"; for non-USD catalogs you also get price_local/currency_local, the raw catalog price and its currency. Fields with no value are omitted.
Example
Calling the tool with:data payload directly as structured content - the bare {"status": ..., "returned": n, "offers": [...]} object, matching the tool’s declared output schema, the same way Commerce Extract and Commerce Match return theirs.
Response Statuses
data.status tells you what happened. Only filled carries offers; every other status below is a successful “nothing to link” response with an empty offers array, not an error - don’t retry it as-is. The one exception is message_too_long: shorten the message and resend, and it can succeed. data.returned is how many offers came back.
The
message_too_long cap applies to every call.
Client errors - a missing message - come back the other way: the response has no data field and error carries a code and message. Those are worth fixing, not retrying.
Limits
- Message length: 10,000 characters per call by default. There is no minimum word count - a single product name is a valid message.
- 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, 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 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?”