Skip to main content
Glama

Google Ads: create Performance Max campaign

create_performance_max_campaign

Creates a Performance Max campaign with a budget, business name, and logo.

The campaign is always created paused: it shows no ads and spends
nothing until it is switched on in a separate step.

PMax campaigns require a business name and logo asset linked at the campaign
level (Brand Guidelines). Create these assets first using create_text_asset
(for business name) and create_image_asset (for logo), then pass their
resource names here.

After creating the campaign, create more assets and an asset group using
create_text_asset, create_image_asset, create_youtube_video_asset,
and then create_asset_group.

languages sets the campaign's language setting in the same request as the
campaign. Google uses it on YouTube, Display, Discover and Gmail; on
Google Search, Performance Max ads are matched by the language the ads
are written in. Without languages the campaign has no language setting
and may show to people who use any language on those channels; the
result then says so.

Args:
    customer_id: The Google Ads customer ID (numbers only, no hyphens).
    name: The name for the new campaign.
    budget_amount_micros: Daily budget in micros of the account's currency (10000000 = 10.00: ₹10 on an INR account, $10 on a USD one).
    business_name_asset_resource_name: Resource name of a text asset for the business name.
    logo_asset_resource_name: Resource name of an image asset for the logo (square, 1200x1200).
    status: Initial campaign status: PAUSED, the only status a build takes. Every campaign is built paused and is switched on in a separate step; ENABLED is refused, and nothing in that call runs. Default: PAUSED.
    bidding_strategy_type: One of: MAXIMIZE_CONVERSIONS, MAXIMIZE_CONVERSION_VALUE.
        Default: MAXIMIZE_CONVERSIONS.
    target_cpa_micros: Target CPA in micros of the account's currency, optional with MAXIMIZE_CONVERSIONS.
    target_roas: Target ROAS (e.g., 2.0 for 200%), optional with MAXIMIZE_CONVERSION_VALUE.
    final_url_expansion_opt_out: Set True to opt out of final URL expansion. Default: False.
    start_date: Campaign start date in YYYY-MM-DD format. Optional.
    end_date: Campaign end date in YYYY-MM-DD format. Optional.
    languages: Google Ads language codes (e.g. en, hi, es, pt, de, fr,
        ja, zh_CN) the campaign may show to on YouTube, Display, Discover
        and Gmail. Not used on Google Search. Optional.
    over_comfort_ack: The user's own words or reason when they asked for
        a budget above their saved comfort (e.g. "user asked for 6,000/day
        on 2026-09-23"). Recorded with the change by the hosted connector;
        never sent to Google. Optional.

Returns:
    Dictionary with created campaign and budget resource names, and the
    language codes set (an empty list means every language).

Tools revision: d80f65c0.

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>",
      "name": "<name>",
      "budget_amount_micros": "<budget_amount_micros>",
      "business_name_asset_resource_name": "<business_name_asset_resource_name>",
      "logo_asset_resource_name": "<logo_asset_resource_name>"
    },
    "name": "create_performance_max_campaign"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameYes
statusNoPAUSED
end_dateNo
languagesNo
start_dateNo
customer_idYes
target_roasNo
over_comfort_ackNo
target_cpa_microsNo
budget_amount_microsYes
bidding_strategy_typeNoMAXIMIZE_CONVERSIONS
logo_asset_resource_nameYes
final_url_expansion_opt_outNo
business_name_asset_resource_nameYes

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Adds substantial behavior beyond the annotations: the campaign is always created paused, adds no ads and spends nothing, ENABLED is refused and nothing in that call runs. It also discloses that over_comfort_ack is recorded locally and never sent to Google, and explains exactly how omitting languages affects delivery on each channel.

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 purpose and the paused-by-default behavior, then a clean Args/Returns layout. The languages paragraph is longer than strictly necessary but each sentence adds a distinct delivery consequence; nothing 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?

For a 14-parameter write tool with no schema descriptions, the definition covers prerequisites, defaults, unit formats, enum constraints, side effects, and even restates the return shape (created campaign/budget names plus language codes, with empty list meaning every language).

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 whole burden and does: micros with a concrete currency example, YYYY-MM-DD date format, logo must be square 1200x1200, target_cpa tied to MAXIMIZE_CONVERSIONS and target_roas to MAXIMIZE_CONVERSION_VALUE, and language codes enumerated.

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 opening sentence names the specific verb, resource, and the defining inputs: 'Creates a Performance Max campaign with a budget, business name, and logo.' This distinguishes it clearly from the generic create_campaign sibling without needing 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?

Explicitly states the prerequisite workflow (create_text_asset / create_image_asset first, then pass resource names) and the follow-on steps (more assets, then create_asset_group). It does not name create_campaign as the non-PMax alternative, so the boundary with that sibling 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