Skip to main content
Glama

Google Ads: create campaign

create_campaign

Creates a new Google Ads campaign with a budget.

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

SEARCH campaigns are created with Google search on, Search partners off,
the Display Network off, and location targeting set to PRESENCE (people
in the targeted locations). Pass search_partners, display_network or
geo_target_type to choose other values. On a campaign of any other
channel type, each of these three settings is set only when its argument
is passed.

Search campaigns have no language setting: Google Ads removed it in late
September 2026 and matches Search ads to searchers by the language the
ads are written in, so write the ads in the language customers search
in. Searches in another language that cost money are stopped with
add_negative_keywords. languages sets a DISPLAY campaign's language
setting in the same request as the campaign; without it the campaign has
no language setting, may show to people who use any language, and the
result says so. languages is refused on SEARCH.

SHOPPING is turned off until Shopping campaign creation is complete: a
Shopping campaign needs a Merchant Center account, a feed label and a
product group, which this tool does not set yet, so it is refused before
anything is sent. VIDEO is refused before anything is sent: the Google
Ads API cannot create or change Video campaigns. MULTI_CHANNEL (App) is
refused before anything is sent: an App campaign needs an app ID, an app
store and a bidding goal, which this tool does not set.

The budget and the campaign are created together in one request, so if
Google refuses the campaign no budget is left behind. The budget belongs
to this campaign alone (it is not a shared budget). A channel type or
bidding strategy outside the lists below, a strategy the channel type
does not take, or a target missing or given to the wrong strategy, is
refused before anything is sent.

Bidding strategies by channel type:
  SEARCH: MANUAL_CPC, TARGET_SPEND, MAXIMIZE_CONVERSIONS, TARGET_CPA,
    MAXIMIZE_CONVERSION_VALUE, TARGET_ROAS.
  DISPLAY: MANUAL_CPC, TARGET_SPEND, MAXIMIZE_CONVERSIONS, TARGET_CPA,
    TARGET_ROAS. Google does not offer MAXIMIZE_CONVERSION_VALUE
    without a target ROAS on Display campaigns.

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).
    advertising_channel_type: Channel type. One of: SEARCH, DISPLAY. Default: SEARCH. SHOPPING is turned off until Shopping campaign creation is complete; VIDEO is refused (the Google Ads API cannot create Video campaigns); MULTI_CHANNEL (App) is refused (it needs an app ID, an app store and a bidding goal this tool does not set). For Performance Max use create_performance_max_campaign.
    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: Bidding strategy. One of: MANUAL_CPC, MAXIMIZE_CONVERSIONS, MAXIMIZE_CONVERSION_VALUE, TARGET_CPA, TARGET_ROAS, TARGET_SPEND, as the channel type takes it (list above). Default: MANUAL_CPC.
    target_cpa_micros: Target CPA in micros of the account's currency. Required with TARGET_CPA, refused with any other strategy.
    target_roas: Target ROAS (e.g., 2.0 for 200%). Required with TARGET_ROAS, refused with any other strategy.
    cpc_bid_ceiling_micros: Maximize Clicks' max CPC cap — the most
        Google may bid for one click — in micros of the account's currency
        (10000000 = 10.00: ₹10 on an INR account, $10 on a USD one). Only
        with bidding_strategy_type TARGET_SPEND. Optional.
    start_date: Campaign start date in YYYY-MM-DD format. Optional.
    end_date: Campaign end date in YYYY-MM-DD format. Optional.
    search_partners: Whether ads may serve on the Google Search Partners
        network. SEARCH default: False. Optional.
    display_network: Whether ads may serve on the Google Display Network.
        SEARCH default: False. Optional.
    geo_target_type: Positive location targeting. One of: PRESENCE (only
        people in the targeted locations), PRESENCE_OR_INTEREST (also
        people elsewhere who show interest in them), SEARCH_INTEREST.
        SEARCH default: PRESENCE. Optional.
    languages: Google Ads language codes (e.g. en, hi, es, pt, de, fr,
        ja, zh_CN) a DISPLAY campaign may show to. ["all"] sets no
        language setting on purpose. Refused on 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; on a
    DISPLAY campaign also 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>"
    },
    "name": "create_campaign"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameYes
statusNoPAUSED
end_dateNo
languagesNo
start_dateNo
customer_idYes
target_roasNo
display_networkNo
geo_target_typeNo
search_partnersNo
over_comfort_ackNo
target_cpa_microsNo
budget_amount_microsYes
bidding_strategy_typeNoMANUAL_CPC
cpc_bid_ceiling_microsNo
advertising_channel_typeNoSEARCH

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / languages
      Added value: +{
      +  "anyOf": [
      +    {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "default": null,
      +  "title": "Languages"
      +}
  2. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations say readOnly=false, destructive=false, idempotent=false, openWorld=false; the description adds what annotations cannot: campaigns are always created PAUSED and spend nothing, budget+campaign are atomic so no orphan budget is left behind, the budget is not shared, and all validation refusals occur before anything is sent. It also discloses SEARCH's default network/geo settings and the language-setting asymmetry, which materially change the result of a call.

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 essential fact (creates paused, atomic budget) and organized into channel, language, refusal and bidding sections. It loses a point for duplication: the SHOPPING/VIDEO/MULTI_CHANNEL refusals appear in both the prose block and the advertising_channel_type entry, and the micros currency example is repeated verbatim for budget and cpc_bid_ceiling_micros.

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 16-parameter, conditionally-validated creation tool, the description covers defaults, exclusions, atomicity, validation failure modes, and the language edge case where absence means any language. A returns section exists alongside an output schema, so return-value detail is appropriately brief.

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?

With schema description coverage at 0% across 16 parameters, the description carries the full burden and does so: micros convention is spelled out with both INR and USD examples, conditional requirements are stated (target_cpa_micros/target_roas required with one strategy and refused with others), strategy-per-channel matrices are given, and non-obvious params like over_comfort_ack are explained as recorded-but-never-sent.

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 ("Creates a new Google Ads campaign with a budget") and immediately names a sibling for the excluded case ("For Performance Max use create_performance_max_campaign"). The unsupported channel types are enumerated, so an agent can distinguish this tool from create_performance_max_campaign without opening a schema.

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?

Explicitly states what is refused before anything is sent (SHOPPING, VIDEO, MULTI_CHANNEL), routes PMax elsewhere, and points to add_negative_keywords for stopping off-language spend. It also warns that the campaign is always created paused and enabled in a separate step, which is exactly the when-to-use context an agent needs.

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