Skip to main content
Glama
LandonSchropp

ynab-mcp-server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
YNAB_PLAN_IDNoDefault YNAB plan (budget) ID, so tools can omit planId. Find it with ynab_list_plans.
YNAB_API_TOKENYesPersonal Access Token from https://api.ynab.com/#personal-access-tokens, used for every API call. Never sent to the model.
YNAB_BUDGET_IDNoDeprecated alias for YNAB_PLAN_ID; still accepted but use YNAB_PLAN_ID for new integrations.
YNAB_READ_ONLYNoSet to "true" (case-insensitive; surrounding whitespace ignored) to remove tools that write to YNAB, in both the stdio server and the Worker.
TYPESAFE_API_KEYNoOperator-owned TypeSafe credential. Required, but not sufficient, together with YNAB_AI_CATEGORIZATION to enable the opt-in category suggestion tool.
YNAB_AI_CATEGORIZATIONNoSet to "true" together with TYPESAFE_API_KEY to expose the opt-in ynab_suggest_categories tool. Off by default.
YNAB_AI_TYPICAL_PAYEESNoSet to "true" to send each category's most frequent payee names from the last 12 months with each model request. Off by default because it discloses aggregated payee history to TypeSafe.

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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
ynab_list_plansA

Lists all available plans from YNAB API

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. Set budgetVsActuals to also compare assigned with actual spending that month: budgeted, activity, balance, variance (budgeted plus activity; below zero means more was spent than assigned) and percent used for every visible category, with subtotals per category group and overall totals, which leave out Credit Card Payments.

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_update_category_budgetA

Sets the total budgeted amount for one category in a specific month (not an increment). To move money between categories, use ynab_move_money instead.

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 (or, with approved: false, un-approves) one or more transactions in a single API call.

ynab_list_payeesA

Lists all payees in a plan. Useful for finding payee IDs when creating transactions.

ynab_get_transactionsA

Gets transactions from a plan, optionally between a start and end date and by type (all, uncategorized or unapproved). Filter by at most one of account, category or payee: they cannot be combined, and if several are given only the first in that order is applied. To search, add payee or memo text, an amount range or a direction. Any search option (or untilDate) adds inflow, outflow and net totals over every match; the totals include transfers between accounts, such as credit card payments. totalsOnly returns just the totals (e.g. categoryId with a year's dates and totalsOnly). Without categoryId or payeeId, split transactions are matched leg by leg and the totals count only the matching legs. With categoryId or payeeId, rows are matched as YNAB returns them, so a split's parent row in the payee listing counts at its full amount.

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 the scheduled transactions set up in YNAB. To find recurring charges in transaction history, including ones that are not scheduled, use ynab_detect_recurring. For a projected balance, use ynab_balance_forecast.

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 every plan month since the plan began, with raw summary fields: income, budgeted, activity, Ready to Assign, age of money and the month note. For income-versus-spending questions over recent months, use ynab_cash_flow instead.

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. Totals are gross outflows: refunds and other inflows aren't netted, so they can differ from a category's activity in YNAB. With monthly: true, each category also gets a month-by-month series, its mean over full months, and how its last full month compares with the earlier ones.

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. Totals are gross outflows: refunds and other inflows aren't netted, so they can differ from a category's activity in YNAB. With monthly: true, each payee also gets a month-by-month series, its mean over full months, and how its last full month compares with the earlier ones.

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. For a projected balance, use ynab_balance_forecast.

ynab_balance_forecastA

Projects the combined balance of your accounts over the next N days (from today in UTC) from scheduled transactions only: the starting balance, the scheduled events, the end-of-day running balance and the lowest point. Income or spending that is not scheduled in YNAB is not in the forecast. Transfers between two included accounts (credit card payments too) net to zero; a transfer to an account outside the forecast counts as money leaving, and one from an account outside it as money arriving. Split schedules are counted leg by leg. Occurrences whose date has passed but that YNAB has not entered yet count on the first day, marked overdue with their scheduled_date and summarised in overdue_schedules. Where YNAB does not give the second date of a twice-a-month schedule, it is approximated as 15 days after the first. Events are capped by limit; the running balance, low point and ending balance always cover every day. For past income versus spending, use ynab_cash_flow; to list the schedules themselves, use ynab_list_scheduled_transactions.

ynab_detect_recurringA

Finds recurring outflows (subscriptions, bills, memberships) in transaction history by payee, similar amount and regular spacing, whether or not they are scheduled in YNAB. For the scheduled transactions set up in YNAB, use ynab_list_scheduled_transactions. Gives each one's cadence, typical amount, yearly cost at the latest amount, next expected date, whether it seems to have stopped, and already_scheduled (a scheduled transaction has the same payee name; amounts are not compared). This is a heuristic: check the results before acting on them. Splits are counted through their subtransactions. Transfers are excluded, so loan and mortgage payments (transfers to a loan account) and credit card payments are not reported. Inflows are excluded too, and refunds are not netted against charges. Reads the whole window from YNAB in one request, which is slow for a long sinceDate on a busy plan. Yearly charges need a sinceDate far enough back to show minOccurrences of them.

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.9/5.0

Scored across 22 tools

Disambiguation4/5

Most tools target a clearly distinct resource and action, and several descriptions explicitly cross-reference alternatives such as ynab_cash_flow vs. ynab_list_months and ynab_detect_recurring vs. ynab_list_scheduled_transactions. The main overlap is among the reporting tools (plan_summary, spending_by_category, spending_by_payee, cash_flow) and ynab_get_transactions' totals mode, but the descriptions generally make the intended boundaries clear.

Naming Consistency4/5

All tools share the ynab_ prefix and snake_case, making the namespace predictable. Most names are verb_noun, though several are noun phrases (plan_summary, cash_flow, balance_forecast, spending_by_category) rather than action-first names.

Tool Count3/5

At 22 tools the surface is heavy, sitting in the 16–25 range that tends to feel broad even for a full-featured budgeting assistant. Each tool serves a plausible role, but the set could likely be consolidated around the analytics/reporting area.

Completeness4/5

Core YNAB workflows are well covered: transactions have create/get/update/delete, budget category updates and money moves exist, and analytics/reporting are unusually thorough. Gaps remain around scheduled transactions, which can only be listed, and other read-only entities such as accounts, categories, and payees, which may reflect API limitations.

Maintenance

ActivityActive
ResponsivenessNo issues