All 102 MCP Tools
Every action Claude, Cursor, or any MCP-compatible AI agent can perform on your InvoiceCave workspace. Click a tool for the full schema and example prompts.
Invoices
10 toolslist_invoicesList invoices. Optionally filter by status or search by invoice number/customer name.
get_invoiceGet full details of a specific invoice including line items.
create_invoiceCreate a new invoice with line items, optional discount, shipping, adjustment. If the customer does not exist, they will be auto-created. Line item descriptions support multi-line: first line = bold title, lines after \\n = sub-description in lighter text.
update_invoiceUpdate an existing invoice. Supports status, dates, notes, discount, shipping, adjustment, salesperson, and terms. Recalculates totals automatically.
send_invoiceMark an invoice as
get_invoice_linkGet the shareable public link for an invoice.
delete_invoiceDelete an invoice permanently.
email_invoiceEmail an invoice to the customer with a professional HTML email and PDF attachment. Updates status to Sent if currently Draft.
duplicate_invoiceCreate a copy of an existing invoice as a new Draft. Copies line items, template, payment methods. Status = Draft, paidAmount = 0, balanceDue = total.
create_deposit_invoiceCreate a deposit invoice (e.g. 50% upfront) for a parent invoice. Generates a single-line invoice for the percentage of parent\
Customers
6 toolslist_customersList customers in the organization. Optionally search by name or company.
create_customerCreate a new customer. Only displayName is required. Supports billing/shipping addresses, payment terms, and tax info.
edit_customerUpdate an existing customer\
delete_customerDelete a customer. Warning: this also removes related data.
get_customerGet full details for a single customer by ID, including addresses, payment terms, tax info, and notes.
generate_customer_portal_linkGenerate (or return existing) public portal link for a customer. Uses Customer.portalToken; creates one if missing.
Items & Catalog
8 toolslist_itemsList products/services (items) in the organization. Optionally search by name.
create_itemCreate a new product or service item.
edit_itemUpdate an existing product or service item.
delete_itemDelete a product or service item.
add_line_itemAdd a new line item to an existing invoice. Automatically recalculates invoice totals. Description supports multi-line: first line = bold title, lines after \\n = sub-description.
remove_line_itemRemove a line item from an invoice by index (0-based) or by matching description text. Recalculates totals.
update_line_itemUpdate a line item on an invoice. Find by index (0-based) or searchDescription. Can change description, quantity, rate, tax. Use this to fix mistakes instead of creating new invoices. Recalculates totals.
get_itemGet full details for a single product/service item by ID.
Payments
3 toolsPayment Methods
4 toolslist_payment_methodsList all payment methods (bank accounts, Wise, Payoneer, PayPal, crypto) configured for the organization.
add_payment_methodAdd a new payment method (bank account, Wise, Payoneer, PayPal, crypto, other). Displayed on invoices so clients know where to pay.
update_payment_methodUpdate an existing payment method. Use list_payment_methods first to get the method ID.
delete_payment_methodDelete a payment method. Use list_payment_methods first to get the method ID.
Quotes
10 toolslist_quotesList quotes/estimates. Optionally filter by status or customer, or search by quote number/customer name.
get_quoteGet full details of a specific quote including line items.
create_quoteCreate a new quote/estimate with line items. If customer does not exist, will be auto-created. Default expiry is 30 days from quote date.
update_quoteUpdate an existing quote. Supports status transitions, dates, notes, financial fields. Recalculates totals when financial fields change.
delete_quoteDelete a quote. Cannot delete a converted quote (it is linked to an invoice).
send_quoteMark a quote as Sent and return its public shareable link.
email_quoteEmail a quote to the customer (or override email). Sends a styled HTML email with the public quote link. Updates status to Sent if currently Draft.
get_quote_linkGet the shareable public link for a quote.
get_quote_pdf_linkGet the authenticated PDF download URL for a quote.
convert_quote_to_invoiceConvert an Accepted/Sent/Viewed quote into a Draft invoice. Marks the quote as Converted and links it to the new invoice.
Recurring Invoices
7 toolslist_recurring_invoicesList recurring invoice profiles. Optionally filter by status.
create_recurring_invoiceCreate a recurring invoice profile. Generates an invoice automatically on each period (weekly/monthly/etc.). Use generate_recurring_invoice_now to fire one immediately.
update_recurring_invoiceUpdate a recurring invoice profile. Note: line item changes require deleting and recreating the profile. Use this for metadata, frequency, end date, and discount/shipping/adjustment.
delete_recurring_invoiceDelete a recurring invoice profile. Already-generated invoices are NOT deleted.
pause_recurring_invoicePause a recurring invoice profile so the cron stops generating invoices for it. Resume later with resume_recurring_invoice.
resume_recurring_invoiceResume a paused recurring invoice profile.
generate_recurring_invoice_nowManually trigger generation of an invoice from a recurring profile right now. Advances the profile\
Recurring Payments
6 toolslist_recurring_paymentsList recurring payment profiles. Optionally filter by status.
create_recurring_paymentCreate a recurring payment profile (e.g. monthly retainer received). Tracks expected incoming payments. To record actual receipts, use record_payment against an invoice.
update_recurring_paymentUpdate a recurring payment profile.
delete_recurring_paymentDelete a recurring payment profile.
pause_recurring_paymentPause a recurring payment profile.
resume_recurring_paymentResume a paused recurring payment profile.
Expenses
9 toolslist_expensesList expenses with totals. Filter by status, category, vendor, date range, customer, or billable flag.
get_expenseGet full details of a specific expense.
create_expenseRecord a new expense. Auto-generates an EXP-XXXXXX number. If bankAccountId is provided, deducts the amount from the bank balance.
update_expenseUpdate an existing expense. If amount changes and the expense has a bankAccountId, the bank balance is auto-adjusted.
delete_expenseDelete an expense. If it had a bankAccountId, the deducted amount is added back to the balance.
list_expense_categoriesList all active expense categories for the organization.
create_expense_categoryCreate a new expense category.
update_expense_categoryUpdate an expense category. Use isActive=false to soft-deactivate without deleting.
delete_expense_categoryDelete an expense category. Fails if any expenses still use it — reassign or delete those first, or use update_expense_category with isActive=false.
Reports & Dashboard
5 toolsget_dashboardGet dashboard statistics: outstanding amounts, overdue invoices, customer and invoice counts.
get_audit_logGet audit log entries. Optionally filter by entity type.
get_aging_reportAccounts receivable aging report. Shows unpaid invoices bucketed by days overdue (current, 1-30, 31-60, 61-90, 91-120, 120+), with per-customer and per-currency breakdowns.
get_revenue_reportRevenue report over a date range. Shows invoiced (accrual), collected (cash), and outstanding amounts grouped by day/week/month, plus per-currency totals.
get_cashflow_reportCash flow report. Shows actual cash inflows (recorded payments) vs outflows (expenses) for the period, broken down by currency and payment mode.
Chart of Accounts & Journals
10 toolslist_accountsList chart of accounts. Optionally filter by type (Asset, Liability, Equity, Revenue, Expense).
list_journal_entriesList journal entries. Optionally filter by status (Draft, Posted, Void).
create_accountCreate a new account in the chart of accounts. Codes must be unique within the org.
update_accountUpdate an existing chart-of-accounts entry. Code uniqueness is enforced.
delete_accountDelete an account. Fails if it has any journal lines — deactivate via update_account isActive=false instead.
seed_chart_of_accountsSeed the org with a standard 39-account chart of accounts (Assets/Liabilities/Equity/Revenue/Expense). Fails if any accounts already exist.
create_journal_entryCreate a journal entry. Validates double-entry (sum of debits must equal sum of credits). Pass status=
post_journal_entryPost a Draft journal entry. Updates affected account balances. Cannot be undone — to reverse, use void_journal_entry.
void_journal_entryVoid a journal entry. If it was Posted, account balances are reversed. Voided entries cannot be edited.
get_account_balanceGet the current balance of a single account. Balance reflects all posted journal entries to-date.
Bank Accounts
5 toolslist_bank_accountsList bank accounts configured for the organization. Includes balances and default flag.
create_bank_accountCreate a new bank account for the organization. Used for recording deposits and reconciliation.
get_bank_account_balanceGet the current balance and recent activity for a bank account.
update_bank_accountUpdate a bank account. To set as default, the existing default is automatically unset.
delete_bank_accountSoft-delete a bank account (sets isActive=false). Preserves transaction history. To hard-delete, use the dashboard.
Tax Rates
4 toolsReminders & Late Fees
4 toolsset_reminder_settingsConfigure automatic overdue-reminder settings (which days after due date, default subject/message, sendTime).
set_late_fee_settingsConfigure late-fee policy (flat or percentage, grace period, once or recurring).
send_reminderSend an overdue reminder email for a specific invoice. Requires the invoice has balanceDue > 0 and the customer has an email on file. Uses the org\
apply_late_feeManually apply the configured late fee to an invoice. Requires set_late_fee_settings(enabled=true) and a value > 0. Adds the fee as an adjustment, recalculates total + balance.
Organization Settings
3 toolsget_org_settingsGet the organization\
update_org_settingsUpdate org-level settings. Only the listed fields are writable; SMTP credentials, Stripe IDs, and encryption keys can only be changed in the dashboard.
set_org_default_templateConvenience tool to set the org-wide default invoice template. Per-invoice override is also available via create_invoice/update_invoice invoiceTemplate.
Notifications & Email Logs
3 toolsWant the raw schema?
Public, unauthenticated tool manifest — perfect for AI clients to evaluate before connecting.