Skip to main content
Glama

Google Ads: add location targets

set_geo_targets
Destructive

ADDS location criteria to a campaign; its existing locations stay.

This never replaces targeting: the locations and exclusions the campaign
already has are left as they are. Moving a campaign from country A to
country B therefore also needs A removed in Google Ads (Campaign →
Locations), which this server never does, so tell the user the old
location stays until they remove it there. A campaign with no location
criteria serves everywhere; the first location added narrows it.

Add locations to TARGET with `location_ids`, and/or locations to EXCLUDE with
`excluded_location_ids` (e.g. target India but exclude one city). Provide at
least one of the two.

Common location IDs (Google Ads geo target constants):
    US=2840, UK=2826, Canada=2124, Australia=2036,
    India=2356, Singapore=2702, UAE=2784,
    Germany=2276, France=2250

Find more IDs at:
https://developers.google.com/google-ads/api/data/geotargets

Args:
    customer_id: The Google Ads customer ID.
    campaign_id: The ID of the campaign.
    location_ids: Geo target constant IDs to TARGET. Optional.
    excluded_location_ids: Geo target constant IDs to EXCLUDE. Optional.

Returns:
    Dictionary with created location criteria.

Tools revision: 5c9bea8f.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
campaign_idYes
customer_idYes
location_idsNo
excluded_location_idsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=false, but the description adds the crucial nuance the annotations cannot: this is purely additive, existing targets and exclusions are never touched, and removal requires manual action in the Google Ads UI. It also explains the targeting semantics (no criteria = serves everywhere; first location narrows). The only gap is that it does not explain why the operation is flagged destructive (narrowing reach).

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?

Front-loaded with the key behavioral fact in the first sentence, then organized into behavior, parameters, ID reference, and returns. Effectively sized; the common-location-ID table is long but earns its place by removing a lookup step. Minor redundancy between the opening line and the "never replaces targeting" sentence.

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?

For a 4-parameter mutation with an output schema present, the description covers the additive semantics, the exclusivity requirement, ID sourcing, and a user-facing caveat — nothing an agent needs to call it correctly is missing. Return values are covered by the output schema, so the brief 'Returns' line is sufficient.

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 0%, so the description carries the full burden and largely meets it: it distinguishes TARGET vs EXCLUDE arrays with a worked example ("target India but exclude one city"), states the at-least-one requirement, and supplies concrete geo target constant IDs plus a reference URL. customer_id and campaign_id are only restated ("The Google Ads customer ID"), adding little, but they are self-evident identifiers.

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?

States a specific verb and resource ("ADDS location criteria to a campaign") and immediately disambiguates the scope with "its existing locations stay." The name 'set_geo_targets' could suggest replacement, and the description explicitly corrects that, so an agent knows exactly which operation this is without consulting any sibling.

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?

Gives concrete when-to-use conditions (target with location_ids, exclude with excluded_location_ids), the prerequisite "Provide at least one of the two," and a real-world caveat about moving a campaign from country A to B. It even tells the agent what to communicate to the user when removal is needed elsewhere, which is exactly the guidance an agent needs before invoking.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources