Skip to main content
Glama

Senaro Personal Finance

Mortgage Terms Comparison

compare_mortgage_terms
Read-onlyIdempotent

Calculation, not advice. Verify with a professional before acting. Compare two fixed-rate mortgage options side-by-side: 15 vs 30 year, different rates, points vs no points, or any two terms. Shows total interest, monthly payment breakdown (with tax, insurance, PMI, HOA), equity buildup, and, critically, what happens if you take the cheaper mortgage and invest the monthly savings. Finds the break-even investment return rate. Includes tax deduction analysis (itemizing vs standard deduction), PMI auto-removal tracking per the Homeowners Protection Act, and after-tax net worth comparison. Note: ARM (adjustable-rate) mortgages are not yet supported.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toolArgumentsYesJSON object with these parameters: home_price: decimal > 0, <= 1,000,000,000 (REQUIRED) down_payment_pct: decimal 0-100 as percentage (optional, default 20) down_payment_amount: decimal >= 0 (optional; overrides down_payment_pct if provided) option_a (REQUIRED object): - label: string (optional; auto-generated if omitted) - annual_rate_pct: decimal 0-20 as percentage, e.g. 6.25 (REQUIRED) - term_years: int 1-40 (REQUIRED) - is_arm: bool (optional, default false; ARM not yet supported) - points: decimal 0-4 (optional, default 0; discount points bought, each = 1% of loan) - points_rate_reduction_pct: decimal 0-1.0, PERCENTAGE POINTS reduction per point (optional, default 0.25) option_b (REQUIRED object): - same shape as option_a - Must differ from option_a on at least one of: term_years, annual_rate_pct, or points property_tax_annual: decimal >= 0 (optional, default 0; for true monthly cost) home_insurance_annual: decimal >= 0 (optional, default 0) pmi_monthly: decimal >= 0, <= 1,000,000,000 (optional, default 0; PMI if < 20% down) pmi_removal_ltv_pct: decimal 50-100 (optional). When omitted, PMI is modeled as removed at the 78% HPA automatic-termination threshold. Provide a value (e.g. 80) to model borrower-requested removal at that LTV (whichever of 78% or your value is reached first). Either way PMI also stops at the statutory amortization midpoint of each option's own term (12 U.S.C. §4901(7), §4902(c)), which this value cannot postpone. hoa_monthly: decimal >= 0 (optional, default 0) invest_the_difference: bool (optional, default true). When true, both options deploy the same total budget every month: the higher option's P&I plus any extra_monthly_payment plus the month-1 PMI both carry. The cheaper-mortgage holder invests the payment gap each month; an option that stops paying PMI earlier invests the freed cash; the option with the lower upfront points cost invests the difference at month 0; after payoff the full budget goes to investments. See comparison_basis in the response. investment_return_pct: decimal 0-30 as percentage, an EFFECTIVE ANNUAL rate; the monthly compounding step is (1+pct/100)^(1/12)-1 (optional; defaults to the cited Senaro long-run S&P 500 nominal return, about 10%) tax_bracket_pct: decimal 0-50 as percentage (optional; enables after-tax investment return and mortgage interest deduction analysis; the after-tax comparison credits each option's annual deduction savings to its investments at year end) standard_deduction: decimal (optional. Defaults to the IRS basic standard deduction for tax_year + filing_status. TY2026: 16100 single, 32200 married, 24150 head_of_household. TY2025: 15750 single, 31500 married, 23625 head_of_household. Source: Rev. Proc. 2025-32) filing_status: 'single' | 'married' | 'head_of_household' (optional) tax_year: int, 2025 or 2026 (optional, default 2026; selects the IRS standard-deduction table for the itemize-vs-standard analysis) extra_monthly_payment: decimal >= 0, <= 1,000,000,000 (optional, default 0; extra principal applied equally to BOTH options) time_horizon_years: int 1-40 (optional; default: max of both term_years) full_schedule: bool (optional, default false; compact amortization by default) closing_cost_pct: decimal 0-20 as percentage of loan amount (optional, default: Urban Institute loan-size regressive schedule (~4.6% at $97K loan down to ~1.4% at $679K), points excluded. Pass 0 to model zero closing costs)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.2/5.0
Behavior4/5

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

Annotations only cover the safety profile (readOnly, idempotent, non-destructive), so the description carries the rest and does so well: it discloses the 'calculation, not advice' posture, the break-even investment framing, PMI auto-removal behavior, and tax-deduction analysis. Much of the deeper behavioral detail (comparison basis, effective annual return compounding) lives in the schema rather than the description.

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?

Front-loads the most decision-relevant information: the 'calculation, not advice' caveat, the comparison scope, and the outputs, ending with the ARM limitation. It is dense but nearly every clause earns its place; slightly long overall.

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?

There is no output schema, and the description compensates by enumerating what is returned (total interest, monthly payment breakdown, equity buildup, break-even return, after-tax net worth). Combined with the rich input schema, an agent has enough to select and call it correctly.

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

Parameters3/5

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

Schema description coverage is 100% and the schema is extremely detailed, so the parameter contract is fully carried there. The description adds no syntax or format detail beyond it, which is the expected baseline for a high-coverage 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?

States a specific verb+resource ('Compare two fixed-rate mortgage options side-by-side') and enumerates concrete comparison axes (15 vs 30 year, rates, points). It is clearly distinguishable from siblings like payoff_vs_invest, rent_vs_buy, and refi_breakeven.

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 clear context for when to use it ('any two terms', 15 vs 30, points vs no points) and an explicit scope exclusion ('ARM mortgages are not yet supported'). It does not, however, name which sibling tool to use instead for ARM analysis or for related-but-distinct questions.

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