ynab-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| YNAB_API_TOKEN | Yes | YNAB personal access token | |
| YNAB_READ_ONLY | No | Set true to block all write operations | false |
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": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| ynab_get_spending_summaryA | Aggregate transactions by category and return ranked spending totals. Use this to answer questions like:
Amounts are returned in dollars (not YNAB milliunits). Transfers and income are excluded — only outflows are shown. |
| ynab_consolidate_payeeA | Rename a payee and update all its transactions to use a canonical name. Use this to clean up messy imported payee names:
IMPORTANT — always call with preview_only=true first. This shows you exactly which transactions will be affected. Only set preview_only=false after reviewing and approving the preview. How it works:
Note: YNAB does not have a "delete payee" endpoint. Renaming the payee is the correct approach — it handles deduplication internally. |
| getUserA | Returns authenticated user information |
| getPlansB | Returns plans list with summary information |
| getPlanByIdA | Returns a single plan with all related entities. This resource is effectively a full plan export. |
| getPlanSettingsByIdC | Returns settings for a plan |
| getAccountsB | Returns all accounts |
| createAccountC | Creates a new account |
| getAccountByIdB | Returns a single account |
| getCategoriesA | Returns all categories grouped by category group. Amounts (assigned, activity, available, etc.) are specific to the current plan month (UTC). |
| createCategoryC | Creates a new category |
| getCategoryByIdA | Returns a single category. Amounts (assigned, activity, available, etc.) are specific to the current plan month (UTC). |
| updateCategoryC | Update a category |
| getMonthCategoryByIdA | Returns a single category for a specific plan month. Amounts (assigned, activity, available, etc.) are specific to the current plan month (UTC). |
| updateMonthCategoryA | Update a category for a specific month. Only |
| createCategoryGroupC | Creates a new category group |
| updateCategoryGroupC | Update a category group |
| getPayeesB | Returns all payees |
| createPayeeC | Creates a new payee |
| getPayeeByIdB | Returns a single payee |
| updatePayeeD | Update a payee |
| getPayeeLocationsB | Returns all payee locations |
| getPayeeLocationByIdC | Returns a single payee location |
| getPayeeLocationsByPayeeB | Returns all payee locations for a specified payee |
| getPlanMonthsC | Returns all plan months |
| getPlanMonthB | Returns a single plan month |
| getMoneyMovementsC | Returns all money movements |
| getMoneyMovementsByMonthC | Returns all money movements for a specific month |
| getMoneyMovementGroupsC | Returns all money movement groups |
| getMoneyMovementGroupsByMonthC | Returns all money movement groups for a specific month |
| getTransactionsC | Returns plan transactions, excluding any pending transactions |
| createTransactionA | Creates a single transaction or multiple transactions. If you provide a body containing a |
| updateTransactionsC | Updates multiple transactions, by |
| importTransactionsA | Imports available transactions on all linked accounts for the given plan. Linked accounts allow transactions to be imported directly from a specified financial institution and this endpoint initiates that import. Sending a request to this endpoint is the equivalent of clicking "Import" on each account in the web application or tapping the "New Transactions" banner in the mobile applications. The response for this endpoint contains the transaction ids that have been imported. |
| getTransactionByIdC | Returns a single transaction |
| updateTransactionC | Updates a single transaction |
| deleteTransactionC | Deletes a transaction |
| getTransactionsByAccountB | Returns all transactions for a specified account, excluding any pending transactions |
| getTransactionsByCategoryA | Returns all transactions for a specified category, excluding any pending transactions |
| getTransactionsByPayeeA | Returns all transactions for a specified payee, excluding any pending transactions |
| getTransactionsByMonthB | Returns all transactions for a specified month, excluding any pending transactions |
| getScheduledTransactionsC | Returns all scheduled transactions |
| createScheduledTransactionB | Creates a single scheduled transaction (a transaction with a future date). |
| getScheduledTransactionByIdB | Returns a single scheduled transaction |
| updateScheduledTransactionC | Updates a single scheduled transaction |
| deleteScheduledTransactionB | Deletes a scheduled transaction |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 46 tools
Each tool targets a specific resource and action (get, create, update, delete, import, consolidate, spend). Even similar getters are differentiated by filters (by account, category, month, payee), and the two custom ynab_ functions have unique purposes.
All tools follow a consistent camelCase verb_noun pattern (e.g., getAccounts, createTransaction, updateCategory). The two ynab_ prefixed tools are the only exceptions but are clearly labeled as custom utilities.
46 tools is high but justified by the complexity of YNAB's data model (accounts, categories, payees, transactions, plans, etc.). Each tool addresses a distinct endpoint, though some consolidation could reduce count slightly.
Core transaction and scheduled transaction CRUD is complete, but accounts lack update/delete endpoints, and categories lack delete. Plans only have read operations. The ynab_consolidate_payee workaround addresses missing payee deletion, but gaps remain.