{"openapi":"3.1.0","info":{"title":"Fintoc (BYOK) API","version":"0.1.0","description":"Fintoc (BYOK) lets an AI assistant read your own Fintoc data through the Fintoc API with a key you supply (Fintoc secret API key (sk_live_... or sk_test_...)). Read-only: 9 tools (list_payment_intents, list_checkout_sessions, list_refunds, list_disputes, list_invoices, list_subscriptions, list_business_accounts, list_account_movements, list_events). The BYOK key travels with each request, is used...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-fintoc.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-fintoc/docs"},"termsOfService":"https://connectorbay.com/byok-fintoc/terms"},"servers":[{"url":"https://byok-fintoc.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-fintoc/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_payment_intents":{"post":{"operationId":"list_payment_intents","summary":"List payment intents (bank transfer payments) newest first, with amount, currency, status, payment type, error reason an","description":"List payment intents (bank transfer payments) newest first, with amount, currency, status, payment type, error reason and dates. Bank account numbers and holder IDs are not returned. Use for \"Which Fintoc payments succeeded yesterday\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":300,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results per page (1 to 300).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last item of the current page; returns the items created before it.","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the first item of the current page; returns the items created after it. Do not combine with starting_after.","title":"Ending Before"},"since":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created at or after this ISO 8601 date or date-time in UTC.","title":"Since"},"until":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created at or before this ISO 8601 date or date-time in UTC.","title":"Until"}},"title":"list_payment_intentsArguments","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_checkout_sessions":{"post":{"operationId":"list_checkout_sessions","summary":"List checkout sessions newest first, with amount, currency, flow, status, expiry and payment method types. Use for \"Whic","description":"List checkout sessions newest first, with amount, currency, flow, status, expiry and payment method types. Use for \"Which checkout sessions are still open\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":300,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results per page (1 to 300).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last item of the current page; returns the items created before it.","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the first item of the current page; returns the items created after it. Do not combine with starting_after.","title":"Ending Before"}},"title":"list_checkout_sessionsArguments","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_refunds":{"post":{"operationId":"list_refunds","summary":"List refunds with amount, currency, status, failure code, the refunded resource and dates. Use for \"Which Fintoc refunds","description":"List refunds with amount, currency, status, failure code, the refunded resource and dates. Use for \"Which Fintoc refunds are still pending\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["pending","in_progress","succeeded","failed","canceled"],"type":"string"},{"type":"null"}],"default":null,"description":"Only refunds in this status.","title":"Status"},"since":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created at or after this ISO 8601 date or date-time in UTC.","title":"Since"},"until":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created at or before this ISO 8601 date or date-time in UTC.","title":"Until"},"per_page":{"anyOf":[{"maximum":300,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many refunds per page (1 to 300).","title":"Per Page"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number starting at 1.","title":"Page"}},"title":"list_refundsArguments","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_disputes":{"post":{"operationId":"list_disputes","summary":"List payment disputes with amount, currency, status, document upload deadline and the disputed payment intent. Use for \"","description":"List payment disputes with amount, currency, status, document upload deadline and the disputed payment intent. Use for \"Which disputes need documentation before their deadline\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Dispute status, or several comma-separated: waiting_documentation, in_review, won, lost, expired, canceled.","title":"Status"},"resource_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only disputes of this payment intent ID.","title":"Resource Id"},"since":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created at or after this ISO 8601 date or date-time in UTC.","title":"Since"},"until":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created at or before this ISO 8601 date or date-time in UTC.","title":"Until"}},"title":"list_disputesArguments","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 subscription invoices with status, total, currency, customer, subscription and creation date. Use for \"Which invoic","description":"List subscription invoices with status, total, currency, customer, subscription and creation date. Use for \"Which invoices of subscription sub_123 are unpaid\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subscription":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only invoices of this subscription ID.","title":"Subscription"},"limit":{"anyOf":[{"maximum":300,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results per page (1 to 300).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last item of the current page; returns the items created before it.","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the first item of the current page; returns the items created after it. Do not combine with starting_after.","title":"Ending Before"}},"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 recurring-payment subscriptions with status, customer, billing anchor, cancellation date and trial end. Use for \"Ho","description":"List recurring-payment subscriptions with status, customer, billing anchor, cancellation date and trial end. Use for \"How many active Fintoc subscriptions do I have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":300,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results per page (1 to 300).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last item of the current page; returns the items created before it.","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the first item of the current page; returns the items created after it. Do not combine with starting_after.","title":"Ending Before"}},"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_business_accounts":{"post":{"operationId":"list_business_accounts","summary":"List Fintoc business accounts with available balance (minor units), currency, status and description. Account numbers ar","description":"List Fintoc business accounts with available balance (minor units), currency, status and description. Account numbers are not returned. Use for \"What is the balance of my Fintoc business accounts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["active","blocked","closed"],"type":"string"},{"type":"null"}],"default":null,"description":"Only accounts in this status.","title":"Status"},"entity_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only accounts of this entity ID.","title":"Entity Id"},"limit":{"anyOf":[{"maximum":300,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results per page (1 to 300).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last item of the current page; returns the items created before it.","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the first item of the current page; returns the items created after it. Do not combine with starting_after.","title":"Ending Before"}},"title":"list_business_accountsArguments","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_account_movements":{"post":{"operationId":"list_account_movements","summary":"List the movements (credits and debits) of one business account with amount, running balance, direction, type and date. ","description":"List the movements (credits and debits) of one business account with amount, running balance, direction, type and date. Use for \"What money moved in and out of my Fintoc account this week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_id":{"description":"Business account ID starting with acc_.","maxLength":200,"title":"Account Id","type":"string"},"direction":{"anyOf":[{"enum":["inbound","outbound"],"type":"string"},{"type":"null"}],"default":null,"description":"Only inbound (money in) or outbound (money out) movements.","title":"Direction"},"since":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only movements on or after this ISO 8601 date-time in UTC.","title":"Since"},"until":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only movements on or before this ISO 8601 date-time in UTC.","title":"Until"},"resource_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only movements caused by this resource ID, for example a transfer.","title":"Resource Id"},"limit":{"anyOf":[{"maximum":300,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results per page (1 to 300).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last item of the current page; returns the items created before it.","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the first item of the current page; returns the items created after it. Do not combine with starting_after.","title":"Ending Before"}},"required":["account_id"],"title":"list_account_movementsArguments","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_events":{"post":{"operationId":"list_events","summary":"List API events newest first (payment, refund, payout, transfer and link events) with type, time and the changed resourc","description":"List API events newest first (payment, refund, payout, transfer and link events) with type, time and the changed resource. Use for \"What Fintoc events happened for payment intent pi_123\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only events of this type, for example payment_intent.succeeded or refund.failed.","title":"Type"},"resource_id":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Only events about this resource ID.","title":"Resource Id"},"since":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created at or after this ISO 8601 date or date-time in UTC.","title":"Since"},"until":{"anyOf":[{"maxLength":30,"type":"string"},{"type":"null"}],"default":null,"description":"Only items created at or before this ISO 8601 date or date-time in UTC.","title":"Until"},"limit":{"anyOf":[{"maximum":300,"minimum":1,"type":"integer"},{"type":"null"}],"default":30,"description":"How many results per page (1 to 300).","title":"Limit"},"starting_after":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last item of the current page; returns the items created before it.","title":"Starting After"},"ending_before":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor: the id of the first item of the current page; returns the items created after it. Do not combine with starting_after.","title":"Ending Before"}},"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}}}}