Skip to main content
Glama

Update a promotion

update_promotion
Destructive

Modify an existing promotion's configuration by sending only fields to change; omitted fields stay unchanged, and status can be activated or deactivated in the same call.

Instructions

Rate limit: 100 requests / 10 seconds per shop. See Rate limiting.

Updates an existing promotion's configuration. Only provided fields are updated; omitted fields remain unchanged. Status changes (activate/deactivate) are part of the same update call.

Input Schema

NameRequiredDescriptionDefault
limitsNo
statusNo
accountNoExact private shop profile label; not a provider identity or authorization proof.
confirmNoSet true only when the user asked for exactly this action.
payloadNoComplete current native JSON body; cannot mix with native body flags or payload_file.
appliesToNo
payload_fileNoAbsolute regular non-symlink native JSON body file, at most1MiB. Cannot mix with payload or body flags.
promotion_idYesNative promotionId
requirementsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed14 schema fields changedv3.0.0
    • addedInput schema / $defs
      Added value: +{
      +  "Shop": {
      +    "properties": {
      +      "minimumOrderValue": {
      +        "properties": {
      +          "currency": {
      +            "type": "string"
      +          },
      +          "value": {
      +            "minimum": 0,
      +            "type": "number"
      +          }
      +        },
      +        "required": [
      +          "currency",
      +          "value"
      +        ],
      +        "title": "Money",
      +        "type": "object"
      +      }
      +    },
      +    "title": "Shop",
      +    "type": "object"
      +  },
      +  "appliesTo": {
      +    "oneOf": [
      +      {
      +        "allOf": [
      +          {
      +            "title": "Open Api Update Promotion Applies To"
      +          },
      +          {
      +            "properties": {
      +              "type": {
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          }
      +        ],
      +        "required": [
      +          "type"
      +        ],
      +        "title": "Entire Order"
      +      },
      +      {
      +        "allOf": [
      +          {
      +            "title": "Open Api Update Promotion Applies To"
      +          },
      +          {
      +            "properties": {
      +              "oncePerOrder": {
      +                "type": "boolean"
      +              },
      +              "productIds": {
      +                "items": {
      +                  "format": "uuid",
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              }
      +            },
      +            "type": "object"
      +          }
      +        ],
      +        "required": [
      +          "productIds"
      +        ],
      +        "title": "Selected Products"
      +      }
      +    ]
      +  }
      +}
    • addedInput schema / properties / appliesTo / $ref
      Added value: +"#/$defs/appliesTo"
    • removedInput schema / properties / appliesTo / oneOf
      Removed value: -[
      -  {
      -    "allOf": [
      -      {
      -        "title": "Open Api Update Promotion Applies To"
      -      },
      -      {
      -        "properties": {
      -          "type": {
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      }
      -    ],
      -    "required": [
      -      "type"
      -    ],
      -    "title": "Entire Order"
      -  },
      -  {
      -    "allOf": [
      -      {
      -        "title": "Open Api Update Promotion Applies To"
      -      },
      -      {
      -        "properties": {
      -          "oncePerOrder": {
      -            "type": "boolean"
      -          },
      -          "productIds": {
      -            "items": {
      -              "format": "uuid",
      -              "type": "string"
      -            },
      -            "type": "array"
      -          }
      -        },
      -        "type": "object"
      -      }
      -    ],
      -    "required": [
      -      "productIds"
      -    ],
      -    "title": "Selected Products"
      -  }
      -]
    • changedInput schema / properties / confirm / description
      Previous value: -"Explicit approval for this exact provider effect or local private-file operation."New value: +"Set true only when the user asked for exactly this action."
    • addedInput schema / properties / payload / properties / appliesTo / $ref
      Added value: +"#/$defs/appliesTo"
    • removedInput schema / properties / payload / properties / appliesTo / oneOf
      Removed value: -[
      -  {
      -    "allOf": [
      -      {
      -        "title": "Open Api Update Promotion Applies To"
      -      },
      -      {
      -        "properties": {
      -          "type": {
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      }
      -    ],
      -    "required": [
      -      "type"
      -    ],
      -    "title": "Entire Order"
      -  },
      -  {
      -    "allOf": [
      -      {
      -        "title": "Open Api Update Promotion Applies To"
      -      },
      -      {
      -        "properties": {
      -          "oncePerOrder": {
      -            "type": "boolean"
      -          },
      -          "productIds": {
      -            "items": {
      -              "format": "uuid",
      -              "type": "string"
      -            },
      -            "type": "array"
      -          }
      -        },
      -        "type": "object"
      -      }
      -    ],
      -    "required": [
      -      "productIds"
      -    ],
      -    "title": "Selected Products"
      -  }
      -]
    • addedInput schema / properties / payload / properties / requirements / $ref
      Added value: +"#/$defs/Shop"
    • removedInput schema / properties / payload / properties / requirements / properties
      Removed value: -{
      -  "minimumOrderValue": {
      -    "properties": {
      -      "currency": {
      -        "type": "string"
      -      },
      -      "value": {
      -        "minimum": 0,
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "currency",
      -      "value"
      -    ],
      -    "title": "Money",
      -    "type": "object"
      -  }
      -}
    • removedInput schema / properties / payload / properties / requirements / title
      Removed value: -"Shop"
    • removedInput schema / properties / payload / properties / requirements / type
      Removed value: -"object"
    • addedInput schema / properties / requirements / $ref
      Added value: +"#/$defs/Shop"
    • removedInput schema / properties / requirements / properties
      Removed value: -{
      -  "minimumOrderValue": {
      -    "properties": {
      -      "currency": {
      -        "type": "string"
      -      },
      -      "value": {
      -        "minimum": 0,
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "currency",
      -      "value"
      -    ],
      -    "title": "Money",
      -    "type": "object"
      -  }
      -}
    • removedInput schema / properties / requirements / title
      Removed value: -"Shop"
    • removedInput schema / properties / requirements / type
      Removed value: -"object"
  2. First observedv2.0.0

TDQS

A3.6/5.0
Behavior4/5

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

Adds real behavior beyond the annotations: a concrete rate limit (100 req/10s per shop), partial-update semantics (omitted fields remain unchanged), and that status transitions ride along with the same call. It does not disclose irreversibility of status changes to ENDED or the mutual exclusivity of payload/payload_file/individual fields, which the schema partly covers.

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?

Three short sentences, front-loaded with the operational constraint and then the update semantics. No filler, though the rate-limit pointer occupies prime opening space that could have been shortened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter mutation tool with nested objects, no output schema, and a payload/payload_file/individual-field exclusivity rule, the description is thin. Annotations cover the safety profile and the description covers partial updates and rate limits, but the caller still has no guidance on which input mode to pick or on confirm/account usage.

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

Parameters3/5

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

Schema description coverage is 56%, so the schema documents several key params (account, confirm, payload, payload_file, promotion_id) but leaves limits, status, appliesTo, and requirements bare. The description's 'only provided fields are updated' implies optionality but adds no meaning about the dual-mode payload-vs-individual-fields interface, which is the schema's most confusing aspect.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Updates an existing promotion's configuration') and the scope of a partial update. It is distinguishable from create_promotion and get_promotion by the verb, but it never names those siblings or explicitly contrasts itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The line 'Status changes (activate/deactivate) are part of the same update call' implicitly tells the agent not to look for a separate activation tool, which is useful routing. However there is no explicit when-to-use/when-not guidance versus create_promotion, and no mention of prerequisites such as confirm or account.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools