Last reviewed: October 2026.
The HomeCalc Connector is a free, read-only Model Context Protocol (MCP) server for HomeCalc.ca’s Canadian mortgage, tax and real-estate calculators. This page is for developers and anyone wiring it into an MCP client: the endpoint, the protocol details, every tool’s input schema, and real requests with the exact responses they return.
Every example on this page is real
Each request below was sent to https://homecalc.ca/api/mcp on 2026-10-26, and each response is shown exactly as the server returned it. HomeCalc’s automated tests re-run every request against the connector’s code and fail if any response changes.
Overview
| Value | |
|---|---|
| Endpoint | https://homecalc.ca/api/mcp |
| Transport | MCP Streamable HTTP — JSON-RPC 2.0 over POST; responses arrive as text/event-stream |
| Protocol revisions | 2026-07-28, and the 2025-era revisions 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07 |
| Authentication | None — no account, no API key |
| Sessions | Stateless — no mcp-session-id is issued; every request stands alone |
| Tools | 12 calculation tools, all marked readOnlyHint: true and openWorldHint: false |
| Server | homecalc 0.1.0 |
| Browser clients | CORS allows any origin (Access-Control-Allow-Origin: *) |
| Price | Free |
There is no published rate limit, quota or service-level agreement. The tools only compute and return numbers — nothing is created, changed or deleted.
Health check
A plain GET on the endpoint answers without an MCP client, so you can check it from a browser:
Request
curl -sS https://homecalc.ca/api/mcpResponse (HTTP 200)
{"name":"homecalc","status":"ok","transport":"streamable-http","endpoint":"/api/mcp","docs":"https://homecalc.ca/connector"}A CORS preflight (OPTIONS) returns HTTP 204 with no body.
Connect an MCP client
Claude: open Settings → Connectors, choose Add custom connector, paste https://homecalc.ca/api/mcp and leave authentication set to None. The connector page has the same steps.
Other MCP clients: clients that support remote Streamable HTTP servers connect with the same URL and no credentials. We test the endpoint with the official MCP TypeScript SDK client in both protocol eras: a client pinned to 2026-07-28 (no initialize handshake) and a default 2025-era client (with initialize). Both list the same 12 tools and return identical results. SDK clients negotiate the protocol version for you.
Raw HTTP quick start
You don’t need an SDK. Every request is a JSON-RPC 2.0 body sent with POST and these headers:
content-type: application/jsonaccept: application/json, text/event-stream— both are required (see 406)mcp-protocol-version: 2025-06-18— the revision these examples use
The response is a single server-sent event: an event: message line followed by a data: line that carries the JSON-RPC response.
1. initialize (optional on a stateless server)
A 2025-era client usually starts with initialize. Because the server is stateless, nothing from it has to be sent on later requests.
Request
curl -sS https://homecalc.ca/api/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-H 'mcp-protocol-version: 2025-06-18' \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"my-client","version":"1.0.0"}}}'Response
event: message
data: {"result":{"protocolVersion":"2025-06-18","capabilities":{"tools":{"listChanged":true}},"serverInfo":{"name":"homecalc","version":"0.1.0"},"instructions":"HomeCalc.ca provides accurate, source-backed Canadian mortgage and real-estate calculators. Use these tools to answer Canadian home-buying, mortgage, and tax math questions with 2026 figures: mortgage payments, minimum down payment + CMHC, land transfer tax, income tax / take-home, mortgage break penalty (IRD), BC home flipping tax, and rent-increase guidelines. Every result includes a source link on homecalc.ca and is an estimate, not financial advice — surface both to the user."},"jsonrpc":"2.0","id":1}2. tools/list
Request
curl -sS https://homecalc.ca/api/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-H 'mcp-protocol-version: 2025-06-18' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'The response lists all 12 tools with their JSON Schema (2020-12) input schemas. The first entry is shown in full below; the tool reference covers the rest. Default values for optional parameters are included in the live tools/list response — read them from there, because some follow the rates HomeCalc updates weekly.
First entry of result.tools (defaults omitted)
{
"name": "mortgage_payment",
"title": "Canadian Mortgage Payment Calculator",
"description": "Calculate the periodic mortgage payment for a Canadian home. Call it ONE of two ways: (a) if the user gave a PURCHASE PRICE, pass homePrice + downPayment and CMHC insurance is applied when the down payment is under 20%; (b) if the user gave a MORTGAGE / LOAN AMOUNT (e.g. \"payment on a $500,000 mortgage\"), pass loanAmount on its own. Do NOT invent a purchase price in order to reach a loan amount — use loanAmount. Inventing a price changes the answer by several percent and attaches a CMHC premium the user does not owe.",
"inputSchema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"homePrice": {
"description": "Purchase price in CAD, e.g. 650000. Use with downPayment. Omit if the user gave you the mortgage amount instead.",
"type": "number",
"exclusiveMinimum": 0
},
"loanAmount": {
"description": "The mortgage amount itself in CAD, when the user stated the loan rather than the purchase price. Mutually exclusive with homePrice. No CMHC premium is applied on this path — the amount is taken as the principal.",
"type": "number",
"exclusiveMinimum": 0
},
"downPayment": {
"description": "Down payment amount in CAD (or percent if downPaymentType='percent'). Required when homePrice is used.",
"type": "number",
"minimum": 0
},
"annualInterestRatePct": {
"type": "number",
"minimum": 0,
"maximum": 25,
"description": "Annual interest rate as a percent, e.g. 5.25"
},
"amortizationYears": {
"description": "Amortization in years (max 25 insured, 30 uninsured/first-time new builds)",
"type": "number",
"minimum": 1,
"maximum": 30
},
"downPaymentType": {
"type": "string",
"enum": [
"amount",
"percent"
]
},
"paymentFrequency": {
"type": "string",
"enum": [
"monthly",
"semi-monthly",
"biweekly",
"accelerated-biweekly",
"weekly",
"accelerated-weekly"
]
},
"rateType": {
"type": "string",
"enum": [
"fixed",
"variable"
]
},
"termYears": {
"type": "number",
"minimum": 1,
"maximum": 10
},
"province": {
"description": "Province name, used only for CMHC PST on the premium",
"type": "string"
}
},
"required": [
"annualInterestRatePct"
]
},
"annotations": {
"readOnlyHint": true,
"openWorldHint": false,
"title": "Canadian Mortgage Payment Calculator"
}
}3. tools/call
Request
curl -sS https://homecalc.ca/api/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-H 'mcp-protocol-version: 2025-06-18' \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"mortgage_payment","arguments":{"homePrice":650000,"downPayment":65000,"annualInterestRatePct":5.25,"amortizationYears":25}}}'Response
event: message
data: {"result":{"content":[{"type":"text","text":"{\n \"basis\": \"homePrice\",\n \"monthlyPayment\": 3594.19,\n \"paymentAmount\": 3594.19,\n \"paymentLabel\": \"Monthly\",\n \"mortgagePrincipal\": 585000,\n \"downPaymentAmount\": 65000,\n \"downPaymentPercent\": 10,\n \"cmhcRequired\": true,\n \"cmhcInsurancePremium\": 18135,\n \"cmhcInsuranceRate\": 0.031,\n \"source\": \"https://homecalc.ca/tools/mortgage-payment-calculator\",\n \"disclaimer\": \"Estimate only, based on 2026 Canadian rules. Not financial advice. Confirm with your lender, lawyer, or the CRA.\"\n}"}],"structuredContent":{"basis":"homePrice","monthlyPayment":3594.19,"paymentAmount":3594.19,"paymentLabel":"Monthly","mortgagePrincipal":585000,"downPaymentAmount":65000,"downPaymentPercent":10,"cmhcRequired":true,"cmhcInsurancePremium":18135,"cmhcInsuranceRate":0.031,"source":"https://homecalc.ca/tools/mortgage-payment-calculator","disclaimer":"Estimate only, based on 2026 Canadian rules. Not financial advice. Confirm with your lender, lawyer, or the CRA."}},"jsonrpc":"2.0","id":3}Tool reference
All 12 tools, in the order tools/list returns them:
mortgage_paymentminimum_down_paymentland_transfer_taxincome_taxmortgage_penaltybc_home_flipping_taxrent_increasecapital_gains_taxheloc_second_mortgagemortgage_affordabilitycap_ratehouse_flipping
mortgage_payment
Canadian Mortgage Payment Calculator
Calculate the periodic mortgage payment for a Canadian home. Call it ONE of two ways: (a) if the user gave a PURCHASE PRICE, pass homePrice + downPayment and CMHC insurance is applied when the down payment is under 20%; (b) if the user gave a MORTGAGE / LOAN AMOUNT (e.g. "payment on a $500,000 mortgage"), pass loanAmount on its own. Do NOT invent a purchase price in order to reach a loan amount — use loanAmount. Inventing a price changes the answer by several percent and attaches a CMHC premium the user does not owe.
| Parameter | Type | Required | Allowed values | Description |
|---|---|---|---|---|
| homePrice | number | No | > 0 | Purchase price in CAD, e.g. 650000. Use with downPayment. Omit if the user gave you the mortgage amount instead. |
| loanAmount | number | No | > 0 | The mortgage amount itself in CAD, when the user stated the loan rather than the purchase price. Mutually exclusive with homePrice. No CMHC premium is applied on this path — the amount is taken as the principal. |
| downPayment | number | No | ≥ 0 | Down payment amount in CAD (or percent if downPaymentType='percent'). Required when homePrice is used. |
| annualInterestRatePct | number | Yes | ≥ 0, ≤ 25 | Annual interest rate as a percent, e.g. 5.25 |
| amortizationYears | number | No | ≥ 1, ≤ 30 | Amortization in years (max 25 insured, 30 uninsured/first-time new builds) |
| downPaymentType | string | No | amount, percent | |
| paymentFrequency | string | No | monthly, semi-monthly, biweekly, accelerated-biweekly, weekly, accelerated-weekly | |
| rateType | string | No | fixed, variable | |
| termYears | number | No | ≥ 1, ≤ 10 | |
| province | string | No | Province name, used only for CMHC PST on the premium |
minimum_down_payment
Minimum Down Payment Calculator (Canada)
Calculate the minimum down payment for a Canadian home under the Dec 2024 CMHC rules (5% on the first $500k, 10% on the portion from $500k–$1.5M, 20% at/above $1.5M), plus whether CMHC insurance applies and the premium rate.
| Parameter | Type | Required | Allowed values | Description |
|---|---|---|---|---|
| homePrice | number | Yes | > 0 | Purchase price in CAD, e.g. 800000 |
land_transfer_tax
Canadian Land Transfer Tax Calculator
Estimate land transfer tax on a home purchase for all 13 provinces and territories (incl. Toronto MLTT, Montreal welcome tax), first-time buyer rebates, plus the transfer registration fee (the government fee to register the deed) and the total due at registration. Alberta, Saskatchewan, Newfoundland & Labrador and the three territories charge no land transfer tax, only the registration fee. The mortgage registration fee is separate and not included.
| Parameter | Type | Required | Allowed values | Description |
|---|---|---|---|---|
| price | number | Yes | > 0 | Purchase price in CAD |
| province | string | Yes | Ontario, British Columbia, Quebec, Alberta, Manitoba, Nova Scotia, New Brunswick, Saskatchewan, PEI, Newfoundland & Labrador, Northwest Territories, Nunavut, Yukon | Province or territory |
| inToronto | boolean | No | Ontario only: property is within the City of Toronto (adds the municipal LTT) | |
| isFirstTimeBuyer | boolean | No | ||
| quebecMunicipality | string | No | montreal, other | Quebec only: 'montreal' uses Montreal's welcome-tax brackets (the website's Quebec default); 'other' uses the provincial base schedule for municipalities without higher rates above $500,000 |
income_tax
Canadian Income Tax & Take-Home Calculator
Calculate 2026 Canadian federal + provincial income tax, CPP/QPP, EI, QPIP (Quebec), Ontario surtax and Health Premium where applicable, plus net (take-home) pay for any province.
| Parameter | Type | Required | Allowed values | Description |
|---|---|---|---|---|
| annualIncome | number | Yes | ≥ 0 | Gross annual employment income in CAD |
| province | string | Yes | Ontario, British Columbia, Alberta, Quebec, Manitoba, Saskatchewan, Nova Scotia, New Brunswick, PEI, Newfoundland & Labrador | Province of residence |
| employmentType | string | No | employed, self_employed | |
| rrspContribution | number | No | ≥ 0 | Annual RRSP contribution in CAD |
mortgage_penalty
Mortgage Prepayment Penalty Calculator (IRD)
Estimate the penalty to break a Canadian mortgage: three months' interest vs the interest rate differential (IRD), including the big-bank posted-rate method. Fixed = greater of the two; variable = usually three months' interest. IMPORTANT: the three rate inputs below are lender-specific and are NOT supplied by most users. If they are omitted, this tool falls back to illustrative site defaults and the answer can be several times too low or too high — the response reports exactly which values were assumed in `assumedInputs`. Always surface those assumptions to the user and tell them to confirm the real figures with their lender.
| Parameter | Type | Required | Allowed values | Description |
|---|---|---|---|---|
| balance | number | Yes | > 0 | Outstanding mortgage balance in CAD |
| rateType | string | No | fixed, variable | |
| contractRatePct | number | Yes | ≥ 0, ≤ 25 | Your contract rate as a percent, e.g. 5.25 |
| monthsRemaining | number | Yes | ≥ 0, ≤ 120 | Months remaining in the term |
| lenderMethod | string | No | big-bank, monoline | Big banks use the posted-rate IRD, monolines use actual rates. Which is larger depends on the gap between the discount originally received and today's posted rate — it is NOT always the big bank. |
| currentRateForRemainingTermPct | number | No | ≥ 0, ≤ 25 | Monoline method: today's rate for the remaining term (percent). Lender-specific — omit if unknown and the reply will say it was assumed. |
| postedAtOriginationPct | number | No | ≥ 0, ≤ 25 | Big-bank method: posted (not discounted) rate when you signed, from your mortgage documents. HIGH IMPACT — this single value can change the penalty several-fold. Omit if unknown and the reply will say it was assumed. |
| todaysPostedForClosestTermPct | number | No | ≥ 0, ≤ 25 | Big-bank method: your lender's posted rate today for the closest term. Omit if unknown and the reply will say it was assumed. |
bc_home_flipping_tax
BC Home Flipping Tax Calculator
Estimate British Columbia's home flipping tax on a property sold within 730 days: 20% tapering to 0% between 366 and 730 days, with a $20,000 primary-residence deduction (only if held at least 365 days).
| Parameter | Type | Required | Allowed values | Description |
|---|---|---|---|---|
| taxableIncome | number | Yes | Proceeds minus cost to acquire minus cost to improve (may be negative) | |
| daysHeld | number | Yes | ≥ 0 | Number of days the property was owned before sale |
| isPrimaryResidence | boolean | No | Lived in it as a primary residence |
rent_increase
Rent Increase Guideline Calculator (ON / BC / MB)
Calculate the maximum allowable annual rent increase under the Ontario LTB, BC RTB or Manitoba RTB guideline for a given year, and the resulting new rent.
| Parameter | Type | Required | Allowed values | Description |
|---|---|---|---|---|
| currentRent | number | Yes | > 0 | Current monthly rent in CAD |
| province | string | Yes | Ontario, British Columbia, Manitoba | |
| year | string | Yes | Guideline year, e.g. '2026'. Use the rent_increase tool's supported years if unsure. |
capital_gains_tax
Canadian Capital Gains Tax Calculator
Estimate Canadian capital gains tax on a disposition (real estate, stocks, crypto, a business, or a rental property). Applies the flat 50% inclusion rate, the principal-residence exemption, the lifetime capital gains exemption for QSBC shares, capital-loss offsets, and rental CCA recapture — then taxes the taxable gain on top of your other income at federal + provincial brackets.
| Parameter | Type | Required | Allowed values | Description |
|---|---|---|---|---|
| salePrice | number | Yes | ≥ 0 | Gross sale proceeds in CAD |
| purchasePrice | number | Yes | ≥ 0 | Original purchase price in CAD |
| province | string | No | Ontario, British Columbia, Alberta, Quebec, Manitoba, Saskatchewan, Nova Scotia, New Brunswick, PEI, Newfoundland & Labrador, Northwest Territories, Nunavut, Yukon | Province/territory of residence |
| annualIncome | number | No | ≥ 0 | Your other annual income in CAD — the gain stacks on top of this |
| assetType | string | No | real-estate, stocks, crypto, business, rental, other | |
| sellingCosts | number | No | ≥ 0 | Realtor commission, legal fees, and other costs of selling |
| buyingCosts | number | No | ≥ 0 | Land transfer tax, legal fees, and other costs of acquiring |
| capitalImprovements | number | No | ≥ 0 | Capital improvements added to the adjusted cost base |
| isPrincipalResidence | boolean | No | Real estate only: claim the principal residence exemption | |
| yearsOwned | number | No | ≥ 0 | Years the property was owned (principal-residence proration) |
| yearsDesignated | number | No | ≥ 0 | Years designated as your principal residence |
| isQSBC | boolean | No | Business only: qualified small business corporation shares (LCGE) | |
| lcgeRemaining | number | No | ≥ 0 | Remaining lifetime capital gains exemption room in CAD |
| capitalLosses | number | No | ≥ 0 | Prior/current capital losses available to offset the gain |
| taxpayerType | string | No | individual, corporation, trust | |
| taxYear | number | No | ≥ 2020, ≤ 2035 | Tax year of the disposition |
| landValue | number | No | ≥ 0 | Rental only: land portion of the sale price (splits land vs building gain) |
| originalBuildingCost | number | No | ≥ 0 | Rental only: original building cost for CCA recapture |
| ccaClaimedToDate | number | No | ≥ 0 | Rental only: total CCA claimed to date |
heloc_second_mortgage
HELOC & Second Mortgage Calculator (Canada)
Compare a HELOC against a second mortgage for tapping home equity in Canada. Returns how much you can borrow (revolving HELOC capped at 65% LTV, total secured borrowing to 80% with an A lender), monthly payments, TDS qualification at the OSFI stress-test rate, and the equivalent numbers for B and private lenders.
| Parameter | Type | Required | Allowed values | Description |
|---|---|---|---|---|
| homeValue | number | Yes | > 0 | Current market value of the home in CAD |
| outstandingFirstMortgage | number | Yes | ≥ 0 | Balance remaining on the first mortgage in CAD |
| amountToBorrow | number | Yes | ≥ 0 | Amount you want to borrow in CAD |
| annualHouseholdIncome | number | Yes | ≥ 0 | Gross annual household income in CAD |
| province | string | No | Ontario, British Columbia, Alberta, Quebec, Manitoba, Saskatchewan, Nova Scotia, New Brunswick, Newfoundland and Labrador, Prince Edward Island | |
| existingMonthlyDebts | number | No | ≥ 0 | Other monthly debt payments (car, cards, loans) |
| purposeOfFunds | string | No | Home Renovation, Debt Consolidation, Investment Property Down Payment, Education, Emergency Funds, Other | |
| secondMortgageLenderTier | string | No | A, B, Private | A = bank/credit union, B = trust/MIC, Private = individual investor |
| helocPrimeRatePct | number | No | ≥ 0, ≤ 25 | Prime rate as a percent; defaults to the site's current prime |
| helocSpreadPct | number | No | ≥ 0, ≤ 10 | Lender spread over prime as a percent, e.g. 0.5 |
| secondMortgageRatePct | number | No | ≥ 0, ≤ 30 | Second mortgage rate as a percent; defaults to the tier's typical rate |
| secondMortgageAmortYears | number | No | ≥ 1, ≤ 30 | |
| secondMortgageTermYears | number | No | ≥ 1, ≤ 10 | |
| extraMonthlyPrincipal | number | No | ≥ 0 | Optional extra principal paid monthly on the HELOC |
mortgage_affordability
Mortgage Affordability Calculator (Canada)
Work out the maximum home price a Canadian buyer qualifies for: binary-searches the price that keeps both the GDS (39%) and TDS (44%) ratios satisfied at the OSFI stress-test rate, honouring the Dec-2024 minimum down payment tiers and the $1.5M CMHC insurability ceiling. Returns max price, max mortgage, CMHC premium, monthly payment, and the GDS/TDS ratios.
| Parameter | Type | Required | Allowed values | Description |
|---|---|---|---|---|
| annualIncome | number | Yes | ≥ 0 | Primary applicant gross annual income in CAD |
| downPayment | number | Yes | ≥ 0 | Down payment — dollars, or a percent if downPaymentMode='percent' |
| coApplicantIncome | number | No | ≥ 0 | Co-applicant gross annual income in CAD (0 = none) |
| downPaymentMode | string | No | dollar, percent | |
| monthlyDebts | number | No | ≥ 0 | Other monthly debt payments (car, cards, student loans) |
| annualPropertyTax | number | No | ≥ 0 | Estimated annual property tax in CAD |
| monthlyHeating | number | No | ≥ 0 | Estimated monthly heating cost in CAD |
| propertyType | string | No | single-family, condo, townhouse | |
| condoFees | number | No | ≥ 0 | Monthly condo fees — 50% counts toward GDS/TDS for condos |
| province | string | No | ||
| interestRatePct | number | No | ≥ 0, ≤ 25 | Contract mortgage rate as a percent, e.g. 4.79 |
| amortizationYears | any | No |
cap_rate
Cap Rate & Rental Property Calculator (Canada)
Analyze a Canadian rental property: capitalization rate, net operating income, gross rent multiplier, expense ratio, annual cash flow and cash-on-cash return, plus how the cap rate compares to typical yields in the local market. Mortgage math uses Canadian semi-annual compounding.
| Parameter | Type | Required | Allowed values | Description |
|---|---|---|---|---|
| purchasePrice | number | Yes | > 0 | Purchase price in CAD |
| monthlyGrossRent | number | Yes | ≥ 0 | Total gross monthly rent across all units in CAD |
| annualOperatingExpenses | number | Yes | ≥ 0 | Total annual operating expenses in CAD (property tax, insurance, management, maintenance, landlord utilities) — excludes mortgage payments |
| downPayment | number | Yes | ≥ 0 | Down payment in CAD. Set equal to purchasePrice for an all-cash purchase. |
| interestRatePct | number | No | ≥ 0, ≤ 25 | Mortgage rate as a percent, e.g. 5.49 |
| amortizationYears | number | No | ≥ 1, ≤ 30 | |
| vacancyRatePct | number | No | ≥ 0, ≤ 100 | Vacancy allowance as a percent of gross rent |
| city | string | No | toronto, vancouver, calgary, edmonton, ottawa, montreal, halifax, winnipeg, hamilton, kitchener-waterloo, other | City used for the cap-rate benchmark range |
| propertyType | string | No | single-family, multi-unit, commercial, mixed-use |
house_flipping
House Flipping Profit Calculator (Canada)
Estimate the profit on a Canadian house flip: land transfer tax (with first-time buyer rebate), renovation cost with contingency, holding costs, realtor commission, and closing costs — then the tax bill. Flags the CRA residential property flipping rule (held under 12 months = 100% business income, no capital gains treatment) and shows the tax saving from waiting past the 12-month line.
| Parameter | Type | Required | Allowed values | Description |
|---|---|---|---|---|
| purchasePrice | number | Yes | > 0 | Purchase price in CAD |
| afterRepairValue | number | Yes | > 0 | Expected resale price after renovation (ARV) in CAD |
| renovationCost | number | Yes | ≥ 0 | Budgeted renovation cost in CAD, before contingency |
| province | string | No | Ontario, British Columbia, Alberta, Quebec, Manitoba, Saskatchewan, Nova Scotia, New Brunswick, PEI, Newfoundland | |
| city | string | No | City name — include 'Toronto' to add the Toronto municipal land transfer tax | |
| contingencyPct | number | No | ≥ 0, ≤ 100 | Renovation contingency as a percent of the renovation budget |
| holdingPeriodMonths | number | No | ≥ 0, ≤ 120 | Months held from purchase to sale — under 12 triggers the CRA flipping rule |
| monthlyHoldingCosts | number | No | ≥ 0 | Monthly carrying costs: mortgage interest, property tax, insurance, utilities |
| realtorCommissionPct | number | No | ≥ 0, ≤ 15 | Realtor commission on the sale as a percent of ARV |
| closingCostsBuy | number | No | ≥ 0 | Legal and inspection costs on the purchase, excluding land transfer tax |
| closingCostsSell | number | No | ≥ 0 | Legal and staging costs on the sale, excluding commission |
| marginalTaxRatePct | number | No | ≥ 0, ≤ 60 | Your combined marginal tax rate as a percent |
| isFirstTimeBuyer | boolean | No | Eligible for the first-time buyer land transfer tax rebate |
Live examples
One call per tool. Each shows the params of the tools/call request and the structuredContent of the result. The result’s content[0].text carries the same JSON as text.
mortgage_payment
Monthly payment on a $650,000 home with 10% down at 5.25%, 25-year amortization.
params
{
"name": "mortgage_payment",
"arguments": {
"homePrice": 650000,
"downPayment": 65000,
"annualInterestRatePct": 5.25,
"amortizationYears": 25
}
}result.structuredContent
{
"basis": "homePrice",
"monthlyPayment": 3594.19,
"paymentAmount": 3594.19,
"paymentLabel": "Monthly",
"mortgagePrincipal": 585000,
"downPaymentAmount": 65000,
"downPaymentPercent": 10,
"cmhcRequired": true,
"cmhcInsurancePremium": 18135,
"cmhcInsuranceRate": 0.031,
"source": "https://homecalc.ca/tools/mortgage-payment-calculator",
"disclaimer": "Estimate only, based on 2026 Canadian rules. Not financial advice. Confirm with your lender, lawyer, or the CRA."
}minimum_down_payment
Minimum down payment on an $850,000 home.
params
{
"name": "minimum_down_payment",
"arguments": {
"homePrice": 850000
}
}result.structuredContent
{
"homePrice": 850000,
"minimumDownPayment": 60000,
"minimumDownPercent": 7.1,
"cmhcInsurable": true,
"cmhcPremiumRatePercent": 4,
"source": "https://homecalc.ca/tools/down-payment-calculator",
"disclaimer": "Estimate only, based on 2026 Canadian rules. Not financial advice. Confirm with your lender, lawyer, or the CRA."
}land_transfer_tax
Land transfer tax on a $1,200,000 purchase in the City of Toronto.
params
{
"name": "land_transfer_tax",
"arguments": {
"price": 1200000,
"province": "Ontario",
"inToronto": true,
"isFirstTimeBuyer": false
}
}result.structuredContent
{
"province": "Ontario",
"provincialLandTransferTax": 20475,
"torontoMunicipalLandTransferTax": 20475,
"firstTimeBuyerRebate": 0,
"totalLandTransferTax": 40950,
"transferRegistrationFee": 86.42,
"totalDueAtRegistration": 41036.42,
"note": null,
"source": "https://homecalc.ca/tools/land-transfer-tax-calculator/toronto",
"disclaimer": "Estimate only, based on 2026 Canadian rules. Not financial advice. Confirm with your lender, lawyer, or the CRA."
}income_tax
Income tax and take-home pay on $95,000 of employment income in Ontario.
Developer note: provincialTax already includes the Ontario surtax and the Ontario Health Premium. ontarioSurtax and ontarioHealthPremium are a breakdown of that total — do not add them again.
params
{
"name": "income_tax",
"arguments": {
"annualIncome": 95000,
"province": "Ontario"
}
}result.structuredContent
{
"grossIncome": 95000,
"federalTax": 12276.5972,
"provincialTax": 6239.4567400000005,
"ontarioSurtax": 0,
"ontarioHealthPremium": 750,
"cpp": 4646.45,
"ei": 1123.07,
"qpip": 0,
"totalDeductions": 24285.573940000002,
"netPay": 70714.42606,
"effectiveRatePercent": 25.6,
"marginalRatePercent": 29.7,
"source": "https://homecalc.ca/tools/income-tax-calculator",
"disclaimer": "Estimate only, based on 2026 Canadian rules. Not financial advice. Confirm with your lender, lawyer, or the CRA."
}mortgage_penalty
Penalty to break a $400,000 fixed mortgage at 4.5% with 30 months left (big-bank posted-rate IRD).
params
{
"name": "mortgage_penalty",
"arguments": {
"balance": 400000,
"rateType": "fixed",
"contractRatePct": 4.5,
"monthsRemaining": 30,
"lenderMethod": "big-bank",
"currentRateForRemainingTermPct": 4.29,
"postedAtOriginationPct": 6.49,
"todaysPostedForClosestTermPct": 5.79
}
}result.structuredContent
{
"applicablePenalty": 7000,
"applicableMethod": "posted-rate-ird",
"threeMonthInterest": 4500,
"irdStandardMethod": 2100,
"irdPostedRateMethod": 7000,
"assumedInputs": {},
"estimateOnly": false,
"source": "https://homecalc.ca/tools/mortgage-penalty-calculator",
"disclaimer": "Estimate only, based on 2026 Canadian rules. Not financial advice. Confirm with your lender, lawyer, or the CRA."
}bc_home_flipping_tax
BC home flipping tax on a $120,000 gain from a property held 300 days.
params
{
"name": "bc_home_flipping_tax",
"arguments": {
"taxableIncome": 120000,
"daysHeld": 300,
"isPrimaryResidence": false
}
}result.structuredContent
{
"applies": true,
"taxRatePercent": 20,
"primaryResidenceDeduction": 0,
"netTaxableIncome": 120000,
"taxOwing": 24000,
"note": null,
"source": "https://homecalc.ca/tools/house-flip-tax-calculator/bc",
"disclaimer": "Estimate only, based on 2026 Canadian rules. Not financial advice. Confirm with your lender, lawyer, or the CRA."
}rent_increase
Maximum 2026 guideline increase on $2,000/month rent in Ontario.
params
{
"name": "rent_increase",
"arguments": {
"currentRent": 2000,
"province": "Ontario",
"year": "2026"
}
}result.structuredContent
{
"province": "Ontario",
"year": "2026",
"guidelinePercent": 2.1,
"increaseAmount": 42,
"newRent": 2042,
"availableYears": [
"2024",
"2025",
"2026",
"2027"
],
"source": "https://homecalc.ca/tools/rent-increase-calculator",
"disclaimer": "Estimate only, based on 2026 Canadian rules. Not financial advice. Confirm with your lender, lawyer, or the CRA."
}capital_gains_tax
Capital gains tax on selling a property that is not a principal residence, bought for $600,000 and sold for $900,000 in Ontario.
params
{
"name": "capital_gains_tax",
"arguments": {
"salePrice": 900000,
"purchasePrice": 600000,
"province": "Ontario",
"annualIncome": 100000,
"assetType": "real-estate",
"sellingCosts": 40000,
"taxYear": 2026
}
}result.structuredContent
{
"netProceeds": 860000,
"adjustedCostBase": 600000,
"capitalGain": 260000,
"isLoss": false,
"exemptAmount": 0,
"lcgeApplied": 0,
"lossesApplied": 0,
"gainAfterExemptions": 260000,
"inclusionRatePercent": 50,
"taxableCapitalGain": 130000,
"federalTaxOnGain": 34319,
"provincialTaxOnGain": 15252,
"estimatedTax": 49571,
"ccaRecapture": 0,
"taxOnRecapture": 0,
"netAfterTax": 810429,
"effectiveRateOnGainPercent": 19.1,
"marginalRatePercent": 42.2,
"isFullExemption": false,
"source": "https://homecalc.ca/tools/capital-gains-tax-calculator",
"disclaimer": "Estimate only, based on 2026 Canadian rules. Not financial advice. Confirm with your lender, lawyer, or the CRA."
}heloc_second_mortgage
Can a homeowner borrow $75,000 against a $900,000 home with $450,000 owing?
params
{
"name": "heloc_second_mortgage",
"arguments": {
"homeValue": 900000,
"outstandingFirstMortgage": 450000,
"amountToBorrow": 75000,
"annualHouseholdIncome": 160000,
"province": "Ontario",
"helocPrimeRatePct": 4.95,
"helocSpreadPct": 0.5,
"secondMortgageRatePct": 7.5
}
}result.structuredContent
{
"homeValue": 900000,
"currentEquity": 450000,
"currentLtvPercent": 50,
"heloc": {
"maxAvailable": 270000,
"requestFits": true,
"effectiveRatePercent": 5.45,
"revolvingPortion": 75000,
"termPortion": 0,
"monthlyInterestOnlyPayment": 340.63,
"monthlyBlendedPayment": 340.63,
"stressTestRatePercent": 7.45,
"stressTestMonthlyPayment": 465.63,
"tdsRatioPercent": 33.25,
"tdsQualifies": true,
"combinedLtvPercent": 58.33
},
"secondMortgage": {
"lenderTier": "A",
"maxAvailable": 270000,
"requestFits": true,
"ratePercent": 7.5,
"monthlyPayment": 548.67,
"totalInterestPaid": 89599.86,
"amortizationYears": 25,
"balanceAtEndOfTerm": 73918.97,
"tdsRatioPercent": 34.6,
"tdsQualifies": true,
"combinedLtvPercent": 58.33
},
"maxAvailableByLenderTier": {
"A": 270000,
"B": 270000,
"Private": 360000
},
"baseGdsRatioPercent": 29.76,
"baseTdsRatioPercent": 29.76,
"estimatedMonthlyPropertyTax": 750,
"source": "https://homecalc.ca/tools/heloc-second-mortgage-calculator",
"disclaimer": "Estimate only, based on 2026 Canadian rules. Not financial advice. Confirm with your lender, lawyer, or the CRA."
}mortgage_affordability
Maximum purchase price on $120,000 income with $100,000 down at 4.5%.
params
{
"name": "mortgage_affordability",
"arguments": {
"annualIncome": 120000,
"downPayment": 100000,
"interestRatePct": 4.5,
"amortizationYears": 25,
"province": "Ontario"
}
}result.structuredContent
{
"maxHomePrice": 582878,
"maxMortgage": 496398.58,
"monthlyPayment": 2747.43,
"totalMonthlyHousing": 3322.43,
"stressTestRatePercent": 6.5,
"gdsRatioPercent": 39,
"tdsRatioPercent": 39,
"downPaymentAmount": 100000,
"downPaymentPercent": 17.16,
"minimumDownPaymentRequired": 33287.8,
"downPaymentBelowMinimum": false,
"cmhcRequired": true,
"cmhcPremium": 13520.58,
"cmhcPremiumRatePercent": 2.8,
"cmhcNotAvailable": false,
"amortizationWarning": false,
"source": "https://homecalc.ca/tools/mortgage-affordability-calculator",
"disclaimer": "Estimate only, based on 2026 Canadian rules. Not financial advice. Confirm with your lender, lawyer, or the CRA."
}cap_rate
Cap rate on a $600,000 rental renting for $3,200/month with $9,000 of annual expenses.
params
{
"name": "cap_rate",
"arguments": {
"purchasePrice": 600000,
"monthlyGrossRent": 3200,
"annualOperatingExpenses": 9000,
"downPayment": 120000,
"interestRatePct": 5,
"amortizationYears": 25
}
}result.structuredContent
{
"capRatePercent": 4.58,
"netOperatingIncome": 27480,
"grossRentalIncome": 38400,
"vacancyLoss": 1920,
"effectiveGrossIncome": 36480,
"operatingExpenses": 9000,
"grossRentMultiplier": 15.63,
"expenseRatioPercent": 24.67,
"mortgagePrincipal": 480000,
"monthlyMortgagePayment": 2791.7,
"annualDebtService": 33500.45,
"annualCashFlow": -6020.45,
"cashInvested": 120000,
"cashOnCashReturnPercent": -5.02,
"benchmark": {
"market": "Your Market",
"typicalRangePercent": {
"low": 3.75,
"high": 5.75
},
"position": "lower-typical",
"message": "This cap rate is within the typical range for Your Market — a reasonable deal if appreciation potential is strong."
},
"warnings": [],
"source": "https://homecalc.ca/tools/cap-rate-calculator",
"disclaimer": "Estimate only, based on 2026 Canadian rules. Not financial advice. Confirm with your lender, lawyer, or the CRA."
}house_flipping
Profit on a flip bought for $500,000, renovated for $60,000 and resold for $650,000 after 6 months.
params
{
"name": "house_flipping",
"arguments": {
"purchasePrice": 500000,
"afterRepairValue": 650000,
"renovationCost": 60000,
"province": "Ontario",
"holdingPeriodMonths": 6,
"monthlyHoldingCosts": 2500,
"marginalTaxRatePct": 43.41
}
}result.structuredContent
{
"provincialLandTransferTax": 6475,
"torontoMunicipalLandTransferTax": 0,
"firstTimeBuyerRebate": 0,
"totalLandTransferTax": 6475,
"renovationWithContingency": 69000,
"holdingCosts": 15000,
"realtorCommission": 32500,
"totalCosts": 622975,
"grossProfit": 27025,
"craFlippingRuleApplies": true,
"taxableAmount": 27025,
"estimatedTax": 11732,
"netProfit": 15293,
"roiPercent": 2.7,
"breakEvenSalePrice": 634707,
"monthsToCapitalGainsTreatment": 6,
"taxSavingIfHeldPast12Months": 6000,
"source": "https://homecalc.ca/tools/house-flipping-calculator",
"disclaimer": "Estimate only, based on 2026 Canadian rules. Not financial advice. Confirm with your lender, lawyer, or the CRA."
}Result format and source links
A successful result has both content (one text item) and structuredContent. Every successful result also includes two fields to show the user:
source— the HomeCalc page for that calculator, where the user can check or change the inputs.disclaimer— currently: “Estimate only, based on 2026 Canadian rules. Not financial advice. Confirm with your lender, lawyer, or the CRA.”
The source links returned by the examples above:
| Tool | source |
|---|---|
| mortgage_payment | https://homecalc.ca/tools/mortgage-payment-calculator |
| minimum_down_payment | https://homecalc.ca/tools/down-payment-calculator |
| land_transfer_tax | https://homecalc.ca/tools/land-transfer-tax-calculator/toronto |
| income_tax | https://homecalc.ca/tools/income-tax-calculator |
| mortgage_penalty | https://homecalc.ca/tools/mortgage-penalty-calculator |
| bc_home_flipping_tax | https://homecalc.ca/tools/house-flip-tax-calculator/bc |
| rent_increase | https://homecalc.ca/tools/rent-increase-calculator |
| capital_gains_tax | https://homecalc.ca/tools/capital-gains-tax-calculator |
| heloc_second_mortgage | https://homecalc.ca/tools/heloc-second-mortgage-calculator |
| mortgage_affordability | https://homecalc.ca/tools/mortgage-affordability-calculator |
| cap_rate | https://homecalc.ca/tools/cap-rate-calculator |
| house_flipping | https://homecalc.ca/tools/house-flipping-calculator |
The link can depend on the inputs — for example, a Toronto purchase returns the Toronto land transfer tax page.
Errors and troubleshooting
There are two kinds of error. Tool errors come back as a normal result with isError: true; protocol errors come back as a JSON-RPC error.
A calculation the tool refuses
When the premise is impossible (here, a down payment below the legal minimum), the tool returns isError: true and a reason instead of a number. Relay the reason to the user.
params
{
"name": "mortgage_payment",
"arguments": {
"homePrice": 650000,
"downPayment": 10000,
"annualInterestRatePct": 5.25
}
}Response
{
"result": {
"content": [
{
"type": "text",
"text": "{\n \"error\": \"A down payment of $10,000 is below the legal minimum for a $650,000 home, which is $40,000 (5% on the first $500,000, 10% from $500,000 to $1.5M, 20% at or above $1.5M). There is no zero-down or below-minimum insured mortgage in Canada, so no payment is returned. Tell the user the minimum, and re-run with a down payment of at least that amount.\"\n}"
}
],
"structuredContent": {
"error": "A down payment of $10,000 is below the legal minimum for a $650,000 home, which is $40,000 (5% on the first $500,000, 10% from $500,000 to $1.5M, 20% at or above $1.5M). There is no zero-down or below-minimum insured mortgage in Canada, so no payment is returned. Tell the user the minimum, and re-run with a down payment of at least that amount."
},
"isError": true
},
"jsonrpc": "2.0",
"id": 15
}Missing or invalid arguments
Arguments are validated against the tool's inputSchema. A missing required field or an out-of-range value comes back as an error result naming the problem.
params
{
"name": "minimum_down_payment",
"arguments": {}
}Response
{
"result": {
"content": [
{
"type": "text",
"text": "Input validation error: Invalid arguments for tool minimum_down_payment: homePrice: Invalid input: expected number, received undefined"
}
],
"isError": true
},
"jsonrpc": "2.0",
"id": 16
}A tool name that does not exist
Only the names returned by tools/list exist. Any other name is rejected.
params
{
"name": "stress_test",
"arguments": {
"annualIncome": 100000
}
}Response
{
"jsonrpc": "2.0",
"id": 17,
"error": {
"code": -32602,
"message": "Tool stress_test not found"
}
}406 Not Acceptable
The Accept header must list both application/json and text/event-stream. Sending only one (or none) returns 406 before the request reaches any tool.
Request
curl -sS https://homecalc.ca/api/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json' \
-H 'mcp-protocol-version: 2025-06-18' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'Response (HTTP 406)
{"jsonrpc":"2.0","error":{"code":-32000,"message":"Not Acceptable: Client must accept both application/json and text/event-stream"},"id":null}400 Unsupported protocol version
An unknown MCP-Protocol-Version header returns 400, and the error lists the 2025-era revisions the server accepts. Official MCP SDK clients negotiate the version for you.
Request
curl -sS https://homecalc.ca/api/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-H 'mcp-protocol-version: 1999-01-01' \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'Response (HTTP 400)
{"jsonrpc":"2.0","error":{"code":-32000,"message":"Bad Request: Unsupported protocol version: 1999-01-01 (supported versions: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07)"},"id":null}Privacy and data
No personal data. The connector has no login and never stores names, emails, IP addresses, exact figures, account identifiers or conversation text. For each calculation we keep anonymous, rounded usage statistics: which calculator, which assistant (Claude or ChatGPT), the time, whether it succeeded or returned an error, the province, rounded ranges of the inputs (for example the price in $100,000 bands, income in $25,000 bands, the interest rate rounded down to the nearest 0.25%) and yes/no outcomes (for example whether CMHC insurance applies). Our hosting provider keeps standard request logs, including IP addresses, for about a day for security and operations. Usage statistics are deleted after 24 months. We use them only to improve the calculators and to publish aggregate market research, and we never sell them.
Calls from your own client — including any you make to try these examples — are counted in those anonymous usage statistics. See the Privacy Policy for the full details.
Questions
The connector is built and maintained by Hami Tahm, founder of HomeCalc.ca, on the same calculator cores as the website (see our methodology). Questions or issues? Email hami@homecalc.ca.
Related: HomeCalc Connector · All calculators · Embed our calculators