Skip to main content
Glama
johannesbraeunig

ynab-mcp

ynab-mcp

An MCP (Model Context Protocol) server for YNAB (You Need A Budget), so an LLM client such as Claude Desktop can analyze your budget, accounts, categories, and transactions.

Status: early work in progress. All planned tool areas are implemented: read-only budget analysis, category management, transaction management, and account/budget setup. The one thing not yet done is a manual end-to-end pass through Claude Desktop against a real budget (everything else is covered by the automated test suite).

What it can do today

Tool

Description

ynab_get_user

Get the id of the authenticated user for the configured access token.

ynab_list_budgets

List all budgets accessible to the configured access token.

ynab_get_budget

Get an overview of one budget: metadata plus counts of accounts/categories/payees/transactions. Use the dedicated list tools below for the actual data.

ynab_get_budget_settings

Get the date format and currency format settings for a budget.

ynab_list_accounts

List accounts in a budget, with balances in milliunits. Supports last_knowledge_of_server for delta sync.

ynab_get_account

Get a single account by id.

ynab_list_categories

List category groups and categories, with budgeted/activity/balance figures for the current month. Supports last_knowledge_of_server for delta sync.

ynab_get_category

Get a single category by id, including goal figures.

ynab_list_months

List summary figures (income/budgeted/activity/to_be_budgeted) for every month in a budget's history. Supports last_knowledge_of_server for delta sync.

ynab_get_month

Get summary figures plus every category's budgeted/activity/balance for one budget month.

ynab_list_payees

List all payees in a budget. Supports last_knowledge_of_server for delta sync.

ynab_get_payee

Get a single payee by id.

ynab_list_scheduled_transactions

List upcoming scheduled (future-dated, recurring) transactions. Supports last_knowledge_of_server for delta sync.

ynab_list_transactions

List transactions in a budget, filterable by date range. Defaults to the last 30 days and returns at most 200 per call. Supports last_knowledge_of_server for delta sync.

ynab_get_spending_summary

Summarize spending (outflow) and income (inflow) per category over a date range, computed client-side from transactions.

ynab_create_category_group

Create a new category group.

ynab_update_category_group

Rename an existing category group.

ynab_create_category

Create a new category within an existing category group.

ynab_update_category

Update a category's name, note, and/or category group.

ynab_assign_budgeted_amount

Set the budgeted (assigned) amount for a category in a specific month — the "assign money" action.

ynab_create_transaction

Create a single transaction.

ynab_create_transactions_bulk

Create multiple transactions in one call.

ynab_update_transaction

Update a transaction's account, date, amount, payee, category, memo, cleared status, and/or approved status — also covers approving and categorizing a transaction.

ynab_delete_transaction

Destructive. Permanently delete a transaction. Requires confirm: true.

ynab_create_account

Create a new on-budget account.

ynab_create_payee

Create a new payee.

ynab_update_payee

Rename an existing payee.

There is intentionally no ynab_delete_category and no ynab_close_account/ynab_update_account: YNAB's public API has no delete endpoint for categories, no hidden field to hide one either, and no update or close endpoint for accounts at all — AccountsApi in the underlying SDK only exposes create/get/list. Once you create an account or category with this server, there's no way to close, hide, or delete it through the API (or any other API client) — you'd need to do that from the YNAB app itself.

Delta sync: the list tools marked above accept an optional last_knowledge_of_server input and always return a server_knowledge value in their result. Save that value and pass it back in on your next call to that tool to receive only the entities that changed since then, instead of re-fetching the whole collection — useful if you're polling the same budget repeatedly and want to stay well under YNAB's 200-requests/hour rate limit.

Error messages: every tool error includes a short note on whether retrying makes sense — rate-limit (429) and network errors say to back off and retry later, everything else (bad ids, auth failures, validation errors) says retrying the same call won't help and what to check instead.

Related MCP server: ynab-mcp

Setup

Prerequisites

  • Node.js >= 20

  • pnpm (this repo pins pnpm@10.33.0 via the packageManager field)

  • A YNAB Personal Access Token (YNAB web app → Account Settings → Developer Settings → New Token)

Install and build

pnpm install
pnpm build

