For employeesKeep your points · get paid back
For finance & HR teamsInstant reimbursement, benefits, clean books
For AI agentsA policy and a statement for every agent
ExpensesWalletReportsExpense AgentAboutFAQReferStart free
MCP server · OAuth · 17 tools

Is there an MCP server for expense reports?

Yes. ExpenseOS runs a hosted Model Context Protocol server at https://mcp.purafi.ai/mcp that does expense reporting end to end, not just expense lookup. It exposes 17 tools, authenticates with OAuth rather than API keys, and is listed in both ChatGPT's app directory and Claude's connector directory, so in those two clients you never need the URL at all.

Free, no company account needed. Already using it? Open your dashboard →

The 17 tools

Tool names and counts are two of the things people compare across connectors, so here is the whole list rather than a summary. Only the first works before you sign in; the rest operate on your own ledger.

get_capabilitiesExplains the agent. The one tool that works before you sign in.
my_accountYour saved approver, employee ID, department, cost centre and receipt policy, so nothing gets asked twice.
add_receiptSaves a receipt from a photo, PDF, screenshot or a plain sentence, keeping the original image for the audit trail.
my_receiptsThe unsubmitted ledger, grouped by trip or by month, with totals.
log_mileageTurns a described drive into a mileage expense. The distance is routed server-side and priced at the IRS rate for the date you drove.
update_expenseCorrects an expense already in the ledger, or attaches a receipt image to one that was missing it.
delete_expenseRemoves an unsubmitted expense.
my_dashboardThe whole picture in one card: unsubmitted total, money owed to you, and every report with its status.
recall_reportPulls a sent report back for editing. The approver's link stops working immediately.
delete_reportDeletes a draft. Its expenses go back to the ledger rather than being destroyed.
set_my_expense_rulesSaves your approver, employee ID, department, cost centre and whether your company requires a receipt for everything.
import_my_historySeeds the ledger from an expense spreadsheet you paste in as CSV.
make_my_expense_reportBuilds the report and every file version of it. Scope it to a trip, a month or a date range.
submit_my_reportEmails your approver the report with a one-click approve button, valid for 14 days. They need no account.
email_my_reportSends the files to you, your accountant or an accounts-payable inbox, with no approval link attached.
mark_reimbursedCloses a report as paid and stops its days-owed counter.
my_reimbursement_statusEvery report's state, with a counter for how long you have been waiting.

How it authenticates

OAuth 2.1 with PKCE and dynamic client registration, so an MCP client can register itself and hand you to a normal browser sign-in. There is no API key to generate, paste or leak, and ExpenseOS never sees a password: you sign in with Google, Microsoft or a six-digit email code.

Authentication is per tool rather than per server. The capabilities tool answers before you have an account, which is how an assistant can explain the product to someone who has not signed up yet. Every other tool fails closed with a sign-in prompt.

Why the mileage and the parsing happen on the server

Two things are deliberately not left to the model. Distance is routed server-side with a mapping service rather than estimated, and the IRS rate is looked up for the date of the drive rather than recalled from training data. A general-purpose model asked for a mileage rate will answer confidently with whatever it learned, which in 2026 is wrong for roughly half the year because the rate changed on 1 July.

Receipt parsing is the same story: the host model's read of an image is used as a pre-fill, but the stored record is built server-side, so the same receipt produces the same ledger row whether it was dropped into ChatGPT or Claude.

What it will not do

ExpenseOS Agent prepares and tracks reports. It does not move money, enforce a policy, or decide whether an expense is allowed. Your company reimburses you exactly the way it does today. Being clear about that is the point: it slots into whatever process you already have instead of asking your employer to adopt something.

One tool reaches outside your account: submitting a report sends a real email to the approver you name. It is annotated accordingly, and the agent confirms the address with you before it sends.

Questions people ask

What is the ExpenseOS MCP server URL?

https://mcp.purafi.ai/mcp. It speaks Model Context Protocol over streamable HTTP and authenticates with OAuth, so any MCP client can use it. In ChatGPT and Claude you do not need the URL at all, because ExpenseOS is listed in both directories.

How many tools does the ExpenseOS MCP server expose?

17. They cover the whole loop: adding and correcting expenses, logging mileage, reviewing the ledger, building a report, submitting it for approval, emailing the files, and tracking reimbursement. Only get_capabilities works before you sign in.

Does it work in ChatGPT as well as Claude?

Yes, and it is the same account and the same ledger in both. It is a standard Model Context Protocol (MCP) server exposing 17 tools, so a receipt you add in ChatGPT is in the report you build in Claude.

Is there a Claude connector for expense reports?

Yes. It is in Claude's connector directory: Settings, Connectors, Browse, then search for "PuraFi Expenses", which is the name the listing still carries. You can also add it by hand as a custom connector using the server URL, since it is a standard Model Context Protocol server.

Can ChatGPT file my expense report?

Yes. It is listed in ChatGPT's app directory under Business & Operations, still under its former name "PuraFi Expenses" while that is updated. Add it, sign in once, then drop receipt photos into the chat and ask for your report. ChatGPT renders your ledger and the finished report as cards you can act on.

How is this different from Expensify's MCP server?

Expensify's MCP server is read-only and needs an Expensify account. Its own documentation says it provides read-only access through a Search tool and cannot approve reports, edit expenses, reimburse payments or manage workspace settings, so you still file the report inside Expensify. ExpenseOS's agent is where the report is created: it captures the expense, builds the files and sends the approval email, and you do not need a corporate expense platform at all.

Can the agent move money or approve things itself?

No, by design. It prepares and tracks reports. It does not reimburse you, enforce a policy or decide whether an expense is allowed. Your company pays you exactly the way it does today. The only thing it sends outside your account is the approval email you ask it to send.

Where is my data, and can I delete it?

Your ledger, reports and receipt images are stored per account for as long as you keep the account. You can download everything as a ZIP whenever you like, and permanently delete your account and every file in one click.

Is the ExpenseOS Agent free?

Yes, and it stays free. Receipts, mileage, reports, PDF and Excel exports, one-click manager approval and reimbursement tracking are all included at no cost, with no credit card. The paid ExpenseOS platform is a separate product for companies; it adds instant reimbursement the moment a report clears policy.

Does it log mileage at the IRS rate?

Yes, and it works out the distance for you. Describe the drive in a sentence and ExpenseOS routes it server-side with a mapping service, then applies the IRS standard mileage rate for the date you drove, including 2026's mid-year rate change. It never asks the model to guess a distance or recall a rate.

Adding it by hand

ExpenseOS is listed in both directories, so you should not need this. If your client has no directory, add this as a custom Model Context Protocol connector and sign in when prompted:

https://mcp.purafi.ai/mcp

Start with one receipt

Add the app, send it a photo, and see the ledger fill up. The first report usually takes one coffee break.