post_v1_marketing_promos_code_redeem
Redeems the promo for the caller's org, crediting the discount value to its wallet through the finance ledger.
Redeems the promo for the caller's org, crediting the discount value to its wallet through the finance ledger. Three guards run under one lock so the cap cannot be raced past: the fleet-wide redemption cap, one redemption per org, and one per payment instrument.
It is IDEMPOTENT: an org that already redeemed gets its original redemption back with alreadyRedeemed true and is not credited twice.
| Tool | post_v1_marketing_promos_code_redeem |
| Door | https://api.hanzo.ai/v1/mcp |
| Method | tools/call (JSON-RPC 2.0) |
| Arguments | 4 |
| Operation | POST /v1/marketing/promos/{code}/redeem |
| Product | cloud |
Arguments
| Field | Type | Required | Default | Values | Description |
|---|---|---|---|---|---|
code | string | — | — | — | Code is the promo code from the path. |
instrument | string | — | — | — | Instrument identifies the payment method. It is the anti-farming key: one redemption per instrument, fleet-wide. |
plan | string | — | — | — | Plan is the plan being redeemed against: pro, max or team. |
seats | integer | — | — | — | Seats is the Team seat count; 0 means 1. Seats beyond the promo's teamSeatCap bill at list. |
tools/list declares a type and a description for each field and nothing further. A — means neither the door nor that operation constrains the field.
Call it
A tools/call carries every argument in one flat object — nothing binds to a path or a query string. Nothing above is required, so every declared argument is shown rather than a guess at which matter.
curl -X POST https://api.hanzo.ai/v1/mcp \
-H "Authorization: Bearer $HANZO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "post_v1_marketing_promos_code_redeem",
"arguments": {
"code": "<code>",
"instrument": "<instrument>",
"plan": "<plan>",
"seats": 0
}
}
}'Values are the operation's own defaults and enumerated values where it declares them, and a <placeholder> where neither source declares one. seats holds a stand-in that cannot be spelled that way — JSON gives a number, a boolean and a timestamp no placeholder form — so that value is this page's, not the API's. Neither the door nor the operation declares one. tools/list needs no credential; tools/call does — called without one the door answers HTTP 200 with a JSON-RPC result whose isError is set and whose text says what was missing. How to get a key →
The operation behind it
| Operation | Route | Product | Summary |
|---|---|---|---|
cloud_post_v1_marketing_promos_code_redeem | POST /v1/marketing/promos/{code}/redeem | cloud | Redeems the promo for the caller's org, crediting the discount value to its wallet… |
The same capability over plain HTTP is in the cloud API reference, on https://api.hanzo.ai.
All 833 tools · The door · API reference
Generated from tools/list on https://api.hanzo.ai/v1/mcp — 833 tools captured 2026-08-01 (this build read the vendored copy; the door was unreachable).
How is this guide?