Documentation
Updated 25 October 2026
Connecting
Spendpoint is a remote MCP server at https://spendpoint.ai/mcp with OAuth 2.1. Any assistant that supports custom connectors can use it.
- Claude (web, desktop, phone): Settings › Connectors › Add custom connector › paste the address. Claude opens the consent page.
- ChatGPT: Settings › Apps & Connectors › Create › MCP server, authentication OAuth › paste the address. The first time, tell ChatGPT to use Spendpoint; afterwards it knows.
- Grok: Settings › Connectors › Add › paste the address. Grok opens the consent page.
- Cursor: add an MCP server with the address; Cursor registers itself and opens the consent page.
- Claude Code:
claude mcp add --transport http spendpoint https://spendpoint.ai/mcp, then authenticate from the/mcpmenu.
Other assistants that support custom MCP connectors with OAuth work the same way. An assistant Spendpoint has not seen before is offered recording first; ask [email protected] to enable reading for it.
On the consent page, create an account with your email address and a password, or sign in. A new account receives a verification link by mail; open it, return to your assistant, and connect again.
Trust the ledger, not the summary
An assistant can report a receipt as recorded when the service refused it. Spendpoint refuses when lines do not add up, when a category is unclear, or when an entry looks like a duplicate, and it tells the assistant why. Most assistants then ask you and try again; some have claimed success instead. After recording, ask your assistant to read the entry back, or to list your recent expenses. What it shows comes from the service, and if the entry is not there, it was not stored.
What your assistant can do
| Tool | What it does |
|---|---|
| Capture Receipt | Records one receipt: merchant, date, total, VAT, currency, every line with its quantity and amount, and the transcription; when printed, also the receipt number, the merchant's tax number, the time, how it was paid, and the VAT summary per rate. Lines must add up to the total. A likely duplicate is refused until you confirm it is a separate purchase, and an unclassified entry is refused until your assistant has asked you for a category. |
| Amend Expense | Replaces an entry with a corrected one. The original stays, retired and linked. |
| Void Expense, Restore Expense | Retires an entry that should never have been recorded, with your reason; and brings a voided entry back if the void was the mistake. |
| Set Reimbursement | Marks an entry claimable, claimed or paid when you say so, or personal again. Each change is added to the entry's history; nothing is edited. A label you give at recording, such as a trip or a project, groups entries. |
| List Expenses, Get Expense | Finds entries by date, category, merchant, currency, label or reimbursement state, and fetches one in full. |
| Report | Sums your current entries by category, merchant, month, label or in total, per currency, over a date range, optionally for one label or one reimbursement state. Computed by the service. |
| Set Budget, List Budgets | A monthly budget per category and currency, set in your own words. When a receipt is recorded, the entry read back says how the month stands against each budget it touched: spent, remaining and the percentage used. Reported, never enforced. |
| Export Ledger | Your whole ledger as JSON, or as CSV per entry, per line or per VAT rate. |
| List, Add, Update Category | Your own category list, started from a standard set of seventeen. Codes are permanent; a category can be retired, never deleted. |
| List, End Connections | Which assistants are connected to your account, and how to disconnect one. |
Two resources describe the data: the data dictionary, straight from the database catalog, and your category list.
Ask your assistant what you can do with Spendpoint, or what is new, and it answers from the guide, the same text it reads.
Your account
- Your email address is your identity. It is verified once, by a link that lives for a day, and then kept only as a keyed hash.
- Forgotten your password? Request a reset link. Setting a new password ends every assistant connection; connect them again afterwards.
- To leave, delete your account with your email address and password. Everything goes at once; backups age out within 35 days. Export first if you want to keep your ledger.
- Fair use: 300 captures a day, 100 categories, one message an hour to an address.
For developers
- REST API described at /openapi.json; the same operations as the tools, under the same OAuth tokens.
- OAuth 2.1 server metadata at
/.well-known/oauth-authorization-server; dynamic client registration; PKCE S256 only; scopesexpenses:writeandexpenses:read. Clients on known assistant hosts are approved to read automatically; others on request. - MCP: Streamable HTTP, stateless, JSON responses, one JSON-RPC message per request.
- Amounts travel as decimal strings exactly as printed and are stored as integer minor units with the currency's exponent.
Where things run
One server in Stockholm, Sweden, behind Cloudflare. PostgreSQL with row-level security between owners. Nightly encrypted backups kept for 35 days in the same region. Mail through Amazon SES from [email protected].