Programmatic content pipelines
If you generate articles, roundups, or product descriptions at volume, run each draft through Insert before it publishes and every product mention comes back with a tagged link ready to place.
For developers & agent builders
Chat replies, generated articles, product roundups, social posts. Commerce Insert reads the text your model wrote and hands back the phrases worth linking, each with its character span and a tagged product URL - so your renderer weaves the link into copy that already exists.
A real response from the live tool, with the meta block trimmed. Press the button.
Call insert_product_links with a passage of AI-generated text.
Fixed sample. Run your own text in the dashboard.
Observe the result returned by the MCP tool.
Ready to run the MCP tool.
Status · Timing · JSON response
{
"data": {
"status": "filled",
"offers": [
{
"link_text": "Logitech MX Master 3",
"is_branded": true,
"term_brand": "Logitech",
"match_start": 38,
"match_end": 58,
"products": [
{
"title": "Logitech MX Master 3S for Mac - Wireless Bluetooth Mouse",
"stars": 4.4,
"reviews": 2388,
"image": "https://m.media-amazon.com/images/I/61TU7cMHepL.jpg",
"price": 149.99,
"currency": "USD",
"brand_name": "Logitech",
"url": "https://www.amazon.com/dp/B09HMV6K1W?tag=yourtag-20",
"category": "Electronics"
}
]
}
],
"requested": 1,
"returned": 1
},
"error": null,
"meta": {
"request_id": "5c12e84b-5570-4535-9afb-65faae8a3793",
"version": "1.0.0"
}
}The exact substring to hyperlink, copied verbatim from the text you sent.
Character offsets of that substring, so you patch the right occurrence instead of a blind find-and-replace.
The product page to link to, carrying your team's Amazon Associates tag.
Insert is Commerce Extract and Commerce Match run end to end and tagged: it finds the product mentions and resolves them, in one call. It doesn't care where the text came from - a chat turn, a drafted article, a scheduled post. What comes back is link targets - a phrase, its span, and a product URL - not rewritten prose, so your renderer stays in control of the output.
If you generate articles, roundups, or product descriptions at volume, run each draft through Insert before it publishes and every product mention comes back with a tagged link ready to place.
Short generated copy counts too. Send the post or the issue, get back the buyable phrases with spans, and link them before the thing goes out.
Your assistant already names the products it recommends. One call per reply tells you which of those phrases are buyable and what to link them to, so the answer ships with real listings behind it.
If you already hold an Amazon Associates tag, Insert appends it for you. The commission stays yours - ChatAds takes no cut of the link.
Call insert_product_links with the text your model wrote, as the message param - a chat reply, a paragraph of an article, a post. It should be the AI's output rather than a prompt or a user question: a question reads as a request, and the recommendations live in the output.
The same engine that powers the ChatAds widget scores the purchase-intent phrases in the passage and resolves them against the catalog. The engine is catalog-agnostic; Amazon US is the catalog wired up today.
You get data.offers - each entry with its link_text, that phrase's character span, and a product URL carrying your Amazon tag - and your code does the substitution. A data.status of no_offer with an empty data.offers array is a successful no-match, not an error, so don't retry it.
A Streamable HTTP MCP server. One URL, authenticated with an access key.
Sign up and open the Commerce Insert tab in your dashboard. Create a cak_ access key - one per client is fine - and set your Amazon Associates tag on the same page so the links come back tagged.
Add the server to Claude Desktop, Cursor, or any MCP-compatible client, swapping in your key.
Restart your client and insert_product_links 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"
}
}
}
}
A JSON envelope with your payload under data. data.offers is the array that matters: each offer carries the link_text to hyperlink, its match_start and match_end offsets in the text you sent, and a products array whose products[0].url is the link to use. It returns link targets, not rewritten text - your code does the substitution. An empty data.offers array is a successful no-match rather than an error.
Yes. Your team's own Amazon Associates tag is appended per marketplace - a .com URL gets your US tag, a .co.uk URL gets your UK tag, and there is no cross-marketplace fallback. If you haven't set a tag for that marketplace, you get the plain untagged product URL back rather than an error. Set your tags on the Commerce Insert dashboard page.
The resolution engine is catalog-agnostic, and Amazon US is the catalog wired up today - so every offer currently comes back with a US product URL. Branch on the fields you get rather than assuming, and tell us which catalog you want next.
message field?Whatever your model generated - a chat reply, a section of an article, a newsletter blurb, a social post. It has to be output rather than input: sending a prompt or a user's question is the most common integration mistake, because a question describes what someone wants while the generated text is where the product recommendations actually are.
Extract finds the mentions and resolves nothing. Match resolves one term you already have, and returns untagged URLs. Insert does both ends in one call and returns URLs carrying your own affiliate tag. Same server and same key, so you can run all three.
The widget is the finished product: an AI chat assistant you drop onto your blog that answers readers and links the products it recommends. Insert is that same engine exposed on its own, for builders who are already generating text somewhere else and want to monetize it.
A cak_ access key, created in the Commerce Insert 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 Extract and Commerce Match. 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.