Skip to main content
Glama
Google Ads MCP Server

Google Ads MCP Server

create_video_ad

Creates a YouTube video ad in a Google Ads video campaign, returning a preview first for enabled ads and requiring confirmation before launch.

Instructions

Create a Video ad for Video campaigns (YouTube).

Safety: an ENABLED ad returns a preview first; call again with confirm=True.
A PAUSED ad is created immediately.

Args:
    customer_id: Google Ads customer ID.
    ad_group_id: Ad group ID (must be in a Video campaign).
    youtube_video_id: YouTube video ID (e.g., 'dQw4w9WgXcQ').
    final_urls: Landing page URLs.
    headline: Optional headline for the ad.
    description: Optional description.
    call_to_action_text: CTA button text (e.g., 'Learn More', 'Shop Now').
    ad_format: Video ad format -- 'IN_STREAM' (skippable), 'BUMPER' (6-sec non-skip),
        'IN_FEED' (discovery/in-feed).
    companion_banner_asset: Optional companion banner image asset resource name.
    status: Ad status -- 'ENABLED' (default) or 'PAUSED'.

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>",
      "ad_group_id": "<ad_group_id>",
      "youtube_video_id": "<youtube_video_id>",
      "final_urls": "<final_urls>"
    },
    "name": "create_video_ad"
  }
}

Input Schema

NameRequiredDescriptionDefault
statusNoENABLED
confirmNo
headlineNo
ad_formatNoIN_STREAM
final_urlsYes
ad_group_idYes
customer_idYes
descriptionNo
youtube_video_idYes
call_to_action_textNo
companion_banner_assetNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare the generic write profile (readOnly=false, idempotent=false, openWorld=true, destructive=false); the description adds the non-obvious two-phase safety gate where an ENABLED ad returns a preview and requires a confirm=True re-call. That is exactly the kind of behavior an agent cannot infer from the annotations and would otherwise blunder into.

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?

The structure is well front-loaded: purpose first, the safety caveat second, then a scannable Args list matching the 11 parameters. A few entries are near-tautological ('description: Optional description', 'customer_id: Google Ads customer ID'), but given zero schema coverage the parameter list largely earns its space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter mutation with no output schema, the definition covers purpose, the confirm/preview protocol, and every argument, which is sufficient to call it correctly. It could say more about what the preview response contains or what happens if confirm is omitted/repeated, but nothing essential 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 description coverage is 0%, so the description carries the full burden and does: it documents all 11 parameters, supplies concrete examples ('dQw4w9WgXcQ', 'Learn More'), and enumerates the ad_format options (IN_STREAM skippable, BUMPER 6-sec non-skip, IN_FEED discovery) and status values with the ENABLED default. Only final_urls lacks format detail.

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 line gives a specific verb (Create), resource (Video ad), and platform scope (YouTube Video campaigns), and the ad_group_id note reinforces the constraint that the group must belong to a Video campaign. This is enough to separate it from create_responsive_display_ad, create_demand_gen_ad and the other ad-creation siblings 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?

It clearly establishes the context of use (Video campaigns only, ad group must be in a Video campaign) and describes the two-path invocation flow: ENABLED requires a preview then confirm=True, PAUSED is created immediately. It does not explicitly say when to prefer PAUSED vs ENABLED or route to a sibling for other campaign types, so it stops short of full when/when-not guidance.

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