activate_coupon
Switch a coupon code on so subscribers can redeem it again, subject to its own dates and cap. Emits coupon.activated.
Turn a coupon back on. Switching on does not override the code's own rules: it still honours its
starts_at, expires_at and redemption cap, so an activated code can come back with
redeemable: false when it is outside its window or exhausted. Read that field, not active, to
tell a subscriber whether the code will work.
This is the counterpart of deactivate_coupon and the narrow
alternative to update_coupon with active: true: it announces
coupon.activated rather than a generic coupon.updated, so an
automation that cares about codes going live does not have to diff payloads to notice.
Entitlement is checked on the way back on
Requires the Coupons Addon or a Growth plan on the project owner. A
creator whose tier lost coupons is told why the code stays off with
TEAM_TIER_REQUIRED; the code is left as it was.
Re-calling on a code that is already on leaves it unchanged. The event emits on every successful call, so key a consumer on the coupon's state rather than on counting events.
Requires ability
The token behind the MCP session must hold it, or the call is refused with TOKEN_MISSING_ABILITY.
Runs the same action as
The REST endpoint and this tool share one action, so validation, permissions and events are identical.
Fires one event
Delivered to every endpoint subscribed to it once the change is made.
Annotations
A client that honours annotations asks a person before running it. Sending the same arguments twice changes nothing the second time.
Arguments
coupon_id*stringUUID of the coupon to switch on.
What it returns
{ "data": { "id": "4b9d3e08-a1f6-4275-9c83-7e01d6a2f594", "project_id": "7f3d1c92-8b45-4e6a-9d21-5c8e0a4b6f13", "code": "BLACKFRIDAY", "name": "Black Friday 2026", "discount_type": "percentage", "discount_value": "25.0000", "currency": null, "duration": "once", "max_redemptions": 500, "max_redemptions_per_user": 1, "minimum_amount": null, "redemptions": { "count": 137, "remaining": 363, "exhausted": false }, "starts_at": "2026-11-27T00:00:00+00:00", "expires_at": "2026-12-01T00:00:00+00:00", "plan_ids": [], "active": true, "redeemable": true, "created_at": "2026-11-20T09:14:02+00:00" }}The full get_coupon row, with active: true. redeemable is the field
that says whether the code will apply at checkout right now.
How it fails
TEAM_TIER_REQUIREDthe project owner's tier no longer includes coupons. error.context.reason
VALIDATION_FAILEDthe caller is a team member whose role lacks the team's coupon-update
RESOURCE_NOT_FOUNDunknown coupon_id, a coupon on another team's project, one outside the
AUTHENTICATION_REQUIREDno authenticated user on the request.
TOKEN_MISSING_ABILITYtoken lacks project-coupon:update.
How is this guide?
Last updated on