Skip to main content
Glama

Metadata MCP Connector

Create or Update Google Ads Ad

create_update_google_ads_ad
Destructive

Create a new or update an existing Google Ads text ad on the Metadata platform. IMPORTANT: This tool is ONLY for Google Ads (GOOGLE_ADS channel) text ads. Do NOT use this tool for Facebook, LinkedIn, or Instagram ads. For other channels or ad types use the dedicated tools: create_update_image_ad (IMAGE/GIF) or create_update_video_ad (VIDEO). CAROUSEL is not yet covered by the new tools — flag it if you hit that case.

                            BEHAVIOR:
                            - If "id" is NOT provided → creates a new Google Ads text ad.
                            - If "id" IS provided → updates the existing Google Ads text ad with that ID.

                            CRITICAL — GOOGLE ADS CHARACTER LIMITS (HARD LIMITS — API WILL REJECT IF EXCEEDED)
                            - Headlines: MAXIMUM 30 characters each (minimum 3, maximum 15 headlines)
                            - Descriptions: MAXIMUM 90 characters each (2 to 4 descriptions). Each description string MUST be 90 characters or fewer. Count every letter, space, and punctuation mark. 90 is the absolute maximum.
                            - Ad name: MAXIMUM 50 characters

                            WARNING: DESCRIPTIONS — 90 CHARACTER HARD LIMIT — READ THIS CAREFULLY
                            THIS IS THE #1 MOST COMMON FAILURE MODE. DO NOT SKIP THIS SECTION.

                            - 90 characters is an ABSOLUTE, NON-NEGOTIABLE HARD CEILING.
                            - 91 characters = REJECTION. 100 characters = REJECTION. 89 characters = OK.
                            - "Characters" means EVERY character: letters, digits, spaces, punctuation,
                              apostrophes, hyphens, slashes, line breaks, and emoji code points. ALL count.
                            - There is NO grace, NO rounding, NO partial credit. The boundary is exact.
                            - The MCP schema enforces maxLength=90 — an over-length string is rejected
                              before your tool call even runs. The server ALSO truncates as a backstop,
                              meaning your over-length copy will be SILENTLY CUT MID-SENTENCE if it
                              somehow slips through. Either way, you will not get the description you wrote.
                            - This rule applies to EACH description independently. 4 descriptions of 80
                              chars each is fine. 1 description of 91 chars is NOT fine.
                            - Do NOT pad descriptions to "use the space." Shorter is always safer.
                            - Do NOT rely on the user noticing — you are responsible for compliance.

                            COMMON WAYS LLMs BLOW THE 90-CHAR LIMIT (avoid these):
                            - Writing a "complete sentence" without counting first.
                            - Adding a CTA at the end ("Sign up today!") that pushes past 90.
                            - Including the company name AND a tagline AND a benefit in one description.
                            - Using em dashes (—), ellipses (…), or smart quotes (" ") which still count
                              as characters and often appear longer than expected when counted.
                            - Trusting your "feel" for length — LLMs systematically underestimate by 5-15
                              characters. ALWAYS COUNT.

                            RECOMMENDED SAFETY MARGIN:
                            - Target 70-85 characters per description. This leaves headroom for sanitization
                              (smart-quote conversion, whitespace normalization) and avoids edge-case
                              rejections. 90 is the cliff — do not write to the cliff.

                            MANDATORY PRE-CALL VALIDATION — YOU MUST DO THIS BEFORE EVERY CALL:
                            1. Write out each headline and count its characters — each MUST be ≤ 30 characters
                            2. Write out each description and count its characters — each MUST be ≤ 90 characters (this is the most common error — descriptions MUST NOT exceed 90 characters)
                            3. For EACH description, do an explicit character count: len(description). If the
                               number is 91 or higher, REWRITE before calling. Do not "estimate" — count.
                            4. If any text exceeds the limit, rewrite and shorten it BEFORE calling the tool
                            5. Do NOT rely on the API to catch these errors — validate client-side first
                            6. When in doubt, make descriptions shorter. A 70-character description is better than a rejected 91-character one
                            7. If a user provides copy that is too long, shorten it yourself and proceed —
                               do NOT submit known-bad copy and hope for the best.

                            EXAMPLES — DESCRIPTIONS AT THE 90-CHAR BOUNDARY:
                            - "Shop the best deals online." (27 chars) SAFE
                            - "Free shipping on every order over fifty dollars. Sign up today!" (63 chars) SAFE
                            - "Discover our award-winning marketing platform built for B2B teams of every size today" (89 chars) SAFE — at the edge
                            - "Discover our award-winning marketing platform built for modern B2B teams of every size today" (94 chars) REJECTED — 4 over
                            - "Transform your B2B marketing strategy with AI-powered automation that drives real revenue today!" (98 chars) REJECTED — REWRITE

                            USAGE INSTRUCTIONS FOR LLM:
                            Use this tool when users want to:
                            - Create a new Google Ads text ad
                            - Update an existing Google Ads text ad (headlines, descriptions, or name)
                            - Set up a Google Ads responsive search ad with headlines and descriptions

                            WHEN TO USE:
                            - User asks "create a Google Ads ad"
                            - User wants to create a text ad for Google Ads
                            - User says "make a new Google ad with these headlines and descriptions"
                            - User wants to update the headlines or descriptions of an existing Google Ads ad
                            - User says "update Google ad 23149 with new headlines"

                            WHEN NOT TO USE:
                            - User wants to create a Facebook, LinkedIn, Instagram, or Reddit IMAGE ad → use create_update_image_ad
                            - User wants to create a Facebook, LinkedIn, Instagram, or Reddit VIDEO ad → use create_update_video_ad
                            - User wants to update a non-Google Ads ad → use create_update_image_ad or create_update_video_ad (whichever matches the ad's adType)

                            INPUT PARAMETERS:
                            - id: The ad ID (optional). If provided, the ad with this ID will be updated. If omitted, a new ad is created. This is the adLibraryId inside the creatives of the google channel in campaign response.
                            - name: The name/label for the ad (required, max 50 characters)
                            - headlines: Array of headline text strings (required, minimum 3, maximum 15 headlines, each STRICT MAX 30 CHARACTERS)
                            - descriptions: Array of description text strings (required, 2 to 4 descriptions, each STRICT MAX 90 CHARACTERS — count characters carefully, this is the most common validation failure)

                            EXAMPLE USAGE (Create):
                            create_update_google_ads_ad(
                                name="My Google Ad Q1 2025",
                                headlines=["Buy Now", "Best Deals", "Free Shipping"],
                                descriptions=["Shop the best deals online.", "Free shipping on all orders."]
                            )

                            EXAMPLE USAGE (Update):
                            create_update_google_ads_ad(
                                id=23149,
                                name="My Google Ad Q1 2025 Updated",
                                headlines=["Updated Headline 1", "Updated Headline 2", "Updated Headline 3"],
                                descriptions=["Updated description 1.", "Updated description 2."]
                            )

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idNoThe existing ad ID to update. If omitted, a new ad will be created.
nameYesThe name/label for the ad in Metadata platform (max 50 characters)
headlinesYesList of headline texts for the Google Ads ad (minimum 3, maximum 15 headlines, each max 30 characters)
descriptionsYesList of description texts for the Google Ads ad (2 to 4 descriptions). CRITICAL #1 FAILURE MODE: each description MUST be ≤ 90 characters — this is enforced by maxLength schema validation AND by server-side truncation. Going over 90 means either (a) the call is rejected before it runs, or (b) the description is silently cut at 90 mid-sentence. Count every character (incl. spaces/punctuation/emoji). Target 70-85 chars to leave margin for sanitization. Shorter is always safer.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare destructiveHint=true and readOnlyHint=false, and the description fully aligns with and expands on this by explaining that updates mutate the existing ad. It goes well beyond annotations by disclosing schema rejection before execution, server-side silent truncation as a backstop, the id-based create/update switch, and the adLibraryId provenance. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized and front-loaded with the most critical channel scoping, but it is heavily redundant: the 90-character hard limit warning is repeated in multiple sections, and phrases like 'count characters' and 'shorter is safer' recur several times. The structure is clear, but the length could be substantially reduced without losing meaning.

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 destructive nature and the high-stakes character limit failure mode, the description is exceptionally complete. It covers validation steps, common LLM failure patterns, explicit character counts for boundary examples, update workflows, and exclusions for sibling tools. With no output schema, the description appropriately focuses on call correctness, examples, and failure prevention.

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?

Although schema coverage is 100%, the description adds substantial semantic value: it explains id as adLibraryId inside creatives, clarifies the create/update branching behavior, and provides worked examples with character-count annotated strings. The mandatory pre-call validation steps and recommended 70-85 character safety margin give agents actionable guidance far beyond raw schema constraints.

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 clearly states the tool creates or updates Google Ads text ads on the Metadata platform, with a specific verb, resource, and channel. It explicitly distinguishes itself from sibling tools by naming create_update_image_ad and create_update_video_ad and noting that CAROUSEL is not covered. The 'ONLY for Google Ads (GOOGLE_ADS channel) text ads' scoping leaves no ambiguity.

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?

The description provides exhaustive WHEN TO USE and WHEN NOT TO USE sections with concrete user-phrase examples and explicit sibling tool names. It covers the create-vs-update decision (presence of id), exclusions for Facebook/LinkedIn/Instagram/Reddit, and routes the agent to the correct alternative tool. Nothing is left to inference.

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