YNAB MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| YNAB_API_TOKEN | Yes | Your Personal Access Token from YNAB (required) | |
| YNAB_BUDGET_ID | No | Your YNAB budget ID (optional) |
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 |
|---|---|
| ynab_list_plansA | Lists all available plans from YNAB API |
| ynab_list_budgetsA | Former name of ynab_list_plans. |
| ynab_get_unapproved_transactionsA | Gets every unapproved transaction in a plan, optionally limited to those on or after a given date. |
| ynab_plan_summaryA | Get a summary of the plan for a specific month highlighting overspent categories that need attention and categories with a positive balance that are doing well. |
| ynab_budget_summaryD | Former name of ynab_plan_summary. |
| ynab_create_transactionA | Creates a new transaction in your YNAB plan. The account can be given as accountId or accountName, and the category as categoryId or categoryName - names are fuzzy-matched against the plan. Either payeeId or payeeName must also be provided. To split the transaction across categories, pass subtransactions instead of a category; their amounts must add up to the transaction amount. |
| ynab_approve_transactionA | Approves an existing transaction in your YNAB plan. |
| ynab_update_category_budgetA | Updates the budgeted amount for a category in a specific month. Use this to allocate funds to categories or move money between categories. |
| ynab_update_transactionA | Updates an existing transaction. All fields except transactionId are optional - only provide fields you want to change. Pass subtransactions to split an ordinary transaction across categories; YNAB cannot re-split a transaction that is already split. |
| ynab_bulk_approve_transactionsA | Approves multiple transactions at once. Provide an array of transaction IDs to approve them all in a single API call. |
| ynab_list_payeesA | Lists all payees in a plan. Useful for finding payee IDs when creating transactions. |
| ynab_get_transactionsB | Gets transactions from a plan with optional filters. Can filter by date range, account, category, payee, or approval status. |
| ynab_delete_transactionA | Deletes a transaction from the plan. This action cannot be undone. |
| ynab_list_categoriesA | Lists all categories in a plan, grouped by category group. Useful for finding category IDs when creating transactions or updating budgeted amounts. |
| ynab_list_accountsA | Lists all accounts in a plan. Useful for finding account IDs when creating transactions. |
| ynab_list_scheduled_transactionsA | Lists all scheduled (recurring) transactions in a plan. |
| ynab_import_transactionsA | Imports available transactions on all linked accounts for the plan. This triggers an import from connected financial institutions (equivalent to clicking 'Import' in the YNAB app). |
| ynab_list_monthsA | Lists all plan months. Each month contains summary information about budgeting status. |
| ynab_move_moneyA | Moves budgeted money from one category to another in a given month, typically to cover overspending. YNAB has no single move endpoint, so this reads both categories and rewrites their budgeted amounts; if the second write fails the response says exactly which half was applied. |
| ynab_auto_assignA | Distributes Ready to Assign across categories whose monthly goal is not yet fully funded, largest shortfall first, until the money runs out. Set dryRun to see the plan without changing anything. |
| ynab_spending_by_categoryA | Totals spending per category over a date range, biggest spend first. Splits are counted through their subtransactions, and transfers between your own accounts are excluded. |
| ynab_spending_by_payeeA | Totals spending per payee over a date range, biggest spend first - where the money actually goes by merchant. Splits are counted through their subtransactions, and transfers between your own accounts are excluded. |
| ynab_cash_flowA | Income versus spending, month by month, so you can see whether you are running a surplus. Uses YNAB's own monthly totals rather than re-adding transactions. |
| ynab_apply_category_suggestionsA | Applies explicitly supplied category suggestions after refetching and verifying every transaction fingerprint. Never auto-applies, approves, or calls TypeSafe. Supports dry-run and returns a pre-write undo manifest. |
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 24 tools
Some tools overlap: ynab_create_transaction, ynab_update_transaction, ynab_import_transactions, and ynab_delete_transaction are distinct but could be confused in edge cases. More problematic are deprecated aliases like ynab_list_budgets and ynab_budget_summary that duplicate ynab_list_plans and ynab_plan_summary respectively, creating genuine ambiguity.
All tool names consistently use snake_case with the 'ynab_' prefix followed by verb_noun or descriptive noun phrases (e.g., ynab_list_plans, ynab_create_transaction). The deprecated aliases also follow the same pattern, maintaining overall predictability.
24 tools for a full-featured budgeting API server is reasonable, covering core operations. However, it's slightly heavy, and the inclusion of deprecated aliases (ynab_list_budgets, ynab_budget_summary) adds unnecessary count without new functionality.
The server covers a wide range of budgeting operations: transactions (CRUD), accounts, categories, payees, scheduled transactions, budgeting, and reporting. Some potential gaps exist, such as tools for managing accounts, creating scheduled transactions, or deleting categories, but the core domain is well-represented.