MCP-Server

cash-book

io.github.theluckystrike/cash-book
Business & Betrieb Finanzen & Investieren Öffentlich und erreichbar MCP 2026-07-28

Was dieses MCP kann

Builds and reports a double-entry cash-book ledger from invoices, expenses, deposits, bank records, and assets.

ledger_build
Build the ledger for a period
Derive the double-entry ledger for one period in ONE currency from the invoice, credit note, deposit, expense, bank and asset stores, and register it. Nothing is written back. Free: 3 periods a month.
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'maxLength': 10, 'description': 'Last day of the period, YYYY-MM-DD, inclusive'}, 'from': {'type': 'string', 'maxLength': 10, 'description': 'First day of the period, YYYY-MM-DD'}, 'currency': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': 'Needed when the period holds documents in more than one currency. Currencies are never added together'}}, 'additionalProperties': False}
ledger_export_csv
Export the ledger as CSV
Return the period's ledger lines as RFC 4180 CSV, one row per leg, as a download link valid for one hour. Pro, but ledger_lines returns these same fields free and unlimited; this only lays them out as CSV columns.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'maxLength': 10, 'description': 'Last day of the period, YYYY-MM-DD, inclusive'}, 'from': {'type': 'string', 'maxLength': 10, 'description': 'First day of the period, YYYY-MM-DD'}, 'source': {'type': 'string', 'maxLength': 200, 'description': 'Only lines derived from this server'}, 'account': {'type': 'string', 'maxLength': 200, 'description': 'Only this account or category prefix'}, 'currency': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': 'Needed when the period holds documents in more than one currency. Currencies are never added together'}}, 'additionalProperties': False}
ledger_lines
List ledger lines
List the ledger lines for a period, filtered by account, source server, source_id or date; each carries its debit, credit and bank_ref, with the totals of the rows returned. Filtered totals do not balance. Free.
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'maxLength': 10, 'description': 'Last day of the period, YYYY-MM-DD, inclusive'}, 'from': {'type': 'string', 'maxLength': 10, 'description': 'First day of the period, YYYY-MM-DD'}, 'limit': {'type': 'integer', 'maximum': 5000, 'minimum': 1, 'description': 'Maximum rows, default and ceiling 5000'}, 'since': {'type': 'string', 'maxLength': 10, 'description': 'Only lines dated on or after this date, YYYY-MM-DD'}, 'until': {'type': 'string', 'maxLength': 10, 'description': 'Only lines dated on or before this date, YYYY-MM-DD'}, 'source': {'type': 'string', 'maxLength': 200, 'description': 'Only lines derived from this server: invoice, billing-docs, deposits, expense-tracker or asset-register'}, 'account': {'type': 'string', 'maxLength': 200, 'description': 'Only this account, e.g. cash, receivables, vat_output, or a category prefix such as "expenses"'}, 'currency': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': 'Needed when the period holds documents in more than one currency. Currencies are never added together'}, 'source_id': {'type': 'string', 'maxLength': 200, 'description': 'Only lines derived from this document, e.g. INV-2026-0001'}}, 'additionalProperties': False}
ledger_report
Report movement and balance per account
Report a built period account by account: debits, credits, movement and closing balance, plus purchase commitments held as memos and the period's exceptions. Pro; ledger_lines gives the lines free.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'maxLength': 10, 'description': 'Last day of the period, YYYY-MM-DD, inclusive'}, 'from': {'type': 'string', 'maxLength': 10, 'description': 'First day of the period, YYYY-MM-DD'}, 'currency': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': 'Needed when the period holds documents in more than one currency. Currencies are never added together'}}, 'additionalProperties': False}
license_activate
Activate license
Turn Pro on for this connection with key, an MCPL1.<payload>.<signature> issued at checkout for this server or the bundle. Data under your token stays; a wrong or expired key changes nothing. license_status confirms it.
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['key'], 'properties': {'key': {'type': 'string', 'description': 'License key from checkout, MCPL1.<payload>.<signature>'}}, 'additionalProperties': False}
license_status
License status
Report this endpoint's licence state for your token as JSON: the product, the tier free or pro, why it is not Pro, and the checkout URL. Call it to explain a free-tier refusal. No arguments, nothing changes.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
month_close
Close a month
List what a month leaves unposted or unbalanced, with its trial balance and bank reconciliation, then store the close as a snapshot; a later call names any drift against it. dry_run writes nothing. Pro.
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['month'], 'properties': {'month': {'type': 'string', 'maxLength': 7, 'description': 'The month to close, YYYY-MM'}, 'dry_run': {'type': 'boolean', 'description': 'Report the exceptions and the trial balance without writing the close. Default false'}, 'currency': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': 'Needed when the period holds documents in more than one currency. Currencies are never added together'}}, 'additionalProperties': False}
period_delete
Delete a built period
Delete one built period from the register and give its free-tier slot back. Refused when a closed month's snapshot covers the period, and that month is named. No sibling book is touched.
Destruktiv
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'maxLength': 10, 'description': 'Last day of the period, YYYY-MM-DD, inclusive'}, 'from': {'type': 'string', 'maxLength': 10, 'description': 'First day of the period, YYYY-MM-DD'}, 'currency': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': 'Needed only when the same date range was built in more than one currency'}}, 'additionalProperties': False}
trial_balance
Prove the ledger balances
Total the debits and the credits for a period and prove they are equal to the minor unit. When they are not, name the entries whose own legs do not add up and the source document behind each. Free and unlimited.
Eingabeschema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'maxLength': 10, 'description': 'Last day of the period, YYYY-MM-DD, inclusive'}, 'from': {'type': 'string', 'maxLength': 10, 'description': 'First day of the period, YYYY-MM-DD'}, 'currency': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': 'Needed when the period holds documents in more than one currency. Currencies are never added together'}}, 'additionalProperties': False}
Geändert
license_activate
21. September 2026 02:56
Geändert
license_status
21. September 2026 02:56
Geändert
ledger_report
21. September 2026 02:56
Geändert
ledger_export_csv
21. September 2026 02:56
Geändert
month_close
21. September 2026 02:56
Geändert
ledger_lines
21. September 2026 02:56
Geändert
trial_balance
21. September 2026 02:56
Geändert
period_delete
21. September 2026 02:56
Geändert
ledger_build
21. September 2026 02:56
Hinzugefügt
license_activate
17. September 2026 12:52
Hinzugefügt
license_status
17. September 2026 12:52
Hinzugefügt
ledger_report
17. September 2026 12:52
Hinzugefügt
ledger_export_csv
17. September 2026 12:52
Hinzugefügt
month_close
17. September 2026 12:52
Hinzugefügt
ledger_lines
17. September 2026 12:52
Hinzugefügt
trial_balance
17. September 2026 12:52
Hinzugefügt
period_delete
17. September 2026 12:52
Hinzugefügt
ledger_build
17. September 2026 12:52