Skip to main content
Glama

create_product

Create an order bump product (role: orderbump): the title, price, image and card copy an order bump shows. Then offer it on a checkout page or event with create_order_bump. Page products are created with their page instead. Mutating.

Input Schema

NameRequiredDescriptionDefault
skuNoSKU of the product.
roleYesMust be `orderbump`: only order bump products are created on their own. A page product is created with its page (create_checkout_page, create_event).
priceNoThe order bump price. Order bumps use a one-time price, which can be pay what you want: recurring prices and payment plans are not available. Defaults to a one-time price of 0 in `usd`.
stockNoAvailable stock of the product.
titleYesProduct title, shown on the order bump card.
fileIdsNoFiles for the product. Available to the customer after purchase.
taxCodeNoIf Stripe Tax is enabled, determines the tax code used when calculating tax. Defaults to your Stripe Tax settings.
featuresNoShort list of what the customer gets, shown above the description on the order bump card. Replaces the whole list; send [] or null to clear. Order bump products only.
imageIdsNoImage file IDs for the product (upload with `upload_file`). The first is shown on the card.
calloutIconNoIcon leading the call out box. Send null to clear. Order bump products only.
calloutTextNoCall out box under the description on the order bump card. HTML: links and inline emphasis are kept, anything else is removed. Send null to clear. Order bump products only.
descriptionNoDescription of the product. Accepts HTML or plain text.
headingTextNoHeading shown above the order bump card, e.g. "Special one time offer". Send null to clear. Order bump products only.
taxBehaviorNoIf Stripe Tax is enabled, determines the behaviour of Stripe Tax. Defaults to your Stripe Tax settings.
fixedTaxRateIdsNoTax Rate IDs applied to this product (at most one). Call `list_tax_rates` to find an existing rate.
callToActionTextNoAccept copy on the order bump card, e.g. "Yes! Add gift wrapping". Send null to clear. Order bump products only.
shortDescriptionNoPlain-text one-liner shown under the title on the order bump card. Send null to clear. Order bump products only.
hasUnlimitedStockNoWhether or not the stock of the product is unlimited. If set to `true`, the `stock` field is ignored.

Output Schema

