MCP-first accounting
One ledger.
Three ways in.
Bookledo is real double-entry bookkeeping — driven from the web app, the API, or Claude. Every AI or API write lands as a draft first, so nothing posts to your books until a human approves it.
Free forever for the accounting itself. No card required.
Three surfaces
One ledger, three ways to reach it.
Same invoice, same journal entry, same rules — whichever door you walk through. Switch surfaces below to see identical data, three different ways.
Invoice
Acme Co
| Account | Debit | Credit |
|---|---|---|
| Accounts Receivable | 2,400.00 | — |
| Consulting Income | — | 2,400.00 |
| Total | 2,400.00 | 2,400.00 |
Posted entries are immutable — corrections go through a reversing entry, never an edit.
Real double-entry
Every entry balances. No exceptions.
Bookledo is real double-entry accounting, not a spreadsheet with a nicer face. A Postgres constraint — not application code — rejects any journal entry where debits don't equal credits, so your trial balance sums to zero by construction, every time.
- Balance enforced at the database, not just the UI form
- Posted entries can't be edited or deleted, only reversed
- Full audit log of every entry, by user, key, or AI action
MCP native
Connect Claude in two minutes.
Bookledo speaks MCP natively. Point any MCP client — Claude, or your own agent — at your books, and it can read balances, pull reports, and draft transactions without you writing a line of integration code.
- 1Create an API key under AI Activity, then AI access.
- 2Run the command below, or paste the config into your MCP client.
- 3Ask about your books. Reading works on every plan. On Pro, Claude can also write, and each write lands as a draft until you approve it.
claude mcp add --transport http bookledo \
https://bookledo.co/mcp \
--header "Authorization: Bearer bookledo_sk_..."The full key is shown once, when you create it. Copy it then.
Draft-first
AI proposes. You dispose.
A key without confirm scope can never post to your books directly. Every write it makes stops one step short, waiting in an approval queue, until a human says yes.
AI writes
Claude calls an MCP tool, like bookledo_invoices_create.
Draft
The write lands in your books with status = draft. Nothing is posted yet.
You approve
Review it in AI Activity — approve, edit, or reject.
Posted
Only now does it hit the ledger and become immutable.
Built to be trusted
Trust, by construction — not by promise.
We're too new for logos or testimonials. So here's exactly how the system is built to keep your books safe from a mistake — yours, an API caller's, or an AI's.
Balanced by the database
A Postgres constraint — not application code — rejects any journal entry where debits don’t equal credits.
Drafts, not autonomy
A key without confirm scope can never post directly. Every AI or API write waits for a human to approve it.
Keys are hashed, never stored plain
API keys are salted hashes in the database. A leak doesn’t leak your keys — and the full key is only ever shown once.
One operation registry
Every feature is an op — reachable three ways.
There's no second, cut-down API. Every button in the dashboard calls the same typed operation registry that powers the HTTP API and every MCP tool. If it exists, it's an op — and an op is never UI-only.
Pricing
Simple pricing. Full parity.
The accounting itself is free. Pro adds more businesses, daily bank feeds and Claude that can write, and you upgrade inside Bookledo.
- Unlimited invoices and expenses
- Full web app
- Read access for the API and Claude
- Everything in Free
- Claude and API keys that can write
- 5 businesses included, then $5 a month each
- Daily bank feeds