Skip to main content
Glama
ninetails-io

gnucash-mcp

debt_payoff_plan

Read-only

Calculate an avalanche-method debt payoff schedule targeting highest-APR debts first, plus YETI to show a purchase's true cost until debt-free.

Instructions

Calculate an avalanche-method debt payoff schedule with YETI multiplier.

Auto-discovers CREDIT/LIABILITY accounts that have an 'apr' slot set. Set APRs via set_account_slot (e.g., set_account_slot("Liabilities:Visa", "apr", "23.49")).

Assumptions the schedule is computed under: interest compounds monthly at apr/12 on the running balance; one payment per debt per month starting this month; extra budget beyond the minimums goes to the highest-APR debt first (avalanche); balances are as of today in the book default currency; amounts round to 0.01. Debts the plan cannot include are CONFESSED in ⚠ lines, never silently dropped: foreign-currency debts with no FX rate, loans with no minimum_payment/loan_term_months to estimate a payment from, and balance-carrying debts with no 'apr' slot.

Returns a compact text summary by default — kill order with balances/APRs/payoff months, YETI line, totals, debt-free date. Use verbose=true for the structured dict (per-account interest_paid / credit_limit / minimum_payment, plus the structured yeti block) suitable for programmatic consumers.

YETI (Your Expense's True Impact) shows the true cost of a purchase when carrying debt: "A $1.00 purchase will cost you $1.68 by the time your debt is paid off."

Args: monthly_budget: Total monthly amount available for all debt payments combined additional_purchase: Dollar amount to calculate YETI for (default "1.00") verbose: If false (default), compact text output — optimized for reading and token efficiency. If true, structured JSON, for when you need machine-readable fields rather than a report.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
verboseNo
monthly_budgetYes
additional_purchaseNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.4.2

TDQS

A4.7/5.0
Behavior5/5

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

The description discloses all key behavioral assumptions: monthly compounding at apr/12, one payment per month, avalanche allocation, rounding to 0.01, and which debts will be excluded. It even promises that exclusions are surfaced in ⚠ lines rather than silently dropped, which goes well beyond what the readOnlyHint annotation implies.

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 longer than average, but it is organized into scannable sections and front-loads the core purpose. The verbose parameter is explained both in the prose and in the Args block, creating slight redundancy, but every sentence contributes essential information.

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

Completeness5/5

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

Given the tool's complexity, the description is complete: inputs, prerequisites, computational assumptions, excluded cases, output modes, and structured return fields are all covered. An agent has everything needed to invoke it correctly and interpret the result.

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%, so the description carries full responsibility for explaining parameters. It fulfills this with an Args block that defines monthly_budget, additional_purchase with its default, and verbose with its output-mode distinction. This is substantially more informative than the bare 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 opens with a specific verb and resource: calculate an avalanche-method debt payoff schedule, then names the YETI multiplier. It unambiguously distinguishes this tool from the many reporting and account-management siblings by stating its exact scope.

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 gives clear actionable context: it explains the prerequisite of setting APRs via set_account_slot, describes auto-discovery, and instructs when to use verbose=true. It does not name an explicit alternative tool, but no sibling provides the same function, so exclusions are less critical.

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