{"openapi":"3.1.0","info":{"title":"Stripe Platform (BYOK) API","version":"0.1.0","description":"Stripe Platform (BYOK) lets an AI assistant read your own Stripe Platform data through the Stripe Platform API with a key you supply (restricted API key with read permissions only (starts with rk_live_ or rk_test_)). Read-only: 11 tools (list_events, get_event, list_webhook_endpoints, get_webhook_endpoint, list_exchange_rates, get_exchange_rate, list_country_specs, get_country_spec,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-stripe-platform.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-stripe-platform/docs"},"termsOfService":"https://connectorbay.com/byok-stripe-platform/terms"},"servers":[{"url":"https://byok-stripe-platform.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-stripe-platform/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_events":{"post":{"operationId":"list_events","summary":"List recent account events (such as charge.succeeded) with type, time, API version and request id. Event contents are no","description":"List recent account events (such as charge.succeeded) with type, time, API version and request id. Event contents are not returned; events are kept for 30 days. Works with a restricted key that has read access to this resource only. Use for \"Which webhook events were not delivered successfully\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only events of this type, or a group using a wildcard, for example invoice.* or charge.succeeded.","title":"Type"},"delivery_success":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"False to return only events with at least one failed webhook delivery, true for fully delivered ones.","title":"Delivery Success"},"created_after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only objects created at or after this time, as a Unix timestamp in seconds.","title":"Created After"},"created_before":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only objects created at or before this time, as a Unix timestamp in seconds.","title":"Created Before"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many objects to return (1 to 100).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the id of the last object on the previous page. Use it while has_more is true.","title":"Starting After"}},"title":"list_eventsArguments","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_event":{"post":{"operationId":"get_event","summary":"Get one event by id: type, time, API version, number of pending webhook deliveries and the request that caused it. Event","description":"Get one event by id: type, time, API version, number of pending webhook deliveries and the request that caused it. Event contents are not returned. Works with a restricted key that has read access to this resource only. Use for \"What happened in event evt_1NG8Du2eZvKYlo2CUI79vXWy\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Event id, for example evt_1NG8Du2eZvKYlo2CUI79vXWy.","maxLength":200,"title":"Id","type":"string"}},"required":["id"],"title":"get_eventArguments","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_webhook_endpoints":{"post":{"operationId":"list_webhook_endpoints","summary":"List webhook endpoints with URL, status, subscribed event types and API version. Signing secrets are not returned. Works","description":"List webhook endpoints with URL, status, subscribed event types and API version. Signing secrets are not returned. Works with a restricted key that has read access to this resource only. Use for \"Which webhook endpoints do I have and are they enabled\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many objects to return (1 to 100).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the id of the last object on the previous page. Use it while has_more is true.","title":"Starting After"}},"title":"list_webhook_endpointsArguments","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_webhook_endpoint":{"post":{"operationId":"get_webhook_endpoint","summary":"Get one webhook endpoint by id: URL, status, subscribed events and API version. The signing secret is not returned. Work","description":"Get one webhook endpoint by id: URL, status, subscribed events and API version. The signing secret is not returned. Works with a restricted key that has read access to this resource only. Use for \"Which events does webhook endpoint we_1Mr5jTLkdIwHu7ix send\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"webhook_endpoint":{"description":"Webhook endpoint id, for example we_1Mr5jTLkdIwHu7ix1gXdMLgp.","maxLength":200,"title":"Webhook Endpoint","type":"string"}},"required":["webhook_endpoint"],"title":"get_webhook_endpointArguments","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_exchange_rates":{"post":{"operationId":"list_exchange_rates","summary":"List the exchange rates Stripe uses, one entry per base currency with rates to other currencies. The limit can go up to ","description":"List the exchange rates Stripe uses, one entry per base currency with rates to other currencies. The limit can go up to the number of currencies. Works with a restricted key that has read access to this resource only. Use for \"What is the current EUR to USD exchange rate on Stripe\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many objects to return (1 to 100).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the id of the last object on the previous page. Use it while has_more is true.","title":"Starting After"}},"title":"list_exchange_ratesArguments","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_exchange_rate":{"post":{"operationId":"get_exchange_rate","summary":"Get the exchange rates for one base currency (lowercase three-letter code such as usd) to every other currency. Works wi","description":"Get the exchange rates for one base currency (lowercase three-letter code such as usd) to every other currency. Works with a restricted key that has read access to this resource only. Use for \"How many GBP is one USD according to Stripe\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"rate_id":{"description":"Base currency as a lowercase three-letter code, for example usd.","maxLength":200,"title":"Rate Id","type":"string"}},"required":["rate_id"],"title":"get_exchange_rateArguments","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_country_specs":{"post":{"operationId":"list_country_specs","summary":"List the countries Stripe supports with default currency, supported payment currencies and methods and transfer countrie","description":"List the countries Stripe supports with default currency, supported payment currencies and methods and transfer countries. Works with a restricted key that has read access to this resource only. Use for \"Which countries does Stripe support for payments\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many objects to return (1 to 100).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the id of the last object on the previous page. Use it while has_more is true.","title":"Starting After"}},"title":"list_country_specsArguments","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_country_spec":{"post":{"operationId":"get_country_spec","summary":"Get one country's Stripe specification by two-letter country code: default currency, payment currencies, payment methods","description":"Get one country's Stripe specification by two-letter country code: default currency, payment currencies, payment methods and transfer countries. Works with a restricted key that has read access to this resource only. Use for \"Which payment methods does Stripe support in Germany\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"country":{"description":"Two-letter ISO country code in capitals, for example DE.","maxLength":200,"title":"Country","type":"string"}},"required":["country"],"title":"get_country_specArguments","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_apple_pay_domains":{"post":{"operationId":"list_apple_pay_domains","summary":"List domains registered for Apple Pay on the web with creation time. Works with a restricted key that has read access to","description":"List domains registered for Apple Pay on the web with creation time. Works with a restricted key that has read access to this resource only. Use for \"Which domains are registered for Apple Pay\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"domain_name":{"anyOf":[{"maxLength":253,"type":"string"},{"type":"null"}],"default":null,"description":"Only the entry for this domain name.","title":"Domain Name"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many objects to return (1 to 100).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the id of the last object on the previous page. Use it while has_more is true.","title":"Starting After"}},"title":"list_apple_pay_domainsArguments","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_test_clocks":{"post":{"operationId":"list_test_clocks","summary":"List test clocks (simulated time used to test billing) with frozen time, status and deletion time. Only meaningful with ","description":"List test clocks (simulated time used to test billing) with frozen time, status and deletion time. Only meaningful with a test mode key. Works with a restricted key that has read access to this resource only. Use for \"Which test clocks do I have in test mode\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"How many objects to return (1 to 100).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor for the next page: the id of the last object on the previous page. Use it while has_more is true.","title":"Starting After"}},"title":"list_test_clocksArguments","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_test_clock":{"post":{"operationId":"get_test_clock","summary":"Get one test clock by id: name, status, frozen time and when it is deleted. Works with a restricted key that has read ac","description":"Get one test clock by id: name, status, frozen time and when it is deleted. Works with a restricted key that has read access to this resource only. Use for \"What time is test clock clock_1Mr5jTLkdIwHu7ix frozen at\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"test_clock":{"description":"Test clock id, for example clock_1Mr5jTLkdIwHu7ixqXk7wC8d.","maxLength":200,"title":"Test Clock","type":"string"}},"required":["test_clock"],"title":"get_test_clockArguments","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}}}}