Ledger MCP
Ledger is a double-entry bookkeeping API that natively accepts crypto micropayments — and this is its MCP server. Create a chart of accounts, post balanced journal entries, and pull trial-balance / general-ledger reports from inside your agent, over the Ledger API.
What makes it agent-native:
- Pays per call via x402 — ~$0.002 per read, ~$0.01 per write, in USDC on the Base network. No account, no API key, no subscription: zero signup — the agent pays a fraction of a cent per call from its own wallet.
- Real double-entry accounting — every transaction is a balanced journal entry enforced by a sum-to-zero database invariant; unbalanced entries are rejected before anything is spent.
- The ledger itself is x402-payable — not a dashboard that accounts for x402 traffic, but a bookkeeping backend an autonomous agent can discover, pay, and use end-to-end with no human in the loop.
Install
uvx ledger-mcp
Or add it to your MCP client (claude-code-config.json / Claude Desktop):
{
"mcpServers": {
"ledger": {
"command": "uvx",
"args": ["ledger-mcp"],
"env": {
"LEDGER_X402_PRIVATE_KEY": "0xYOUR_FUNDED_BASE_WALLET_KEY"
}
}
}
}
Payment
Most tools are paid per call (reads ~$0.002, writes ~$0.01, in USDC on Base):
- Set
LEDGER_X402_PRIVATE_KEYto the private key of a funded Base wallet (holding USDC). The server signs the x402 (EIP-3009) payment automatically on each call — gasless, you only spend the USDC the call costs. - Without a key,
healthanddiscoverstill work, and paid tools return the exact price plus how to enable payment (nothing is spent). - Use a dedicated low-balance wallet for your agent — never your main key. The balance is the blast radius.
Run discover to see every endpoint and its current price before spending.
Tools
| Tool | Cost | What it does |
|---|---|---|
health | free | API status + version |
discover | free | List paid endpoints + x402 prices |
create_account | write | Add an account (asset/liability/equity/revenue/expense) |
list_accounts | read | Chart of accounts + balances |
get_account | read | One account's balance (optionally as-of a date) |
post_transaction | write | Record a balanced journal entry |
list_transactions | read | Journal, newest first |
get_transaction | read | One transaction with all entries |
reverse_transaction | write | Post a reversing entry |
trial_balance | read | All balances + debit/credit totals |
general_ledger | read | Per-account detail over a date range |
The one rule: entries sum to zero
Every transaction is two or more entries whose signed amounts sum to exactly 0. Amounts are integers in minor units (cents): a debit is positive, a credit is negative.
Record a $500 cash sale (debit Cash, credit Sales Revenue):
{
"date": "2026-06-19",
"description": "Cash sale",
"entries": [
{"account_id": 1, "amount": 50000, "memo": "cash in"},
{"account_id": 2, "amount": -50000, "memo": "sales revenue"}
]
}
The server rejects an unbalanced transaction before spending.
Links
- Docs & API: https://ledger.novadyne.ai
- API base:
https://ledger-api.novadyne.ai - x402 discovery:
https://ledger-api.novadyne.ai/.well-known/x402
MIT licensed. By Novadyne. The API backend is operated by Novadyne; this package is the open client that talks to it.