Skip to main content
Glama

AdsAgent — Google Ads MCP

google_ads_pmax_create_prepare

Prepare one atomic, paused standard Performance Max campaign using existing account image assets. location_ids and language_ids are required; without them the answer is needs_input, never a worldwide campaign. The approval summary lists locations, exclusions, geo option (default PRESENCE) and languages.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
retailNo
headlinesYes
final_urlsYes
customer_idYes10-digit Google Ads customer id.
logo_assetsYes
target_roasNo
descriptionsYes
language_idsNolanguage_constant ids. Required; there is no implicit all-languages default.
location_idsNogeo_target_constant ids (country, region or city) to target. Required; resolve names with google_ads_geo_targets_suggest.
budget_microsYes
business_nameYes
campaign_nameYes
search_themesNo
long_headlinesYes
audience_signalNo
geo_target_typeNoDefaults to PRESENCE (only people in the location).
asset_group_nameYes
bidding_strategyYes
targeting_sourceNoWhere the targeting came from; shown in the approval summary. Defaults to user.
target_cpa_microsNo
connection_contextNo
excluded_location_idsNogeo_target_constant ids to exclude.
marketing_image_assetsYes
square_marketing_image_assetsYes
contains_eu_political_advertisingYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • addedInput schema / properties / excluded_location_ids
      Added value: +{
      +  "description": "geo_target_constant ids to exclude.",
      +  "items": {
      +    "pattern": "^[1-9][0-9]*$",
      +    "type": "string"
      +  },
      +  "maxItems": 100,
      +  "type": "array",
      +  "uniqueItems": true
      +}
    • addedInput schema / properties / geo_target_type
      Added value: +{
      +  "description": "Defaults to PRESENCE (only people in the location).",
      +  "enum": [
      +    "PRESENCE",
      +    "PRESENCE_OR_INTEREST"
      +  ]
      +}
    • addedInput schema / properties / language_ids
      Added value: +{
      +  "description": "language_constant ids. Required; there is no implicit all-languages default.",
      +  "items": {
      +    "pattern": "^[1-9][0-9]*$",
      +    "type": "string"
      +  },
      +  "maxItems": 50,
      +  "minItems": 1,
      +  "type": "array",
      +  "uniqueItems": true
      +}
    • addedInput schema / properties / location_ids
      Added value: +{
      +  "description": "geo_target_constant ids (country, region or city) to target. Required; resolve names with google_ads_geo_targets_suggest.",
      +  "items": {
      +    "pattern": "^[1-9][0-9]*$",
      +    "type": "string"
      +  },
      +  "maxItems": 100,
      +  "minItems": 1,
      +  "type": "array",
      +  "uniqueItems": true
      +}
    • addedInput schema / properties / targeting_source
      Added value: +{
      +  "description": "Where the targeting came from; shown in the approval summary. Defaults to user.",
      +  "enum": [
      +    "user",
      +    "template",
      +    "source_campaign"
      +  ]
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / connection_context
      Added value: +{
      +  "pattern": "^mctx_v1_[0-9a-f]{64}$",
      +  "type": "string"
      +}
  3. Changed3 schema fields changed
    • addedInput schema / properties / audience_signal
      Added value: +{
      +  "pattern": "^customers/[0-9]+/audiences/[1-9][0-9]*$",
      +  "type": "string"
      +}
    • addedInput schema / properties / retail
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "feed_label": {
      +      "pattern": "^[A-Z0-9_-]{1,20}$",
      +      "type": "string"
      +    },
      +    "listing_tree": {
      +      "oneOf": [
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "include": {
      +              "type": "boolean"
      +            }
      +          },
      +          "required": [
      +            "include"
      +          ],
      +          "type": "object"
      +        },
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "children": {
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "node": {
      +                    "oneOf": [
      +                      {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "include": {
      +                            "type": "boolean"
      +                          }
      +                        },
      +                        "required": [
      +                          "include"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "children": {
      +                            "items": {
      +                              "additionalProperties": false,
      +                              "properties": {
      +                                "node": {
      +                                  "additionalProperties": false,
      +                                  "properties": {
      +                                    "include": {
      +                                      "type": "boolean"
      +                                    }
      +                                  },
      +                                  "required": [
      +                                    "include"
      +                                  ],
      +                                  "type": "object"
      +                                },
      +                                "value": {
      +                                  "maxLength": 150,
      +                                  "minLength": 1,
      +                                  "type": [
      +                                    "string",
      +                                    "null"
      +                                  ]
      +                                }
      +                              },
      +                              "required": [
      +                                "value",
      +                                "node"
      +                              ],
      +                              "type": "object"
      +                            },
      +                            "maxItems": 50,
      +                            "minItems": 2,
      +                            "type": "array"
      +                          },
      +                          "dimension": {
      +                            "enum": [
      +                              "brand",
      +                              "item_id"
      +                            ]
      +                          }
      +                        },
      +                        "required": [
      +                          "dimension",
      +                          "children"
      +                        ],
      +                        "type": "object"
      +                      }
      +                    ]
      +                  },
      +                  "value": {
      +                    "maxLength": 150,
      +                    "minLength": 1,
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "value",
      +                  "node"
      +                ],
      +                "type": "object"
      +              },
      +              "maxItems": 50,
      +              "minItems": 2,
      +              "type": "array"
      +            },
      +            "dimension": {
      +              "enum": [
      +                "brand",
      +                "item_id"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "dimension",
      +            "children"
      +          ],
      +          "type": "object"
      +        }
      +      ]
      +    },
      +    "merchant_id": {
      +      "pattern": "^[1-9][0-9]*$",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "merchant_id",
      +    "feed_label",
      +    "listing_tree"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / search_themes
      Added value: +{
      +  "items": {
      +    "maxLength": 80,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 25,
      +  "type": "array",
      +  "uniqueItems": true
      +}
  4. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations only declare readOnlyHint=false/destructiveHint=false. The description adds substantive behavior: the campaign is created paused, it is an atomic operation, it uses existing account image assets, it returns needs_input on missing targeting, and it enumerates what the approval summary will contain. No auth or rate-limit context, but well beyond the annotations.

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?

Three sentences, front-loaded with the core action, then the targeting constraint, then the approval-summary contents. No filler and every sentence carries distinct information.

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

Completeness3/5

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

No output schema exists, so the description must carry more weight. It covers the critical gating behavior and approval summary, but for a 25-parameter tool with nested objects and 14 required fields, it omits guidance on the asset, bidding, budget and retail inputs. Adequate but incomplete for the complexity.

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

Parameters2/5

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

Schema coverage is only 24% across 25 params (14 required, plus a nested retail object). The description only touches location_ids, language_ids, geo option and exclusions, all of which already carry schema descriptions. The 19 remaining parameters (headlines, assets, bidding, retail tree, etc.) get no semantic help, so the description does not compensate for the coverage gap.

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 gives a precise verb+resource: 'Prepare one atomic, paused standard Performance Max campaign.' The qualifiers (atomic, paused, standard) and the prepare-vs-confirm naming distinguish it from the sibling google_ads_pmax_create_confirm without opening either schema.

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 states an explicit when-not rule: without location_ids and language_ids the response is needs_input, 'never a worldwide campaign.' That is strong conditional guidance, but it never explicitly names the confirm sibling or the required prepare-then-approve workflow, so the alternative routing is left implicit.

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