
Compare renting and buying a home over 30 years: scenarios, side-by-side comparisons, rent sweeps.
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.
Runs 2 to 10 named scenarios side by side and returns each one's winner, year-30 net worth for both households, break-even year and year-1 cash, plus deltas against the first scenario. Each scenario is an independent set of input overrides and one-time costs on top of the site defaults, so name them by what changes ("15-year loan", "rent $4,500"). One call replaces many rentbuy_run_scenario calls.
Runs 2 to 10 named scenarios side by side and returns each one's winner, year-30 net worth for both households, break-even year and year-1 cash, plus deltas against the first scenario. Each scenario is an independent set of input overrides and one-time costs on top of the site defaults, so name them by what changes ("15-year loan", "rent $4,500"). One call replaces many rentbuy_run_scenario calls.
| Argument | Type | Description |
|---|---|---|
| scenarios* | array |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"scenarios"
],
"properties": {
"scenarios": {
"type": "array",
"items": {
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 40,
"minLength": 1
},
"inputs": {
"type": "object",
"properties": {
"hoa": {
"type": "number",
"maximum": 20000,
"minimum": 0,
"description": "HOA dues, held flat. Unit: USD per month. Default: 0."
},
"homePrice": {
"type": "number",
"maximum": 50000000,
"minimum": 10000,
"description": "Purchase price of the home. Unit: USD. Default: 800000."
},
"downPayment": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Down payment as a percentage of the price (20 = 20%). Unit: % of price. Default: 20."
},
"monthlyRent": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Rent for a comparable home in year 1. Unit: USD per month. Default: 3500."
},
"renovations": {
"type": "number",
"maximum": 5000000,
"minimum": 0,
"description": "One-time renovation spending at purchase; it does not add to the home value. Unit: USD. Default: 0."
},
"closingCosts": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "One-time closing costs paid at purchase. Unit: USD. Default: 20000."
},
"filingStatus": {
"enum": [
"single",
"marriedJoint",
"headOfHousehold"
],
"type": "string",
"description": "Federal filing status used to pre-fill the tax inputs. Unit: enum. Default: marriedJoint."
},
"mortgageRate": {
"type": "number",
"maximum": 30,
"minimum": 0,
"description": "Mortgage interest rate (6.5 = 6.5%). Unit: % per year. Default: 6.5."
},
"mortgageTerm": {
"type": "integer",
"maximum": 40,
"minimum": 1,
"description": "Loan term in years. The analysis horizon is always 30 years. Unit: years. Default: 30."
},
"mortgageType": {
"enum": [
"amortizing",
"interestOnly"
],
"type": "string",
"description": "'amortizing' pays principal and interest; 'interestOnly' pays interest only for interestOnlyPeriod years, then amortizes the balance over the remaining term (a balloon if the period covers the whole term). Unit: enum. Default: amortizing."
},
"sellingCosts": {
"type": "number",
"maximum": 20,
"minimum": 0,
"description": "Selling costs subtracted from the headline buy result at year 30. Unit: % of sale price. Default: 6."
},
"stateTaxRate": {
"type": "number",
"maximum": 30,
"minimum": 0,
"description": "State marginal rate applied the same way. Unit: %. Default: 5."
},
"adjustedValue": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Home value to use in adjustmentYear; 0 disables the adjustment. Unit: USD. Default: 0."
},
"homeInsurance": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Homeowner insurance premium, held flat. Unit: USD per year. Default: 2400."
},
"adjustmentYear": {
"type": "integer",
"maximum": 30,
"minimum": 0,
"description": "Year in which the home value is reset to adjustedValue; 0 disables it. Unit: year (0 = none). Default: 0."
},
"federalTaxRate": {
"type": "number",
"maximum": 60,
"minimum": 0,
"description": "Federal marginal rate applied to itemized deductions above the standard deduction. Unit: %. Default: 22."
},
"householdIncome": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Household income; with filingStatus it pre-fills federalTaxRate and standardDeduction unless those are given explicitly. Unit: USD per year. Default: 200000."
},
"maintenanceRate": {
"type": "number",
"maximum": 10,
"minimum": 0,
"description": "Maintenance as a percentage of the current home value. Unit: % of home value per year. Default: 1."
},
"propertyTaxRate": {
"type": "number",
"maximum": 10,
"minimum": 0,
"description": "Property tax as a percentage of the current home value. Unit: % of home value per year. Default: 1.25."
},
"appreciationRate": {
"type": "number",
"maximum": 30,
"minimum": -20,
"description": "Annual home value appreciation (3 = 3%). Unit: % per year. Default: 3."
},
"investmentReturn": {
"type": "number",
"maximum": 30,
"minimum": -20,
"description": "Effective annual return on invested savings for both households (7 = 7%). Unit: % per year (effective annual). Default: 7."
},
"rentIncreaseRate": {
"type": "number",
"maximum": 30,
"minimum": -10,
"description": "Annual rent growth (3 = 3%). Unit: % per year. Default: 3."
},
"rentersInsurance": {
"type": "number",
"maximum": 20000,
"minimum": 0,
"description": "Renter insurance; it grows with rent. Unit: USD per year. Default: 300."
},
"standardDeduction": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Standard deduction the itemized deductions must exceed to save tax. Unit: USD. Default: 32200."
},
"interestOnlyPeriod": {
"type": "integer",
"maximum": 40,
"minimum": 0,
"description": "Interest-only years; only used when mortgageType is interestOnly. Unit: years. Default: 10."
}
},
"description": "Any subset of the inputs; missing fields use the rentbuy.org defaults. Money in USD, rates in percent points.",
"additionalProperties": false
},
"oneTimeCosts": {
"type": "array",
"items": {
"type": "object",
"required": [
"year",
"amount",
"appliesTo"
],
"properties": {
"year": {
"type": "integer",
"maximum": 30,
"minimum": 1,
"description": "Year of the cost, 1 to 30."
},
"amount": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Amount in USD."
},
"reason": {
"type": "string",
"maxLength": 80,
"description": "Label, e.g. \"New roof\"."
},
"appliesTo": {
"enum": [
"buy",
"both"
],
"type": "string",
"description": "'buy' = a house expense only the buyer pays (the renter invests that amount); 'both' = a general expense both households pay from their investments."
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "Up to 20 one-time costs."
}
},
"additionalProperties": false
},
"maxItems": 10,
"minItems": 2
}
},
"additionalProperties": false
}Opens an interactive rent-vs-buy calculator with editable inputs, net-worth charts, a year-by-year report and Monte Carlo sensitivity analysis. Use when the user wants to see or adjust a scenario. Pass the inputs and one-time costs from the scenario being discussed; missing inputs use the site defaults. rentbuy_run_scenario shows the same result card for a single scenario; rentbuy_compare_scenarios and rentbuy_sweep return data only.
| Argument | Type | Description |
|---|---|---|
| inputs | object | Any subset of the inputs; missing fields use the rentbuy.org defaults. Money in USD, rates in percent points. |
| oneTimeCosts | array | Up to 20 one-time costs. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"inputs": {
"type": "object",
"properties": {
"hoa": {
"type": "number",
"maximum": 20000,
"minimum": 0,
"description": "HOA dues, held flat. Unit: USD per month. Default: 0."
},
"homePrice": {
"type": "number",
"maximum": 50000000,
"minimum": 10000,
"description": "Purchase price of the home. Unit: USD. Default: 800000."
},
"downPayment": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Down payment as a percentage of the price (20 = 20%). Unit: % of price. Default: 20."
},
"monthlyRent": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Rent for a comparable home in year 1. Unit: USD per month. Default: 3500."
},
"renovations": {
"type": "number",
"maximum": 5000000,
"minimum": 0,
"description": "One-time renovation spending at purchase; it does not add to the home value. Unit: USD. Default: 0."
},
"closingCosts": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "One-time closing costs paid at purchase. Unit: USD. Default: 20000."
},
"filingStatus": {
"enum": [
"single",
"marriedJoint",
"headOfHousehold"
],
"type": "string",
"description": "Federal filing status used to pre-fill the tax inputs. Unit: enum. Default: marriedJoint."
},
"mortgageRate": {
"type": "number",
"maximum": 30,
"minimum": 0,
"description": "Mortgage interest rate (6.5 = 6.5%). Unit: % per year. Default: 6.5."
},
"mortgageTerm": {
"type": "integer",
"maximum": 40,
"minimum": 1,
"description": "Loan term in years. The analysis horizon is always 30 years. Unit: years. Default: 30."
},
"mortgageType": {
"enum": [
"amortizing",
"interestOnly"
],
"type": "string",
"description": "'amortizing' pays principal and interest; 'interestOnly' pays interest only for interestOnlyPeriod years, then amortizes the balance over the remaining term (a balloon if the period covers the whole term). Unit: enum. Default: amortizing."
},
"sellingCosts": {
"type": "number",
"maximum": 20,
"minimum": 0,
"description": "Selling costs subtracted from the headline buy result at year 30. Unit: % of sale price. Default: 6."
},
"stateTaxRate": {
"type": "number",
"maximum": 30,
"minimum": 0,
"description": "State marginal rate applied the same way. Unit: %. Default: 5."
},
"adjustedValue": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Home value to use in adjustmentYear; 0 disables the adjustment. Unit: USD. Default: 0."
},
"homeInsurance": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Homeowner insurance premium, held flat. Unit: USD per year. Default: 2400."
},
"adjustmentYear": {
"type": "integer",
"maximum": 30,
"minimum": 0,
"description": "Year in which the home value is reset to adjustedValue; 0 disables it. Unit: year (0 = none). Default: 0."
},
"federalTaxRate": {
"type": "number",
"maximum": 60,
"minimum": 0,
"description": "Federal marginal rate applied to itemized deductions above the standard deduction. Unit: %. Default: 22."
},
"householdIncome": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Household income; with filingStatus it pre-fills federalTaxRate and standardDeduction unless those are given explicitly. Unit: USD per year. Default: 200000."
},
"maintenanceRate": {
"type": "number",
"maximum": 10,
"minimum": 0,
"description": "Maintenance as a percentage of the current home value. Unit: % of home value per year. Default: 1."
},
"propertyTaxRate": {
"type": "number",
"maximum": 10,
"minimum": 0,
"description": "Property tax as a percentage of the current home value. Unit: % of home value per year. Default: 1.25."
},
"appreciationRate": {
"type": "number",
"maximum": 30,
"minimum": -20,
"description": "Annual home value appreciation (3 = 3%). Unit: % per year. Default: 3."
},
"investmentReturn": {
"type": "number",
"maximum": 30,
"minimum": -20,
"description": "Effective annual return on invested savings for both households (7 = 7%). Unit: % per year (effective annual). Default: 7."
},
"rentIncreaseRate": {
"type": "number",
"maximum": 30,
"minimum": -10,
"description": "Annual rent growth (3 = 3%). Unit: % per year. Default: 3."
},
"rentersInsurance": {
"type": "number",
"maximum": 20000,
"minimum": 0,
"description": "Renter insurance; it grows with rent. Unit: USD per year. Default: 300."
},
"standardDeduction": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Standard deduction the itemized deductions must exceed to save tax. Unit: USD. Default: 32200."
},
"interestOnlyPeriod": {
"type": "integer",
"maximum": 40,
"minimum": 0,
"description": "Interest-only years; only used when mortgageType is interestOnly. Unit: years. Default: 10."
}
},
"description": "Any subset of the inputs; missing fields use the rentbuy.org defaults. Money in USD, rates in percent points.",
"additionalProperties": false
},
"oneTimeCosts": {
"type": "array",
"items": {
"type": "object",
"required": [
"year",
"amount",
"appliesTo"
],
"properties": {
"year": {
"type": "integer",
"maximum": 30,
"minimum": 1,
"description": "Year of the cost, 1 to 30."
},
"amount": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Amount in USD."
},
"reason": {
"type": "string",
"maxLength": 80,
"description": "Label, e.g. \"New roof\"."
},
"appliesTo": {
"enum": [
"buy",
"both"
],
"type": "string",
"description": "'buy' = a house expense only the buyer pays (the renter invests that amount); 'both' = a general expense both households pay from their investments."
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "Up to 20 one-time costs."
}
},
"additionalProperties": false
}Runs one 30-year rent-vs-buy comparison with the rentbuy.org model and returns the winner, the net worth of both households at year 30, the break-even year, totals, year-1 monthly cash and the fully resolved inputs. Hosts that support MCP Apps also show the result card. Give only the inputs you want to change; everything else uses the site defaults. Set detail to "yearly" to also get the 30 year-by-year rows. Use rentbuy_compare_scenarios or rentbuy_sweep instead of calling this repeatedly.
| Argument | Type | Description |
|---|---|---|
| detail | string | "summary" (default) or "yearly" for the 30 annual rows. |
| inputs | object | Any subset of the inputs; missing fields use the rentbuy.org defaults. Money in USD, rates in percent points. |
| oneTimeCosts | array | Up to 20 one-time costs. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"detail": {
"enum": [
"summary",
"yearly"
],
"type": "string",
"description": "\"summary\" (default) or \"yearly\" for the 30 annual rows."
},
"inputs": {
"type": "object",
"properties": {
"hoa": {
"type": "number",
"maximum": 20000,
"minimum": 0,
"description": "HOA dues, held flat. Unit: USD per month. Default: 0."
},
"homePrice": {
"type": "number",
"maximum": 50000000,
"minimum": 10000,
"description": "Purchase price of the home. Unit: USD. Default: 800000."
},
"downPayment": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Down payment as a percentage of the price (20 = 20%). Unit: % of price. Default: 20."
},
"monthlyRent": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Rent for a comparable home in year 1. Unit: USD per month. Default: 3500."
},
"renovations": {
"type": "number",
"maximum": 5000000,
"minimum": 0,
"description": "One-time renovation spending at purchase; it does not add to the home value. Unit: USD. Default: 0."
},
"closingCosts": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "One-time closing costs paid at purchase. Unit: USD. Default: 20000."
},
"filingStatus": {
"enum": [
"single",
"marriedJoint",
"headOfHousehold"
],
"type": "string",
"description": "Federal filing status used to pre-fill the tax inputs. Unit: enum. Default: marriedJoint."
},
"mortgageRate": {
"type": "number",
"maximum": 30,
"minimum": 0,
"description": "Mortgage interest rate (6.5 = 6.5%). Unit: % per year. Default: 6.5."
},
"mortgageTerm": {
"type": "integer",
"maximum": 40,
"minimum": 1,
"description": "Loan term in years. The analysis horizon is always 30 years. Unit: years. Default: 30."
},
"mortgageType": {
"enum": [
"amortizing",
"interestOnly"
],
"type": "string",
"description": "'amortizing' pays principal and interest; 'interestOnly' pays interest only for interestOnlyPeriod years, then amortizes the balance over the remaining term (a balloon if the period covers the whole term). Unit: enum. Default: amortizing."
},
"sellingCosts": {
"type": "number",
"maximum": 20,
"minimum": 0,
"description": "Selling costs subtracted from the headline buy result at year 30. Unit: % of sale price. Default: 6."
},
"stateTaxRate": {
"type": "number",
"maximum": 30,
"minimum": 0,
"description": "State marginal rate applied the same way. Unit: %. Default: 5."
},
"adjustedValue": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Home value to use in adjustmentYear; 0 disables the adjustment. Unit: USD. Default: 0."
},
"homeInsurance": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Homeowner insurance premium, held flat. Unit: USD per year. Default: 2400."
},
"adjustmentYear": {
"type": "integer",
"maximum": 30,
"minimum": 0,
"description": "Year in which the home value is reset to adjustedValue; 0 disables it. Unit: year (0 = none). Default: 0."
},
"federalTaxRate": {
"type": "number",
"maximum": 60,
"minimum": 0,
"description": "Federal marginal rate applied to itemized deductions above the standard deduction. Unit: %. Default: 22."
},
"householdIncome": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Household income; with filingStatus it pre-fills federalTaxRate and standardDeduction unless those are given explicitly. Unit: USD per year. Default: 200000."
},
"maintenanceRate": {
"type": "number",
"maximum": 10,
"minimum": 0,
"description": "Maintenance as a percentage of the current home value. Unit: % of home value per year. Default: 1."
},
"propertyTaxRate": {
"type": "number",
"maximum": 10,
"minimum": 0,
"description": "Property tax as a percentage of the current home value. Unit: % of home value per year. Default: 1.25."
},
"appreciationRate": {
"type": "number",
"maximum": 30,
"minimum": -20,
"description": "Annual home value appreciation (3 = 3%). Unit: % per year. Default: 3."
},
"investmentReturn": {
"type": "number",
"maximum": 30,
"minimum": -20,
"description": "Effective annual return on invested savings for both households (7 = 7%). Unit: % per year (effective annual). Default: 7."
},
"rentIncreaseRate": {
"type": "number",
"maximum": 30,
"minimum": -10,
"description": "Annual rent growth (3 = 3%). Unit: % per year. Default: 3."
},
"rentersInsurance": {
"type": "number",
"maximum": 20000,
"minimum": 0,
"description": "Renter insurance; it grows with rent. Unit: USD per year. Default: 300."
},
"standardDeduction": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Standard deduction the itemized deductions must exceed to save tax. Unit: USD. Default: 32200."
},
"interestOnlyPeriod": {
"type": "integer",
"maximum": 40,
"minimum": 0,
"description": "Interest-only years; only used when mortgageType is interestOnly. Unit: years. Default: 10."
}
},
"description": "Any subset of the inputs; missing fields use the rentbuy.org defaults. Money in USD, rates in percent points.",
"additionalProperties": false
},
"oneTimeCosts": {
"type": "array",
"items": {
"type": "object",
"required": [
"year",
"amount",
"appliesTo"
],
"properties": {
"year": {
"type": "integer",
"maximum": 30,
"minimum": 1,
"description": "Year of the cost, 1 to 30."
},
"amount": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Amount in USD."
},
"reason": {
"type": "string",
"maxLength": 80,
"description": "Label, e.g. \"New roof\"."
},
"appliesTo": {
"enum": [
"buy",
"both"
],
"type": "string",
"description": "'buy' = a house expense only the buyer pays (the renter invests that amount); 'both' = a general expense both households pay from their investments."
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "Up to 20 one-time costs."
}
},
"additionalProperties": false
}Varies one input (or a grid of two) across a range and returns, for every point, the buyer-minus-renter net worth at year 30 after selling costs, the winner, both net worths and the break-even year, plus the interpolated crossover value where the winner flips for single-parameter sweeps. Give values[] or min, max and steps (2 to 50 per axis, at most 400 grid points). Other inputs come from "base" or the site defaults. Use it for sensitivity questions such as "at what rent does buying win?" or "how does the result change with the mortgage rate?".
| Argument | Type | Description |
|---|---|---|
| axis* | object | |
| base | object | Inputs held fixed during the sweep. |
| secondAxis | object | Optional second input for a grid. |
| oneTimeCosts | array | Up to 20 one-time costs. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"axis"
],
"properties": {
"axis": {
"type": "object",
"required": [
"parameter"
],
"properties": {
"max": {
"type": "number"
},
"min": {
"type": "number"
},
"steps": {
"type": "integer",
"maximum": 50,
"minimum": 2,
"description": "With min and max: number of evenly spaced values (2 to 50)."
},
"values": {
"type": "array",
"items": {
"type": "number"
},
"maxItems": 50,
"minItems": 2,
"description": "Explicit values to test (2 to 50)."
},
"parameter": {
"enum": [
"homePrice",
"downPayment",
"closingCosts",
"renovations",
"mortgageRate",
"mortgageTerm",
"interestOnlyPeriod",
"propertyTaxRate",
"homeInsurance",
"maintenanceRate",
"hoa",
"appreciationRate",
"adjustmentYear",
"adjustedValue",
"sellingCosts",
"monthlyRent",
"rentIncreaseRate",
"rentersInsurance",
"investmentReturn",
"householdIncome",
"federalTaxRate",
"stateTaxRate",
"standardDeduction"
],
"type": "string",
"description": "Input to vary."
}
},
"additionalProperties": false
},
"base": {
"type": "object",
"properties": {
"hoa": {
"type": "number",
"maximum": 20000,
"minimum": 0,
"description": "HOA dues, held flat. Unit: USD per month. Default: 0."
},
"homePrice": {
"type": "number",
"maximum": 50000000,
"minimum": 10000,
"description": "Purchase price of the home. Unit: USD. Default: 800000."
},
"downPayment": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Down payment as a percentage of the price (20 = 20%). Unit: % of price. Default: 20."
},
"monthlyRent": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Rent for a comparable home in year 1. Unit: USD per month. Default: 3500."
},
"renovations": {
"type": "number",
"maximum": 5000000,
"minimum": 0,
"description": "One-time renovation spending at purchase; it does not add to the home value. Unit: USD. Default: 0."
},
"closingCosts": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "One-time closing costs paid at purchase. Unit: USD. Default: 20000."
},
"filingStatus": {
"enum": [
"single",
"marriedJoint",
"headOfHousehold"
],
"type": "string",
"description": "Federal filing status used to pre-fill the tax inputs. Unit: enum. Default: marriedJoint."
},
"mortgageRate": {
"type": "number",
"maximum": 30,
"minimum": 0,
"description": "Mortgage interest rate (6.5 = 6.5%). Unit: % per year. Default: 6.5."
},
"mortgageTerm": {
"type": "integer",
"maximum": 40,
"minimum": 1,
"description": "Loan term in years. The analysis horizon is always 30 years. Unit: years. Default: 30."
},
"mortgageType": {
"enum": [
"amortizing",
"interestOnly"
],
"type": "string",
"description": "'amortizing' pays principal and interest; 'interestOnly' pays interest only for interestOnlyPeriod years, then amortizes the balance over the remaining term (a balloon if the period covers the whole term). Unit: enum. Default: amortizing."
},
"sellingCosts": {
"type": "number",
"maximum": 20,
"minimum": 0,
"description": "Selling costs subtracted from the headline buy result at year 30. Unit: % of sale price. Default: 6."
},
"stateTaxRate": {
"type": "number",
"maximum": 30,
"minimum": 0,
"description": "State marginal rate applied the same way. Unit: %. Default: 5."
},
"adjustedValue": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Home value to use in adjustmentYear; 0 disables the adjustment. Unit: USD. Default: 0."
},
"homeInsurance": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Homeowner insurance premium, held flat. Unit: USD per year. Default: 2400."
},
"adjustmentYear": {
"type": "integer",
"maximum": 30,
"minimum": 0,
"description": "Year in which the home value is reset to adjustedValue; 0 disables it. Unit: year (0 = none). Default: 0."
},
"federalTaxRate": {
"type": "number",
"maximum": 60,
"minimum": 0,
"description": "Federal marginal rate applied to itemized deductions above the standard deduction. Unit: %. Default: 22."
},
"householdIncome": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Household income; with filingStatus it pre-fills federalTaxRate and standardDeduction unless those are given explicitly. Unit: USD per year. Default: 200000."
},
"maintenanceRate": {
"type": "number",
"maximum": 10,
"minimum": 0,
"description": "Maintenance as a percentage of the current home value. Unit: % of home value per year. Default: 1."
},
"propertyTaxRate": {
"type": "number",
"maximum": 10,
"minimum": 0,
"description": "Property tax as a percentage of the current home value. Unit: % of home value per year. Default: 1.25."
},
"appreciationRate": {
"type": "number",
"maximum": 30,
"minimum": -20,
"description": "Annual home value appreciation (3 = 3%). Unit: % per year. Default: 3."
},
"investmentReturn": {
"type": "number",
"maximum": 30,
"minimum": -20,
"description": "Effective annual return on invested savings for both households (7 = 7%). Unit: % per year (effective annual). Default: 7."
},
"rentIncreaseRate": {
"type": "number",
"maximum": 30,
"minimum": -10,
"description": "Annual rent growth (3 = 3%). Unit: % per year. Default: 3."
},
"rentersInsurance": {
"type": "number",
"maximum": 20000,
"minimum": 0,
"description": "Renter insurance; it grows with rent. Unit: USD per year. Default: 300."
},
"standardDeduction": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "Standard deduction the itemized deductions must exceed to save tax. Unit: USD. Default: 32200."
},
"interestOnlyPeriod": {
"type": "integer",
"maximum": 40,
"minimum": 0,
"description": "Interest-only years; only used when mortgageType is interestOnly. Unit: years. Default: 10."
}
},
"description": "Inputs held fixed during the sweep.",
"additionalProperties": false
},
"secondAxis": {
"type": "object",
"required": [
"parameter"
],
"properties": {
"max": {
"type": "number"
},
"min": {
"type": "number"
},
"steps": {
"type": "integer",
"maximum": 50,
"minimum": 2,
"description": "With min and max: number of evenly spaced values (2 to 50)."
},
"values": {
"type": "array",
"items": {
"type": "number"
},
"maxItems": 50,
"minItems": 2,
"description": "Explicit values to test (2 to 50)."
},
"parameter": {
"enum": [
"homePrice",
"downPayment",
"closingCosts",
"renovations",
"mortgageRate",
"mortgageTerm",
"interestOnlyPeriod",
"propertyTaxRate",
"homeInsurance",
"maintenanceRate",
"hoa",
"appreciationRate",
"adjustmentYear",
"adjustedValue",
"sellingCosts",
"monthlyRent",
"rentIncreaseRate",
"rentersInsurance",
"investmentReturn",
"householdIncome",
"federalTaxRate",
"stateTaxRate",
"standardDeduction"
],
"type": "string",
"description": "Input to vary."
}
},
"description": "Optional second input for a grid.",
"additionalProperties": false
},
"oneTimeCosts": {
"type": "array",
"items": {
"type": "object",
"required": [
"year",
"amount",
"appliesTo"
],
"properties": {
"year": {
"type": "integer",
"maximum": 30,
"minimum": 1,
"description": "Year of the cost, 1 to 30."
},
"amount": {
"type": "number",
"maximum": 100000000,
"minimum": 0,
"description": "Amount in USD."
},
"reason": {
"type": "string",
"maxLength": 80,
"description": "Label, e.g. \"New roof\"."
},
"appliesTo": {
"enum": [
"buy",
"both"
],
"type": "string",
"description": "'buy' = a house expense only the buyer pays (the renter invests that amount); 'both' = a general expense both households pay from their investments."
}
},
"additionalProperties": false
},
"maxItems": 20,
"description": "Up to 20 one-time costs."
}
},
"additionalProperties": false
}