YNAB MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_BEARER_TOKEN | No | Optional token used to secure the MCP endpoint when running over HTTP. | |
| YNAB_ACCESS_TOKEN | Yes | Your YNAB Personal Access Token, obtained from YNAB Settings > Developer Settings. | |
| YNAB_DEFAULT_BUDGET_ID | No | Optional default budget UUID or 'last-used'. |
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": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_budgetsA | List all budgets the user has access to. Args: include_accounts: If True, include account summaries for each budget. Returns: List of budgets with id, name, last_modified_on, and currency format. |
| get_accountsA | List all accounts in a budget with balances. Args: budget_id: Budget ID (uses default if omitted). Returns: List of accounts with name, type, balance, cleared_balance, on_budget, and closed status. |
| get_categoriesA | List all category groups and categories with budgeted/activity/balance for the current month. Args: budget_id: Budget ID (uses default if omitted). Returns: Category groups with nested categories showing budgeted, activity, balance, and goal info. |
| get_payeesB | List all payees in a budget. Args: budget_id: Budget ID (uses default if omitted). Returns: List of payees with id and name. |
| get_monthA | Get a monthly budget summary with category breakdowns. Args: month: Month in YYYY-MM-DD format (first of month, e.g., "2026-02-01"). Defaults to current month. budget_id: Budget ID (uses default if omitted). Returns: Month overview: income, budgeted, activity, to_be_budgeted, age_of_money, plus per-category details. |
| get_transactionsA | Search and list transactions with optional filters. Args: budget_id: Budget ID (uses default if omitted). since_date: Only return transactions on or after this date (YYYY-MM-DD). before_date: Only return transactions before this date (YYYY-MM-DD). Server-side filter. Use with since_date for a date range, e.g. since_date="2024-02-01", before_date="2024-03-01" for all February 2024 transactions. type: Filter by "uncategorized" or "unapproved". account_id: Filter to a specific account. category_id: Filter to a specific category. payee_id: Filter to a specific payee. max_results: Maximum transactions to return (default 200). Returns: List of transactions with date, amount, payee, category, memo, cleared status. Includes truncated flag and total_available count when results are capped. |
| create_transactionA | Create a new transaction. Args: account_id: The account UUID to create the transaction in. date: Transaction date in YYYY-MM-DD format. amount: Amount in milliunits (negative for outflows, positive for inflows). Example: -50000 = -$50.00 outflow, 150000 = $150.00 inflow. payee_name: Name of payee (creates new payee if doesn't exist). Use this OR payee_id. payee_id: UUID of existing payee. Use this OR payee_name. category_id: UUID of the budget category. Omit when using subtransactions (each sub has its own). memo: Transaction memo. cleared: Cleared status: "cleared", "uncleared", or "reconciled". Defaults to "cleared". approved: Whether the transaction is approved. Defaults to True. flag_color: Optional flag: red, orange, yellow, green, blue, purple. subtransactions: Array of subtransaction objects for split transactions. Each item: {"amount": int, "category_id": "uuid", "memo": "text", "payee_id": "uuid", "payee_name": "text"}. Only amount and category_id are required per sub. The sub amounts must sum to the parent amount. When using subtransactions, omit category_id on the parent (it becomes a split). budget_id: Budget ID (uses default if omitted). Returns: Created transaction details with id, date, amount, payee, category, and subtransactions. |
| update_month_categoryA | Update the budgeted amount for a category in a specific month. Use this to move money between categories or adjust budget allocations. Args: category_id: The category UUID to update. budgeted: New budgeted amount in milliunits (e.g., 50000 = $50.00). month: Month in YYYY-MM-DD format (first of month). Defaults to current month. budget_id: Budget ID (uses default if omitted). Returns: Updated category with new budgeted amount, activity, and balance. |
| update_transactionA | Update an existing transaction. Args: transaction_id: The transaction UUID to update. account_id: Move to a different account. date: New date (YYYY-MM-DD). amount: New amount in milliunits. payee_name: New payee name. payee_id: New payee UUID. category_id: New category UUID. memo: New memo. cleared: New cleared status: "cleared", "uncleared", or "reconciled". approved: New approved status. flag_color: New flag color: red, orange, yellow, green, blue, purple. subtransactions: Array of subtransaction objects to convert this into a split transaction. Each item: {"amount": int, "category_id": "uuid", "memo": "text", "payee_id": "uuid", "payee_name": "text"}. Only amount and category_id are required per sub. The sub amounts must sum to the parent amount. When adding subtransactions, also provide the new parent amount if changing it. budget_id: Budget ID (uses default if omitted). Returns: Updated transaction details. |
| delete_transactionB | Delete a transaction. Args: transaction_id: The transaction UUID to delete. budget_id: Budget ID (uses default if omitted). Returns: Confirmation of deletion. |
| create_transactions_bulkA | Create multiple transactions at once from a JSON string. The JSON should contain a "transactions" array where each item has: account_id (required), date (required), amount (required in milliunits), and optionally: payee_name, payee_id, category_id, memo, cleared, approved, flag_color, subtransactions (array of {amount, category_id, memo, payee_id, payee_name}). Args: transactions_json: JSON string with a "transactions" array. budget_id: Budget ID (uses default if omitted). Returns: Summary of created and duplicate transactions. |
| get_scheduled_transactionsB | List all scheduled (recurring) transactions. Args: budget_id: Budget ID (uses default if omitted). Returns: List of scheduled transactions with frequency, next date, amount, payee, category. |
| create_accountA | Create a new account in a budget. Args: name: Account name (e.g., "Chase Checking"). type: Account type. One of: checking, savings, cash, creditCard, lineOfCredit, otherAsset, otherLiability, mortgage, autoLoan, studentLoan, personalLoan, medicalDebt, otherDebt. balance: Starting balance in milliunits (e.g., 100000 = $100.00). budget_id: Budget ID (uses default if omitted). Returns: Created account details with id, name, type, and balance. |
| get_budget_monthsA | List all months in a budget with summary data. Useful for trend analysis — see how income, spending, and budgeting have changed over time. Args: budget_id: Budget ID (uses default if omitted). Returns: List of months with income, budgeted, activity, to_be_budgeted, age_of_money. |
| update_categoryB | Update a category's name, note, or goal target. Args: category_id: The category UUID. name: New category name. note: New category note. goal_target: New goal target in milliunits (e.g., 500000 = $500.00). budget_id: Budget ID (uses default if omitted). Returns: Updated category details. |
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 15 tools
Each tool has a distinct purpose targeting specific resources and actions, such as create_account for accounts, get_transactions for listing, and update_month_category for budget adjustments. No significant overlap exists; even create_transaction and create_transactions_bulk are clearly differentiated by single vs. bulk operations.
All tool names follow a consistent verb_noun pattern, using verbs like create, get, update, and delete paired with specific nouns like account, transaction, or category. This uniformity makes the tool set predictable and easy to navigate.
With 15 tools, the server covers core budgeting operations comprehensively without being overwhelming. This count is well-suited for the domain, providing essential CRUD and query functions for accounts, transactions, budgets, categories, and payees.
The tool set offers complete coverage for personal finance management, including CRUD for accounts and transactions, budget and category management, payee handling, and month-level operations. No obvious gaps exist; agents can perform end-to-end budgeting workflows seamlessly.