Expense

io.github.assafPublished by GitHub account assafv1.0.0Updated Oct 25, 2026

Receipt tracker with no friction: receipts arrive by email and file themselves

VerifiedStreamable HTTPWeb executableProductivity & WorkflowFinance

Overview

AI-generated overview

Remote MCP server for a receipt-tracking app that lets an assistant capture receipts, log drives, query spending and manage expense reports.

What you can do
  • Capture receipts from photos, screenshots, PDFs, the clipboard or a connected mailbox, read for merchant, amount and category
  • Log drives and price them at the IRS rate for the trip date and type
  • Answer questions about your spending
  • Manage reports and export a year as a PDF per report or one ZIP of everything
  • Match a bank statement to expenses
When to use it
Useful if you track personal or small-business expenses and want an assistant to file receipts, log mileage, answer spending questions or reconcile a bank statement without manual data entry. Not intended for corporate expense policy, approvals or double-entry bookkeeping.
Requirements
A remote endpoint at expense.labnotes.org/mcp; no API keys. OAuth sign-in with an account (email login), where you click Allow. An account can be joined with an 8-character invite code from Settings.
Before you install
The assistant can write data: capture receipts, log drives, manage reports and match statements. Receipts and images are stored in the account, and receipts can be pulled from a connected Fastmail or Gmail mailbox. Accounts are isolated from each other, but everything belongs to the account, so other users on it can see the data.

Installation

In SourceWeft

  1. Open Expense in the dashboard and add it to a workspace.
  2. Connect the required credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.assaf%2Fexpense/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.

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

README

Expense

Expense is a seamless receipt tracking solution: receipts are automatically sent via email, mileage uses the tax rate provided by the IRS, and a smart AI assistant does your data entry so that you can forget about the process altogether.

PRODUCT.md is the map: what the product is, how it works, the pages a person uses, the architecture and data model, and the vocabulary. This file is the front door; that one is the orientation.

Screenshots

[Expense list: reports, receipts, and a mileage route]

[Receipt editor with the receipt image]

[Receipt with hand-drawn notes: the merchant and the total called out, and the receipt filed as Meals and entertainment]

What it does

Receipts come in from a photo, a screenshot, a PDF, the clipboard, a connected Fastmail or Gmail mailbox, or an MCP assistant; each one is read for merchant, amount and category, filed under an IRS Schedule C line, and kept with its image. Drives are mapped and priced at the IRS rate for the trip date and type. The year leaves as a PDF per report, with the receipts attached, or as one ZIP of everything. A warranty document dropped on the warranties page becomes a record you can find by how soon coverage ends. Installed from the Home Screen on a phone, it opens on your expense list.

Free, no card, no ads, no paid tier. Not built for corporate expense policy, approvals, or double-entry bookkeeping. The full tour, with the pages and the rules behind each one, is in PRODUCT.md.

AI assistants (MCP)

The app speaks the Model Context Protocol at https://expense.labnotes.org/mcp. An assistant connects with OAuth — you sign in and click Allow — so there are no API keys. A connected assistant can capture a receipt, log a drive, answer questions about your spending, manage reports, and match a bank statement.

json
// Claude — .mcp.json (no headers needed: the client discovers OAuth){  "mcpServers": {    "expense": {      "type": "http",      "url": "https://expense.labnotes.org/mcp"    }  }}

The reference is docs/mcp.md; the tools are listed in PRODUCT.md.

Accounts

Email is the login name, hashed with scrypt, with a signed-cookie session. Everything belongs to an account; an account has several users; accounts are fully isolated from each other. Sign up for a new one, or join an existing one with the 8-character invite code in Settings. Image keys are namespaced per account, so two accounts can never collide. More detail in PRODUCT.md and docs/accounts.md.

How it is built

One app, one Postgres database, no monorepo. React Router v8 in framework mode (SSR), where the URL tree is the filesystem; Prisma 8 contract-first, so prisma/contract.prisma is the schema and there are no migration files; images stored as bytes in Postgres rather than in object storage. Deployed on Vercel plus Supabase Postgres, where a push to main deploys. The diagrams are in PRODUCT.md.

Run it locally with pnpm dev; the environment variables, the connection poolers and the deploy path are in docs/operations.md and docs/deploy.md.

Documentation

DocumentWhat is in it
PRODUCT.mdWhat it is, how it works, the tour, architecture, vocabulary
AGENTS.mdThe invariants, commands and traps that bind a change here
docs/files.mdEvery notable file, one line each
docs/operations.mdEnv vars, poolers, secrets, incident history
docs/deploy.mdDeploy ordering and the smoke checks
docs/extraction.mdHow a receipt is read, and the caps around it
docs/receipts-by-email.mdThe Fastmail forwarding path
docs/email-connections.mdConnected mailboxes and inbox review
docs/reconciliation.mdMatching a statement to expenses
docs/accounts.mdAccounts, users, invites
docs/mcp.mdThe assistant-facing reference
docs/code-style.md · docs/testing.md · docs/dark-mode.mdConventions

Source: README.md at commit cf18ba6

Tools

0
This server asks you to sign in, so SourceWeft could not read its tools without an account and has not indexed them. What a connected account sees can depend on that account and its permissions.

Version history

1
  1. v1.0.0LatestSep 16, 2026

Score

75% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

    Declare a license in the repository or the registry entry.