Expense

AI assistants

Connect your AI assistant.

Expense speaks the Model Context Protocol (MCP) at https://expense.labnotes.org/mcp: connect any MCP client — Claude Code, Claude Desktop, Cursor, or another assistant — and approve the connection by signing in with your account (OAuth; no API keys to manage). The assistant can capture receipts from photos and PDFs through the same OCR pipeline as the web app, log mileage at the IRS rate, answer spending questions from your actual data, build and export reports, and reconcile bank statements against logged expenses.

What your assistant can do

Capture receipts

Drop a receipt photo or PDF into the chat and it's OCR'd and categorized from your own merchant history — the same pipeline as the web app, no typing.

Log drives in plain English

“Log the drive home from the office on Tuesday.” The assistant geocodes, routes, and prices the trip at the year's IRS mileage rate.

Answer spending questions

“How much did I spend on flights last quarter?” gets the exact total, straight from your data — not a guess.

Build and export reports

Create or close reports, move expenses into them, and export a report PDF — one sentence instead of a form.

Reconcile statements

Paste a bank statement CSV and it finds every charge with no matching receipt. Read-only — nothing is written or dismissed.

Tax-season answers

Categories come from the IRS Schedule C lines, so “what's my meals and entertainment total?” maps straight onto your return.

How to connect

  1. 1

    Point your assistant at the endpoint

    Tell it to connect to https://expense.labnotes.org/mcp (or add it to your MCP config).

  2. 2

    Sign in and approve

    Your browser opens, you sign in with your normal account, and click Allow on the consent page.

  3. 3

    Done — manage it anytime

    Settings → Agents & API (MCP) shows every connected app; delete individual tokens or disconnect entirely.

Claude Code — .mcp.json
{
  "mcpServers": {
    "expense": {
      "type": "http",
      "url": "https://expense.labnotes.org/mcp"
    }
  }
}

No headers or keys — the client discovers the sign-in flow itself. Claude Desktop and Cursor connect the same way.

Try asking

  • “Here's my receipt — log it under Q3.”
  • “How much did I spend on meals and entertainment last quarter?”
  • “Move all unreported June expenses into the Q2 report and export the PDF.”
  • “Reconcile this statement.” (paste the CSV)

Security

Connecting is OAuth 2.1 with PKCE: the assistant never sees your password, access tokens live one hour, refresh tokens rotate, and only hashes are stored. A connection only ever reaches your own account. Revoke it anytime in Settings → Agents & API (MCP) — delete a single token or disconnect the whole app.

Your expenses, on speaking terms with your assistant.

Accounts are free and start empty. Add your first receipt in under a minute, then connect your assistant whenever you're ready.