
Finance MCP
Your money, queryable by the AI you already use. No dashboard to log into, no vendor holding the history.
How long can I go on savings if I cut dining out by a third?
finance_spending_by_category212 ms
{ "from": "2026-07-01", "to": "2026-09-30" }
→ Dining 1,284.00 · Groceries 902.50 · Transit 311.00 ...finance_runway148 ms
{ "monthlyCutCents": 14267 }
→ cash 24,310.00 · burn 3,962.00/moDining ran about $428 a month last quarter. A one-third cut saves roughly $143, which stretches your runway by close to a week.
- Runway now
- 6.1 mo
- With the cut
- 6.4 mo
- Saved / mo
- $143
> 16,426 rows in ✓ 14,486 new · 1,940 duplicates skipped ✓ 0 would overwrite existing ✕ 3 rejected unknown_account ×2 bad_amount ×1 > re-run with dryRun: false ✓ created 14,486 · safe to repeat
Sample figures from a fabricated account.
What the agent can call
Thirteen tools, one ledger.
Reads answer questions about your money. Writes are idempotent, so an import you run twice does the same thing as one you run once.
Position
finance_net_worthAssets minus debts, with history.
finance_accountsEvery account; closed ones on request.
finance_runwayMonths of cash at the current burn.
finance_monthly_statsIncome, spend and savings rate by month.
Spending
finance_spending_by_categoryWhere the money went in a date range.
finance_budget_breakdownPlanned against actual, per category.
finance_top_merchantsBiggest payees, ranked.
finance_tag_breakdownTotals grouped by your own tags.
finance_categoriesThe category list.
Transactions
finance_transaction_searchFind by text, amount, tag or date.
finance_recent_transactionsThe latest activity across accounts.
finance_transaction_upsertwriteAdd or correct one transaction.
finance_transactions_importwriteBulk load with a dry run first.
How a spreadsheet becomes a ledger
The port, end to end.
- sourceSheet
16,426 rows from years of manual tracking.
- checkDry run
Same counters as the real call, nothing written.
- writeImport
Natural-key upsert. Re-running changes nothing.
- storePostgres
14,486 reconciled transactions behind the Hominem API.
- askAny agent
Claude or another MCP client, scoped to your account.
The Problem
Finance apps keep your history inside their interface and their business. When Mint shut down, years of categorized spending went with it. A web app I built myself had the same flaw in a smaller form: the data was only reachable through screens I had to maintain.
The Solution
Retire the interface. Finance is now an MCP server on the Hominem API, so the assistant you already talk to is the front end, and the ledger stays in a database you control.
What it does
- Answers net worth, runway and spending questions in plain language
- Imports years of history safely, with a dry run before every write
- Matches accounts, tags and categories without caring about case
- Returns a named reason for every rejected row
What took work
- Making every write repeatable, so a retry never doubles a transaction
- Turning service failures into named errors instead of opaque 500s
- Keeping closed accounts visible to every tool that reads the same data
- Reconciling 16,426 messy rows against 14,486 clean ones
