A petty cash float on the imprest system: vouchers out of the tin, a count that reconciles them to the minor unit, and the replenishment that puts the float back. You open a tin with an imprest amount and a custodian, and then you type the receipts as they come: amount in whole minor units, date, category, description, payee, receipt reference. Whenever you count the cash, reconcile tells you what the paperwork said the tin should hold, what you actually counted, the difference to the minor unit, and every voucher that count covers, all marked reconciled. A count is treated as a FACT, so it moves the book balance: the difference is carried forward as an over or short rather than re-reported at every later count, which is what makes a tin that is short by a little every month readable as a run rather than as one number. When the tin runs low, replenish_request works out what the cheque has to be, and this is the decision the whole server rests on: it is imprest minus balance, never the sum of the vouchers. The two differ by exactly what the counts found over or short. The difference comes back as its own cash_over_short journal line rather than folded into an expense category where it would look like postage, and under the imprest system the petty_cash account does not move at a replenishment at all: the journal credits cash and debits the expenses per category, in the cash book's own account ids, so a category spelled Office Supplies, office supplies and OFFICE SUPPLIES is one account and not three. A voucher larger than the balance on its own date is refused, and so is a back-dated one that would make any LATER day negative, which the at-the-date check alone does not catch. A reconciled voucher cannot be deleted, because the cash it took out was already counted. No balance is stored anywhere: every balance is derived on the call from the imprest, the top-ups, the vouchers and what each count found.
reconcile is free, unlimited on every tier and is the tool you want to reach for most often, so leave it enabled permanently and count the tin as often as you like. voucher_add is the one that moves the meter, twenty a calendar month, and voucher_delete gives a slot straight back while the voucher is still uncounted, so a mistyped receipt costs nothing but the retype.
| You say | Tool |
|---|---|
| Open a EUR 500 office float on 2026-03-01, Anna holds the tin. | float_open |
| Stamps 1,250 minor units on 2026-03-02, postage. Taxi 3,480 on the 5th, travel, receipt 4471. | voucher_add |
| I counted 29,795 in the tin on 2026-03-31. What is the difference, and what does the replenishment cheque have to be? | reconcile |
The cheque is not the sum of the vouchers, and nothing in the voucher trail says so. Measured on this server's worked month: a 50,000 minor unit imprest, five vouchers totalling 20,194, so the paperwork says the tin holds 29,806 on the 31st. It holds 29,795. The count is short by exactly 11 minor units, eleven cents no receipt will ever explain. The replenishment is therefore 20,205, not 20,194. Reimbursing the voucher total instead is not obviously wrong: it is what the paperwork adds up to, it reconciles against the receipts, and the next count comes back short by 11 again, which reads as a fresh 11 rather than the same one. The unit suite runs three cycles of exactly that and the float ends at 49,967 against a 50,000 imprest, 33 minor units light, with three clean-looking reconciliations behind it, each reporting a difference of exactly 11 and nothing worse. The tin gets smaller and no single number in the record ever looks wrong.
The file is .cursor/mcp.json, and the key inside it is mcpServers.
| Scope | Path |
|---|---|
| This project only | <project>/.cursor/mcp.json |
| Every project | ~/.cursor/mcp.json |
{
"mcpServers": {
"petty-cash": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@theluckystrike/mcp-petty-cash"]
}
}
}
The Customize page shows the server and its tools once it has started.
The npm publish of @theluckystrike/mcp-petty-cash is pending; until then use the .mcpb bundle or a clone and build from the latest release.
The same server runs at https://mcp.zovo.one/mcp/https://mcp.zovo.one/mcp/petty-cash over MCP streamable HTTP, no install. Mint a free token with curl https://mcp.zovo.one/mcp/token, or use a Pro key. It has no filesystem, so a file comes back as a one-hour download link.
{
"mcpServers": {
"petty-cash": {
"url": "https://mcp.zovo.one/mcp/https://mcp.zovo.one/mcp/petty-cash",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
The current field table marks `type` as required, with `stdio` for a locally launched server, so write it out rather than relying on command and args alone. The other documented restriction is that `envFile` is stdio-only: a remote HTTP or SSE server does not read it, and its headers belong in the config.
Free: reconcile is free and unlimited on every tier. Whether the cash in the tin matches the paperwork is the question this server exists to answer, and a free tier that withholds the answer is a demo rather than a tool, so the count and its difference are never metered. voucher_delete and topup_record are free for the same reason: a voucher typed in twice would otherwise cost a slot with no way back but a key, and the cash physically going back into the tin is not a feature to sell. The meter is on the volume of record keeping instead: one float, and twenty vouchers a calendar month, which is a real one-tin office. Pro is $19 once, verified offline.
<project>/.cursor/mcp.json applies to that project and can be committed, which suits a server tied to one client. ~/.cursor/mcp.json applies everywhere. Both are managed from the Customize page.
The current field table marks type as required, with stdio for a locally launched server, so include it. Pointing at a remote endpoint, envFile is documented as stdio-only and is not read.
Servers in Cursor's marketplace get an Add to Cursor button. The deeplink reference currently documents prompt, command and rule links only, so for MCP Petty Cash pasting the config block above is the supported route.
MCP Petty Cash in detail · The same server in Claude Code and VS Code · Every server in Cursor · Guides · Cursor docs · Buy Pro