Mortgage Tools by Jenny
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Canadian mortgage calculators: renewal offers, extra payments, break-or-stay, debt consolidation.
| Author | mortgage.jenny |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 92 ms |
| Last measured | 2026-10-26 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Mortgage Tools by Jenny": {
"url": "https://mcp.jenny.mortgage/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (6)
diagnose_mortgage_comparisonread-onlyUse this first when a user wants a Canadian mortgage renewal, extra-payment, break-or-stay or debt-consolidation comparison but has not yet given the key figures. From the facts already supplied, returns the missing ones in priority order and up to three questions to ask (balance, rate, remaining amortization, term, switching costs, lender-quoted penalty). Flags a request to borrow additional cash (cash-out refinance) as unsupported. Do not use when the figures are already supplied: call the matching calculator. Does not calculate, rank, check qualification or search rates.
Parameters:
task(required) — string — Which comparison the user wants.facts(required) — object
Hints: read-only yes · destructive no · idempotent not declared · open-world no
compare_renewal_offersread-onlyUse this when a user has two or three Canadian mortgage offers for the same balance, such as a renewal letter from the current lender and a quote to switch lender at renewal, and wants them compared. Compares the user-supplied rates, terms, amortizations, cashback and switching costs over a common horizon. Returns payments, interest, debt left, modeled borrowing cost and missing facts. Do not use for leaving a mortgage before the term ends (use compare_break_or_stay). Does not search or predict rates, confirm qualification or recommend a lender. An unknown cost is never treated as zero.
Parameters:
startingBalance(required) — string — Mortgage balance now, in CAD, as digits only: no $ sign, no commas, no spaces, for example "412000" or "412000.50". Before any costs are added.offers(required) — arrayhorizonMonths— integer — Comparison horizon in months. Defaults to the shortest supplied term, at most 120.currentPayment— A fact is {state:"known",value,origin:"user"} when the user stated it; {state:"assumed",value,acknowledged:true,reason} only after the user has agreed to the assumption; {state:"unknown"} otherwise. Unknown is never treated as zero.scheduleWindow— object
Hints: read-only yes · destructive no · idempotent not declared · open-world no
plan_mortgage_prepaymentsread-onlyUse this when a user asks what paying extra on one Canadian mortgage would do: a higher regular payment, recurring extra payments, or up to 50 lump sums. Compares the supplied mortgage with and without the extras: interest, debt left and modeled payoff period. Checks the extras against prepayment-privilege limits only when the user supplies them; otherwise reports the limits as not checked. Do not use to find a prepayment penalty or the cost of breaking a mortgage: no tool calculates a penalty, the lender quotes it. Results beyond the term need explicit monthly continuation assumptions.
Parameters:
startingBalance(required) — string — Mortgage balance now, in CAD, as digits only: no $ sign, no commas, no spaces, for example "412000" or "412000.50". Before any costs are added.mortgage(required) — objectevents(required) — array — Lump-sum extra payments by due period. Use datedEvents for calendar dates.startDate— stringdatedEvents— array — Lump-sum extra payments by calendar date. Needs startDate; each is modeled on the next due date and must carry mappingAcknowledged:true.contractCaps— objecthorizonMonths— integer — Horizon in months. Defaults to the mortgage term.recurringExtra— object — Extra amount added to every payment from the given period (1 or later).scheduleWindow— objectsemiMonthlyAnchors— arraypastPaymentsIncludedInBalance— boolean
Hints: read-only yes · destructive no · idempotent not declared · open-world no
compare_break_or_stayread-onlyUse this when a user is partway through a Canadian mortgage term and asks whether to break the mortgage early (to refinance the same debt, switch lender or take a lower rate) or stay until the term ends. Compares keeping it with a user-supplied replacement offer, counting the lender-quoted penalty, such as an interest rate differential (IRD) or three months' interest. Shows cashflow payback separately from borrowing-cost crossover. Do not use to calculate or estimate a penalty: the lender must quote it, and an unknown penalty prevents an unconditional ranking. No cash-out or rate search.
Parameters:
startingBalance(required) — string — Mortgage balance now, in CAD, as digits only: no $ sign, no commas, no spaces, for example "412000" or "412000.50". Before any costs are added.currentMortgage(required) — objectreplacementOffer(required) — objectremainingTermMonths(required) — integer — Months left in the current term, as a count of months: 2 years left is 24.penalty(required) — The penalty amount the lender quoted, in CAD. Never estimate it; use {state:"unknown"} if there is no quote.penaltyFunding(required) — string — cash if paid out of pocket; financed if added to the new mortgage.horizonMonths— integer — Comparison horizon in months, 1 to 600. If omitted: the shorter of the remaining current term and the replacement term.scheduleWindow— objectpenaltyQuotedAt— string — Payout date the lender's penalty quote is for, YYYY-MM-DD.penaltySensitivity— object
Hints: read-only yes · destructive no · idempotent not declared · open-world no
compare_debt_consolidationread-onlyUse this when a user asks about rolling other debts into a Canadian mortgage (debt consolidation), for example credit-card, car-loan or existing line-of-credit or HELOC balances, each entered with a fixed monthly payment or as interest-only. Compares three scenarios over a common horizon: keep the mortgage and debts, consolidate at the new minimum payment, and consolidate while keeping the same monthly repayment budget. Shows interest, debt left, fees and limits. Monthly mortgage payments only; 1 to 10 debts. Do not use for a new HELOC, additional cash-out or qualification: none is modeled.
Parameters:
startingBalance(required) — string — Mortgage balance now, in CAD, as digits only: no $ sign, no commas, no spaces, for example "412000" or "412000.50". Before any costs are added.mortgage(required) — objectdebts(required) — arrayreplacementOffer(required) — objectpenalty(required) — The penalty amount the lender quoted, in CAD. Never estimate it; use {state:"unknown"} if there is no quote.penaltyFunding(required) — string — cash if paid out of pocket; financed if added to the new mortgage.contractCaps— objecthorizonMonths— integer — Comparison horizon in months. Defaults to the shortest supplied term, at most 120.monthlyBudget— Total monthly amount the user wants to keep paying after consolidating. Defaults to the current mortgage payment plus the debt payments due in month one.propertyValue— stringscheduleWindow— object
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_mortgage_guideread-onlyUse this when a user asks how to prepare for or understand a supported Canadian mortgage topic and is not asking for a calculation: renewal, switching costs, unequal terms, payment versus cost, renewal checklist, prepayments, break or stay, debt consolidation, or the calculation method. Returns one short, dated preparation guide written for Ontario and reviewed by an Ontario mortgage agent, with its public source, review status and follow-up questions. Do not use for general financial, legal or tax advice, current rates, arbitrary URLs or live web search.
Parameters:
topic(required) — string — One of the nine guide topics.detail(required) — string — brief returns the first two sentences; full returns the whole guide.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.