Ponti StudiosBook a call
Back to Lab

Finance MCP

Your money, queryable by the AI you already use. No dashboard to log into, no vendor holding the history.

Claude · Finance MCPconnected

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/mo

Dining 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
finance_transactions_importdryRun: true
> 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_worth

Assets minus debts, with history.

finance_accounts

Every account; closed ones on request.

finance_runway

Months of cash at the current burn.

finance_monthly_stats

Income, spend and savings rate by month.

Spending

finance_spending_by_category

Where the money went in a date range.

finance_budget_breakdown

Planned against actual, per category.

finance_top_merchants

Biggest payees, ranked.

finance_tag_breakdown

Totals grouped by your own tags.

finance_categories

The category list.

Transactions

finance_transaction_search

Find by text, amount, tag or date.

finance_recent_transactions

The latest activity across accounts.

finance_transaction_upsertwrite

Add or correct one transaction.

finance_transactions_importwrite

Bulk load with a dry run first.

How a spreadsheet becomes a ledger

The port, end to end.

  1. sourceSheet

    16,426 rows from years of manual tracking.

  2. checkDry run

    Same counters as the real call, nothing written.

  3. writeImport

    Natural-key upsert. Re-running changes nothing.

  4. storePostgres

    14,486 reconciled transactions behind the Hominem API.

  5. 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

Next project

Hominem APIThree apps, same personal data. One API instead of three duct-taped together.

Have a problem worth solving?