{"openapi":"3.1.0","info":{"title":"Stripe Billing (BYOK) API","version":"0.1.0","description":"Stripe Billing (BYOK) lets an AI assistant read your own Stripe Billing data through the Stripe Billing API with a key you supply (restricted API key with read permissions only (starts with rk_live_ or rk_test_)). Read-only: 12 tools (list_subscription_schedules, get_subscription_schedule, list_subscription_items, list_credit_notes, list_billing_meters, get_meter_event_summaries,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-stripe-billing.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-stripe-billing/docs"},"termsOfService":"https://connectorbay.com/byok-stripe-billing/terms"},"servers":[{"url":"https://byok-stripe-billing.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-stripe-billing/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_subscription_schedules":{"post":{"operationId":"list_subscription_schedules","summary":"List subscription schedules (planned changes to subscriptions over time) with status, end behavior and the current phase","description":"List subscription schedules (planned changes to subscriptions over time) with status, end behavior and the current phase window. Dates are Unix seconds. Works with a restricted key that has read access to this resource only. Use for \"Which subscription schedules have not started yet\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only objects of this customer id, for example cus_NffrFeUfNV2Hib.","title":"Customer"},"scheduled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to return only schedules that have not started yet.","title":"Scheduled"},"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_subscription_schedulesArguments","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_subscription_schedule":{"post":{"operationId":"get_subscription_schedule","summary":"Get one subscription schedule by id: status, end behavior, linked subscription and current phase dates. Works with a res","description":"Get one subscription schedule by id: status, end behavior, linked subscription and current phase dates. Works with a restricted key that has read access to this resource only. Use for \"What is the state of subscription schedule sub_sched_1MowQVLkdIwHu7ixzQQJHyVA\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"schedule":{"description":"Subscription schedule id, for example sub_sched_1MowQVLkdIwHu7ixzQQJHyVA.","maxLength":200,"title":"Schedule","type":"string"}},"required":["schedule"],"title":"get_subscription_scheduleArguments","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_subscription_items":{"post":{"operationId":"list_subscription_items","summary":"List the items (price and quantity lines) of one subscription, with billing period dates and the price's amount and curr","description":"List the items (price and quantity lines) of one subscription, with billing period dates and the price's amount and currency. Amounts are in the smallest currency unit. Works with a restricted key that has read access to this resource only. Use for \"What items are on subscription sub_1MowQVLkdIwHu7ixeRlqHVzs\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subscription":{"description":"Id of the subscription whose items to list, for example sub_1MowQVLkdIwHu7ixeRlqHVzs.","maxLength":100,"title":"Subscription","type":"string"},"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"}},"required":["subscription"],"title":"list_subscription_itemsArguments","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_credit_notes":{"post":{"operationId":"list_credit_notes","summary":"List credit notes issued against invoices with amount, currency, reason, type and status. Amounts are in the smallest cu","description":"List credit notes issued against invoices with amount, currency, reason, type and status. Amounts are in the smallest currency unit. Works with a restricted key that has read access to this resource only. Use for \"Which credit notes did I issue recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only objects of this customer id, for example cus_NffrFeUfNV2Hib.","title":"Customer"},"invoice":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only credit notes for this invoice id, for example in_1MtHbELkdIwHu7ixl4OzzPMv.","title":"Invoice"},"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_credit_notesArguments","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_billing_meters":{"post":{"operationId":"list_billing_meters","summary":"List usage meters for usage-based billing with event name, aggregation formula, status and time window. Works with a res","description":"List usage meters for usage-based billing with event name, aggregation formula, status and time window. Works with a restricted key that has read access to this resource only. Use for \"Which billing meters are active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["active","inactive"],"type":"string"},{"type":"null"}],"default":null,"description":"Only meters with this status: active or inactive.","title":"Status"},"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_billing_metersArguments","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_meter_event_summaries":{"post":{"operationId":"get_meter_event_summaries","summary":"Get aggregated usage for one meter and one customer between two timestamps, optionally split by day or hour. Works with ","description":"Get aggregated usage for one meter and one customer between two timestamps, optionally split by day or hour. Works with a restricted key that has read access to this resource only. Use for \"How much usage did customer cus_NffrFeUfNV2Hib record on meter mtr_test_61Qz in January\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Billing meter id, for example mtr_test_61Qz2yYt6mxJpEwDO41AUtI0bzBSMm8y.","maxLength":200,"title":"Id","type":"string"},"customer":{"description":"Customer id whose usage to aggregate, for example cus_NffrFeUfNV2Hib.","maxLength":100,"title":"Customer","type":"string"},"start_time":{"description":"Start of the window as a Unix timestamp in seconds (inclusive); must fall on a minute boundary.","minimum":0,"title":"Start Time","type":"integer"},"end_time":{"description":"End of the window as a Unix timestamp in seconds (exclusive); must fall on a minute boundary.","minimum":0,"title":"End Time","type":"integer"},"value_grouping_window":{"anyOf":[{"enum":["day","hour"],"type":"string"},{"type":"null"}],"default":null,"description":"Split the summaries by day or hour; without it one summary covers the whole window.","title":"Value Grouping Window"},"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"}},"required":["id","customer","start_time","end_time"],"title":"get_meter_event_summariesArguments","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_credit_grants":{"post":{"operationId":"list_credit_grants","summary":"List prepaid or promotional billing credit grants with category, monetary amount, priority and expiry. Works with a rest","description":"List prepaid or promotional billing credit grants with category, monetary amount, priority and expiry. Works with a restricted key that has read access to this resource only. Use for \"What billing credit grants have I given out\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only objects of this customer id, for example cus_NffrFeUfNV2Hib.","title":"Customer"},"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_credit_grantsArguments","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_billing_alerts":{"post":{"operationId":"list_billing_alerts","summary":"List usage alerts that fire when a meter passes a threshold, with their status and threshold. Works with a restricted ke","description":"List usage alerts that fire when a meter passes a threshold, with their status and threshold. Works with a restricted key that has read access to this resource only. Use for \"Which usage alerts are active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"alert_type":{"anyOf":[{"const":"usage_threshold","type":"string"},{"type":"null"}],"default":null,"description":"Only alerts of this type (currently usage_threshold).","title":"Alert Type"},"meter":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only alerts for this meter id.","title":"Meter"},"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_billing_alertsArguments","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_portal_configurations":{"post":{"operationId":"list_portal_configurations","summary":"List customer portal configurations: name, whether active or default, return URL and login page setting. Works with a re","description":"List customer portal configurations: name, whether active or default, return URL and login page setting. Works with a restricted key that has read access to this resource only. Use for \"Which customer portal configuration is the default\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for active configurations only, false for inactive ones.","title":"Active"},"is_default":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for the default configuration only, false for the others.","title":"Is Default"},"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_portal_configurationsArguments","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_invoice_items":{"post":{"operationId":"list_invoice_items","summary":"List invoice line items (one-off charges and prorations) with amount, currency, quantity and the invoice they are attach","description":"List invoice line items (one-off charges and prorations) with amount, currency, quantity and the invoice they are attached to. Amounts are in the smallest currency unit. Works with a restricted key that has read access to this resource only. Use for \"Which pending invoice items does customer cus_NffrFeUfNV2Hib have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only objects of this customer id, for example cus_NffrFeUfNV2Hib.","title":"Customer"},"invoice":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only items attached to this invoice id.","title":"Invoice"},"pending":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True to return only pending items that are not yet on an invoice.","title":"Pending"},"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_invoice_itemsArguments","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_quotes":{"post":{"operationId":"list_quotes","summary":"List sales quotes with status, totals, currency, expiry and the invoice or subscription they produced. Amounts are in th","description":"List sales quotes with status, totals, currency, expiry and the invoice or subscription they produced. Amounts are in the smallest currency unit. Works with a restricted key that has read access to this resource only. Use for \"Which quotes are still open\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"customer":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only objects of this customer id, for example cus_NffrFeUfNV2Hib.","title":"Customer"},"status":{"anyOf":[{"enum":["accepted","canceled","draft","open"],"type":"string"},{"type":"null"}],"default":null,"description":"Only quotes in this status.","title":"Status"},"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_quotesArguments","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_invoice_rendering_templates":{"post":{"operationId":"list_invoice_rendering_templates","summary":"List invoice rendering templates (layout versions used for invoice PDFs) with nickname, version and status. Works with a","description":"List invoice rendering templates (layout versions used for invoice PDFs) with nickname, version and status. Works with a restricted key that has read access to this resource only. Use for \"Which invoice templates do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["active","archived"],"type":"string"},{"type":"null"}],"default":null,"description":"Only templates in this status.","title":"Status"},"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_invoice_rendering_templatesArguments","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}}}}