stripe_catalog
The catalogue: products, prices, coupons, promotion codes.
⚠️ A Stripe price is immutable on its amount. "Change the price" means
creating a NEW price and deactivating the old one — update_price only
touches active, metadata and nickname. Say that rather than
appearing to edit an amount.
A coupon is the discount RULE (percent_off/amount_off, how long it applies); a promotion code is the TEXT a customer actually types at checkout, and always points at one coupon. Create the coupon first, then one or more promotion codes for it — several codes ("LAUNCH20", "PARTNER20") can share the same underlying coupon/discount.
Deleting a product, price or coupon is not available here (and a Coupon
has no active flag to toggle); revoke a promotion code instead
(update_promotion_code, active=false) — the redemption rule stays on
file but nothing more can be redeemed with it.
⚠️ Verified live 2026-08-23: a promotion code's expires_at cannot be
LATER than its coupon's redeem_by — Stripe rejects it outright,
naming both timestamps. And on a promotion code object, the coupon it
applies is under promotion.coupon (with promotion.type == "coupon"),
NOT a top-level coupon field — that flat shape was retired.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "stripe_catalog"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| op | No | "list_products" (default) and the other fifteen verbs. | list_products |
| _org | No | Org (id) de CET APPEL. `oto_list_orgs()`. | |
| code | No | "list_promotion_codes" filter; on "create_promotion_code", the literal text the customer types (omit to let Stripe generate one). | |
| name | No | REQUIRED by "create_product". On "create_coupon"/"update_coupon", what the customer sees on their invoice (optional). | |
| limit | No | ||
| _group | No | Équipe (id) de CET APPEL, sous son org parente. | |
| active | No | filter on lists; on "update_product"/"update_price", `active=false` retires it from sale without deleting anything; on "update_promotion_code", `active=false` revokes the code. | |
| _run_id | No | OBLIGATOIRE à chaque appel dès `run_start` ou `data_claim_next` : sans lui, l'écriture sur une ligne réservée est refusée. Hérité seulement si le serveur tient un run actif — n'y compte pas. | |
| _project | No | Projet (id) de CET APPEL — jeton PRIMAIRE. `oto_project(op='list')`. | |
| currency | No | ||
| duration | No | REQUIRED by "create_coupon" — "once" | "repeating" | "forever". | |
| metadata | No | ||
| price_id | No | REQUIRED by "get_price"/"update_price". | |
| tax_code | No | on "create_product"/"update_product" — e.g. "txcd_10000000" (general services). Needed before a payment link can be created on accounts eligible for managed payments (verified live). | |
| _instance | No | Instance de connecteur PRÉCISE (un credential exact). `oto_instance(op='list')`. | |
| coupon_id | No | REQUIRED by "get_coupon"/"update_coupon", and by "create_promotion_code" (the discount rule the new code applies). | |
| redeem_by | No | "create_coupon" — Unix timestamp after which the coupon itself can no longer be attached to a new subscription/order. | |
| amount_off | No | ||
| expires_at | No | "create_promotion_code" — Unix timestamp after which this CODE stops working (the coupon behind it can outlive it). | |
| product_id | No | REQUIRED by "get_product"/"update_product"/"create_price"; filters "list_prices". | |
| customer_id | No | "create_promotion_code" — restricts the code to one customer (omit for account-wide). | |
| description | No | ||
| percent_off | No | ||
| unit_amount | No | "create_price", in cents. currency: "create_price", and "create_coupon" when paired with `amount_off`. | |
| restrictions | No | "create_promotion_code" — e.g. `{"first_time_transaction": true}` or `{"minimum_amount": 5000, "minimum_amount_currency": "eur"}`. | |
| starting_after | No | ||
| max_redemptions | No | "create_coupon"/"create_promotion_code" — caps total uses. | |
| promotion_code_id | No | REQUIRED by "get_promotion_code"/"update_promotion_code". | |
| duration_in_months | No | "create_coupon", REQUIRED when `duration="repeating"`. | |
| recurring_interval | No | "create_price" — omit for a one-off price. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |