Skip to main content
Glama

Google Ads: create campaign

create_campaign
Destructive

Creates a new Google Ads campaign with a budget.

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. A DISPLAY or VIDEO campaign is created with no
language setting (people who use any language); update_campaign with
languages sets one.

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, or a target missing or given
to the wrong strategy, is refused before anything is sent.

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, SHOPPING, VIDEO, MULTI_CHANNEL. Default: SEARCH. 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 the user switches it on in Google Ads; 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. 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.
    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.

Tools revision: 5c9bea8f.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYes
statusNoPAUSED
end_dateNo
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

TableJSON 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?

Goes well beyond the annotations (readOnly=false, destructive=true, openWorld=true), which already cover the safety profile. It discloses atomic budget+campaign creation so no orphan budget is left behind, that the budget is not shared, that validation rejects bad channels/strategies/targets before any call is sent, and that everything is created PAUSED because ENABLED is refused.

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-loads the core action, then organizes behavior, Args and Returns clearly, and every parameter entry earns its place. Slightly verbose in the language-setting paragraph and repeats the micros conversion formula twice, but the length is largely justified by a 15-parameter schema with no field descriptions.

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?

Given a 15-parameter mutation tool with zero schema coverage, the description supplies defaults, enums, cross-parameter validity rules, creation semantics and the atomicity guarantee. An output schema exists, and the description still briefly notes the return shape, so nothing needed to call it correctly is missing.

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 coverage is 0% across 15 parameters, so the description carries the full burden and does: it enumerates every allowed enum value, gives defaults, explains the micros-to-currency conversion with a worked example, and spells out conditional requirements (target_cpa_micros required with TARGET_CPA and refused otherwise; cpc_bid_ceiling_micros only with TARGET_SPEND) plus the channel-specific defaults for search_partners, display_network and geo_target_type.

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 the sibling it is not for, telling the agent that Performance Max campaigns go to create_performance_max_campaign. The agent can distinguish it from create_ad_group / create_responsive_search_ad without opening any 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?

Routes Performance Max explicitly to create_performance_max_campaign and points to update_campaign and add_negative_keywords for follow-up language concerns. However, it never states the obvious boundary that this tool only builds the campaign shell and that ad groups, keywords and ads require the create_ad_group / add_keywords / create_responsive_search_ad siblings.

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