Skip to main content
Glama
kLOsk

Google Ads - AdLoop

by kLOsk

Apply a previewed change

confirm_and_apply
Destructive

Execute 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

TableJSON Schema
NameRequiredDescriptionDefault
dry_runNo
plan_idYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.13.2
  2. Removedv0.13.0
  3. First observedv0.9.0

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnlyHint=false and destructiveHint=true, but the description goes well beyond that: it discloses default dry-run behavior, config-based refusal of dry_run=false, two-phase apply constraints, Reddit's lack of validate-only mode, and the exact fields returned when a config override forces dry-run. This is rich behavioral context beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long, but every section earns its place by explaining non-obvious behavior, config overrides, platform differences, and retry guidance. The first sentence states the core purpose clearly, and the rest is structured with clear paragraphs; a minor deduction only because the length is substantial and could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists, the description does not need to explain return values. It fully covers prerequisites, default behavior, failure modes, config interactions, platform special cases, and retry guidance, making it complete enough for an agent to correctly select and invoke this destructive tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description carries full responsibility for parameter meaning. It explains that plan_id comes from a prior draft_* or pause/enable call, and it thoroughly documents dry_run's default value and the exact semantics of setting it to false, including refusal conditions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Execute a previously previewed change,' which uses a specific verb and resource and clearly distinguishes this tool as the apply step after a preview. It also ties the input plan_id to prior draft_* or pause/enable calls, making the tool's role unambiguous among the sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit and actionable usage guidance: dry_run defaults to true, dry_run=false is required for real changes, config overrides can force dry-run behavior, and two-phase apply requires a prior dry run. It also tells the agent to stop retrying and surface remediation fields when forced dry-run occurs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools