Skip to main content

Overview

The free MCP for monetizing AI-generated text with affiliate links. Commerce Insert MCP is a resolution + placement MCP tool. Give insert_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
Send generated text, not the prompt that produced it. This is the single most common integration mistake. message is the model’s output - the sentence that names a product - not the instruction or user question that asked for it. “Write me a post about running shoes” has nothing in it to link.
It’s the third tool on the same server as Commerce Extract and Commerce Match: Extract finds product mentions with no offers attached, Match turns a single phrase you already picked into a shoppable listing, and Insert does both steps end-to-end on a full passage - find the mention, resolve it, and hand back a ready-to-insert link. All three tools live on the same server behind the same 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.
Amazon US is the catalog live today. There is no marketplace parameter on the tool - the catalog comes from your team’s settings.
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.
  1. Log into app.getchatads.com
  2. Open Commerce Insert
  3. In the Access Keys card, click Create Key
You can hold as many access keys as you have clients - one per MCP client is a good default, so you can revoke them independently. Widget keys (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.com links only and does nothing for amazon.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:
It’s a Streamable HTTP MCP server, so there’s nothing to install locally and no Node or Python dependency - one URL in a config file. Restart your client and 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:
returns:
Splicing that back into your text gives you:
The tool returns the links, not rewritten text - you own the final copy, so you decide the markup, the placement, and whether to use a given link at all. That’s what makes it drop into a publishing pipeline as easily as a chat loop. The JSON above is the text response. Clients that support MCP structured tool output also receive the 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”

The message 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:
  1. Check you sent the generated text, not the prompt. A prompt or user question has no product mention in it to link.
  2. Check the casing. The same extraction engine backs all three tools and capitalization is a real signal - see Casing Is a Signal.
  3. 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

  1. Verify the URL is exactly: https://api.getchatads.com/tools/mcp/mcp
  2. If your client’s config uses a transport field, it should be "http"
  3. Confirm the key in x-api-key starts with cak_
  4. Restart your MCP client completely
  5. Ask: “What tools do you have access to?”