Apply a previewed change
confirm_and_applyExecute a previously previewed Google Ads or Reddit Ads change after a dry run. Pass dry_run=false to apply for real; safety guardrails block accidental spend.
Instructions
Execute a previously previewed change.
IMPORTANT: Defaults to dry_run=True. You MUST explicitly pass dry_run=false to make real changes to the ad account (Google Ads or Reddit Ads — the plan knows which platform it targets).
Config override: if 'safety.require_dry_run: true' is set in the user's config file (default ~/.adloop/config.yaml), dry_run=false is IGNORED and this tool will keep returning DRY_RUN_SUCCESS. When that happens the response includes 'dry_run_forced_by', 'config_path', and 'remediation' fields — surface those to the user verbatim and STOP retrying. Calling this tool again with dry_run=false will not change anything until the user edits the config file, sets 'require_dry_run: false', and restarts the AdLoop MCP server.
Two-phase apply: if 'safety.two_phase_apply: true' is set (always on for AdLoop Cloud tenants), dry_run=false is REFUSED with status DRY_RUN_REQUIRED until this plan_id has completed one dry_run=true pass. Run the dry run, show it to the user, then apply for real.
Reddit plans: Reddit has no validate-only mode, so the dry run re-reads
the target entity and re-checks the safety caps (returned as checks);
a DRY_RUN_FAILED result means the real apply would also fail.
The plan_id comes from a prior draft_* or pause/enable tool call.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| plan_id | Yes |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||