Actions
Safety guide for the Amazon Ads operations Titan AI MCP can take on your behalf. Read this before enabling actions in any host.
⚠️ These tools spend real money
Action tools call the Amazon Ads API. A single misread of a sales report could spawn 10 campaigns at $500/day each. There is no automatic rollback. Treat every operation as if you were typing into the Amazon Ads UI yourself.
What are actions?
Actions are operations that change something in your Amazon Advertising account — pausing a campaign, adjusting a bid, adding a negative keyword, launching a new structure. They cover Sponsored Products, Sponsored Brands, and Sponsored Display surfaces.
Real-world danger scenarios
- Duplicate campaigns: agent misreads a "do this for each ASIN" instruction and creates 10 copies of the same campaign at full daily budget each.
- Wrong-marketplace target: a US-targeted keyword gets attached to a UK ad group because the agent didn't re-validate the active marketplace before the call.
- Accidental archive: an "update state" call on a winning campaign pauses it instead of the intended low-performer.
- Always-Allow runaway: the user toggled "Always Allow" once for a single low-risk negative keyword, then a follow-up turn spawns 10 high-risk campaigns without further prompts.
Read the result before reporting a change
Action tools can change live data. A dry-run result describes a simulation; it does not confirm an Amazon-side change. A live-mode flag alone does not prove success. Report only confirmed items as changed. An UNKNOWN item may have applied; check the current state before retrying.
Keyword Relevancy dataset writes — no dry-run, no delete
Five action tools (propose_create_relevancy_dataset, propose_add_relevancy_dataset_asins, propose_remove_relevancy_dataset_asins, propose_relevancy_ranking_update, propose_relevancy_cache_purge) modify your Titan Tools Keyword Relevancy datasets rather than your Amazon Advertising account. They behave differently: there is no dry-run and no delete — a created dataset executes the moment it is called and cannot be removed via the API. propose_relevancy_ranking_update triggers a real ranking recompute (once per 24h, runs asynchronously — poll get_relevancy_ranking_status until it finishes). Authorization is handled server-side, so no re-link is needed.
Keyword Rank Tracker writes — reversible, no dry-run
These modify what you track in the Keyword Rank Tracker (not Amazon Ads): propose_track_keywords, propose_untrack_keywords, propose_set_keyword_label, propose_add_keyword_tag, propose_remove_keyword_tags, plus single-item member-note writes propose_add_keyword_comment, propose_edit_keyword_comment, and propose_remove_keyword_comment. They execute the moment they are called but are reversible (untrack reverses track, remove reverses add). Adding a comment returns a commentId you use to edit or remove it; editing changes the text only.
Product COGS write — no dry-run, no undo
propose_set_product_cogs sets the cost of goods on your Titan product records for up to 500 SKUs in one call. It is not an Amazon Advertising write, but it is the most consequential tool in this group. The periods you send REPLACE that SKU's entire cost history on every call, so a single period leaves only that period and erases everything recorded before it. There is no dry-run and no undo: a previous cost structure can be restored only from a read taken before the write (get_product_cogs), and cost of goods drives your CM1, CM2 and CM3, so a wrong value distorts every margin number you read afterwards. To ADD a new cost period without losing the old ones, read the SKU with get_product_cogs first and send every period it returned plus the new one in the same call: the earliest keeps its startDate null (Titan anchors the earliest period to the beginning of time whatever its date, and ends each period the day before the next one starts), and a period you leave out is removed. Or ask for an append: Titan then reads the stored periods itself, keeps every one of them, adds the new period and sends the full list back. One write carries at most 24 periods, so a longer history has to be changed in Titan Tools rather than trimmed to fit. A single dated period, or periods that are all dated, replace everything before them. Two more things to check before you call it: isAllMarketplace: true applies the cost to every marketplace (leave salesChannel out), and the element name on each cost line is not validated, so reuse the names get_product_cogs lists, since an unknown element is silently created and zeroes your real cost lines. Results come back per SKU in request order, and a batch in which every SKU failed still returns a 200, so read the per-SKU outcomes rather than assuming success. After every write Titan reads each SKU again and reports, per SKU, whether the cost stored now matches what was sent.
Product listing write — no dry-run, unverifiable
propose_update_listing edits one SKU's title, bullet points, description, generic keyword, item highlight and price (base, plus an optional sale price with a start and end date) on your live Amazon listing. Every field you send is a FULL replace of that attribute, not a merge — send the complete value you want, and for bullet points send the entire list to keep, because a shorter list drops the rest. Read the SKU with get_product_listing first, so every changed field goes out complete. The item highlight is up to 125 characters, and Amazon shows it only when the title is under 75 characters. It is also the one write here with no way to confirm it. There is no live read-back, and get_product_listing is the listing as of the last sync, so right after an update it usually still shows the old values. The tool reports Amazon's submission result — ACCEPTED (queued for processing, which may take time to appear and is not confirmation the change is live) or INVALID (refused, with the reasons in issues). On ACCEPTED, do not resubmit and do not report it as done — confirm the change in Seller Central.
Compass writes: no dry-run, and nothing recalculates until you do
propose_save_compass_suppliers, propose_delete_compass_supplier and propose_update_compass_product_configs change your supplier book and per-SKU ordering settings in Titan Tools Compass. They are not Amazon Advertising writes and there is no dry-run. Compass does not recalculate anything when they run: your forecast, Demand Plan and Purchase Order figures keep the old settings until you open Compass and accept the recompute prompt. Editing a supplier changes the terms on every SKU linked to it. A SKU can be relinked to another supplier but never unlinked, and a deleted supplier cannot be restored; the SKUs that were linked to it keep its last terms. The per-SKU update reports each SKU on its own, so read every result: an entry that lost a race with another edit was not applied and needs to be re-read and sent again.
⚠️ Do not enable "Always Allow"
Most AI applications (Claude.ai, Claude Desktop, Claude Code) let you toggle "Always Allow" per tool. Once on, the model can call that tool with nothing in its way. Once you toggle Always Allow for an action tool, the human-in-the-loop is gone. We strongly recommend reviewing every action call on any application that offers you the choice, and reading what it is proposing before you accept.
Where approval actually happens
Titan AI MCP cannot ask you anything. The server has no channel to put a question in front of you mid-call, so every approval decision belongs to the AI application you connected it to. We cannot promise that an application will ask before it runs a write. Applications differ, most let you turn prompting off per tool, and some run tools with no interactive approval at all. Treat a write as able to run without asking until you have found and read the setting yourself.
| Where you connected it | Where the approval setting lives |
|---|---|
| Claude.ai web | Connector settings, per tool |
| Claude Desktop | Connector settings, per tool |
| Claude Code plugin | Permission rules in ~/.claude/settings.json |
| Cowork | The app's tool permission settings |
| Automated or headless clients, OpenClaw among them | No approval step exists. A write runs when the model calls it, and the only thing you see beforehand is whatever the model said it was about to do. |
Rollback recipes
| Action | How to undo |
|---|---|
| Created campaign | Pause it with the campaign update (reversible), or archive it with propose_archive_sp_campaign. Archiving is permanent. |
| Created keyword | Pause it with the keyword update (reversible), or archive it with propose_archive_sp_keyword. Archiving is permanent. |
| Updated budget | Re-run the campaign update with the prior budget value. |
| Added neg keyword | Archive it with the matching propose_archive_sp_*_neg_keyword tool (permanent), or pause it with the matching update tool. On Sponsored Brands, set its state to archived via propose_update_sb_ad_group_neg_keyword. |
| Added neg target | Archive it with the matching propose_archive_sp_*_neg_target tool (permanent), or pause it with the matching update tool. On Sponsored Brands, set its state to archived via propose_update_sb_ad_group_neg_target. |
| Set product COGS | No rollback exists. Every call replaces the SKU's full cost history, so a structure that was not read first cannot be recovered. The only remedy is to re-enter the prior values from your own records. To avoid needing this, read the SKU with get_product_cogs first and send every period back alongside the new dated one, or ask for an append, which does that read for you. |
| Changed Compass supplier or SKU settings | Send the previous values again with the same tool. Read them first with get_compass_suppliers or get_compass_product_configs, then open Compass and accept the recompute prompt. |
| Deleted Compass supplier | No restore exists. Create the supplier again (it gets a new id) and relink its SKUs to it with propose_update_compass_product_configs. |
| Update product listing | No automatic rollback. The tool cannot restore the prior title, bullets, description, keyword, item highlight or price. The previous values are in a get_product_listing read taken before the update, or in your own records. Re-submit them (each field is a full replace), and confirm the result in Seller Central. |
A rollback is a write like any other. It goes through whatever approval your AI application applies, which on some applications is none.
Recommended account hygiene
- Set account-wide budget caps in Titan Tools or directly in Amazon Ads Console before enabling action tools. Even a runaway agent can't create campaigns above the cap.
- Start with low-risk actions only (negative keywords, campaign pauses). Don't enable high-risk tools until you've watched a full week of low-risk usage.
- Audit your Amazon Ads change history weekly for the first month. Spot anything you didn't intend and reach out before it compounds.
- Use the same Titan AI MCP account for all action calls — don't share access across team members. Audit-trail integrity depends on a 1:1 user mapping.
Reporting unexpected behavior
When reporting an issue, include the timestamp and the action description; we'll trace it through our logs.
Per-interface gotchas live on the host docs: Claude.ai, Claude Code, Cowork, Other clients.