Skip to main content
Glama

Create Google Ads Demand Gen Campaign

adsap_google_create_demand_gen_campaign

Create a complete Google Ads Demand Gen campaign (YouTube, Discover, Gmail, Maps and the Google Display Network) in ONE atomic request: budget, campaign (ALWAYS created PAUSED — activate later with adsap_google_set_entity_status), a typeless ad group with channel controls, ad-group-level location/language targeting, and ONE ad. Use dry_run: true first — Google validates the whole chain without creating anything; show the plan, get confirmation, then execute. Two ad types (ad.ad_type): 'multi_asset' = image ad (1-5 headlines <=30 chars, 1-5 descriptions <=90, business name <=25, 1-5 logos, at least one landscape 1.91:1 or square 1:1 image from adsap_google_upload_asset, optional portrait 4:5 and tall-portrait 9:16, combined images <=20); 'video_responsive' = YouTube video ad (1-5 YouTube video ids, 1-5 headlines <=40, 1-5 long headlines <=90 REQUIRED, 1-5 descriptions <=90, 1-5 logos). Daily budget minimum is 5 (Google enforces a 5 USD local-currency-equivalent floor for Demand Gen). Channels: default ALL_CHANNELS; or channels.selected booleans (youtube_in_stream/youtube_in_feed/youtube_shorts/discover/gmail/display/maps — display: true is how you reach the Google Display Network). bidding_strategy 'auto' picks maximize_conversions when the account has conversion tracking, else maximize clicks; target_roas needs conversion history (Google rejects otherwise). ad_account_id is the bare 10-digit customer ID. For Search use adsap_google_create_search_campaign, for Performance Max adsap_google_create_pmax_campaign; for Meta use adsap_create_campaign.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
adYes
geoYes
dry_runNo
ad_groupNo
campaignYes
language_idsNoLanguage constant ids (default ['1000'] = English).
ad_account_idYesBare 10-digit Google Ads customer ID (from adsap_google_list_ad_accounts). No dashes, no act_ prefix.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden, and it delivers: ALWAYS created PAUSED, dry_run validates the whole chain without creating anything, atomic request semantics, bidding_strategy 'auto' resolves based on conversion tracking, target_roas requires conversion history, and budget has a hard floor. This goes well beyond what the name or schema convey.

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 long but every clause carries essential operational information. It is front-loaded with the atomic create and PAUSED behavior, then proceeds logically through dry_run, ad types, budget, channels, bidding, account ID, and alternatives. No filler or repetition.

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 the tool's high complexity, nested objects, seven parameters, and no output schema, the description covers all important invocation decisions: what the tool creates, how to validate safely, per-type ad requirements, channel selection semantics, bidding behavior, budget floor, and sibling routing. An agent can correctly select and call this tool with very little left to guess.

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 only 29%, so the description must compensate, and it does extensively: ad types with exact asset counts and dimensions, required long headlines for video_responsive, budget not in micros, channel booleans, bare 10-digit ad_account_id, dry_run meaning, and geo targeting at ad-group level. The prose explains constraints and relationships the schema only hints at.

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 states a very specific verb and resource: create a complete Google Ads Demand Gen campaign in one atomic request, enumerating exact surfaces (YouTube, Discover, Gmail, Maps, Display). It also distinguishes itself from siblings at the end ('For Search use adsap_google_create_search_campaign, for Performance Max use adsap_google_create_pmax_campaign; for Meta use adsap_create_campaign'), so the agent can tell it apart from nearby campaign-creation tools.

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?

It tells the agent when to use this tool vs alternatives (Search, PMax, Meta), and gives a mandatory invocation workflow: run dry_run: true first, show the plan, get confirmation, then execute. It also warns that campaigns are ALWAYS created PAUSED and should be activated later with a named sibling tool, which is concrete, actionable guidance.

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