Skip to main content
Glama

YNAB MCP Server

Connect YNAB to any AI assistant. Manage your budget in plain English.

Download MCPB npm License: AGPL v3 Node.js


Demo


Related MCP server: YNAB MCP Server

What you can do

Workflow

Example prompt

Receipt split

"Create a split transaction for this receipt and allocate tax."

Bank reconciliation

"Reconcile my checking account using this CSV."

Spending analysis

"What did I spend on takeout this month?"

Scheduled cash flow

"What scheduled bills and income are due this month?"

Transaction creation

"Create a transaction: $42.18 at Trader Joe's yesterday."

Month overview

"Show my budget summary for January."


How it works

graph LR
    U(You) -->|Plain English| C[Claude Desktop<br/>or any MCP client]
    C -->|MCP protocol| S[YNAB MCP Server<br/>35 tools]
    S -->|YNAB API| Y[(Your Budget)]

    style S fill:#2563EB,color:#fff,stroke:#1d4ed8
    style Y fill:#16a34a,color:#fff,stroke:#15803d
    style C fill:#7c3aed,color:#fff,stroke:#6d28d9

Features

  • Receipt itemization — Paste a receipt, get an itemized split transaction with tax allocation automatically distributed across line items.

  • Bank reconciliation (beta) — Import a bank CSV, fuzzy-match against YNAB, detect missing or mismatched transactions, and apply bulk fixes.

  • 35 YNAB tools — Full coverage plus scheduled transactions and deterministic period analytics.

  • Write safety by default — Preview mode requires a short-lived, single-use confirmation bound to the exact validated request.

  • Smaller tool profiles — Choose core, read-only, or full at startup without dynamic registration.

  • Delta sync — Fetches only changed data since the last request, keeping things fast.

  • Markdown or JSON — All read tools support response_format: human-readable markdown tables (default) or structured JSON.

  • MCP-native — Structured outputs, annotations, completions API, and resource templates.


How reconciliation works

sequenceDiagram
    participant You
    participant Claude
    participant MCP as YNAB MCP Server
    participant YNAB

    You->>Claude: "Reconcile my checking<br/>with this CSV"
    Claude->>MCP: reconcile_account(csv_data)
    MCP->>YNAB: Fetch transactions
    YNAB-->>MCP: YNAB transactions
    MCP->>MCP: Parse CSV<br/>Fuzzy-match payees & dates<br/>Detect missing / mismatched
    MCP-->>Claude: Matches + recommendations
    Claude->>You: "Found 47 matches, 3 missing.<br/>Apply changes?"
    You->>Claude: "Yes"
    Claude->>MCP: Apply recommended changes
    MCP->>YNAB: Create / update transactions
    MCP-->>Claude: Done
    Claude->>You: "3 transactions created,<br/>account reconciled."

Setup (2 minutes)

1 — Get a YNAB token

  1. Open YNAB Web App

  2. Go to Account Settings &rarr; Developer Settings &rarr; New Token

  3. Copy it (shown once only)

2 — Install

  1. Download the latest .mcpb from Releases

  2. Drag it into Claude Desktop

  3. Enter your YNAB_ACCESS_TOKEN when prompted

  4. Restart Claude Desktop

Add to your Claude Desktop config:

{
  "mcpServers": {
    "ynab": {
      "command": "npx",
      "args": ["-y", "@dizzlkheinz/ynab-mcpb@latest"],
      "env": {
        "YNAB_ACCESS_TOKEN": "your-token-here"
      }
    }
  }
}
{
  "mcpServers": {
    "ynab": {
      "command": "npx",
      "args": ["-y", "@dizzlkheinz/ynab-mcpb@latest"],
      "env": {
        "YNAB_ACCESS_TOKEN": "your-token-here"
      }
    }
  }
}
[mcp_servers.ynab-mcpb]
command = "npx"
args = ["-y", "@dizzlkheinz/ynab-mcpb@latest"]
env = {"YNAB_ACCESS_TOKEN" = "your-token-here"}
startup_timeout_sec = 120
  • Command: npx

  • Args: ["-y", "@dizzlkheinz/ynab-mcpb@latest"]

  • Env: YNAB_ACCESS_TOKEN=<your token>

3 — Try these prompts

List my budgets and set the default to my main budget.
Show recent transactions in my checking account.
How much did I spend on groceries in the last 30 days?
Create a transaction: $42.18 at Trader Joe's yesterday.

Tools (35)

Category

Tools

Budgets

list_budgets get_budget get_default_budget set_default_budget

Accounts

list_accounts get_account create_account

Transactions

list_transactions get_transaction create_transaction create_transactions update_transaction update_transactions delete_transaction export_transactions compare_transactions create_receipt_split_transaction

Categories

list_categories get_category update_category

Payees

list_payees get_payee

Months

list_months get_month

Reconciliation

reconcile_account

Scheduled transactions

list_scheduled_transactions get_scheduled_transaction create_scheduled_transaction update_scheduled_transaction delete_scheduled_transaction

Analytics

analyze_spending compare_spending_periods

Utilities

get_user diagnostic_info clear_cache

All read tools accept response_format ("markdown" or "json", default: "markdown").

Full reference: docs/reference/API.md


Configuration

Variable

Default

Description

YNAB_ACCESS_TOKEN

Required. Your YNAB personal access token.

YNAB_EXPORT_PATH

~/Downloads

Directory for exported transaction files.

YNAB_MCP_ENABLE_DELTA

true

Enable delta sync (only fetch changed data).

YNAB_MCP_WRITE_MODE

preview

read-only hides YNAB mutations; preview requires exact confirmation; enabled permits direct writes.

YNAB_MCP_TOOL_PROFILE

full

core, read-only, or full startup tool surface.

YNAB_MCP_CACHE_DEFAULT_TTL_MS

300000

Cache TTL in milliseconds (5 min).

YNAB_MCP_CACHE_MAX_ENTRIES

1000

Maximum cache entries before LRU eviction.

See .env.example for all options.

Write modes and compatibility

preview is the conservative default. A mutation call first runs its existing dry_run path and returns a confirmation token. That token expires after two minutes, can be used once, and only authorizes the same canonical tool name and validated arguments. read-only does not register YNAB mutation tools. enabled preserves the pre-safety direct-write behavior for users who explicitly opt in.

Transaction amounts now prefer amount_decimal (for example, -12.34) or the explicit raw field amount_milliunits (-12340). Category funding similarly prefers budgeted_decimal or budgeted_milliunits. The old amount and budgeted fields remain accepted as deprecated milliunit aliases for backward compatibility; their meaning is never guessed.

Tool profiles

Profiles are selected once at server startup, so clients receive a stable tools/list response:

  • core keeps common reads, transaction safety workflows, reconciliation, receipt splitting, scheduled review, and spending analytics.

  • read-only exposes every tool explicitly annotated read-only.

  • full exposes the complete 35-tool surface, subject to the selected write mode.

Privacy and trust

  • The server process runs locally and communicates with YNAB over YNAB's API.

  • Your YNAB personal access token is sensitive. Store it in your MCP client's secret configuration and never paste it into a conversation, issue, fixture, or log.

  • Financial data returned by tools and included in a conversation may be processed by the AI provider selected in your MCP client. Review that provider's data controls before sharing sensitive details.

  • Transaction exports remain on local disk at YNAB_EXPORT_PATH (or the platform default). The server does not upload exported files elsewhere.

  • Use read-only for no YNAB writes, preview for exact request confirmation, or enabled only when direct writes are an intentional compatibility choice.

  • This independent open-source project is not affiliated with or endorsed by YNAB.


Troubleshooting

Symptom

Fix

npx fails

Install Node.js 24+, then restart your MCP client.

Auth errors

Regenerate your YNAB token and update YNAB_ACCESS_TOKEN.

Tools not detected

Restart the MCP client after any config change.

Reconciliation issues

Open an issue with an anonymized CSV sample.


For developers

git clone https://github.com/dizzlkheinz/ynab-mcpb.git
cd ynab-mcpb
npm install
cp .env.example .env   # add YNAB_ACCESS_TOKEN
npm run build
npm test

Architecture and contributor guidance: CLAUDE.md

Reconciliation architecture: docs/technical/reconciliation-system-architecture.md


Contributing

Bug reports and CSV edge-case repros are very welcome, especially for bank reconciliation: Open an issue

PRs welcome — run npm test and npm run lint before submitting.


License

AGPL-3.0

Available Tools

35 tools
ynab_analyze_spendingA
Read-onlyIdempotent

Deterministically calculate income, spending, and net totals for an inclusive date range, grouped by category, payee, account, week, or month. Aggregates always use the complete fetched period before grouping.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_byYes
budget_idNo
since_dateYes
until_dateYes
include_transfersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
cachedYes
groupsYes
periodYes
totalsYes
group_byYes
used_deltaYes
excluded_transfer_countYes

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 noting deterministic calculation and that aggregations use the complete fetched period. It does not contradict the readOnly, idempotent, or non-destructive hints. More detail on error handling or data limits would be beneficial.

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 first sentence clearly states the core function and options; the second adds a critical behavioral detail. Highly efficient.

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 main purpose and grouping, it omits explanations for budget_id and include_transfers, and does not mention return structure (though output schema exists). More details on required parameters and result format would improve completeness.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It explains group_by enum values and implies date range parameters, but budget_id and include_transfers are left unexplained. Partial coverage leaves gaps for a 5-parameter tool.

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 calculates income, spending, and net totals over an inclusive date range, grouped by category, payee, account, week, or month. This distinguishes it from siblings like ynab_list_transactions and ynab_compare_spending_periods.

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 via the grouping and date range options but does not explicitly state when to use this tool versus alternatives like ynab_compare_spending_periods or ynab_list_transactions. 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_clear_cacheA
Idempotent

