ynab-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| YNAB_API_TOKEN | Yes | Your YNAB Personal Access Token. Generate a token at YNAB > Account Settings > Developer Settings. |
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 |
|---|---|
| get_userB | [1 API call] Get the authenticated user's information including user ID |
| list_budgetsA | [1 API call] List all budgets the user has access to, with optional account info |
| get_budgetA | [1 API call] Get a single budget's full detail including all entities. Use 'last-used' for the most recently accessed budget. |
| get_budget_settingsB | [1 API call] Get a budget's date and currency format settings |
| list_accountsA | [1 API call] List all accounts for a budget including balances and types |
| get_accountB | [1 API call] Get details for a single account |
| create_accountB | [1 API call] Create a new account in a budget |
| list_categoriesB | [1 API call] List all categories grouped by category group for a budget |
| get_categoryB | [1 API call] Get details for a single category |
| create_categoryB | [1 API call] Create a new category in a budget |
| update_categoryB | [1 API call] Update an existing category's name, note, or goal |
| get_month_categoryB | [1 API call] Get a category's budget details for a specific month |
| update_month_categoryA | [1 API call] Update the budgeted/assigned amount for a category in a specific month. This is how you allocate money to categories. |
| create_category_groupA | [1 API call] Create a new category group in a budget |
| update_category_groupB | [1 API call] Update a category group's name |
| list_payeesB | [1 API call] List all payees for a budget |
| get_payeeB | [1 API call] Get details for a single payee |
| update_payeeB | [1 API call] Update a payee's name |
| list_payee_locationsB | [1 API call] List all payee GPS locations for a budget |
| get_payee_locationB | [1 API call] Get a single payee location by ID |
| get_payee_locations_for_payeeB | [1 API call] Get all GPS locations for a specific payee |
| list_monthsA | [1 API call] List all budget months for a budget, showing income, budgeted, activity, and ready to assign |
| get_monthA | [1 API call] Get detailed info for a single budget month including all category balances. Use 'current' for the current month. |
| list_money_movementsB | [1 API call] List all money movements for a budget (funds moved between categories) |
| get_month_money_movementsB | [1 API call] Get money movements for a specific month |
| list_money_movement_groupsB | [1 API call] List all money movement groups for a budget |
| get_month_money_movement_groupsB | [1 API call] Get money movement groups for a specific month |
| list_transactionsA | [1 API call] List transactions for a budget with optional filters. Returns most recent transactions first. |
| get_transactionB | [1 API call] Get details for a single transaction |
| create_transactionA | [1 API call] Create a new transaction. Amounts are in dollars (positive for inflows, negative for outflows). For split transactions, set category_id to null and provide subtransactions. |
| create_transactionsA | [1 API call, bulk] Create multiple transactions at once. Each transaction needs account_id, date, and amount at minimum. |
| update_transactionC | [1 API call] Update an existing transaction |
| update_transactionsA | [1 API call, bulk] Update multiple transactions at once. Each must include either id or import_id to identify the transaction. |
| delete_transactionB | [1 API call] Delete a transaction |
| import_transactionsB | [1 API call] Trigger an import of transactions from linked financial institutions |
| list_account_transactionsB | [1 API call] List transactions for a specific account |
| list_category_transactionsB | [1 API call] List transactions for a specific category |
| list_payee_transactionsB | [1 API call] List transactions for a specific payee |
| list_month_transactionsB | [1 API call] List transactions for a specific month |
| list_scheduled_transactionsB | [1 API call] List all scheduled (recurring) transactions for a budget |
| get_scheduled_transactionB | [1 API call] Get details for a single scheduled transaction |
| create_scheduled_transactionA | [1 API call] Create a new scheduled (recurring) transaction. Date must be in the future (up to 5 years). |
| update_scheduled_transactionB | [1 API call] Update an existing scheduled transaction |
| delete_scheduled_transactionB | [1 API call] Delete a scheduled transaction |
| merge_categoryA | [Variable API calls] [Workflow] Merges a source category into a target category: re-categorizes all transactions and moves all historical budgeted amounts. Dry run costs 4 + N calls (N = number of budget months). Execution costs additional 1 + 2*M calls (M = months with non-zero budgets). Defaults to dry_run=true to preview changes before executing. After merging, the source category will have zero transactions and zero budgeted amounts across all months - you can then manually hide/delete it in the YNAB app. |
| audit_credit_card_paymentsA | [Variable API calls] [Workflow] Audits credit card payment categories by comparing each card's month-end balance against the payment category's available balance. Recommends exact budgeted amount corrections, accounting for cascading effects across months. Audit costs 3 + C + M API calls (C = credit cards, M = months). Set apply=true to automatically fix mismatches (adds 1 API call per mismatch). |
| get_api_usageA | [0 API calls] Check current YNAB API usage against the 200 calls/hour rate limit. Use this before batch operations to ensure you have enough budget. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| monthly-review | Review a budget month: overspent categories, spending changes, underfunded goals, and credit card mismatches |
| transaction-audit | Audit recent transactions for uncategorized, unapproved, possible duplicates, and unusual amounts |
| budget-setup-guide | Guided walkthrough for setting up a new or existing budget: accounts, categories, targets, and scheduled transactions |
| spending-analysis | Analyze spending patterns: category breakdown, budget vs. actual, and top payees |
| credit-card-audit | Audit that each credit card's running balance matches its payment category's available balance, with optional auto-fix |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| api-usage | Current rate limit status: calls used, remaining, and window reset time |
TDQS
Scored across 47 tools
Most tools have distinct purposes targeting specific resources and actions (e.g., get_account vs. list_accounts), but some overlap exists between list_transactions and more specific listing tools like list_account_transactions, which could cause confusion. The audit_credit_card_payments and merge_category workflows are clearly specialized, reducing ambiguity.
Tool names follow a highly consistent verb_noun pattern throughout, such as create_account, get_budget, list_transactions, and update_category. The two workflow tools (audit_credit_card_payments, merge_category) maintain this structure with descriptive nouns, ensuring predictability across all 47 tools.
With 47 tools, the count is excessive for a budgeting server, leading to a heavy and potentially overwhelming interface. While YNAB's API is comprehensive, many tools (e.g., get_payee_location, list_money_movement_groups) could be consolidated or omitted without losing core functionality, making the set feel bloated.
The tool set provides complete CRUD and lifecycle coverage for YNAB's domain, including accounts, categories, transactions, budgets, and payees. It also includes advanced workflows like auditing and merging, along with utility tools for API usage, ensuring no obvious gaps for agent operations.