YNAB MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| YNAB_ACCESS_TOKEN | Yes | Your YNAB Personal Access Token (generate one in YNAB under Account Settings → Developer Settings → New Token) |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| helloA | Says hello back, to confirm the YNAB MCP server is connected and working. |
| list_budgetsA | Lists all YNAB budgets available to this account, with their IDs and names. |
| list_accountsB | Lists the open accounts in a budget (checking, savings, credit cards, etc.) with their current balances. |
| list_all_account_balancesA | Lists account balances across every budget on this account, grouped by budget. Useful for a full net-worth view without checking each budget individually. |
| get_ready_to_assignA | Gets the current 'Ready to Assign' amount for a budget — the money not yet assigned to any category this month. |
| move_money_between_categoriesA | Moves budgeted money from one category to another within the same month — e.g. moving $50 from Child Support into Haircuts to cover a specific expense. Reduces the source category's assigned amount and increases the destination's by the same amount. Look up category_id values with list_categories first. |
| list_categoriesA | Lists the category groups and categories in a budget, with their IDs, names, and remaining balances. Use a category's id with categorize_transaction. |
| get_category_targetsA | Lists categories that have a target (goal) set, with the target amount, type, due date if any, and progress. Categories without a target are omitted. |
| set_category_targetA | Sets, updates, or clears a target (goal) on a category. Provide either goal_target_date (a one-time target due by a specific date) or goal_frequency (a recurring target), not both. Pass clear_target: true to remove an existing target instead. |
| list_uncategorized_transactionsB | Lists transactions that don't yet have a category assigned, so they can be reviewed and categorized. |
| list_unapproved_transactionsA | Lists transactions that haven't been approved yet (typically bank-imported transactions awaiting review). This is separate from categorization — a transaction can be categorized but still unapproved. |
| approve_transactionA | Marks a transaction as approved. Look up transaction_id with list_unapproved_transactions first. |
| search_transactionsB | Searches transactions in a budget by payee, category, account, and/or date range. All filters are optional and combine together. |
| suggest_categoryA | Suggests which category a transaction likely belongs to, based on how past transactions from the same payee were categorized. Especially useful when one payee covers multiple different charges (e.g. two different bills from the same company) that can be told apart by amount. |
| bulk_suggest_categoriesA | Suggests categories for every uncategorized transaction in a budget at once, using each payee's categorization history. Returns a review list — nothing is applied automatically, use categorize_transaction to apply a suggestion you approve of. |
| categorize_transactionB | Assigns a category to a specific transaction. Look up category_id with list_categories and transaction_id with list_uncategorized_transactions first. |
| split_transactionA | Splits a single transaction across multiple categories with different amounts — e.g. a $75 haircut charge where $50 goes to your category and $25 goes to a category tracking money owed by someone else. Provide at least 2 splits; their amounts must add up to the transaction's total. This cannot be undone via this tool and does not work on transactions that are already split. |
| create_category_groupB | Creates a new category group (a section that categories live under) in a budget. |
| create_categoryA | Creates a new category within an existing category group. Use list_categories first to find the category_group_name, or create one with create_category_group. |
| spending_by_categoryA | Reports total spending per category over a date range (defaults to the current month so far). Excludes transfers between your own accounts. |
| get_month_summaryB | Gets a financial snapshot for a budget month: income, total budgeted, total spent, money left to assign, and age of money. |
| list_overspent_categoriesA | Lists categories with a negative balance this month — categories that have been overspent. Informational only; does not move any money. |
| spending_trendA | Shows how spending has changed month by month over a recent window — either overall or for one category. Useful for spotting whether spending in an area is creeping up or down over time. |
| net_worth_snapshotA | Totals your current balance across every open account in every budget, into a single net worth figure, plus a per-budget breakdown. |
| top_payeesA | Reports total spending grouped by payee over a date range (defaults to the current month so far) — who you spend the most money with. Excludes transfers between your own accounts. |
| largest_transactionsA | Lists the biggest purchases (outflows) in a date range (defaults to the current month so far) — a quick gut-check on where money actually went. Excludes transfers between your own accounts. |
| detect_recurring_chargesA | Flags payees that appear to bill a consistent amount repeatedly over the last several months — useful for spotting subscriptions, including ones you may have forgotten about. Heuristic: amounts from the same payee that stay within 5% of their average, occurring at least min_occurrences times. |
| budget_health_checkA | A single at-a-glance digest of budget health: Ready to Assign, age of money, any overspent categories, and counts of uncategorized/unapproved transactions — instead of checking each separately. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 28 tools
Most tools target distinct actions or resources, but several reporting/summary tools overlap: list_all_account_balances vs net_worth_snapshot, get_month_summary vs budget_health_check, and Ready to Assign appears in multiple tools. The descriptions do a good job differentiating them, so confusion is limited but present.
All tool names use snake_case consistently, with no mixed casing styles. However, several names are noun-phrase reports rather than verb_noun patterns (budget_health_check, net_worth_snapshot, top_payees, spending_by_category), and hello is an outlier.
At 28 tools, the set exceeds the recommended 3-15 range and crosses the 25+ heavy threshold. While many tools serve distinct purposes, several analysis/reporting tools could be consolidated, making the surface larger than necessary.
The server covers budgeting analysis, categorization, category creation, and approval workflows well, but it lacks core transaction lifecycle operations: no create_transaction, update_transaction, delete_transaction, or get_transaction by ID. Payee management and scheduled transactions are also missing, which are significant gaps for a YNAB server.