Connector guide
Work your budget from a chat window.
Kharcha is a remote MCP server. Add it once to ChatGPT or Claude and the assistant can read your budget, and write to it when you say so.
What this is
MCP — the Model Context Protocol — is how assistants connect to outside tools. ChatGPT calls them connectors, Claude calls them custom connectors, and both speak the same protocol, so one connection serves either.
You sign in with your Kharcha account during setup and approve the connection. The assistant never sees your password, and it only ever reaches your own budgets — the server checks that on every single call, whatever the assistant claims about who it is.
The connector URL is:
https://staging-api.merokharcha.com/mcp
Add it to Claude
- Open Settings → Connectors and choose Add custom connector.
- Name it Kharcha and paste the URL above.
- Click Connect. A Kharcha sign-in page opens — sign in and approve access.
- Start a chat and ask “what budgets do I have in Kharcha?”. If it answers, you are done.
Custom connectors are available on Claude's paid plans, and on Team and Enterprise an admin may need to allow them first.
Add it to ChatGPT
- Open Settings → Connectors and create a new connector.
- Paste the URL above and choose OAuth as the authentication method.
- Sign in to Kharcha in the window that opens and approve access.
- In a chat, turn the Kharcha connector on for that conversation, then ask it to list your budgets.
Connector availability depends on your ChatGPT plan and, in a workspace, on what your admin has enabled.
Your first conversation
There is no “currently open” budget in a chat, so the assistant asks which one to use and then carries that id through the conversation. A good opening is simply:
Show me my Kharcha budget for this month. What is still sitting in Ready to Assign?
Things people ask for most:
- Where did the money go? — “Spending by category for July.”
- Fix an overspend — “Groceries is over by 2,400. Take it from Eating out.”
- File the strays — “Which expenses last month have no category?”
- Set up the month — “My salary landed. Assign it the same way as last month.”
- Reshape the budget — “Add a Subscriptions group and move it above Fun money.”
What it can do
Reading. Available to any connection.
| Tool | What it does |
|---|---|
| list_budgets | Your budgets. Every other call needs one of these ids. |
| list_accounts | Accounts with their current balances. |
| list_categories | Categories, grouped, with their labels. |
| list_category_labels | Spending labels and how many categories carry each. |
| list_transactions | Transactions, newest first. Filter by account, category, payee, or date range. |
| get_budget_month | One month: assigned, activity, and available per category, plus Ready to Assign. |
| spending_report | Totals per category over a date range. |
Money. Each of these asks you to confirm first.
| Tool | What it does |
|---|---|
| create_account | Add a checking, savings, credit card, or cash account. |
| add_transaction | Record a single transaction. |
| categorize_transaction | File an existing transaction under a category. |
| assign_to_category | Set a category's assigned total for a month. |
| move_money | Move assigned money between categories within a month. |
The shape of the budget. Headings, names, order, and labels — no money moves.
| Tool | What it does |
|---|---|
| create_category_group | Add a heading for categories to sit under. |
| rename_category_group | Rename a group. Nothing else moves. |
| reorder_category_groups | Set the top-to-bottom order of the groups. |
| rename_category | Rename a category, keeping its money and history. |
| set_category_label | Put a category under a spending label, or clear it. |
Statement import. A staged batch you review before anything is written.
| Tool | What it does |
|---|---|
| stage_transactions | Stage rows read out of a statement. Nothing hits the ledger yet. |
| append_import_rows | Add more rows to a batch, 500 at a time. |
| get_import_batch | Row counts, duplicates, and what is selected. |
| set_import_selection | Choose which staged rows will be imported. |
| categorize_import_rows | Assign categories to staged rows before committing. |
| commit_import | Write the selected rows as real transactions. |
| discard_import | Throw the batch away. |
Some things are deliberately left to the app: deleting transactions, archiving categories, setting up loans, and creating spending labels.
Rules it follows
- Nothing is written on a hint. Every tool that changes money or records transactions refuses the first call and returns a plain-language summary of what it would do. The assistant has to show you that and call again only after you agree.
- It is your data or nothing. Identity comes from the token you approved, never from anything the assistant sends. A budget, account, or category id that is not yours comes back as “not found”.
- Categories are never guessed. The assistant reads your real categories first, and is told to say so when nothing fits rather than picking the nearest one.
- Amounts are exact. Money is handled in whole minor units — 1,450.00 is sent as 145000 — so nothing is lost to rounding, and an expense is never a negative number.
- Ready to Assign stays put. The system category and its group cannot be renamed, reordered, or spent from directly.
Importing a statement
Give the assistant a statement — a PDF, a spreadsheet, or pasted text — and tell it which account it belongs to. It reads the rows and stages them; the ledger is untouched until you say commit.
- Staged. Every row is checked against what you already have. Rows that look like duplicates, and rows it could not read, start deselected.
- Reviewed. Ask for the counts, change what is selected, and get the expenses categorised while they are still staged.
- Committed. Only the selected rows become transactions. This step cannot be undone in bulk, so it needs your explicit yes.
Judge an import by the row counts the assistant reports, not by the closing balance printed on the statement. A statement balance can agree by coincidence while rows are still missing.
If something goes wrong
- The assistant says it has no Kharcha tools. The connection was approved but no permissions came through. Remove the connector and add it again; if it persists, tell us — it is a setting on our side, not yours.
- It asks you to sign in again. Access tokens expire. Reconnect from the connector settings.
- It picked the wrong budget. Say which one by name. There is no default budget in a chat, by design.
- An amount looks a hundred times too big or small. Ask it to re-read the transaction. Check the figure in the app before approving anything that depends on it.
Disconnecting
Remove the connector in ChatGPT or Claude, and the access it was granted stops working. You can also revoke it from your Kharcha account settings — the connection is an app you authorised, and it can be withdrawn without touching your data.
Anything the assistant already wrote stays in your budget, and you can edit or delete it in the app like anything else.