Odel
ledger mcp

ledger mcp

Local
@novadyne-hqPythonMITUpdated 1mo ago

Double-entry bookkeeping API that natively accepts crypto micropayments (x402, USDC on Base).

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_KEY to 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, health and discover still 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

ToolCostWhat it does
healthfreeAPI status + version
discoverfreeList paid endpoints + x402 prices
create_accountwriteAdd an account (asset/liability/equity/revenue/expense)
list_accountsreadChart of accounts + balances
get_accountreadOne account's balance (optionally as-of a date)
post_transactionwriteRecord a balanced journal entry
list_transactionsreadJournal, newest first
get_transactionreadOne transaction with all entries
reverse_transactionwritePost a reversing entry
trial_balancereadAll balances + debit/credit totals
general_ledgerreadPer-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.