Home loan EMI, affordability, balance transfer, down payment, rent vs buy calculators.
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.
Takes the outstanding balance, months left, current and new rates and a fee and returns both EMIs, the net saving and the break-even months of a balance transfer. Example input: {"outstanding":4000000,"remainingMonths":180,"currentRate":9.25,"newRate":8.4,"processingFee":20000}
New lender annual rate in percent
Current annual rate in percent
Outstanding loan balance in rupees
Months left on the current loan
One-time transfer fee in rupees (default 0)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
claude mcp add --transport http homes-loan-calculator https://homesloancalculator.in/mcp
Takes the outstanding balance, months left, current and new rates and a fee and returns both EMIs, the net saving and the break-even months of a balance transfer. Example input: {"outstanding":4000000,"remainingMonths":180,"currentRate":9.25,"newRate":8.4,"processingFee":20000}
| Argument | Type | Description |
|---|---|---|
| newRate* | number | New lender annual rate in percent |
| currentRate* | number | Current annual rate in percent |
| outstanding* | number | Outstanding loan balance in rupees |
| processingFee | number | One-time transfer fee in rupees (default 0) |
| remainingMonths* | integer | Months left on the current loan |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"outstanding",
"remainingMonths",
"currentRate",
"newRate"
],
"properties": {
"newRate": {
"type": "number",
"maximum": 30,
"minimum": 0.1,
"description": "New lender annual rate in percent"
},
"currentRate": {
"type": "number",
"maximum": 30,
"minimum": 0.1,
"description": "Current annual rate in percent"
},
"outstanding": {
"type": "number",
"description": "Outstanding loan balance in rupees",
"exclusiveMinimum": 0
},
"processingFee": {
"type": "number",
"minimum": 0,
"description": "One-time transfer fee in rupees (default 0)"
},
"remainingMonths": {
"type": "integer",
"maximum": 480,
"minimum": 1,
"description": "Months left on the current loan"
}
}
}Takes a property price and returns the loan-to-value ratio, maximum loan, minimum down payment and approximate stamp duty plus registration. Example input: {"price":7500000}
| Argument | Type | Description |
|---|---|---|
| price* | number | Property price in rupees |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"price"
],
"properties": {
"price": {
"type": "number",
"description": "Property price in rupees",
"exclusiveMinimum": 0
}
}
}Takes net monthly income, existing EMIs, annual rate and tenure and returns the maximum EMI and home loan amount a borrower qualifies for. Example input: {"netMonthlyIncome":150000,"existingEmis":10000,"annualRate":8.5,"years":20}
| Argument | Type | Description |
|---|---|---|
| foir | number | Share of income a bank lets all EMIs take, 0.1 to 1 (default 0.5) |
| years | number | Loan tenure in years (0.5 to 40). Give months or years. |
| months | integer | Loan tenure in months (6 to 480). Give months or years. |
| annualRate* | number | Annual interest rate in percent, for example 8.5 |
| existingEmis | number | Total EMIs already paid each month in rupees (default 0) |
| netMonthlyIncome* | number | Net monthly take-home income in rupees |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"netMonthlyIncome",
"annualRate"
],
"properties": {
"foir": {
"type": "number",
"maximum": 1,
"minimum": 0.1,
"description": "Share of income a bank lets all EMIs take, 0.1 to 1 (default 0.5)"
},
"years": {
"type": "number",
"maximum": 40,
"minimum": 0.5,
"description": "Loan tenure in years (0.5 to 40). Give months or years."
},
"months": {
"type": "integer",
"maximum": 480,
"minimum": 6,
"description": "Loan tenure in months (6 to 480). Give months or years."
},
"annualRate": {
"type": "number",
"maximum": 30,
"minimum": 0.1,
"description": "Annual interest rate in percent, for example 8.5"
},
"existingEmis": {
"type": "number",
"minimum": 0,
"description": "Total EMIs already paid each month in rupees (default 0)"
},
"netMonthlyIncome": {
"type": "number",
"description": "Net monthly take-home income in rupees",
"exclusiveMinimum": 0
}
}
}Takes a loan amount, annual rate and tenure, plus optional prepayments or a rate change, and returns the monthly EMI, total interest and year-by-year schedule for an Indian home loan. Example input: {"principal":5000000,"annualRate":8.5,"years":20}
| Argument | Type | Description |
|---|---|---|
| mode | string | What prepayment shortens: reduceTenure (default) or reduceEMI |
| years | number | Loan tenure in years (0.5 to 40). Give months or years. |
| months | integer | Loan tenure in months (6 to 480). Give months or years. |
| monthly | boolean | Set true to include the month-by-month schedule in the result |
| lumpSums | array | One-time prepayments as a list of { month, amount }, or a string like "12:100000,24:50000" |
| principal* | number | Loan amount in rupees |
| rateReset | object | A floating-rate change part-way through the loan |
| annualRate* | number | Annual interest rate in percent, for example 8.5 |
| extraMonthly | number |
Takes rent, price, down payment, loan terms and growth assumptions and returns the year-by-year net worth of buying against renting, with the break-even year. Example input: {"rent":30000,"rentGrowth":5,"price":8000000,"downPayment":1600000,"annualRate":8.5,"months":240,"appreciation":5,"investReturn":10,"years":20}
| Argument | Type | Description |
|---|---|---|
| rent* | number | Current monthly rent in rupees |
| price* | number | Property price in rupees |
| years* | integer | Years to compare over |
| months* | integer | Loan tenure in months |
| annualRate* | number | Annual interest rate in percent, for example 8.5 |
| rentGrowth* | number | Yearly rent increase in percent |
| downPayment* | number | Down payment in rupees |
| appreciation* | number | Yearly property price growth in percent |
Takes a loan amount, annual rate and tenure and returns how the EMI and total interest change when the rate moves up or down by small steps. Example input: {"principal":5000000,"annualRate":8.5,"years":20}
| Argument | Type | Description |
|---|---|---|
| years | number | Loan tenure in years (0.5 to 40). Give months or years. |
| deltas | array | Rate changes in percentage points to test, for example [-1, -0.5, 0.5, 1] |
| months | integer | Loan tenure in months (6 to 480). Give months or years. |
| principal* | number | Loan amount in rupees |
| annualRate* | number | Annual interest rate in percent, for example 8.5 |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"principal",
"annualRate"
],
"properties": {
"years": {
"type": "number",
"maximum": 40,
"minimum": 0.5,
"description": "Loan tenure in years (0.5 to 40). Give months or years."
},
"deltas": {
"type": "array",
"items": {
"type": "number"
},
"description": "Rate changes in percentage points to test, for example [-1, -0.5, 0.5, 1]"
},
"months": {
"type": "integer",
"maximum": 480,
"minimum": 6,
"description": "Loan tenure in months (6 to 480). Give months or years."
},
"principal": {
"type": "number",
"maximum": 1000000000,
"minimum": 100000,
"description": "Loan amount in rupees"
},
"annualRate": {
"type": "number",
"maximum": 30,
"minimum": 0.1,
"description": "Annual interest rate in percent, for example 8.5"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Oct 30, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.
| Extra rupees prepaid every month |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"principal",
"annualRate"
],
"properties": {
"mode": {
"enum": [
"reduceTenure",
"reduceEMI"
],
"type": "string",
"description": "What prepayment shortens: reduceTenure (default) or reduceEMI"
},
"years": {
"type": "number",
"maximum": 40,
"minimum": 0.5,
"description": "Loan tenure in years (0.5 to 40). Give months or years."
},
"months": {
"type": "integer",
"maximum": 480,
"minimum": 6,
"description": "Loan tenure in months (6 to 480). Give months or years."
},
"monthly": {
"type": "boolean",
"description": "Set true to include the month-by-month schedule in the result"
},
"lumpSums": {
"type": "array",
"items": {
"type": "object",
"required": [
"month",
"amount"
],
"properties": {
"month": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1
},
"amount": {
"type": "number",
"exclusiveMinimum": 0
}
}
},
"description": "One-time prepayments as a list of { month, amount }, or a string like \"12:100000,24:50000\""
},
"principal": {
"type": "number",
"maximum": 1000000000,
"minimum": 100000,
"description": "Loan amount in rupees"
},
"rateReset": {
"type": "object",
"required": [
"afterMonth",
"newRate"
],
"properties": {
"mode": {
"enum": [
"reduceTenure",
"reduceEMI"
],
"type": "string",
"description": "reduceTenure (default) or reduceEMI"
},
"newRate": {
"type": "number",
"maximum": 30,
"minimum": 0.1,
"description": "New annual rate in percent"
},
"afterMonth": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "Month after which the new rate applies"
}
},
"description": "A floating-rate change part-way through the loan"
},
"annualRate": {
"type": "number",
"maximum": 30,
"minimum": 0.1,
"description": "Annual interest rate in percent, for example 8.5"
},
"extraMonthly": {
"type": "number",
"minimum": 0,
"description": "Extra rupees prepaid every month"
}
}
}| investReturn* |
| number |
| Yearly return in percent if the down payment is invested instead |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"rent",
"rentGrowth",
"price",
"downPayment",
"annualRate",
"months",
"appreciation",
"investReturn",
"years"
],
"properties": {
"rent": {
"type": "number",
"minimum": 0,
"description": "Current monthly rent in rupees"
},
"price": {
"type": "number",
"description": "Property price in rupees",
"exclusiveMinimum": 0
},
"years": {
"type": "integer",
"maximum": 40,
"minimum": 1,
"description": "Years to compare over"
},
"months": {
"type": "integer",
"maximum": 480,
"minimum": 6,
"description": "Loan tenure in months"
},
"annualRate": {
"type": "number",
"maximum": 30,
"minimum": 0.1,
"description": "Annual interest rate in percent, for example 8.5"
},
"rentGrowth": {
"type": "number",
"maximum": 30,
"minimum": 0,
"description": "Yearly rent increase in percent"
},
"downPayment": {
"type": "number",
"minimum": 0,
"description": "Down payment in rupees"
},
"appreciation": {
"type": "number",
"maximum": 30,
"minimum": -20,
"description": "Yearly property price growth in percent"
},
"investReturn": {
"type": "number",
"maximum": 40,
"minimum": 0,
"description": "Yearly return in percent if the down payment is invested instead"
}
}
}