actual-budget-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ACTUAL_DATA_DIR | No | Cache directory (default: /tmp/actual-budget-mcp-data) | |
| ACTUAL_PASSWORD | Yes | Server password (set in Actual Budget under Settings) | |
| ACTUAL_BUDGET_ID | Yes | Budget Sync ID (found in Settings > Show advanced settings) | |
| ACTUAL_SERVER_URL | Yes | Your Actual Budget server URL (e.g., http://localhost:5006) | |
| ACTUAL_ENCRYPTION_PASSWORD | No | Only if your budget file is encrypted |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_accountsA | List all budget accounts with their current balances, type (on-budget/off-budget), and status. |
| get_budget_monthA | Get the budget for a specific month showing all category groups, their categories with budgeted amounts, actual spending, and remaining balance. Also shows the to-be-budgeted amount. |
| get_transactionsA | List transactions with optional filters. Returns date, payee, category, amount, notes, account, and cleared status. |
| get_category_balanceA | Get the balance and spending history for a specific category across one or more months. |
| get_budget_summaryA | Executive summary of the budget showing totals by category group, total income, total expenses, savings rate, and to-be-budgeted for a given month. |
| get_categoriesA | List all category groups with their categories and IDs. Useful for seeing the full budget structure. |
| get_payeesA | List all payees in the budget. Useful for seeing available payees and their IDs. |
| budget_vs_actualA | Compare budgeted amounts versus actual spending for each category in a given month. Highlights over-budget and under-budget categories. |
| spending_projectionA | Project end-of-month spending for each category based on the current daily spending rate. Warns about categories likely to exceed budget. |
| category_trendsA | Show spending trends for a category across multiple months. Identifies increasing/decreasing patterns. |
| spending_by_categoryB | Break down spending by category for a date range. Shows each category's total spending and percentage of total. |
| monthly_summaryA | Monthly financial summary showing income, expenses, savings, and savings rate across multiple months. Great for seeing trends in your overall financial health. |
| balance_historyA | Track an account's balance changes over time by showing the running balance at key transaction dates. |
| get_rulesA | List all transaction rules showing their conditions and actions. |
| repair_syncA | Repair the budget's sync state when operations fail with an out-of-sync error. Rebuilds sync bookkeeping without modifying budget data. Use this when other tools report that the budget is out of sync. |
| create_transactionB | Add a new transaction to an account. Use negative amounts for expenses, positive for income. |
| create_split_transactionA | Add a split transaction: one bank-facing total spread across multiple categories. The split amounts must sum to the total. |
| reconcile_currency_residualA | Book an adjustment transaction to bring a multi-currency account to the balance the bank reports, clearing accumulated FX-rate residual. |
| update_budget_amountA | Set the budgeted amount for a category in a specific month. |
| recategorize_transactionA | Change the category of an existing transaction. |
| create_transferC | Create a transfer between two accounts. |
| update_transactionA | Update fields of an existing transaction. Only the fields you provide will be changed. |
| delete_transactionA | Delete a transaction by its ID. Destructive and irreversible: the first call only previews what would be lost, and deleting requires confirm: true. |
| run_bank_syncA | Sync bank transactions from linked accounts (GoCardless/SimpleFIN). Syncs a specific account or all linked accounts if none specified. |
| create_accountA | Create a new budget account (on-budget or off-budget). Returns the new account ID so transactions can target it right away. |
| delete_accountA | Delete an account and its entire transaction history. Destructive and irreversible: the first call only previews what would be lost, and deleting requires both confirm: true and confirm_name set to the account's exact name. Prefer closing an account when you just want to retire it. |
| create_categoryB | Create a new budget category within a category group. |
| update_categoryA | Rename or hide/unhide a budget category. |
| delete_categoryA | Delete a budget category. Destructive and irreversible: the first call only previews, and deleting requires confirm: true plus confirm_name set to the category's exact name. Deleting a category also destroys its budget and rollover history; pass transfer_to to keep its transactions categorised. |
| create_category_groupA | Create a new category group for organizing budget categories. |
| update_category_groupA | Rename or hide/unhide a category group. |
| delete_category_groupA | Delete a category group and every category in it. Destructive and irreversible: the first call only previews, and deleting requires confirm: true plus confirm_name set to the group's exact name. You must specify a category to transfer orphaned categories' transactions to. |
| create_payeeB | Create a new payee. |
| update_payeeB | Rename a payee. |
| delete_payeeA | Delete a payee. Destructive and irreversible: the first call only previews, and deleting requires confirm: true plus confirm_name set to the payee's exact name. |
| create_ruleB | Create a transaction rule. When a transaction matches the condition, the action is applied automatically. |
| delete_ruleA | Delete a transaction rule by its ID. Destructive and irreversible: the first call only previews the rule, and deleting requires confirm: true. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| monthly-review | Review your budget for a specific month: checks spending vs budget, highlights overspending, and suggests adjustments. |
| spending-check | Quick check on current month spending. Are you on track, or overspending? |
| spending-patterns | Deep analysis of spending patterns and trends over the last few months. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| accounts | List of all budget accounts with current balances |
| categories | All category groups and categories with IDs |
| payees | All payees in the budget |
TDQS
Scored across 37 tools
Most CRUD tools target distinct entities and actions, but the analytical tools overlap considerably (budget_vs_actual, get_budget_month, spending_by_category, monthly_summary, category_trends, spending_projection all surface spending data with slightly different scopes). recategorize_transaction also overlaps with update_transaction since category is likely an updatable field. Descriptions help, but an agent could easily misselect among the reporting tools.
CRUD operations follow a clear create_/update_/delete_ pattern, but read operations are split between list_accounts and get_* tools, and analytics use noun-phrase names like budget_vs_actual, monthly_summary, and spending_by_category. The mixing is readable but not a single predictable verb_noun convention.
37 tools is a heavy surface; the rule of thumb for coherence is 3-15 well-scoped tools, and here there are many overlapping analytics/reporting tools (budget_vs_actual, spending_projection, category_trends, spending_by_category, monthly_summary, balance_history) that could be consolidated. The CRUD breadth is defensible, but the total count feels bloated.
Core CRUD is mostly covered for accounts, categories, payees, transactions, and rules, but accounts have no update/close tool (delete_account even suggests 'prefer closing' without providing one), and rules have no update mechanism. Budgeting, sync, and reconciliation workflows are otherwise reasonably complete.