{"openapi":"3.1.0","info":{"title":"Qonto (BYOK) API","version":"0.1.0","description":"Qonto (BYOK) lets an AI assistant read your own Qonto data through the Qonto API with a key you supply (Qonto API credential written as login:secret-key (for example pied-piper-7132:62885d39f3a0ddedd3d3ee0432a43ccr)). Read-only: 8 tools (get_organization, list_transactions, list_statements, list_client_invoices, list_supplier_invoices, list_cards, list_memberships, list_labels). The BYOK key...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-qonto.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-qonto/docs"},"termsOfService":"https://connectorbay.com/byok-qonto/terms"},"servers":[{"url":"https://byok-qonto.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-qonto/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_organization":{"post":{"operationId":"get_organization","summary":"Show the Qonto organization (legal name, country, legal form) and all its bank accounts with id, IBAN, balance, currency","description":"Show the Qonto organization (legal name, country, legal form) and all its bank accounts with id, IBAN, balance, currency and status. Use the account ids in other tools. Use for \"What are my Qonto account balances\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"include_external_accounts":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to also list external accounts connected to Qonto.","title":"Include External Accounts"}},"title":"get_organizationArguments","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_transactions":{"post":{"operationId":"list_transactions","summary":"List transactions of one Qonto bank account (completed by default), newest settled first, with amount, direction, counte","description":"List transactions of one Qonto bank account (completed by default), newest settled first, with amount, direction, counterparty label, type, status and dates. Use for \"What were the latest transactions on my main Qonto account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"bank_account_id":{"description":"Qonto bank account id (a UUID) from get_organization, for example 018f71db-c635-78b5-b90a-ea05de98c2bf.","maxLength":60,"title":"Bank Account Id","type":"string"},"side":{"anyOf":[{"enum":["credit","debit"],"type":"string"},{"type":"null"}],"default":null,"description":"Only credits (money in) or debits (money out).","title":"Side"},"settled_at_from":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only transactions settled at or after this ISO 8601 time, for example 2026-01-01T00:00:00.000Z.","title":"Settled At From"},"settled_at_to":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only transactions settled at or before this ISO 8601 time.","title":"Settled At To"},"sort_by":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"settled_at:desc","description":"Order as property:direction, with property created_at, updated_at, settled_at or emitted_at and direction asc or desc.","title":"Sort By"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"required":["bank_account_id"],"title":"list_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_statements":{"post":{"operationId":"list_statements","summary":"List monthly account statements with period, bank account and the PDF file name and size. The file link in the answer ex","description":"List monthly account statements with period, bank account and the PDF file name and size. The file link in the answer expires after 30 minutes. Use for \"Which Qonto statements are available\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"period_from":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"First period to include, written MM-YYYY, for example 01-2026.","title":"Period From"},"period_to":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Last period to include, written MM-YYYY.","title":"Period To"},"sort_by":{"anyOf":[{"enum":["period:asc","period:desc"],"type":"string"},{"type":"null"}],"default":"period:desc","description":"Order as period:asc or period:desc.","title":"Sort By"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_statementsArguments","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_client_invoices":{"post":{"operationId":"list_client_invoices","summary":"List invoices you issued to clients with number, status, totals, client, issue and due dates and paid time. Needs a key ","description":"List invoices you issued to clients with number, status, totals, client, issue and due dates and paid time. Needs a key with invoicing access. Use for \"Which of my Qonto client invoices are unpaid\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"maxLength":60,"type":"string"},{"type":"null"}],"default":null,"description":"Only invoices in these statuses, comma-separated from draft, unpaid, paid, canceled.","title":"Status"},"due_date_from":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only invoices due on or after this date (YYYY-MM-DD).","title":"Due Date From"},"due_date_to":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only invoices due on or before this date (YYYY-MM-DD).","title":"Due Date To"},"sort_by":{"anyOf":[{"enum":["created_at:desc","created_at:asc"],"type":"string"},{"type":"null"}],"default":"created_at:desc","description":"Order by creation time: created_at:desc or created_at:asc.","title":"Sort By"},"per_page":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (1 to 500).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_client_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_supplier_invoices":{"post":{"operationId":"list_supplier_invoices","summary":"List supplier invoices (bills to pay) with supplier, invoice number, status, total, issue, due and payment dates. Needs ","description":"List supplier invoices (bills to pay) with supplier, invoice number, status, total, issue, due and payment dates. Needs a key with supplier invoice access. Use for \"Which supplier invoices are waiting for payment in Qonto\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["to_review","to_approve","awaiting_payment","pending","scheduled","paid","archived","rejected","discarded"],"type":"string"},{"type":"null"}],"default":null,"description":"Only invoices with this status: to_review, to_approve, awaiting_payment, pending, scheduled, paid, archived, rejected or discarded.","title":"Status"},"query":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Free-text search over the fields named in query_fields.","title":"Query"},"query_fields":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated fields to search, for example supplier_name,amount,file_name,invoice_number.","title":"Query Fields"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_supplier_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_cards":{"post":{"operationId":"list_cards","summary":"List payment cards with nickname, status, level, type, last four digits, expiry, holder and spending limits (never the f","description":"List payment cards with nickname, status, level, type, last four digits, expiry, holder and spending limits (never the full number). Use for \"Which Qonto cards are active and what are their limits\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Text search over holder name, card id, nickname, last digits and status.","title":"Query"},"sort_by":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":"status:asc","description":"Order as property:direction, property status, nickname, last_activity_at or created_at.","title":"Sort By"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_cardsArguments","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_memberships":{"post":{"operationId":"list_memberships","summary":"List the people with access to the Qonto organization with name, role, status and team id. Use for \"Who has access to ou","description":"List the people with access to the Qonto organization with name, role, status and team id. Use for \"Who has access to our Qonto account and with which role\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_membershipsArguments","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_labels":{"post":{"operationId":"list_labels","summary":"List the labels (tags, possibly nested) used to categorise Qonto transactions. Use for \"What transaction labels do we us","description":"List the labels (tags, possibly nested) used to categorise Qonto transactions. Use for \"What transaction labels do we use in Qonto\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (1 to 100).","title":"Per Page"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"}},"title":"list_labelsArguments","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}}}}