Skip to main content
Glama

Opus Growth, Ad Platforms MCP Connector

Add Extension Assets

manage_extension_assets
Destructive

Adds extension assets to a campaign — or to ONE AD GROUP when ad_group_id is given. AD GROUP LEVEL: pass ad_group_id (campaign_id may then be left empty; it is resolved from the ad group) and every asset created or linked here is attached as an AdGroupAsset to that ad group only. Google serves ad-group assets INSTEAD of the campaign's assets of the same type for that ad group's ads, so a branch ad group can show its own phone number, WhatsApp chat, sitelinks and callouts while the rest of the campaign keeps the campaign-level ones. To reuse assets already created for one ad group on a second ad group, pass link_asset_ids with the other ad_group_id (no duplicates are created). callouts: short highlights ['Free Shipping',...]. sitelinks: lines in 'text|url' or 'text|url|description1|description2' format. phone_number (+phone_country) adds a call extension. snippet_header + snippet_values add a structured snippet (header e.g. 'Services', 'Brands' — from Google's fixed list). whatsapp_number (+whatsapp_country, whatsapp_greeting, whatsapp_cta, whatsapp_cta_text) adds a MESSAGE extension (BUSINESS_MESSAGE) that opens a WhatsApp chat — all five are required by Google: greeting is the pre-filled first message, whatsapp_cta is one of APPLY_NOW, BOOK_NOW, CONTACT_US, GET_INFO, GET_OFFER, GET_QUOTE, GET_STARTED, LEARN_MORE, and whatsapp_cta_text is the button description (max 30 chars). Only WhatsApp is supported (Facebook Messenger and Zalo need provider data Google does not expose here). prices: PRICE extensions, one line per offering in 'Header|Description|1500 TRY|https://url' format (optional extra '|unit:PER_MONTH'); 3 to 8 offerings are required, headers must be unique and max 25 chars, descriptions max 25 chars. price_type groups them (SERVICES, BRANDS, PRODUCT_CATEGORIES, NEIGHBORHOODS, EVENTS, LOCATIONS, PRODUCT_TIERS, SERVICE_CATEGORIES, SERVICE_TIERS), price_qualifier is optional (FROM, UP_TO, AVERAGE) and price_language must be one of de, en, es, fr, it, ja, nl, pl, pt_BR, ru, sv. IMPORTANT, measured against the live API: Google does NOT support Turkish (tr) or the Turkish lira (TRY) for price extensions, so a TRY account cannot use them — the tool says so instead of failing cryptically. promotions: PROMOTION extensions in 'Target text|discount|https://url' format — discount is '%20' (percent) or '150 TRY' (amount); optional extra '|key:value' segments: code:SUMMER25, min:500 (minimum order amount, mutually exclusive with code), start:2026-08-01, end:2026-09-01, occasion:SUMMER_SALE, lang:tr, modifier:UP_TO. link_asset_ids: comma-separated asset IDs ALREADY in the account's asset library (from list_assets) — links them to the campaign INSTEAD of creating duplicates; the field type is derived from the asset's own type (PROMOTION, SITELINK, CALLOUT, CALL, STRUCTURED_SNIPPET, PRICE, MOBILE_APP, HOTEL_CALLOUT, LEAD_FORM, IMAGE). IMAGE assets (from upload_image_asset) are linked as the Search IMAGE EXTENSION (field type AD_IMAGE) — Google requires at least 300x300 px and accepts 1.91:1 and 1:1 crops. At least one extension type must be provided. confirm=false → dry-run. To VIEW or REMOVE existing extensions, use list_extension_assets and remove_extension_assets. LOCATION (business address, map pin, "Get directions") is NOT an extension type here: location assets are generated automatically from the Google Business Profile link and serve account-wide — inspect or pin them with add_location_assets.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pricesNo
confirmNo
calloutsNo
sitelinksNo
price_typeNoSERVICES
promotionsNo
ad_group_idNo
campaign_idNo
customer_idYes
phone_numberNo
whatsapp_ctaNoGET_QUOTE
phone_countryNoTR
link_asset_idsNo
price_languageNoen
snippet_headerNo
snippet_valuesNo
link_field_typeNo
price_qualifierNo
whatsapp_numberNo
whatsapp_countryNoTR
whatsapp_cta_textNo
whatsapp_greetingNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added
  2. Removed
  3. Added
  4. Removed
  5. Added
  6. Removed
  7. Added
  8. Removed
  9. Added
  10. Removed
  11. Added
  12. Removed
  13. Added
  14. Removed
  15. Added
  16. Removed
  17. Added
  18. Removed
  19. Added
  20. Removed
  21. Added
  22. Removed
  23. Added
  24. Removed
  25. Added
  26. Removed
  27. Added
  28. Removed
  29. Added
  30. Removed
  31. Added
  32. Removed
  33. Changed3 schema fields changed
    • addedInput schema / properties / ad_group_id
      Added value: +{
      +  "default": "",
      +  "type": "string"
      +}
    • addedInput schema / properties / campaign_id / default
      Added value: +""
    • changedInput schema / required
      Previous value: -[
      -  "customer_id",
      -  "campaign_id"
      -]New value: +[
      +  "customer_id"
      +]
  34. Added
  35. Removed
  36. Added
  37. Removed
  38. Added
  39. Removed
  40. Added

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, openWorldHint=true and idempotentHint=false, so the safety profile is covered. The description adds substantial non-annotation context: confirm=false gives a dry-run, link_asset_ids creates no duplicates, Google serves ad-group assets instead of campaign ones of the same type, and TRY/Turkish is unsupported for price extensions with an explicit graceful-failure note. Minor gap: no mention of rate limits or permission/authorization requirements.

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 content mostly earns its place given 0% schema coverage, and the purpose is front-loaded in the first sentence. However it is delivered as one very long unbroken paragraph with all-caps emphasis, which is hard to scan; segmenting by extension type (callouts, sitelinks, whatsapp, prices, promotions, link_asset_ids) into lines or bullets would materially improve usability.

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?

An output schema exists, so return values need no explanation here. For a 22-param mutation tool with zero schema descriptions, the definition covers selection logic, all parameter formats, constraints, dry-run behavior, and cross-references to siblings — nothing an agent needs in order to invoke it correctly appears 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% across 22 params, so the description must carry the full burden, and it does: it documents the pipe-delimited formats for sitelinks, prices and promotions, the WhatsApp CTA enum values and five-required-fields rule, the price_type/price_qualifier/price_language value sets, and the derived field types for link_asset_ids. This is close to exhaustive compensation for the schema's silence.

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 ('Adds extension assets to a campaign'), and immediately distinguishes campaign-level from ad-group-level behavior, explicitly naming ad_group_id as the selector. Sibling tools (list_extension_assets, remove_extension_assets, add_location_assets) are named and contrasted, so an agent can route correctly 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 Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use rules: pick ad_group_id for ad-group scoping, leave campaign_id empty, use link_asset_ids to reuse assets instead of duplicating, and 'At least one extension type must be provided'. It also names the alternatives for viewing/removing and explains why LOCATION assets are deliberately excluded.

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.