ynab-mcpb
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| YNAB_EXPORT_PATH | No | Optional directory for exported transaction files. | |
| YNAB_ACCESS_TOKEN | Yes | Your YNAB personal access token, obtained from Account Settings -> Developer Settings in the YNAB Web App. | |
| YNAB_MCP_ENABLE_DELTA | No | Enable/disable delta sync optimization (defaults to 'true'). | true |
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
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| completions | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ynab_list_budgetsA | List all YNAB budgets for the authenticated user. Args:
Returns: budgets[], cached, cache_info Examples:
Errors:
|
| ynab_get_budgetA | Get summary information for a specific YNAB budget. Args:
Returns: budget (id, name, currency_format, accounts_count, categories_count, payees_count, months_count) Examples:
Errors:
|
| ynab_list_payeesA | List all payees for a budget with pagination. Args:
Returns: payees[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info Examples:
Errors:
|
| ynab_get_payeeA | Get details for a specific payee. Args:
Returns: payee (id, name, transfer_account_id, deleted), cached, cache_info Errors:
|
| ynab_list_categoriesA | List all budget categories for a budget with pagination. Args:
Returns: categories[], category_groups[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info Examples:
Errors:
|
| ynab_get_categoryA | Get current month details for a specific budget category. Args:
Returns: category (id, name, budgeted, activity, balance, goal_type, goal_target, goal_percentage_complete), cached, cache_info Errors:
|
| ynab_update_categoryA | Update the budgeted amount for a category in the current month. Args:
Returns: updated category with new budgeted, activity, balance. Examples:
Errors:
Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token. |
| ynab_list_accountsA | List all accounts for a budget. Args:
Returns: accounts[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info Examples:
Errors:
|
| ynab_get_accountA | Get details for a single account including current balance. Args:
Returns: account (id, name, type, balance, cleared_balance, uncleared_balance, on_budget, closed), cached, cache_info Errors:
|
| ynab_create_accountA | Create a new account in a YNAB budget. Args:
Returns: account object with id, name, type, balance fields. Examples:
Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token. |
| ynab_get_monthA | Get full budget data for a specific month including all category balances. Args:
Returns: month (month, income, budgeted, activity, to_be_budgeted, age_of_money, categories[]), cached, cache_info Examples:
Errors:
|
| ynab_list_monthsA | List summary data for all budget months with pagination. Args:
Returns: months[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info Examples:
Errors:
|
| ynab_list_transactionsA | List transactions for a budget with optional filtering and pagination. Args:
Returns: transactions[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info Examples:
Errors:
|
| ynab_export_transactionsA | Export all transactions for a budget to a local JSON file. Args:
Returns: file_path, transaction_count, file_size_kb Examples:
Errors:
|
| ynab_get_transactionA | Get full details for a single transaction by ID. Args:
Returns: transaction (id, date, amount, memo, cleared, approved, account_id, payee_name, category_name, subtransactions), cached, cache_info Errors:
|
| ynab_create_transactionA | Create a single transaction in YNAB. Args:
Use "subtransactions" for manual split transactions. Use "ynab_create_receipt_split_transaction" when you have itemized receipt data and want proportional tax allocation handled for you. Advanced: "import_id" is supported, but it is intentionally not part of normal guidance. Usually omit it if you want the transaction to remain eligible for later bank-import matching. Returns: the created transaction, including split lines and explicit amount_milliunits. Examples:
Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token. |
| ynab_create_transactionsA | Create 1–100 transactions in a single batch with duplicate detection and dry-run support. Args:
Returns: summary (created, duplicates, failed), results[], transactions[]. Examples:
Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token. |
| ynab_create_receipt_split_transactionA | Create a split transaction from itemized receipt data with proportional tax allocation. Args:
Use this helper when you have receipt line items and want tax allocated across categories automatically. For generic manual split transactions without receipt/tax logic, use "ynab_create_transaction" with "subtransactions". Returns: transaction with subtransactions and receipt_summary. Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token. |
| ynab_update_transactionA | Update fields on an existing YNAB transaction. Args:
Returns: the updated transaction, including split lines and explicit amount_milliunits. Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token. |
| ynab_update_transactionsA | Update 1–100 transactions in a single batch with dry-run preview. Args:
Returns: summary (updated, failed), results[], transactions[]. Examples:
Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token. |
| ynab_delete_transactionA | Delete a transaction from YNAB. This action is irreversible. Args:
Returns: the deleted transaction with its ID and deletion status. Errors:
Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token. |
| ynab_list_scheduled_transactionsC | List scheduled transactions with delta caching and pagination. Amounts are returned in decimal currency and explicit milliunits. |
| ynab_get_scheduled_transactionC | Get one scheduled transaction by ID. |
| ynab_create_scheduled_transactionA | Create a recurring scheduled transaction. Prefer amount_decimal; amount_milliunits is available for already-converted values. Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token. |
| ynab_update_scheduled_transactionB | Update selected fields on a scheduled transaction. Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token. |
| ynab_delete_scheduled_transactionA | Delete a scheduled transaction. Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token. |
| ynab_analyze_spendingA | Deterministically calculate income, spending, and net totals for an inclusive date range, grouped by category, payee, account, week, or month. Aggregates always use the complete fetched period before grouping. |
| ynab_compare_spending_periodsC | Deterministically compare two complete spending periods and calculate total and per-group differences. |
| ynab_compare_transactionsC | Compare bank CSV transactions with YNAB transactions to find missing or mismatched entries. Args:
Returns: comparison report with matched, unmatched_bank, unmatched_ynab transactions. |
| ynab_reconcile_accountA | Guided account reconciliation: match bank CSV transactions to YNAB, detect discrepancies, and optionally execute bulk create/update/unclear operations. Args:
Returns: human-readable reconciliation narrative + structured JSON (unmatched_bank, unmatched_ynab, suggestions, execution_summary when actions are performed). Examples:
Write safety: call without confirmation_token to preview. The preview returns confirmation_token and confirmation_expires_at in its structured output (and in its text). Execute the identical validated request with that short-lived confirmation_token. |
| ynab_get_userA | Get information about the authenticated YNAB user. Args:
Returns: user (id) Errors:
|
| ynab_set_default_budgetA | Set a default budget so other tools don't require budget_id every call. Args:
Returns: success, default_budget_id, cache_warm_started. Examples:
Errors:
|
| ynab_get_default_budgetA | Get the currently configured default budget ID. Args:
Returns: default_budget_id (null if not set), has_default. |
| ynab_diagnostic_infoA | Get comprehensive diagnostic information about the MCP server (health, cache, delta, security). Args:
Returns: diagnostics object with requested sections. |
| ynab_clear_cacheA | Clear all in-memory caches. Safe operation — no YNAB data is modified. Args: (none) Returns: success. Use when: you need fresh data after external YNAB changes, or to free memory. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| create-transaction | Create a new transaction in YNAB |
| budget-summary | Get a summary of your budget status |
| reconcile-account | Reconcile a YNAB account against a bank statement or CSV export |
| account-balances | Check balances across all accounts |
| weekly-budget-review | Review deterministic spending and budget status for a week |
| uncategorized-transaction-review | Find and review uncategorized transactions without guessing categories |
| month-end-close | Run a read-first month-end budget close checklist |
| spending-period-comparison | Compare two periods using server-calculated spending totals |
| scheduled-cash-flow-review | Review scheduled inflows and outflows without claiming a forecast model |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| YNAB Budgets | List of all available budgets |
| YNAB User Info | Current user information including ID and email address |
TDQS
Scored across 35 tools
Most tools target distinct resources and actions, with single vs. batch (create_transaction/create_transactions) and split variants differentiated in their descriptions. However, ynab_compare_transactions and ynab_reconcile_account both compare bank CSV against YNAB and could be confused, and the single/batch pairs require reading descriptions to choose correctly.
Every tool follows a strict ynab_verb_noun snake_case convention (list_, get_, create_, update_, delete_, analyze_, compare_, export_). No mixed conventions or stylistic deviations anywhere in the set.
35 tools is heavy for a single domain even accounting for YNAB's breadth (transactions, scheduled, accounts, categories, payees, months, budgets, analytics, reconciliation, diagnostics). Many operations could be consolidated (batch/single pairs, diagnostic/cache helpers), so the surface feels over-expanded.
Coverage is strong: full transaction lifecycle including batch, splits, and receipt splits; scheduled transaction CRUD; accounts, categories, payees, months, and budgets listing/retrieval; plus analytics and reconciliation helpers. Minor gaps exist (no account update/delete, no direct payee creation), but core workflows are well covered.