Skip to main content
Glama
chrisguidry
by chrisguidry

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
YNAB_ACCESS_TOKENYesYour YNAB Personal Access Token
YNAB_DEFAULT_BUDGETNoDefault budget ID to use if not specified in API calls

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

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

Tools

Functions exposed to the LLM to take actions

NameDescription
get_planA

Get the plan's name, the months it covers, and its currency and date formats. Use the currency format to write amounts the way the user sees them in YNAB.

get_plan_monthB

Get one month of the plan: income, assigned, activity, Ready to Assign, age of money, and each visible category's amounts for that month.

list_plan_monthsA

List the plan's months with their totals, newest first.

Use this for trends over time: income, assigned, and activity by month, how Ready to Assign changed, and how age of money moved.

get_month_categoryA

Get one category's assigned, activity, available, and target for a month.

list_accountsA

List the plan's accounts with their balances.

Each account includes its transfer_payee_id: use it as the payee of a transaction to transfer money into that account.

create_accountA

Create an account that the user tracks by hand, such as cash or a new savings account. The account is not connected to a bank.

list_categoriesA

List the plan's categories with this month's amounts and targets.

Only returns visible categories. Hidden and deleted categories are excluded. Categories come in the order the plan shows them, group by group.

list_category_groupsA

List the plan's category groups with this month's totals.

Lighter than list_categories when only the overview by group is needed.

create_categoryC

Create a category in a category group, optionally with a target.

update_categoryA

Rename a category, change its note, move it to another group, or set its target. Only the fields given change.

To change what is assigned to a category, use assign_money or set_assigned.

create_category_groupB

Create an empty category group.

rename_category_groupC

Rename a category group.

assign_moneyA

Assign more money to a category from Ready to Assign, or take some back.

This adds to what is already assigned: assigning 100 to a category with 250 assigned leaves 350 assigned. A negative amount returns money to Ready to Assign. Calling this twice assigns twice, so do not retry it blindly after an error; check the category with get_month_category first.

For categories with NEED targets that refill each month, the full target is usually assigned every month, whatever is available.

set_assignedA

Set exactly how much is assigned to a category in a month.

Unlike assign_money, this replaces the assigned amount, so it is safe to retry. Ready to Assign absorbs the difference.

move_moneyA

Move assigned money from one category to another within a month.

This is how to cover overspending or reallocate: it takes the amount off one category's assigned amount and adds it to the other's. Ready to Assign does not change. If YNAB rejects the second change, the first is put back before the error is reported.

list_money_movementsA

List the history of money assigned and moved between categories.

Use this to explain why a category's assigned amount changed: each entry says how much moved, from where, to where, and when.

list_payeesA

List the plan's payees, sorted by name.

Payees are the people and businesses money goes to and comes from. To find a particular payee, find_payee is much faster than paging through this list. Deleted payees are excluded.

find_payeeA

Find payees whose names contain a search term, ignoring case.

Example queries this tool can answer:

  • "Find Amazon payee ID" (use name_search="amazon")

  • "Show me all Starbucks locations" (use name_search="starbucks")

  • "Find payees with 'grocery' in the name" (use name_search="grocery")

create_payeeA

Create a payee.

A new transaction can also create its payee by giving payee_name, so this is only needed to set up a payee before any transaction uses it.

rename_payeeA

Rename a payee. Every transaction with this payee shows the new name.

list_transactionsA

List transactions, newest first, with filters that can be combined.

Example queries this tool can answer:

  • "Show me all transactions over $50 in Dining Out this year" → category_id=, max_amount=-50, since_date=2024-01-01

  • "What do I still need to review?" → status="unapproved"

  • "What hasn't been categorized?" → status="uncategorized"

  • "How much did we spend at Amazon in March?" → payee_id=, since_date=2024-03-01, until_date=2024-03-31

  • "Find the soccer registration fee" → text_search="soccer"

Filtering by category or payee returns each part of a split transaction as its own row, with parent_transaction_id set.

get_transactionA

Get one transaction, including the parts of a split.

create_transactionsA

Create one or more transactions in one request.

Use this to enter spending from a receipt, record income, enter a transfer between accounts, or add a split transaction. Calling this twice enters the transactions twice.

Example entries:

  • Spending: account_id=, date=2024-03-02, amount=-43.17, payee_name="Kroger", category_id=

  • Income: amount=2500, payee_name="Acme Payroll", category_id=<Inflow: Ready to Assign>

  • Transfer: account_id=, amount=-200, transfer_account_id=, no category

  • Split: amount=-80, payee_name="Target", no category, splits=[ {amount: -50, category_id: }, {amount: -30, category_id: }]

update_transactionsA

Change one or more existing transactions in one request.

Each change names a transaction and only the fields to change; every other field stays as it is. This is the tool for reviewing transactions: approve them, categorize them, fix payees, set memos, flag them, or mark them cleared.

Example changes:

  • Approve and categorize: {id: , approved: true, category_id: }

  • Fix the payee: {id: , payee_name: "Costco"}

  • Clear the memo and the flag: {id: , memo: "", clear_flag: true}

delete_transactionA

Delete a transaction. Confirm with the user before deleting.

import_transactionsA

Ask YNAB to import new transactions from the plan's linked bank accounts now, instead of waiting for its next scheduled import.

Imported transactions arrive unapproved. Find them with list_transactions and status="unapproved".

list_scheduled_transactionsA

List scheduled transactions, soonest first, with filters that can be combined.

Example queries this tool can answer:

  • "Show me all monthly recurring expenses" (use frequency="monthly")

  • "What bills are due in the next 7 days?" (use upcoming_days=7)

  • "List all Netflix subscriptions" (find the payee first, then use payee_id)

  • "Show scheduled income over $100" (use min_amount=100)

get_scheduled_transactionC

Get one scheduled transaction.

create_scheduled_transactionC

Schedule a transaction: a bill, a paycheck, or a regular transfer.

update_scheduled_transactionA

Change a scheduled transaction. Fields left out do not change.

Use this when a bill's amount changes, it moves to another day or account, or it repeats on a new schedule. Split scheduled transactions cannot be changed through YNAB's API.

delete_scheduled_transactionA

Delete a scheduled transaction, so it stops happening. Transactions it already entered stay. Confirm with the user before deleting.

enter_scheduled_transactionA

Enter a scheduled transaction now, before its date, like YNAB's "Enter Now". Use this when a bill is paid early or a paycheck arrives early.

This creates the transaction and moves the schedule to the occurrence after its next one. A schedule that happens only once is deleted. Split scheduled transactions, and those that repeat "twiceAMonth", cannot be entered this way; enter them in YNAB. Calling this twice enters two occurrences.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.5/5.0

Scored across 32 tools

Disambiguation5/5

Tools are organized by resource and action, and near-neighbors are explicitly contrasted: assign_money vs set_assigned vs move_money, list_payees vs find_payee, and get_plan_month vs get_month_category. An agent can reliably distinguish the intended tool from names and descriptions.

Naming Consistency5/5

Names consistently use snake_case with verb-first patterns such as get_, list_, create_, update_, delete_, and rename_. Pluralization is semantically consistent for batch-oriented transaction tools, and exceptions like set_assigned remain clear.

Tool Count3/5

32 tools is a heavy surface for an MCP server and may strain tool selection, even though the YNAB domain is broad and most tools map to real operations. The set is cohesive and not duplicative, but it sits above the comfortable range.

Completeness4/5

Core workflows are well covered: transaction and scheduled-transaction lifecycles are complete, money movement is supported, and plan/category/account/payee reads and creates/updates exist. Gaps remain around account/category/payee deletion and some detail lookups, though these may reflect YNAB API limits.

Maintenance

ActivityMaintained
ResponsivenessSlow