Clear all in-memory caches. Safe operation — no YNAB data is modified.

Args: (none)

Returns: success.

Use when: you need fresh data after external YNAB changes, or to free memory.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
successYesIndicates operation success

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate idempotent and non-destructive. Description adds safety confirmation and return value. 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?

Extremely concise: two sentences plus usage line. Front-loaded with core purpose. 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?

Given zero parameters and simple operation, description covers purpose, safety, usage, and return. Completeness is sufficient.

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, baseline 4 as per guidelines. Description notes 'Args: (none)' which aligns with 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?

Description explicitly states it clears in-memory caches, emphasizing safety and no data modification. Clearly distinguishes from sibling tools that manipulate YNAB data.

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 when to use: after external YNAB changes or to free memory. Lacks explicit when-not scenarios but context is clear.

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

ynab_compare_spending_periodsA
Read-onlyIdempotent

Deterministically compare two complete spending periods and calculate total and per-group differences.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_byYes
period_aYes
period_bYes
budget_idNo
include_transfersNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
groupsYes
group_byYes
period_aYes
period_bYes
differenceYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, destructiveHint, so safety and idempotency are clear. The description adds 'deterministically' which reinforces idempotency, and 'complete spending periods' clarifies scope. No contradictions exist. Additional context like data sources or side effects is not needed given 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 sentence that conveys all essential information without redundancy. It is front-loaded with the action and outcome, making it easy to scan. Every word adds value.

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 complexity (5 parameters, nested objects, output schema exists), the description covers the core purpose and outcome. However, it omits details like the necessity of complete historical periods, handling of missing data, or default behavior for budget_id. The presence of an output schema mitigates the need for return value documentation. Overall, it is nearly complete for a comparison tool.

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

Parameters2/5

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

Schema description coverage is 0%, meaning the description does not explain any parameters. While the schema itself is well-defined with required fields and enums (group_by, period_a, period_b), the description should at least mention the grouping options or the purpose of 'include_transfers' to compensate for the lack of parameter documentation. The rubric requires compensation when coverage is low (<50%), and the description fails to provide it.

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: 'Compare two complete spending periods and calculate total and per-group differences.' It uses a specific verb ('compare') and resource ('spending periods'), and the result type is clearly defined ('differences'). This distinguishes it from sibling tools like 'ynab_analyze_spending' (general analysis) and 'ynab_compare_transactions' (transaction-level comparison).

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 implies use when needing to compare two complete spending periods across groups. It does not explicitly state when not to use it or mention alternatives, but the tool name and sibling context (e.g., ynab_compare_transactions) provide clear differentiation. The phrase 'deterministically' hints at reproducibility, which is useful.

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

ynab_compare_transactionsA
Read-onlyIdempotent

Compare bank CSV transactions with YNAB transactions to find missing or mismatched entries.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • account_id (string, required): Account UUID to compare against.

  • csv_file_path or csv_data (string, required): Bank export file path or inline CSV text.

  • statement_start_date (string, optional): Filter comparison window start date (YYYY-MM-DD).

  • statement_date (string, optional): Filter comparison window end date (YYYY-MM-DD).

Returns: comparison report with matched, unmatched_bank, unmatched_ynab transactions.

ParametersJSON Schema
NameRequiredDescriptionDefault
debugNo
csv_dataNo
budget_idNo
account_idYes
csv_formatNo
csv_file_pathNo
statement_dateNo
amount_toleranceNo
auto_detect_formatNo
date_tolerance_daysNo
statement_start_dateNo
enable_chronology_bonusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
matchesYes
summaryYes
missing_in_bankYes
missing_in_ynabYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds behavioral detail by specifying the return structure: 'comparison report with matched, unmatched_bank, unmatched_ynab transactions'. This 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.

Conciseness4/5

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

The description is concise with a single-line purpose and a clear bullet-like list of parameters. It is front-loaded and free of fluff. However, it could be more compact by integrating the parameter list into structured documentation, but overall it is efficient.

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 12 parameters, nested csv_format object, and an output schema, the description should cover key behavioral aspects like matching logic, tolerances, and format auto-detection. It only mentions the return report and a subset of parameters, leaving many details unexplained. This is insufficient for a tool of this complexity.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It explains only 5 of 12 parameters (budget_id, account_id, csv_file_path/csv_data, statement_start_date, statement_date) via the docstring, omitting debug, csv_format, amount_tolerance, auto_detect_format, date_tolerance_days, enable_chronology_bonus. This is a significant gap for a complex tool.

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 'compare' and the resources 'bank CSV transactions' with 'YNAB transactions', with the explicit goal to 'find missing or mismatched entries'. This distinguishes it from sibling tools like ynab_list_transactions or ynab_get_transaction, as it is the only comparison tool.

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 explains when to use the tool (for comparing bank CSV data against a YNAB account) and provides usage context (optional budget_id, required account_id, etc.). It does not explicitly state when not to use or name alternatives, but given the sibling list, this is the sole comparison tool, so no exclusion is needed.

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

ynab_create_accountA

Create a new account in a YNAB budget.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • name (string, required): Account name.

  • type (string, required): One of: checking, savings, creditCard, cash, lineOfCredit, otherAsset, otherLiability.

  • balance (number, optional): Opening balance in dollars. Default: 0.

  • dry_run (boolean, optional): Preview the request without creating. Default: false.

Returns: account object with id, name, type, balance fields.

Examples:

  • Create checking account: set name="My Checking", type="checking"

  • Dry run: set dry_run=true to preview without saving

Write safety: call without confirmation_token to preview. Execute the identical validated request with the short-lived confirmation_token returned by that preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
typeYes
balanceNo
dry_runNo
budget_idNo
confirmation_tokenNoShort-lived, single-use token returned by the immediately preceding preview of this exact validated request.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate mutation (readOnlyHint=false) and non-destructiveness. The description adds the preview/execute pattern with dry_run and confirmation_token, which is critical behavioral context for safe usage. It also notes default values and optionality, adding value 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?

The description is well-organized: a one-line summary, structured Args/Returns/Examples sections, and a separate safety note. Every sentence adds value with no redundancy or fluff.

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

Completeness5/5

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

Given 6 parameters, limited schema descriptions, and available output schema, the description covers all necessary aspects: purpose, parameters, return value, examples, and the preview/execute workflow. It is complete for an agent to use effectively.

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?

Schema coverage is only 17%, but the description compensates by explaining each parameter's meaning, allowed values (e.g., type enum), defaults, and optionality. It also provides examples and clarifies the role of confirmation_token in the safety note.

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 new account in a YNAB budget.' The verb 'create' and resource 'account' are specific, and it distinguishes from sibling tools like ynab_create_transaction by focusing on account creation.

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 includes examples and a preview/execute pattern, but it does not directly compare this tool to alternatives (e.g., when to create an account vs. a transaction). No explicit exclusions or 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_create_receipt_split_transactionA

Create a split transaction from itemized receipt data with proportional tax allocation.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • account_id (string, required): Account UUID.

  • payee_name (string, required): Store/payee name.

  • receipt_total (number, required): Total amount in dollars (positive).

  • receipt_tax (number, required): Tax amount in dollars (0 if none).

  • categories (array, required): Category groups with items. Each item needs name, amount.

  • date (string, optional): ISO date. Default: today.

  • memo (string, optional): Memo applied to the parent transaction.

  • receipt_subtotal (number, optional): Pre-tax subtotal for validation.

  • cleared (string, optional): "cleared", "uncleared", or "reconciled". Default: "uncleared".

  • approved (boolean, optional): Mark as approved. Default: false.

  • flag_color (string, optional): Transaction flag color ("red", "orange", "yellow", "green", "blue", "purple").

  • dry_run (boolean, optional): Preview subtransactions without saving. Default: false.

Use this helper when you have receipt line items and want tax allocated across categories automatically. For generic manual split transactions without receipt/tax logic, use "ynab_create_transaction" with "subtransactions".

Returns: transaction with subtransactions and receipt_summary.

Write safety: call without confirmation_token to preview. Execute the identical validated request with the short-lived confirmation_token returned by that preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
memoNo
clearedNo
dry_runNo
approvedNo
budget_idNo
account_idYes
categoriesYes
flag_colorNo
payee_nameYes
receipt_taxYes
receipt_totalYes
receipt_subtotalNo
confirmation_tokenNoShort-lived, single-use token returned by the immediately preceding preview of this exact validated request.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Annotations show it is not read-only, not destructive, not idempotent. The description adds the preview workflow with confirmation_token and mentions proportional tax allocation. It does not contradict annotations. The write safety preview mechanism is explained, which is valuable 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 well-structured with a purpose sentence, a parameter list, usage guidance, return info, and a safety note. It is somewhat lengthy due to the parameter list but each element serves a purpose. Could be slightly more concise but remains 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 the complexity (14 params, nested categories, tax allocation), the description explains the purpose, workflow, and preview mechanism. It mentions the return includes transaction with subtransactions and receipt_summary. However, it does not detail the tax allocation algorithm, but this is likely acceptable. Output schema exists, reducing the need for return details.

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?

