# YNAB — how to use (mcp.ai)

Connect your YNAB account and use 27 tools for accounting straight from your AI agent. Connect in one click, no API key needed. YNAB (You Need A Budget) is a budgeting tool helping users track expenses, plan finances, and gain control over spending to reduce debt.

## Option A — via MCP (recommended)
Remote MCP endpoint (HTTP, streamable): `https://api.mcp.ai/p_ynab?ms=1787295840000`
Add it as a custom/remote MCP connector in your client (Claude, Cursor, VS Code…), then authenticate when prompted. Once connected, ask the agent to use the server's tools (e.g. `ynab_create_account`).

## Option B — via direct REST API
Base URL: `https://api.mcp.ai/api/ynab`
Auth: `Authorization: Bearer sk_live_…` — create a workspace API key at https://mcp.ai/settings/api-keys
Discover endpoints: `GET https://api.mcp.ai/api/ynab/_endpoints`

### Endpoints
- `POST https://api.mcp.ai/api/ynab/create/account` — Tool to create a new account in a budget. Use when you need to add a manual (non-linked) account to a specific budget.
  - body: { account: object, budget_id: string }
- `POST https://api.mcp.ai/api/ynab/create/scheduled/transaction` — Creates a scheduled (recurring) transaction in a YNAB budget. Use this to set up bills, recurring expenses, or income that repeats on a schedule. Requires an account_id (from YNAB_LIST_ACCOUNTS), a da
  - body: { budget_id: string, scheduled_transaction: object }
- `POST https://api.mcp.ai/api/ynab/delete/scheduled/transaction` — Permanently deletes a scheduled transaction from a YNAB budget. Use this when a recurring transaction is no longer needed. This action cannot be undone. Obtain the scheduled_transaction_id from list_s
  - body: { budget_id: string, scheduled_transaction_id: string }
- `POST https://api.mcp.ai/api/ynab/get/account/by/id` — Tool to retrieve a single account resource. Use when you need details of a specific account by its ID after determining the budget.
  - body: { budget_id: string, account_id: string }
