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 個工具