Schema description coverage is only 7% (only confirmation_token has description). The description provides explicit type, requirement, and meaning for all 14 parameters (e.g., budget_id: 'Budget UUID. Omit to use the default budget.'). This fully compensates for the low schema coverage, adding significant value.

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 'Create[s] a split transaction from itemized receipt data with proportional tax allocation.' It distinguishes from the sibling tool 'ynab_create_transaction' by specifying that this is for receipt-based tax allocation, while the sibling is for generic manual splits.

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 says 'Use this helper when you have receipt line items and want tax allocated across categories automatically. For generic manual split transactions without receipt/tax logic, use "ynab_create_transaction" with "subtransactions".' This provides clear when-to-use and when-not-to-use with an alternative.

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

ynab_create_scheduled_transactionA

Create a recurring scheduled transaction. Prefer amount_decimal; amount_milliunits is available for already-converted values.

Write safety: call without confirmation_token to preview. Execute the identical validated request with the short-lived confirmation_token returned by that preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
memoNo
amountNoDeprecated legacy alias for amount_milliunits. Use amount_decimal for currency input or amount_milliunits for raw YNAB values.
dry_runNo
payee_idNo
budget_idNo
frequencyYes
account_idYes
flag_colorNo
payee_nameNo
category_idNo
amount_decimalNoPreferred: amount in decimal currency units (for example, -12.34). Rounded exactly to the nearest YNAB milliunit.
amount_milliunitsNoRaw YNAB milliunits. Use only when the value is already converted.
confirmation_tokenNoShort-lived, single-use token returned by the immediately preceding preview of this exact validated request.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations by detailing the write safety preview mechanism. Annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false, openWorldHint=true) are not contradicted. It does not specify idempotency guarantees for the execute step, but the preview-token pattern implies safe retry.

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 only two sentences, the first stating purpose and key parameter advice, the second explaining the critical preview workflow. Every sentence adds value with no wasted words.

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 tool's complexity (14 parameters, 3 required, output schema exists), the description is incomplete. It omits required parameters, frequency enum details, date format, and output behavior. The open world hint is not explained. The output schema may compensate, but the description fails to guide the agent on required vs optional fields or error handling.

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 only 29%, but the description adds crucial context for amount fields (prefer amount_decimal) and confirmation_token (short-lived, from preview). However, many parameters (date, memo, payee_id, etc.) remain undocumented in both schema and description, leaving gaps.

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: 'Create a recurring scheduled transaction.' It distinguishes itself from sibling tools like ynab_create_transaction (one-time) and ynab_create_receipt_split_transaction through the focus on recurring transactions. The purpose is 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 Guidelines4/5

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

The description provides explicit guidance on using amount_decimal over amount_milliunits and explains the two-step preview-execute workflow. It advises calling without confirmation_token to preview, then executing with the token. However, it does not contrast with one-time transaction tools or explicitly state when not to use this tool.

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

ynab_create_transactionA

Create a single transaction in YNAB.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • account_id (string, required): Account UUID.

  • amount_decimal (number, preferred): Amount in decimal currency units (for example, -50.00). Negative for expenses.

  • amount_milliunits (int, alternative): Explicit raw YNAB milliunits (for example, -50000).

  • amount (int, deprecated): Backward-compatible alias for amount_milliunits. Values are never guessed by magnitude.

  • date (string, required): ISO date YYYY-MM-DD.

  • payee_name (string, optional): Payee name (creates new payee if not found).

  • payee_id (string, optional): Existing payee UUID (alternative to payee_name).

  • category_id (string, optional): Category UUID.

  • memo (string, optional): Memo text.

  • cleared (string, optional): "cleared", "uncleared", or "reconciled". Default: "uncleared".

  • approved (boolean, optional): Mark as approved. Default: false.

  • flag_color (string, optional): Transaction flag color ("red", "orange", "yellow", "green", "blue", "purple").

  • dry_run (boolean, optional): Preview without saving. Default: false.

  • subtransactions (array, optional): Manual split lines. Each entry uses exactly one of amount_decimal, amount_milliunits, or deprecated amount, plus optional "memo", "category_id", "payee_id", and "payee_name".

Use "subtransactions" for manual split transactions. Use "ynab_create_receipt_split_transaction" when you have itemized receipt data and want proportional tax allocation handled for you. Advanced: "import_id" is supported, but it is intentionally not part of normal guidance. Usually omit it if you want the transaction to remain eligible for later bank-import matching.

Returns: created transaction with account_balance.

Examples:

  • $50 expense: set amount_decimal=-50.00

  • Already-converted data: set amount_milliunits=-50000

Write safety: call without confirmation_token to preview. Execute the identical validated request with the short-lived confirmation_token returned by that preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYes
memoNo
amountNoDeprecated legacy alias for amount_milliunits. Use amount_decimal for currency input or amount_milliunits for raw YNAB values.
clearedNo
dry_runNo
approvedNo
payee_idNo
budget_idNo
import_idNo
account_idYes
flag_colorNo
payee_nameNo
category_idNo
amount_decimalNoPreferred: amount in decimal currency units (for example, -12.34). Rounded exactly to the nearest YNAB milliunit.
subtransactionsNo
amount_milliunitsNoRaw YNAB milliunits. Use only when the value is already converted.
confirmation_tokenNoShort-lived, single-use token returned by the immediately preceding preview of this exact validated request.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations show readOnlyHint=false, destructiveHint=false, idempotentHint=false. The description adds that the tool creates a transaction, supports a preview-with-execution flow, and returns account_balance. It also explains that import_id is intentionally omitted for normal use. 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.

Conciseness4/5

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

The description is thorough but well-structured: a brief intro, a parameter list with clear formatting, usage notes, examples, and safety instructions. Every section adds value, though it could be slightly more concise by grouping related options.

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 complexity (17 parameters, multiple amount methods, splits, preview flow), the description covers the main use cases, safety, and alternatives. The output schema exists so return values are not needed. A few missing details (e.g., subtransaction max items) are minor.

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 low at 24%, but the description provides detailed explanations for each parameter including preferred amount methods, deprecation, subtransaction structure, and the confirmation_token flow. This adds significant semantics beyond the schema's minimal 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 it creates a single transaction in YNAB. It distinguishes from the sibling tool for receipt splits and specifies the scope (single transaction, not batch or splits). The verb 'Create' and resource 'transaction' are precise.

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?

Explicitly says to use subtransactions for manual splits and references ynab_create_receipt_split_transaction for receipt data. Mentions write safety (preview with confirmation_token). However, it does not mention the batch sibling ynab_create_transactions for multiple transactions, missing a clear when-not-to-use.

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

ynab_create_transactionsA

Create 1–100 transactions in a single batch with duplicate detection and dry-run support.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • transactions (array, required): Up to 100 transaction objects. Each requires account_id, date, and exactly one of amount_decimal (preferred), amount_milliunits, or deprecated amount.

  • dry_run (boolean, optional): Validate without saving. Default: false.

Returns: summary (created, duplicates, failed), results[], transactions[].

Examples:

  • Dry run first: set dry_run=true to validate before committing

  • If you explicitly want YNAB-side duplicate import detection, set import_id on each transaction

Write safety: call without confirmation_token to preview. Execute the identical validated request with the short-lived confirmation_token returned by that preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
budget_idNo
transactionsYes
confirmation_tokenNoShort-lived, single-use token returned by the immediately preceding preview of this exact validated request.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

Description details the two-step commit process, dry-run behavior, and duplicate detection, adding significant context beyond annotations. No contradiction with readOnlyHint=false, destructiveHint=false, idempotentHint=false.

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?

Well-structured with Args, Returns, Examples, and Write safety sections. Every sentence adds value; it is front-loaded with the main purpose and concise for the complexity.

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?

Given the tool's complexity, the description covers batch limits, validation, safety, and return summary. Output schema exists, so return values are documented. No gaps for agent decision-making.

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?

Despite low schema coverage (25%), the description explains all top-level parameters (budget_id, transactions, dry_run, confirmation_token) and distinguishes amount variants. It adds meaning for the confirmation_token workflow and duplicate detection, though some transaction sub-fields rely on 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 it creates 1–100 transactions in a single batch with duplicate detection and dry-run support. It distinguishes itself from siblings like ynab_create_transaction (single) and ynab_create_receipt_split_transaction by specifying batch size and features.

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?

Provides explicit when-to-use context: batch creation, dry-run validation, duplicate detection via import_id. Includes a 'Write safety' section explaining the preview-commit pattern, guiding agents on safe invocation.

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

ynab_delete_scheduled_transactionA
DestructiveIdempotent

Delete a scheduled transaction.

Write safety: call without confirmation_token to preview. Execute the identical validated request with the short-lived confirmation_token returned by that preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
budget_idNo
confirmation_tokenNoShort-lived, single-use token returned by the immediately preceding preview of this exact validated request.
scheduled_transaction_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already indicate destructive and idempotent behavior. The description adds the crucial two-phase commit pattern (preview then execute) with 'Write safety' and explains the short-lived token, providing valuable 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 filler. The first sentence states the purpose, the second explains the essential two-step process. Every word earns its place.

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?

