nenoDevelopers
⌘K
v1

MCP · Bills

List bills

READlist_bills

Lists bills (purchase invoices and receipts), filtered by status, supplier or due date. Supplier, amount and due date stay hidden until an accountant has reviewed the bill. Members who are not admins see the bills they uploaded or paid with their own card.

Scope
bills:read
Read bills, receipts and stored documents
Permission
neno.viewDocuments
Your role in the company must include it
Annotations
readOnlyHint trueidempotentHint truedestructiveHint false

Description for models

List bills (purchase invoices and receipts) with optional filters: state (received, filed or failed), supplier name, and due-date range. 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 bills exist, what is due, for bills from a specific supplier, or for their own — including 'the bills on my card'. There is no card filter. For most users the result is the whole company's bills, not only the ones they uploaded or paid for, so never present them as the user's own; only a user without document access gets just their own uploads and card payments. Amounts and supplier names are only shown for bills an accountant has reviewed.

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.

due_afterstring · date

Only bills due on or after this date (YYYY-MM-DD)

due_beforestring · date

Only bills due on or before this date (YYYY-MM-DD)

statusstring

Only bills in this state: received (with Neno, being processed), filed (in the bookkeeping), or failed (something went wrong)

receivedfiledfailed
supplier_searchstring

Only bills whose supplier name contains this text (case-insensitive)

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": "list_bills",
"arguments": {
"due_after": "2026-10-01",
"status": "filed"
}
}
}
Example resultHand-written
content[0].text
Company: Studio Veld BV
All 3 bills.
- €1.815,00 | Drukkerij Hendriks | due 2026-10-04 | filed in the bookkeeping | id 3d8a5f12-6b90-4c7e-a1f4-0e29b7c6d853
- €242,00 | KPN Zakelijk | due 2026-10-12 | filed in the bookkeeping | id 8c41e0d7-2a5b-4f93-b6e8-17d0c9a3f512
- €89,95 | Adobe Systems Software Ireland | due 2026-10-15 | filed in the bookkeeping | id e5b27a90-4d1c-4b8e-9f36-0a7c2d91b4e8
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.