MCP tool · Actions
execute_action
Runs a prepared action (or a prepared campaign), once, after your explicit OK. Returns what was created.
What it does
Run an action prepared by a pause / activate / budget / duplicate / create / targeting tool, create_campaign, create_ad_from_post, or (TikTok / Snapchat) set_platform_status / set_platform_daily_budget (its action_id), only after the user explicitly approved what it will do. An action runs once, within 24 hours. The answer lists what was created or changed (details: new ids, and for a duplicated ad the method that kept its post).
Parameters
-
action_idstring required -
confirmconstant requiredtrue = the user approved this action
Example
Your assistant calls it for you when you ask in your own words. What it sends (MCP tools/call, JSON-RPC 2.0):
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "execute_action",
"arguments": {
"action_id": "1c9e5a27-8b34-4f0d-a6e2-5d7c3b9f4a18",
"confirm": true
}
}
} The same call over HTTP with an API key, for an MCP client of your own (an assistant that signs in sends its OAuth token instead):
curl -X POST https://app.apogee.ad/mcp \
-H "Authorization: Bearer $APOGEE_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"execute_action","arguments":{"action_id":"1c9e5a27-8b34-4f0d-a6e2-5d7c3b9f4a18","confirm":true}}}' confirm: true is the user's yes: send it only after showing them exactly what will happen and getting their explicit agreement.
Access and cost
| Plans | Pro and Scale. |
|---|---|
| Scope | launch or actions: a connection or an API key without it does not see this tool (scopes). |
| Effect | Changes the ad account or acts as the Page, once, after the user's explicit yes. |
| Credits | 2 credits per change. A call that fails costs nothing (credits). |
| Rate limit | 600 MCP requests per 15 minutes on Pro, 1,200 on Scale (rate limits). |
| Daily cap | Counts 2 units toward the 2,000 units one API key or assistant connection can use in 24 hours. |
In the REST API
The same thing for your own code, with an API key:
- Confirm action:
POST /actions/{id}/confirm
Related tools
Actions: Each tool only prepares: it returns an action_id and what will change. Nothing changes until execute_action, after your explicit OK, within 24 hours. Created objects are paused unless you ask otherwise.
pause_ad: Pauses ads.pause_adset: Pauses ad sets.activate_ad: Turns paused ads back on.activate_adset: Turns paused ad sets back on.update_budget: Sets new daily budgets for ad sets.scale_budget: Scales ad set budgets by a percentage (+100% at most per change).update_campaign_status: Pauses or turns on a whole campaign.update_adset_targeting: Changes an ad set's targeting.duplicate_ad: Copies an ad into other ad sets of the same ad account, keeping the same post (likes, comments, shares).duplicate_adset: Copies an ad set with its ads, each keeping its post; created paused.duplicate_campaign: Copies a campaign with its ad sets and ads; created paused.create_adset: A new ad set in an existing campaign, from scratch or copying another ad set's targeting and conversion; created paused.create_ad: A new ad on an existing post or creative; created paused.create_ad_from_post: A new ad on an existing Facebook or Instagram post, which keeps its likes and comments, with every Advantage+ enhancement explicit; paused by default.