RentBuy.org

Compare renting and buying a home over 30 years: scenarios, side-by-side comparisons, rent sweeps.

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
89%
命名质量
80%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

基于对工具定义和协议合规性的自动分析。

上下文开销

~9,012token 数(工具定义)
~25.0 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 7.04%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "rentbuy": {
      "url": "https://rentbuy.org/api/mcp"
    }
  }
}

远程端点

https://rentbuy.org/api/mcpstreamable-http

它能做什么

工具清单

工具(4)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢rentbuy_run_scenario(inputs, oneTimeCosts, detail)

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

输入模式

{
  "type": "object",
  "properties": {
    "inputs": {
      "type": "object",
      "properties": {
        "homePrice": {
          "type": "number",
          "minimum": 10000,
          "maximum": 50000000,
          "description": "Purchase price of the home. Unit: USD. Default: 800000."
        },
        "downPayment": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Down payment as a percentage of the price (20 = 20%). Unit: % of price. Default: 20."
        },
        "closingCosts": {
          "type": "number",
          "minimum": 0,
          "maximum": 1000000,
          "description": "One-time closing costs paid at purchase. Unit: USD. Default: 20000."
        },
        "renovations": {
          "type": "number",
          "minimum": 0,
          "maximum": 5000000,
          "description": "One-time renovation spending at purchase; it does not add to the home value. Unit: USD. Default: 0."
        },
        "mortgageRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 30,
          "description": "Mortgage interest rate (6.5 = 6.5%). Unit: % per year. Default: 6.5."
        },
        "mortgageTerm": {
          "type": "integer",
          "minimum": 1,
          "maximum": 40,
          "description": "Loan term in years. The analysis horizon is always 30 years. Unit: years. Default: 30."
        },
        "mortgageType": {
          "type": "string",
          "enum": [
            "amortizing",
            "interestOnly"
          ],
          "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."
        },
        "interestOnlyPeriod": {
          "type": "integer",
          "minimum": 0,
          "maximum": 40,
          "description": "Interest-only years; only used when mortgageType is interestOnly. Unit: years. Default: 10."
        },
        "propertyTaxRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 10,
          "description": "Property tax as a percentage of the current home value. Unit: % of home value per year. Default: 1.25."
        },
        "homeInsurance": {
          "type": "number",
          "minimum": 0,
          "maximum": 100000,
          "description": "Homeowner insurance premium, held flat. Unit: USD per year. Default: 2400."
        },
        "maintenanceRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 10,
          "description": "Maintenance as a percentage of the current home value. Unit: % of home value per year. Default: 1."
        },
        "hoa": {
          "type": "number",
          "minimum": 0,
          "maximum": 20000,
          "description": "HOA dues, held flat. Unit: USD per month. Default: 0."
        },
        "appreciationRate": {
          "type": "number",
          "minimum": -20,
          "maximum": 30,
          "description": "Annual home value appreciation (3 = 3%). Unit: % per year. Default: 3."
        },
        "adjustmentYear": {
          "type": "integer",
          "minimum": 0,
          "maximum": 30,
          "description": "Year in which the home value is reset to adjustedValue; 0 disables it. Unit: year (0 = none). Default: 0."
        },
        "adjustedValue": {
          "type": "number",
          "minimum": 0,
          "maximum": 100000000,
          "description": "Home value to use in adjustmentYear; 0 disables the adjustment. Unit: USD. Default: 0."
        },
        "sellingCosts": {
          "type": "number",
          "minimum": 0,
          "maximum": 20,
          "description": "Selling costs subtracted from the headline buy result at year 30. Unit: % of sale price. Default: 6."
        },
        "monthlyRent": {
          "type": "number",
          "minimum": 0,
          "maximum": 100000,
          "description": "Rent for a comparable home in year 1. Unit: USD per month. Default: 3500."
        },
        "rentIncreaseRate": {
          "type": "number",
          "minimum": -10,
          "maximum": 30,
          "description": "Annual rent growth (3 = 3%). Unit: % per year. Default: 3."
        },
        "rentersInsurance": {
          "type": "number",
          "minimum": 0,
          "maximum": 20000,
          "description": "Renter insurance; it grows with rent. Unit: USD per year. Default: 300."
        },
        "investmentReturn": {
          "type": "number",
          "minimum": -20,
          "maximum": 30,
          "description": "Effective annual return on invested savings for both households (7 = 7%). Unit: % per year (effective annual). Default: 7."
        },
        "householdIncome": {
          "type": "number",
          "minimum": 0,
          "maximum": 100000000,
          "description": "Household income; with filingStatus it pre-fills federalTaxRate and standardDeduction unless those are given explicitly. Unit: USD per year. Default: 200000."
        },
        "filingStatus": {
          "type": "string",
          "enum": [
            "single",
            "marriedJoint",
            "headOfHousehold"
          ],
          "description": "Federal filing status used to pre-fill the tax inputs. Unit: enum. Default: marriedJoint."
        },
        "federalTaxRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 60,
          "description": "Federal marginal rate applied to itemized deductions above the standard deduction. Unit: %. Default: 22."
        },
        "stateTaxRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 30,
          "description": "State marginal rate applied the same way. Unit: %. Default: 5."
        },
        "standardDeduction": {
          "type": "number",
          "minimum": 0,
          "maximum": 1000000,
          "description": "Standard deduction the itemized deductions must exceed to save tax. Unit: USD. Default: 32200."
        }
      },
      "additionalProperties": false,
      "description": "Any subset of the inputs; missing fields use the rentbuy.org defaults. Money in USD, rates in percent points."
    },
    "oneTimeCosts": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "year": {
            "type": "integer",
            "minimum": 1,
            "maximum": 30,
            "description": "Year of the cost, 1 to 30."
          },
          "amount": {
            "type": "number",
            "minimum": 0,
            "maximum": 100000000,
            "description": "Amount in USD."
          },
          "appliesTo": {
            "type": "string",
            "enum": [
              "buy",
              "both"
            ],
            "description": "'buy' = a house expense only the buyer pays (the renter invests that amount); 'both' = a general expense both households pay from their investments."
          },
          "reason": {
            "description": "Label, e.g. \"New roof\".",
            "type": "string",
            "maxLength": 80
          }
        },
        "required": [
          "year",
          "amount",
          "appliesTo"
        ],
        "additionalProperties": false
      },
      "description": "Up to 20 one-time costs."
    },
    "detail": {
      "description": "\"summary\" (default) or \"yearly\" for the 30 annual rows.",
      "type": "string",
      "enum": [
        "summary",
        "yearly"
      ]
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

输出模式

{
  "type": "object",
  "properties": {
    "winner": {
      "type": "string",
      "enum": [
        "BUY",
        "RENT"
      ],
      "description": "Which household has more net worth after 30 years, after selling costs on the buy side."
    },
    "advantage": {
      "type": "number",
      "description": "Absolute net worth gap between the two households at year 30, USD."
    },
    "difference": {
      "type": "number",
      "description": "Signed gap: buyNetWorthAfterSale minus rentNetWorth, USD."
    },
    "buyNetWorthAfterSale": {
      "type": "number",
      "description": "Buyer net worth at year 30 after selling costs (home equity plus buyer investments minus selling costs)."
    },
    "rentNetWorth": {
      "type": "number",
      "description": "Renter portfolio at year 30."
    },
    "breakEvenYear": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ],
      "description": "First year in which the buyer is ahead before selling costs, or null if never within 30 years."
    },
    "totals": {
      "type": "object",
      "properties": {
        "upfrontInvestment": {
          "type": "number"
        },
        "totalInterestPaid": {
          "type": "number"
        },
        "totalPropertyTaxPaid": {
          "type": "number"
        },
        "totalTaxSavings": {
          "type": "number"
        },
        "totalRentPaid": {
          "type": "number"
        },
        "homeAppreciation": {
          "type": "number"
        },
        "sellingCostAmount": {
          "type": "number"
        }
      },
      "required": [
        "upfrontInvestment",
        "totalInterestPaid",
        "totalPropertyTaxPaid",
        "totalTaxSavings",
        "totalRentPaid",
        "homeAppreciation",
        "sellingCostAmount"
      ],
      "additionalProperties": false
    },
    "year1": {
      "type": "object",
      "properties": {
        "monthlyOwnership": {
          "type": "number"
        },
        "afterTaxOwnership": {
          "type": "number"
        },
        "monthlyRent": {
          "type": "number"
        }
      },
      "required": [
        "monthlyOwnership",
        "afterTaxOwnership",
        "monthlyRent"
      ],
      "additionalProperties": false,
      "description": "Monthly cash in year 1; ownership includes mortgage, property tax, insurance, maintenance and HOA."
    },
    "resolvedInputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": [
          "number",
          "string"
        ]
      },
      "description": "The full input set the calculation used, after defaults and tax pre-fill, in the same units as the request."
    },
    "oneTimeCosts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "year": {
            "type": "integer",
            "minimum": 1,
            "maximum": 30,
            "description": "Year of the cost, 1 to 30."
          },
          "amount": {
            "type": "number",
            "minimum": 0,
            "maximum": 100000000,
            "description": "Amount in USD."
          },
          "appliesTo": {
            "type": "string",
            "enum": [
              "buy",
              "both"
            ],
            "description": "'buy' = a house expense only the buyer pays (the renter invests that amount); 'both' = a general expense both households pay from their investments."
          },
          "reason": {
            "description": "Label, e.g. \"New roof\".",
            "type": "string",
            "maxLength": 80
          }
        },
        "required": [
          "year",
          "amount",
          "appliesTo"
        ],
        "additionalProperties": false
      }
    },
    "yearly": {
      "description": "Present when detail is \"yearly\". Net worth figures here are before selling costs.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "year": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "homeValue": {
            "type": "number"
          },
          "mortgageBalance": {
            "type": "number"
          },
          "homeEquity": {
            "type": "number"
          },
          "buyerInvestments": {
            "type": "number"
          },
          "buyNetWorth": {
            "type": "number"
          },
          "rentNetWorth": {
            "type": "number"
          },
          "difference": {
            "type": "number"
          },
          "monthlyOwnership": {
            "type": "number"
          },
          "afterTaxOwnership": {
            "type": "number"
          },
          "monthlyRent": {
            "type": "number"
          },
          "annualInterest": {
            "type": "number"
          },
          "taxSavings": {
            "type": "number"
          }
        },
        "required": [
          "year",
          "homeValue",
          "mortgageBalance",
          "homeEquity",
          "buyerInvestments",
          "buyNetWorth",
          "rentNetWorth",
          "difference",
          "monthlyOwnership",
          "afterTaxOwnership",
          "monthlyRent",
          "annualInterest",
          "taxSavings"
        ],
        "additionalProperties": false
      }
    },
    "meta": {
      "type": "object",
      "properties": {
        "engineVersion": {
          "type": "string"
        },
        "taxYear": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "conventions": {
          "type": "string"
        }
      },
      "required": [
        "engineVersion",
        "taxYear",
        "conventions"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "winner",
    "advantage",
    "difference",
    "buyNetWorthAfterSale",
    "rentNetWorth",
    "breakEvenYear",
    "totals",
    "year1",
    "resolvedInputs",
    "oneTimeCosts",
    "meta"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢rentbuy_compare_scenarios(scenarios)

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.

输入模式

{
  "type": "object",
  "properties": {
    "scenarios": {
      "minItems": 2,
      "maxItems": 10,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40
          },
          "inputs": {
            "type": "object",
            "properties": {
              "homePrice": {
                "type": "number",
                "minimum": 10000,
                "maximum": 50000000,
                "description": "Purchase price of the home. Unit: USD. Default: 800000."
              },
              "downPayment": {
                "type": "number",
                "minimum": 0,
                "maximum": 100,
                "description": "Down payment as a percentage of the price (20 = 20%). Unit: % of price. Default: 20."
              },
              "closingCosts": {
                "type": "number",
                "minimum": 0,
                "maximum": 1000000,
                "description": "One-time closing costs paid at purchase. Unit: USD. Default: 20000."
              },
              "renovations": {
                "type": "number",
                "minimum": 0,
                "maximum": 5000000,
                "description": "One-time renovation spending at purchase; it does not add to the home value. Unit: USD. Default: 0."
              },
              "mortgageRate": {
                "type": "number",
                "minimum": 0,
                "maximum": 30,
                "description": "Mortgage interest rate (6.5 = 6.5%). Unit: % per year. Default: 6.5."
              },
              "mortgageTerm": {
                "type": "integer",
                "minimum": 1,
                "maximum": 40,
                "description": "Loan term in years. The analysis horizon is always 30 years. Unit: years. Default: 30."
              },
              "mortgageType": {
                "type": "string",
                "enum": [
                  "amortizing",
                  "interestOnly"
                ],
                "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."
              },
              "interestOnlyPeriod": {
                "type": "integer",
                "minimum": 0,
                "maximum": 40,
                "description": "Interest-only years; only used when mortgageType is interestOnly. Unit: years. Default: 10."
              },
              "propertyTaxRate": {
                "type": "number",
                "minimum": 0,
                "maximum": 10,
                "description": "Property tax as a percentage of the current home value. Unit: % of home value per year. Default: 1.25."
              },
              "homeInsurance": {
                "type": "number",
                "minimum": 0,
                "maximum": 100000,
                "description": "Homeowner insurance premium, held flat. Unit: USD per year. Default: 2400."
              },
              "maintenanceRate": {
                "type": "number",
                "minimum": 0,
                "maximum": 10,
                "description": "Maintenance as a percentage of the current home value. Unit: % of home value per year. Default: 1."
              },
              "hoa": {
                "type": "number",
                "minimum": 0,
                "maximum": 20000,
                "description": "HOA dues, held flat. Unit: USD per month. Default: 0."
              },
              "appreciationRate": {
                "type": "number",
                "minimum": -20,
                "maximum": 30,
                "description": "Annual home value appreciation (3 = 3%). Unit: % per year. Default: 3."
              },
              "adjustmentYear": {
                "type": "integer",
                "minimum": 0,
                "maximum": 30,
                "description": "Year in which the home value is reset to adjustedValue; 0 disables it. Unit: year (0 = none). Default: 0."
              },
              "adjustedValue": {
                "type": "number",
                "minimum": 0,
                "maximum": 100000000,
                "description": "Home value to use in adjustmentYear; 0 disables the adjustment. Unit: USD. Default: 0."
              },
              "sellingCosts": {
                "type": "number",
                "minimum": 0,
                "maximum": 20,
                "description": "Selling costs subtracted from the headline buy result at year 30. Unit: % of sale price. Default: 6."
              },
              "monthlyRent": {
                "type": "number",
                "minimum": 0,
                "maximum": 100000,
                "description": "Rent for a comparable home in year 1. Unit: USD per month. Default: 3500."
              },
              "rentIncreaseRate": {
                "type": "number",
                "minimum": -10,
                "maximum": 30,
                "description": "Annual rent growth (3 = 3%). Unit: % per year. Default: 3."
              },
              "rentersInsurance": {
                "type": "number",
                "minimum": 0,
                "maximum": 20000,
                "description": "Renter insurance; it grows with rent. Unit: USD per year. Default: 300."
              },
              "investmentReturn": {
                "type": "number",
                "minimum": -20,
                "maximum": 30,
                "description": "Effective annual return on invested savings for both households (7 = 7%). Unit: % per year (effective annual). Default: 7."
              },
              "householdIncome": {
                "type": "number",
                "minimum": 0,
                "maximum": 100000000,
                "description": "Household income; with filingStatus it pre-fills federalTaxRate and standardDeduction unless those are given explicitly. Unit: USD per year. Default: 200000."
              },
              "filingStatus": {
                "type": "string",
                "enum": [
                  "single",
                  "marriedJoint",
                  "headOfHousehold"
                ],
                "description": "Federal filing status used to pre-fill the tax inputs. Unit: enum. Default: marriedJoint."
              },
              "federalTaxRate": {
                "type": "number",
                "minimum": 0,
                "maximum": 60,
                "description": "Federal marginal rate applied to itemized deductions above the standard deduction. Unit: %. Default: 22."
              },
              "stateTaxRate": {
                "type": "number",
                "minimum": 0,
                "maximum": 30,
                "description": "State marginal rate applied the same way. Unit: %. Default: 5."
              },
              "standardDeduction": {
                "type": "number",
                "minimum": 0,
                "maximum": 1000000,
                "description": "Standard deduction the itemized deductions must exceed to save tax. Unit: USD. Default: 32200."
              }
            },
            "additionalProperties": false,
            "description": "Any subset of the inputs; missing fields use the rentbuy.org defaults. Money in USD, rates in percent points."
          },
          "oneTimeCosts": {
            "maxItems": 20,
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "year": {
                  "type": "integer",
                  "minimum": 1,
                  "maximum": 30,
                  "description": "Year of the cost, 1 to 30."
                },
                "amount": {
                  "type": "number",
                  "minimum": 0,
                  "maximum": 100000000,
                  "description": "Amount in USD."
                },
                "appliesTo": {
                  "type": "string",
                  "enum": [
                    "buy",
                    "both"
                  ],
                  "description": "'buy' = a house expense only the buyer pays (the renter invests that amount); 'both' = a general expense both households pay from their investments."
                },
                "reason": {
                  "description": "Label, e.g. \"New roof\".",
                  "type": "string",
                  "maxLength": 80
                }
              },
              "required": [
                "year",
                "amount",
                "appliesTo"
              ],
              "additionalProperties": false
            },
            "description": "Up to 20 one-time costs."
          }
        },
        "required": [
          "name"
        ],
        "additionalProperties": false
      }
    }
  },
  "required": [
    "scenarios"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

输出模式

{
  "type": "object",
  "properties": {
    "baseline": {
      "type": "string",
      "description": "Name of the first scenario; deltas are relative to it."
    },
    "scenarios": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "winner": {
            "type": "string",
            "enum": [
              "BUY",
              "RENT"
            ]
          },
          "advantage": {
            "type": "number"
          },
          "difference": {
            "type": "number"
          },
          "buyNetWorthAfterSale": {
            "type": "number"
          },
          "rentNetWorth": {
            "type": "number"
          },
          "breakEvenYear": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ]
          },
          "year1MonthlyOwnership": {
            "type": "number"
          },
          "year1MonthlyRent": {
            "type": "number"
          },
          "deltaVsBaseline": {
            "type": "object",
            "properties": {
              "difference": {
                "type": "number"
              },
              "buyNetWorthAfterSale": {
                "type": "number"
              },
              "rentNetWorth": {
                "type": "number"
              }
            },
            "required": [
              "difference",
              "buyNetWorthAfterSale",
              "rentNetWorth"
            ],
            "additionalProperties": false
          }
        },
        "required": [
          "name",
          "winner",
          "advantage",
          "difference",
          "buyNetWorthAfterSale",
          "rentNetWorth",
          "breakEvenYear",
          "year1MonthlyOwnership",
          "year1MonthlyRent",
          "deltaVsBaseline"
        ],
        "additionalProperties": false
      }
    },
    "meta": {
      "type": "object",
      "properties": {
        "engineVersion": {
          "type": "string"
        },
        "taxYear": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "engineVersion",
        "taxYear"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "baseline",
    "scenarios",
    "meta"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢rentbuy_sweep(base, oneTimeCosts, axis, secondAxis)

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?".

输入模式

{
  "type": "object",
  "properties": {
    "base": {
      "description": "Inputs held fixed during the sweep.",
      "type": "object",
      "properties": {
        "homePrice": {
          "type": "number",
          "minimum": 10000,
          "maximum": 50000000,
          "description": "Purchase price of the home. Unit: USD. Default: 800000."
        },
        "downPayment": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Down payment as a percentage of the price (20 = 20%). Unit: % of price. Default: 20."
        },
        "closingCosts": {
          "type": "number",
          "minimum": 0,
          "maximum": 1000000,
          "description": "One-time closing costs paid at purchase. Unit: USD. Default: 20000."
        },
        "renovations": {
          "type": "number",
          "minimum": 0,
          "maximum": 5000000,
          "description": "One-time renovation spending at purchase; it does not add to the home value. Unit: USD. Default: 0."
        },
        "mortgageRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 30,
          "description": "Mortgage interest rate (6.5 = 6.5%). Unit: % per year. Default: 6.5."
        },
        "mortgageTerm": {
          "type": "integer",
          "minimum": 1,
          "maximum": 40,
          "description": "Loan term in years. The analysis horizon is always 30 years. Unit: years. Default: 30."
        },
        "mortgageType": {
          "type": "string",
          "enum": [
            "amortizing",
            "interestOnly"
          ],
          "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."
        },
        "interestOnlyPeriod": {
          "type": "integer",
          "minimum": 0,
          "maximum": 40,
          "description": "Interest-only years; only used when mortgageType is interestOnly. Unit: years. Default: 10."
        },
        "propertyTaxRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 10,
          "description": "Property tax as a percentage of the current home value. Unit: % of home value per year. Default: 1.25."
        },
        "homeInsurance": {
          "type": "number",
          "minimum": 0,
          "maximum": 100000,
          "description": "Homeowner insurance premium, held flat. Unit: USD per year. Default: 2400."
        },
        "maintenanceRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 10,
          "description": "Maintenance as a percentage of the current home value. Unit: % of home value per year. Default: 1."
        },
        "hoa": {
          "type": "number",
          "minimum": 0,
          "maximum": 20000,
          "description": "HOA dues, held flat. Unit: USD per month. Default: 0."
        },
        "appreciationRate": {
          "type": "number",
          "minimum": -20,
          "maximum": 30,
          "description": "Annual home value appreciation (3 = 3%). Unit: % per year. Default: 3."
        },
        "adjustmentYear": {
          "type": "integer",
          "minimum": 0,
          "maximum": 30,
          "description": "Year in which the home value is reset to adjustedValue; 0 disables it. Unit: year (0 = none). Default: 0."
        },
        "adjustedValue": {
          "type": "number",
          "minimum": 0,
          "maximum": 100000000,
          "description": "Home value to use in adjustmentYear; 0 disables the adjustment. Unit: USD. Default: 0."
        },
        "sellingCosts": {
          "type": "number",
          "minimum": 0,
          "maximum": 20,
          "description": "Selling costs subtracted from the headline buy result at year 30. Unit: % of sale price. Default: 6."
        },
        "monthlyRent": {
          "type": "number",
          "minimum": 0,
          "maximum": 100000,
          "description": "Rent for a comparable home in year 1. Unit: USD per month. Default: 3500."
        },
        "rentIncreaseRate": {
          "type": "number",
          "minimum": -10,
          "maximum": 30,
          "description": "Annual rent growth (3 = 3%). Unit: % per year. Default: 3."
        },
        "rentersInsurance": {
          "type": "number",
          "minimum": 0,
          "maximum": 20000,
          "description": "Renter insurance; it grows with rent. Unit: USD per year. Default: 300."
        },
        "investmentReturn": {
          "type": "number",
          "minimum": -20,
          "maximum": 30,
          "description": "Effective annual return on invested savings for both households (7 = 7%). Unit: % per year (effective annual). Default: 7."
        },
        "householdIncome": {
          "type": "number",
          "minimum": 0,
          "maximum": 100000000,
          "description": "Household income; with filingStatus it pre-fills federalTaxRate and standardDeduction unless those are given explicitly. Unit: USD per year. Default: 200000."
        },
        "filingStatus": {
          "type": "string",
          "enum": [
            "single",
            "marriedJoint",
            "headOfHousehold"
          ],
          "description": "Federal filing status used to pre-fill the tax inputs. Unit: enum. Default: marriedJoint."
        },
        "federalTaxRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 60,
          "description": "Federal marginal rate applied to itemized deductions above the standard deduction. Unit: %. Default: 22."
        },
        "stateTaxRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 30,
          "description": "State marginal rate applied the same way. Unit: %. Default: 5."
        },
        "standardDeduction": {
          "type": "number",
          "minimum": 0,
          "maximum": 1000000,
          "description": "Standard deduction the itemized deductions must exceed to save tax. Unit: USD. Default: 32200."
        }
      },
      "additionalProperties": false
    },
    "oneTimeCosts": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "year": {
            "type": "integer",
            "minimum": 1,
            "maximum": 30,
            "description": "Year of the cost, 1 to 30."
          },
          "amount": {
            "type": "number",
            "minimum": 0,
            "maximum": 100000000,
            "description": "Amount in USD."
          },
          "appliesTo": {
            "type": "string",
            "enum": [
              "buy",
              "both"
            ],
            "description": "'buy' = a house expense only the buyer pays (the renter invests that amount); 'both' = a general expense both households pay from their investments."
          },
          "reason": {
            "description": "Label, e.g. \"New roof\".",
            "type": "string",
            "maxLength": 80
          }
        },
        "required": [
          "year",
          "amount",
          "appliesTo"
        ],
        "additionalProperties": false
      },
      "description": "Up to 20 one-time costs."
    },
    "axis": {
      "type": "object",
      "properties": {
        "parameter": {
          "type": "string",
          "enum": [
            "homePrice",
            "downPayment",
            "closingCosts",
            "renovations",
            "mortgageRate",
            "mortgageTerm",
            "interestOnlyPeriod",
            "propertyTaxRate",
            "homeInsurance",
            "maintenanceRate",
            "hoa",
            "appreciationRate",
            "adjustmentYear",
            "adjustedValue",
            "sellingCosts",
            "monthlyRent",
            "rentIncreaseRate",
            "rentersInsurance",
            "investmentReturn",
            "householdIncome",
            "federalTaxRate",
            "stateTaxRate",
            "standardDeduction"
          ],
          "description": "Input to vary."
        },
        "values": {
          "description": "Explicit values to test (2 to 50).",
          "minItems": 2,
          "maxItems": 50,
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "min": {
          "type": "number"
        },
        "max": {
          "type": "number"
        },
        "steps": {
          "description": "With min and max: number of evenly spaced values (2 to 50).",
          "type": "integer",
          "minimum": 2,
          "maximum": 50
        }
      },
      "required": [
        "parameter"
      ],
      "additionalProperties": false
    },
    "secondAxis": {
      "description": "Optional second input for a grid.",
      "type": "object",
      "properties": {
        "parameter": {
          "type": "string",
          "enum": [
            "homePrice",
            "downPayment",
            "closingCosts",
            "renovations",
            "mortgageRate",
            "mortgageTerm",
            "interestOnlyPeriod",
            "propertyTaxRate",
            "homeInsurance",
            "maintenanceRate",
            "hoa",
            "appreciationRate",
            "adjustmentYear",
            "adjustedValue",
            "sellingCosts",
            "monthlyRent",
            "rentIncreaseRate",
            "rentersInsurance",
            "investmentReturn",
            "householdIncome",
            "federalTaxRate",
            "stateTaxRate",
            "standardDeduction"
          ],
          "description": "Input to vary."
        },
        "values": {
          "description": "Explicit values to test (2 to 50).",
          "minItems": 2,
          "maxItems": 50,
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        "min": {
          "type": "number"
        },
        "max": {
          "type": "number"
        },
        "steps": {
          "description": "With min and max: number of evenly spaced values (2 to 50).",
          "type": "integer",
          "minimum": 2,
          "maximum": 50
        }
      },
      "required": [
        "parameter"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "axis"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

输出模式

{
  "type": "object",
  "properties": {
    "parameter": {
      "type": "string"
    },
    "unit": {
      "type": "string"
    },
    "secondParameter": {
      "type": [
        "string",
        "null"
      ]
    },
    "secondUnit": {
      "type": [
        "string",
        "null"
      ]
    },
    "points": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "value": {
            "type": "number"
          },
          "secondValue": {
            "type": [
              "number",
              "null"
            ]
          },
          "difference": {
            "type": "number"
          },
          "winner": {
            "type": "string",
            "enum": [
              "BUY",
              "RENT"
            ]
          },
          "buyNetWorthAfterSale": {
            "type": "number"
          },
          "rentNetWorth": {
            "type": "number"
          },
          "breakEvenYear": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": -9007199254740991,
                "maximum": 9007199254740991
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "required": [
          "value",
          "secondValue",
          "difference",
          "winner",
          "buyNetWorthAfterSale",
          "rentNetWorth",
          "breakEvenYear"
        ],
        "additionalProperties": false
      },
      "description": "One row per grid point; difference is buy minus rent at year 30 after selling costs."
    },
    "crossover": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "value": {
              "type": "number"
            },
            "note": {
              "type": "string"
            }
          },
          "required": [
            "value",
            "note"
          ],
          "additionalProperties": false
        },
        {
          "type": "null"
        }
      ],
      "description": "Single-parameter sweeps only: the interpolated value where the winner flips, or null."
    },
    "meta": {
      "type": "object",
      "properties": {
        "engineVersion": {
          "type": "string"
        },
        "taxYear": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        }
      },
      "required": [
        "engineVersion",
        "taxYear"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "parameter",
    "unit",
    "secondParameter",
    "secondUnit",
    "points",
    "crossover",
    "meta"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢rentbuy_open_calculator(inputs, oneTimeCosts)

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. Use the other rentbuy tools for calculations, comparisons and sweeps without opening a new panel.

输入模式

{
  "type": "object",
  "properties": {
    "inputs": {
      "type": "object",
      "properties": {
        "homePrice": {
          "type": "number",
          "minimum": 10000,
          "maximum": 50000000,
          "description": "Purchase price of the home. Unit: USD. Default: 800000."
        },
        "downPayment": {
          "type": "number",
          "minimum": 0,
          "maximum": 100,
          "description": "Down payment as a percentage of the price (20 = 20%). Unit: % of price. Default: 20."
        },
        "closingCosts": {
          "type": "number",
          "minimum": 0,
          "maximum": 1000000,
          "description": "One-time closing costs paid at purchase. Unit: USD. Default: 20000."
        },
        "renovations": {
          "type": "number",
          "minimum": 0,
          "maximum": 5000000,
          "description": "One-time renovation spending at purchase; it does not add to the home value. Unit: USD. Default: 0."
        },
        "mortgageRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 30,
          "description": "Mortgage interest rate (6.5 = 6.5%). Unit: % per year. Default: 6.5."
        },
        "mortgageTerm": {
          "type": "integer",
          "minimum": 1,
          "maximum": 40,
          "description": "Loan term in years. The analysis horizon is always 30 years. Unit: years. Default: 30."
        },
        "mortgageType": {
          "type": "string",
          "enum": [
            "amortizing",
            "interestOnly"
          ],
          "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."
        },
        "interestOnlyPeriod": {
          "type": "integer",
          "minimum": 0,
          "maximum": 40,
          "description": "Interest-only years; only used when mortgageType is interestOnly. Unit: years. Default: 10."
        },
        "propertyTaxRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 10,
          "description": "Property tax as a percentage of the current home value. Unit: % of home value per year. Default: 1.25."
        },
        "homeInsurance": {
          "type": "number",
          "minimum": 0,
          "maximum": 100000,
          "description": "Homeowner insurance premium, held flat. Unit: USD per year. Default: 2400."
        },
        "maintenanceRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 10,
          "description": "Maintenance as a percentage of the current home value. Unit: % of home value per year. Default: 1."
        },
        "hoa": {
          "type": "number",
          "minimum": 0,
          "maximum": 20000,
          "description": "HOA dues, held flat. Unit: USD per month. Default: 0."
        },
        "appreciationRate": {
          "type": "number",
          "minimum": -20,
          "maximum": 30,
          "description": "Annual home value appreciation (3 = 3%). Unit: % per year. Default: 3."
        },
        "adjustmentYear": {
          "type": "integer",
          "minimum": 0,
          "maximum": 30,
          "description": "Year in which the home value is reset to adjustedValue; 0 disables it. Unit: year (0 = none). Default: 0."
        },
        "adjustedValue": {
          "type": "number",
          "minimum": 0,
          "maximum": 100000000,
          "description": "Home value to use in adjustmentYear; 0 disables the adjustment. Unit: USD. Default: 0."
        },
        "sellingCosts": {
          "type": "number",
          "minimum": 0,
          "maximum": 20,
          "description": "Selling costs subtracted from the headline buy result at year 30. Unit: % of sale price. Default: 6."
        },
        "monthlyRent": {
          "type": "number",
          "minimum": 0,
          "maximum": 100000,
          "description": "Rent for a comparable home in year 1. Unit: USD per month. Default: 3500."
        },
        "rentIncreaseRate": {
          "type": "number",
          "minimum": -10,
          "maximum": 30,
          "description": "Annual rent growth (3 = 3%). Unit: % per year. Default: 3."
        },
        "rentersInsurance": {
          "type": "number",
          "minimum": 0,
          "maximum": 20000,
          "description": "Renter insurance; it grows with rent. Unit: USD per year. Default: 300."
        },
        "investmentReturn": {
          "type": "number",
          "minimum": -20,
          "maximum": 30,
          "description": "Effective annual return on invested savings for both households (7 = 7%). Unit: % per year (effective annual). Default: 7."
        },
        "householdIncome": {
          "type": "number",
          "minimum": 0,
          "maximum": 100000000,
          "description": "Household income; with filingStatus it pre-fills federalTaxRate and standardDeduction unless those are given explicitly. Unit: USD per year. Default: 200000."
        },
        "filingStatus": {
          "type": "string",
          "enum": [
            "single",
            "marriedJoint",
            "headOfHousehold"
          ],
          "description": "Federal filing status used to pre-fill the tax inputs. Unit: enum. Default: marriedJoint."
        },
        "federalTaxRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 60,
          "description": "Federal marginal rate applied to itemized deductions above the standard deduction. Unit: %. Default: 22."
        },
        "stateTaxRate": {
          "type": "number",
          "minimum": 0,
          "maximum": 30,
          "description": "State marginal rate applied the same way. Unit: %. Default: 5."
        },
        "standardDeduction": {
          "type": "number",
          "minimum": 0,
          "maximum": 1000000,
          "description": "Standard deduction the itemized deductions must exceed to save tax. Unit: USD. Default: 32200."
        }
      },
      "additionalProperties": false,
      "description": "Any subset of the inputs; missing fields use the rentbuy.org defaults. Money in USD, rates in percent points."
    },
    "oneTimeCosts": {
      "maxItems": 20,
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "year": {
            "type": "integer",
            "minimum": 1,
            "maximum": 30,
            "description": "Year of the cost, 1 to 30."
          },
          "amount": {
            "type": "number",
            "minimum": 0,
            "maximum": 100000000,
            "description": "Amount in USD."
          },
          "appliesTo": {
            "type": "string",
            "enum": [
              "buy",
              "both"
            ],
            "description": "'buy' = a house expense only the buyer pays (the renter invests that amount); 'both' = a general expense both households pay from their investments."
          },
          "reason": {
            "description": "Label, e.g. \"New roof\".",
            "type": "string",
            "maxLength": 80
          }
        },
        "required": [
          "year",
          "amount",
          "appliesTo"
        ],
        "additionalProperties": false
      },
      "description": "Up to 20 one-time costs."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