NameRequiredDescriptionDefault
dataYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / price / properties / reference / description
      Previous value: -"Merchant-facing internal id used in exports and reports (SKU-like). Derived from the price data when omitted, e.g. `price_one_time_fixed_5000`. A price resent by id keeps its stored reference."New value: +"Stable label for this price, sent to exports, Zapier, Google Sheets and webhooks as `priceReference`. Each sale keeps the reference it was bought with, so changing it gives the same price two names in the seller's data. Generated when omitted, and a price resent by id keeps its stored reference. Only send it when the seller asks to set or change the reference: never to match a new amount or name. Don't put an amount in it, since a coupon or a later price change makes the number wrong."
    • changedInput schema / properties / price / properties / reference / example
      Previous value: -"price_one_time_fixed_5000"New value: +"complete-bundle"
    • changedOutput schema / properties / data / properties / prices / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "additionalProperties": false,
      -      "description": "A single price entry on a multi-price product.",
      -      "properties": {
      -        "amount": {
      -          "description": "Price in smallest currency unit (cents).",
      -          "example": 4900,
      -          "type": "number"
      -        },
      -        "badge": {
      -          "description": "Optional short label shown over the price card.",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "badgeIcon": {
      -          "anyOf": [
      -            {
      -              "description": "Icon shown before the badge text.",
      -              "enum": [
      -                "star",
      -                "sparkles",
      -                "fire",
      -                "bolt",
      -                "rocket",
      -                "trophy",
      -                "check",
      -                "x-mark",
      -                "plus",
      -                "arrow-right",
      -                "check-badge",
      -                "check-circle",
      -                "shield-check",
      -                "thumbs-up",
      -                "heart",
      -                "smile",
      -                "light-bulb",
      -                "sun",
      -                "moon",
      -                "gift",
      -                "tag",
      -                "percent",
      -                "dollar",
      -                "banknotes",
      -                "credit-card",
      -                "shopping-bag",
      -                "shopping-cart",
      -                "truck",
      -                "clock",
      -                "calendar",
      -                "bell",
      -                "megaphone",
      -                "trending-up",
      -                "chart",
      -                "refresh",
      -                "lock",
      -                "key",
      -                "ticket",
      -                "users",
      -                "academic-cap",
      -                "book",
      -                "music",
      -                "video",
      -                "document",
      -                "download",
      -                "mobile",
      -                "camera",
      -                "paint-brush",
      -                "puzzle",
      -                "cube",
      -                "globe",
      -                "map-pin",
      -                "storefront",
      -                "tools",
      -                "beaker",
      -                "lifebuoy",
      -                "chat",
      -                "envelope",
      -                "phone",
      -                "cake",
      -                "scale",
      -                "eye"
      -              ],
      -              "example": "star",
      -              "type": "string"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "description": "Optional icon shown before the badge text."
      -        },
      -        "billingType": {
      -          "description": "Billing type. Immutable once the price exists (see the pricing-type identity lock).",
      -          "enum": [
      -            "one_time",
      -            "recurring"
      -          ],
      -          "example": "one_time",
      -          "type": "string"
      -        },
      -        "currency": {
      -          "description": "Lowercase ISO 4217 currency code.",
      -          "example": "usd",
      -          "type": "string"
      -        },
      -        "discountedFromPrice": {
      -          "description": "Original price before discount, in cents.",
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        },
      -        "enabled": {
      -          "description": "Whether this price is selectable by customers.",
      -          "type": "boolean"
      -        },
      -        "hidden": {
      -          "description": "Hide this price. Hidden prices can still be shown using query parameters.",
      -          "type": [
      -            "boolean",
      -            "null"
      -          ]
      -        },
      -        "id": {
      -          "description": "Unique price identifier.",
      -          "example": "507f1f77bcf86cd799439011",
      -          "type": "string"
      -        },
      -        "isDefault": {
      -          "description": "Whether checkout pre-selects this price: the entry `defaultPriceId` names. False on every price when the product has several prices and no default.",
      -          "type": "boolean"
      -        },
      -        "label": {
      -          "description": "Optional seller-facing label (e.g. \"Monthly\", \"Annual\").",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "order": {
      -          "description": "Dashboard display order.",
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        },
      -        "payWhatYouWant": {
      -          "description": "Whether pay-what-you-want pricing is enabled.",
      -          "type": [
      -            "boolean",
      -            "null"
      -          ]
      -        },
      -        "paymentPlan": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "billingCycleAnchorConfig": {
      -                  "anyOf": [
      -                    {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "dayOfMonth": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 31,
      -                              "minimum": 1,
      -                              "type": "number"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ],
      -                          "description": "Day of month the billing cycle is anchored to."
      -                        },
      -                        "enabled": {
      -                          "type": [
      -                            "boolean",
      -                            "null"
      -                          ]
      -                        },
      -                        "month": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 12,
      -                              "minimum": 1,
      -                              "type": "number"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "type": "object"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "interval": {
      -                  "anyOf": [
      -                    {
      -                      "enum": [
      -                        "day",
      -                        "week",
      -                        "month",
      -                        "year"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ],
      -                  "description": "Billing interval (day, week, month, year).",
      -                  "example": "month"
      -                },
      -                "intervalCount": {
      -                  "description": "Number of intervals between billings.",
      -                  "example": 1,
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                },
      -                "planIterations": {
      -                  "description": "Number of billing cycles after which the plan completes.",
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                },
      -                "startDate": {
      -                  "anyOf": [
      -                    {
      -                      "format": "date-time",
      -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      -                      "type": "string"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ],
      -                  "description": "The date on which the subscription begins."
      -                },
      -                "trialPeriodDays": {
      -                  "description": "Trial period in days.",
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                }
      -              },
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "description": "Payment plan configuration — recurring billing that completes after `planIterations` cycles. Never present together with recurring."
      -        },
      -        "pwywSuggestedPrice": {
      -          "description": "Suggested price in cents for PWYW prices.",
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        },
      -        "recurring": {
      -          "anyOf": [
      -            {
      -              "additionalProperties": false,
      -              "properties": {
      -                "billingCycleAnchorConfig": {
      -                  "anyOf": [
      -                    {
      -                      "additionalProperties": false,
      -                      "properties": {
      -                        "dayOfMonth": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 31,
      -                              "minimum": 1,
      -                              "type": "number"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ],
      -                          "description": "Day of month the billing cycle is anchored to."
      -                        },
      -                        "enabled": {
      -                          "type": [
      -                            "boolean",
      -                            "null"
      -                          ]
      -                        },
      -                        "month": {
      -                          "anyOf": [
      -                            {
      -                              "maximum": 12,
      -                              "minimum": 1,
      -                              "type": "number"
      -                            },
      -                            {
      -                              "type": "null"
      -                            }
      -                          ]
      -                        }
      -                      },
      -                      "type": "object"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ]
      -                },
      -                "interval": {
      -                  "anyOf": [
      -                    {
      -                      "enum": [
      -                        "day",
      -                        "week",
      -                        "month",
      -                        "year"
      -                      ],
      -                      "type": "string"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ],
      -                  "description": "Billing interval (day, week, month, year).",
      -                  "example": "month"
      -                },
      -                "intervalCount": {
      -                  "description": "Number of intervals between billings.",
      -                  "example": 1,
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                },
      -                "startDate": {
      -                  "anyOf": [
      -                    {
      -                      "format": "date-time",
      -                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      -                      "type": "string"
      -                    },
      -                    {
      -                      "type": "null"
      -                    }
      -                  ],
      -                  "description": "The date on which the subscription begins."
      -                },
      -                "trialPeriodDays": {
      -                  "description": "Trial period in days.",
      -                  "type": [
      -                    "number",
      -                    "null"
      -                  ]
      -                }
      -              },
      -              "type": "object"
      -            },
      -            {
      -              "type": "null"
      -            }
      -          ],
      -          "description": "Recurring billing configuration. Never present together with paymentPlan."
      -        },
      -        "reference": {
      -          "description": "Merchant-facing internal id used in exports and reports (e.g. `price_one_time_fixed_5000`).",
      -          "type": [
      -            "string",
      -            "null"
      -          ]
      -        },
      -        "setupFee": {
      -          "description": "One-time setup fee in cents.",
      -          "type": [
      -            "number",
      -            "null"
      -          ]
      -        },
      -        "setupFeeMultipliesWithQuantity": {
      -          "type": [
      -            "boolean",
      -            "null"
      -          ]
      -        }
      -      },
      -      "required": [
      -        "amount",
      -        "currency",
      -        "id",
      -        "enabled",
      -        "isDefault",
      -        "billingType"
      -      ],
      -      "type": "object"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "additionalProperties": false,
      +      "description": "A single price entry on a multi-price product.",
      +      "properties": {
      +        "amount": {
      +          "description": "Price in smallest currency unit (cents).",
      +          "example": 4900,
      +          "type": "number"
      +        },
      +        "badge": {
      +          "description": "Optional short label shown over the price card.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "badgeIcon": {
      +          "anyOf": [
      +            {
      +              "description": "Icon shown before the badge text.",
      +              "enum": [
      +                "star",
      +                "sparkles",
      +                "fire",
      +                "bolt",
      +                "rocket",
      +                "trophy",
      +                "check",
      +                "x-mark",
      +                "plus",
      +                "arrow-right",
      +                "check-badge",
      +                "check-circle",
      +                "shield-check",
      +                "thumbs-up",
      +                "heart",
      +                "smile",
      +                "light-bulb",
      +                "sun",
      +                "moon",
      +                "gift",
      +                "tag",
      +                "percent",
      +                "dollar",
      +                "banknotes",
      +                "credit-card",
      +                "shopping-bag",
      +                "shopping-cart",
      +                "truck",
      +                "clock",
      +                "calendar",
      +                "bell",
      +                "megaphone",
      +                "trending-up",
      +                "chart",
      +                "refresh",
      +                "lock",
      +                "key",
      +                "ticket",
      +                "users",
      +                "academic-cap",
      +                "book",
      +                "music",
      +                "video",
      +                "document",
      +                "download",
      +                "mobile",
      +                "camera",
      +                "paint-brush",
      +                "puzzle",
      +                "cube",
      +                "globe",
      +                "map-pin",
      +                "storefront",
      +                "tools",
      +                "beaker",
      +                "lifebuoy",
      +                "chat",
      +                "envelope",
      +                "phone",
      +                "cake",
      +                "scale",
      +                "eye"
      +              ],
      +              "example": "star",
      +              "type": "string"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Optional icon shown before the badge text."
      +        },
      +        "billingType": {
      +          "description": "Billing type. Immutable once the price exists (see the pricing-type identity lock).",
      +          "enum": [
      +            "one_time",
      +            "recurring"
      +          ],
      +          "example": "one_time",
      +          "type": "string"
      +        },
      +        "currency": {
      +          "description": "Lowercase ISO 4217 currency code.",
      +          "example": "usd",
      +          "type": "string"
      +        },
      +        "discountedFromPrice": {
      +          "description": "Original price before discount, in cents.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "enabled": {
      +          "description": "Whether this price is selectable by customers.",
      +          "type": "boolean"
      +        },
      +        "hidden": {
      +          "description": "Hide this price. Hidden prices can still be shown using query parameters.",
      +          "type": [
      +            "boolean",
      +            "null"
      +          ]
      +        },
      +        "id": {
      +          "description": "Unique price identifier.",
      +          "example": "507f1f77bcf86cd799439011",
      +          "type": "string"
      +        },
      +        "isDefault": {
      +          "description": "Whether checkout pre-selects this price: the entry `defaultPriceId` names. False on every price when the product has several prices and no default.",
      +          "type": "boolean"
      +        },
      +        "label": {
      +          "description": "Optional seller-facing label (e.g. \"Monthly\", \"Annual\").",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "order": {
      +          "description": "Dashboard display order.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "payWhatYouWant": {
      +          "description": "Whether pay-what-you-want pricing is enabled.",
      +          "type": [
      +            "boolean",
      +            "null"
      +          ]
      +        },
      +        "paymentPlan": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": false,
      +              "properties": {
      +                "billingCycleAnchorConfig": {
      +                  "anyOf": [
      +                    {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "dayOfMonth": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 31,
      +                              "minimum": 1,
      +                              "type": "number"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ],
      +                          "description": "Day of month the billing cycle is anchored to."
      +                        },
      +                        "enabled": {
      +                          "type": [
      +                            "boolean",
      +                            "null"
      +                          ]
      +                        },
      +                        "month": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 12,
      +                              "minimum": 1,
      +                              "type": "number"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "interval": {
      +                  "anyOf": [
      +                    {
      +                      "enum": [
      +                        "day",
      +                        "week",
      +                        "month",
      +                        "year"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ],
      +                  "description": "Billing interval (day, week, month, year).",
      +                  "example": "month"
      +                },
      +                "intervalCount": {
      +                  "description": "Number of intervals between billings.",
      +                  "example": 1,
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "planIterations": {
      +                  "description": "Number of billing cycles after which the plan completes.",
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "startDate": {
      +                  "anyOf": [
      +                    {
      +                      "format": "date-time",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ],
      +                  "description": "The date on which the subscription begins."
      +                },
      +                "trialPeriodDays": {
      +                  "description": "Trial period in days.",
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Payment plan configuration — recurring billing that completes after `planIterations` cycles. Never present together with recurring."
      +        },
      +        "pwywSuggestedPrice": {
      +          "description": "Suggested price in cents for PWYW prices.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "recurring": {
      +          "anyOf": [
      +            {
      +              "additionalProperties": false,
      +              "properties": {
      +                "billingCycleAnchorConfig": {
      +                  "anyOf": [
      +                    {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "dayOfMonth": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 31,
      +                              "minimum": 1,
      +                              "type": "number"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ],
      +                          "description": "Day of month the billing cycle is anchored to."
      +                        },
      +                        "enabled": {
      +                          "type": [
      +                            "boolean",
      +                            "null"
      +                          ]
      +                        },
      +                        "month": {
      +                          "anyOf": [
      +                            {
      +                              "maximum": 12,
      +                              "minimum": 1,
      +                              "type": "number"
      +                            },
      +                            {
      +                              "type": "null"
      +                            }
      +                          ]
      +                        }
      +                      },
      +                      "type": "object"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ]
      +                },
      +                "interval": {
      +                  "anyOf": [
      +                    {
      +                      "enum": [
      +                        "day",
      +                        "week",
      +                        "month",
      +                        "year"
      +                      ],
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ],
      +                  "description": "Billing interval (day, week, month, year).",
      +                  "example": "month"
      +                },
      +                "intervalCount": {
      +                  "description": "Number of intervals between billings.",
      +                  "example": 1,
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "startDate": {
      +                  "anyOf": [
      +                    {
      +                      "format": "date-time",
      +                      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      +                      "type": "string"
      +                    },
      +                    {
      +                      "type": "null"
      +                    }
      +                  ],
      +                  "description": "The date on which the subscription begins."
      +                },
      +                "trialPeriodDays": {
      +                  "description": "Trial period in days.",
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "type": "object"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ],
      +          "description": "Recurring billing configuration. Never present together with paymentPlan."
      +        },
      +        "reference": {
      +          "description": "Stable label for this price, sent to exports, Zapier, Google Sheets and webhooks as `priceReference`. A generated reference can contain the amount the price was created with, such as `price_one_time_fixed_5000`. It is not updated when the amount changes, and does not need to be.",
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "setupFee": {
      +          "description": "One-time setup fee in cents.",
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "setupFeeMultipliesWithQuantity": {
      +          "type": [
      +            "boolean",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "amount",
      +        "currency",
      +        "id",
      +        "enabled",
      +        "isDefault",
      +        "billingType"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  2. Changed2 schema fields changed
    • changedInput schema / properties / price / properties / paymentPlan / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "billingCycleAnchorConfig": {
      -        "anyOf": [
      -          {
      -            "properties": {
      -              "dayOfMonth": {
      -                "anyOf": [
      -                  {
      -                    "maximum": 31,
      -                    "minimum": 1,
      -                    "type": "number"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ],
      -                "description": "The first billing period will be prorated based on the remaining days in the month. Defaults to `1`.",
      -                "example": 1
      -              },
      -              "enabled": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "month": {
      -                "anyOf": [
      -                  {
      -                    "maximum": 12,
      -                    "minimum": 1,
      -                    "type": "number"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              }
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "interval": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "day",
      -              "week",
      -              "month",
      -              "year"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Billing interval for subscriptions.",
      -        "example": "month"
      -      },
      -      "intervalCount": {
      -        "anyOf": [
      -          {
      -            "minimum": 1,
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Number of intervals between billings.",
      -        "example": 1
      -      },
      -      "planIterations": {
      -        "description": "The number of times a subscription renews. After set number of renewals the payment plan is complete.",
      -        "example": 3,
      -        "minimum": 1,
      -        "type": "number"
      -      },
      -      "startDate": {
      -        "anyOf": [
      -          {
      -            "format": "date-time",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The date on which the subscription begins.",
      -        "example": "2026-02-25T06:40:09.463Z"
      -      },
      -      "trialPeriodDays": {
      -        "anyOf": [
      -          {
      -            "minimum": 0,
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Trial period in days for subscriptions."
      -      }
      -    },
      -    "required": [
      -      "planIterations"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "billingCycleAnchorConfig": {
      +        "anyOf": [
      +          {
      +            "properties": {
      +              "dayOfMonth": {
      +                "anyOf": [
      +                  {
      +                    "maximum": 31,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ],
      +                "description": "Day of the month subscriptions renew on. Renewals happen at 00:00 UTC. Customers who subscribe between renewal days pay a prorated amount for their first period. Customers who subscribe in the first 24 hours of the renewal day (00:00 to 24:00 UTC) are backdated to 00:00 and pay the full price. The full-price rule applies to subscriptions billed every month or every year, not payment plans. Defaults to `1`.",
      +                "example": 1
      +              },
      +              "enabled": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "month": {
      +                "anyOf": [
      +                  {
      +                    "maximum": 12,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              }
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "interval": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "day",
      +              "week",
      +              "month",
      +              "year"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Billing interval for subscriptions.",
      +        "example": "month"
      +      },
      +      "intervalCount": {
      +        "anyOf": [
      +          {
      +            "minimum": 1,
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Number of intervals between billings.",
      +        "example": 1
      +      },
      +      "planIterations": {
      +        "description": "The number of times a subscription renews. After set number of renewals the payment plan is complete.",
      +        "example": 3,
      +        "minimum": 1,
      +        "type": "number"
      +      },
      +      "startDate": {
      +        "anyOf": [
      +          {
      +            "format": "date-time",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The date on which the subscription begins.",
      +        "example": "2026-02-25T06:40:09.463Z"
      +      },
      +      "trialPeriodDays": {
      +        "anyOf": [
      +          {
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Trial period in days for subscriptions."
      +      }
      +    },
      +    "required": [
      +      "planIterations"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedInput schema / properties / price / properties / recurring / anyOf
      Previous value: -[
      -  {
      -    "properties": {
      -      "billingCycleAnchorConfig": {
      -        "anyOf": [
      -          {
      -            "properties": {
      -              "dayOfMonth": {
      -                "anyOf": [
      -                  {
      -                    "maximum": 31,
      -                    "minimum": 1,
      -                    "type": "number"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ],
      -                "description": "The first billing period will be prorated based on the remaining days in the month. Defaults to `1`.",
      -                "example": 1
      -              },
      -              "enabled": {
      -                "type": [
      -                  "boolean",
      -                  "null"
      -                ]
      -              },
      -              "month": {
      -                "anyOf": [
      -                  {
      -                    "maximum": 12,
      -                    "minimum": 1,
      -                    "type": "number"
      -                  },
      -                  {
      -                    "type": "null"
      -                  }
      -                ]
      -              }
      -            },
      -            "type": "object"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ]
      -      },
      -      "interval": {
      -        "anyOf": [
      -          {
      -            "enum": [
      -              "day",
      -              "week",
      -              "month",
      -              "year"
      -            ],
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Billing interval for subscriptions.",
      -        "example": "month"
      -      },
      -      "intervalCount": {
      -        "anyOf": [
      -          {
      -            "minimum": 1,
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Number of intervals between billings.",
      -        "example": 1
      -      },
      -      "startDate": {
      -        "anyOf": [
      -          {
      -            "format": "date-time",
      -            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      -            "type": "string"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "The date on which the subscription begins.",
      -        "example": "2026-02-25T06:40:09.463Z"
      -      },
      -      "trialPeriodDays": {
      -        "anyOf": [
      -          {
      -            "minimum": 0,
      -            "type": "number"
      -          },
      -          {
      -            "type": "null"
      -          }
      -        ],
      -        "description": "Trial period in days for subscriptions."
      -      }
      -    },
      -    "type": "object"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "properties": {
      +      "billingCycleAnchorConfig": {
      +        "anyOf": [
      +          {
      +            "properties": {
      +              "dayOfMonth": {
      +                "anyOf": [
      +                  {
      +                    "maximum": 31,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ],
      +                "description": "Day of the month subscriptions renew on. Renewals happen at 00:00 UTC. Customers who subscribe between renewal days pay a prorated amount for their first period. Customers who subscribe in the first 24 hours of the renewal day (00:00 to 24:00 UTC) are backdated to 00:00 and pay the full price. The full-price rule applies to subscriptions billed every month or every year, not payment plans. Defaults to `1`.",
      +                "example": 1
      +              },
      +              "enabled": {
      +                "type": [
      +                  "boolean",
      +                  "null"
      +                ]
      +              },
      +              "month": {
      +                "anyOf": [
      +                  {
      +                    "maximum": 12,
      +                    "minimum": 1,
      +                    "type": "number"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              }
      +            },
      +            "type": "object"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "interval": {
      +        "anyOf": [
      +          {
      +            "enum": [
      +              "day",
      +              "week",
      +              "month",
      +              "year"
      +            ],
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Billing interval for subscriptions.",
      +        "example": "month"
      +      },
      +      "intervalCount": {
      +        "anyOf": [
      +          {
      +            "minimum": 1,
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Number of intervals between billings.",
      +        "example": 1
      +      },
      +      "startDate": {
      +        "anyOf": [
      +          {
      +            "format": "date-time",
      +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "The date on which the subscription begins.",
      +        "example": "2026-02-25T06:40:09.463Z"
      +      },
      +      "trialPeriodDays": {
      +        "anyOf": [
      +          {
      +            "minimum": 0,
      +            "type": "number"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ],
      +        "description": "Trial period in days for subscriptions."
      +      }
      +    },
      +    "type": "object"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
  3. Added

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and openWorldHint=false, so 'Mutating.' is largely redundant, but the description adds real value by disclosing scope (only order-bump products can be created standalone) and the required follow-up step with create_order_bump. It does not cover failure modes or what happens if the follow-up is skipped, so it stops short of a 5.

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?

Three sentences, each load-bearing: what it creates, what to call next, and what it does not cover. The scope constraint is front-loaded before the sibling routing.

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

Completeness4/5

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

With an output schema, full param coverage and annotations, the description only needs to establish scope and sequencing, which it does. The only residual gap is that it doesn't hint at the two required fields (role, title), though the schema marks them.

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 100% across 18 parameters, so the schema carries the semantics; the description only summarizes that title, price, image and card copy are set here. It adds no field-level guidance beyond that, which is the baseline expectation when the schema is this complete.

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?

Opens with a specific verb and a narrow, precisely-qualified resource: 'Create an order bump product (`role: orderbump`)'. It immediately names what the product consists of (title, price, image, card copy) and explicitly excludes page products, so an agent can distinguish it from create_checkout_page/create_event without opening a 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 the full routing picture: use this for order bump products, use the page tools for page products, then call create_order_bump to actually offer it on a checkout page or event. Both the when and the when-not are stated with named alternatives.

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