Loan Payoff Calculator
calculate_loan_payoffCalculation, 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
| Name | Required | Description | Default |
|---|---|---|---|
| toolArguments | Yes | JSON 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. |