Given the destructive, idempotent nature and the preview safety mechanism, the description covers all necessary context. The existence of an output schema further reduces the need to describe return values. The description is complete for this tool's complexity.

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 low (25%), but the description compensates by explaining the roles of dry_run and confirmation_token through the preview/execute flow. It does not describe budget_id or scheduled_transaction_id, but those are typical for a delete operation.

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 ('Delete a scheduled transaction') and the resource, directly matching the tool name. The two-step preview/execute pattern distinguishes it from sibling tools like update or create.

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 guides the user to call without confirmation_token to preview first, then execute with the returned token. This provides a clear workflow but does not explicitly mention when not to use the tool or compare with alternatives, though the purpose is distinct.

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

ynab_delete_transactionA
DestructiveIdempotent

Delete a transaction from YNAB. This action is irreversible.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • transaction_id (string, required): Transaction UUID to delete.

  • dry_run (boolean, optional): Preview without deleting. Default: false.

Returns: deleted transaction id and updated account balance.

Errors:

  • "Transaction not found" → invalid transaction_id

Write safety: call without confirmation_token to preview. Execute the identical validated request with the short-lived confirmation_token returned by that preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
budget_idNo
transaction_idYes
confirmation_tokenNoShort-lived, single-use token returned by the immediately preceding preview of this exact validated request.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Beyond annotations (destructiveHint), the description adds the irreversible nature, error handling, and the preview workflow. This adds value, though the idempotentHint is not explicitly addressed.

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 well-structured with clear sections (purpose, args, returns, errors, write safety). It is concise, front-loaded, and every sentence adds value.

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 presence of an output schema and the tool's complexity, the description covers purpose, parameters, errors, and workflow. It omits details like idempotency but is sufficient for a destructive tool with preview.

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?

The description explains budget_id, transaction_id, and dry_run, but does not list confirmation_token in the Args section, even though the schema includes it. Schema coverage is low (25%), so description partially compensates.

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 deletes a transaction from YNAB and emphasizes irreversibility. It uses specific verb+resource, and the 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 Guidelines3/5

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

The description provides guidance on the two-step preview-execute workflow using confirmation_token, but does not compare to sibling tools like ynab_delete_scheduled_transaction, leaving potential ambiguity.

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

ynab_diagnostic_infoA
Read-onlyIdempotent

Get comprehensive diagnostic information about the MCP server (health, cache, delta, security).

Args:

  • include_memory (boolean, optional): Include memory usage. Default: true.

  • include_environment (boolean, optional): Include env info. Default: true.

  • include_server (boolean, optional): Include server info. Default: true.

  • include_security (boolean, optional): Include security stats. Default: true.

  • include_cache (boolean, optional): Include cache metrics. Default: true.

  • include_delta (boolean, optional): Include delta cache info. Default: true.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: diagnostics object with requested sections.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_cacheNo
include_deltaNo
include_memoryNo
include_serverNo
response_formatNomarkdown
include_securityNo
include_environmentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
cacheNo
deltaNo
memoryNo
serverNo
timestampYes
environmentNo

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the description's addition of health, cache, etc., provides context but doesn't significantly expand on behavioral traits. 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.

Conciseness4/5

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

The description is concise, starting with a clear one-line purpose followed by a well-structured parameter list. Every sentence adds value without 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 7 optional boolean parameters, one enum, and the existence of an output schema, the description covers the essential purpose and parameter meanings. It is complete for a diagnostic tool, though no output schema details beyond 'diagnostics object'.

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 description coverage is 0%, but the description lists all parameters with their purpose, defaults, and for response_format, the enum values. This adds substantial meaning beyond the empty 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 specifies the verb 'Get' and the resource 'comprehensive diagnostic information about the MCP server', listing categories (health, cache, delta, security). This clearly distinguishes it from sibling tools like ynab_clear_cache or data retrieval tools.

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 diagnostics but provides no explicit when-to-use, when-not-to-use, or alternatives. Sibling differentiation is implicit through the tool's unique function, but no guidelines are given.

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

ynab_export_transactionsA
Read-onlyIdempotent

Export all transactions for a budget to a local JSON file.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • account_id (string, optional): Filter by account.

  • since_date (string, optional): ISO date (YYYY-MM-DD) to filter transactions on or after.

Returns: file_path, transaction_count, file_size_kb

Examples:

  • Export all transactions: call with no args

  • Export account: set account_id

Errors:

  • "No default budget set" → run ynab_set_default_budget first

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
minimalNo
filenameNo
budget_idNo
account_idNo
since_dateNo
category_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYes
filenameYes
full_pathYes
export_modeYes
total_countYes
preview_countYes
minimal_fieldsYes
export_directoryYes
filename_explanationYes
preview_transactionsYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive. Description adds value by specifying return format (file_path, transaction_count, file_size_kb) and error conditions. It does not reveal file overwrite behavior, but given idempotentHint, it's not critical.

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?

Organized with clear sections (Args, Returns, Examples, Errors), front-loaded with the core action. No superfluous text, though a slightly more succinct phrasing could be used. Earns a 4 for structure.

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?

Despite having an output schema, the description fails to cover over half of the input parameters. With 7 parameters and no schema descriptions, the description should be more thorough. Only returns and one error case are mentioned, leaving significant gaps.

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

Parameters2/5

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

Schema coverage is 0%, so description must compensate. Only 3 of 7 parameters (budget_id, account_id, since_date) are described, leaving type, minimal, filename, and category_id undocumented. This is a significant gap for an agent to invoke the tool correctly.

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 exports transactions to a local JSON file, with specific verb 'Export' and resource 'transactions for a budget'. It distinguishes from sibling tools like ynab_list_transactions or ynab_get_transaction by emphasizing file persistence.

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?

Provides examples and error handling ('No default budget set' → run ynab_set_default_budget first), but lacks explicit guidance on when to choose this tool over alternatives like ynab_list_transactions for in-memory data. Usage context is implied but not fully differentiated.

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

ynab_get_accountA
Read-onlyIdempotent

Get details for a single account including current balance.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • account_id (string, required): Account UUID.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: account (id, name, type, balance, cleared_balance, uncleared_balance, on_budget, closed), cached, cache_info

Errors:

  • "No default budget set" → run ynab_set_default_budget first

  • "Account not found" → invalid account_id

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idNo
account_idYes
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
cachedNoIndicates if data was served from cache
accountYesAccount details
usedDeltaNoIndicates if delta merge optimization was applied for budgets
cache_infoNoHuman-readable cache status message (e.g., "Cache hit", "Cache miss")

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint. Description adds return fields including cached and cache_info, and lists possible errors, providing useful 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?

Well-organized with clear sections: brief purpose, Args list, Returns, Errors. Each sentence is informative without unnecessary fluff.

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?

Given the presence of an output schema and annotations, the description covers all needed aspects: parameter details, return fields, error cases, and default behavior. No gaps for a read-only get operation.

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?

Schema description coverage is 0%, but the docstring explains all 3 parameters: budget_id (optional, default budget), account_id (required), response_format (optional, enum with default). This fully compensates for missing 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?

Description clearly states 'Get details for a single account including current balance,' which is a specific verb+resource. It distinguishes from sibling 'ynab_list_accounts' which lists all accounts.

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 clear context: optional budget_id with default budget behavior, required account_id, and error guidance for 'No default budget set' and 'Account not found'. No explicit 'when not to use' or comparison to alternative tools, but sufficient for its purpose.

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

ynab_get_budgetA
Read-onlyIdempotent

Get summary information for a specific YNAB budget.

Args:

  • budget_id (string, required): Budget UUID.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: budget (id, name, currency_format, accounts_count, categories_count, payees_count, months_count)

Examples:

  • Get budget details: set budget_id to the UUID from ynab_list_budgets

Errors:

  • "Budget not found" → invalid or inaccessible budget_id

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idYes
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
budgetYes

TDQS

A4.8/5.0
Behavior5/5

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

Annotations indicate readOnly, idempotent, non-destructive. The description adds further behavioral details: mentions the return fields explicitly and describes an error case. 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?

The description is well-structured with clear sections (Args, Returns, Examples, Errors), front-loaded with the one-line purpose. Every sentence adds value and is concise.

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?

Given the output schema exists, the description still provides complete context: input, output, error handling, and example. For a simple get tool, it covers all necessary information.

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 0% schema description coverage, the description compensates fully: it explains both parameters (budget_id as UUID, response_format with enum and default) and adds context beyond 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 'Get summary information for a specific YNAB budget', using a specific verb and resource. It distinguishes from siblings like ynab_list_budgets by focusing on a single budget. The title annotation reinforces this.

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 an example linking to ynab_list_budgets and mentions error handling. However, it does not explicitly state when not to use this tool versus alternatives, though the name and sibling context make it clear.

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

ynab_get_categoryA
Read-onlyIdempotent

Get current month details for a specific budget category.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • category_id (string, optional): Category UUID.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: category (id, name, budgeted, activity, balance, goal_type, goal_target, goal_percentage_complete), cached, cache_info