This produces dist/index.js, an executable Node script (it also has a bin entry, so once published you'll be able to run it via npx ynab-mcp).

Configure Claude Desktop

Add the server to your Claude Desktop MCP config (claude_desktop_config.json):

{
  "mcpServers": {
    "ynab": {
      "command": "node",
      "args": ["/absolute/path/to/ynab-mcp/dist/index.js"],
      "env": {
        "YNAB_ACCESS_TOKEN": "<your personal access token>"
      }
    }
  }
}

Restart Claude Desktop and the ynab_* tools should be available.

Environment variables

Variable

Required

Description

YNAB_ACCESS_TOKEN

Yes

Your YNAB Personal Access Token. Grants full read/write access to your entire YNAB account — YNAB does not support scoped tokens, so treat this the same as a password.

YNAB_API_BASE_URL

No

Overrides the YNAB API base URL (defaults to https://api.ynab.com/v1). Must be https://. Only useful for testing.

Safety

  • Category and transaction management tools create and modify data in your live budget. Create/update tools are annotated readOnlyHint: false, destructiveHint: false (data isn't lost, just changed).

  • ynab_delete_transaction is the one destructive tool implemented so far: it's annotated destructiveHint: true, requires an explicit confirm: true field in the tool call (calls without it are rejected before any request reaches YNAB), and returns the deleted transaction's fields in the result so the call is auditable afterwards. Host-level tool-call approval (e.g. in Claude Desktop) remains the primary line of defense against a bad or malicious tool call — the confirm field is defense-in-depth, not a substitute for it.

  • YNAB personal access tokens are not scoped — there's no way to grant this server read-only or budget-limited access. It gets full read/write access to your entire YNAB account, same as the YNAB app itself.

  • Your access token is read once from the YNAB_ACCESS_TOKEN environment variable at startup and is never logged or written to disk by this server.

Development

pnpm dev         # watch mode, restarts the server on change
pnpm typecheck   # tsc --noEmit
pnpm lint        # oxlint
pnpm format      # oxfmt
pnpm test        # unit + integration tests (vitest)

The integration tests (test/integration/server.test.ts) run the real MCP server against the real ynab SDK, with MSW mocking the underlying HTTP calls to api.ynab.com — no live network access or real YNAB account needed to run pnpm test.

pnpm test:live is reserved for opt-in tests against a real YNAB account (gated behind env vars, excluded from pnpm test), but that test suite hasn't been written yet — running it today will just report "no test files found."

See CLAUDE.md for architecture notes.

License

MIT

Available Tools

27 tools
ynab_assign_budgeted_amountAssign a budgeted amount to a YNAB categoryA
Idempotent

Set the budgeted (assigned) amount for a category in a specific month — the "assign money" action. Amount is in milliunits and replaces the existing budgeted amount for that month, it does not add to it.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYesBudget month as the first day of the month, e.g. "2026-07-01", or "current"
budgetedYesThe new budgeted (assigned) amount for this category and month, in milliunits
budget_idYesYNAB budget id, or "last-used" for the most recently used budget
category_idYesYNAB category id

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already indicate a non-readonly, idempotent, non-destructive mutation. The description adds important context: the budgeted amount is replaced (not added to). This goes beyond annotations but misses details like permissions or response behavior.

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

Conciseness5/5

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

The description is two sentences, front-loading the core action and key behavioral distinction. Every sentence adds value without redundancy.

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

Completeness5/5

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

The description covers purpose, behavior, units, and replacement semantics. No output schema exists, but for a straightforward mutation tool, this is sufficient for an agent to use correctly.

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

Parameters3/5

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

Input schema covers all 4 parameters with descriptions. The description adds no new parameter details beyond what the schema provides (e.g., milliunits already described). With 100% schema coverage, baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Set' and the resource 'budgeted amount for a category in a specific month', and distinguishes it as the 'assign money' action, differentiating from sibling tools like ynab_update_category which modify category metadata.

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

Usage Guidelines4/5

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

The description explicitly notes that the amount replaces rather than adds to the existing budgeted amount, providing critical behavior. However, it does not specify when to use this tool over alternatives like ynab_update_category or ynab_get_category.

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

ynab_create_accountCreate a YNAB accountA

Create a new on-budget account. There is no API-supported way to close/delete an account afterwards — YNAB's public API has no update or close endpoint for accounts, only create and read, so this action can't be undone through this server (or any other API client).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the new account
typeYesThe type of account to create
balanceYesStarting balance for the account, in milliunits
budget_idYesYNAB budget id, or "last-used" for the most recently used budget

TDQS

A3.9/5.0
Behavior4/5

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

Beyond annotations (readOnlyHint=false, destructiveHint=false), the description adds critical context: the account cannot be deleted/closed via API, making the action permanent. This goes beyond what annotations alone provide.

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

Conciseness5/5

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

Two concise sentences, front-loaded with purpose, then a key behavioral warning. No wasted words.

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

Completeness3/5

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

The description covers irreversibility but does not mention return values or prerequisites (e.g., budget_id must exist). Given no output schema, return information would be helpful but is omitted.

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

Parameters3/5

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

Schema coverage is 100%, so baseline is 3. The description adds no additional information about parameters beyond the schema descriptions.

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

Purpose5/5

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

The description clearly states the verb 'create' and the resource 'on-budget account', distinguishing it from sibling create tools like ynab_create_category or ynab_create_transaction.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool versus alternatives. The warning about irreversibility implies careful usage but lacks comparison with other tools.

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

ynab_create_categoryCreate a YNAB categoryA

Create a new category within an existing category group.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the new category
noteNoOptional note for the category
budget_idYesYNAB budget id, or "last-used" for the most recently used budget
category_group_idYesYNAB category group id the new category belongs to

TDQS

A3.6/5.0
Behavior3/5

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

Description aligns with annotations (readOnlyHint=false, openWorldHint=true, etc.) but adds no new behavioral details beyond what annotations provide.

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

Conciseness5/5

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

Single sentence, front-loaded, no unnecessary words.

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

Completeness4/5

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

Description is sufficient for a simple create tool with thorough schema, but lacks mention of prerequisite that category group must exist.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are well-described in schema. Description adds no extra parameter information.

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

Purpose5/5

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

Description clearly states verb 'create', resource 'category', and location 'within an existing category group', distinguishing it from siblings like ynab_create_category_group or ynab_update_category.

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

Usage Guidelines2/5

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, no mention of prerequisites (e.g., category group must exist), and no when-not-to-use advice.

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

ynab_create_category_groupCreate a YNAB category groupA

Create a new category group in a budget.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the new category group
budget_idYesYNAB budget id, or "last-used" for the most recently used budget

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate a non-read-only, non-destructive write operation. The description confirms creation but adds no extra behavioral context (e.g., side effects, required permissions, or error conditions). Adequate but no added value.

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

Conciseness5/5

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

Single sentence with no superfluous words. Efficiently communicates the tool's purpose.

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

Completeness3/5

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

Minimal description is adequate for a simple creation tool with two parameters. However, missing output schema or return value information, and no mention that budget must exist. Adequate but not comprehensive.

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

Parameters3/5

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

Schema coverage is 100% with both parameters described. The description does not add any additional meaning beyond the schema. Baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the verb 'create', the resource 'category group', and the context 'in a budget'. It distinguishes from sibling tools like ynab_create_category which creates a category within a group.

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

Usage Guidelines2/5

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 like ynab_create_category. No mention of prerequisites or exclusions. The description simply describes what it does without contextual usage advice.

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

ynab_create_payeeCreate a YNAB payeeB

Create a new payee in a budget.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName for the new payee
budget_idYesYNAB budget id, or "last-used" for the most recently used budget

TDQS

B3.3/5.0
Behavior2/5

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

Annotations indicate a write operation with no idempotency or destructiveness, but the description adds no additional behavioral context (e.g., duplicate handling, permissions, side effects from openWorldHint). The simple statement 'Create' adds little beyond the annotations.

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

Conciseness5/5

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

The description is a single, concise sentence that directly states the tool's purpose with no extraneous text, earning full marks for efficiency.

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

Completeness3/5

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

For a simple 2-parameter tool with no output schema, the description is adequate but lacks usage context and behavioral specifics (e.g., idempotency, return value). It covers the minimum but leaves gaps for an agent.

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

Parameters3/5

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

Schema coverage is 100% and parameter descriptions are adequate in the schema. The tool description does not add new semantic information beyond what the schema already provides, so baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the verb 'Create', the resource 'new payee', and the scope 'in a budget', distinguishing it from sibling tools like list_payees and update_payee.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as checking for existing payees with list_payees or updating with update_payee. No context on prerequisites or typical use cases.

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

ynab_create_transactionCreate a YNAB transactionA

Create a single transaction. Amount is in milliunits: negative = outflow (spending), positive = inflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesISO 8601 date, e.g. 2026-07-01
memoNoTransaction memo
amountYesAmount in milliunits (1000 = 1.00 in the budget's currency). Positive = inflow, negative = outflow for transactions.
clearedNoDefaults to uncleared if omitted
approvedNoDefaults to false (unapproved) if omitted
payee_idNoExisting YNAB payee id
budget_idYesYNAB budget id, or "last-used" for the most recently used budget
account_idYesYNAB account id the transaction belongs to
payee_nameNoPayee name; YNAB creates a new payee if none matches. Ignored if payee_id is set.
category_idNoYNAB category id to assign

TDQS

A3.8/5.0
Behavior4/5

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

The description adds value beyond annotations by explaining the milliunits sign convention (negative=outflow, positive=inflow). Annotations already indicate non-read-only, non-idempotent, non-destructive behavior, so the description complements without contradiction. However, it could disclose more behavioral traits like duplicate handling.

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

Conciseness5/5

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

Two sentences, no redundancy. The critical detail about amount sign is front-loaded. Every sentence earns its place.

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

Completeness4/5

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

Given rich schema descriptions (100% coverage) and no output schema, the description is adequate. It covers the essential sign convention. Minor gap: no mention of the response (e.g., transaction object returned), but not required without output schema.

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

Parameters3/5

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

Schema descriptions cover 100% of parameters, including the milliunits sign convention. The tool description repeats this information but does not add new meaning. Baseline score of 3 is appropriate per guidelines.

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

Purpose5/5

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

The description clearly states 'Create a single transaction' with the verb 'Create' and resource 'a single transaction'. It distinguishes from sibling tools like 'ynab_create_transactions_bulk' (bulk) and 'ynab_update_transaction' (update). The addition about milliunits sign clarifies the tool's core behavior.

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

Usage Guidelines2/5

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 versus alternatives. It does not mention that for bulk creation, 'ynab_create_transactions_bulk' should be used, nor does it provide any prerequisites or context for use.

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

ynab_create_transactions_bulkCreate multiple YNAB transactionsA

Create multiple transactions in a single call. Amounts are in milliunits: negative = outflow (spending), positive = inflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idYesYNAB budget id, or "last-used" for the most recently used budget
transactionsYesTransactions to create

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate it's not read-only or destructive. The description adds the milliunits sign convention but does not cover idempotency, error handling, or rate limits.

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

Conciseness5/5

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

The description is brief (one sentence plus a quick clarification), front-loads the purpose, and contains no fluff.

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

Completeness4/5

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

Given the nested array of transactions and no output schema, a more descriptive summary of required fields would help, but the schema fully documents everything, making the description adequate.

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

Parameters3/5

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

Schema coverage is 100%, so the description adds no additional meaning beyond what the schema already provides for parameters. The milliunits sign is already in the schema.

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

Purpose5/5

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

The description clearly states the tool creates multiple transactions in a single call, and the name distinguishes it from the sibling ynab_create_transaction that creates a single transaction.

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

Usage Guidelines3/5

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 (e.g., ynab_create_transaction for single transactions), though the name and description imply bulk use.

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

ynab_delete_transactionDelete a YNAB transactionA
DestructiveIdempotent

Permanently delete a transaction. This cannot be undone via the API. Requires confirm: true.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmYesMust be explicitly set to true to confirm this destructive action
budget_idYesYNAB budget id, or "last-used" for the most recently used budget
transaction_idYesYNAB transaction id to delete

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false. The description adds value by explicitly stating permanence ('cannot be undone') and the confirm requirement, which are not in annotations.

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

Conciseness5/5

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

Two sentences, no unnecessary words, immediately front-loads the core action. Highly efficient.

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

Completeness4/5

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

Given the simple operation with 3 params and no output schema, the description covers the essential behavior (permanent deletion, confirm requirement). Could mention return value or error conditions, but overall adequate.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional parameter meaning beyond reinforcing the confirm requirement, which is already in the schema. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'delete' and resource 'transaction', distinguishing it from update or list operations. It's specific and unambiguous.

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

Usage Guidelines2/5

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

The description mentions the required 'confirm: true' but provides no guidance on when to use this tool versus alternatives like ynab_update_transaction. No explicit context for selection.

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

ynab_get_accountGet a YNAB accountA
Read-onlyIdempotent

Get a single account by id, with balances in milliunits.

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idYesYNAB budget id, or "last-used" for the most recently used budget
account_idYesYNAB account id

TDQS

A4/5.0
Behavior4/5

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

Annotations provide readOnlyHint, idempotentHint, and non-destructive nature. Description adds valuable behavioral detail that balances are returned in milliunits, which is not obvious from the schema or annotations.

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

Conciseness5/5

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

Single sentence, no unnecessary words. Efficiently conveys purpose and key output detail. Perfectly front-loaded.

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

Completeness4/5

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

For a simple read operation with thorough annotations, the description is adequate. It covers purpose and a key output detail. Could add error handling or rate limit info, but not required given simplicity.

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

Parameters3/5

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

Schema coverage is 100%, so description doesn't need to add much. It mentions 'by id' but doesn't elaborate on parameter meaning beyond what schema already provides. Baseline 3 is appropriate.

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

Purpose5/5

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

Description clearly states verb 'get' and resource 'single account by id', with specific output detail 'balances in milliunits'. Distinguishes from sibling tools like ynab_list_accounts which lists multiple accounts, and ynab_create_account which writes.

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

Usage Guidelines3/5

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

Implies usage when you have a specific account id, but no explicit guidance on when to use this versus list_accounts or other siblings. No alternative tools mentioned or exclusions given.

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

ynab_get_budgetGet a YNAB budgetA
Read-onlyIdempotent

Get an overview of one budget: metadata plus counts of accounts/categories/payees/transactions. For the actual account, category, or transaction data, use ynab_list_accounts / ynab_list_categories / ynab_list_transactions instead — this tool intentionally does not return the full embedded export (which can be very large for budgets with long history).

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idYesYNAB budget id, or "last-used" for the most recently used budget

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint. The description adds value by explaining why full data is omitted ('can be very large for budgets with long history'), providing behavioral context beyond annotations.

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

Conciseness5/5

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

Two sentences, no fluff. The purpose and usage guidance are front-loaded, and every sentence provides essential information.

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

Completeness5/5

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

For a simple tool with one parameter, comprehensive annotations, and no output schema needed, the description fully covers what the tool returns and why, making it complete.

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

Parameters3/5

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

Schema coverage is 100% with a clear description for budget_id. The tool description adds no additional parameter semantics, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb ('Get an overview of') and resource ('one budget: metadata plus counts...'). It distinguishes from sibling tools like ynab_list_accounts which return full data.

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

Usage Guidelines5/5

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

Explicitly advises when not to use this tool and provides specific alternative tools for full data: 'For the actual account, category, or transaction data, use ynab_list_accounts / ynab_list_categories / ynab_list_transactions instead.'

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

ynab_get_budget_settingsGet YNAB budget settingsA
Read-onlyIdempotent

Get the date format and currency format settings for a budget.

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idYesYNAB budget id, or "last-used" for the most recently used budget

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint and idempotentHint; the description adds no further behavioral context beyond confirming it's a read operation. No contradiction found.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that conveys the tool's purpose without any wasted words.

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

Completeness4/5

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

Given the low complexity (1 parameter, no output schema, clear annotations), the description is complete enough for a simple read tool, though it could optionally mention the response structure.

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

Parameters3/5

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

Schema description coverage is 100% for the single parameter (budget_id). The description does not add any additional meaning beyond what the schema provides, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'date format and currency format settings for a budget', distinguishing it from siblings like ynab_get_budget which retrieves the full budget object.

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

Usage Guidelines3/5

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

The description implies usage when needing format settings, but does not explicitly state when to use this tool over alternatives (e.g., ynab_get_budget) or provide any when-not guidance.

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

ynab_get_categoryGet a YNAB categoryA
Read-onlyIdempotent

Get a single category by id, including budgeted/activity/balance and goal figures (in milliunits) for the current month.

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idYesYNAB budget id, or "last-used" for the most recently used budget
category_idYesYNAB category id

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds value by specifying the return includes current month data in milliunits, which goes beyond annotations without contradicting them.

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

Conciseness5/5

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

The description is a single sentence that front-loads the main purpose and then adds specific details. Every word is necessary, and it is appropriately sized for the tool's simplicity.

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

Completeness4/5

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

For a simple get-by-id tool with comprehensive annotations and schema, the description covers the core functionality and return data. It could mention that only the current month is returned (no parameter for other months) and that no permissions are required, but overall it is sufficient.

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

Parameters3/5

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

Schema coverage is 100% with clear descriptions. The description adds only 'by id', which is implicit from the parameters. No new semantic information beyond what the schema provides, so baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Get'), the resource ('a single category by id'), and the data returned ('budgeted/activity/balance and goal figures in milliunits for the current month'). This distinguishes it from siblings like ynab_list_categories (list all) and ynab_update_category (update).

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

Usage Guidelines3/5

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

The description implies use when a specific category's details are needed, but it does not explicitly state when to use this tool over alternatives (e.g., ynab_list_categories for multiple, ynab_update_category for modifications). No 'when not to use' guidance is provided.

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

ynab_get_monthGet a YNAB budget monthA
Read-onlyIdempotent

Get summary figures for one budget month plus every category's budgeted/activity/balance for that month (all in milliunits).

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYesBudget month as the first day of the month, e.g. "2026-07-01", or "current"
budget_idYesYNAB budget id, or "last-used" for the most recently used budget

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds that data is in milliunits, which is useful but limited. No mention of error handling or restrictions beyond what annotations provide.

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

Conciseness5/5

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

Single sentence, front-loaded with action, no unnecessary words. Efficient and clear.

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

Completeness4/5

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

Given no output schema, the description adequately summarizes the return values (summary figures and per-category details). Parameters are well-documented. However, it could mention that all amounts are in milliunits, which it does, but lacks detail on the exact structure.

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

Parameters3/5

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

Schema covers 100% of parameters with clear descriptions (budget_id, month pattern). The description does not add additional meaning beyond what is already in the schema, so baseline score of 3 applies.

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

Purpose5/5

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

The description clearly states the verb 'Get', specifies the resource 'budget month', and details the output: 'summary figures plus every category's budgeted/activity/balance'. It distinguishes from siblings like ynab_list_months which likely only lists months.

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

Usage Guidelines2/5

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 versus siblings. The description does not mention when not to use or provide alternatives, leaving the agent to infer from the tool name and sibling list.

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

ynab_get_payeeGet a YNAB payeeB
Read-onlyIdempotent

Get a single payee by id.

ParametersJSON Schema
NameRequiredDescriptionDefault
payee_idYesYNAB payee id
budget_idYesYNAB budget id, or "last-used" for the most recently used budget

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive. The description adds no behavioral context (e.g., error handling, null returns) beyond what annotations provide.

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

Conciseness5/5

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

The description is a single, front-loaded sentence of 6 words that directly states the tool's purpose. No wasted words.

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

Completeness3/5

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

For a simple get tool, the description is adequate but does not mention return value format or behavior on missing ID. Given no output schema and rich annotations, it's marginally complete.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters. The description does not add additional meaning beyond the schema, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'a single payee by id', which distinguishes it from sibling tools like 'ynab_list_payees' (multiple). Purpose is unambiguous.

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

Usage Guidelines2/5

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., list vs. get). The description does not mention conditions or exclusions.

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

ynab_get_spending_summaryGet YNAB spending summary by categoryA
Read-onlyIdempotent

Summarize spending (outflow) and income (inflow) per category over a date range, computed client-side from transactions (YNAB has no single endpoint for this). Defaults to the last 30 days if since_date is not given. Narrow the date range for large or long-lived budgets, both to keep the response small and to avoid burning YNAB's 200-requests/hour rate limit.

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idYesYNAB budget id, or "last-used" for the most recently used budget
since_dateNoOnly include transactions on or after this date. Defaults to 30 days ago. Must not be after until_date.
until_dateNoOnly include transactions on or before this date.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already indicate readOnly and safe behavior. The description adds critical transparency by explaining that the summary is computed client-side from transactions because YNAB lacks a single endpoint. It also discloses rate limit implications and performance considerations, exceeding annotation coverage.

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

Conciseness5/5

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

Three sentences with no redundant information. The first sentence states the core function, second provides default behavior, third offers optimization advice. Front-loaded and efficient.

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

Completeness4/5

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

Given no output schema, the description covers key aspects: purpose, date range handling, client-side computation, and performance/rate limit considerations. It would benefit from briefly describing the output format, but is largely complete for a read-only summarization tool.

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

Parameters4/5

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

Schema coverage is 100%, fully describing parameters. The description adds value by stating the default for since_date and offering usage guidance for date range parameters, helping the agent choose appropriate values.

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

Purpose5/5

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

The description clearly states the tool's function: summarizing spending and income per category over a date range. The verb 'summarize' and resource 'spending per category' are specific and distinct from sibling tools like ynab_list_transactions and ynab_list_categories. The mention of client-side computation adds to clarity.

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

Usage Guidelines4/5

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

The description provides practical guidance: defaults to last 30 days, suggests narrowing date range for large budgets to keep response small and avoid rate limits. It does not explicitly list alternatives but the context makes it clear when to use this vs. other tools.

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

ynab_get_userGet YNAB userA
Read-onlyIdempotent

Get the id of the authenticated user for the configured access token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

Annotations already provide readOnly, idempotent, and non-destructive hints. The description only adds that it returns a user id, which is minimal extra information. No contradictions.

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

Conciseness5/5

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

Single sentence, no redundant words, appropriately front-loaded with the core action and result.

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

Completeness4/5

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

For a parameterless, read-only tool with comprehensive annotations, the description sufficiently explains the singular output. No output schema needed.

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

Parameters4/5

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

No parameters exist, so baseline is 4. The description is not required to add parameter info.

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

Purpose5/5

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

The description clearly states the specific action ('Get') and resource ('the id of the authenticated user'). It uniquely identifies the tool's purpose among siblings.

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

Usage Guidelines3/5

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

No explicit guidance on when to use vs alternatives, but the tool's simplicity makes context implicit. No exclusions or alternatives mentioned.

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

ynab_list_accountsList YNAB accountsA
Read-onlyIdempotent

List all accounts (checking, savings, credit card, etc.) in a budget, with balances in milliunits.

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idYesYNAB budget id, or "last-used" for the most recently used budget
last_knowledge_of_serverNoDelta sync cursor: pass the server_knowledge value from a previous call to this tool to receive only entities that changed since then, instead of the full collection. Omit for a full fetch.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds value by specifically noting that the tool returns balances in milliunits, which is not obvious from the schema or annotations.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words, conveying essential information efficiently.

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

Completeness3/5

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

While the description covers the core purpose, it lacks mention of the delta sync parameter's functionality and does not describe the response format. Given there is no output schema, some additional context would be beneficial.

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

Parameters3/5

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

Schema description coverage is 100%, so baseline is 3. The description does not add extra meaning to the parameters beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the action (List) and resource (accounts) with qualifying details (in a budget, with balances in milliunits). It distinguishes from sibling tools like ynab_get_account (singular) and ynab_create_account.

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

Usage Guidelines3/5

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

The description implies usage for fetching all accounts, but does not explicitly state when to use this tool over alternatives like ynab_get_account for a single account, nor mention the delta sync parameter's role in incremental fetching.

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

ynab_list_budgetsList YNAB budgetsA
Read-onlyIdempotent

List all budgets accessible to the configured YNAB access token.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

The annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint, so the description need not repeat these. It adds context about token-based access but does not disclose additional behavioral traits beyond what annotations provide.

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

Conciseness5/5

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

The description is a single concise sentence that immediately conveys the action and scope, with no wasted words. It is efficiently front-loaded.

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

Completeness4/5

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

Given the tool has no parameters and the annotations are rich, the description is complete enough. It specifies the output (list of budgets) and access scope. Without an output schema, additional return details could be helpful but are not critical for this simple read operation.

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

Parameters4/5

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

The tool has no parameters, and the schema coverage is trivially 100%. The description adds no parameter-level detail, which is appropriate given zero parameters. Per rubric, baseline is 4 for zero-parameter tools.

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

Purpose5/5

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

The description clearly states the verb 'list' and the resource 'budgets', specifying that it retrieves all budgets accessible to the configured token. This is specific and unambiguous, effectively communicating the tool's function.

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

Usage Guidelines2/5

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 like ynab_list_accounts or ynab_get_budget. There is no mention of context or exclusions, leaving the agent without usage recommendations.

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

ynab_list_categoriesList YNAB categoriesA
Read-onlyIdempotent

List all category groups and categories in a budget, with budgeted/activity/balance figures (in milliunits) for the current month.

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idYesYNAB budget id, or "last-used" for the most recently used budget
last_knowledge_of_serverNoDelta sync cursor: pass the server_knowledge value from a previous call to this tool to receive only entities that changed since then, instead of the full collection. Omit for a full fetch.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already indicate read-only and idempotent behavior. The description adds valuable context: figures are in milliunits and only for the current month, which is a behavioral constraint not captured by annotations.

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

Conciseness5/5

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

Single sentence, front-loaded with action and resource, no redundant words. Every word earns its place.

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

Completeness3/5

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

The description covers what the tool returns but lacks details on the return structure (e.g., nesting of groups and categories) and does not mention pagination or delta sync. With no output schema, more explicit structure would improve completeness.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already explains both parameters. The description does not add any extra meaning beyond what the schema provides, resulting in a baseline score.

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

Purpose5/5

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

The description clearly states it lists all category groups and categories in a budget with budgeted/activity/balance figures. The verb 'list' and resource 'categories' are specific, and it distinguishes from sibling list tools like ynab_list_accounts or ynab_list_budgets by naming the exact resource.

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

Usage Guidelines2/5

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 like ynab_get_category or other list tools. The description does not contrast with siblings or provide context on when listing is appropriate.

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

ynab_list_monthsList YNAB budget monthsA
Read-onlyIdempotent

List summary figures (income/budgeted/activity/to_be_budgeted, in milliunits) for every month in a budget's history.

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idYesYNAB budget id, or "last-used" for the most recently used budget
last_knowledge_of_serverNoDelta sync cursor: pass the server_knowledge value from a previous call to this tool to receive only entities that changed since then, instead of the full collection. Omit for a full fetch.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds value by detailing the specific summary figures returned and the milliunits unit, which is beyond what annotations provide.

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

Conciseness5/5

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

Single sentence with no redundant information. It front-loads the core action and includes key details (fields and units) efficiently.

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

Completeness4/5

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

Without an output schema, the description sufficiently explains return values (summary figures, milliunits) and scope (every month in budget history). Missing pagination or ordering details, but acceptable for a simple list tool.

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

Parameters3/5

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

Schema coverage is 100% with descriptions for both parameters. The description does not add parameter-specific details beyond what the schema provides, meeting the baseline expectation.

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

Purpose5/5

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

The description clearly states the verb 'list', the resource 'months', and specifies the return fields (income, budgeted, activity, to_be_budgeted) with units. It distinguishes from siblings like 'ynab_get_month' which retrieves a single month.

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

Usage Guidelines2/5

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 versus alternatives, nor exclusions. The description implies it's for listing all months, but does not compare to sibling tools or mention prerequisites.

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

ynab_list_payeesList YNAB payeesB
Read-onlyIdempotent

List all payees in a budget.

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idYesYNAB budget id, or "last-used" for the most recently used budget
last_knowledge_of_serverNoDelta sync cursor: pass the server_knowledge value from a previous call to this tool to receive only entities that changed since then, instead of the full collection. Omit for a full fetch.

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and non-destructive, but the description adds no behavioral context (e.g., pagination, delta sync details) beyond what annotations provide.

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

Conciseness4/5

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

Extremely concise single sentence, front-loaded with key action. No wasted words, but could include brief context on delta sync parameter.

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

Completeness2/5

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

No output schema, so description should clarify return format or usage of last_knowledge_of_server for delta sync, but it omits these details.

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

Parameters3/5

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

Schema coverage is 100% with clear parameter descriptions; the description does not add extra meaning, meeting baseline.

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

Purpose5/5

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

The description uses specific verb 'list' and resource 'payees' with scope 'in a budget', clearly distinguishing from sibling tools like ynab_get_payee (singular) and other list tools.

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

Usage Guidelines2/5

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 (e.g., ynab_get_payee for a single payee) or 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.

ynab_list_scheduled_transactionsList YNAB scheduled transactionsA
Read-onlyIdempotent

List all upcoming scheduled (future-dated, recurring) transactions in a budget.

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idYesYNAB budget id, or "last-used" for the most recently used budget
last_knowledge_of_serverNoDelta sync cursor: pass the server_knowledge value from a previous call to this tool to receive only entities that changed since then, instead of the full collection. Omit for a full fetch.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description carries a lower burden. It adds context about the type of transactions returned (upcoming scheduled), but does not disclose pagination, rate limits, or other behaviors beyond what annotations provide.

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

Conciseness5/5

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

The description is a single sentence with no unnecessary words. It is front-loaded with the key action and resource, making it efficient and easy to parse.

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

Completeness4/5

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

Given the tool's simplicity (list operation with two parameters, strong annotations, no output schema), the description is adequate. It clearly communicates the scope and type of data returned, though it could mention the return format or pagination for completeness.

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

Parameters3/5

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

Schema description coverage is 100%; both parameters have clear descriptions in the schema. The tool description adds no additional explanation for parameters, so it provides no value beyond the schema.

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

Purpose4/5

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

The description clearly states the verb 'List' and the resource 'scheduled transactions' with qualifiers 'upcoming', 'future-dated', 'recurring', and 'in a budget'. This sufficiently distinguishes it from sibling tools like 'ynab_list_transactions' without explicitly naming them.

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

Usage Guidelines3/5

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

The description implies usage for retrieving scheduled transactions, but provides no explicit guidance on when to use this tool versus alternatives (e.g., 'ynab_list_transactions'), nor any preconditions or context for use.

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

ynab_list_transactionsList YNAB transactionsA
Read-onlyIdempotent

List transactions in a budget. Defaults to the last 30 days if since_date is not given, and returns at most 200 transactions per call (most recent first) with has_more indicating whether more exist for the window. Note: the YNAB API has no result-count limit of its own, so this tool always fetches every transaction in the requested date range before applying the 200-result cap — narrow the date range for large or long-lived budgets rather than requesting everything at once, both to keep the response small and to avoid burning YNAB's 200-requests/hour rate limit on an oversized fetch. For repeated polling of the same budget, prefer last_knowledge_of_server over re-fetching the full date range each time.

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idYesYNAB budget id, or "last-used" for the most recently used budget
since_dateNoOnly return transactions on or after this date. Defaults to 30 days ago. Must not be after until_date.
until_dateNoOnly return transactions on or before this date.
last_knowledge_of_serverNoDelta sync cursor: pass the server_knowledge value from a previous ynab_list_transactions call to receive only transactions that changed since then (ignores since_date/until_date filtering on the delta itself, though YNAB still applies them). Omit for a full fetch.

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the annotations (read-only, idempotent, non-destructive), the description reveals critical behavioral traits: it fetches all results before applying the 200 cap, mentions the YNAB rate limit (200 requests/hour), and warns about potential heavy fetches. This adds significant value over the annotations alone.

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

Conciseness5/5

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

Five sentences, each providing essential information without repetition. The core purpose is front-loaded, followed by key behavioral details and usage guidance. No wasted words.

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

Completeness5/5

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

Despite no output schema, the description covers return behavior (has_more, recent-first), pagination, defaults, rate limits, and delta sync. It fully addresses the complexity of a listing tool with multiple parameters and rate limit concerns.

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

Parameters5/5

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

With 100% schema coverage, the schema already describes parameters. The description adds meaning beyond: it explains defaults (since_date defaults to 30 days ago), the behavior of last_knowledge_of_server (ignores date filters on delta but YNAB still applies them), and the interaction between parameters.

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

Purpose5/5

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

The description clearly states 'List transactions in a budget,' using a specific verb and resource. It distinguishes from sibling list tools (e.g., list_accounts, list_budgets) by explicitly targeting transactions and adding contextual details about defaults and pagination.

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

Usage Guidelines4/5

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

Provides explicit guidance on default date range, result cap, pagination ('has_more'), and recommends narrowing date ranges for large budgets. It also suggests using 'last_knowledge_of_server' for polling to avoid rate limits. While it doesn't explicitly exclude sibling tools, the context makes its use clear.

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

ynab_update_categoryUpdate a YNAB categoryA
Idempotent

Update a category's name, note, and/or which category group it belongs to. Only the fields provided are changed. To change the budgeted (assigned) amount for a specific month, use ynab_assign_budgeted_amount instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoNew name for the category
noteNoNew note for the category
budget_idYesYNAB budget id, or "last-used" for the most recently used budget
category_idYesYNAB category id
category_group_idNoMove the category to this category group id

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate the tool is not read-only (readOnlyHint false), is idempotent (idempotentHint true), and non-destructive (destructiveHint false). The description adds the key behavioral detail that 'Only the fields provided are changed,' which clarifies partial update behavior. No contradictions with annotations.

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

Conciseness5/5

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

The description is extremely concise with two sentences: the first states the purpose, the second clarifies behavioral semantics and directs to an alternative. Every sentence adds value with no redundancy.

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

Completeness4/5

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

Given the medium complexity (5 parameters with full schema descriptions, annotations present, and no output schema), the description sufficiently covers the tool's behavior and scope. It could briefly mention that budget_id and category_id must refer to existing resources, but the schema's required fields and descriptions handle that reasonably.

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

Parameters3/5

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

Schema coverage is 100% with all parameters described, so the description does not need to add parameter details. The description does not enhance parameter semantics beyond what the schema provides, meeting the baseline of 3.

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

Purpose5/5

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

The description clearly states the action (update) and the resource (YNAB category), listing specific fields (name, note, category group) that can be changed. It also distinguishes itself from the sibling tool ynab_assign_budgeted_amount by explicitly stating what it does not do.

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

Usage Guidelines4/5

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

The description provides clear guidance on when to use this tool (to update category name, note, or group) and when not to (to change budgeted amount, use the named sibling). It implies that only provided fields are updated, but does not explicitly exclude other potential confusions like creating a category.

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

ynab_update_category_groupUpdate a YNAB category groupB
Idempotent

Rename an existing category group.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNew name for the category group
budget_idYesYNAB budget id, or "last-used" for the most recently used budget
category_group_idYesYNAB category group id

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false, and idempotentHint=true, and the description's 'rename' is consistent. However, no additional behavioral context (e.g., effect on linked data, permissions, or response) is added beyond the annotations.

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

Conciseness4/5

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

The description is a single, concise sentence with no unnecessary words. It is front-loaded but could be slightly more informative without becoming verbose.

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

Completeness2/5

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

Given the absence of an output schema, the description should explain return values or side effects. It does not, leaving the agent unaware of the result. With 3 required parameters and a simple rename action, more context would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100%; the description adds no extra meaning to parameters. The baseline of 3 is appropriate as the schema already documents all three parameters sufficiently.

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

Purpose5/5

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

The title 'Update a YNAB category group' and description 'Rename an existing category group' clearly specify the verb 'rename' and the resource 'category group', distinguishing it from sibling tools like ynab_create_category_group (create) and ynab_update_category (update category).

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, no prerequisites, and no when-not-to-use conditions, leaving the agent without context for selection.

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

ynab_update_payeeUpdate a YNAB payeeB
Idempotent

Rename an existing payee.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesNew name for the payee
payee_idYesYNAB payee id
budget_idYesYNAB budget id, or "last-used" for the most recently used budget

TDQS

B3.1/5.0
Behavior3/5

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

Annotations indicate idempotentHint=true and destructiveHint=false, so the tool is safe and idempotent. The description adds no behavioral context beyond renaming, but does not contradict annotations. Minimal added value.

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

Conciseness4/5

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

The description is a single efficient sentence with no wasted words. Could be slightly more informative but is not overly long.

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

Completeness2/5

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

For a rename tool with three required parameters and no output schema, the description lacks details on error handling, side effects (e.g., impact on linked transactions), or behavioral constraints. It feels incomplete.

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

Parameters3/5

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

Schema coverage is 100% with each parameter having a description. The description does not add any extra meaning beyond the schema, so baseline score of 3 is appropriate.

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

Purpose4/5

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

The description 'Rename an existing payee' clearly states the verb (rename) and resource (payee). It is specific, but does not differentiate from sibling tools like ynab_create_payee, though the tool name already provides distinction.

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

Usage Guidelines2/5

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, no prerequisites, and no mention of when not to use it. The description simply states the action without context.

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

ynab_update_transactionUpdate a YNAB transactionB
Idempotent

Update a transaction's account, date, amount, payee, category, memo, cleared status, and/or approved status. Only the fields provided are changed — this single tool covers approving a transaction, categorizing it, editing its amount, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoISO 8601 date, e.g. 2026-07-01
memoNo
amountNoAmount in milliunits (1000 = 1.00 in the budget's currency). Positive = inflow, negative = outflow for transactions.
clearedNoThe cleared status of the transaction
approvedNo
payee_idNoExisting YNAB payee id
budget_idYesYNAB budget id, or "last-used" for the most recently used budget
account_idNoMove the transaction to this account
payee_nameNoPayee name; YNAB creates a new payee if none matches. Ignored if payee_id is set.
category_idNoYNAB category id to assign
transaction_idYesYNAB transaction id

TDQS

B3.4/5.0
Behavior4/5

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

Consistent with annotations (readOnlyHint=false, destructiveHint=false). States only provided fields are changed, implying idempotency (matches idempotentHint). No contradictions. Could mention more side effects like payee creation.

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

Conciseness4/5

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

Two sentences, front-loaded with purpose. Efficient use of words.

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

Completeness3/5

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

No output schema mentioned, and no return value description. However, for a mutation tool with rich schema and no output schema, it's minimally adequate.

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

Parameters3/5

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

Schema coverage is 82% (high), so baseline 3. Description adds summary of field categories but doesn't elaborate on parameter semantics beyond what the schema provides. Adequate.

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

Purpose4/5

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

Clear verb 'Update' with specific resources listed (account, date, amount, etc.). States it's a partial update tool, but could more explicitly differentiate from full-replace updates.

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

Usage Guidelines2/5

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

No guidance on when to use sibling tools like ynab_update_payee or ynab_create_transaction. Only says it covers multiple actions (approve, categorize, edit), but not when alternatives are appropriate.

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.

  1. 27 tool updatesv0.1.0
    • First observedynab_assign_budgeted_amount
    • First observedynab_create_account
    • First observedynab_create_category
    • First observedynab_create_category_group
    • First observedynab_create_payee
    • First observedynab_create_transaction
    • First observedynab_create_transactions_bulk
    • First observedynab_delete_transaction
    • First observedynab_get_account
    • First observedynab_get_budget
    • First observedynab_get_budget_settings
    • First observedynab_get_category
    • First observedynab_get_month
    • First observedynab_get_payee
    • First observedynab_get_spending_summary
    • First observedynab_get_user
    • First observedynab_list_accounts
    • First observedynab_list_budgets
    • First observedynab_list_categories
    • First observedynab_list_months
    • First observedynab_list_payees
    • First observedynab_list_scheduled_transactions
    • First observedynab_list_transactions
    • First observedynab_update_category
    • First observedynab_update_category_group
    • First observedynab_update_payee
    • First observedynab_update_transaction

TDQS

A3.7/5.0

Scored across 27 tools

Disambiguation5/5

Each tool targets a distinct resource or action (e.g., create vs list, single vs bulk, budget vs month). Descriptions clearly differentiate overlapping pairs like get/list and single/bulk transactions.

Naming Consistency5/5

All tools follow the verb_noun pattern consistently with snake_case and the ynab_ prefix. The few exceptions like ynab_assign_budgeted_amount still adhere to the same pattern.

Tool Count4/5

27 tools cover many YNAB entities and operations, but the count is slightly high. Some operations could be combined (e.g., single/bulk create transaction) without loss of clarity.

Completeness3/5

Core CRUD operations are present for transactions, categories, payees, and accounts (though account update/delete are missing). Gaps exist for scheduled transaction management and goal-related actions, limiting full lifecycle coverage.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    An 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.
    8
    6
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A 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.
    4
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that provides Large Language Models with access to YNAB (You Need A Budget) budgets, allowing them to fetch budget data including accounts, categories, and category groups.
    6
    -
  • A
    license
    A
    quality
    D
    maintenance
    A minimal and auditable MCP server that enables local AI assistants to read and manage YNAB budget data. It supports operations like listing accounts, tracking transactions, and moving money between categories while maintaining user privacy.
    9
    MIT