Skip to main content
Glama

google_ads_negative_placements_remove

Revert bad negative placement exclusions in one batch by lifting criterion IDs; validates each ID and skips non-negative or mismatched criteria.

Instructions

Lifts delivery-surface exclusions by criterion_id, in one batch, so a bad exclusion pass can be reverted in a single call. Returns removed (criterion_id + resource_name), removed_count, and skipped entries with a reason. Mutating — lifting an exclusion lets the placement serve again from the next serving cycle. Ids are verified against the live criteria first: anything that is not a negative placement criterion at the named level is skipped, never removed. Get ids from google_ads_negative_placements_list.

Input Schema

NameRequiredDescriptionDefault
reasonNoWhy this change is being made: one or two sentences naming the evidence and the expected effect. Stored in the journal and on the action_log entry this call produces, for the operator and the next session.
approvalNoExternal approval this change carries out (recorded and shown, never verified)
expectedNoExpected effects [{metric, direction, target?, horizon_days?, primary?}], exactly one primary:true when several; metric cpa/cpc/cpl/cpm/conversions/cvr/ctr/roas/cost/spend/clicks/impressions; direction up/down/hold.
ad_group_idNoAd group ID for an ad group-level exclusion. Supply exactly one of campaign_id or ad_group_id. Ad group-level exclusions do not cascade to sibling ad groups.
campaign_idNoCampaign ID for a campaign-level exclusion. Supply exactly one of campaign_id or ad_group_id — the two are separate criteria and campaign-level exclusions apply to every ad group under the campaign.
customer_idNoGoogle Ads customer ID as a 10-digit string without dashes (e.g. '1234567890'). Optional — falls back to GOOGLE_ADS_CUSTOMER_ID / GOOGLE_ADS_LOGIN_CUSTOMER_ID from the configured credentials when omitted.
decision_idNoA proposed decision this change carries out.
criterion_idsYesCriterion IDs to lift, as returned by google_ads_negative_placements_list or by the 'created' entries of google_ads_negative_placements_add. All must belong to the level named above.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.33.0
    • changedInput schema / properties / expected / description
      Previous value: -"Expected effects [{metric, direction, target?, horizon_days?}]; metric cpa/cpc/cpl/cpm/conversions/cvr/ctr/roas/cost/spend/clicks/impressions; direction up/down/hold."New value: +"Expected effects [{metric, direction, target?, horizon_days?, primary?}], exactly one primary:true when several; metric cpa/cpc/cpl/cpm/conversions/cvr/ctr/roas/cost/spend/clicks/impressions; direction up/down/hold."
  2. Changed1 schema field changedv0.28.0
    • addedInput schema / properties / approval
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "External approval this change carries out (recorded and shown, never verified)",
      +  "properties": {
      +    "approved_at": {
      +      "maxLength": 64,
      +      "type": "string"
      +    },
      +    "approved_by": {
      +      "maxLength": 80,
      +      "type": "string"
      +    },
      +    "reference": {
      +      "maxLength": 128,
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "reference",
      +    "approved_by",
      +    "approved_at"
      +  ],
      +  "type": "object"
      +}
  3. Changed2 schema fields changedv0.26.0
    • addedInput schema / properties / decision_id
      Added value: +{
      +  "description": "A proposed decision this change carries out.",
      +  "maxLength": 128,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • addedInput schema / properties / expected
      Added value: +{
      +  "description": "Expected effects [{metric, direction, target?, horizon_days?}]; metric cpa/cpc/cpl/cpm/conversions/cvr/ctr/roas/cost/spend/clicks/impressions; direction up/down/hold.",
      +  "maxItems": 12,
      +  "type": "array"
      +}
  4. Changed1 schema field changedv0.20.0
    • addedInput schema / properties / reason
      Added value: +{
      +  "description": "Why this change is being made: one or two sentences naming the evidence and the expected effect. Stored in the journal and on the action_log entry this call produces, for the operator and the next session.",
      +  "maxLength": 500,
      +  "type": "string"
      +}
  5. Addedv0.10.44

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so well: it discloses that the call is mutating, that lifted exclusions can serve again from the next serving cycle, and that ids are verified against live criteria before anything is removed. It also explains skipped entries and reasons, which is important safety behavior for a destructive mutation.

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

Conciseness5/5

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

The description is front-loaded with the core action and scope, then adds mutation effect, verification behavior, and id source. Every sentence provides actionable information without repetition.

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?

There is no output schema, so the description appropriately explains the return shape: removed criterion ids with resource names, removed_count, and skipped entries with reasons. Given eight parameters and nested approval/expected objects, the schema supplies detailed parameter documentation while the description covers the behavioral and return context an agent needs.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents the parameters. The description adds useful semantics beyond the schema by saying ids come from the list tool or add-created entries, must belong to the named level, and are verified before removal.

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 states a specific verb and resource: lifting delivery-surface exclusions by criterion_id in one batch. It clearly distinguishes this from adding exclusions by framing it as reverting a bad exclusion pass and by naming the list tool as the id source.

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

Usage Guidelines4/5

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

It gives a clear use case (reverting a bad exclusion pass) and routes the agent to google_ads_negative_placements_list for ids. It does not explicitly say when not to use it or contrast it directly with google_ads_negative_placements_add, so it falls short of fully explicit alternatives guidance.

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