Skip to main content
Glama

AdsAgent — Google Ads MCP

google_ads_campaign_create_prepare

Prepare creating a paused campaign and budget. A SEARCH campaign requires location names in targeting and matches languages automatically; without locations the answer is needs_input, never a worldwide campaign.

Input Schema

NameRequiredDescriptionDefault
nameYes
roasNo
strategyNo
targetingNo
customer_idYes10-digit Google Ads customer id.
channel_typeYes
language_idsNoDeprecated compatibility field; use targeting.languages, for example English. Values must belong to the Google language directory.
location_idsNoDeprecated compatibility field; use targeting countries, regions or cities by name. Values must belong to the Google directory.
amount_microsNo
budget_microsYes
geo_target_typeNoDefaults to PRESENCE (only people in the location).
targeting_sourceNoWhere the targeting came from; shown in the approval summary. Defaults to user.
connection_contextNo
excluded_location_idsNoDeprecated compatibility field; use targeting.excluded_countries by name.
contains_eu_political_advertisingYes

Output Schema

NameRequiredDescriptionDefault
okNo
codeNo
draftNo
errorNo
itemsNo
needsNo
stateNo
reasonNo
statusNo
changesNo
receiptNo
summaryNo
platformNo
receiptsNo
retry_atNo
retryableNo
error_codeNo
expires_atNo
idempotentNo
validationNo
approved_atNo
next_actionNo
plan_digestNo
support_refNo
approval_refNo
confirm_toolNo
presentationNo
invalid_fieldsNo
rejected_pathsNo
expected_changesNo
origin_support_refNo
instruction_template_idNo
google_change_resource_nameNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / targeting / properties / country_groups
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 300,
      +  "title": "Country Groups",
      +  "type": "array"
      +}
    • addedInput schema / properties / targeting / properties / excluded_country_groups
      Added value: +{
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 300,
      +  "title": "Excluded Country Groups",
      +  "type": "array"
      +}
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "approval_ref": {
      +      "type": "string"
      +    },
      +    "approved_at": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "changes": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "code": {
      +      "type": "string"
      +    },
      +    "confirm_tool": {
      +      "type": "string"
      +    },
      +    "draft": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": true,
      +          "properties": {
      +            "action_type": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "asset_kind": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "byte_size": {
      +              "anyOf": [
      +                {
      +                  "type": "integer"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "content_type": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "created_at": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "entity_id": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "entity_level": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "expires_at": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "filename": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "id": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "sha256": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "status": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "error": {
      +      "anyOf": [
      +        {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "additionalProperties": true,
      +              "properties": {
      +                "code": {
      +                  "type": "string"
      +                },
      +                "details": {
      +                  "additionalProperties": true,
      +                  "properties": {},
      +                  "type": "object"
      +                },
      +                "message": {
      +                  "type": "string"
      +                },
      +                "retryable": {
      +                  "type": "boolean"
      +                },
      +                "support_ref": {
      +                  "type": "string"
      +                }
      +              },
      +              "type": "object"
      +            }
      +          ]
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "error_code": {
      +      "type": "string"
      +    },
      +    "expected_changes": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "expires_at": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "google_change_resource_name": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "idempotent": {
      +      "type": "boolean"
      +    },
      +    "instruction_template_id": {
      +      "type": "string"
      +    },
      +    "invalid_fields": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "items": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "index": {
      +            "type": "integer"
      +          },
      +          "operation": {
      +            "type": "string"
      +          },
      +          "receipt": {
      +            "additionalProperties": true,
      +            "properties": {},
      +            "type": "object"
      +          },
      +          "state": {
      +            "type": "string"
      +          },
      +          "summary": {
      +            "additionalProperties": true,
      +            "properties": {},
      +            "type": "object"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "needs": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "next_action": {
      +      "anyOf": [
      +        {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "additionalProperties": true,
      +              "properties": {},
      +              "type": "object"
      +            }
      +          ]
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "ok": {
      +      "type": "boolean"
      +    },
      +    "origin_support_ref": {
      +      "type": "string"
      +    },
      +    "plan_digest": {
      +      "type": "string"
      +    },
      +    "platform": {
      +      "type": "string"
      +    },
      +    "presentation": {
      +      "type": "string"
      +    },
      +    "reason": {
      +      "type": "string"
      +    },
      +    "receipt": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": true,
      +          "properties": {
      +            "acknowledged_at": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "action_type": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "claimed_at": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "draft_id": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "entity_id": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "entity_level": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "expires_at": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "finished_at": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "operation_ref": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "operation_state": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "operator_review_required": {
      +              "type": "boolean"
      +            },
      +            "outcome_category": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "resource_name": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "sent_at": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "status": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "summary": {
      +              "additionalProperties": true,
      +              "properties": {},
      +              "type": "object"
      +            }
      +          },
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "receipts": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {},
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "rejected_paths": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "retry_at": {
      +      "anyOf": [
      +        {
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "retryable": {
      +      "type": "boolean"
      +    },
      +    "state": {
      +      "type": "string"
      +    },
      +    "status": {
      +      "anyOf": [
      +        {
      +          "anyOf": [
      +            {
      +              "type": "string"
      +            },
      +            {
      +              "type": "integer"
      +            }
      +          ]
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ]
      +    },
      +    "summary": {
      +      "additionalProperties": true,
      +      "properties": {},
      +      "type": "object"
      +    },
      +    "support_ref": {
      +      "type": "string"
      +    },
      +    "validation": {
      +      "additionalProperties": true,
      +      "properties": {},
      +      "type": "object"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / language_ids / description
      Previous value: -"Deprecated compatibility field; use targeting.languages, for example 英语. Values must belong to the Google language directory."New value: +"Deprecated compatibility field; use targeting.languages, for example English. Values must belong to the Google language directory."
  4. Changed7 schema fields changed
    • addedInput schema / properties / excluded_location_ids / deprecated
      Added value: +true
    • changedInput schema / properties / excluded_location_ids / description
      Previous value: -"geo_target_constant ids to exclude."New value: +"Deprecated compatibility field; use targeting.excluded_countries by name."
    • addedInput schema / properties / language_ids / deprecated
      Added value: +true
    • changedInput schema / properties / language_ids / description
      Previous value: -"language_constant ids. Required; there is no implicit all-languages default."New value: +"Deprecated compatibility field; use targeting.languages, for example 英语. Values must belong to the Google language directory."
    • addedInput schema / properties / location_ids / deprecated
      Added value: +true
    • changedInput schema / properties / location_ids / description
      Previous value: -"geo_target_constant ids (country, region or city) to target. Required; resolve names with google_ads_geo_targets_suggest."New value: +"Deprecated compatibility field; use targeting countries, regions or cities by name. Values must belong to the Google directory."
    • addedInput schema / properties / targeting
      Added value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "age": {
      +      "anyOf": [
      +        {
      +          "additionalProperties": false,
      +          "properties": {
      +            "max": {
      +              "anyOf": [
      +                {
      +                  "maximum": 65,
      +                  "minimum": 13,
      +                  "type": "integer"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ],
      +              "default": null,
      +              "title": "Max"
      +            },
      +            "min": {
      +              "maximum": 65,
      +              "minimum": 13,
      +              "title": "Min",
      +              "type": "integer"
      +            }
      +          },
      +          "required": [
      +            "min"
      +          ],
      +          "title": "Age",
      +          "type": "object"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null
      +    },
      +    "cities": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "country": {
      +            "maxLength": 200,
      +            "minLength": 1,
      +            "title": "Country",
      +            "type": "string"
      +          },
      +          "name": {
      +            "maxLength": 200,
      +            "minLength": 1,
      +            "title": "Name",
      +            "type": "string"
      +          },
      +          "region": {
      +            "anyOf": [
      +              {
      +                "maxLength": 200,
      +                "type": "string"
      +              },
      +              {
      +                "type": "null"
      +              }
      +            ],
      +            "default": null,
      +            "title": "Region"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "country"
      +        ],
      +        "title": "City",
      +        "type": "object"
      +      },
      +      "maxItems": 100,
      +      "title": "Cities",
      +      "type": "array"
      +    },
      +    "countries": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "maxItems": 300,
      +      "title": "Countries",
      +      "type": "array"
      +    },
      +    "excluded_countries": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "maxItems": 300,
      +      "title": "Excluded Countries",
      +      "type": "array"
      +    },
      +    "gender": {
      +      "default": "all",
      +      "enum": [
      +        "all",
      +        "female",
      +        "male"
      +      ],
      +      "title": "Gender",
      +      "type": "string"
      +    },
      +    "languages": {
      +      "anyOf": [
      +        {
      +          "items": {
      +            "type": "string"
      +          },
      +          "maxItems": 100,
      +          "type": "array"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Languages"
      +    },
      +    "languages_mode": {
      +      "anyOf": [
      +        {
      +          "enum": [
      +            "restricted",
      +            "all"
      +          ],
      +          "type": "string"
      +        },
      +        {
      +          "type": "null"
      +        }
      +      ],
      +      "default": null,
      +      "title": "Languages Mode"
      +    },
      +    "placements": {
      +      "anyOf": [
      +        {
      +          "const": "automatic",
      +          "type": "string"
      +        },
      +        {
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        }
      +      ],
      +      "default": "automatic",
      +      "title": "Placements"
      +    },
      +    "regions": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "country": {
      +            "maxLength": 200,
      +            "minLength": 1,
      +            "title": "Country",
      +            "type": "string"
      +          },
      +          "name": {
      +            "maxLength": 200,
      +            "minLength": 1,
      +            "title": "Name",
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "country"
      +        ],
      +        "title": "Region",
      +        "type": "object"
      +      },
      +      "maxItems": 100,
      +      "title": "Regions",
      +      "type": "array"
      +    }
      +  },
      +  "title": "TargetingIntent",
      +  "type": "object"
      +}
  5. 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"
      +  ]
      +}
  6. Changed1 schema field changed
    • addedInput schema / properties / connection_context
      Added value: +{
      +  "pattern": "^mctx_v1_[0-9a-f]{64}$",
      +  "type": "string"
      +}
  7. Changed2 schema fields changed
    • addedInput schema / properties / contains_eu_political_advertising
      Added value: +{
      +  "enum": [
      +    "CONTAINS_EU_POLITICAL_ADVERTISING",
      +    "DOES_NOT_CONTAIN_EU_POLITICAL_ADVERTISING"
      +  ]
      +}
    • changedInput schema / required
      Previous value: -[
      -  "customer_id",
      -  "name",
      -  "channel_type",
      -  "budget_micros"
      -]New value: +[
      +  "customer_id",
      +  "name",
      +  "channel_type",
      +  "budget_micros",
      +  "contains_eu_political_advertising"
      +]
  8. First observed

TDQS

A3.6/5.0
Behavior4/5

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

Annotations declare readOnlyHint=false and destructiveHint=false, so the description's real value is the added traits: the campaign is created paused, and a missing-location SEARCH request returns a needs_input state rather than silently defaulting. That is meaningful behavioral disclosure beyond structured fields; it stops short of describing the approval-plan interaction.

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?

Two tight sentences with the core constraint front-loaded after a one-line purpose statement. The second sentence is dense and slightly telegraphic ('never a worldwide campaign'), but nothing is wasted and no filler is present.

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?

Given a 15-parameter nested schema and an existing output schema, the description covers the single most common failure mode but not the prepare-then-confirm contract or the role of the required fields. It is adequate to call the tool in the happy path but leaves notable gaps for such a complex definition.

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

Parameters3/5

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

With only 40% schema coverage and 15 parameters, the description should carry more weight. It does add real semantics for targeting locations and the automatic language matching (including that language_ids/location_ids are superseded), but budget_micros, channel_type, strategy/roas, contains_eu_political_advertising, geo_target_type and connection_context are untouched.

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

Purpose4/5

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

States a specific verb+resource: preparing creation of a paused campaign and budget. The distinction from the confirm step is implied by 'prepare' and the sibling naming convention (google_ads_campaign_create_confirm), but the description never explicitly names it as the non-committing step of a two-phase flow.

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

Usage Guidelines3/5

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

One hard precondition is stated clearly for SEARCH campaigns (location names required, otherwise needs_input, never worldwide), which is genuinely useful routing guidance. However, it says nothing about when to use this tool versus the many sibling creators (quick_create_prepare, pmax_create_prepare) or that a confirm call must follow.

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