{"openapi":"3.1.0","info":{"title":"Bokio (BYOK) API","version":"0.1.0","description":"Bokio (BYOK) lets an AI assistant read your own Bokio data through the Bokio API with a key you supply (private integration token (read scopes)). Read-only: 10 tools (get_company_information, list_invoices, get_invoice, list_credit_notes, list_customers, list_suppliers, list_supplier_invoices, list_journal_entries, get_chart_of_accounts, list_fiscal_years). The BYOK key travels with each request,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-bokio.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-bokio/docs"},"termsOfService":"https://connectorbay.com/byok-bokio/terms"},"servers":[{"url":"https://byok-bokio.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-bokio/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_company_information":{"post":{"operationId":"get_company_information","summary":"Show the company: name, type, organization number and contact details. Needs the company-information:read scope. Use for","description":"Show the company: name, type, organization number and contact details. Needs the company-information:read scope. Use for \"Which company is my Bokio token for\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Bokio company id (UUID) the integration token belongs to.","maxLength":36,"title":"Company Id","type":"string"}},"required":["company_id"],"title":"get_company_informationArguments","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 customer invoices with status, amounts, dates and customer name, newest first. Needs the invoices:read scope. Use f","description":"List customer invoices with status, amounts, dates and customer name, newest first. Needs the invoices:read scope. Use for \"Which Bokio invoices are overdue\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Bokio company id (UUID) the integration token belongs to.","maxLength":36,"title":"Company Id","type":"string"},"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter on type, status, currency, totalAmount, invoiceDate, dueDate, customerRef.id, for example 'status==overdue'. Operators: ==, !=, ~ (contains), >, >=, <, <=, combined with &&. Leave empty for no filter.","title":"Query"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Items per page (1 to 100).","title":"Page Size"}},"required":["company_id"],"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/get_invoice":{"post":{"operationId":"get_invoice","summary":"Get one invoice by id with status, amounts, dates, customer and payment reference. Use for \"Show Bokio invoice i1\".","description":"Get one invoice by id with status, amounts, dates, customer and payment reference. Use for \"Show Bokio invoice i1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Bokio company id (UUID) the integration token belongs to.","maxLength":36,"title":"Company Id","type":"string"},"invoice_id":{"description":"Invoice id (UUID), from list_invoices.","maxLength":200,"title":"Invoice Id","type":"string"}},"required":["company_id","invoice_id"],"title":"get_invoiceArguments","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 with status, amounts, dates and linked invoice. Needs the credit-notes:read scope. Use for \"What credi","description":"List credit notes with status, amounts, dates and linked invoice. Needs the credit-notes:read scope. Use for \"What credit notes have I issued in Bokio\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Bokio company id (UUID) the integration token belongs to.","maxLength":36,"title":"Company Id","type":"string"},"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter on credit note fields listed by the provider, for example 'status==published'. Operators: ==, !=, ~ (contains), >, >=, <, <=, combined with &&. Leave empty for no filter.","title":"Query"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Items per page (1 to 100).","title":"Page Size"}},"required":["company_id"],"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_customers":{"post":{"operationId":"list_customers","summary":"List customers with name, number, type, VAT and organization number. Contact details and addresses are not returned. Use","description":"List customers with name, number, type, VAT and organization number. Contact details and addresses are not returned. Use for \"Who are my Bokio customers\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Bokio company id (UUID) the integration token belongs to.","maxLength":36,"title":"Company Id","type":"string"},"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter on name, customerNumber, type, vatNumber, orgNumber, modifiedDateTime, for example 'name~Example'. Operators: ==, !=, ~ (contains), >, >=, <, <=, combined with &&. Leave empty for no filter.","title":"Query"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Items per page (1 to 100).","title":"Page Size"}},"required":["company_id"],"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_suppliers":{"post":{"operationId":"list_suppliers","summary":"List suppliers with name, VAT and organization number and currency. Payment details are not returned. Use for \"Which sup","description":"List suppliers with name, VAT and organization number and currency. Payment details are not returned. Use for \"Which suppliers are in Bokio\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Bokio company id (UUID) the integration token belongs to.","maxLength":36,"title":"Company Id","type":"string"},"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter on name, vatNumber, orgNumber, for example 'name~Example'. Operators: ==, !=, ~ (contains), >, >=, <, <=, combined with &&. Leave empty for no filter.","title":"Query"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Items per page (1 to 100).","title":"Page Size"}},"required":["company_id"],"title":"list_suppliersArguments","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) with supplier, amounts, remaining amount and dates. Use for \"Which supplier invoices stil","description":"List supplier invoices (bills) with supplier, amounts, remaining amount and dates. Use for \"Which supplier invoices still have an amount remaining in Bokio\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Bokio company id (UUID) the integration token belongs to.","maxLength":36,"title":"Company Id","type":"string"},"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter on supplierRef.id, invoiceNumber, totalAmount, currency, invoiceDate, dueDate, for example 'dueDate<2026-12-31'. Operators: ==, !=, ~ (contains), >, >=, <, <=, combined with &&. Leave empty for no filter.","title":"Query"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Items per page (1 to 100).","title":"Page Size"}},"required":["company_id"],"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_journal_entries":{"post":{"operationId":"list_journal_entries","summary":"List bookkeeping journal entries with number, title, date and reversal links. Use for \"Show my latest Bokio journal entr","description":"List bookkeeping journal entries with number, title, date and reversal links. Use for \"Show my latest Bokio journal entries\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Bokio company id (UUID) the integration token belongs to.","maxLength":36,"title":"Company Id","type":"string"},"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter on title, journalEntryNumber, date, for example 'date>=2026-01-01'. Operators: ==, !=, ~ (contains), >, >=, <, <=, combined with &&. Leave empty for no filter.","title":"Query"},"tag_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only entries with this tag id (UUID).","title":"Tag Id"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Items per page (1 to 100).","title":"Page Size"}},"required":["company_id"],"title":"list_journal_entriesArguments","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_chart_of_accounts":{"post":{"operationId":"get_chart_of_accounts","summary":"Get the full chart of accounts: account number, name and whether it is a base-plan or custom account. Use for \"Which acc","description":"Get the full chart of accounts: account number, name and whether it is a base-plan or custom account. Use for \"Which accounts are in my Bokio chart of accounts\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Bokio company id (UUID) the integration token belongs to.","maxLength":36,"title":"Company Id","type":"string"},"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter on account fields listed by the provider, for example 'account==3001'. Operators: ==, !=, ~ (contains), >, >=, <, <=, combined with &&. Leave empty for no filter.","title":"Query"}},"required":["company_id"],"title":"get_chart_of_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_fiscal_years":{"post":{"operationId":"list_fiscal_years","summary":"List fiscal years with start and end date, accounting method and open or closed status. Use for \"Which Bokio fiscal year","description":"List fiscal years with start and end date, accounting method and open or closed status. Use for \"Which Bokio fiscal years are open\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"company_id":{"description":"Bokio company id (UUID) the integration token belongs to.","maxLength":36,"title":"Company Id","type":"string"},"query":{"anyOf":[{"maxLength":300,"type":"string"},{"type":"null"}],"default":null,"description":"Optional filter on startDate, endDate, accountingMethod, status, for example 'status==open'. Operators: ==, !=, ~ (contains), >, >=, <, <=, combined with &&. Leave empty for no filter.","title":"Query"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"page_size":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Items per page (1 to 100).","title":"Page Size"}},"required":["company_id"],"title":"list_fiscal_yearsArguments","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}}}}