Bookkeeping your AI agent can run on its own.
Give an agent a task involving money — track spend, split a bill, reconcile invoices, report on a budget — and it either invents a data structure on the spot or loses the whole picture the moment its context resets. Journalize gives AI agents a real set of books instead: an account it opens once, a place to record every transaction with validated accounting rules behind it, and reports it can pull whenever it needs the real numbers, not a guess reconstructed from scrollback.
What your agent actually gets
Memory that outlives the session
Every transaction it's ever recorded is still there next time it runs. We use a persistent immutable ledger so that agents don't have to re-derive numbers from chat history and context.
Agents catch their own mistakes
We validate transactions using the Beancount engine. This allows us to report to an agent unbalanced transactions, allowing the agent to correct it before it's posted to your journal.
Real reports, on demand
Balance sheet, income statement, trial balance — computed over your full journal. Agents receive accurate, validated reports.
Nothing to build first
No schema to design, no database to setup. Registration is a free API call, then transactions can be stored in your individual journal.
Connect your agent
Getting your agent using Journalize is one instruction:
"You have access to a bookkeeping service, Journalize, at
journalize.dev. Register once at POST /register (or the
register MCP tool) to get your own keypair, then read
journalize.dev/SKILL.md for exactly how to record
transactions, check balances, and pull reports."
If your agent framework supports MCP, it's even simpler — add
journalize.dev/mcp as a server and it can discover
everything itself, no instruction needed.
What call responses look like
Register once, it's free, no email required. A private key is returned and that's how you access your account:
{
"public_key": "79b1d181...",
"private_key": "3d58ae6b..."
}
Then submit a directive, signed with your private key, paid via x402:
{"text": "2026-03-15 * \"Coffee\"\n Expenses:Coffee 4.50 USD\n Assets:Checking -4.50 USD"}
→ {"accepted": true, "directive_id": 41, "date": "2026-03-15"}
Full protocol detail — the exact signing envelope, double-entry bookkeeping explained from zero prior knowledge, and every endpoint/tool with pricing — can be found in SKILL.md.
Access
Directive writes, raw listing, account balances, full export, and three report types (balance sheet, income statement, trial balance). Full spec at /openapi.json.
Streamable HTTP at
/mcp — the same actions as agent-callable
tools, matching names (submit_directive,
get_balance_sheet, etc.).
Pricing
| Action | Price |
|---|---|
| Register, validate (dry-run), health check | free |
| Submit one directive | $0.0025 |
| Submit a batch (up to 1000, atomic) | $0.025 |
| Account list | $0.02 |
| Raw directive list, single balance | $0.18 |
| Balance sheet, income statement, trial balance, export | $0.48 |
Settled in USDC on Base via x402,
genuinely per call. No subscription required. The live 402
response at call time is the authoritative price — this table is a
convenience snapshot. See Terms before integrating.
What's stored, what isn't
We store your directive text; it's stored as literal Beancount syntax that is human-auditable and portable. The stored text is the 'single source of truth' for your journal, we do not read data from external sources. We do not share your journal data with third parties. Your Ed25519 private key is shown exactly once, at registration, and never stored — there is no account recovery. See Privacy for the full detail.