Skip to main content
Glama

Draft a promotion edit

update_promotion

Draft changing a promotion asset in place — returns a PREVIEW.

Only the fields passed change; everything else stays as it is. The asset keeps its ID and history, and the change shows everywhere it is linked. Passing money_off replaces a percent_off (and the other way round); passing promotion_code replaces an orders_over_amount (and the other way round). The preview shows old and new values; an edit in Google Ads before the apply stops it.

Google Ads API: https://developers.google.com/google-ads/api/docs/start

Input Schema

NameRequiredDescriptionDefault
asset_idYesNumeric ID of the PROMOTION asset.
end_dateNoLast day the promotion shows, YYYY-MM-DD.
occasionNoNew occasion such as BLACK_FRIDAY.
final_urlNoNew landing page; must be reachable.
money_offNoNew fixed discount.
start_dateNoFirst day the promotion shows, YYYY-MM-DD.
ad_scheduleNoWindows that replace the promotion's whole schedule (same shape as draft_promotion). Empty leaves the schedule as it is.
customer_idNoGoogle Ads customer ID (digits, dashes optional). Defaults to the configured account.
percent_offNoNew percentage discount, at most 100.
clear_fieldsNoOptional fields to remove: promotion_code, orders_over_amount, occasion, discount_modifier, start_date, end_date, redemption_start_date, redemption_end_date, ad_schedule.
currency_codeNoISO 4217 code for the amounts. Empty keeps the promotion's currency (or uses the account currency).
language_codeNoNew language of the promotion's text.
promotion_codeNoNew coupon code, at most 15 characters.
promotion_targetNoNew target text, at most 20 characters.
discount_modifierNo"UP_TO", or clear it with clear_fields.
orders_over_amountNoNew minimum order value.
redemption_end_dateNoLast day the offer can be redeemed, YYYY-MM-DD.
redemption_start_dateNoFirst day the offer can be redeemed, YYYY-MM-DD.

Output Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / ad_schedule
      Added value: +{
      +  "default": [],
      +  "description": "Windows that replace the promotion's whole schedule (same\nshape as draft_promotion). Empty leaves the schedule as it is.",
      +  "items": {
      +    "additionalProperties": true,
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / clear_fields / description
      Previous value: -"Optional fields to remove: promotion_code,\norders_over_amount, occasion, discount_modifier, start_date,\nend_date, redemption_start_date, redemption_end_date."New value: +"Optional fields to remove: promotion_code,\norders_over_amount, occasion, discount_modifier, start_date,\nend_date, redemption_start_date, redemption_end_date,\nad_schedule."
  2. Added

TDQS

A4.7/5.0
Behavior5/5

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

Beyond annotations, the description discloses partial-update behavior, ID/history preservation, linked propagation, mutual replacement rules between discount and code fields, old/new preview values, and that an external Google Ads edit stops the apply. This is unusually rich behavioral context for a draft mutation tool.

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

Conciseness5/5

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

The description is front-loaded with the draft/preview nature, then efficiently covers update semantics and invalidation. Every sentence earns its place, and the API link is compact and useful.

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 an 18-parameter draft mutation with an output schema and annotations, the description covers the preview-only nature, partial updates, field replacement behavior, and external-edit invalidation. Return-value details are handled by the output schema, and safety is covered by annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description adds important meaning beyond the schema by explaining that only passed fields change and that money_off/percent_off and promotion_code/orders_over_amount replace each other. It does not cover every parameter interaction, such as clear_fields nuances, so it stops short of 5.

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 names a specific verb and resource: 'Draft changing a promotion asset in place,' and states the immediate result: 'returns a PREVIEW.' The phrase 'asset keeps its ID and history' clearly marks this as editing an existing promotion rather than creating a new one.

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?

The opening and the phrase 'before the apply' make clear this is for drafting an edit to an existing promotion, not for applying the change. However, it does not explicitly name confirm_and_apply or draft_promotion as the alternative tools, so it lacks the full when/when-not routing of a 5.

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.