list_invoices
Lists invoices, newest first; filter by status, project and CRM lead. Role-based project visibility applies to members: invoices without a project are always visible, invoices with a project only if it is within the role's visibility. Requirements: role Viewer or higher, key scope "read" or higher, module "Invoices" enabled.
- status
- Optional · string · draft | sent | paid | overdue | cancelled — Only invoices with this status.
- projectId
- Optional · string — Only entries of this project.
- crmLeadId
- Optional · string — Only invoices for this CRM lead.
- limit
- Optional · number — Maximum number of results (default 50, max 200).
get_invoice
Returns an invoice with all its line items (items, in order). If it is outside your visibility it appears as "Invoice not found". Requirements: role Viewer or higher, key scope "read" or higher, module "Invoices" enabled.
- id
- Required · string — ID of the invoice.
create_invoice
Creates an invoice. It starts as an unnumbered draft; the invoice number is assigned automatically when the draft is finalized through update_invoice. Amounts in cents. Line items with timeEntryId take quantity (rounded to 0.01 h) and the stored rate from the server; the time entry must be completed, billable and approved, belong to the invoice's project and not be on any invoice yet, and the invoice must be in EUR. It is marked as reserved in the process. Austrian law (§ 11 UStG) requires the service date plus the issuer's name, address and VAT ID. Project, lead and time entry references are checked against the organization and your visibility. The action is recorded in the audit log as an MCP action. Requirements: role Member or higher, key scope "write" or higher, module "Invoices" enabled.
- clientName
- Required · string — Invoice recipient: name or company.
- clientEmail
- Optional · string — Invoice recipient: email address.
- clientAddress
- Optional · string — Invoice recipient: street address.
- clientPostalCode
- Optional · string — Invoice recipient: postal code.
- clientCity
- Optional · string — Invoice recipient: city.
- clientCountryCode
- Optional · string — Invoice recipient: country code (e.g. AT, DE).
- clientElectronicAddress
- Optional · string — Invoice recipient: electronic address for the e-invoice.
- clientElectronicAddressScheme
- Optional · string — Scheme of the recipient's electronic address (e.g. EM for email).
- buyerReference
- Optional · string — Buyer reference for the e-invoice (XRechnung), e.g. a Leitweg ID.
- clientUID
- Optional · string — VAT ID of the recipient (ATU…); mandatory for invoices from EUR 10,000.
- crmLeadId
- Optional · string — Links the invoice to a CRM lead.
- projectId
- Optional · string — ID of the assigned project.
- dueDate
- Optional · string — Payment due date (YYYY-MM-DD).
- serviceDate
- Optional · string — Delivery/service date (YYYY-MM-DD) – required by § 11 UStG (Austria).
- servicePeriodEnd
- Optional · string — End of the service period (YYYY-MM-DD), optional.
- currency
- Optional · string · Default: EUR — Currency code. Default: EUR.
- taxRate
- Optional · number — Tax rate in percent (Austria: 20 standard, 10 reduced, 13 special, 0 tax-free). Default: 0.
- notes
- Optional · string — Notes as free text.
- supplierName
- Optional · string — Invoice issuer: name or company (required by § 11 UStG).
- supplierAddress
- Optional · string — Invoice issuer: address (required by § 11 UStG).
- supplierUID
- Optional · string — Invoice issuer: VAT ID (ATU…).
- supplierIBAN
- Optional · string — Invoice issuer: IBAN for payment information.
- supplierBIC
- Optional · string — Invoice issuer: BIC/SWIFT.
- supplierPostalCode
- Optional · string — Invoice issuer: postal code.
- supplierCity
- Optional · string — Invoice issuer: city.
- supplierCountryCode
- Optional · string — Invoice issuer: country code.
- supplierElectronicAddress
- Optional · string — Invoice issuer: electronic address for the e-invoice.
- supplierElectronicAddressScheme
- Optional · string — Scheme of the issuer's electronic address.
- supplierPhone
- Optional · string — Invoice issuer: phone number.
- supplierEmail
- Optional · string — Invoice issuer: email address.
- taxCategoryCode
- Optional · string · S | Z | E | AE | G | O — Tax category per EN 16931: S (standard rate), Z (zero rate), E (exempt), AE (reverse charge), G (tax-free export), O (outside scope). Default: S.
- taxExemptionReason
- Optional · string — Reason for the tax exemption.
- items
- Optional · object[] — Line items as a list of objects: description (required), quantity (required), unitPrice in cents (required) and optionally timeEntryId (a completed, billable and approved time entry – quantity and stored rate are derived by the server; each time entry may appear only once).
update_invoice
Updates invoice fields or its status. While the invoice is a draft every field can be changed. The first transition out of draft finalizes the invoice transactionally: it gets its gap-free number, the canonical PDF, the XRechnung XML and the time evidence are created, and the action is written to the audit log. Afterwards only the status can change; going back to draft and reopening a cancelled invoice are not possible. paid cannot be set – record a payment instead. Line items cannot be changed with this tool. Requirements: role Member or higher, key scope "write" or higher, module "Invoices" enabled.
- id
- Required · string — ID of the invoice.
- status
- Optional · string · draft | sent | overdue | cancelled — New status. The first transition out of draft finalizes the invoice and assigns the number.
- clientName
- Optional · string — Invoice recipient: name or company.
- clientEmail
- Optional · string — Invoice recipient: email address.
- clientAddress
- Optional · string — Invoice recipient: street address.
- clientUID
- Optional · string — VAT ID of the recipient (ATU…); mandatory for invoices from EUR 10,000.
- dueDate
- Optional · string — New payment due date (YYYY-MM-DD).
- serviceDate
- Optional · string — Delivery/service date (YYYY-MM-DD) – required by § 11 UStG (Austria).
- servicePeriodEnd
- Optional · string — End of the service period (YYYY-MM-DD), optional.
- notes
- Optional · string — Notes as free text.
- taxRate
- Optional · number — New tax rate in percent; tax amount and total are recomputed.
- supplierName
- Optional · string — Invoice issuer: name or company (required by § 11 UStG).
- supplierAddress
- Optional · string — Invoice issuer: address (required by § 11 UStG).
- supplierUID
- Optional · string — Invoice issuer: VAT ID (ATU…).
- supplierIBAN
- Optional · string — Invoice issuer: IBAN for payment information.
- supplierBIC
- Optional · string — Invoice issuer: BIC/SWIFT.
- supplierPostalCode
- Optional · string — Invoice issuer: postal code.
- supplierCity
- Optional · string — Invoice issuer: city.
- supplierCountryCode
- Optional · string — Invoice issuer: country code.
- supplierElectronicAddress
- Optional · string — Invoice issuer: electronic address for the e-invoice.
- supplierElectronicAddressScheme
- Optional · string — Scheme of the issuer's electronic address.
- supplierPhone
- Optional · string — Invoice issuer: phone number.
- supplierEmail
- Optional · string — Invoice issuer: email address.
- taxCategoryCode
- Optional · string · S | Z | E | AE | G | O — Tax category per EN 16931: S (standard rate), Z (zero rate), E (exempt), AE (reverse charge), G (tax-free export), O (outside scope). Default: S.
- taxExemptionReason
- Optional · string — Reason for the tax exemption.
delete_invoice
Deletes an invoice with its line items – but only drafts (status draft). Unlike the other delete tools the Member role is enough here; a key with the delete scope is required. Correct issued invoices with create_invoice_correction. Requirements: role Member or higher, key scope "delete" or higher, module "Invoices" enabled.
- id
- Required · string — ID of the invoice.
create_invoice_correction
Creates a standalone correction/cancellation invoice for an already issued (non-draft) invoice. The original stays untouched; a new unnumbered draft is created with a frozen copy of the original's header data (recipient, issuer, currency, project, CRM lead) – no line items and no reused number. The number is assigned when the correction is finalized. The action is written to the audit log. Requirements: role Member or higher, key scope "write" or higher, module "Invoices" enabled.
- id
- Required · string — ID of the issued invoice being corrected.
- reason
- Required · string — Required: reason for the correction.
list_accounting_receipts
Lists accounting receipts, by receipt date descending; filter by project and status. Result: { receipts: [...] }. Requires at least the Member role. Role-based project visibility applies to members. Requirements: role Member or higher, key scope "read" or higher, module "Accounting" enabled.
- projectId
- Optional · string — Only entries of this project.
- status
- Optional · string · uploaded | failed | archived — Only receipts with this status.
- limit
- Optional · number — Maximum number of results (default 50, max 200).
update_accounting_receipt
Updates a receipt's metadata: name, date, amount, merchant, category, project link and status. The receipt must be within your visibility; a new project is checked against the organization. Requirements: role Member or higher, key scope "write" or higher, module "Accounting" enabled.
- id
- Required · string — ID of the receipt.
- displayName
- Optional · string — Display name of the receipt.
- receiptDate
- Optional · string — Receipt date (YYYY-MM-DD).
- amount
- Optional · number — Amount in cents.
- merchant
- Optional · string — Merchant or issuer of the receipt.
- category
- Optional · string — Category as free text.
- projectId
- Optional · string — ID of the assigned project.
- status
- Optional · string · uploaded | failed | archived — New receipt status.
delete_accounting_receipt
Permanently deletes a receipt together with its underlying file. Requires at least the Admin role and a key with the delete scope. If a document under legal hold references the receipt, deletion is refused with a conflict (409); both blocked and executed deletions are written to the audit log. Requirements: role Admin or higher, key scope "delete" or higher, module "Accounting" enabled.
- id
- Required · string — ID of the receipt.
list_accounting_income
Lists income (invoices from the Invoicing module) for the accounting overview: id, number, status, client, issue date, currency and total per invoice, plus totalsByCurrency with paid and outstanding totals per currency. Requires at least the Member role; project visibility applies to members. Requirements: role Member or higher, key scope "read" or higher, module "Accounting" enabled. This tool takes no parameters.
Common pitfalls
The number is assigned on finalization
create_invoice creates a draft without a number. The number is assigned when update_invoice moves the status out of draft for the first time.
Paid cannot be set
update_invoice rejects paid ("Record a payment instead"). Record a payment in the web app instead.
Issued means immutable
After finalization only the status can change, and returning to draft is not possible. Use create_invoice_correction for changes.
Time entries must be approved
Line items with timeEntryId require a completed, billable and approved time entry in the same project; the invoice must be in EUR.
Amounts in cents
All amounts (unitPrice, amount) are cent values.