输出模式

{
  "type": "object",
  "properties": {
    "winner": {
      "type": "string",
      "enum": [
        "BUY",
        "RENT"
      ],
      "description": "Which household has more net worth after 30 years, after selling costs on the buy side."
    },
    "advantage": {
      "type": "number",
      "description": "Absolute net worth gap between the two households at year 30, USD."
    },
    "difference": {
      "type": "number",
      "description": "Signed gap: buyNetWorthAfterSale minus rentNetWorth, USD."
    },
    "buyNetWorthAfterSale": {
      "type": "number",
      "description": "Buyer net worth at year 30 after selling costs (home equity plus buyer investments minus selling costs)."
    },
    "rentNetWorth": {
      "type": "number",
      "description": "Renter portfolio at year 30."
    },
    "breakEvenYear": {
      "anyOf": [
        {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ],
      "description": "First year in which the buyer is ahead before selling costs, or null if never within 30 years."
    },
    "totals": {
      "type": "object",
      "properties": {
        "upfrontInvestment": {
          "type": "number"
        },
        "totalInterestPaid": {
          "type": "number"
        },
        "totalPropertyTaxPaid": {
          "type": "number"
        },
        "totalTaxSavings": {
          "type": "number"
        },
        "totalRentPaid": {
          "type": "number"
        },
        "homeAppreciation": {
          "type": "number"
        },
        "sellingCostAmount": {
          "type": "number"
        }
      },
      "required": [
        "upfrontInvestment",
        "totalInterestPaid",
        "totalPropertyTaxPaid",
        "totalTaxSavings",
        "totalRentPaid",
        "homeAppreciation",
        "sellingCostAmount"
      ],
      "additionalProperties": false
    },
    "year1": {
      "type": "object",
      "properties": {
        "monthlyOwnership": {
          "type": "number"
        },
        "afterTaxOwnership": {
          "type": "number"
        },
        "monthlyRent": {
          "type": "number"
        }
      },
      "required": [
        "monthlyOwnership",
        "afterTaxOwnership",
        "monthlyRent"
      ],
      "additionalProperties": false,
      "description": "Monthly cash in year 1; ownership includes mortgage, property tax, insurance, maintenance and HOA."
    },
    "resolvedInputs": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {
        "type": [
          "number",
          "string"
        ]
      },
      "description": "The full input set the calculation used, after defaults and tax pre-fill, in the same units as the request."
    },
    "oneTimeCosts": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "year": {
            "type": "integer",
            "minimum": 1,
            "maximum": 30,
            "description": "Year of the cost, 1 to 30."
          },
          "amount": {
            "type": "number",
            "minimum": 0,
            "maximum": 100000000,
            "description": "Amount in USD."
          },
          "appliesTo": {
            "type": "string",
            "enum": [
              "buy",
              "both"
            ],
            "description": "'buy' = a house expense only the buyer pays (the renter invests that amount); 'both' = a general expense both households pay from their investments."
          },
          "reason": {
            "description": "Label, e.g. \"New roof\".",
            "type": "string",
            "maxLength": 80
          }
        },
        "required": [
          "year",
          "amount",
          "appliesTo"
        ],
        "additionalProperties": false
      }
    },
    "yearly": {
      "description": "Present when detail is \"yearly\". Net worth figures here are before selling costs.",
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "year": {
            "type": "integer",
            "minimum": -9007199254740991,
            "maximum": 9007199254740991
          },
          "homeValue": {
            "type": "number"
          },
          "mortgageBalance": {
            "type": "number"
          },
          "homeEquity": {
            "type": "number"
          },
          "buyerInvestments": {
            "type": "number"
          },
          "buyNetWorth": {
            "type": "number"
          },
          "rentNetWorth": {
            "type": "number"
          },
          "difference": {
            "type": "number"
          },
          "monthlyOwnership": {
            "type": "number"
          },
          "afterTaxOwnership": {
            "type": "number"
          },
          "monthlyRent": {
            "type": "number"
          },
          "annualInterest": {
            "type": "number"
          },
          "taxSavings": {
            "type": "number"
          }
        },
        "required": [
          "year",
          "homeValue",
          "mortgageBalance",
          "homeEquity",
          "buyerInvestments",
          "buyNetWorth",
          "rentNetWorth",
          "difference",
          "monthlyOwnership",
          "afterTaxOwnership",
          "monthlyRent",
          "annualInterest",
          "taxSavings"
        ],
        "additionalProperties": false
      }
    },
    "meta": {
      "type": "object",
      "properties": {
        "engineVersion": {
          "type": "string"
        },
        "taxYear": {
          "type": "integer",
          "minimum": -9007199254740991,
          "maximum": 9007199254740991
        },
        "conventions": {
          "type": "string"
        }
      },
      "required": [
        "engineVersion",
        "taxYear",
        "conventions"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "winner",
    "advantage",
    "difference",
    "buyNetWorthAfterSale",
    "rentNetWorth",
    "breakEvenYear",
    "totals",
    "year1",
    "resolvedInputs",
    "oneTimeCosts",
    "meta"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}

社区

评价此服务器

证据

最近观测

已验证未记录版本4 个工具