Skip to main content
Glama
kLOsk

Google Ads - AdLoop

by kLOsk

Apply a previewed change

confirm_and_apply
Destructive

Apply a previously previewed Google Ads change. Set dry_run=false to execute for real; otherwise it only simulates, and safety settings may require a dry run before application.

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 Google Ads account.

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.

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?

The description goes beyond the annotations (readOnlyHint=false, destructiveHint=true) by detailing the dry_run default, the config override that can force dry_run, the two-phase apply refusal behavior, and the exact response fields to surface. This full transparency helps the agent understand potential non-committal behavior.

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 somewhat verbose with repeated warnings, but each paragraph conveys necessary safety-critical information (default behavior, config override, two-phase apply). The structure is logical and every sentence earns its place, though a slightly more compact phrasing could improve readability.

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?

The description is complete for a destructive tool: it covers the dry_run default, config overrides, two-phase apply behavior, response fields to surface, and the source of plan_id. Given the complexity and risk, nothing essential is missing.

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?

Even though the schema has 0% description coverage, the description fully explains both parameters: plan_id is described as coming from prior draft_* or pause/enable calls, and dry_run is explained in detail—its default value, how to override it, and the consequences. This completely compensates for the lack of schema-level descriptions.

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 clearly states the tool's purpose: 'Execute a previously previewed change.' It uses a specific verb and object, and distinguishes itself from sibling tools like draft_*, update_*, and pause/enable by focusing on applying an already-prepared plan.

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 explicitly explains when to use the tool: after a prior draft_* or pause/enable call (since 'The plan_id comes from a prior draft_* or pause/enable tool call'). It also provides critical usage guidance about the dry_run parameter, including the need to pass dry_run=false to make real changes.

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