Skip to main content
Glama
Google Ads MCP Server

Google Ads MCP Server

create_performance_max_campaign

Creates a complete Performance Max campaign in one atomic batch: budget, campaign, and asset group. Returns a preview first and requires confirmation before building it.

Instructions

Create a complete Performance Max campaign with budget, campaign, and asset group.

Creates everything in a single atomic batch operation using temporary IDs.
Campaign is created as PAUSED by default for safety.

Safety: returns a preview first; call again with confirm=True to create it.
Refused if budget_amount is above GOOGLE_ADS_MAX_DAILY_BUDGET.

PMax minimum requirements:
- 3+ headlines (max 30 chars each)
- 1+ long headlines (max 90 chars)
- 2+ descriptions (max 90 chars each)
- 1 business name
- Final URLs
- Image assets should be pre-uploaded (use asset resource names)

Args:
    customer_id: Google Ads customer ID.
    campaign_name: Campaign name.
    budget_amount: Daily budget in currency.
    asset_group_name: Name for the asset group.
    final_urls: Landing page URLs.
    headlines: 3-15 headlines (max 30 chars each).
    long_headlines: 1-5 long headlines (max 90 chars each).
    descriptions: 2-5 descriptions (max 90 chars each).
    business_name: Business name for the asset group.
    marketing_image_assets: Landscape image asset resource names (1200x628).
    square_image_assets: Square image asset resource names (1200x1200).
    logo_assets: Logo image asset resource names.
    youtube_video_assets: YouTube video asset resource names.
    bidding_strategy: 'MAXIMIZE_CONVERSIONS' or 'MAXIMIZE_CONVERSION_VALUE'.
    target_cpa: Target CPA (for maximize_conversions with target).
    target_roas: Target ROAS (for maximize_conversion_value with target).
    status: Initial status -- 'PAUSED' (default) or 'ENABLED'.
    confirm: Must be True to actually create the campaign (after reviewing the preview).

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "customer_id": "<customer_id>",
      "campaign_name": "<campaign_name>",
      "budget_amount": "<budget_amount>",
      "asset_group_name": "<asset_group_name>",
      "final_urls": "<final_urls>",
      "headlines": "<headlines>",
      "long_headlines": "<long_headlines>",
      "descriptions": "<descriptions>",
      "business_name": "<business_name>"
    },
    "name": "create_performance_max_campaign"
  }
}

Input Schema

NameRequiredDescriptionDefault
statusNoPAUSED
confirmNo
headlinesYes
final_urlsYes
target_cpaNo
customer_idYes
logo_assetsNo
target_roasNo
descriptionsYes
budget_amountYes
business_nameYes
campaign_nameYes
long_headlinesYes
asset_group_nameYes
bidding_strategyNoMAXIMIZE_CONVERSIONS
square_image_assetsNo
youtube_video_assetsNo
marketing_image_assetsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, destructiveHint=false), the description discloses that creation is an atomic batch using temporary IDs, that the campaign defaults to PAUSED for safety, that a preview is returned before any write, and that requests are refused above GOOGLE_ADS_MAX_DAILY_BUDGET. These are exactly the mutation-safety facts an agent needs and that the annotations cannot express.

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 purpose, then safety, then PMax minimums, then per-parameter detail — the most decision-relevant information comes first. The length is justified by 18 undocumented parameters; no sentence is filler.

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, and the description compensates by stating what the preview behavior and confirm gate return. Given the tool's high complexity (18 params, batch creation, validation constraints), the definition covers everything needed to call it correctly on the first attempt.

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?

Schema description coverage is 0%, so the description carries the full burden, and it does: all 18 parameters are enumerated with meaning, cardinality ranges (3-15 headlines, 1-5 long headlines, 2-5 descriptions), character limits, accepted enum values for bidding_strategy and status, and which fields are asset resource names versus raw values. A few entries are tautological ('campaign_name: Campaign name'), but the compensating detail is substantial.

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 opens with a specific verb and resource ('Create a complete Performance Max campaign with budget, campaign, and asset group') and names the three entities produced, distinguishing it from the sibling create_campaign that presumably handles standard campaigns. An agent can identify scope and effect without inspecting the 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?

The two-step flow is spelled out explicitly: 'returns a preview first; call again with confirm=True to create it,' plus the PAUSED default and the budget ceiling condition. What's missing is any explicit routing against sibling creation tools (e.g., create_campaign or create_budget), so an agent must infer the PMax-specific case from the tool name.

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