nenoDevelopers
⌘K
v1

MCP · Invoices

Summarize invoices

READget_invoice_summary

Counts outgoing sales invoices by draft, unpaid, overdue and paid, or lists the invoices in one of those buckets.

Scope
invoices:read
Read the invoices you send to your customers
Permission
neno.viewInvoicing
Your role in the company must include it
Annotations
readOnlyHint trueidempotentHint truedestructiveHint false

Description for models

Summarize the sales invoices issued in Neno: counts by lifecycle (draft, unpaid, overdue, paid), the invoices in one of those buckets, or one invoice found by its number or customer with search. A list returns every match up to 200 rows in one call and states the matching total, so the answer is complete unless it hands back a cursor. Use this when the user asks which invoices are unpaid or overdue, what has been invoiced, or whether an invoice was paid. Invoices made outside Neno are not here; the books hold every open one.

Sent verbatim in tools/list. It's written for the model, so it says when to use the tool.

Arguments

countinteger · 1–200

Maximum rows to return (default 200, which is also the maximum). Omit it to get every match; the response says whether any rows remain.

cursorstring

Continuation cursor: the nextCursor a previous response reported. Pass the same filters alongside it.

searchstring

Only invoices whose number or customer name contains this text (case-insensitive), such as "2026-041" or "Acme". Use it to answer whether one invoice was paid; it searches every bucket unless status is also given.

statusstring

List the invoices in this bucket instead of returning the summary counts

draftunpaidoverduepaid

Added by the server

On every tool that acts on one company
workspacestring

The id of the company this applies to. This connection covers a single company, which is filled in for you, so you can leave this out.

Result

text
Success. The answer as plain text in content[0].text, starting with Company: and the company name.
isError
Refused or failed. A missing permission, an invalid argument or a server failure sets isError: true. The text says what went wrong and what to tell the user.
input
Company needed. With several companies and no workspace argument, the server asks which company the call is for. A client that can't ask gets an error that lists the companies.
POST /mcp · tools/call
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_invoice_summary",
"arguments": {
"status": "overdue"
}
}
}
Example resultHand-written
content[0].text
Company: Studio Veld BV
All 2 overdue invoices.
- 2026-0131 | €3.025,00 | Aalto Studio BV | due 2026-09-14 | sent (overdue)
- 2026-0127 | €605,00 | Marlow & Finch | due 2026-09-02 | sent (overdue)
No more rows remain (nextCursor: null).

Tools return plain text with no output schema. This example follows the tool's real format, but the values are made up.