Skip to main content
Glama
LandonSchropp

ynab-mcp-server

Get Transactions

ynab_get_transactions
Read-only

Retrieve YNAB transactions by plan, date range, type, account, category, payee, amount, direction, or memo, and optionally return only inflow, outflow, and net totals.

Instructions

Gets transactions from a plan, optionally between a start and end date and by type (all, uncategorized or unapproved). Filter by at most one of account, category or payee: they cannot be combined, and if several are given only the first in that order is applied. To search, add payee or memo text, an amount range or a direction. Any search option (or untilDate) adds inflow, outflow and net totals over every match; the totals include transfers between accounts, such as credit card payments. totalsOnly returns just the totals (e.g. categoryId with a year's dates and totalsOnly). Without categoryId or payeeId, split transactions are matched leg by leg and the totals count only the matching legs. With categoryId or payeeId, rows are matched as YNAB returns them, so a split's parent row in the payee listing counts at its full amount.

Input Schema

NameRequiredDescriptionDefault
typeNoFilter by transaction type. Defaults to 'all'.
limitNoMaximum number of transactions to return (default: 100). Totals always cover every match.
planIdNoThe plan ID (optional, defaults to YNAB_PLAN_ID; budgetId is a deprecated alias)
payeeIdNoFilter to only transactions with this payee
budgetIdNoDeprecated alias of planId (still accepted)
accountIdNoFilter to only transactions in this account
directionNoOnly money going out, coming in, or both. Defaults to 'any'.
maxAmountNoLargest amount to include, ignoring sign, in currency units
minAmountNoSmallest amount to include, ignoring sign, in currency units (e.g. 25.50)
sinceDateNoOnly return transactions on or after this date (ISO format: 2024-01-01)
untilDateNoOnly return transactions on or before this date (ISO format: 2024-12-31)
categoryIdNoFilter to only transactions in this category
totalsOnlyNoReturn only the totals, without transaction rows (default: false)
memoContainsNoOnly transactions whose memo contains this text (case-insensitive)
payeeContainsNoOnly transactions whose payee name contains this text (case-insensitive)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.7.1

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, non-destructive), and the description adds substantial non-obvious behavior on top: totals always cover every match regardless of limit, totals include inter-account transfers like credit card payments, and split transactions match leg-by-leg without categoryId/payeeId but as a full parent row with them. This is exactly the context annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded in the first sentence and every subsequent sentence carries real information about filters, totals or splits. It is a dense run-on paragraph, though, with the split-transaction caveat trailing at the end where it is easy to miss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 15-parameter read tool with no output schema, the definition covers the filter precedence, the date/type defaults, search-triggered aggregate behavior and the split-matching edge case. An agent can call this correctly and predict what the totals contain without further documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so field-level meaning is already documented; the description adds genuine cross-parameter semantics the schema cannot encode, namely the mutual exclusion and precedence order among accountId, categoryId and payeeId, and how categoryId/payeeId change split-row matching. Those additions push it above the baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource with scope: gets transactions from a plan, with date, type and filter scope spelled out. It never names a sibling to use instead, so an agent facing ynab_get_unapproved_transactions or ynab_spending_by_category has to infer the boundary, which keeps it out of the top band.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage rules: at most one of account/category/payee may be used, and if several are supplied only the first in that order applies. It also explains what triggers totals and when totalsOnly is appropriate (categoryId plus a year of dates). No explicit when-not-use or sibling routing, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.