AI assistants
Connect your AI helper to Expense.
Expense speaks the Model Context Protocol (MCP) at https://expense.labnotes.org/mcp. Point any MCP client at it, Claude, OpenAI or some other assistant, and sign in with your account to approve the connection. No API keys to copy. Your assistant then works the same way the web app does: it reads a receipt from a photo or a PDF, logs a drive at the IRS rate, answers a question about your spending, files an expense into a report, or reconciles a statement against what you logged. In browsers with WebMCP (Chrome's origin trial) Expense registers read-only in-page tools for the browser's own agent too, on the same signed-in session.
What your assistant can do
Capture receipts
Upload a photo or a PDF of a receipt to the chat and it reads it and picks the category from your merchant history, the same as the web app.
Log drives in natural language
“Log the drive home from the office on Tuesday.” It geocodes the stops, works out the route, and prices the drive at the IRS rate for its date.
Answer questions about spending
“What did I spend on flights last quarter?” The answer comes from your own expenses.
Build and export reports
Create or close a report, move expenses into it, and export the PDF in one sentence instead of filling out a form.
Reconcile statements
Paste the bank statement and it finds every charge you never logged. Read-only: it writes nothing and leaves your expenses as they are.
Tax-season answers
Categories are the IRS Schedule C lines, so “what’s my meals and entertainment total?” is answered in the terms your tax form uses.
How to connect
- 1
Direct your assistant to the endpoint
Tell your assistant to connect to https://expense.labnotes.org/mcp (or just add it to your MCP configuration).
- 2
Log in and grant access
Your browser window pops up: sign in to your usual account and click Allow on the consent page.
- 3
It’s done. You control it anytime
Settings → Agents & API (MCP) lists every connected application, where you can remove one token or disconnect the whole app.
{
"mcpServers": {
"expense": {
"type": "http",
"url": "https://expense.labnotes.org/mcp"
}
}
}No headers or keys. The client discovers the sign-in flow itself. Claude and OpenAI connect the same way. Per-client setup instructions for Claude, Cursor, VS Code, ChatGPT, and more: Connect with MCP.
In the browser (WebMCP)
In browsers with WebMCP support (Chrome's origin trial), the in-page tools are there while you're signed in: list expenses, summarize spending, list reports. Read-only, same data as the MCP server, and anything that writes still goes through the MCP endpoint.
In the app, with nothing connected
Expense answers questions on its own too, with nothing to connect. On the Insights page you ask in plain words ("how much have I spent this year?", "where does my money go?") and the app computes the answer from your own expenses; the model only phrases it, it never supplies a number. A question that covers several months comes back with a chart, and the chart opens to the exact expenses behind it.
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 an hour, refresh tokens rotate, and only their hashes are stored. A connection reaches your own account and nothing else. Revoke one token, or the whole app, in Settings → Agents & API (MCP).
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.