- `POST https://api.mcp.ai/api/ynab/get/budget/by/id` — Retrieve a complete budget export by ID, including all accounts, categories, payees, and transactions. Use this tool when you need comprehensive budget data. The response includes: - Budget metadata (
  - body: { budget_id: string, last_knowledge_of_server?: integer }
- `POST https://api.mcp.ai/api/ynab/get/budget/month` — Tool to retrieve a specific budget month. Use when you need detailed summary and category budgets for a given month after confirming the budget ID. Monetary amounts are returned in milliunits (divide 
  - body: { month: string, budget_id: string }
- `POST https://api.mcp.ai/api/ynab/get/budget/settings` — Tool to retrieve budget-level settings. Use when you need to fetch currency and date formatting preferences for a specific budget.
  - body: { budget_id: string }
- `POST https://api.mcp.ai/api/ynab/get/category/by/id` — Retrieve a single YNAB budget category by its ID. Use this to get detailed category information including budgeted amounts, activity, balance, and goal settings. Amounts are returned for the current b
  - body: { budget_id: string, category_id: string }
- `POST https://api.mcp.ai/api/ynab/get/month/category/by/id` — Tool to retrieve a single category for a specific budget month. Use after selecting the budget and month when you need month-specific category details.
  - body: { month: string, budget_id: string, category_id: string }
- `POST https://api.mcp.ai/api/ynab/get/payee/by/id` — Tool to retrieve a single payee by its ID. Use when you need full details of a payee after confirming the budget and payee selection.
  - body: { payee_id: string, budget_id: string }
- `POST https://api.mcp.ai/api/ynab/get/scheduled/transaction/by/id` — Tool to retrieve a single scheduled transaction. Use when you need details of a specific scheduled transaction by its ID after confirming the budget.
  - body: { budget_id: string, scheduled_transaction_id: string }
- `POST https://api.mcp.ai/api/ynab/get/transaction/by/id` — Tool to retrieve a single transaction by its ID. Use when you need detailed information for a specific transaction after confirming the budget.
  - body: { budget_id: string, transaction_id: string }
- `POST https://api.mcp.ai/api/ynab/get/user` — Tool to retrieve the authorized user's information. Use after authentication to get current user details.
- `POST https://api.mcp.ai/api/ynab/list/accounts` — Retrieves all accounts for a specified YNAB budget. Use this tool to: - Get a complete list of accounts (checking, savings, credit cards, loans, etc.) in a budget - Retrieve account IDs for use with o
  - body: { budget_id: string, last_knowledge_of_server?: integer }
- `POST https://api.mcp.ai/api/ynab/list/budgets` — Retrieves all budgets accessible to the authenticated YNAB user. Use this tool to: - Get a list of all budgets in the user's YNAB account - Retrieve budget IDs for use with other YNAB operations - Opt
  - body: { include_accounts?: boolean }
- `POST https://api.mcp.ai/api/ynab/list/categories` — Tool to list all category groups and their categories for a budget. Use when you need the full set of budget categories or only those changed since last sync. Category names may include emojis or near
  - body: { budget_id: string, last_knowledge_of_server?: integer }
- `POST https://api.mcp.ai/api/ynab/list/months` — Tool to list months for a budget with summary information. Use when you need an overview of all months or only changed months since a given knowledge value (delta requests).
  - body: { budget_id: string, last_knowledge_of_server?: integer }
- `POST https://api.mcp.ai/api/ynab/list/payee/locations` — Retrieves all GPS locations associated with payees in a budget. Payee locations are recorded when transactions are saved using the YNAB mobile apps, storing GPS coordinates to help pre-populate nearby
  - body: { budget_id: string }
- `POST https://api.mcp.ai/api/ynab/list/payee/locations/by/payee` — Retrieves all GPS locations associated with a specific payee in a budget. Payee locations are recorded when transactions are saved using the YNAB mobile apps, storing GPS coordinates to help pre-popul
  - body: { payee_id: string, budget_id: string }
- `POST https://api.mcp.ai/api/ynab/list/payees` — Tool to list payees in a budget. Use when you need all payees or only those changed since a known server knowledge value.
  - body: { budget_id: string, last_knowledge_of_server?: integer }
- `POST https://api.mcp.ai/api/ynab/list/scheduled/transactions` — List all scheduled (recurring) transactions for a YNAB budget. Returns future-dated transactions that repeat on a schedule (e.g., rent, subscriptions, paychecks). Supports delta sync to fetch only cha
  - body: { budget_id: string, last_knowledge_of_server?: integer }
- `POST https://api.mcp.ai/api/ynab/list/transactions` — Tool to list transactions in a budget. Use when you need all or delta-filtered transactions after confirming the budget. Omitting all filters returns the full transaction history, which may produce la
  - body: { type?: string, budget_id: string, since_date?: string, last_knowledge_of_server?: integer }
- `POST https://api.mcp.ai/api/ynab/list/transactions/by/account` — Tool to list transactions for a specific account. Use when you need all or delta-filtered transactions for a given account after confirming the budget and account ID.
  - body: { type?: string, budget_id: string, account_id: string, since_date?: string, last_knowledge_of_server?: integer }
- `POST https://api.mcp.ai/api/ynab/list/transactions/by/category` — Tool to list transactions for a specific category (excludes pending). Use when you need completed transactions for a given category after obtaining budget_id and category_id. Response includes deleted
  - body: { type?: string, budget_id: string, since_date?: string, category_id: string, last_knowledge_of_server?: integer }
- `POST https://api.mcp.ai/api/ynab/list/transactions/by/payee` — Tool to list transactions for a specific payee in a budget. Use when you need to fetch all non-pending transactions for a payee after confirming budget and payee IDs.
  - body: { type?: string, payee_id: string, budget_id: string, since_date?: string, last_knowledge_of_server?: integer }
- `POST https://api.mcp.ai/api/ynab/update/payee` — Tool to update a payee. Use when you need to rename an existing payee.
  - body: { name: string, payee_id: string, budget_id: string }
- `POST https://api.mcp.ai/api/ynab/update/scheduled/transaction` — Update an existing scheduled transaction in YNAB. Allows modifying the date, frequency, amount, payee, category, memo, or account of a scheduled transaction. Use YNAB_LIST_SCHEDULED_TRANSACTIONS first
  - body: { budget_id: string, scheduled_transaction: object, scheduled_transaction_id: string }

## Example prompts
- "What can I do in YNAB?"
- "Show me a summary of my YNAB account"

## More
- Page: https://mcp.ai/ynab
- Agent spec (llms.txt): https://mcp.ai/ynab/llms.txt
- Postman collection: https://mcp.ai/ynab/postman.json
