Claude Code + MCP
Connect Claude Code to your bookkeeping
Claude Code speaks the Model Context Protocol, so it can treat your German bookkeeping as a first-class tool source. One command wires it up over the hosted transport; from then on you ask in plain language and it calls the right endpoint under the hood. It reads your real ledger, and — if your key allows write — it drafts and posts entries through the GoBD booking core.
Add the server once
A single command registers your bookkeeping over the hosted MCP transport.
Register the server with your Bearer key and Claude Code discovers the fourteen tools automatically — ten read, four write. The $MCP_URL placeholder stands for the server host, which you copy from the app under API access. Nothing is installed locally; the remote transport is hosted and ready now.
claude mcp add --transport http buchhaltung \ "$MCP_URL" --header "Authorization: Bearer jab_live_…" # Then, in Claude Code, just ask in plain language: # "Show me the 2025 trial balance grouped by account." # "List open incoming invoices and draft the postings."
Prompts that read your ledger
Read-only work needs only a read-scope key.
- "Pull the trial balance for fiscal year 2025 and flag accounts with unusual balances."
- "List every open payable and total them by due date."
- "Show journal entries on account 4400 for Q1 and summarise the movements."
- "Compare bank transactions against booked entries and list what is unreconciled."
- "Export the chart of accounts so I can see which SKR the company uses."
Prompts that post entries
With a read-plus-write key, Claude Code can do real bookkeeping — always as a Storno, never a delete.
- "Book this incoming invoice: net 100 euro, 19 percent input VAT, to office supplies."
- "Issue an outgoing invoice for 1,190 euro gross and post the revenue and VAT."
- "Reverse journal entry 812 with a proper Storno and tell me the new entry number."
- "Draft the postings for these three open invoices, then post them once I confirm."
You stay in control
The agent is powerful, but the guardrails are yours.
You decide the scope. Give Claude Code a read key while you build trust, then upgrade to read-plus-write when you want it to post. The key is bound to one company and can be revoked instantly. Every write runs through the same booking core as the UI, so GoBD — append-only, Festschreibung, Storno-instead-of-delete, Soll equals Haben — is never negotiable.
The API is bookkeeping only. Claude Code can prepare and tidy the figures that later become your annual accounts inside the app, but it does not file an annual report, submit an E-Bilanz or complete a tax return — those steps happen in the app, never in the API.
Scope and safety at a glance
The essentials before you hand over a key.
- Key prefix jab_live_, sent as Authorization Bearer — no second header.
- One key equals one company; the company is derived from the key.
- Read or read-plus-write; a read key can never post.
- Keys are time-limitable, revocable, shown once, stored as a hash.
- Creating keys needs the paid bookkeeping module; existing keys keep working if the subscription lapses.
Frequently asked questions
Does Claude Code need the npm package?
No. Use the hosted HTTP transport, which is ready now and needs nothing installed. The local npx package is not published yet, so treat it as a preview only.
Can I keep Claude Code read-only?
Yes. Give it a read-scope key and it can pull the trial balance, open items, invoices and bank lines but cannot post anything. Upgrade to a write key only when you are ready.
What does Claude Code do when it posts?
It calls the same booking endpoints the UI uses. Reversals are Storno operations, not deletes, and Soll must equal Haben — the GoBD rules apply to every write it makes.
Can Claude Code prepare my annual accounts?
It can prepare and clean the bookkeeping figures that feed into them, but the annual accounts themselves are compiled and filed inside the app, never through the API.
How do I revoke access quickly?
Delete the key in the app under API access. It is scoped to one company, so revoking it cuts off exactly that connection and nothing else.