Skip to main content
Glama
oliverames

YNAB MCP Server

by oliverames

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
YNAB_OP_PATHNo1Password secret reference for your API token.
YNAB_API_TOKENNoPersonal access token from YNAB Developer Settings.
YNAB_BUDGET_IDNoDefault budget ID. If omitted, uses 'last-used'.
YNAB_ALLOW_WRITESNoSet to '1' to register write tools.
YNAB_API_TOKEN_FILENoPath to a file containing the token. Used only when YNAB_API_TOKEN is unset.
YNAB_HTTP_TIMEOUT_MSNoPer-request timeout. Defaults to '30000'.
YNAB_RATE_LIMIT_BURSTNoMaximum burst size. Defaults to '10'.
YNAB_MAX_RESPONSE_BYTESNoMaximum direct-fetch response size. Defaults to '8388608'.
YNAB_RATE_LIMIT_PER_HOURNoClient-side rate limiter. Defaults to '190'.

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_userA

Get the authenticated user

list_budgetsA

List all budgets. Use a budget ID from the results in other tools, or omit budgetId to use the last-used budget.

get_budgetA

Get a budget summary including name, currency format, and account/category/payee counts

get_budget_settingsA

Get budget settings (currency format, date format)

list_accountsA

List all accounts in a budget

get_accountA

Get details for a specific account

list_categoriesA

List all category groups and their categories

get_categoryB

Get a specific category

get_month_categoryB

Get category budget for a specific month

list_payeesB

List all payees

get_payeeA

Get a specific payee

list_payee_locationsA

List all payee locations (GPS coordinates where transactions occurred)

get_payee_locationC

Get a specific payee location

get_payee_locations_by_payeeB

Get all locations for a specific payee

list_monthsB

List all budget months

get_monthA

Get budget month detail with per-category breakdown

list_money_movementsB

List all money movements (budget re-allocations between categories)

get_money_movements_by_monthB

Get money movements for a specific month

list_money_movement_groupsA

List all money movement groups (batches of related money movements)

get_money_movement_groups_by_monthA

Get money movement groups for a specific month

get_transactionsA

Get transactions with optional filters. Use type='unapproved' or type='uncategorized' to filter. Optionally filter by account, category, payee, or month. Each returned transaction includes 'import_payee_name_original' — the raw merchant string from the bank import (e.g. 'AplPay LS ONION RIVEMONTPELIER VT') — which encodes processor flag, merchant name (often longer than the cleaned payee_name), and city+state. This is the primary disambiguation field when payee_name is truncated or ambiguous. Note: large date ranges (6+ months on a busy budget) can return 50KB+ of data; narrow with categoryId/payeeId/month filters when possible.

get_transactionA

Get a single transaction by ID. Automatically handles composite scheduled-transaction IDs (e.g. uuid_YYYY-MM-DD): the date suffix is stripped before the lookup. If a composite ID's underlying matched transaction has been deleted, falls back to returning the active scheduled-transaction template wrapped in a marker shape { resource_type: 'scheduled_transaction', reason: 'composite_id_with_no_matched_transaction', scheduled_transaction, requested_id } so callers can distinguish the two return shapes. Non-composite IDs preserve strict behavior: a 404 still surfaces as resource_not_found.

list_scheduled_transactionsA

List all scheduled (recurring) transactions. NOTE: only manually-created recurring entries appear here — auto-imported recurring charges (subscriptions, utilities, insurance) are NOT included. Use prior-month transaction history to identify recurring charge timing instead.

get_scheduled_transactionB

Get a specific scheduled transaction

search_categoriesA

Search categories by partial name match (case-insensitive). Useful for finding category IDs when you only know part of the name.

search_payeesA

Search payees by partial name match (case-insensitive). Useful for finding payee IDs.

review_unapprovedA

Get all unapproved transactions grouped by status: those already categorized (ready to approve) and those still uncategorized (need category first). Each transaction includes a 'flags' array: manually_entered (not bank-imported), match_broken (matched reference is stale — the matched_transaction_id field is read-only via this API; YNAB web/iOS UI is required to clear that link. The transaction itself remains fully mutable: you CAN approve, recategorize, and edit memo via update_transaction. The broken match persists as a cosmetic flag until the user resolves it in the UI.), scheduled_transaction_realized, new_payee (no transaction history for this payee), no_prior_amount_match (novel amount for this payee), category_drift:was_X (payee categorized differently before). Never approve uncategorized transactions without explicit user instruction. For large budgets the full response can exceed 100KB; pass summary:true to get counts + by-payee aggregates without per-transaction detail.

get_overspent_categoriesA

Get all categories with a negative balance for a given month. Use this to find prior-month overspends that are silently reducing the current month's Ready to Assign.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/oliverames/ynab-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server