Connect your AI assistant to your budget data
Frum Finance runs an MCP server that lets AI assistants such as Claude, ChatGPT, or Cursor read your own budget numbers and help you plan. You stay in control: you sign in, you approve each permission, and you can revoke access at any time.
https://api.frum.finance/mcp as a remote MCP connector in your AI
app, sign in with your Frum Finance email and password (plus 2FA if you use it),
approve the permissions, and start asking questions like "How did we do against
budget last month?"
What is MCP?
MCP (Model Context Protocol) is a standard way for AI apps to talk to other services. When your assistant is connected, you can ask it things like:
- "What did we budget for groceries in June, and how much did we actually spend?"
- "Pull up my annual insights for last year and summarize the trend."
- "Show my YNAB account balances and this month's transactions."
- "Save this draft monthly budget for October."
The assistant fetches live data from your Frum Finance account instead of guessing.
Before you start
- You need an active Frum Finance account with a verified email address. New connectors can only be approved while you are signed in.
- If your account uses 2FA (TOTP), have your authenticator app handy: the approval screen requires a fully signed-in session.
- For YNAB tools, your YNAB account must be linked in Frum Finance first (Settings, then YNAB).
-
Alpha members: use
https://api.alpha.frum.finance/mcpinstead of the production URL everywhere below.
Connect your app
All three apps below follow the same pattern: add the server URL, a browser window opens, you sign in and approve, and the app is connected.
Claude (Desktop or web)
- Open Settings, then Connectors, then choose Add custom connector.
-
Enter
https://api.frum.finance/mcpas the remote MCP server URL. - A Frum Finance sign-in page opens. Sign in with your email and password, and complete 2FA if prompted.
- Review the permission list (see What you are approving below), then choose Allow.
- Back in Claude, enable the connector for your conversation and try "What are my budget categories for this month?"
ChatGPT
- Open Settings, then Apps & Connectors (in developer mode this is under Connectors), and choose Create / Add connector.
-
Choose MCP, enter
https://api.frum.finance/mcpas the server URL, and pick "No authentication" at the connector level: sign-in happens through Frum Finance's own login page in the next step. - Start a chat that uses the connector. A Frum Finance sign-in page opens; sign in and complete 2FA if prompted.
- Review the permission list and choose Allow.
- Ask "Show my budget for this month" to confirm the connection works.
Cursor
- Open Cursor Settings, then Tools & MCP, then Add Custom MCP (or "New MCP Server").
-
Add a remote server of type HTTP with the URL
https://api.frum.finance/mcp. - Cursor opens a browser for authentication. Sign in to Frum Finance, complete 2FA if prompted, and choose Allow on the permission screen.
- Back in Cursor, refresh the MCP panel: the server should show connected tools.
https://api.frum.finance/mcp over Streamable HTTP. The app discovers
the sign-in flow automatically and opens the approval page in your browser. Do not
paste passwords or tokens into the AI app itself; there is nothing to paste, and
the browser flow is the whole setup.
What you are approving
The approval screen lists exactly what the assistant may access. Each permission (called a "scope") unlocks a specific set of tools:
| Permission | What the assistant can do with it |
|---|---|
| profile:read | See your basic profile: name, email, household setup. |
| budgets:read | Read your monthly and annual budget rows, and your budget history (up to a year at a time). |
| insights:read | Read your insights reports: how your numbers compare with similar families in the community, the same reports you see in the app. |
| ynab:read | Read your linked YNAB data: categories, plan months, account balances, and transactions (newest first, a month at a time). YNAB access is read-only, always. |
| budgets:write | Save budget drafts: monthly rows (same confirmation step as saving in the app) or annual rows. Every save is logged with which app made the change. |
ynab:read. Only approve budgets:write if you actually
want the assistant to save budgets for you.
The tools your assistant gets
These are the actions the MCP server offers today. If a tool fails with a permission error, reconnect and approve the matching scope.
| Tool | Needs | What it returns |
|---|---|---|
get_my_profile |
profile:read | Your profile, same as the app's account page. |
get_my_budgets |
budgets:read | One month's budget rows: goal and spend per category. |
get_my_budget_history |
budgets:read | Several months of budgets in one call (up to 12 months). |
get_my_annual_budgets |
budgets:read | A year's budget rows. Never blocked by missing monthly data. |
get_my_insights |
insights:read | Monthly insights: your categories against your community cohort. |
get_my_annual_insights |
insights:read | The annual report envelope. |
get_my_ynab_categories |
ynab:read | Your YNAB categories and how they map in Frum Finance. |
get_my_ynab_months |
ynab:read | A YNAB plan month: budgeted, activity, balances, income. |
get_my_ynab_accounts |
ynab:read | Your open YNAB accounts and balances. |
get_my_ynab_transactions |
ynab:read | A month of YNAB transactions, newest first, 500 per page maximum. Amounts are in YNAB "milliunits": 1000 means $1.00. |
save_my_monthly_budgets |
budgets:write | Save monthly budget rows, with the same monthly confirmation step as the app. |
save_my_annual_budgets |
budgets:write | Save annual budget rows. |
How your connection stays safe
- You are the only one who can approve. Approval requires a full sign-in (email, password, 2FA). An AI app can never connect silently.
- Approval is per app. Each app gets its own connection and its own permission list; approving one does not approve another.
- Tokens are meaningless to steal. Access and refresh tokens are random values stored only as hashes on our side, and they expire. Sign-in codes work once.
- Revoking is immediate. Disconnect the connector in your AI app, or contact support: every token for that connection stops working at that moment, including tokens already handed out.
- Writes are guarded and logged. Saving budgets through the assistant runs the exact same checks as saving in the app (including the YNAB monthly confirmation), and each save is recorded with the app that made it.
Manage or remove access
- To stop access from the AI side: open the app's connector list (Claude: Settings, Connectors; ChatGPT: Settings, Apps & Connectors; Cursor: Settings, Tools & MCP) and remove or disconnect the Frum Finance connector.
- Removing the connector revokes the tokens immediately, so the app cannot keep reading in the background.
- To change permissions, remove the connector and reconnect, approving a different set of scopes this time.
Troubleshooting
| What you see | What to do |
|---|---|
| The sign-in page keeps asking me to log in again | The approval screen needs a fully signed-in session. Complete the password step and the 2FA step in the same browser window, then retry the connector. |
| A tool says it needs a permission (for example, "budgets:read") | Remove the connector, add it again, and approve the listed permission this time. Permissions are locked in at approval; they cannot be added later without reconnecting. |
| YNAB tools fail with a "disconnected" error | Link YNAB in Frum Finance first (Settings, then YNAB), then retry. YNAB reads use your own linked account; there is no way to point the assistant at a different YNAB account. |
| Nothing happens when the assistant calls a tool |
Make sure the connector is enabled for the conversation, and check that the
server URL matches your account: production members use
https://api.frum.finance/mcp, alpha members use
https://api.alpha.frum.finance/mcp. Mixing the two is the most
common cause.
|
| Errors right after we rotated something or you changed your password | Remove and re-add the connector. This forces a fresh sign-in and replaces any expired tokens. |