Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
YNAB_EXPORT_PATHNoOptional directory for exported transaction files.
YNAB_ACCESS_TOKENYesYour YNAB personal access token, obtained from Account Settings -> Developer Settings in the YNAB Web App.
YNAB_MCP_ENABLE_DELTANoEnable/disable delta sync optimization (defaults to 'true').true

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
completions
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
ynab_list_budgets

List all YNAB budgets for the authenticated user.

Args:

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: budgets[], cached, cache_info

Examples:

  • List all budgets: call with no args

Errors:

  • "UNAUTHORIZED" → YNAB token expired or invalid

ynab_get_budget

Get summary information for a specific YNAB budget.

Args:

  • budget_id (string, required): Budget UUID.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: budget (id, name, currency_format, accounts_count, categories_count, payees_count, months_count)

Examples:

  • Get budget details: set budget_id to the UUID from ynab_list_budgets

Errors:

  • "Budget not found" → invalid or inaccessible budget_id

ynab_list_payees

List all payees for a budget with pagination.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • limit (int, optional): Max results per page. Default: 50.

  • offset (int, optional): Zero-based offset for pagination. Default: 0.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: payees[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info

Examples:

  • List all payees: call with no args

  • Page 2: set limit=50, offset=50

Errors:

  • "No default budget set" → run ynab_set_default_budget first

ynab_get_payee

Get details for a specific payee.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • payee_id (string, required): Payee UUID.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: payee (id, name, transfer_account_id, deleted), cached, cache_info

Errors:

  • "No default budget set" → run ynab_set_default_budget first

  • "Payee not found" → invalid payee_id

ynab_list_categories

List all budget categories for a budget with pagination.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • limit (int, optional): Max results per page. Default: 50.

  • offset (int, optional): Zero-based offset for pagination. Default: 0.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: categories[], category_groups[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info

Examples:

  • List categories (default budget): call with no args

  • Page 2: set limit=50, offset=50

Errors:

  • "No default budget set" → run ynab_set_default_budget first

ynab_get_category

Get current month details for a specific budget category.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • category_id (string, optional): Category UUID.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: category (id, name, budgeted, activity, balance, goal_type, goal_target, goal_percentage_complete), cached, cache_info

Errors:

  • "No default budget set" → run ynab_set_default_budget first

  • "Category not found" → invalid category_id

ynab_update_category

Update the budgeted amount for a category in the current month.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • category_id (string, required): Category UUID.

  • budgeted (int, required): New budgeted amount in milliunits (dollars × 1000).

  • dry_run (boolean, optional): Preview without saving. Default: false.

Returns: updated category with new budgeted, activity, balance.

Examples:

  • Budget $100: set budgeted=100000 (milliunits)

  • Dry run: set dry_run=true

Errors:

  • "No default budget set" → run ynab_set_default_budget first

ynab_list_accounts

List all accounts for a budget.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • limit (int, optional): Max results per page. Default: 50.

  • offset (int, optional): Zero-based offset for pagination. Default: 0.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: accounts[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info

Examples:

  • List all accounts (default budget): call with no args

  • Page 2: set limit=20, offset=20

Errors:

  • "No default budget set" → run ynab_set_default_budget first

  • "UNAUTHORIZED" → YNAB token expired

ynab_get_account

Get details for a single account including current balance.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • account_id (string, required): Account UUID.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: account (id, name, type, balance, cleared_balance, uncleared_balance, on_budget, closed), cached, cache_info

Errors:

  • "No default budget set" → run ynab_set_default_budget first

  • "Account not found" → invalid account_id

ynab_create_account

Create a new account in a YNAB budget.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • name (string, required): Account name.

  • type (string, required): One of: checking, savings, creditCard, cash, lineOfCredit, otherAsset, otherLiability.

  • balance (number, optional): Opening balance in dollars. Default: 0.

  • dry_run (boolean, optional): Preview the request without creating. Default: false.

Returns: account object with id, name, type, balance fields.

Examples:

  • Create checking account: set name="My Checking", type="checking"

  • Dry run: set dry_run=true to preview without saving

ynab_get_month

Get full budget data for a specific month including all category balances.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • month (string, required): Month in YYYY-MM-DD format (use first day, e.g. "2025-01-01").

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: month (month, income, budgeted, activity, to_be_budgeted, age_of_money, categories[]), cached, cache_info

Examples:

  • Get January 2025: set month="2025-01-01"

Errors:

  • "No default budget set" → run ynab_set_default_budget first

ynab_list_months

List summary data for all budget months with pagination.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • limit (int, optional): Max results per page. Default: 50.

  • offset (int, optional): Zero-based offset for pagination. Default: 0.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: months[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info

Examples:

  • List recent months: call with no args, months are newest-first

  • Page 2: set limit=12, offset=12

Errors:

  • "No default budget set" → run ynab_set_default_budget first

ynab_list_transactions

List transactions for a budget with optional filtering and pagination.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • account_id (string, optional): Filter by account.

  • category_id (string, optional): Filter by category.

  • since_date (string, optional): ISO date (YYYY-MM-DD) to filter transactions on or after.

  • type (string, optional): "uncategorized" or "unapproved".

  • cleared (string, optional): "cleared", "uncleared", or "reconciled".

  • limit (int, optional): Max results per page. Default: 50.

  • offset (int, optional): Zero-based offset for pagination. Default: 0.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: transactions[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info

Examples:

  • All transactions: call with no args (uses default budget)

  • Filter by account: set account_id

  • Last 30 days: set since_date to 30 days ago

  • Page 2: set limit=50, offset=50

Errors:

  • "No default budget set" → run ynab_set_default_budget first

  • Large result → use ynab_export_transactions to save to file

ynab_export_transactions

Export all transactions for a budget to a local JSON file.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • account_id (string, optional): Filter by account.

  • since_date (string, optional): ISO date (YYYY-MM-DD) to filter transactions on or after.

Returns: file_path, transaction_count, file_size_kb

Examples:

  • Export all transactions: call with no args

  • Export account: set account_id

Errors:

  • "No default budget set" → run ynab_set_default_budget first

ynab_get_transaction

Get full details for a single transaction by ID.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • transaction_id (string, required): Transaction UUID.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: transaction (id, date, amount, memo, cleared, approved, account_id, payee_name, category_name, subtransactions), cached, cache_info

Errors:

  • "No default budget set" → run ynab_set_default_budget first

  • "Transaction not found" → invalid transaction_id

ynab_create_transaction

Create a single transaction in YNAB.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • account_id (string, required): Account UUID.

  • amount (int, required): Amount in milliunits (dollars × 1000). Negative for expenses.

  • date (string, required): ISO date YYYY-MM-DD.

  • payee_name (string, optional): Payee name (creates new payee if not found).

  • payee_id (string, optional): Existing payee UUID (alternative to payee_name).

  • category_id (string, optional): Category UUID.

  • memo (string, optional): Memo text.

  • cleared (string, optional): "cleared", "uncleared", or "reconciled". Default: "uncleared".

  • approved (boolean, optional): Mark as approved. Default: false.

  • flag_color (string, optional): Transaction flag color ("red", "orange", "yellow", "green", "blue", "purple").

  • dry_run (boolean, optional): Preview without saving. Default: false.

  • subtransactions (array, optional): Manual split lines. Each entry accepts "amount" (integer milliunits), plus optional "memo", "category_id", "payee_id", and "payee_name".

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: created transaction with account_balance.

Examples:

  • $50 expense: set amount=-50000 (milliunits)

ynab_create_transactions

Create 1–100 transactions in a single batch with duplicate detection and dry-run support.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • transactions (array, required): Up to 100 transaction objects (each requires account_id, amount, date).

  • dry_run (boolean, optional): Validate without saving. Default: false.

Returns: summary (created, duplicates, failed), results[], transactions[].

Examples:

  • Dry run first: set dry_run=true to validate before committing

  • If you explicitly want YNAB-side duplicate import detection, set import_id on each transaction

ynab_create_receipt_split_transaction

Create a split transaction from itemized receipt data with proportional tax allocation.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • account_id (string, required): Account UUID.

  • payee_name (string, required): Store/payee name.

  • receipt_total (number, required): Total amount in dollars (positive).

  • receipt_tax (number, required): Tax amount in dollars (0 if none).

  • categories (array, required): Category groups with items. Each item needs name, amount.

  • date (string, optional): ISO date. Default: today.

  • memo (string, optional): Memo applied to the parent transaction.

  • receipt_subtotal (number, optional): Pre-tax subtotal for validation.

  • cleared (string, optional): "cleared", "uncleared", or "reconciled". Default: "uncleared".

  • approved (boolean, optional): Mark as approved. Default: false.

  • flag_color (string, optional): Transaction flag color ("red", "orange", "yellow", "green", "blue", "purple").

  • dry_run (boolean, optional): Preview subtransactions without saving. Default: false.

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.

ynab_update_transaction

Update fields on an existing YNAB transaction.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • transaction_id (string, required): Transaction UUID to update.

  • amount (int, optional): New amount in milliunits.

  • date (string, optional): New date YYYY-MM-DD.

  • payee_name / payee_id (string, optional): New payee.

  • category_id (string, optional): New category UUID.

  • memo (string, optional): New memo.

  • cleared (string, optional): "cleared", "uncleared", or "reconciled".

  • approved (boolean, optional): Approval status.

  • dry_run (boolean, optional): Preview without saving.

Returns: updated transaction with updated_balance.

ynab_update_transactions

Update 1–100 transactions in a single batch with dry-run preview.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • transactions (array, required): Up to 100 objects, each requires id plus fields to update.

  • dry_run (boolean, optional): Preview changes without saving. Default: false.

Returns: summary (updated, failed), results[], transactions[].

Examples:

  • Dry run: set dry_run=true to preview before/after for first 10 items

ynab_delete_transaction

Delete a transaction from YNAB. This action is irreversible.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • transaction_id (string, required): Transaction UUID to delete.

  • dry_run (boolean, optional): Preview without deleting. Default: false.

Returns: deleted transaction id and updated account balance.

Errors:

  • "Transaction not found" → invalid transaction_id

ynab_compare_transactions

Compare bank CSV transactions with YNAB transactions to find missing or mismatched entries.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • account_id (string, required): Account UUID to compare against.

  • csv_file_path or csv_data (string, required): Bank export file path or inline CSV text.

  • statement_start_date (string, optional): Filter comparison window start date (YYYY-MM-DD).

  • statement_date (string, optional): Filter comparison window end date (YYYY-MM-DD).

Returns: comparison report with matched, unmatched_bank, unmatched_ynab transactions.

ynab_reconcile_account

Guided account reconciliation: match bank CSV transactions to YNAB, detect discrepancies, and optionally execute bulk create/update/unclear operations.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • account_id (string, required): Account UUID to reconcile.

  • csv_file_path or csv_data (string, required): Bank export file path or inline CSV text.

  • statement_balance (number, required): Ending balance from the bank statement (dollars). For credit cards and other liability accounts, pass a negative value (e.g. -6143.27 means you owe $6,143.27).

  • statement_end_date (string, optional): Statement closing date (YYYY-MM-DD). Filters CSV and triggers balance verification. Auto-detected from CSV if omitted.

  • match_strictness (string, optional): Matching sensitivity — "loose" (more matches), "normal" (default), or "strict" (fewer false positives).

  • sign_convention (string, optional): How to treat CSV amount signs — "auto" (default, detects from data), "invert" (negate all amounts), "as_is" (use amounts unchanged). Useful when auto-detection fails for liability accounts.

  • dry_run (boolean, optional): Preview actions without executing. Default: true.

  • auto_create_transactions (boolean, optional): Auto-create missing transactions. Default: false.

  • auto_update_cleared_status (boolean, optional): Auto-mark matched transactions as cleared. Default: false.

  • auto_unclear_missing (boolean, optional): Auto-mark statement-missing cleared transactions as uncleared when reconciliation remains unbalanced. Default: false.

  • max_suggestions_in_output (number, optional): Limit unmatched items and suggestions shown in the human report. Default: 20.

Returns: human-readable reconciliation narrative + structured JSON (unmatched_bank, unmatched_ynab, suggestions, execution_summary when actions are performed).

Examples:

  • Preview reconciliation: set dry_run=true (default)

  • Execute: set dry_run=false and explicitly enable the write flags you want, e.g. auto_update_cleared_status=true

ynab_get_user

Get information about the authenticated YNAB user.

Args:

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: user (id)

Errors:

  • "UNAUTHORIZED" → YNAB token expired or invalid

ynab_set_default_budget

Set a default budget so other tools don't require budget_id every call.

Args:

  • budget_id (string, required): Budget UUID to set as default. Validates against YNAB API.

Returns: success, default_budget_id, cache_warm_started.

Examples:

  • Set default: provide the UUID from ynab_list_budgets

Errors:

  • "Budget not found" → invalid budget_id

ynab_get_default_budget

Get the currently configured default budget ID.

Args:

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: default_budget_id (null if not set), has_default.

ynab_diagnostic_info

Get comprehensive diagnostic information about the MCP server (health, cache, delta, security).

Args:

  • include_memory (boolean, optional): Include memory usage. Default: true.

  • include_environment (boolean, optional): Include env info. Default: true.

  • include_server (boolean, optional): Include server info. Default: true.

  • include_security (boolean, optional): Include security stats. Default: true.

  • include_cache (boolean, optional): Include cache metrics. Default: true.

  • include_delta (boolean, optional): Include delta cache info. Default: true.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: diagnostics object with requested sections.

ynab_clear_cache

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

NameDescription
create-transactionCreate a new transaction in YNAB
budget-summaryGet a summary of your budget status
reconcile-accountReconcile a YNAB account against a bank statement or CSV export
account-balancesCheck balances across all accounts

Resources

Contextual data attached and managed by the client

NameDescription
YNAB BudgetsList of all available budgets
YNAB User InfoCurrent user information including ID and email address

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/dizzlkheinz/ynab-mcpb'

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