Skip to main content
All Dinero tools are read-only and called via tools/call over POST /dinero/mcp. The connector is connected through OAuth (Visma Connect; see Forbind Dinero).
Endpoint: https://mcp.consile.ai/dinero/mcp. Dinero is its own named connector with only its own tools. Tool names are namespaced dinero__<tool> in Claude/ChatGPT; the bare names are used here for readability.
Dinero’s public API requires a Dinero Pro subscription on the organisation. Non-Pro organisations return 403 on every call except list_organizations and validate_connection (both only enumerate organisations, so they work without Pro; check isPro there). The connector surfaces the 403 as DineroProRequiredError. Access tokens are refreshed silently; a revoked grant surfaces as AccessTokenExpiredError (“reconnect required”). See Errors & limits.

Shared conventions

organizationId

Dinero auth is user-based, so almost every tool requires an organizationId. Get the integer id (and the isPro flag) from list_organizations; there is no single “selected organisation” stored.
integer
required
The Dinero organisation id from list_organizations. Required on every org-scoped tool (noted per tool below where it is the only argument).

Pagination

List tools come in two shapes. Tools backed by a Dinero collection endpoint return an envelope; tools that slice a bare array return a flat page.
totalWithoutFilter is the row count ignoring any filter: it is NOT the filtered total. Dinero exposes no filtered total, so never answer “how many overdue invoices?” from totalWithoutFilter; count the returned items or page through with hasMore.
integer
default:"0"
0-based page index.
integer
default:"20"
Rows per page. Defaults to 20 on the collection-backed lists (invoices, contacts, sales, credit notes, trade offers, products, files) and to 100 on the accounting lists (list_chart_of_accounts, list_entries, list_entry_changes). Dinero hard-caps pageSize at 1000.

Filters & dates

string (ISO 8601 UTC)
On supported list tools, return only records changed at/after this timestamp. Use it for incremental pulls.
Free-text filter values cannot contain a single quote ('): Dinero’s filter syntax wraps the value in single quotes with no escape, so such a clause is rejected with a friendly error. startDate/endDate (on list_invoices, list_sales, list_credit_notes) must be passed as a pair; the from/to bounds on the state-of-account tools are independent optionals.

Read-via-POST calculators

Two tools (calculate_invoice_totals, preview_invoice_reminder) issue a POST to a Dinero …/fetch endpoint. They are read-only: they compute a result for a prospective input and persist nothing upstream.

Organisations & reference


Bookkeeping & accounting

The four report tools are Dinero’s only balance source. They take no date range: balances are whole-year totals keyed by the accounting-year name (from list_accounting_years). They share the same arguments.
string
required
Accounting year name as Dinero returns it (e.g. "2025"), from list_accounting_years.
boolean
default:"false"
boolean
default:"false"
integer
integer

Contacts

Dinero keeps one merged customer/supplier register. The debtor/creditor split is only on get_contact, never on the list.

Invoices & reminders


Sales: credit notes & trade offers


Purchases, products & files

Dinero has no list endpoint for purchase vouchers, purchase credit notes or manual vouchers: they are fetched by guid. Discover guids via list_entries (with a voucherType filter), get_purchase_vouchers_by_file, or known references.

Code examples

Error contract: 401 → reconnect required (AccessTokenExpiredError); 403 → no Dinero Pro or no access to that org (DineroProRequiredError); 429 → rate limit (≈100 requests/min/org; retried once, then DineroRateLimitError); 480 → a deprecated Dinero endpoint. 4xx responses are never retried. See Errors & limits.