Errors:

  • "No default budget set" → run ynab_set_default_budget first

  • "Category not found" → invalid category_id

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idNo
category_idYes
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
cachedNoIndicates if data was served from cache
categoryYesCategory details
usedDeltaNoIndicates if delta merge optimization was applied for budgets
cache_infoNoHuman-readable cache status message (e.g., "Cache hit", "Cache miss")

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint. The description adds value by disclosing that results are for the 'current month', detailing the return fields (id, name, budgeted, activity, balance, goal_type, etc.), and explaining error conditions. This goes beyond what annotations convey.

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 well-structured with a clear one-line purpose, bulleted args, a returns line, and error list. It is front-loaded and concise, though the docstring style (Args:, dashes) is slightly verbose for a function description.

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 (3 params, no nested objects) and the presence of an output schema (not shown but signaled), the description covers the key aspects: current month scope, return fields, and error handling. It is largely complete, though it could mention that activity is the month-to-date activity.

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 description coverage is 0%, but the description compensates by explaining each parameter: budget_id (UUID, optional to use default), category_id (UUID), response_format (enum default 'markdown'). This adds practical meaning though it could be more precise (e.g., UUID format).

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 'Get current month details for a specific budget category' with a specific verb and resource. It distinguishes from siblings like ynab_list_categories (which lists many) and ynab_get_month (which gets a full month) by focusing on a single category's details.

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 provides basic usage hints like omitting budget_id to use default and lists errors that guide troubleshooting (e.g., requiring ynab_set_default_budget first). However, it lacks explicit guidance on when to use this tool instead of alternatives like ynab_list_categories or ynab_get_month, and does not mention prerequisites beyond the default budget.

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

ynab_get_default_budgetA
Read-onlyIdempotent

Get the currently configured default budget ID.

Args:

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: default_budget_id (null if not set), has_default.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYes
has_defaultYes
default_budget_idYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds context about returning default_budget_id (null if not set) and has_default, which aligns with annotations. 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?

Description is very concise: two sentences plus a Returns line. No unnecessary words, front-loaded with core purpose.

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?

Given the tool's simplicity (one optional parameter) and presence of an output schema, the description sufficiently explains the return value structure. No gaps.

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?

The only parameter is response_format, which is fully defined in the schema with enum and default. The description repeats this without adding extra semantics. Schema coverage is 0%, but the description does not compensate meaningfully.

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 'Get the currently configured default budget ID', which uses a specific verb 'Get' and identifies the resource 'default budget ID'. Among siblings like ynab_get_budget and ynab_list_budgets, this tool is distinct.

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, nor any prerequisites or caveats. The description simply states 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_get_monthA
Read-onlyIdempotent

Get full budget data for a specific month including all category balances.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • month (string, required): Month in YYYY-MM-DD format (use first day, e.g. "2025-01-01").

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: month (month, income, budgeted, activity, to_be_budgeted, age_of_money, categories[]), cached, cache_info

Examples:

  • Get January 2025: set month="2025-01-01"

Errors:

  • "No default budget set" → run ynab_set_default_budget first

ParametersJSON Schema
NameRequiredDescriptionDefault
monthYes
budget_idNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
monthYesMonth details
cachedNoIndicates if data was served from cache
usedDeltaNoIndicates if delta merge optimization was applied for budgets
cache_infoNoHuman-readable cache status message (e.g., "Cache hit", "Cache miss")

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds value by specifying the return structure (month, cached, cache_info) and caching behavior. It does not disclose any additional side effects, but the existing annotations cover safety well.

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 well-structured with clear sections: purpose sentence, Args, Returns, Examples, Errors. It is concise with no redundant information, front-loaded with the main purpose, and every sentence adds value.

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?

Given the complexity (3 params, output schema exists), the description covers all necessary aspects: parameter details, return fields, caching, error handling, and an example. The existence of an output schema reduces the burden, and the description still provides a summary of return fields.

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 0% schema description coverage, the description fully explains all three parameters: budget_id (optional UUID, defaults to default), month (required, YYYY-MM-DD format with first day example), and response_format (optional, enum with default). This adds significant meaning beyond the schema's types and patterns.

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 gets full budget data for a specific month including all category balances. It uses a specific verb ('Get') and resource, and distinguishes itself from siblings like ynab_list_months or ynab_get_category by focusing on the monthly summary with all categories.

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 provides usage context like optional budget_id (default budget) and month format, and error handling (no default budget). However, it lacks explicit guidance on when to use this tool over siblings (e.g., ynab_get_budget vs this), and does not specify 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_get_payeeA
Read-onlyIdempotent

Get details for a specific payee.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • payee_id (string, required): Payee UUID.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: payee (id, name, transfer_account_id, deleted), cached, cache_info

Errors:

  • "No default budget set" → run ynab_set_default_budget first

  • "Payee not found" → invalid payee_id

ParametersJSON Schema
NameRequiredDescriptionDefault
payee_idYes
budget_idNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
payeeYesPayee details
cachedNoIndicates if data was served from cache
usedDeltaNoIndicates if delta merge optimization was applied for budgets
cache_infoNoHuman-readable cache status message (e.g., "Cache hit", "Cache miss")

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent, non-destructive. Description adds caching behavior and error conditions (default budget, not found), which go 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?

Front-loaded with purpose, uses structured bullet points for args/returns/errors. 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.

Completeness5/5

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

For a simple retrieval tool, covers inputs, outputs (field list), errors, and caching. Output schema exists but description still mentions return fields.

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?

Schema has 0% description coverage, but description fully explains all parameters: budget_id (optional, default), payee_id (required), response_format (enum, default markdown). Compensates completely.

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?

States 'Get details for a specific payee'—a specific verb and resource. Clearly differentiates from sibling 'ynab_list_payees' which lists all payees.

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 clear context: use by payee_id, optional budget default, response format choice. Includes error handling guidance but no explicit when-not or comparison to alternatives.

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

ynab_get_scheduled_transactionB
Read-onlyIdempotent

Get one scheduled transaction by ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idNo
scheduled_transaction_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
scheduled_transactionYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe read operation. The description adds no additional behavioral context beyond 'Get', which is adequate but minimal.

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

Conciseness5/5

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

The description is one short sentence with no unnecessary words, perfectly concise and front-loaded with the core purpose.

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

Completeness2/5

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

Given the tool has 2 parameters, no param descriptions, and an output schema is present but not explained, the description lacks completeness. It does not specify that it returns the full scheduled transaction object or mention budget_id.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain any of the parameters (budget_id, scheduled_transaction_id). The user must infer meaning from property names alone, which is insufficient.

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', the resource 'one scheduled transaction', and the method 'by ID', distinguishing it from siblings like ynab_list_scheduled_transactions and ynab_get_transaction.

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 vs alternatives like ynab_list_scheduled_transactions or ynab_create_scheduled_transaction. It lacks explicit context for usage.

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

ynab_get_transactionA
Read-onlyIdempotent

Get full details for a single transaction by ID.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • transaction_id (string, required): Transaction UUID.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: transaction (id, date, amount, memo, cleared, approved, account_id, payee_name, category_name, subtransactions), cached, cache_info

Errors:

  • "No default budget set" → run ynab_set_default_budget first

  • "Transaction not found" → invalid transaction_id

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idNo
transaction_idYes
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
cachedNoIndicates if data was served from cache
usedDeltaNoIndicates if delta merge optimization was applied for budgets
cache_infoNoHuman-readable cache status message (e.g., "Cache hit", "Cache miss")
transactionYesTransaction details

TDQS

A4.8/5.0
Behavior5/5

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

The description adds value beyond annotations: it discloses caching behavior (returns cached, cache_info), details the response structure, and explains error conditions. Annotations provide readOnlyHint, idempotentHint, and destructiveHint, which are consistent. 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?

The description is compact and well-structured: a one-line purpose, then Args list, Returns, and Errors sections. Each sentence is necessary and informative. No extraneous text.

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?

Given the annotations and output schema (implied), the description lists all return fields, including subtransactions and caching info, which is comprehensive. It also covers error handling and optional parameter behavior, making it fully adequate for an agent to use without ambiguity.

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?

Despite 0% schema coverage, the description fully explains each parameter: budget_id can be omitted for default budget, transaction_id is required, response_format has enum options with default 'markdown'. It adds meaning beyond the schema by defining default behavior and error messages.

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 'Get full details for a single transaction by ID' immediately. The verb 'get' and resource 'single transaction' specify the action and scope, distinguishing it from siblings like ynab_list_transactions (list multiple) or ynab_update_transaction (modify). It is 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 Guidelines4/5

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

The description provides usage context by listing the required and optional parameters with explanations, and includes error conditions with corrective actions (e.g., run ynab_set_default_budget if no default budget). Although it does not explicitly say when not to use it, the purpose and sibling names imply that for listing multiple transactions or for other operations, other tools are appropriate.

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

ynab_get_userA
Read-onlyIdempotent

Get information about the authenticated YNAB user.

Args:

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: user (id)

Errors:

  • "UNAUTHORIZED" → YNAB token expired or invalid

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
userYes

TDQS

A4.2/5.0
Behavior4/5

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

Beyond annotations (readOnlyHint, idempotentHint), the description discloses error conditions (UNAUTHORIZED) and return details (user id), adding meaningful behavioral context.

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 short, well-structured with clear sections (description, args, returns, errors), and every sentence adds value.

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?

Given the simplicity of the tool (1 optional parameter, read-only), the description covers purpose, parameter, return, and errors completely, despite an available output schema not shown.

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?

The description fully explains the single parameter (response_format), including its optional nature, default value, and enum options, compensating for 0% schema description coverage.

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 retrieves information about the authenticated YNAB user, with a specific verb and resource. It uniquely identifies the tool among siblings as the only one for user info retrieval.

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 or when not to use it, lacking explicit usage context or exclusions.

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

ynab_list_accountsA
Read-onlyIdempotent

