Skip to main content
Glama

Google Ads: create promotion asset

create_promotion_asset

Creates a promotion asset that can be linked to campaigns or ad groups.

Creating it changes no ad: it shows only once linked with
link_asset_to_campaign, link_asset_to_ad_group or
link_assets_to_customer.

Promotion assets highlight sales and special offers in your ads.

Args:
    customer_id: The Google Ads customer ID (numbers only, no hyphens).
    promotion_target: What the promotion is for (e.g., "Summer Collection", "All Shoes").
    final_url: The page the promotion sends clicks to: the business's
        real landing page for this offer. Required.
    discount_modifier: One of: NONE, UP_TO. Default: NONE.
    percent_off: Percentage discount (e.g., 20 for 20% off). Use this OR money_amount_off.
    money_amount_off_micros: Money discount in micros of money_amount_off_currency (5000000 = 5.00 off). Use this OR percent_off.
    money_amount_off_currency: Currency code for money discount; use the account's currency (e.g., "INR", "USD").
    occasion: Occasion for the promotion. One of: NONE, NEW_YEARS, VALENTINES_DAY,
        EASTER, MOTHERS_DAY, FATHERS_DAY, LABOR_DAY, BACK_TO_SCHOOL, HALLOWEEN,
        BLACK_FRIDAY, CYBER_MONDAY, CHRISTMAS, BOXING_DAY, and more. Default: NONE.
    language_code: Language code (e.g., "en"). Default: "en".
    start_date: Asset start date in YYYY-MM-DD format. Optional.
    end_date: Asset end date in YYYY-MM-DD format. Optional.
    redemption_start_date: Promotion redemption start date in YYYY-MM-DD format. Optional.
    redemption_end_date: Promotion redemption end date in YYYY-MM-DD format. Optional.
    promotion_code: A promotion code users can use (e.g., "SAVE20"). Optional.

Returns:
    Dictionary with the created asset resource name.

Tools revision: d80f65c0.

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>",
      "promotion_target": "<promotion_target>",
      "final_url": "<final_url>"
    },
    "name": "create_promotion_asset"
  }
}

Input Schema

NameRequiredDescriptionDefault
end_dateNo
occasionNoNONE
final_urlYes
start_dateNo
customer_idYes
percent_offNo
language_codeNoen
promotion_codeNo
promotion_targetYes
discount_modifierNoNONE
redemption_end_dateNo
redemption_start_dateNo
money_amount_off_microsNo
money_amount_off_currencyNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare this is a non-destructive, non-idempotent write, so the description's added value is the key behavioral fact that creation alone has no ad effect. It also documents the percent_off vs money_amount_off mutual exclusion and that money amounts are in micros, which the annotations cannot express. Remaining gaps: duplicate handling, validation failure modes, and any per-account asset limits.

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?

Purpose and the crucial 'no ad changes until linked' caveat are front-loaded before the parameter list, and each arg line is one compact statement. It is long, but the length is driven by 14 parameters rather than padding; the Returns section is mildly redundant given an output schema exists.

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?

For a 14-parameter mutation tool with zero schema descriptions, the definition covers purpose, the linking prerequisite, every parameter's semantics, and mutual exclusions. The output schema handles return shape, so nothing an agent needs to invoke it correctly 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 coverage is 0%, so the description carries the entire burden and does it: all 14 params get meaning, formats (YYYY-MM-DD, micros where 5000000 = 5.00), enum values for discount_modifier and occasion, defaults, and the required-usage constraint on customer_id (numbers only, no hyphens) and final_url. This is materially more than the schema provides.

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 (creates) and resource (promotion asset) with the scope immediately clarified: the asset is inert until linked. That differentiates it cleanly from the other create_*_asset siblings such as create_price_asset or create_callout_asset, which produce different asset types.

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?

Explicitly says creating the asset changes no ad and must be followed by link_asset_to_campaign, link_asset_to_ad_group or link_assets_to_customer, which is exactly the when-and-how guidance an agent needs. It stops short of stating when to prefer a different asset type (e.g. price vs. promotion asset), so no true exclusions.

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