py-ynab-mcp
This server provides read and write access to YNAB budgeting data via the Model Context Protocol.
Budgets: List all budgets, retrieve budget settings (date/currency formats).
Accounts: List all accounts, get a single account with balance, type, and on-budget status.
Categories: List all categories grouped by category group, get a single category with budgeted/activity/balance details, set a category's budgeted (assigned) amount, update category name/note/hidden status.
Payees: List all payees, get a single payee, rename a payee.
Months: List all budget months with summary info, get a single month's detailed data.
Transactions: List transactions with optional filters (by account, category, payee, or type), get a single transaction, create single or bulk transactions (with dry-run preview), update transaction fields (account, amount, date, payee, category, memo, cleared, approved), delete transactions.
Scheduled Transactions: List all scheduled transactions with frequency and next date, get a single scheduled transaction (including subtransactions), create scheduled transactions (with frequency validation), update scheduled transaction fields, delete scheduled transactions.
User: Get the authenticated user's ID.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@py-ynab-mcpShow my transactions for the current month"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
py-ynab-mcp
A Model Context Protocol server for YNAB (You Need A Budget). Talk to your budget from Claude, Cursor, or any MCP client.
Features
Query budgets, accounts, categories, transactions, payees, and months
Get single-resource details (account, category, payee, transaction)
Create, update, and delete transactions (single and bulk)
Create categories; update or clear targets, metadata, and budgets
Rename payees
Manage scheduled transactions (full CRUD)
Budget settings and user info
Related MCP server: YNAB MCP Server
Install
uvx py-ynab-mcpOr with pip:
pip install py-ynab-mcpSetup
Get a YNAB Personal Access Token
Add to your MCP client config:
{
"mcpServers": {
"ynab": {
"command": "uvx",
"args": ["py-ynab-mcp"],
"env": {
"YNAB_ACCESS_TOKEN": "your-token-here"
}
}
}
}Why this project?
There are several YNAB MCP servers out there:
Project | Language | License |
TypeScript | MIT | |
JavaScript | MIT | |
Python | No license | |
py-ynab-mcp | Python | MIT |
We wanted an MIT-licensed Python implementation with full API coverage and thorough test coverage. At the time of writing, the only Python option had no OSS license, so we built this one.
YNAB API Coverage
Read
User info, budget settings
Budgets, accounts, categories, payees, months (list and single)
Transactions with filtering by account, category, or payee
Scheduled transactions (list and single)
Write
Create, update, delete transactions (single and bulk)
Create categories; update or clear targets, metadata, and budgets
Rename payees
Create, update, delete scheduled transactions
Not available in YNAB API
Create/delete budgets or accounts; delete categories
Create/delete payees (auto-created via transactions)
Transaction import
Development
# Clone and install
git clone https://github.com/duganth/py-ynab-mcp.git
cd py-ynab-mcp
uv sync
# Run tests
uv run pytest
# Lint and type check
uv run ruff check .
uv run mypy src/License
MIT
Available Tools
27 toolsclear_category_targetA
Remove a category target without changing its assigned money.
Args: category_id: Category UUID. budget_id: Budget ID. Defaults to last-used budget. dry_run: Validate and preview without clearing the target.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| budget_id | No | ||
| category_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the primary side effect (does not change assigned money) and mentions a dry_run preview. Since no annotations are provided, it lacks details on reversibility or error behavior, but covers core behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and direct, with no unnecessary words or redundancy. Each sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with three parameters and an output schema, the description covers the essential action and parameter meanings. It does not explain return values, but the output schema exists, so completeness is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides basic semantics for each parameter: category_id is a UUID, budget_id defaults to last-used, and dry_run validates without clearing. This adds value beyond the schema's plain titles, though more detail on budget_id behavior could be given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: remove a category target while preserving assigned money. It is specific and distinguishable from sibling tools like update_category_budget or create_category.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by highlighting the effect on assigned money, which differentiates it from budget-modifying alternatives. However, it does not explicitly state when to choose this over other tools or provide conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_categoryA
Create a category in a YNAB category group.
Args: category_group_id: Category group UUID. name: Category name. note: Optional category note. target_amount: Optional positive target amount in dollars. target_date: Optional target date in YYYY-MM-DD format. target_needs_whole_amount: Whether the entire target is needed. target_frequency: Optional target recurrence: monthly, weekly, or yearly. Cannot be combined with target_date. budget_id: Budget ID. Defaults to last-used budget. dry_run: Validate and preview without creating.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| note | No | ||
| dry_run | No | ||
| budget_id | No | ||
| target_date | No | ||
| target_amount | No | ||
| target_frequency | No | ||
| category_group_id | Yes | ||
| target_needs_whole_amount | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden and does well by explaining the dry_run preview behavior, default budget selection, and the constraint that target_frequency cannot be combined with target_date. It does not mention error conditions or side effects beyond creation, but the key behaviors are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured, with each parameter on its own line and no redundant prose. It conveys all necessary operational details without wasting words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity and the presence of an output schema, the description covers the main operational aspects, including defaults and a validation mode. It does not describe the success return value or potential errors, but the dry_run explanation and parameter constraints make it sufficiently complete for an agent to use it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds meaningful semantics beyond the bare schema by specifying units for target_amount, date format for target_date, allowed values for target_frequency, the mutual exclusivity with target_date, and the default behavior for budget_id and dry_run. All nine parameters are explained despite the schema having no property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates a category in a YNAB category group, with the verb 'create' and a specific resource. It distinguishes itself from related category tools by focusing on the creation action, making its purpose obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains how to use the tool, including defaults and the dry_run option, but it does not explicitly say when to use it instead of sibling tools like update_category or update_category_budget. The creation context is implied rather than stated as a direct alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_scheduled_transactionA
Create a scheduled (recurring) transaction in YNAB.
Args: account_id: Account UUID. amount: Dollar amount ("-42.50" for outflow, "100.00" for inflow). date: First occurrence date (YYYY-MM-DD). frequency: Recurrence frequency. Only single-word values work via the YNAB API: "never", "daily", "weekly", "monthly", "yearly". Multi-word camelCase values (everyOtherWeek, twiceAMonth, etc.) are documented but rejected by YNAB's own backend — set those manually in the YNAB UI. payee_name: Payee name. category_id: Category UUID. memo: Transaction memo. flag_color: Flag color. budget_id: Budget ID. Defaults to last-used budget. dry_run: Validate and preview without creating.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ||
| memo | No | ||
| amount | Yes | ||
| dry_run | No | ||
| budget_id | No | ||
| frequency | Yes | ||
| account_id | Yes | ||
| flag_color | No | ||
| payee_name | No | ||
| category_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses important behaviors: frequency values limitation (multi-word rejected by YNAB backend), dry_run parameter for preview, and default budget_id. It could mention if changes are reversible or auth requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a header and bullet points. It is slightly long but every sentence adds value. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters, 0% schema coverage, and no annotations, the description covers all parameters, explains behavior, and mentions a dry run feature. Output schema exists, so return values need not be described. Complete for usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It provides detailed explanations for all 10 parameters, including amount format ('-42.50' for outflow), date format (YYYY-MM-DD), frequency caveat, and default for budget_id. This adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create a scheduled (recurring) transaction in YNAB,' which is a specific verb and resource. It distinguishes from siblings like create_transaction by specifying 'recurring.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for recurring transactions but does not explicitly state when to use this tool over alternatives like create_transaction or when not to use it. No exclusions or alternatives are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_transactionA
Create a transaction in YNAB.
Args: account_id: Account UUID. amount: Dollar amount ("-42.50" for outflow, "100.00" for inflow). date: Transaction date (YYYY-MM-DD). payee_name: Payee name (YNAB auto-creates new payees). payee_id: Payee UUID, including an account transfer payee ID. category_id: Category UUID. Omit when splitting. memo: Transaction memo. cleared: "cleared", "uncleared", or "reconciled". approved: Whether the transaction is approved. subtransactions_json: JSON array of split legs, to record one card charge against several categories. Each element: {"amount", "category_id"?, "payee_name"?, "payee_id"?, "memo"?}. Amounts are dollars with the same sign as the parent (e.g. "-30.00") and must sum to it. Needs at least two legs, and category_id must be left off the parent. budget_id: Budget ID. Defaults to last-used budget. dry_run: Validate and preview without creating.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ||
| memo | No | ||
| amount | Yes | ||
| cleared | No | ||
| dry_run | No | ||
| approved | No | ||
| payee_id | No | ||
| budget_id | No | ||
| account_id | Yes | ||
| payee_name | No | ||
| category_id | No | ||
| subtransactions_json | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden. It clearly indicates that normal execution creates a transaction and dry_run validates without creating, making the primary side effect explicit, though it doesn't mention downstream balance or budget effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a clean, alphabetically organized parameter list with concise inline explanations and useful examples; no superfluous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All 12 parameters are covered with enough detail to construct valid calls. Output schema exists, so return values need not be explained. No significant gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema properties have no descriptions, but the tool description fully compensates by explaining every parameter, including UUID roles, amount sign conventions, date format, payee auto-creation, split-transaction semantics, budget defaulting, and dry_run behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the specific verb-resource pairing 'Create a transaction in YNAB' and is easily distinguished from siblings like create_transactions, create_scheduled_transaction, and update_transaction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies single-transaction creation and mentions dry_run for validation, but it does not explicitly contrast with create_transactions or other transaction-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_transactionsA
Create multiple transactions in YNAB in a single API call.
Preferred over create_transaction when creating multiple transactions to minimize rate limit usage.
Args: transactions_json: JSON array of transactions. Each element: {"account_id", "amount", "date", "payee_name"?, "payee_id"?, "category_id"?, "memo"?, "cleared"?, "approved"?}. Amounts are in dollars (e.g. "-42.50"). budget_id: Budget ID. Defaults to last-used budget. dry_run: Validate and preview without creating.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| budget_id | No | ||
| transactions_json | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It discloses the mutation action, the dry_run preview, and the dollar amount format, which is useful. However, it does not disclose important behaviors such as atomicity (what happens if some transactions fail), permission requirements, or reversibility. Given the batch nature, these gaps are noticeable, so a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with an Args section, front-loaded with the primary purpose and usage preference. It is concise, with no redundant sentences, and all information serves a clear purpose. The layout makes it easy for an agent to scan and extract key details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return value details are not required. However, for a batch creation tool, the description should mention behavior on partial failure (e.g., atomicity, error reporting) and any prerequisites like authentication. These are not addressed. The description covers the basics but lacks critical operational context for a multi-item operation, so a 3 is justified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, so the description must compensate. It does so thoroughly: it explains transactions_json as a JSON array with each element's fields and optional markers, provides an example of the amount format, clarifies budget_id's default behavior, and describes dry_run. The only minor gap is that the schema allows transactions_json to be either a string or an array, while the description only mentions an array, which could cause slight ambiguity. Still, it adds significant meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Create multiple transactions in YNAB in a single API call.' It names the resource (transactions) and the action (create), and distinguishes it from the sibling create_transaction by focusing on the batch aspect. An agent can immediately tell what this tool does and how it differs from the singular variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool: 'Preferred over create_transaction when creating multiple transactions to minimize rate limit usage.' This gives clear guidance on selecting it over the alternative and even mentions the rationale (rate limits). It also mentions the dry_run option for validation, which further clarifies usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_scheduled_transactionA
Delete a scheduled transaction from YNAB.
Args: scheduled_transaction_id: Scheduled transaction UUID. budget_id: Budget ID. Defaults to last-used budget. dry_run: Validate and preview without deleting.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| budget_id | No | ||
| scheduled_transaction_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description bears full responsibility. It mentions the dry_run parameter for validation without deletion, adding transparency. However, it does not state that deletion is irreversible or require confirmation, leaving some behavioral aspects unclear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using a clear docstring format with an Args section. It is front-loaded with the main purpose and then details parameters. No unnecessary information is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the existence of an output schema, the description does not need to cover return values. However, as a delete operation with no annotations, it could mention success/failure indicators or error conditions. The description is adequate but leaves some context unaddressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates by listing all three parameters and adding meaning: scheduled_transaction_id is a UUID, budget_id defaults to last-used budget, and dry_run validates without deleting. This provides useful context beyond the schema's type definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete a scheduled transaction from YNAB', identifying the specific verb and resource (delete, scheduled transaction). This distinguishes it from sibling tools like create_scheduled_transaction and update_scheduled_transaction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when or when not to use this tool is provided. While the purpose is clear, there is no description of prerequisites, such as ensuring the scheduled transaction exists, or mentioning alternatives for similar operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_transactionB
Delete a transaction from YNAB.
Args: transaction_id: Transaction UUID to delete. budget_id: Budget ID. Defaults to last-used budget. dry_run: Validate and preview without deleting.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| budget_id | No | ||
| transaction_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the destructive nature ('Delete') and includes a dry_run parameter for preview, which adds transparency. However, it does not discuss reversibility, effects on budget, or error handling for missing transactions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a single sentence followed by a bullet list of arguments. It is front-loaded with the core action and every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and only 3 parameters, the description covers the basic operation but lacks details on return values (though output schema exists), edge cases, and behavioral context like what happens after deletion.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description adds meaningful explanations for all three parameters: transaction_id ('UUID to delete'), budget_id ('Defaults to last-used budget'), and dry_run ('Validate and preview without deleting'). This compensates well for the schema's lack of descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete a transaction from YNAB' with a specific verb and resource. However, it does not explicitly differentiate from sibling tools like delete_scheduled_transaction, though the context distinguishes it as a regular transaction deletion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives (e.g., delete_scheduled_transaction). Prerequisites like transaction existence or constraints like reconciled transactions are not mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountA
Get a single YNAB account with full details.
Returns balance, type, on-budget status, note, and more.
Args: account_id: Account UUID. budget_id: Budget ID. Defaults to last-used budget.
| Name | Required | Description | Default |
|---|---|---|---|
| budget_id | No | ||
| account_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool is a read operation returning full details, and mentions default behavior for budget_id. However, it does not discuss side effects, rate limits, or authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise: a single sentence for purpose, a sentence listing returned fields, and a structured argument list. No wasted words, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists, the description does not need detailed return value explanations, but it still lists key fields. It covers the main purpose and parameter defaults. Minor omission: no guidance on errors or prerequisites, but overall sufficient for a simple get tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds meaning by explaining that budget_id defaults to last-used budget and that account_id is a UUID. It also hints at return fields, which indirectly clarifies parameter purpose. Baseline is 3 due to low coverage, and description adds marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves a single YNAB account with full details, specifying the verb 'get' and the resource 'account'. It distinguishes from sibling tools like list_accounts by focusing on a single account and listing returned fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing detailed information for one account and notes that budget_id defaults to last-used budget, but it does not explicitly state when to use this over alternatives like list_accounts or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_budget_settingsA
Get budget settings including date and currency format.
Args: budget_id: Budget ID. Defaults to last-used budget.
| Name | Required | Description | Default |
|---|---|---|---|
| budget_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies a read-only operation via the verb 'Get', but does not explicitly state behavioral traits such as no side effects, authorization needs, or rate limits. The transparency is adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence defining the purpose plus one line for the parameter. It is front-loaded and contains no filler. Every word contributes to understanding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description does not need to detail return values. It covers the core purpose and parameter. Minor gaps include lack of error conditions or prerequisites, but for a simple getter it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema coverage, the description adds value by explaining the budget_id parameter: 'Budget ID. Defaults to last-used budget.' This provides default behavior context that the schema alone does not convey. Coverage is full for the single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Get budget settings including date and currency format,' clearly identifying the verb and resource. This distinguishes it from sibling get_ tools like get_account or get_category, which operate on different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There are many sibling tools, and the description does not specify exclusions, prerequisites, or scenarios where another tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_categoryA
Get a single YNAB category with budget details.
Returns budgeted, activity, balance, and metadata.
Args: category_id: Category UUID. budget_id: Budget ID. Defaults to last-used budget.
| Name | Required | Description | Default |
|---|---|---|---|
| budget_id | No | ||
| category_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions returns (budgeted, activity, balance, metadata) and defaulting of budget_id, but does not disclose read-only nature, authentication needs, or error scenarios.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise: three short lines of description plus a two-line args section. Purpose is front-loaded, and every sentence is necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description adequately covers return values and parameter defaults. Could mention error cases but not required for minimal completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description adds meaning by listing arguments with brief definitions (category UUID, budget ID with default behavior). This compensates well for absent schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets a single YNAG category with budget details, specifying the verb and resource. It distinguishes from sibling list_categories by focusing on a single category.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this vs alternatives like list_categories or update_category. The description implies usage for a single category but lacks exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_monthA
Get a single budget month with per-category breakdown.
Returns the month summary (income, budgeted, activity, available) plus every category's budgeted/activity/balance.
Args: month: Month to retrieve (YYYY-MM-DD, first of month, e.g. "2026-03-01") or "current" for the current month. budget_id: Budget ID. Defaults to last-used budget.
| Name | Required | Description | Default |
|---|---|---|---|
| month | Yes | ||
| budget_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden and discloses the return value format. It doesn't mention error cases or rate limits, but the read-only nature is implied by the verb 'Get' and the description of returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, with a clear introductory sentence, a bullet-point-style list of return values, and a structured Args section. Every sentence is useful and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema, the description does not need to detail return values, but it does so helpfully. It covers the main behavior but could mention what happens if the month is invalid or the budget_id is wrong.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides crucial meaning for both parameters, including the month format and special 'current' value, and the budget_id default. This adds significant value beyond the input schema which has no descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets a single budget month with per-category breakdown, specifying the resource and verb. It distinguishes from siblings like list_months by emphasizing the detailed breakdown.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates this tool is for retrieving a detailed single month, and notes the default for budget_id. However, it does not explicitly contrast with list_months or mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_payeeC
Get a single YNAB payee.
Args: payee_id: Payee UUID. budget_id: Budget ID. Defaults to last-used budget.
| Name | Required | Description | Default |
|---|---|---|---|
| payee_id | Yes | ||
| budget_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It only says 'Get a single payee' and omits side effects, error conditions, or authentication requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is very short and to the point, using Args format. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of a get-by-ID tool, the description is adequate but could mention the output schema or coordinate with list_payees. Returns are covered by output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so description adds value by mentioning budget_id defaults to last-used. But both parameters are described minimally, matching schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves a single payee, differentiating from list_payees which lists all. However, it doesn't explain what a payee is in YNAB.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like list_payees or update_payee. Only mentions default budget behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_scheduled_transactionA
Get details of a single scheduled transaction.
Returns full detail including subtransactions if present.
Args: scheduled_transaction_id: Scheduled transaction UUID. budget_id: Budget ID. Defaults to last-used budget.
| Name | Required | Description | Default |
|---|---|---|---|
| budget_id | No | ||
| scheduled_transaction_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses return includes subtransactions, but missing error handling, authorization needs, or read-only guarantee. No annotations to offset.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Succinct three sentences, front-loaded with purpose, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose and params well; output schema exists so return details not needed. Lacks error scenarios but adequate for simple retrieval.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Provides clear descriptions for both parameters (UUID and budget default) beyond schema, compensating for 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Get details of a single scheduled transaction' with a specific verb and resource. Includes mention of subtransactions, distinguishing it from list siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies when to use (get details of one) vs. list, but lacks explicit when-not-to-use or alternative selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_transactionB
Get a single YNAB transaction with full details.
Args: transaction_id: Transaction UUID. budget_id: Budget ID. Defaults to last-used budget.
| Name | Required | Description | Default |
|---|---|---|---|
| budget_id | No | ||
| transaction_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must fully disclose behavioral traits. It does not mention that the operation is read-only, what happens if the transaction is not found, or any auth/rate-limit concerns. The phrase 'with full details' is vague and insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and to the point, using a docstring-style format. It omits unnecessary fluff but could be trimmed further. The information is front-loaded and each sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description does not need to explain return values. However, it lacks usage guidelines and behavioral traits. For a simple 2-parameter tool, it is mostly adequate but has notable gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 0%, the description adds meaning by explaining both parameters: transaction_id (UUID) and budget_id (defaults to last-used budget). This provides useful context beyond the schema, especially the default behavior for budget_id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get a single YNAB transaction with full details,' specifying the verb (get) and resource (transaction). It effectively distinguishes this tool from siblings like list_transactions (returns multiple) and update_transaction (mutates).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., get_account, get_category) or any prerequisites. The description lacks explicit when-to-use or when-not-to-use context, leaving the agent without comparative direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userA
Get the authenticated YNAB user.
Returns the user ID.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool is a read operation returning user ID but does not mention that it is safe, non-destructive, or any authentication requirements. For a simple read-only tool, this is adequate but lacks explicit safety hints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences with no extraneous information. Every word is necessary and front-loaded with the key action and return value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and the existence of an output schema, the description is nearly complete. It could optionally mention that the user ID is used in other API calls, but this is not essential for correct tool usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, and schema description coverage is 100%. The description does not need to add parameter information. Baseline for zero parameters is 4, and the description adds no extra semantic value beyond what is already clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the authenticated YNAB user and returns the user ID. The verb 'get' and resource 'user' are specific, and it distinguishes itself from sibling tools that operate on other entities like accounts or categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While no explicit when-to-use or when-not-to-use guidance is given, the description is self-evident: use this tool to get the authenticated user's ID. The context of sibling tools (all CRUD on different resources) implicitly differentiates it, but a mention of alternatives is not necessary here.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_accountsA
List all accounts for a YNAB budget with balances.
Args: budget_id: Budget ID to list accounts for. If not provided, uses the default budget.
| Name | Required | Description | Default |
|---|---|---|---|
| budget_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions default budget behavior ('If not provided, uses the default budget.') but fails to disclose other traits like idempotency, read-only nature, error handling, or response format beyond 'with balances'. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences and a parameter description. No wasted words, and all sentences contribute value. It is well-structured and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and an output schema, the description is moderately complete. It covers core functionality and the default behavior. However, it misses details like expected output structure (though output schema exists), error conditions, or required permissions. Adequate but has gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning to the single parameter 'budget_id' by explaining it is a 'Budget ID' and specifying default behavior. Since the input schema has no descriptions (0% coverage), the description effectively compensates, though examples or type constraints could further enhance clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'List all accounts for a YNAB budget with balances.' It specifies the verb 'list', the resource 'accounts', and the context 'for a YNAB budget', including the nuance 'with balances'. This is specific and distinct from sibling tools like 'get_account' (single account) and others.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives such as 'get_account' or other list tools. No explicit context on usage scenarios, prerequisites, or exclusions is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_budgetsA
List all budgets for the authenticated YNAB user.
Returns budget names, IDs, date ranges, and last modified dates. Use the budget ID with other tools to target a specific budget.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes output fields (names, IDs, dates) and implies read-only behavior. No annotations exist, so description carries burden; it covers the key behavioral trait of returning budget metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three efficient sentences: purpose, output summary, usage guidance. No waste, front-loaded with core action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with no parameters and an output schema. Description sufficiently explains what it returns and how to use the result, making it complete for agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters, and schema coverage is 100%. Description adds value by listing return fields, which compensates for the lack of parameter information. Baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it lists all budgets for the authenticated YNAB user. The verb 'list' and resource 'budgets' are specific, and no sibling tool overlaps in purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly notes that the budget ID from this tool should be used with other tools to target a specific budget, providing clear context for when to use it. Lacks explicit 'when not to use' but is sufficient given sibling diversity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesA
List all categories for a YNAB budget, grouped by category group.
Returns category names and IDs needed for creating transactions.
Args: budget_id: Budget ID to list categories for. If not provided, uses the default budget.
| Name | Required | Description | Default |
|---|---|---|---|
| budget_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It implies a read operation but does not explicitly state safety, error conditions, or side effects. It's adequate but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with a clear args section, front-loaded with the main action. No unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with an output schema, the description sufficiently covers purpose, return value, and parameter usage. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, but the description adds meaningful context for the single parameter budget_id, explaining its optionality and default behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all categories for a YNAB budget, grouped by category group, and returns names and IDs. It distinguishes itself from siblings like get_category and list_accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains when to use the budget_id parameter and that it defaults to the default budget, but does not explicitly mention when not to use this tool or alternative tools for similar tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_monthsA
List all budget months with summary figures.
Returns each month's income, budgeted, activity, available (to-be-budgeted), and age of money.
Args: budget_id: Budget ID. If not provided, uses the default budget.
| Name | Required | Description | Default |
|---|---|---|---|
| budget_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It explains that budget_id is optional and defaults to the user's default budget, but it does not mention any potential behaviors like pagination, rate limits, or whether the tool is read-only (though it is likely safe). The description is adequate but lacks depth.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. The first line gives the main purpose, followed by a bullet-like list of return fields, then the Args section. Every sentence adds value without redundancy. It is appropriately front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter) and the presence of an output schema (not shown but indicated), the description is sufficiently complete. It explains the return fields and parameter behavior. However, it could mention any sorting or filtering options to be completely exhaustive, but it is not necessary for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, so the description must compensate. It adds meaning by explaining that budget_id is optional and defaults to the default budget if not provided. This provides semantic guidance beyond the schema's type definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: 'List all budget months with summary figures.' It specifies the verb (list) and resource (budget months), and lists the return fields (income, budgeted, etc.). This distinguishes it from sibling tools like get_month (single month) or list_accounts.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides basic usage guidance by explaining the optional budget_id parameter and its default behavior. However, it does not explicitly state when to use this tool vs. alternatives (e.g., get_month for a specific month), nor does it mention any prerequisites or contextual scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_payeesA
List all payees for a YNAB budget.
Returns payee names and IDs.
Args: budget_id: Budget ID to list payees for. If not provided, uses the default budget.
| Name | Required | Description | Default |
|---|---|---|---|
| budget_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the default budget behavior, which is a key behavioral trait. It does not mention side effects, but as a read-only list operation, the absence is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with three short sentences. It front-loads the core purpose and adds parameter details efficiently, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and an output schema, the description is complete. It explains the return content and parameter usage, requiring no additional context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides meaningful explanation for the budget_id parameter beyond the schema, including its purpose and the default behavior when omitted. This compensates for 0% schema description coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists all payees for a YNAB budget and returns payee names and IDs. It distinguishes from sibling tools like list_accounts or get_payee by specifying its exact resource and action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the optional budget_id and default behavior, but lacks explicit guidance on when to use this tool versus alternatives like get_payee. However, the purpose is straightforward for a list-all operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scheduled_transactionsB
List all scheduled transactions for a YNAB budget.
Returns each scheduled transaction with its frequency, next date, amount, payee, and category.
Args: budget_id: Budget ID. If not provided, uses the default budget.
| Name | Required | Description | Default |
|---|---|---|---|
| budget_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description does not disclose behavioral traits such as pagination, filtering, authorization requirements, or limits. It only states returns frequency, next date, etc., but not how the list is ordered or if there are any restrictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise, front-loaded main sentence, followed by a clear bullet list of return fields. The Args section is efficient. No unnecessary text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description sufficiently lists the return fields. However, it lacks guidance on distinguishing from sibling list tools and does not mention any pagination or filtering, which would be important for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description adds meaning: 'budget_id: Budget ID. If not provided, uses the default budget.' This clarifies the default behavior beyond the schema's type and default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the verb 'list', the resource 'scheduled transactions', and the scope 'for a YNAB budget'. It differentiates from 'get_scheduled_transaction' (single) and 'list_transactions' (non-scheduled).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives like 'get_scheduled_transaction' or 'list_transactions'. Does not mention when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_transactionsA
List transactions from YNAB with optional filters.
Returns transactions since the given date. Optionally filter by one of: account, category, or payee (mutually exclusive).
Args: since_date: Start date (YYYY-MM-DD). Required. account_id: Filter by account UUID. category_id: Filter by category UUID. payee_id: Filter by payee UUID. type: Filter by "uncategorized" or "unapproved". budget_id: Budget ID. Defaults to last-used budget.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| payee_id | No | ||
| budget_id | No | ||
| account_id | No | ||
| since_date | Yes | ||
| category_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description must cover behavioral traits. It states the tool returns transactions but does not explicitly declare read-only nature, rate limits, or auth needs. Adequate but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise (8 lines), well-structured with a brief intro followed by parameter list. Every sentence adds value; no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present, return value details are not needed. Description covers key logic (date range, mutually exclusive filters) for a list tool. Slight gap: no mention of pagination or result limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description adds significant meaning: explains mutual exclusivity of filters, date format, and type values. Adds value beyond bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List transactions from YNAB with optional filters,' using a specific verb and resource. It distinguishes from siblings like get_transaction (single) and list_scheduled_transactions (different type).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description provides clear usage context: returns transactions since a given date, with optional mutually exclusive filters. It implies when to use (list filtering) vs alternatives, though explicit when-not is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_categoryA
Update category metadata or target configuration in YNAB.
Only provide the fields you want to change.
Args: category_id: Category UUID. name: New category name. note: New category note. category_group_id: New category group UUID. target_amount: Positive target amount in dollars. target_date: Target date in YYYY-MM-DD format. target_needs_whole_amount: Whether the entire target is needed. target_frequency: Target recurrence: monthly, weekly, or yearly. Cannot be combined with target_date. budget_id: Budget ID. Defaults to last-used budget. dry_run: Validate and preview without updating.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| note | No | ||
| dry_run | No | ||
| budget_id | No | ||
| category_id | Yes | ||
| target_date | No | ||
| target_amount | No | ||
| target_frequency | No | ||
| category_group_id | No | ||
| target_needs_whole_amount | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral transparency. It indicates that the operation is an update (mutation) and explains the dry_run parameter as 'Validate and preview without updating.' It also implies partial updates via 'Only provide the fields you want to change.' However, it does not mention error conditions or idempotency, which are minor gaps for a simple update tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: two introductory sentences followed by a clear parameter list. It avoids unnecessary fluff and presents information in a scannable format. Each parameter has a short, focused explanation, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the tool's purpose, usage guidance, and parameter semantics. Since an output schema exists, omitting return value details is acceptable per rubric. It also mentions defaults and constraints, making the description self-contained. No critical information about how to use the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description explains every parameter in the schema, providing meaning beyond the raw type/title. For example, it clarifies that target_amount is in dollars, target_date uses YYYY-MM-DD format, and target_frequency offers monthly, weekly, or yearly. It also notes the default for budget_id and the constraint on target_frequency. This fully compensates for the schema's lack of parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Update category metadata or target configuration in YNAB.' It specifies the action (update) and the resource (category), and distinguishes it from other category tools by mentioning both metadata and target configuration. This leaves no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a key usage instruction: 'Only provide the fields you want to change,' which clarifies the partial update behavior. It also lists the parameters with brief explanations, including the constraint that target_frequency cannot be combined with target_date. While it doesn't explicitly compare with sibling tools, the partial-update guidance is sufficient for most use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_category_budgetA
Set the budgeted (assigned) amount for a category in a specific month.
Args: category_id: Category UUID. month: Month to update (YYYY-MM-DD, first of month, e.g. "2026-03-01"). amount: Dollar amount to assign (e.g. "500.00"). budget_id: Budget ID. Defaults to last-used budget. dry_run: Validate and preview without updating.
| Name | Required | Description | Default |
|---|---|---|---|
| month | Yes | ||
| amount | Yes | ||
| dry_run | No | ||
| budget_id | No | ||
| category_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the dry_run parameter's behavior (preview without updating) but does not mention other behavioral traits such as idempotency, overwrite semantics, required permissions, or side effects. No annotations exist to compensate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise: a single sentence for purpose followed by a structured Args block that is efficient and front-loaded. Every sentence adds value, with no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema (context indicates it exists), the description covers parameter semantics and dry_run behavior adequately. However, it could mention idempotency or effects on existing budgets, though not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds detailed semantics for all 5 parameters (e.g., month format, amount as dollar, budget_id default, dry_run purpose) beyond the schema's type-only definitions. With 0% schema description coverage, this is essential and well-done.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'set' and resource 'budgeted amount for a category in a specific month', making the tool's purpose unambiguous. It distinguishes itself from sibling tools like create_transaction or update_category by specifying budget assignment to a month.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates usage by defining the operation, but it lacks explicit guidance on when to use this tool versus alternatives or when not to use it. No exclusions or context about prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_payeeA
Update a YNAB payee (rename).
Args: payee_id: Payee UUID. name: New name for the payee. budget_id: Budget ID. Defaults to last-used budget. dry_run: Validate and preview without updating.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| dry_run | No | ||
| payee_id | Yes | ||
| budget_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description must disclose behavioral traits. It only states it updates/renames, but lacks details on idempotency, side effects, permissions, error handling, or what happens if the payee doesn't exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: a one-line summary followed by a clean bullet list of arguments. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description is mostly complete. It covers the main behavior and all parameters. However, it could mention error conditions or prerequisites (e.g., payee must exist) for full completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description compensates by explaining each parameter's meaning (e.g., 'Payee UUID', 'New name for the payee', defaults for budget_id, behavior of dry_run). This adds significant value beyond the schema titles.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'update' and resource 'payee' with the specific purpose 'rename'. It distinguishes from sibling tools like get_payee, list_payees, and other update tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. There is no comparison to sibling tools like update_transaction or create_transaction, nor any mention of prerequisites or preferred contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_scheduled_transactionA
Update fields of an existing scheduled transaction.
Only provide the fields you want to change.
Args: scheduled_transaction_id: Scheduled transaction UUID. account_id: New account UUID. amount: New dollar amount. date: New first date (YYYY-MM-DD). frequency: New frequency. Only single-word values work via the YNAB API: "never", "daily", "weekly", "monthly", "yearly". Multi-word values are rejected by YNAB's backend — change those in the UI. payee_name: New payee name. category_id: New category UUID. memo: New memo. flag_color: New flag color. budget_id: Budget ID. Defaults to last-used budget. dry_run: Validate and preview without updating.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| memo | No | ||
| amount | No | ||
| dry_run | No | ||
| budget_id | No | ||
| frequency | No | ||
| account_id | No | ||
| flag_color | No | ||
| payee_name | No | ||
| category_id | No | ||
| scheduled_transaction_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses important behavioral traits: frequency single-word limitation (explains API rejection and workaround via UI), and dry_run for validation. No annotations provided, so description carries burden. Lacks details on authorization, idempotency, or side effects, but covers key points.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise and well-structured: one-line purpose, a usage guideline, then a clear argument list. No unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers essential aspects for an update tool with 11 parameters and an output schema. Explains frequency limitation and dry_run. Could include usage example or error scenarios, but overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds meaning beyond schema: each parameter is described (e.g., 'New first date (YYYY-MM-DD)', 'New dollar amount', 'Scheduled transaction UUID'). Schema coverage is 0%, so description compensates well. Could clarify flag_color possible values, but overall informative.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update fields of an existing scheduled transaction' with a specific verb and resource. It distinguishes from sibling tools like create_scheduled_transaction and delete_scheduled_transaction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Only provide the fields you want to change.' Also details frequency constraints and the dry_run parameter. Could improve by explicitly stating when not to use this tool versus alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_transactionA
Update fields of an existing YNAB transaction.
Only provide the fields you want to change.
Args: transaction_id: Transaction UUID to update. account_id: New account UUID. amount: New dollar amount ("-42.50" for outflow). date: New date (YYYY-MM-DD). payee_name: New payee name. payee_id: New payee UUID, including an account transfer payee ID. category_id: New category UUID. Omit when splitting. memo: New memo. cleared: "cleared", "uncleared", or "reconciled". approved: Whether the transaction is approved. subtransactions_json: JSON array of split legs, converting this into a split transaction. Each element: {"amount", "category_id"?, "payee_name"?, "payee_id"?, "memo"?}. Amounts are dollars with the same sign as the parent and must sum to it. Pass amount too, so the legs can be checked against the total. Replaces any existing legs. budget_id: Budget ID. Defaults to last-used budget. dry_run: Validate and preview without updating.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | ||
| memo | No | ||
| amount | No | ||
| cleared | No | ||
| dry_run | No | ||
| approved | No | ||
| payee_id | No | ||
| budget_id | No | ||
| account_id | No | ||
| payee_name | No | ||
| category_id | No | ||
| transaction_id | Yes | ||
| subtransactions_json | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so description carries the burden. Mentions dry_run for preview and that subtransactions_json 'Replaces any existing legs', but does not note permanent effects, permissions, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Structured as a compact parameter list with brief, well-organized descriptions. Slightly long due to 13 parameters, but each entry is necessary and no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of 13 parameters, it covers all parameter meanings and special behaviors like dry_run and replacing subtransactions, though it lacks details about response format or error cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 13 parameters are described, adding semantic meaning beyond the bare schema, including amount sign convention, subtransaction structure, and budget_id default. Schema itself has no descriptions, so this fully compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Update fields of an existing YNAB transaction' – a specific verb and resource, easily distinguishing it from create, list, and delete transaction tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides partial usage guidance with 'Only provide the fields you want to change' and parameter descriptions, but does not explicitly contrast with sibling tools like create_transactions or delete_transaction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
v0.3.0- Added
clear_category_target - Added
create_category - Changed
create_transaction2 fields changed- added
Input schema / properties / payee_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Payee Id" +} - added
Input schema / properties / subtransactions_jsonAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Subtransactions Json" +}
- Changed
create_transactions2 fields changed- added
Input schema / properties / transactions_json / anyOfAdded value: +[ + { + "type": "string" + }, + { + "items": {}, + "type": "array" + } +] - removed
Input schema / properties / transactions_json / typeRemoved value: -"string"
- Changed
update_category6 fields changed- added
Input schema / properties / category_group_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Category Group Id" +} - removed
Input schema / properties / hiddenRemoved value: -{ - "anyOf": [ - { - "type": "boolean" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Hidden" -} - added
Input schema / properties / target_amountAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Target Amount" +} - added
Input schema / properties / target_dateAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Target Date" +} - added
Input schema / properties / target_frequencyAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Target Frequency" +} - added
Input schema / properties / target_needs_whole_amountAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Target Needs Whole Amount" +}
- Changed
update_transaction2 fields changed- added
Input schema / properties / payee_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Payee Id" +} - added
Input schema / properties / subtransactions_jsonAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "items": {}, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Subtransactions Json" +}
25 tool updates
v0.2.0- First observed
create_scheduled_transaction - First observed
create_transaction - First observed
create_transactions - First observed
delete_scheduled_transaction - First observed
delete_transaction - First observed
get_account - First observed
get_budget_settings - First observed
get_category - First observed
get_month - First observed
get_payee - First observed
get_scheduled_transaction - First observed
get_transaction - First observed
get_user - First observed
list_accounts - First observed
list_budgets - First observed
list_categories - First observed
list_months - First observed
list_payees - First observed
list_scheduled_transactions - First observed
list_transactions - First observed
update_category - First observed
update_category_budget - First observed
update_payee - First observed
update_scheduled_transaction - First observed
update_transaction
TDQS
Scored across 27 tools
Most tools target a distinct resource and action, and singular/plural pairs like get_transaction vs list_transactions are predictable. The only real ambiguity is create_transaction vs create_transactions, but the description explicitly guides users to the plural version for batch creation.
All tool names consistently follow snake_case verb_noun patterns: list_*, get_*, create_*, update_*, delete_*. Plural nouns are used only for list operations, and verb choice is uniform across resources.
27 tools is heavy, but it reflects the wide YNAB domain: transactions, scheduled transactions, categories, payees, accounts, budgets, and months. Each tool has a clear role, though the set is large enough to add navigation overhead.
Transactions and scheduled transactions have full CRUD coverage, and categories/payees/accounts have solid read and write operations. Minor gaps like no account creation or category deletion exist, but the main YNAB budgeting workflows are covered without dead ends.
Maintenance
Related MCP Connectors
Hosted remote MCP server for YNAB on Cloudflare Workers with OAuth
Query your real net worth, spending, transactions, budgets and portfolio from any MCP client.
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Remote MCP server for full read/write access to a Zotero library
Related MCP Servers
- AlicenseAqualityAmaintenanceAn MCP server that allows users to interact with YNAB data, enabling access to account balances, transactions, and the creation of new transactions through the Model Context Protocol.86MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol server that enables AI-powered interaction with YNAB (You Need A Budget) data, allowing users to query their budgets through conversational interfaces.1635 npm141MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server for interacting with YNAB (You Need A Budget). Provides tools for accessing budget data through MCP-enabled clients like Claude Desktop.4MIT
- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol server that enables interaction with You Need A Budget (YNAB) via their API, allowing users to manage budgets, accounts, categories, and transactions through natural language.2MIT