Ask in your own words
No filters, no report builder, no query language. Ask the question the way you would ask a bookkeeper, and the assistant works out which figures it needs.
Snap Receipt runs a Model Context Protocol server. Connect the AI assistant you already use — Claude, ChatGPT, Grok, Claude Code, Codex — and ask about job costs, supplier prices and quarter-end figures in plain language. Read-only, on Pro.
What has the Oakfield framing phase cost me so far?
Oakfield House — Framing has $18,400 recorded across 34 receipts.
That is 84% of the $22,000 budget you set.
get_job_cost · read-only
This answers the ones you did not. A report has a shape decided in advance; a conversation does not, so the awkward one-off question finally has somewhere to go.
No filters, no report builder, no query language. Ask the question the way you would ask a bookkeeper, and the assistant works out which figures it needs.
There is no write tool to call. The server registers an explicit list and nothing else exists — an assistant cannot edit a receipt, reassign a job or delete anything, however it is prompted.
A coverage tool hands the assistant an explicit list of unanswerable questions — revenue, mileage, per-vehicle costs. It declines those instead of inventing a plausible number.
Because every line of every receipt is stored, questions reach material level: what a specific fitting has cost across a build, and which supplier was cheapest on it.
Run several accounts and the assistant names which one it is reading before it reports a number, rather than quietly answering about the wrong business.
The back-and-forth at quarter-end is a series of lookups. Point the assistant at the data and answer them in one sitting instead of over a week of emails.
There is no token to create, copy or keep safe. You sign in with the email code you already use for the app, and choose which business the assistant can read.
In the app, on Pro, open Settings → AI assistant access and tap Connect Claude. The link is copied for you — it is the endpoint below.
On claude.ai, open Settings → Connectors, choose Add custom connector and paste it. Claude Desktop and the Claude mobile app pick it up from there.
Sign in with the email you use for the app, choose a business and tap Allow. Then ask your first question — start with what your data looks like.
https://api-prod-expense-tracker.appsvanta.com/mcp/expense-tracker
Streamable HTTP. Clients that support MCP sign-in find where to sign in on their own. Responses may arrive as a stream (text/event-stream), so a script should read them with an MCP client library rather than parsing them itself.
Any MCP client that speaks streamable HTTP works. The app walks you through these two under Advanced.
Run in your terminal, then type /mcp to sign in
claude mcp add --transport http snap-receipt https://api-prod-expense-tracker.appsvanta.com/mcp/expense-trackerSigns in the same way Claude does, so there is no token to create.
Add to ~/.codex/config.toml
[mcp_servers.snap_receipt]
url = "https://api-prod-expense-tracker.appsvanta.com/mcp/expense-tracker"
bearer_token_env_var = "SNAP_RECEIPT_TOKEN"Needs an access token: create one in the app under Advanced → Other apps, which can email you the setup. Scripts send the same token as an Authorization: Bearer header.
Every one of these is served by a tool that ships today. Ask them in your own words — these are phrasings, not commands.
When a client asks what it cost
“What has the Oakfield framing phase cost me so far?”
The full breakdown for that job — per category, per supplier, against the budget you set.
“Which jobs are closest to going over budget?”
Jobs with their rolled-up cost and budget, so the ones running hot are obvious.
“Total everything I have spent for the Ellis job across all four phases.”
Client-level cost rolled up across every job attached to them.
“Which receipts still are not costed to a job?”
The unassigned pile with up to three suggested jobs each, and the reason for each suggestion.
Before the next quote goes out
“Is copper pipe getting more expensive, and who is cheapest on it now?”
Unit price over time from your own receipts, broken out by supplier for a like-for-like comparison.
“Compare Winsupply and Ferguson on the items I buy from both.”
A head-to-head on shared items only — the comparison that actually means something.
“Which suppliers did I use only once last year?”
Supplier spend filtered to a single visit, with the raw spellings each record folds together.
“What are the ten materials I spend the most on?”
Top items across every receipt, ranked by spend, frequency or quantity.
The Sunday sweep
“What does my data look like — how far back does it go, and what is missing?”
Receipt count, date span, jobs, clients and suppliers, plus what the product cannot answer at all.
“How many scans have I used this month?”
Plan, feature access and current usage against your limits.
“Show me every receipt over $500 from the last three months.”
Structured search with the filters combined, and a true total rather than a sum of one visible page.
“Read me the whole Winsupply receipt from 4 August.”
That receipt in full — every line item, quantity and unit price.
When the accountant is waiting
“Pull my expenses for Q2 and break them down by category.”
Tax-ready totals for the quarter, per-category amounts, sales tax paid, and the count of receipts with no photo attached.
“Which receipts am I missing a photo for? Biggest first.”
The audit-trail gap, largest amount first, with the total for the period beside it so you can state it as a proportion.
“How much did I spend on tools and equipment this year versus last?”
A category breakdown for the period with deltas against the baseline you name.
“What did I pay in sales tax across the year?”
The roll-up from the tax report, taken from what was printed on the receipts.
A coverage tool hands the assistant an explicit list of what this product has no data for, and instructs it to decline those instead of estimating. That list is published to the model, not buried in a disclaimer.
Did I make money on that job?
I cannot answer that. Snap Receipt records expenses only — there is no revenue, contract value or draw schedule in it, so profit and margin are not computable.
What I can tell you is what it has cost: $18,400 against the $22,000 budget you set, with 34 receipts on file.
get_data_coverage · declined
The server registers this list and nothing else — there is no auto-discovery and no write tool anywhere in it. That is what makes read-only a property of the build rather than a promise.
Which account the answers are coming from — asked before anything is reported.
whoamiWho you are, the active account, and the plan it is on.list_accountsEvery account you can reach, and your role in each.switch_accountPins one account for the conversation. Survives a client restart.get_active_accountWhich account is being read, and whether you chose it.What is on file — and, deliberately, what the product cannot answer.
get_data_coverageReceipts, date span, jobs, clients, suppliers, plus the list of unanswerable questions.get_account_statusPlan, feature access, and this month’s usage against your limits.The pile itself, searchable in whatever shape the question needs.
find_receiptsStructured search across every receipt. Filters combine.get_receiptOne receipt in full, with every line item, quantity and unit price.list_unassigned_receiptsReceipts not yet costed to a job, each with up to three suggested jobs and a reason.list_receipts_missing_imageThe audit-trail gap: receipts with no photo on file, largest first.Built from line items, so it answers at material level rather than category level.
find_item_price_historyWhat one material has cost over time, broken out by supplier for like-for-like comparison.list_top_itemsWhat you buy most, by spend, frequency or quantity.Cost against the work it was bought for.
list_jobsJobs with their rolled-up cost and budget.get_job_costFull breakdown for one job, per category and per supplier.list_clientsCustomers, with cost rolled up across all their jobs.One canonical record per supplier, with every raw spelling folded in.
get_spend_by_merchantTop suppliers for a period, with visits, average ticket and folded aliases.get_merchant_profileDeep dive on one supplier, optionally head-to-head with a second.The aggregate views, and the figures a quarter-end conversation needs.
get_spend_by_categoryCategory breakdown for a period, with deltas against a baseline.get_spend_summaryHeadline spend with trend, peak period and a period-over-period comparison.get_tax_reportTax-ready figures for a quarter, year, month or custom range.Claude gets access through your sign-in, not a key you paste. The tokens behind it are stored only as hashes, and each one it holds expires within the hour.
You pick the business when you connect, and the connection reads that one. Switching to another business you belong to is an explicit step.
Every connection is listed in the app with when it was last used. Disconnecting one stops it immediately and leaves the others working.
The assistant can see that a receipt has a photo attached. It cannot see, fetch or forward the photo itself.
Pro. It is not on Free or Plus. Access follows the plan of whoever owns the business account.
No. The server exposes a fixed list of read tools and registers nothing else — there is no write tool to call, so no prompt can make it edit a receipt, reassign a job or delete anything. Where you ask it to assign receipts to jobs, it returns suggestions for you to apply in the app.
No. Image data and URLs never leave the app. The assistant can see that a receipt has a photo attached, not the photo itself — for that it sends you to the app.
Not for Claude. You paste one link, sign in with the email code you already use for the app and approve — nothing secret is shown, copied or stored in the assistant’s settings by you. Access tokens still exist for Codex CLI and scripts: each is shown once, stored only as a hash, and can be disconnected on its own in the app.
Any client that speaks the Model Context Protocol over streamable HTTP. Claude on the web, desktop and mobile, and Claude Code, connect by signing in. Codex CLI and scripts use an access token from the app. Responses may arrive as a stream (text/event-stream), as that transport allows — if you call the endpoint from your own script, use an MCP client library rather than parsing the reply yourself.
One business at a time. You choose which when you connect, and the assistant reads that one. It names the active business before reporting figures, and it can switch to another business you belong to when you ask.
In the app, under Settings → AI assistant access. Every connection is listed with when it was last used, and disconnecting one stops it immediately without touching the others.
No, and it is instructed not to try. It hands back figures from your receipts and refers deductibility questions to your accountant, because that depends on your situation rather than on what is on the receipt.
AI assistant access is on Pro. Connect Claude from the app, under Settings → AI assistant access.
No bank linking · No manual entry · No spreadsheets