# journalize MCP server

Agent-native double-entry accounting ledger with x402 micropayments

## Links
- Registry page: https://www.getdrio.com/mcp/dev-journalize-journalize
- Website: https://journalize.dev

## Install
- Endpoint: https://journalize.dev/mcp
- Auth: Not captured

## Setup notes
- Remote endpoint: https://journalize.dev/mcp

## Tools
- submit_directive - Submit one Beancount directive (open, transaction, close, balance,
    price, note, document — any type). Paid, except your first 20
    accepted writes per registered key, which are free (this specific
    tool only — submit_batch is always paid, even for your first call).
    Call with no payment_header first: if free writes remain, this
    succeeds immediately; otherwise you'll get price/asset/recipient
    back, so you can retry with payment_header set to your signed
    X-PAYMENT-equivalent payload (fresh nonce required on the retry —
    each call is independently signed). Endpoint: https://journalize.dev/mcp
- validate_directive - Free dry-run: parse+book text against your full history without
    persisting or charging anything. Still requires a valid signature
    (identity/replay protection is not a billing concern). Endpoint: https://journalize.dev/mcp
- submit_batch - Submit up to 1000 directives atomically — all persist together or
    none do. Priced 10x a single write, regardless of batch size within
    the cap. Always paid — the free-trial allowance (see
    submit_directive) applies to single writes only, never to batches,
    even if you haven't used any free writes yet. Paid. Endpoint: https://journalize.dev/mcp
- list_directives - List raw directives (optionally filtered by account/date range). No
    booking involved — cheapest paid tool. `since`/`until` are ISO date
    strings (YYYY-MM-DD). Your first 2 calls per registered key are free
    (independent of the write/accounts/report allowances — see
    list_accounts, get_balance_sheet). Endpoint: https://journalize.dev/mcp
- list_accounts - List all opened accounts with their currency constraints and
    booking method. No booking pass involved. Your first 2 calls per
    registered key are free (a separate allowance from list_directives'
    and the report tier's — see those tools). Endpoint: https://journalize.dev/mcp
- get_account_balance - Balance of a single account. Settles at the same fixed price
    whether the account exists or not — an "unknown account" answer is
    still a valid, billable response (no per-error pricing discount). No
    free-trial allowance for this specific tool, unlike list_directives
    (same price, but list_directives has 2 free calls and this doesn't) —
    the free tier applies to browsing (list_directives, list_accounts)
    and the report tier, not per-account lookups. Endpoint: https://journalize.dev/mcp
- export_ledger - Export the full ledger as literal Beancount text — a portable
    snapshot for fava/bean-report/etc., not the live store. Shares a
    combined free allowance of 2 with get_balance_sheet,
    get_income_statement, and get_trial_balance (the "report tier") — not
    2 free calls for each of those four separately. Endpoint: https://journalize.dev/mcp
- get_balance_sheet - Full realize() balance sheet — often served from cache. Settles at
    the same fixed price regardless of cache hit/miss. Shares a combined
    free allowance of 2 with export_ledger, get_income_statement, and
    get_trial_balance (the "report tier") — not 2 free calls each. Endpoint: https://journalize.dev/mcp
- get_income_statement - Income statement, period-scoped by since/until (ISO date strings,
    both optional — omitted means whole history). Always books full
    history first, then clamps the output to the requested period (never
    filters input dates — see reports.py for why). Shares a combined free
    allowance of 2 with export_ledger, get_balance_sheet, and
    get_trial_balance (the "report tier") — not 2 free calls each. Endpoint: https://journalize.dev/mcp
- get_trial_balance - Trial balance, period-scoped same as income statement — same
    underlying compute, priced and audited as its own resource. Shares a
    combined free allowance of 2 with export_ledger, get_balance_sheet,
    and get_income_statement (the "report tier") — not 2 free calls
    each. Endpoint: https://journalize.dev/mcp
- register - Generate a new Ed25519 keypair for ledger identity. Returns the
    private key exactly once — it is never stored server-side and cannot
    be recovered if lost. This is a SEPARATE keypair from whatever wallet
    you use to authorize x402 payments (payment auth and ledger identity
    are two independent signing domains — see payments.py). Endpoint: https://journalize.dev/mcp

## Resources
Not captured

## Prompts
Not captured

## Metadata
- Owner: dev.journalize
- Version: 1.0.0
- Runtime: Streamable Http
- Transports: HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Jul 9, 2026
- Source: https://registry.modelcontextprotocol.io
