Labnotes
A feature can be finished and still be unusable. Expense has had an MCP server for a while: point an assistant at https://expense.labnotes.org/mcp, it discovers the OAuth flow, you sign in once. That part works. The part that did not was the last mile. The how
There are four ways for the same receipt to enter Expense: forward it by email, drag the file into the editor, let the MCP tool fetch it, connect a mailbox and have it imported for you. Each route used to check metadata on its own, so the same PDF arriving
The search box on the expense list in Expense understands fields now. report:, category:, and merchant: match exactly, case-insensitive. description: matches anywhere in the description. Values can contain spaces, so report:2026 travel is one filter and not two. Repeat a key and the values OR together. Mix keys
Every receipt that lands in Expense has to become four fields: merchant, date, amount, category. A model can do that. Model calls also cost money and seconds, so the pipeline is built around not making them. Most receipts never reach one. Text comes first. An email body or a PDF