AI Tools (Finance)
The 27 finance tools exposed to Leenops AI and MCP.
Leenops currently registers 27 finance tools across invoicing, expenses, banking, payments, credit notes, and PEPPOL. These definitions come from the shared @leenops/tools registry used by the in-app assistant and MCP.
In the Leenops AI panel, write tools show a confirmation step. External MCP clients do not receive that Leenops UI confirmation card: a permitted tool call executes immediately, subject to the API key's scopes and MCP policy.
Invoicing (9)
| Tool | Mode | Purpose |
|---|---|---|
list_invoices | Read | Filter invoices by status, customer, amount, or overdue state |
get_invoice | Read | Get an invoice with contact, company, and line items |
create_invoice | Write | Create an invoice |
get_invoice_stats | Read | Summarize paid, pending, and overdue invoices |
list_products | Read | Search finance products |
get_product | Read | Get one finance product |
convert_quotation_to_invoice | Write | Idempotently convert an accepted quotation |
bill_time_entries_to_invoice | Write | Append billable time to a draft invoice or create one |
delete_invoice | Write | Permanently delete an unpaid invoice and its line items |
delete_invoice refuses paid invoices. bill_time_entries_to_invoice marks selected time entries as billed so a retry cannot bill them twice.
Expenses (5)
| Tool | Mode | Purpose |
|---|---|---|
list_expenses | Read | Filter expenses |
create_expense | Write | Submit an expense |
update_expense | Write | Edit mutable fields |
approve_expense | Write | Approve or reject a pending expense |
delete_expense | Write | Permanently delete a non-approved expense |
Banking (3)
| Tool | Mode | Purpose |
|---|---|---|
list_bank_accounts | Read | List connected bank accounts |
list_bank_transactions | Read | Filter bank transactions |
sync_bank_account | Read | Return sync state, provider, cursor, and last-sync time |
Despite its name, sync_bank_account does not initiate a provider sync. Use the Finance UI sync action or the server-side banking route to force a refresh.
Payments (3)
| Tool | Mode | Purpose |
|---|---|---|
list_invoice_payments | Read | List recorded invoice payments |
create_payment_checkout | Write | Create a Stripe-hosted checkout session |
refund_payment | Write | Issue a full or partial provider refund |
A checkout URL is only usable when Stripe and the workspace's payment readiness requirements are configured. Review Payments before sending a generated URL to a customer.
Credit notes (4)
| Tool | Mode | Purpose |
|---|---|---|
list_credit_notes | Read | Filter credit notes |
create_credit_note | Write | Create a credit note |
apply_credit_note | Write | Apply all or part of a credit note to an invoice |
delete_credit_note | Write | Permanently delete an unapplied credit note |
Applied credit notes cannot be deleted through the tool.
PEPPOL (3)
| Tool | Mode | Purpose |
|---|---|---|
send_peppol_invoice | Write | Queue a PEPPOL submission intent |
list_peppol_inbox | Read | List inbound PEPPOL messages |
get_peppol_inbound | Read | Read one inbound PEPPOL message |
send_peppol_invoice queues the submission and marks it pending; server-side routes perform provider dispatch.
Test through MCP
- Create an API key with the relevant finance permissions.
- Connect an MCP client using MCP setup.
- Call
tools/listand confirm the expected finance tools are allowed. - Test reads first.
- Use a disposable workspace for destructive tools such as invoice, expense, or credit-note deletion.
Live tool discovery and permission behavior are documented in MCP Tool Catalog.
Surface differences
| Surface | Contract |
|---|---|
| In-app AI | Shared tool registry plus Leenops confirmation UI for writes |
| MCP | Shared tool registry; permitted calls execute through the MCP tool-call endpoint |
| REST API | HTTP resources and schemas; not a one-to-one mirror of tool names |
Do not assume a tool name is also a REST endpoint.

