HomeCalc Connector — developer documentation

    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

    HomeCalc Connector at a glance
    Value
    Endpointhttps://homecalc.ca/api/mcp
    TransportMCP Streamable HTTP — JSON-RPC 2.0 over POST; responses arrive as text/event-stream
    Protocol revisions2026-07-28, and the 2025-era revisions 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07
    AuthenticationNone — no account, no API key
    SessionsStateless — no mcp-session-id is issued; every request stands alone
    Tools12 calculation tools, all marked readOnlyHint: true and openWorldHint: false
    Serverhomecalc 0.1.0
    Browser clientsCORS allows any origin (Access-Control-Allow-Origin: *)
    PriceFree

    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/mcp

    Response (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/json
    • accept: 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_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.

    Input parameters for mortgage_payment
    ParameterTypeRequiredAllowed valuesDescription
    homePricenumberNo> 0Purchase price in CAD, e.g. 650000. Use with downPayment. Omit if the user gave you the mortgage amount instead.
    loanAmountnumberNo> 0The 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.
    downPaymentnumberNo≥ 0Down payment amount in CAD (or percent if downPaymentType='percent'). Required when homePrice is used.
    annualInterestRatePctnumberYes≥ 0, ≤ 25Annual interest rate as a percent, e.g. 5.25
    amortizationYearsnumberNo≥ 1, ≤ 30Amortization in years (max 25 insured, 30 uninsured/first-time new builds)
    downPaymentTypestringNoamount, percent
    paymentFrequencystringNomonthly, semi-monthly, biweekly, accelerated-biweekly, weekly, accelerated-weekly
    rateTypestringNofixed, variable
    termYearsnumberNo≥ 1, ≤ 10
    provincestringNoProvince name, used only for CMHC PST on the premium

    See a live example of mortgage_payment

    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.

    Input parameters for minimum_down_payment
    ParameterTypeRequiredAllowed valuesDescription
    homePricenumberYes> 0Purchase price in CAD, e.g. 800000

    See a live example of minimum_down_payment

    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.

    Input parameters for land_transfer_tax
    ParameterTypeRequiredAllowed valuesDescription
    pricenumberYes> 0Purchase price in CAD
    provincestringYesOntario, British Columbia, Quebec, Alberta, Manitoba, Nova Scotia, New Brunswick, Saskatchewan, PEI, Newfoundland & Labrador, Northwest Territories, Nunavut, YukonProvince or territory
    inTorontobooleanNoOntario only: property is within the City of Toronto (adds the municipal LTT)
    isFirstTimeBuyerbooleanNo
    quebecMunicipalitystringNomontreal, otherQuebec 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

    See a live example of land_transfer_tax

    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.

    Input parameters for income_tax
    ParameterTypeRequiredAllowed valuesDescription
    annualIncomenumberYes≥ 0Gross annual employment income in CAD
    provincestringYesOntario, British Columbia, Alberta, Quebec, Manitoba, Saskatchewan, Nova Scotia, New Brunswick, PEI, Newfoundland & LabradorProvince of residence
    employmentTypestringNoemployed, self_employed
    rrspContributionnumberNo≥ 0Annual RRSP contribution in CAD

    See a live example of income_tax

    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.

    Input parameters for mortgage_penalty
    ParameterTypeRequiredAllowed valuesDescription
    balancenumberYes> 0Outstanding mortgage balance in CAD
    rateTypestringNofixed, variable
    contractRatePctnumberYes≥ 0, ≤ 25Your contract rate as a percent, e.g. 5.25
    monthsRemainingnumberYes≥ 0, ≤ 120Months remaining in the term
    lenderMethodstringNobig-bank, monolineBig 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.
    currentRateForRemainingTermPctnumberNo≥ 0, ≤ 25Monoline method: today's rate for the remaining term (percent). Lender-specific — omit if unknown and the reply will say it was assumed.
    postedAtOriginationPctnumberNo≥ 0, ≤ 25Big-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.
    todaysPostedForClosestTermPctnumberNo≥ 0, ≤ 25Big-bank method: your lender's posted rate today for the closest term. Omit if unknown and the reply will say it was assumed.

    See a live example of mortgage_penalty

    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).

    Input parameters for bc_home_flipping_tax
    ParameterTypeRequiredAllowed valuesDescription
    taxableIncomenumberYesProceeds minus cost to acquire minus cost to improve (may be negative)
    daysHeldnumberYes≥ 0Number of days the property was owned before sale
    isPrimaryResidencebooleanNoLived in it as a primary residence

    See a live example of bc_home_flipping_tax

    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.

    Input parameters for rent_increase
    ParameterTypeRequiredAllowed valuesDescription
    currentRentnumberYes> 0Current monthly rent in CAD
    provincestringYesOntario, British Columbia, Manitoba
    yearstringYesGuideline year, e.g. '2026'. Use the rent_increase tool's supported years if unsure.

    See a live example of rent_increase

    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.

    Input parameters for capital_gains_tax
    ParameterTypeRequiredAllowed valuesDescription
    salePricenumberYes≥ 0Gross sale proceeds in CAD
    purchasePricenumberYes≥ 0Original purchase price in CAD
    provincestringNoOntario, British Columbia, Alberta, Quebec, Manitoba, Saskatchewan, Nova Scotia, New Brunswick, PEI, Newfoundland & Labrador, Northwest Territories, Nunavut, YukonProvince/territory of residence
    annualIncomenumberNo≥ 0Your other annual income in CAD — the gain stacks on top of this
    assetTypestringNoreal-estate, stocks, crypto, business, rental, other
    sellingCostsnumberNo≥ 0Realtor commission, legal fees, and other costs of selling
    buyingCostsnumberNo≥ 0Land transfer tax, legal fees, and other costs of acquiring
    capitalImprovementsnumberNo≥ 0Capital improvements added to the adjusted cost base
    isPrincipalResidencebooleanNoReal estate only: claim the principal residence exemption
    yearsOwnednumberNo≥ 0Years the property was owned (principal-residence proration)
    yearsDesignatednumberNo≥ 0Years designated as your principal residence
    isQSBCbooleanNoBusiness only: qualified small business corporation shares (LCGE)
    lcgeRemainingnumberNo≥ 0Remaining lifetime capital gains exemption room in CAD
    capitalLossesnumberNo≥ 0Prior/current capital losses available to offset the gain
    taxpayerTypestringNoindividual, corporation, trust
    taxYearnumberNo≥ 2020, ≤ 2035Tax year of the disposition
    landValuenumberNo≥ 0Rental only: land portion of the sale price (splits land vs building gain)
    originalBuildingCostnumberNo≥ 0Rental only: original building cost for CCA recapture
    ccaClaimedToDatenumberNo≥ 0Rental only: total CCA claimed to date

    See a live example of capital_gains_tax

    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.

    Input parameters for heloc_second_mortgage
    ParameterTypeRequiredAllowed valuesDescription
    homeValuenumberYes> 0Current market value of the home in CAD
    outstandingFirstMortgagenumberYes≥ 0Balance remaining on the first mortgage in CAD
    amountToBorrownumberYes≥ 0Amount you want to borrow in CAD
    annualHouseholdIncomenumberYes≥ 0Gross annual household income in CAD
    provincestringNoOntario, British Columbia, Alberta, Quebec, Manitoba, Saskatchewan, Nova Scotia, New Brunswick, Newfoundland and Labrador, Prince Edward Island
    existingMonthlyDebtsnumberNo≥ 0Other monthly debt payments (car, cards, loans)
    purposeOfFundsstringNoHome Renovation, Debt Consolidation, Investment Property Down Payment, Education, Emergency Funds, Other
    secondMortgageLenderTierstringNoA, B, PrivateA = bank/credit union, B = trust/MIC, Private = individual investor
    helocPrimeRatePctnumberNo≥ 0, ≤ 25Prime rate as a percent; defaults to the site's current prime
    helocSpreadPctnumberNo≥ 0, ≤ 10Lender spread over prime as a percent, e.g. 0.5
    secondMortgageRatePctnumberNo≥ 0, ≤ 30Second mortgage rate as a percent; defaults to the tier's typical rate
    secondMortgageAmortYearsnumberNo≥ 1, ≤ 30
    secondMortgageTermYearsnumberNo≥ 1, ≤ 10
    extraMonthlyPrincipalnumberNo≥ 0Optional extra principal paid monthly on the HELOC

    See a live example of heloc_second_mortgage

    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.

    Input parameters for mortgage_affordability
    ParameterTypeRequiredAllowed valuesDescription
    annualIncomenumberYes≥ 0Primary applicant gross annual income in CAD
    downPaymentnumberYes≥ 0Down payment — dollars, or a percent if downPaymentMode='percent'
    coApplicantIncomenumberNo≥ 0Co-applicant gross annual income in CAD (0 = none)
    downPaymentModestringNodollar, percent
    monthlyDebtsnumberNo≥ 0Other monthly debt payments (car, cards, student loans)
    annualPropertyTaxnumberNo≥ 0Estimated annual property tax in CAD
    monthlyHeatingnumberNo≥ 0Estimated monthly heating cost in CAD
    propertyTypestringNosingle-family, condo, townhouse
    condoFeesnumberNo≥ 0Monthly condo fees — 50% counts toward GDS/TDS for condos
    provincestringNo
    interestRatePctnumberNo≥ 0, ≤ 25Contract mortgage rate as a percent, e.g. 4.79
    amortizationYearsanyNo

    See a live example of mortgage_affordability

    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.

    Input parameters for cap_rate
    ParameterTypeRequiredAllowed valuesDescription
    purchasePricenumberYes> 0Purchase price in CAD
    monthlyGrossRentnumberYes≥ 0Total gross monthly rent across all units in CAD
    annualOperatingExpensesnumberYes≥ 0Total annual operating expenses in CAD (property tax, insurance, management, maintenance, landlord utilities) — excludes mortgage payments
    downPaymentnumberYes≥ 0Down payment in CAD. Set equal to purchasePrice for an all-cash purchase.
    interestRatePctnumberNo≥ 0, ≤ 25Mortgage rate as a percent, e.g. 5.49
    amortizationYearsnumberNo≥ 1, ≤ 30
    vacancyRatePctnumberNo≥ 0, ≤ 100Vacancy allowance as a percent of gross rent
    citystringNotoronto, vancouver, calgary, edmonton, ottawa, montreal, halifax, winnipeg, hamilton, kitchener-waterloo, otherCity used for the cap-rate benchmark range
    propertyTypestringNosingle-family, multi-unit, commercial, mixed-use

    See a live example of cap_rate

    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.

    Input parameters for house_flipping
    ParameterTypeRequiredAllowed valuesDescription
    purchasePricenumberYes> 0Purchase price in CAD
    afterRepairValuenumberYes> 0Expected resale price after renovation (ARV) in CAD
    renovationCostnumberYes≥ 0Budgeted renovation cost in CAD, before contingency
    provincestringNoOntario, British Columbia, Alberta, Quebec, Manitoba, Saskatchewan, Nova Scotia, New Brunswick, PEI, Newfoundland
    citystringNoCity name — include 'Toronto' to add the Toronto municipal land transfer tax
    contingencyPctnumberNo≥ 0, ≤ 100Renovation contingency as a percent of the renovation budget
    holdingPeriodMonthsnumberNo≥ 0, ≤ 120Months held from purchase to sale — under 12 triggers the CRA flipping rule
    monthlyHoldingCostsnumberNo≥ 0Monthly carrying costs: mortgage interest, property tax, insurance, utilities
    realtorCommissionPctnumberNo≥ 0, ≤ 15Realtor commission on the sale as a percent of ARV
    closingCostsBuynumberNo≥ 0Legal and inspection costs on the purchase, excluding land transfer tax
    closingCostsSellnumberNo≥ 0Legal and staging costs on the sale, excluding commission
    marginalTaxRatePctnumberNo≥ 0, ≤ 60Your combined marginal tax rate as a percent
    isFirstTimeBuyerbooleanNoEligible for the first-time buyer land transfer tax rebate

    See a live example of house_flipping

    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:

    Source URL returned by each example
    Toolsource
    mortgage_paymenthttps://homecalc.ca/tools/mortgage-payment-calculator
    minimum_down_paymenthttps://homecalc.ca/tools/down-payment-calculator
    land_transfer_taxhttps://homecalc.ca/tools/land-transfer-tax-calculator/toronto
    income_taxhttps://homecalc.ca/tools/income-tax-calculator
    mortgage_penaltyhttps://homecalc.ca/tools/mortgage-penalty-calculator
    bc_home_flipping_taxhttps://homecalc.ca/tools/house-flip-tax-calculator/bc
    rent_increasehttps://homecalc.ca/tools/rent-increase-calculator
    capital_gains_taxhttps://homecalc.ca/tools/capital-gains-tax-calculator
    heloc_second_mortgagehttps://homecalc.ca/tools/heloc-second-mortgage-calculator
    mortgage_affordabilityhttps://homecalc.ca/tools/mortgage-affordability-calculator
    cap_ratehttps://homecalc.ca/tools/cap-rate-calculator
    house_flippinghttps://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

    Stay Ahead of the Market

    Get weekly insights on rates, market trends, and smarter homebuying decisions.

    No spam. Unsubscribe anytime.