15 tools for Claude. Reads, safe writes and reports.
Claude Desktop and Claude Code start the server over stdio. The Docker image runs it over SSE on port 8791. Every tool works on the same SQLite file.
Updated
Built for agents, not forms.
01
Typed calls
Each tool has a schema, so an entry arrives as lines in cents, not as a paragraph.
02
Readable refusals
A broken rule comes back as JSON with the reason, so the agent can fix the entry and try again.
03
Local by default
One SQLite file and one Python process on your machine.
The tools
Everything a ledger needs. Nothing that edits history.
Journal · 5
Post, transfer, reverse.
Five tools read and write journal entries. The three that write check every rule before anything is saved.
- post_transaction, transfer_funds, reverse_transaction
- get_transaction, search_transactions
- There is no update or delete tool
Accounts and reports · 8
Balances and the three statements.
Five tools cover the chart of accounts and each account's ledger. Three produce the trial balance, the profit and loss, and the balance sheet, as of any date.
- list_accounts, get_account, get_balance, get_account_ledger, create_account
- get_trial_balance, get_profit_loss, get_balance_sheet
- The balance sheet reports whether the equation holds
Audit and SQL · 2
The record, and an escape hatch.
get_audit_log reads every change in order. run_query answers anything else with a SELECT, on a read-only connection.
- Filter the audit log by action or actor
- run_query accepts SELECT only
- Amounts come back as whole cents
What the 15 tools cover.
Accounts · 5
List, read and create accounts, check a balance, and read an account's ledger.
Journal · 5
Post, transfer, reverse, read and search journal entries.
Reports · 3
Trial balance, profit and loss, and balance sheet.
Audit · 1
Every change, in the order it happened.
Escape hatch · 1
Read-only SQL for anything the other tools don't answer.
Two transports
stdio for Claude Desktop and Claude Code, and SSE on port 8791 for Docker.
Running in three steps.
Clone and install
Python 3.11 or later.
git clone https://github.com/Attri-Inc/open-ledger.git && cd open-ledger && python3 -m venv .venv && source .venv/bin/activate && pip install -r requirements.txtSeed sample books
Creates a chart of accounts and sample entries, and checks that they balance.
python scripts/seed.pyConnect Claude
Run this from the open-ledger folder.
claude mcp add openledger -s user -- $PWD/.venv/bin/python $PWD/run_mcp.py
Every tool, by group.
Names as registered in the MCP server.
| Group | Tools | Count |
|---|---|---|
| Accounts | list_accounts, get_account, get_balance, get_account_ledger, create_account | 5 |
| Journal | get_transaction, search_transactions, post_transaction, transfer_funds, reverse_transaction | 5 |
| Reports | get_trial_balance, get_profit_loss, get_balance_sheet | 3 |
| Audit | get_audit_log | 1 |
| Escape hatch | run_query | 1 |
Tool names and counts read from src/mcp_server.py in Attri-Inc/open-ledger on September 22, 2026.
Questions.
Which MCP transports does it support?
stdio, which Claude Desktop and Claude Code use, and SSE on port 8791, which the Docker image uses.
Is there a REST API?
Not yet. A REST version of every MCP tool is planned for v0.2.
Does it work with agents other than Claude?
Any MCP client that can start a stdio server or connect over SSE can use it.
Does it have authentication?
Not yet. Docker binds the server to localhost, so keep it off shared networks. API keys are planned for v0.2, and Attri adds access control in managed deployments.
Let your agents keep the books. Keep the rules on the server.
Run OpenLedger on sample books in minutes, or have Attri deploy it inside your environment with access control and approval rules.