v0.7.0 — receipt file storage
bookie is an MCP server for personal and business double-entry bookkeeping. You talk to it through any MCP-capable environment (Claude Desktop, Cursor, VS Code, or any host supporting stdio MCP). It stores your ledger in Neon Postgres and runs on Railway.
What's in v0.7.0
Added
- Receipt file storage via Railway Bucket —
manage_receipts action='attach'now accepts optionalfileContent(base64) +mimeType(JPEG, PNG, WEBP, HEIC, or PDF) to upload the original receipt image or PDF to S3-compatible object storage. A signed download URL (1-hour TTL) is returned on attach. Newaction='get_url'refreshes the URL on demand.action='delete'removes the stored file alongside the DB row.action='list'surfaceshasFileandmimeTypeper receipt. src/domain/blob.ts— thin S3 client wrapper using@aws-sdk/client-s3+@aws-sdk/s3-request-presigner. Storage uses Railway's injectedAWS_ENDPOINT_URL,AWS_S3_BUCKET_NAME,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_DEFAULT_REGIONenv vars (AWS SDK Generic style). Structured receipt data continues to save even when no bucket is configured.
Changed
README.md— stdio quickstart now says "any MCP-capable environment" rather than Claude Desktop only; addedBOOKIE_DB_DIRECT_URLto the example config block.
Full feature history
v0.6.x — OAuth connector + remote hardening (2026-06-13)
- OAuth 2.0 authorization server (PKCE S256, JWT access tokens, refresh token rotation) so bookie can be added as a Claude.ai MCP connector
- Per-request rate limiting (fixed-window per-IP,
RATE_LIMIT_RPM), audit logging to Railway logs send_reporttool — run any report and email it as Markdown via Resend
v0.6.0 — MCP resources + prompts (2026-06-13)
bookie://accountsresource (JSON list of all accounts with balances) andbookie://reports/{year}(annual fiscal snapshot: Schedule C, Schedule E, month-by-month summary)- MCP prompts:
monthly-close,categorize-uncategorized,prepare-tax-summary manage_rules action='suggest'— scans past categorizations and surfaces candidate automation rules
v0.5.0 — HTTP hardening + email reports (2026-06-13)
- Rate limiting, audit logging,
send_reportvia Resend
v0.4.0 — Tax reports (2026-06-13)
generate_report type='schedule-c'andtype='schedule-e'— fiscal-year P&L for sole-proprietor and rental real estate segmentsexport_reporttool — render any report as Markdown or CSV
v0.3.0 — Receipts + reconciliation (2026-06-13)
manage_receipts— attach, list, delete structured receipt data (merchant, date, total, line items) against a journal entrygenerate_report type='monthly-reconciliation'— opening/closing balance, income/expense by segment, uncategorized entries, uncleared discrepanciesreconcile— two-step (preview → commit): match a bank/card statement CSV against payment-leg postings and mark them cleared
v0.2.0 — CSV import + categorization rules (2026-06-10)
import_transactions— two-step (preview → commit) bank/card statement CSV import with RFC-4180 parsing, content-hash dedup, possible-match flaggingmanage_rules— description-substring categorization rules; auto-suggestion from past postingssplit_transaction— one payment leg + N category legs (receipt splits)delete_transaction— correct mistakes / duplicate imports- Segment model (
manage_segments) + Property model (manage_properties) for per-entity P&L and Schedule E tracking - Vitest integration test suite
v0.1.0 — Core ledger scaffold (2026-06-03)
- MCP server with dual transport: stdio (local) + Streamable HTTP over Hono (Railway deploy)
- Neon Postgres via Prisma; seeded US sole-proprietor chart of accounts
manage_accounts,add_transaction,query_transactions,account_balances- Integer-cent money math; bearer-token auth for HTTP transport
- Dockerfile +
railway.jsonfor one-click deploy