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'. |
Capabilities
Features and capabilities supported by this server
| 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_budgets | 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_accounts | 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_categories | 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_payees | List all payees in a budget. Args: budget_id: Budget ID (uses default if omitted). Returns: List of payees with id and name. |
| get_month | 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_transactions | 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_transaction | 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_category | 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_transaction | 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_transaction | 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_bulk | 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_transactions | 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_account | 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_months | 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_category | 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 | |