{"openapi":"3.1.0","info":{"title":"InvoiceXpress (BYOK) API","version":"0.1.0","description":"InvoiceXpress (BYOK) lets an AI assistant read your own InvoiceXpress data through the InvoiceXpress API with a key you supply (InvoiceXpress API key). Read-only: 10 tools (list_invoices, get_invoice, list_estimates, get_quote, list_clients, get_client, list_items, list_taxes, list_sequences, list_guides). The BYOK key travels with each request, is used for that one call only and is never stored,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-invoicexpress.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-invoicexpress/docs"},"termsOfService":"https://connectorbay.com/byok-invoicexpress/terms"},"servers":[{"url":"https://byok-invoicexpress.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-invoicexpress/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_invoices":{"post":{"operationId":"list_invoices","summary":"List invoices of one type and status with number, dates, totals, currency and client. The API requires a type and a stat","description":"List invoices of one type and status with number, dates, totals, currency and client. The API requires a type and a status; call again for other statuses. Use for \"Which InvoiceXpress invoices have been sent and are still open\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Your InvoiceXpress account name: the part before .app.invoicexpress.com in your account address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account Name","type":"string"},"doc_type":{"description":"Document type: Invoice, InvoiceReceipt, SimplifiedInvoice, VatMossInvoice, CreditNote, DebitNote, Receipt, CashInvoice, VatMossReceipt or VatMossCreditNote.","enum":["Invoice","InvoiceReceipt","SimplifiedInvoice","VatMossInvoice","CreditNote","DebitNote","Receipt","CashInvoice","VatMossReceipt","VatMossCreditNote"],"title":"Doc Type","type":"string"},"doc_status":{"description":"Document status: draft, sent, settled, canceled or second_copy.","enum":["draft","sent","settled","canceled","second_copy"],"title":"Doc Status","type":"string"},"non_archived":{"description":"true to list non-archived documents (required by the API; use false with archived=true for archived ones).","title":"Non Archived","type":"boolean"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true to list archived documents.","title":"Archived"},"text":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search text in invoice, client or item details.","title":"Text"},"date_from":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Date in dd/mm/yyyy format, for example 30/09/2026.","title":"Date From"},"date_to":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Date in dd/mm/yyyy format, for example 30/09/2026.","title":"Date To"},"due_date_from":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Due date from: Date in dd/mm/yyyy format, for example 30/09/2026.","title":"Due Date From"},"due_date_to":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Due date to: Date in dd/mm/yyyy format, for example 30/09/2026.","title":"Due Date To"},"reference":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search the reference field.","title":"Reference"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":30,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Results per page: 10, 20 or 30 (the account setting applies when omitted).","title":"Per Page"}},"required":["account_name","doc_type","doc_status","non_archived"],"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 number, status, dates, totals, client, line items (name, price, quantity, tax) and payment re","description":"Get one invoice by id with number, status, dates, totals, client, line items (name, price, quantity, tax) and payment reference. Use for \"Show InvoiceXpress invoice 2137287\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Your InvoiceXpress account name: the part before .app.invoicexpress.com in your account address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account Name","type":"string"},"document_id":{"description":"Invoice id from list_invoices.","title":"Document Id","type":"integer"}},"required":["account_name","document_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_estimates":{"post":{"operationId":"list_estimates","summary":"List quotes, proformas or fees notes with number, status, dates, totals and client. The API requires a type and a status","description":"List quotes, proformas or fees notes with number, status, dates, totals and client. The API requires a type and a status. Use for \"Which InvoiceXpress quotes were accepted\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Your InvoiceXpress account name: the part before .app.invoicexpress.com in your account address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account Name","type":"string"},"doc_type":{"description":"Estimate type: Quote, Proforma or FeesNote.","enum":["Quote","Proforma","FeesNote"],"title":"Doc Type","type":"string"},"doc_status":{"description":"Estimate status: draft, sent, accepted, refused or canceled.","enum":["draft","sent","accepted","refused","canceled"],"title":"Doc Status","type":"string"},"non_archived":{"description":"true to list non-archived estimates (required by the API).","title":"Non Archived","type":"boolean"},"archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"true to list archived estimates.","title":"Archived"},"text":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search text in estimate, client or item details.","title":"Text"},"date_from":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Date in dd/mm/yyyy format, for example 30/09/2026.","title":"Date From"},"date_to":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Date in dd/mm/yyyy format, for example 30/09/2026.","title":"Date To"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":30,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Results per page: 10, 20 or 30 (the account setting applies when omitted).","title":"Per Page"}},"required":["account_name","doc_type","doc_status","non_archived"],"title":"list_estimatesArguments","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_quote":{"post":{"operationId":"get_quote","summary":"Get one quote by id with number, status, dates, totals, client and line items. Use for \"Show InvoiceXpress quote 541791\"","description":"Get one quote by id with number, status, dates, totals, client and line items. Use for \"Show InvoiceXpress quote 541791\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Your InvoiceXpress account name: the part before .app.invoicexpress.com in your account address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account Name","type":"string"},"document_id":{"description":"Quote id from list_estimates.","title":"Document Id","type":"integer"}},"required":["account_name","document_id"],"title":"get_quoteArguments","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_clients":{"post":{"operationId":"list_clients","summary":"List clients with name, code, e-mail, address, country, phone and preferred contact. Fiscal ids are not returned. Use fo","description":"List clients with name, code, e-mail, address, country, phone and preferred contact. Fiscal ids are not returned. Use for \"Who are my InvoiceXpress clients\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Your InvoiceXpress account name: the part before .app.invoicexpress.com in your account address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account Name","type":"string"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":30,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Results per page: 10, 20 or 30 (the account setting applies when omitted).","title":"Per Page"}},"required":["account_name"],"title":"list_clientsArguments","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_client":{"post":{"operationId":"get_client","summary":"Get one client by id with contact details, payment days and observations. The fiscal id is not returned. Use for \"Show I","description":"Get one client by id with contact details, payment days and observations. The fiscal id is not returned. Use for \"Show InvoiceXpress client 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Your InvoiceXpress account name: the part before .app.invoicexpress.com in your account address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account Name","type":"string"},"client_id":{"description":"Client id from list_clients.","title":"Client Id","type":"integer"}},"required":["account_name","client_id"],"title":"get_clientArguments","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_items":{"post":{"operationId":"list_items","summary":"List the saved items (products and services) with name, description, unit price, unit and tax. Use for \"What items can I","description":"List the saved items (products and services) with name, description, unit price, unit and tax. Use for \"What items can I invoice in InvoiceXpress and at what price\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Your InvoiceXpress account name: the part before .app.invoicexpress.com in your account address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account Name","type":"string"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":30,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Results per page: 10, 20 or 30 (the account setting applies when omitted).","title":"Per Page"}},"required":["account_name"],"title":"list_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_taxes":{"post":{"operationId":"list_taxes","summary":"List the tax rates defined in the account with name, region, percentage and default flag. Use for \"Which VAT rates are s","description":"List the tax rates defined in the account with name, region, percentage and default flag. Use for \"Which VAT rates are set up in InvoiceXpress\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Your InvoiceXpress account name: the part before .app.invoicexpress.com in your account address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account Name","type":"string"}},"required":["account_name"],"title":"list_taxesArguments","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_sequences":{"post":{"operationId":"list_sequences","summary":"List the document sequences (series) with id, series name and whether it is the default. Use for \"Which document series ","description":"List the document sequences (series) with id, series name and whether it is the default. Use for \"Which document series does my InvoiceXpress account use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Your InvoiceXpress account name: the part before .app.invoicexpress.com in your account address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account Name","type":"string"}},"required":["account_name"],"title":"list_sequencesArguments","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_guides":{"post":{"operationId":"list_guides","summary":"List delivery guides (Shipping, Transport or Devolution) with number, status, dates, addresses and client. The API requi","description":"List delivery guides (Shipping, Transport or Devolution) with number, status, dates, addresses and client. The API requires a type and a status. Use for \"Which InvoiceXpress shipping guides were sent\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"account_name":{"description":"Your InvoiceXpress account name: the part before .app.invoicexpress.com in your account address.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Account Name","type":"string"},"doc_type":{"description":"Guide type: Shipping, Transport or Devolution.","enum":["Shipping","Transport","Devolution"],"title":"Doc Type","type":"string"},"doc_status":{"description":"Guide status: draft, sent, canceled or second_copy.","enum":["draft","sent","canceled","second_copy"],"title":"Doc Status","type":"string"},"non_archived":{"description":"true to list non-archived guides (required by the API).","title":"Non Archived","type":"boolean"},"page":{"anyOf":[{"maximum":100000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":30,"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Results per page: 10, 20 or 30 (the account setting applies when omitted).","title":"Per Page"}},"required":["account_name","doc_type","doc_status","non_archived"],"title":"list_guidesArguments","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}}}}