Tools in this category
| Tool | Mutating | Description |
|---|---|---|
list_invoices |
no | Return invoices with optional status, client, amount, issue/due date-range, and free-text filters. Filter by status with statuses — comma-separated slugs, which are user-configured, so call list_invoice_statuses first to see what this user actually has rather than guessing a slug. Default page size 20, max 50. |
get_invoice |
no | Fetch a single invoice by UUID or display ID (e.g. "I-7"), including line items, totals, status, and linked client/project. |
list_invoice_statuses |
no | List the current user’s invoice statuses (slug, name, and statusConfigId). Statuses are user-configured, so call this whenever you need to turn a status the user named ("unpaid", "overdue", "paid") into a value a tool accepts: pass the slug to list_invoices' statuses filter, and the statusConfigId to create_invoice / update_invoice. |
create_invoice |
yes | Create an invoice. statusConfigId is required — call list_invoice_statuses first. Use bulk_create_invoices for imports. Logged in the MCP audit trail. |
update_invoice |
yes | Update an invoice by UUID or display ID. Only supplied fields change. Prefer flag_invoice for toggling the flag. |
delete_invoice |
yes | Delete an invoice by UUID or display ID. Its generated export PDFs are also removed. |
flag_invoice |
yes | Flag or unflag an invoice for attention, with an optional reason. Prefer this over update_invoice for toggling the flag. |
bulk_create_invoices |
yes | Create many invoices in one transaction (all-or-nothing). Each item mirrors create_invoice input. Logged in the MCP audit trail. |
bulk_update_invoices |
yes | Apply per-id partial updates to many invoices in one call — mark a set as paid, shift their due dates, or retag them. Each id is logged separately in the audit trail. |
bulk_delete_invoices |
yes | Delete many invoices in one call, along with their generated PDFs. The linked client and project are unaffected. Prefer this over looping delete_invoice. |
list_invoices
Mutating: no
Return invoices with optional status, client, amount, issue/due date-range, and free-text filters. Filter by status with statuses — comma-separated slugs, which are user-configured, so call list_invoice_statuses first to see what this user actually has rather than guessing a slug. Default page size 20, max 50.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
page |
number | no | Page number (default: 1) |
limit |
number | no | Items per page (default: 20, max: 50) |
statuses |
string | no | Comma-separated status slugs from list_invoice_statuses (matches any); resolved to config IDs. Slugs are user-configured — an unknown one is rejected, so read them rather than assuming. A question about unpaid invoices is the set of statuses that are not the paid one. Prefer this over statusConfigIds. |
statusConfigIds |
array | no | Filter to these invoice status config IDs (matches any). Raw UUIDs — prefer statuses unless you already hold the IDs. |
clientDisplayId |
string | no | Filter to a single client — accepts UUID or display ID (e.g. "C-7"). |
clientNames |
array | no | Match invoices whose client name contains any of these. |
invoiceNumbers |
array | no | Match invoices whose invoiceNumber contains any of these. |
amountMin |
number | no | Inclusive lower bound on amount. |
amountMax |
number | no | Inclusive upper bound on amount. |
startDate |
string | no | ISO 8601 lower bound on issue date. |
endDate |
string | no | ISO 8601 upper bound on issue date. |
dueDateStart |
string | no | ISO 8601 lower bound on due date. |
dueDateEnd |
string | no | ISO 8601 upper bound on due date. |
search |
string | no | Search displayId, invoiceNumber, company, tags. |
sortBy |
string (displaySeq | invoiceNumber | amount | issueDate | dueDate | statusConfigId | createdAt | updatedAt) |
no | Field to sort by. |
sortOrder |
string (asc | desc) |
no | Sort direction; defaults to desc by issue date. |
get_invoice
Mutating: no
Fetch a single invoice by UUID or display ID (e.g. "I-7"), including line items, totals, status, and linked client/project.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id |
string | yes | Invoice UUID or display ID (e.g. "I-7"). |
list_invoice_statuses
Mutating: no
List the current user’s invoice statuses (slug, name, and statusConfigId). Statuses are user-configured, so call this whenever you need to turn a status the user named ("unpaid", "overdue", "paid") into a value a tool accepts: pass the slug to list_invoices' statuses filter, and the statusConfigId to create_invoice / update_invoice.
Parameters
No parameters.
create_invoice
Mutating: yes
Create an invoice. statusConfigId is required — call list_invoice_statuses first. Use bulk_create_invoices for imports. Logged in the MCP audit trail.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
invoiceNumber |
string | yes | Accounting identifier (e.g. "2026-001"). |
statusConfigId |
string | yes | Invoice status config UUID from list_invoice_statuses. |
amount |
number | yes | Total invoice amount (positive). |
dueDate |
string | yes | ISO 8601 due date (required). |
issueDate |
string | no | ISO 8601 issue date (defaults to today). |
clientDisplayId |
string | no | Optional client display ID (e.g. "C-7"). |
projectDisplayId |
string | no | Optional project display ID (e.g. "P-3"). |
lineItems |
array | no | Line items. Each: { description, amount, quantity?, unitPrice?, unit?, tax?, taxRate?, taskId? }. |
tags |
array | no | Tag names to attach; new tags are created on the fly. |
currency |
string | no | ISO 4217 currency code (default USD). |
invoiceType |
string (full | proforma) |
no | Invoice kind; defaults to "full". |
notes |
string | no | Free-form notes. |
companyName |
string | no | Issuer company name snapshot. |
taxId |
string | no | Issuer tax ID snapshot. |
bankName |
string | no | Payment bank name snapshot. |
bankAccount |
string | no | Payment bank account snapshot. |
bankRouting |
string | no | Payment bank routing snapshot. |
clientAddress |
string | no | Client address snapshot. |
clientEmail |
string | no | Client email snapshot. |
qrCodeData |
string | no | Payment QR payload. |
flagged |
boolean | no | Flag the invoice for attention. |
flagDescription |
string | no | Reason for the flag (max 500 chars). |
Items of lineItems:
description(string)amount(number) — Billed total for the line. Always required — it is the only number the invoice total, the PDF and the exports read. Send quantity * unitPrice when billing by units.quantity(number) — Billed units — hours on a line billing tracked work. Explainsamount.unitPrice(number) — Price per unit, in the invoice currency.unit(string (hours)) — Set to "hours" when the line bills time, makingquantityhours andunitPricethe hourly rate. Omit for plain units. Only affects presentation and which lines the rounding action touches — the arithmetic is the same either way.tax(number)taxRate(number)taskId(string) — Optional task this line bills — accepts UUID or display ID (e.g. "T-7").
update_invoice
Mutating: yes
Update an invoice by UUID or display ID. Only supplied fields change. Prefer flag_invoice for toggling the flag.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id |
string | yes | Invoice UUID or display ID (e.g. "I-7"). |
invoiceNumber |
string | no | Accounting identifier. |
statusConfigId |
string | no | Invoice status config UUID. |
amount |
number | no | Total invoice amount (positive). |
dueDate |
string | no | ISO 8601 due date. |
issueDate |
string | no | ISO 8601 issue date. |
projectDisplayId |
string | no | Project display ID (e.g. "P-3"). |
lineItems |
array | no | Line items. Each: { description, amount, quantity?, unitPrice?, unit?, tax?, taxRate?, taskId? }. |
tags |
array | no | Replacement set of tag names (omit to leave tags unchanged). |
currency |
string | no | ISO 4217 currency code (default USD). |
invoiceType |
string (full | proforma) |
no | Invoice kind; defaults to "full". |
notes |
string | no | Free-form notes. |
companyName |
string | no | Issuer company name snapshot. |
taxId |
string | no | Issuer tax ID snapshot. |
bankName |
string | no | Payment bank name snapshot. |
bankAccount |
string | no | Payment bank account snapshot. |
bankRouting |
string | no | Payment bank routing snapshot. |
clientAddress |
string | no | Client address snapshot. |
clientEmail |
string | no | Client email snapshot. |
qrCodeData |
string | no | Payment QR payload. |
flagged |
boolean | no | Flag the invoice for attention. |
flagDescription |
string | no | Reason for the flag (max 500 chars). |
Items of lineItems:
description(string)amount(number) — Billed total for the line. Always required — it is the only number the invoice total, the PDF and the exports read. Send quantity * unitPrice when billing by units.quantity(number) — Billed units — hours on a line billing tracked work. Explainsamount.unitPrice(number) — Price per unit, in the invoice currency.unit(string (hours)) — Set to "hours" when the line bills time, makingquantityhours andunitPricethe hourly rate. Omit for plain units. Only affects presentation and which lines the rounding action touches — the arithmetic is the same either way.tax(number)taxRate(number)taskId(string) — Optional task this line bills — accepts UUID or display ID (e.g. "T-7").
delete_invoice
Mutating: yes
Delete an invoice by UUID or display ID. Its generated export PDFs are also removed.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id |
string | yes | Invoice UUID or display ID (e.g. "I-7"). |
flag_invoice
Mutating: yes
Flag or unflag an invoice for attention, with an optional reason. Prefer this over update_invoice for toggling the flag.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id |
string | yes | Invoice UUID or display ID (e.g. "I-7"). |
flagged |
boolean | yes | true to flag, false to unflag. |
flagDescription |
string | no | Optional reason for the flag (max 500 chars). |
bulk_create_invoices
Mutating: yes
Create many invoices in one transaction (all-or-nothing). Each item mirrors create_invoice input. Logged in the MCP audit trail.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
items |
array | yes | Invoices to create. |
Items of items:
invoiceNumber(string)statusConfigId(string) — Invoice status config UUID from list_invoice_statuses.amount(number)dueDate(string) — ISO 8601 due date.issueDate(string) — ISO 8601 issue date.clientDisplayId(string) — Optional client display ID (e.g. "C-7").projectDisplayId(string) — Optional project display ID (e.g. "P-3").lineItems(array) — Line items. Each: { description, amount, quantity?, unitPrice?, unit?, tax?, taxRate?, taskId? }.tags(array)currency(string) — ISO 4217 currency code (default USD).invoiceType(string (full|proforma)) — Invoice kind; defaults to "full".notes(string) — Free-form notes.companyName(string) — Issuer company name snapshot.taxId(string) — Issuer tax ID snapshot.bankName(string) — Payment bank name snapshot.bankAccount(string) — Payment bank account snapshot.bankRouting(string) — Payment bank routing snapshot.clientAddress(string) — Client address snapshot.clientEmail(string) — Client email snapshot.qrCodeData(string) — Payment QR payload.flagged(boolean) — Flag the invoice for attention.flagDescription(string) — Reason for the flag (max 500 chars).
bulk_update_invoices
Mutating: yes
Apply per-id partial updates to many invoices in one call — mark a set as paid, shift their due dates, or retag them. Each id is logged separately in the audit trail.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
updates |
array | yes | Per-id patches to apply. |
status |
string | no | Optional status slug from list_invoice_statuses, applied to every invoice in the call. Resolved once rather than once per row. |
Items of updates:
id(string) — Invoice ID — accepts UUID or display ID (e.g. "I-7").data(object) — Partial invoice fields — same shape as update_invoice input, minus id and status. Send issueDate alongside dueDate when moving either, so the due-after-issue check runs.
bulk_delete_invoices
Mutating: yes
Delete many invoices in one call, along with their generated PDFs. The linked client and project are unaffected. Prefer this over looping delete_invoice.
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
ids |
array | yes | Invoice IDs to delete — each accepts a UUID or a display ID (e.g. "I-7"). |