Create or Update Google Ads Ad
create_update_google_ads_adCreate 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
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | The existing ad ID to update. If omitted, a new ad will be created. | |
| name | Yes | The name/label for the ad in Metadata platform (max 50 characters) | |
| headlines | Yes | List of headline texts for the Google Ads ad (minimum 3, maximum 15 headlines, each max 30 characters) | |
| descriptions | Yes | List 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. |