{"openapi":"3.1.0","info":{"title":"Voucherify (BYOK) API","version":"0.1.0","description":"Voucherify (BYOK) lets an AI assistant read your own Voucherify data through the Voucherify API with a key you supply (Voucherify application ID). Read-only: 12 tools (list_campaigns, get_campaign, list_vouchers, get_voucher, list_redemptions, list_customers, list_promotion_tiers, list_loyalty_campaigns, list_orders, list_products, list_rewards, list_validation_rules). The BYOK key travels with...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-voucherify.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-voucherify/docs"},"termsOfService":"https://connectorbay.com/byok-voucherify/terms"},"servers":[{"url":"https://byok-voucherify.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-voucherify/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_campaigns":{"post":{"operationId":"list_campaigns","summary":"List campaigns (discount coupons, gift vouchers, promotions, referral and loyalty programs) with type, status, dates and","description":"List campaigns (discount coupons, gift vouchers, promotions, referral and loyalty programs) with type, status, dates and voucher counts. Use for \"Which Voucherify campaigns are running and how many vouchers does each have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"campaign_type":{"anyOf":[{"enum":["PROMOTION","GIFT_VOUCHERS","REFERRAL_PROGRAM","DISCOUNT_COUPONS","LOYALTY_PROGRAM"],"type":"string"},{"type":"null"}],"default":null,"description":"Only this campaign type.","title":"Campaign Type"},"campaign_status":{"anyOf":[{"enum":["DONE","IN_PROGRESS","FAILED","DRAFT","MODIFYING"],"type":"string"},{"type":"null"}],"default":null,"description":"Only campaigns in this creation status.","title":"Campaign Status"},"order":{"anyOf":[{"enum":["created_at","-created_at","updated_at","-updated_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order; a leading dash means descending.","title":"Order"}},"title":"list_campaignsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_campaign":{"post":{"operationId":"get_campaign","summary":"Get one campaign by its ID or name, with type, validity dates, voucher count, category and status. Use for \"Show the det","description":"Get one campaign by its ID or name, with type, validity dates, voucher count, category and status. Use for \"Show the details of my summer discount campaign\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"campaign_id":{"description":"Campaign ID assigned by Voucherify, or the campaign name.","maxLength":200,"title":"Campaign Id","type":"string"}},"required":["campaign_id"],"title":"get_campaignArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_vouchers":{"post":{"operationId":"list_vouchers","summary":"List vouchers (coupon codes, gift cards, loyalty cards) with code, campaign, type, validity, active flag and redemption ","description":"List vouchers (coupon codes, gift cards, loyalty cards) with code, campaign, type, validity, active flag and redemption counts. Use for \"Which voucher codes belong to the summer campaign\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1 (up to 99).","title":"Page"},"campaign":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only vouchers of the campaign with this exact name.","title":"Campaign"},"campaign_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only vouchers of the campaign with this ID.","title":"Campaign Id"},"category":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only vouchers in this category.","title":"Category"},"customer":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only vouchers held by this customer (Voucherify ID or your source ID).","title":"Customer"},"code":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the voucher with this exact code.","title":"Code"},"order":{"anyOf":[{"enum":["created_at","-created_at","updated_at","-updated_at","code","-code"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order; a leading dash means descending.","title":"Order"}},"title":"list_vouchersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_voucher":{"post":{"operationId":"get_voucher","summary":"Get one voucher by its code with discount type, validity, active flag, gift or loyalty balance and redemption counts. Us","description":"Get one voucher by its code with discount type, validity, active flag, gift or loyalty balance and redemption counts. Use for \"How many times has the code SUMMER10 been redeemed\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"code":{"description":"The voucher code, for example SUMMER10.","maxLength":200,"title":"Code","type":"string"}},"required":["code"],"title":"get_voucherArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_redemptions":{"post":{"operationId":"list_redemptions","summary":"List redemptions of vouchers and promotions, newest first by default, optionally for one campaign, customer or result. U","description":"List redemptions of vouchers and promotions, newest first by default, optionally for one campaign, customer or result. Use for \"What redemptions happened for the summer campaign\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"result":{"anyOf":[{"enum":["SUCCESS","FAILURE"],"type":"string"},{"type":"null"}],"default":null,"description":"Only redemptions with this result: SUCCESS or FAILURE.","title":"Result"},"campaign":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only redemptions originating from the campaign with this name.","title":"Campaign"},"customer":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only redemptions by this customer (Voucherify ID or your source ID).","title":"Customer"},"order":{"anyOf":[{"enum":["created_at","-created_at","id","-id","voucher_code","-voucher_code","customer_id","-customer_id"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order; a leading dash means descending.","title":"Order"}},"title":"list_redemptionsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_customers":{"post":{"operationId":"list_customers","summary":"List customers stored in Voucherify with name, email, source ID, city filter and creation date. Use for \"Find the Vouche","description":"List customers stored in Voucherify with name, email, source ID, city filter and creation date. Use for \"Find the Voucherify customer with the email ada@example.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only the customer with this exact email address.","title":"Email"},"name":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only customers with this name.","title":"Name"},"city":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only customers located in this city.","title":"City"},"segment_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only customers in this segment ID.","title":"Segment Id"},"order":{"anyOf":[{"enum":["created_at","-created_at","updated_at","-updated_at","source_id","-source_id"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order; a leading dash means descending.","title":"Order"}},"title":"list_customersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_promotion_tiers":{"post":{"operationId":"list_promotion_tiers","summary":"List promotion tiers (discount rules inside promotion campaigns) with name, validity, hierarchy and whether they are act","description":"List promotion tiers (discount rules inside promotion campaigns) with name, validity, hierarchy and whether they are active. Use for \"Which promotion tiers are available right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"is_available":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to return only promotion tiers that are available at this moment.","title":"Is Available"},"order":{"anyOf":[{"enum":["created_at","-created_at","updated_at","-updated_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order; a leading dash means descending.","title":"Order"}},"title":"list_promotion_tiersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_loyalty_campaigns":{"post":{"operationId":"list_loyalty_campaigns","summary":"List loyalty program campaigns with status, validity dates and number of loyalty cards. Use for \"What loyalty programs d","description":"List loyalty program campaigns with status, validity dates and number of loyalty cards. Use for \"What loyalty programs do I have in Voucherify\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"order":{"anyOf":[{"enum":["created_at","-created_at","updated_at","-updated_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order; a leading dash means descending.","title":"Order"}},"title":"list_loyalty_campaignsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_orders":{"post":{"operationId":"list_orders","summary":"List orders recorded in Voucherify with status, amounts, discount amounts and customer ID. Use for \"What are the latest ","description":"List orders recorded in Voucherify with status, amounts, discount amounts and customer ID. Use for \"What are the latest orders recorded in Voucherify\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"order":{"anyOf":[{"enum":["created_at","-created_at","updated_at","-updated_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order; a leading dash means descending.","title":"Order"}},"title":"list_ordersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_products":{"post":{"operationId":"list_products","summary":"List products in the Voucherify catalog with name, price (minor units), source ID and creation date. Use for \"Which prod","description":"List products in the Voucherify catalog with name, price (minor units), source ID and creation date. Use for \"Which products are in my Voucherify catalog\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"order":{"anyOf":[{"enum":["created_at","-created_at","updated_at","-updated_at"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order; a leading dash means descending.","title":"Order"}},"title":"list_productsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_rewards":{"post":{"operationId":"list_rewards","summary":"List loyalty and referral rewards with name, type, stock and redeemed counts. Use for \"What rewards can customers redeem","description":"List loyalty and referral rewards with name, type, stock and redeemed counts. Use for \"What rewards can customers redeem\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_rewardsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_validation_rules":{"post":{"operationId":"list_validation_rules","summary":"List validation rules (conditions that decide when a voucher or promotion applies) with name, type and number of assignm","description":"List validation rules (conditions that decide when a voucher or promotion applies) with name, type and number of assignments. Use for \"Which validation rules do I have configured\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many results to return (1 to 100).","title":"Limit"},"page":{"anyOf":[{"maximum":99,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"order":{"anyOf":[{"enum":["created_at","-created_at","updated_at","-updated_at","name","-name"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order; a leading dash means descending.","title":"Order"}},"title":"list_validation_rulesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}