Deterministic Canadian mortgage calculations for qualification, debt service, LTV, and penalties.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Calculates Canadian GDS and TDS ratios from a monthly mortgage payment that is already known, plus income, housing costs, and other monthly debts. It takes the payment as given and needs no principal, rate, or amortization. Ratios are not an approval or suitability decision. Works only from explicit, non-identifying numbers in the request. Returns calculations only: no approval, underwriting, or suitability decisions, no lender or product recommendations, and no values looked up from chats, files, accounts, documents, or the web.
Date the supplied rates and policy assumptions were confirmed.
Monthly mortgage principal-and-interest payment in Canadian dollars.
Gross annual household income in Canadian dollars.
Canadian calculations only.
Total other monthly debt obligations in Canadian dollars.
Calculates Canadian GDS and TDS ratios from a monthly mortgage payment that is already known, plus income, housing costs, and other monthly debts. It takes the payment as given and needs no principal, rate, or amortization. Ratios are not an approval or suitability decision. Works only from explicit, non-identifying numbers in the request. Returns calculations only: no approval, underwriting, or suitability decisions, no lender or product recommendations, and no values looked up from chats, files, accounts, documents, or the web.
| Argument | Type | Description |
|---|---|---|
| housing | object | |
| tolerances | object | |
| jurisdiction | string | Canadian calculations only. |
| effectiveDate* | string | Date the supplied rates and policy assumptions were confirmed. |
| monthlyPayment* | number | Monthly mortgage principal-and-interest payment in Canadian dollars. |
| grossAnnualIncome* | number | Gross annual household income in Canadian dollars. |
| otherMonthlyDebts | number | Total other monthly debt obligations in Canadian dollars. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"effectiveDate",
"grossAnnualIncome",
"monthlyPayment"
],
"properties": {
"housing": {
"type": "object",
"properties": {
"monthlyHeat": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Monthly heating cost in Canadian dollars."
},
"monthlyCondoFees": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Monthly condominium fees in Canadian dollars."
},
"monthlyPropertyTax": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Monthly property-tax amount in Canadian dollars."
}
},
"additionalProperties": false
},
"tolerances": {
"type": "object",
"required": [
"gdsMax",
"tdsMax"
],
"properties": {
"label": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"gdsMax": {
"type": "number",
"maximum": 1,
"description": "Maximum GDS ratio as a decimal; for example, 39% is 0.39.",
"exclusiveMinimum": 0
},
"tdsMax": {
"type": "number",
"maximum": 1,
"description": "Maximum TDS ratio as a decimal; for example, 44% is 0.44.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"jurisdiction": {
"type": "string",
"const": "CA",
"default": "CA",
"description": "Canadian calculations only."
},
"effectiveDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date the supplied rates and policy assumptions were confirmed."
},
"monthlyPayment": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Monthly mortgage principal-and-interest payment in Canadian dollars.",
"exclusiveMinimum": 0
},
"grossAnnualIncome": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Gross annual household income in Canadian dollars.",
"exclusiveMinimum": 0
},
"otherMonthlyDebts": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Total other monthly debt obligations in Canadian dollars."
}
},
"additionalProperties": false
}Calculates Canadian loan-to-value and combined loan-to-value from the loan amount, other secured positions, and a purchase price, an appraised value, or both. Ratios are not an approval or suitability decision. Works only from explicit, non-identifying numbers in the request. Returns calculations only: no approval, underwriting, or suitability decisions, no lender or product recommendations, and no values looked up from chats, files, accounts, documents, or the web.
| Argument | Type | Description |
|---|---|---|
| storedLtv | number | Optional previously stored LTV ratio as a decimal; for example, 75% is 0.75. |
| loanAmount* | number | New mortgage or loan amount in Canadian dollars. |
| valueBasis | string | |
| jurisdiction | string | Canadian calculations only. |
| effectiveDate* | string | Date the supplied rates and policy assumptions were confirmed. |
| purchasePrice | number | Property purchase price in Canadian dollars. |
| appraisedValue | number | Property appraised value in Canadian dollars. |
Calculates the B-20 qualifying rate, the qualifying payment, and the resulting GDS/TDS from a principal, contract rate, amortization, and income. It computes the payment itself, so it needs those loan terms. Results are neutral scenario math, not an approval or underwriting decision. Works only from explicit, non-identifying numbers in the request. Returns calculations only: no approval, underwriting, or suitability decisions, no lender or product recommendations, and no values looked up from chats, files, accounts, documents, or the web.
| Argument | Type | Description |
|---|---|---|
| housing | object | |
| floorRate | number | Optional minimum qualification rate. Omit it to use the disclosed default. Supply the annual rate as a decimal; for example, 5.25% is 0.0525. |
| principal* | number | Mortgage principal in Canadian dollars. |
| bufferRate | number | Optional stress-test buffer added to the contract rate. Omit it to use the disclosed default. Supply the annual rate as a decimal; for example, 5.25% is 0.0525. |
| tolerances | object | |
| contractRate* | number | Contract rate for the mortgage. Supply the annual rate as a decimal; for example, 5.25% is 0.0525. |
Compares up to six Canadian fixed-rate payment and amortization scenarios using deterministic calculations. Works only from explicit, non-identifying numbers in the request. Returns calculations only: no approval, underwriting, or suitability decisions, no lender or product recommendations, and no values looked up from chats, files, accounts, documents, or the web.
| Argument | Type | Description |
|---|---|---|
| scenarios* | array | |
| jurisdiction | string | Canadian calculations only. |
| effectiveDate* | string | Date the supplied rates and policy assumptions were confirmed. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"effectiveDate",
"scenarios"
],
"properties": {
"scenarios": {
"type": "array",
"items": {
"type": "object",
"required": [
"name",
"principal",
"annualRate",
"amortizationMonths",
"paymentFrequency"
],
"properties": {
"name": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"principal": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Mortgage principal in Canadian dollars.",
"exclusiveMinimum": 0
},
"annualRate": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Contract rate for this mortgage scenario. Supply the annual rate as a decimal; for example, 5.25% is 0.0525."
},
"termMonths": {
"type": "integer",
"maximum": 600,
"minimum": 1,
"description": "Mortgage term in months."
},
"paymentFrequency": {
"enum": [
"monthly",
"semi_monthly",
"biweekly",
"weekly",
"accelerated_biweekly",
"accelerated_weekly"
],
"type": "string"
},
"amortizationMonths": {
"type": "integer",
"maximum": 600,
"minimum": 1,
"description": "Mortgage amortization period in months."
},
"propertyTaxPerPayment": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Optional property-tax amount in Canadian dollars for each payment period."
},
"comparisonPrincipalAndInterestPayment": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Optional principal-and-interest payment in Canadian dollars for the same payment period, used only as a comparison value."
}
},
"additionalProperties": false
},
"maxItems": 6,
"minItems": 1
},
"jurisdiction": {
"type": "string",
"const": "CA",
"default": "CA",
"description": "Canadian calculations only."
},
"effectiveDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date the supplied rates and policy assumptions were confirmed."
}
},
"additionalProperties": false
}Estimates three-months-interest and simplified interest-rate-differential prepayment penalties. Lender discharge statements remain authoritative. Works only from explicit, non-identifying numbers in the request. Returns calculations only: no approval, underwriting, or suitability decisions, no lender or product recommendations, and no values looked up from chats, files, accounts, documents, or the web.
| Argument | Type | Description |
|---|---|---|
| method | string | |
| principal* | number | Outstanding mortgage balance in Canadian dollars. |
| annualRate* | number | Current annual mortgage rate. Supply the annual rate as a decimal; for example, 5.25% is 0.0525. |
| jurisdiction | string | Canadian calculations only. |
| effectiveDate* | string | Date the supplied rates and policy assumptions were confirmed. |
| comparisonRate | number | Annual comparison or reference rate used for the simplified interest-rate-differential estimate. Supply the annual rate as a decimal; for example, 5.25% is 0.0525. |
| remainingTermMonths |
Returns a fixed explanation that a request is outside this calculator's scope, with a calculation it can do instead. Categories: approval or underwriting decisions, lender or product recommendations, borrower documents or accounts, current rates, rules, or thresholds, external actions such as submitting applications or contacting anyone, and other unsupported requests. Takes only the category; it accepts no request text, names, identifiers, or document content.
| Argument | Type | Description |
|---|---|---|
| requestType* | string | Category of unsupported request. Only the category is accepted, never user, borrower, account, or document data. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"requestType"
],
"properties": {
"requestType": {
"enum": [
"approval_or_underwriting",
"lender_or_product_recommendation",
"borrower_document_or_account",
"current_rate_rule_or_threshold",
"external_action",
"other_unsupported"
],
"type": "string",
"description": "Category of unsupported request. Only the category is accepted, never user, borrower, account, or document data."
}
},
"additionalProperties": false
}| otherSecuredPositions |
| array |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"effectiveDate",
"loanAmount"
],
"properties": {
"storedLtv": {
"type": "number",
"maximum": 5,
"minimum": 0,
"description": "Optional previously stored LTV ratio as a decimal; for example, 75% is 0.75."
},
"loanAmount": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "New mortgage or loan amount in Canadian dollars.",
"exclusiveMinimum": 0
},
"valueBasis": {
"enum": [
"lesser_of",
"appraised",
"purchase"
],
"type": "string"
},
"jurisdiction": {
"type": "string",
"const": "CA",
"default": "CA",
"description": "Canadian calculations only."
},
"effectiveDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date the supplied rates and policy assumptions were confirmed."
},
"purchasePrice": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Property purchase price in Canadian dollars.",
"exclusiveMinimum": 0
},
"appraisedValue": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Property appraised value in Canadian dollars.",
"exclusiveMinimum": 0
},
"otherSecuredPositions": {
"type": "array",
"items": {
"type": "object",
"required": [
"amount"
],
"properties": {
"label": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"amount": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Balance of this other secured position in Canadian dollars."
}
},
"additionalProperties": false
},
"maxItems": 20
}
},
"additionalProperties": false
}| jurisdiction | string | Canadian calculations only. |
| effectiveDate* | string | Date the supplied rates and policy assumptions were confirmed. |
| grossAnnualIncome* | number | Gross annual household income in Canadian dollars. |
| otherMonthlyDebts | number | Total monthly debt obligations outside the housing costs in Canadian dollars. |
| amortizationMonths* | integer | Mortgage amortization period in months. |
| straightSwitchExempt | boolean |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"effectiveDate",
"principal",
"contractRate",
"amortizationMonths",
"grossAnnualIncome"
],
"properties": {
"housing": {
"type": "object",
"properties": {
"monthlyHeat": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Monthly heating cost in Canadian dollars."
},
"monthlyCondoFees": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Monthly condominium fees in Canadian dollars."
},
"monthlyPropertyTax": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Monthly property-tax amount in Canadian dollars."
}
},
"additionalProperties": false
},
"floorRate": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Optional minimum qualification rate. Omit it to use the disclosed default. Supply the annual rate as a decimal; for example, 5.25% is 0.0525."
},
"principal": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Mortgage principal in Canadian dollars.",
"exclusiveMinimum": 0
},
"bufferRate": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Optional stress-test buffer added to the contract rate. Omit it to use the disclosed default. Supply the annual rate as a decimal; for example, 5.25% is 0.0525."
},
"tolerances": {
"type": "object",
"required": [
"gdsMax",
"tdsMax"
],
"properties": {
"label": {
"type": "string",
"maxLength": 80,
"minLength": 1
},
"gdsMax": {
"type": "number",
"maximum": 1,
"description": "Maximum GDS ratio as a decimal; for example, 39% is 0.39.",
"exclusiveMinimum": 0
},
"tdsMax": {
"type": "number",
"maximum": 1,
"description": "Maximum TDS ratio as a decimal; for example, 44% is 0.44.",
"exclusiveMinimum": 0
}
},
"additionalProperties": false
},
"contractRate": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Contract rate for the mortgage. Supply the annual rate as a decimal; for example, 5.25% is 0.0525."
},
"jurisdiction": {
"type": "string",
"const": "CA",
"default": "CA",
"description": "Canadian calculations only."
},
"effectiveDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date the supplied rates and policy assumptions were confirmed."
},
"grossAnnualIncome": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Gross annual household income in Canadian dollars.",
"exclusiveMinimum": 0
},
"otherMonthlyDebts": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Total monthly debt obligations outside the housing costs in Canadian dollars."
},
"amortizationMonths": {
"type": "integer",
"maximum": 600,
"minimum": 1,
"description": "Mortgage amortization period in months."
},
"straightSwitchExempt": {
"type": "boolean"
}
},
"additionalProperties": false
}| integer |
| Number of months remaining in the mortgage term. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"effectiveDate",
"principal",
"annualRate",
"remainingTermMonths"
],
"properties": {
"method": {
"enum": [
"greater_of_3mo_interest_ird",
"three_months_interest",
"interest_rate_differential"
],
"type": "string"
},
"principal": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Outstanding mortgage balance in Canadian dollars.",
"exclusiveMinimum": 0
},
"annualRate": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Current annual mortgage rate. Supply the annual rate as a decimal; for example, 5.25% is 0.0525."
},
"jurisdiction": {
"type": "string",
"const": "CA",
"default": "CA",
"description": "Canadian calculations only."
},
"effectiveDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Date the supplied rates and policy assumptions were confirmed."
},
"comparisonRate": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Annual comparison or reference rate used for the simplified interest-rate-differential estimate. Supply the annual rate as a decimal; for example, 5.25% is 0.0525."
},
"remainingTermMonths": {
"type": "integer",
"maximum": 600,
"minimum": 1,
"description": "Number of months remaining in the mortgage term."
}
},
"additionalProperties": false
}