{"openapi":"3.1.0","info":{"title":"Stripe (BYOK) API","version":"0.1.0","description":"Stripe (BYOK) lets an AI assistant read your own Stripe data through the Stripe API with a key you supply (restricted API key with read permissions only (starts with rk_live_ or rk_test_)). Read-only: 8 tools (get_balance, list_balance_transactions, list_charges, list_customers, list_invoices, list_subscriptions, list_payouts, list_products). The BYOK key travels with each request, is used for...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-stripe.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-stripe/docs"},"termsOfService":"https://connectorbay.com/byok-stripe/terms"},"servers":[{"url":"https://byok-stripe.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-stripe/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/get_balance":{"post":{"operationId":"get_balance","summary":"Show the account balance: available and pending amounts per currency (amounts are in the smallest currency unit, for exa","description":"Show the account balance: available and pending amounts per currency (amounts are in the smallest currency unit, for example cents). Use a restricted key with read permissions only. Use for \"What is my current Stripe balance\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_balanceArguments","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_balance_transactions":{"post":{"operationId":"list_balance_transactions","summary":"List transactions that changed the balance (charges, refunds, fees, payouts), newest first, with gross amount, fee and n","description":"List transactions that changed the balance (charges, refunds, fees, payouts), newest first, with gross amount, fee and net. Amounts are in the smallest currency unit. Use for \"What fees did Stripe take on my latest transactions\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only transactions of this type, for example charge, refund, payout, stripe_fee, transfer or adjustment.","title":"Type"},"payout":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only transactions paid out in this payout id (automatic payouts only), for example po_1OaFDbEcg9tTZuTgNYmX0PKB.","title":"Payout"},"currency":{"anyOf":[{"maxLength":3,"type":"string"},{"type":"null"}],"default":null,"description":"Only this currency, as a lowercase three-letter code such as usd.","title":"Currency"},"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 transaction on the previous page. Use it while has_more is true.","title":"Starting After"}},"title":"list_balance_transactionsArguments","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_charges":{"post":{"operationId":"list_charges","summary":"List charges (card and other payments), newest first, with amount, refunded amount, status, customer and receipt link. A","description":"List charges (card and other payments), newest first, with amount, refunded amount, status, customer and receipt link. Amounts are in the smallest currency unit. Use for \"Which payments succeeded on Stripe this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only charges of this customer id, for example cus_NffrFeUfNV2Hib.","title":"Customer"},"payment_intent":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only charges created by this PaymentIntent id.","title":"Payment Intent"},"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 charge on the previous page. Use it while has_more is true.","title":"Starting After"}},"title":"list_chargesArguments","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, newest first, with name, email, creation date, currency and delinquent flag; can filter by exact email. ","description":"List customers, newest first, with name, email, creation date, currency and delinquent flag; can filter by exact email. Use for \"Find the Stripe customer with email jenny@example.com\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"email":{"anyOf":[{"maxLength":512,"type":"string"},{"type":"null"}],"default":null,"description":"Only customers with exactly this email address (case-sensitive, up to 512 characters).","title":"Email"},"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 customer on the previous page. Use it while has_more is true.","title":"Starting After"}},"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_invoices":{"post":{"operationId":"list_invoices","summary":"List invoices, newest first, with number, status, customer, amounts due, paid and remaining, and due date. Amounts are i","description":"List invoices, newest first, with number, status, customer, amounts due, paid and remaining, and due date. Amounts are in the smallest currency unit. Use for \"Which Stripe invoices are still open\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["draft","open","paid","uncollectible","void"],"type":"string"},{"type":"null"}],"default":null,"description":"Only invoices with this status.","title":"Status"},"customer":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only invoices of this customer id.","title":"Customer"},"subscription":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only invoices of this subscription id, for example sub_1MowQVLkdIwHu7ixeRlqHVzs.","title":"Subscription"},"collection_method":{"anyOf":[{"enum":["charge_automatically","send_invoice"],"type":"string"},{"type":"null"}],"default":null,"description":"Only invoices collected this way.","title":"Collection Method"},"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 invoice on the previous page. Use it while has_more is true.","title":"Starting After"}},"title":"list_invoicesArguments","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_subscriptions":{"post":{"operationId":"list_subscriptions","summary":"List subscriptions (not canceled ones unless asked) with status, customer, start date, cancellation flags and the subscr","description":"List subscriptions (not canceled ones unless asked) with status, customer, start date, cancellation flags and the subscribed items with their prices. Use for \"Which customers have an active Stripe subscription\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["all","canceled","ended"],"type":"string"},{"type":"null"}],"default":null,"description":"Which subscriptions: canceled lists canceled ones, ended lists canceled and expired ones, all lists every status. Omit for those not canceled.","title":"Status"},"customer":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only subscriptions of this customer id.","title":"Customer"},"price":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only subscriptions containing this recurring price id.","title":"Price"},"collection_method":{"anyOf":[{"enum":["charge_automatically","send_invoice"],"type":"string"},{"type":"null"}],"default":null,"description":"Only subscriptions collected this way.","title":"Collection Method"},"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 subscription on the previous page. Use it while has_more is true.","title":"Starting After"}},"title":"list_subscriptionsArguments","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_payouts":{"post":{"operationId":"list_payouts","summary":"List payouts from Stripe to a bank account, newest first, with amount, status, method and arrival date. Amounts are in t","description":"List payouts from Stripe to a bank account, newest first, with amount, status, method and arrival date. Amounts are in the smallest currency unit. Use for \"When is my next Stripe payout arriving\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["pending","paid","failed","canceled"],"type":"string"},{"type":"null"}],"default":null,"description":"Only payouts with this status.","title":"Status"},"destination":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only payouts sent to this external account id.","title":"Destination"},"arrival_after":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only payouts expected to arrive at or after this time, as a Unix timestamp in seconds.","title":"Arrival After"},"arrival_before":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only payouts expected to arrive at or before this time, as a Unix timestamp in seconds.","title":"Arrival Before"},"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 payout on the previous page. Use it while has_more is true.","title":"Starting After"}},"title":"list_payoutsArguments","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 catalog, newest first, with name, description, active flag, default price id and last update. Use f","description":"List products in the catalog, newest first, with name, description, active flag, default price id and last update. Use for \"What products do I sell on Stripe\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for active products only, false for inactive ones only; omit for both.","title":"Active"},"shippable":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for physical (shippable) products only.","title":"Shippable"},"url":{"anyOf":[{"maxLength":500,"type":"string"},{"type":"null"}],"default":null,"description":"Only products with exactly this url.","title":"Url"},"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 product on the previous page. Use it while has_more is true.","title":"Starting After"}},"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}}}}