List all accounts for a budget.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • limit (int, optional): Max results per page. Default: 50.

  • offset (int, optional): Zero-based offset for pagination. Default: 0.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: accounts[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info

Examples:

  • List all accounts (default budget): call with no args

  • Page 2: set limit=20, offset=20

Errors:

  • "No default budget set" → run ynab_set_default_budget first

  • "UNAUTHORIZED" → YNAB token expired

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
budget_idNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
cachedNoIndicates if data was served from cache
offsetYesOffset used for this response
accountsYesList of accounts
has_moreYesWhether more items exist beyond this page
usedDeltaNoIndicates if delta merge optimization was applied for budgets
cache_infoNoHuman-readable cache status message (e.g., "Cache hit", "Cache miss")
next_offsetNoOffset for next page, if has_more is true
total_countYesTotal number of items available
returned_countYesNumber of items returned

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readonly, idempotent, non-destructive. The description adds behavioral details: pagination (limit, offset, has_more), caching info, and error conditions, going 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?

Well-organized with Args, Returns, Examples, Errors sections. Purpose stated first. Every sentence adds value. Concise yet comprehensive.

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?

Given sibling tools, annotations, and presence of output schema (mentioned in description), the description covers return structure, pagination, caching, and errors adequately.

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?

Schema coverage is 0%, but description compensates by documenting all 4 parameters with types, defaults, constraints, and examples (e.g., budget_id optional, limit exclusiveMin 0, offset min 0, response_format enum).

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?

Clearly states 'List all accounts for a budget.' Verb and resource are specific, and it differentiates from siblings like ynab_get_account and ynab_list_budgets.

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?

Includes error guidance (e.g., 'No default budget set' suggests ynab_set_default_budget) and examples for pagination. However, no explicit when-not-to-use compared to alternatives like ynab_get_account.

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

ynab_list_budgetsA
Read-onlyIdempotent

List all YNAB budgets for the authenticated user.

Args:

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: budgets[], cached, cache_info

Examples:

  • List all budgets: call with no args

Errors:

  • "UNAUTHORIZED" → YNAB token expired or invalid

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
cachedNoIndicates if data was served from cache
budgetsYesList of budgets
usedDeltaNoIndicates if delta merge optimization was applied for budgets
cache_infoNoHuman-readable cache status message (e.g., "Cache hit", "Cache miss")

TDQS

A4.3/5.0
Behavior4/5

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

The description adds behavioral context beyond annotations: it discloses caching behavior, return structure (budgets[], cached, cache_info), and a specific error (UNAUTHORIZED). Annotations already indicate read-only and idempotent, so the description complements these well without contradiction.

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 concise and well-structured, using clear headings for args, returns, examples, and errors. Every line adds value with 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?

Given the tool's simplicity (one optional parameter, read-only), annotations, and existence of an output schema, the description is complete: it covers purpose, parameter, return format, example usage, and error handling. No gaps are evident.

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?

With 0% schema coverage, the description compensates by explaining the single parameter response_format, including its enum values and default. This adds meaning beyond the schema, which only defines the property without description.

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 lists all YNAB budgets for the authenticated user, using a specific verb and resource. It distinguishes from siblings like ynab_get_budget by specifying 'all budgets', making its purpose unambiguous.

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 listing all budgets but does not explicitly state when to use this tool versus alternatives like ynab_get_budget for a single budget. No exclusions or alternatives are mentioned, relying on the agent to infer context.

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

ynab_list_categoriesA
Read-onlyIdempotent

List all budget categories for a budget with pagination.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • limit (int, optional): Max results per page. Default: 50.

  • offset (int, optional): Zero-based offset for pagination. Default: 0.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: categories[], category_groups[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info

Examples:

  • List categories (default budget): call with no args

  • Page 2: set limit=50, offset=50

Errors:

  • "No default budget set" → run ynab_set_default_budget first

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
budget_idNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
cachedNoIndicates if data was served from cache
offsetYesOffset used for this response
has_moreYesWhether more items exist beyond this page
usedDeltaNoIndicates if delta merge optimization was applied for budgets
cache_infoNoHuman-readable cache status message (e.g., "Cache hit", "Cache miss")
categoriesYesList of categories
next_offsetNoOffset for next page, if has_more is true
total_countYesTotal number of items available
returned_countYesNumber of items returned
category_groupsYesList of category groups

TDQS

A4.6/5.0
Behavior4/5

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

Annotations (readOnlyHint, idempotentHint) indicate safe operation. Description adds behavioral context: pagination behavior (has_more, next_offset), caching (cached, cache_info), and default budget dependency. 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?

Well-structured: one-purpose sentence followed by a clean docstring format with Args, Returns, Examples, Errors. Every sentence adds value without verbosity.

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?

Covers pagination, default budget, response format, caching, error cases, and return fields. Despite output schema existing, description adds comprehensive context with examples and error handling.

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?

Schema coverage is 0%, but the description fully documents all 4 parameters: budget_id (optional, default), limit (default 50), offset (default 0), response_format (enum, default 'markdown'). Also explains return fields beyond 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 'List all budget categories for a budget with pagination,' specifying the verb (list), resource (budget categories), and scope (pagination). It distinguishes from sibling tools like ynab_get_category (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 Guidelines4/5

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

Provides explicit guidance: omit budget_id for default budget, pagination examples (limit=50, offset=50), and error handling ('No default budget set' → run ynab_set_default_budget first). Does not explicitly say when to avoid but is clear enough.

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

ynab_list_monthsA
Read-onlyIdempotent

List summary data for all budget months with pagination.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • limit (int, optional): Max results per page. Default: 50.

  • offset (int, optional): Zero-based offset for pagination. Default: 0.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: months[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info

Examples:

  • List recent months: call with no args, months are newest-first

  • Page 2: set limit=12, offset=12

Errors:

  • "No default budget set" → run ynab_set_default_budget first

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
budget_idNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
cachedNoIndicates if data was served from cache
monthsYesList of months
offsetYesOffset used for this response
has_moreYesWhether more items exist beyond this page
usedDeltaNoIndicates if delta merge optimization was applied for budgets
cache_infoNoHuman-readable cache status message (e.g., "Cache hit", "Cache miss")
next_offsetNoOffset for next page, if has_more is true
total_countYesTotal number of items available
returned_countYesNumber of items returned

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already mark the tool as read-only and idempotent. The description adds valuable context such as pagination behavior, caching fields (cached, cache_info), and response structure 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?

Structured with clear sections (Args, Returns, Examples, Errors). Every sentence serves a purpose, no redundancy. Front-loaded with the core action.

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?

Covers pagination, error recovery, response fields, and examples. With an output schema present, the return field descriptions are sufficient. No gaps for correct tool invocation.

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?

Schema coverage is 0%, but the description fully documents each parameter with types, defaults, and examples (e.g., limit default 50, response_format enum choices). This compensates completely for the schema's lack of descriptions.

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

Purpose5/5

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

The description clearly states 'List summary data for all budget months with pagination', using a specific verb and resource. It distinguishes from sibling '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 Guidelines4/5

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

Provides examples for common use cases and error handling (e.g., 'No default budget set' → run ynab_set_default_budget). However, it does not explicitly contrast with alternatives like ynab_get_month.

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

ynab_list_payeesA
Read-onlyIdempotent

List all payees for a budget with pagination.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • limit (int, optional): Max results per page. Default: 50.

  • offset (int, optional): Zero-based offset for pagination. Default: 0.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: payees[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info

Examples:

  • List all payees: call with no args

  • Page 2: set limit=50, offset=50

Errors:

  • "No default budget set" → run ynab_set_default_budget first

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
budget_idNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription
cachedNoIndicates if data was served from cache
offsetYesOffset used for this response
payeesYesList of payees
has_moreYesWhether more items exist beyond this page
usedDeltaNoIndicates if delta merge optimization was applied for budgets
cache_infoNoHuman-readable cache status message (e.g., "Cache hit", "Cache miss")
next_offsetNoOffset for next page, if has_more is true
total_countYesTotal number of items available
returned_countYesNumber of items returned

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds valuable behavioral context: pagination parameters, return fields (including cache_info), and error handling, going 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 well-organized into Args, Returns, Examples, and Errors sections. Every sentence adds value, no redundancy. It is appropriately sized for the tool's complexity.

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?

Given the presence of an output schema, the description still provides comprehensive information: all parameters, return structure, pagination details, and error handling. Examples cover common use cases, making it complete for agent invocation.

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?

Schema coverage is 0%, so the description fully documents all 4 parameters. It explains budget_id as optional UUID, limit and offset with defaults and constraints, and response_format with enum values 'json' or 'markdown', adding meaning beyond 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 explicitly states 'List all payees for a budget with pagination,' using a specific verb and resource. It clearly distinguishes from sibling tools like ynab_get_payee (single payee) by focusing on listing all payees with 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?

The description includes examples for pagination and an error section advising to run ynab_set_default_budget if no default budget is set. It provides clear guidance on usage, though it does not explicitly contrast with alternative tools like ynab_get_payee.

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

ynab_list_scheduled_transactionsA
Read-onlyIdempotent

List scheduled transactions with delta caching and pagination. Amounts are returned in decimal currency and explicit milliunits.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
offsetNo
budget_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
cachedYes
offsetYes
has_moreYes
used_deltaYes
next_offsetYes
total_countYes
returned_countYes
scheduled_transactionsYes

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly/ idempotent/ openWorld hints; description adds behavioral info about delta caching, pagination, and currency format (decimal and milliunits) without contradicting 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 concise sentences front-loading the core action and key features; no 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 output schema exists and annotations cover safety, description covers listing, pagination, caching, and currency formatting; missing note on optional budget_id but still clear enough.

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

Parameters2/5

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

Schema coverage is 0%; description only implies pagination via 'limit' and 'offset' but doesn't explain budget_id or detail parameter semantics beyond 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?

Description specifies 'List scheduled transactions' with unique features (delta caching, pagination) and distinguishes from siblings like ynab_list_transactions and ynab_get_scheduled_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 vs alternatives; mentions pagination/caching but doesn't state when not to use or contrast with sibling tools like ynab_get_scheduled_transaction.

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

ynab_list_transactionsA
Read-onlyIdempotent

List transactions for a budget with optional filtering and pagination.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • account_id (string, optional): Filter by account.

  • category_id (string, optional): Filter by category.

  • since_date (string, optional): ISO date (YYYY-MM-DD) to filter transactions on or after.

  • type (string, optional): "uncategorized" or "unapproved".

  • cleared (string, optional): "cleared", "uncleared", or "reconciled".

  • limit (int, optional): Max results per page. Default: 50.

  • offset (int, optional): Zero-based offset for pagination. Default: 0.

  • response_format (string, optional): "json" or "markdown" (default: "markdown").

Returns: transactions[], total_count, returned_count, offset, has_more, next_offset, cached, cache_info

Examples:

  • All transactions: call with no args (uses default budget)

  • Filter by account: set account_id

  • Last 30 days: set since_date to 30 days ago

  • Page 2: set limit=50, offset=50

Errors:

  • "No default budget set" → run ynab_set_default_budget first

  • Large result → use ynab_export_transactions to save to file

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNo
limitNo
offsetNo
clearedNo
budget_idNo
account_idNo
since_dateNo
category_idNo
response_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/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 details like pagination, caching (cached, cache_info), and error conditions (e.g., no default budget). It does not contradict 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 well-structured with clear sections (Args, Returns, Examples, Errors) and front-loaded with the purpose. It is somewhat lengthy due to 9 parameters, but each sentence adds value.

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?

Given 9 parameters, no required params, output schema presence, and no nested objects, the description covers all necessary aspects: optional params, pagination, error recovery, and alternative tools for large results. It is complete.

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?

Schema description coverage is 0%, but the description's 'Args' section explains every parameter in detail beyond the schema (e.g., defaults, format, behavior). For instance, it clarifies that budget_id is optional and defaults to the user's default budget.

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 purpose: list transactions for a budget with optional filtering and pagination. It distinguishes itself from sibling list tools by focusing on transactions and specifying filtering capabilities.

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 usage context, including examples and error handling (e.g., 'No default budget set' → run ynab_set_default_budget). It mentions alternatives for large results (ynab_export_transactions) but does not explicitly contrast with other transaction tools.

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

ynab_reconcile_accountA
Idempotent

Guided account reconciliation: match bank CSV transactions to YNAB, detect discrepancies, and optionally execute bulk create/update/unclear operations.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • account_id (string, required): Account UUID to reconcile.

  • csv_file_path or csv_data (string, required): Bank export file path or inline CSV text.

  • statement_balance (number, required): Ending balance from the bank statement (dollars). For credit cards and other liability accounts, pass a negative value (e.g. -6143.27 means you owe $6,143.27).

  • statement_end_date (string, optional): Statement closing date (YYYY-MM-DD). Filters CSV and triggers balance verification. Auto-detected from CSV if omitted.

  • match_strictness (string, optional): Matching sensitivity — "loose" (more matches), "normal" (default), or "strict" (fewer false positives).

  • sign_convention (string, optional): How to treat CSV amount signs — "auto" (default, detects from data), "invert" (negate all amounts), "as_is" (use amounts unchanged). Useful when auto-detection fails for liability accounts.

  • dry_run (boolean, optional): Preview actions without executing. Default: true.

  • auto_create_transactions (boolean, optional): Auto-create missing transactions. Default: false.

  • auto_update_cleared_status (boolean, optional): Auto-mark matched transactions as cleared. Default: false.

  • auto_unclear_missing (boolean, optional): Auto-mark statement-missing cleared transactions as uncleared when reconciliation remains unbalanced. Default: false.

  • max_suggestions_in_output (number, optional): Limit unmatched items and suggestions shown in the human report. Default: 20.

Returns: human-readable reconciliation narrative + structured JSON (unmatched_bank, unmatched_ynab, suggestions, execution_summary when actions are performed).

Examples:

  • Preview reconciliation: set dry_run=true (default)

  • Execute: set dry_run=false and explicitly enable the write flags you want, e.g. auto_update_cleared_status=true

Write safety: call without confirmation_token to preview. Execute the identical validated request with the short-lived confirmation_token returned by that preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
csv_dataNo
budget_idNo
account_idYes
csv_formatNo
csv_file_pathNo
sign_conventionNoauto
match_strictnessNonormal
auto_adjust_datesNo
statement_balanceYes
confirmation_tokenNoShort-lived, single-use token returned by the immediately preceding preview of this exact validated request.
statement_end_dateNo
date_tolerance_daysNo
auto_unclear_missingNo
auto_create_transactionsNo
max_suggestions_in_outputNo
auto_update_cleared_statusNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
humanYes
structuredYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations indicate non-read-only and idempotent behavior. The description adds critical behavioral context: the write safety mechanism requiring a preview first, the default dry_run=true, and the confirmation_token pattern. This transparency goes beyond the structured 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 somewhat lengthy but well-structured: a clear opening sentence, followed by organized parameter descriptions, return value outline, examples, and safety notes. Every section adds value, though slight tightening could improve conciseness.

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?

Given the tool's complexity (17 parameters, output schema, nested objects), the description is comprehensive. It covers parameter semantics, return format (narrative + JSON), usage examples, and the unique confirmation_token workflow. The presence of an output schema reduces the need to detail return values, but the description still provides useful context.

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 only 6% schema description coverage, the description compensates thoroughly by explaining most parameters in detail. For example, it clarifies that statement_balance should be negative for liability accounts, and explains the sign_convention options. This adds substantial meaning beyond the schema definitions.

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 purpose: 'Guided account reconciliation: match bank CSV transactions to YNAB, detect discrepancies, and optionally execute bulk create/update/unclear operations.' This provides a specific verb and resource, distinguishing it from siblings like ynab_create_transaction or ynab_export_transactions.

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 offers extensive usage guidance, including the two-phase preview-execute workflow via confirmation_token, dry_run defaults, and write safety. While not explicitly contrasting with alternatives, the explanation of when to preview vs. execute is clear and actionable.

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

ynab_set_default_budgetA
Idempotent

Set a default budget so other tools don't require budget_id every call.

Args:

  • budget_id (string, required): Budget UUID to set as default. Validates against YNAB API.

Returns: success, default_budget_id, cache_warm_started.

Examples:

  • Set default: provide the UUID from ynab_list_budgets

Errors:

  • "Budget not found" → invalid budget_id

ParametersJSON Schema
NameRequiredDescriptionDefault
budget_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
messageYesHuman-readable success message
successYesIndicates operation success
default_budget_idYes
cache_warm_startedYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations provide idempotentHint, destructiveHint, readOnlyHint. The description adds value by specifying validation against the YNAB API, the return fields (success, default_budget_id, cache_warm_started), and the error case. This complements the annotations without contradiction.

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 concise, uses clear sections (Args, Returns, Examples, Errors), front-loads the main purpose, and every sentence adds value without redundancy.

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

Completeness4/5

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

The tool is simple with one parameter and clear returns. The description covers input, output, error handling, and usage example. It could mention persistence scope (e.g., session or permanent) but overall is adequate given the tool's simplicity and presence of an output schema (though not shown).

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?

The input schema only defines budget_id as a string with minLength. The description adds critical semantic info: it is a UUID (format), required, and validated against the YNAB API. It also includes an example referencing ynab_list_budgets for obtaining the UUID.

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 purpose: 'Set a default budget so other tools don't require budget_id every call.' It uses a specific verb (set) and resource (default budget) and implicitly distinguishes from siblings like ynab_get_default_budget and ynab_list_budgets.

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 explains the benefit of using this tool (reducing need to pass budget_id in other calls) but does not explicitly state when not to use it or mention alternatives. The context suggests setting a default is optional, but no exclusion criteria are given.

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

ynab_update_categoryA
Idempotent

Update the budgeted amount for a category in the current month.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • category_id (string, required): Category UUID.

  • budgeted_decimal (number, preferred): New funding amount in decimal currency units.

  • budgeted_milliunits (int, alternative): Explicit raw YNAB milliunits.

  • budgeted (int, deprecated): Backward-compatible alias for budgeted_milliunits.

  • dry_run (boolean, optional): Preview without saving. Default: false.

Returns: updated category with new budgeted, activity, balance.

Examples:

  • Budget $100: set budgeted_decimal=100.00

  • Already-converted data: set budgeted_milliunits=100000

  • Dry run: set dry_run=true

Errors:

  • "No default budget set" → run ynab_set_default_budget first

Write safety: call without confirmation_token to preview. Execute the identical validated request with the short-lived confirmation_token returned by that preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
budgetedNoDeprecated legacy alias for budgeted_milliunits. Use budgeted_decimal or budgeted_milliunits.
budget_idNo
category_idYes
budgeted_decimalNoPreferred: category funding amount in decimal currency units (for example, 100.00).
confirmation_tokenNoShort-lived, single-use token returned by the immediately preceding preview of this exact validated request.
budgeted_milliunitsNoRaw YNAB category funding amount in milliunits.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

Adds significant behavioral context beyond annotations: two-step preview-execute pattern, error messages, and return values (updated category). No contradiction 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?

Front-loaded with purpose, well-organized with args, returns, examples, errors, and safety. 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?

Covers all aspects: purpose, all parameters, usage examples, error handling, and security. Output schema exists, so return values need not be fully detailed. Annotations provide additional context.

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?

Description explains each parameter meaning, relationships (e.g., budgeted_decimal vs milliunits), deprecation, and defaults, compensating for 43% of parameters lacking 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 'Update the budgeted amount for a category in the current month,' using a specific verb and resource, and distinguishes it from sibling update tools (e.g., for transactions).

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 clear context for use, including examples, error handling, and write safety (preview then execute). However, it does not explicitly compare to alternative tools like ynab_get_category or other update tools.

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

ynab_update_scheduled_transactionA
Idempotent

Update selected fields on a scheduled transaction.

Write safety: call without confirmation_token to preview. Execute the identical validated request with the short-lived confirmation_token returned by that preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
memoNo
amountNoDeprecated legacy alias for amount_milliunits. Use amount_decimal for currency input or amount_milliunits for raw YNAB values.
dry_runNo
payee_idNo
budget_idNo
frequencyNo
account_idNo
flag_colorNo
payee_nameNo
category_idNo
amount_decimalNoPreferred: amount in decimal currency units (for example, -12.34). Rounded exactly to the nearest YNAB milliunit.
amount_milliunitsNoRaw YNAB milliunits. Use only when the value is already converted.
confirmation_tokenNoShort-lived, single-use token returned by the immediately preceding preview of this exact validated request.
scheduled_transaction_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already indicate a write operation (readOnlyHint=false) that is idempotent and non-destructive. The description adds the critical behavioral detail of the preview-commit safety mechanism, which goes 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 only two sentences long, with the first sentence stating the purpose and the second explaining the key safety pattern. Every word contributes value without any fluff.

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?

Given the tool's complexity with 15 parameters, the description provides the essential preview-commit guidance but lacks clarity on the dry_run parameter's role and does not cover common use cases or return information beyond the output schema.

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

Parameters2/5

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

Schema description coverage is only 27%, and the description does not explain individual parameters such as date, memo, dry_run, or payee_id. The only parameter mentioned is confirmation_token in context, which is insufficient to compensate for the low coverage.

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 explicitly states 'Update selected fields on a scheduled transaction,' using a specific verb and resource that clearly distinguishes it from create, delete, get, and list tools 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 Guidelines4/5

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

The description outlines a clear preview-commit pattern: call without confirmation_token to preview, then with token to execute. This provides strong guidance on when to use each variant, though it does not explicitly mention when not to use the tool or compare to alternatives.

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

ynab_update_transactionA
Idempotent

Update fields on an existing YNAB transaction.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • transaction_id (string, required): Transaction UUID to update.

  • amount_decimal (number, preferred): New amount in decimal currency units.

  • amount_milliunits (int, alternative): Explicit raw YNAB milliunits.

  • amount (int, deprecated): Backward-compatible alias for amount_milliunits.

  • date (string, optional): New date YYYY-MM-DD.

  • payee_name / payee_id (string, optional): New payee.

  • category_id (string, optional): New category UUID.

  • memo (string, optional): New memo.

  • cleared (string, optional): "cleared", "uncleared", or "reconciled".

  • approved (boolean, optional): Approval status.

  • dry_run (boolean, optional): Preview without saving.

Returns: updated transaction with updated_balance.

Write safety: call without confirmation_token to preview. Execute the identical validated request with the short-lived confirmation_token returned by that preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
memoNo
amountNoDeprecated legacy alias for amount_milliunits. Use amount_decimal for currency input or amount_milliunits for raw YNAB values.
clearedNo
dry_runNo
approvedNo
payee_idNo
budget_idNo
account_idNo
flag_colorNo
payee_nameNo
category_idNo
amount_decimalNoPreferred: amount in decimal currency units (for example, -12.34). Rounded exactly to the nearest YNAB milliunit.
transaction_idYes
amount_milliunitsNoRaw YNAB milliunits. Use only when the value is already converted.
confirmation_tokenNoShort-lived, single-use token returned by the immediately preceding preview of this exact validated request.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false), the description reveals a critical two-step workflow (preview then confirm) via confirmation_token and dry_run, and states it returns 'updated transaction with updated_balance', providing complete behavioral context.

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 well-structured with a clear opening, a parameter list (though not formalized), and separate notes on returns and write safety. It is slightly verbose but front-loaded and every sentence adds value.

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 16 parameters and the presence of an output schema, the description covers the unique workflow, parameter guidance, and return value. It is sufficiently complete for an agent to use correctly, though it omits some parameter details like flag_color.

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 only 25% schema coverage, the description compensates thoroughly, explaining each parameter's role and preferences (e.g., amount_decimal is preferred, amount is deprecated), and clarifies the confirmation_token workflow, adding essential meaning beyond 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 'Update fields on an existing YNAB transaction', providing a specific verb (update) and resource (existing transaction), which distinguishes it from sibling tools like create, delete, or update multiple transactions.

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 includes explicit write safety instructions: preview without confirmation_token then execute with the token, but does not provide when-not-to-use or contrast with alternatives.

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

ynab_update_transactionsA
Idempotent

Update 1–100 transactions in a single batch with dry-run preview.

Args:

  • budget_id (string, optional): Budget UUID. Omit to use the default budget.

  • transactions (array, required): Up to 100 objects, each requires id plus fields to update. Amount updates use one of amount_decimal (preferred), amount_milliunits, or deprecated amount.

  • dry_run (boolean, optional): Preview changes without saving. Default: false.

Returns: summary (updated, failed), results[], transactions[].

Examples:

  • Dry run: set dry_run=true to preview before/after for first 10 items

Write safety: call without confirmation_token to preview. Execute the identical validated request with the short-lived confirmation_token returned by that preview.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
budget_idNo
transactionsYes
confirmation_tokenNoShort-lived, single-use token returned by the immediately preceding preview of this exact validated request.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Annotations provide readOnlyHint=false, idempotentHint=true, destructiveHint=false. The description adds significant behavioral context: batch limit 100, dry-run preview, confirmation_token flow, amount alternatives, and returns summary. No contradiction 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 concise: a brief opening sentence, a structured args list, returns, an example, and a write safety note. 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.

Completeness5/5

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

Given the tool's complexity (batch update with preview/confirm, multiple amount types, optional budget), and presence of output schema, the description is highly complete. It covers all parameters, the preview-confirm flow, and usage example.

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 description coverage is low (25%), but the description compensates by explaining dry_run, budget_id, transactions array structure, amount options (preferred amount_decimal), and confirmation_token derivation. It adds meaning beyond the schema's bare types.

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 states 'Update 1–100 transactions in a single batch with dry-run preview,' clearly specifying the verb (update) and resource (transactions) with batch size and dry-run capability. This distinguishes it from sibling tools like ynab_create_transactions, ynab_delete_transaction, and ynab_update_transaction (singular).

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 explicit usage guidance: 'Write safety: call without confirmation_token to preview. Execute the identical validated request with the short-lived confirmation_token returned by that preview.' It also mentions optional budget_id to use default. However, it lacks explicit directions on when not to use this tool versus alternatives like ynab_update_transaction.

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

TDQS

A3.9/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose targeting specific entities or actions. Tools like ynab_create_transaction, ynab_create_receipt_split_transaction, and ynab_create_scheduled_transaction handle different transaction types with no overlap, and list/get tools are uniquely scoped to budgets, accounts, categories, etc.

Naming Consistency4/5

Tool names consistently use snake_case and follow a verb_noun pattern (e.g., ynab_list_accounts, ynab_create_transaction). Minor deviations like ynab_diagnostic_info and ynab_clear_cache break the pattern slightly, but overall the convention is predictable and clear.

Tool Count3/5

With 35 tools, the server is on the heavier side. While YNAB's domain is rich, some duplication exists (e.g., single vs. batch transaction creation/update) that could be consolidated. The count feels slightly high but not extreme, and each tool serves a valid purpose.

Completeness4/5

Transaction management is fully covered (CRUD, batch, reconciliation, receipt split, comparison, export). Budgets and accounts have list/get/create but lack update/delete, which may be intentional as these are often managed in the YNAB app. Overall, the tool surface covers the core workflows well, with only minor gaps.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    Not graded
    maintenance
    Provides access to YNAB (You Need A Budget) functionality through the Model Context Protocol, allowing users to view account balances, access transaction data, and create new transactions.
    10
  • A
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server that enables AI-powered interaction with YNAB (You Need A Budget) data, allowing users to query their budgets through conversational interfaces.
    16
    75
    141
    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
  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server that enables Claude Code to interact with You Need A Budget (YNAB) accounts, providing API access for budget management, transaction tracking, and financial insights through OAuth authentication.
    143
    15
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dizzlkheinz/ynab-mcpb'

If you have feedback or need assistance with the MCP directory API, please join our Discord server