Skip to main content
Glama

Senaro Personal Finance

Loan Payoff Calculator

calculate_loan_payoff
Read-onlyIdempotent

Calculation, not advice. Verify with a professional before acting. Standard amortizing loan calculator. Returns monthly payment, total interest, a payoff date (null when the loan does not clear within its term), and a bucketed Analysis suitable for chart rendering. The Analysis includes KPIs, annotations (e.g. crossover month), and summary strings. When extra_monthly_payment is supplied, every computed figure in the response outside with_extra describes this loan without the extra payment, including monthly_payment, payoff_months, total_paid, total_interest, remaining_balance_at_term, payoff_date, months_to_halfway_principal, months_to_interest_flip, and every value under analysis; a warnings[] entry names this. The response includes chart_hints with rendering directives any client can use. The senaro-charts MCP server renders them locally over stdio only. On the local stdio transport, use output: 'capture' when passing the result to a chart tool to avoid filling the LLM context with bucket data; the hosted HTTP transport rejects 'capture' with a structured error, so use 'summary' (default; the full payload is already returned inline) there instead. This tool does not support output: 'inline' on any transport.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toolArgumentsYesJSON object with these parameters: principal: decimal > 0 (REQUIRED) annual_rate_pct: decimal 0-100 as percentage, e.g. 6.5 not 0.065 (REQUIRED) term_months: int > 0 (REQUIRED) loan_type: 'personal' | 'auto' | 'student' | 'mortgage' (optional, default 'personal') extra_monthly_payment: decimal >= 0 (optional, default 0) chart_bucket: 'auto' | 'monthly' | 'quarterly' | 'yearly' | 'biennial' (optional, default 'auto') Controls the time-axis granularity of analysis.buckets[]. 'auto' selects based on term length: term <= 24 months -> monthly; <= 60 -> quarterly; <= 360 -> yearly; > 360 -> biennial. output: 'summary' | 'capture' (optional, default 'summary'). 'inline' is not a valid value for this tool on any transport. 'summary': full payload including analysis.buckets[] returned inline. 'capture': full payload written to ~/.senaro/captures/; capture_ref URI returned; analysis field stripped from wire response. Use when passing to a chart tool. Available on the local stdio transport only; the hosted HTTP transport rejects 'capture' with a structured error naming 'summary' as the only valid alternative. chart_title: string (optional) override for the chart title. Must not contain em-dashes or en-dashes. Max 120 characters.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: it explains that a payoff_date is null when the loan never clears, that with extra_monthly_payment every top-level figure and all analysis values describe the loan WITHOUT the extra payment (with a warnings[] entry noting it), that chart_hints are emitted, and that 'capture' writes to ~/.senaro/captures/ while the hosted transport rejects it. This is unusually rich disclosure for a read-only calculator.

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?

Dense but mostly front-loaded, leading with scope, then return shape, then parameter behavior, then transport rules. It loses a point for redundancy: the 'capture'/'inline' restrictions are restated three times across the description and input schema.

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?

With no output schema available, the description carries the full burden of describing the return payload (KPI/annotation/bucket structure, chart_hints, warnings) and the transport constraints, and it does so completely. An agent has everything needed to call and interpret the result.

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 already 100%, so the baseline is 3, but the description adds real semantic value the schema does not: the non-obvious behavior of extra_monthly_payment (all figures outside with_extra ignore it) and the transport-specific legality of output values. chart_bucket and chart_title semantics are largely duplicated from the schema.

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

Purpose4/5

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

States the specific resource and action ('Standard amortizing loan calculator') and enumerates concrete outputs (monthly payment, total interest, payoff date, bucketed Analysis). It implicitly distinguishes itself from revolving-debt siblings like calculate_cc_payoff by specifying 'amortizing,' but never names an alternative tool outright.

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

Usage Guidelines4/5

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

Gives strong contextual guidance for the transport-dependent output modes (use 'capture' on local stdio when feeding a chart tool; 'summary' on hosted HTTP) and sets the 'calculation, not advice' expectation. It does not, however, tell the agent when to pick this tool over siblings such as calculate_cc_payoff or compare_mortgage_terms.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources