Serveur MCP

RentBuy.org

org.rentbuy/rentbuy
Finance et investissement Immobilier Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Models and compares long-term rent-versus-buy scenarios, including net worth, cash flow, break-even points, and sensitivity sweeps.

rentbuy_compare_scenarios
Compare named rent vs buy 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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['scenarios'], 'properties': {'scenarios': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'name': {'type': 'string', 'maxLength': 40, 'minLength': 1}, 'inputs': {'type': 'object', 'properties': {'hoa': {'type': 'number', 'maximum': 20000, 'minimum': 0, 'description': 'HOA dues, held flat. Unit: USD per month. Default: 0.'}, 'homePrice': {'type': 'number', 'maximum': 50000000, 'minimum': 10000, 'description': 'Purchase price of the home. Unit: USD. Default: 800000.'}, 'downPayment': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Down payment as a percentage of the price (20 = 20%). Unit: % of price. Default: 20.'}, 'monthlyRent': {'type': 'number', 'maximum': 100000, 'minimum': 0, 'description': 'Rent for a comparable home in year 1. Unit: USD per month. Default: 3500.'}, 'renovations': {'type': 'number', 'maximum': 5000000, 'minimum': 0, 'description': 'One-time renovation spending at purchase; it does not add to the home value. Unit: USD. Default: 0.'}, 'closingCosts': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'One-time closing costs paid at purchase. Unit: USD. Default: 20000.'}, 'filingStatus': {'enum': ['single', 'marriedJoint', 'headOfHousehold'], 'type': 'string', 'description': 'Federal filing status used to pre-fill the tax inputs. Unit: enum. Default: marriedJoint.'}, 'mortgageRate': {'type': 'number', 'maximum': 30, 'minimum': 0, 'description': 'Mortgage interest rate (6.5 = 6.5%). Unit: % per year. Default: 6.5.'}, 'mortgageTerm': {'type': 'integer', 'maximum': 40, 'minimum': 1, 'description': 'Loan term in years. The analysis horizon is always 30 years. Unit: years. Default: 30.'}, 'mortgageType': {'enum': ['amortizing', 'interestOnly'], 'type': 'string', 'description': "'amortizing' pays principal and interest; 'interestOnly' pays interest only for interestOnlyPeriod years, then amortizes the balance over the remaining term (a balloon if the period covers the whole term). Unit: enum. Default: amortizing."}, 'sellingCosts': {'type': 'number', 'maximum': 20, 'minimum': 0, 'description': 'Selling costs subtracted from the headline buy result at year 30. Unit: % of sale price. Default: 6.'}, 'stateTaxRate': {'type': 'number', 'maximum': 30, 'minimum': 0, 'description': 'State marginal rate applied the same way. Unit: %. Default: 5.'}, 'adjustedValue': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Home value to use in adjustmentYear; 0 disables the adjustment. Unit: USD. Default: 0.'}, 'homeInsurance': {'type': 'number', 'maximum': 100000, 'minimum': 0, 'description': 'Homeowner insurance premium, held flat. Unit: USD per year. Default: 2400.'}, 'adjustmentYear': {'type': 'integer', 'maximum': 30, 'minimum': 0, 'description': 'Year in which the home value is reset to adjustedValue; 0 disables it. Unit: year (0 = none). Default: 0.'}, 'federalTaxRate': {'type': 'number', 'maximum': 60, 'minimum': 0, 'description': 'Federal marginal rate applied to itemized deductions above the standard deduction. Unit: %. Default: 22.'}, 'householdIncome': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Household income; with filingStatus it pre-fills federalTaxRate and standardDeduction unless those are given explicitly. Unit: USD per year. Default: 200000.'}, 'maintenanceRate': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Maintenance as a percentage of the current home value. Unit: % of home value per year. Default: 1.'}, 'propertyTaxRate': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Property tax as a percentage of the current home value. Unit: % of home value per year. Default: 1.25.'}, 'appreciationRate': {'type': 'number', 'maximum': 30, 'minimum': -20, 'description': 'Annual home value appreciation (3 = 3%). Unit: % per year. Default: 3.'}, 'investmentReturn': {'type': 'number', 'maximum': 30, 'minimum': -20, 'description': 'Effective annual return on invested savings for both households (7 = 7%). Unit: % per year (effective annual). Default: 7.'}, 'rentIncreaseRate': {'type': 'number', 'maximum': 30, 'minimum': -10, 'description': 'Annual rent growth (3 = 3%). Unit: % per year. Default: 3.'}, 'rentersInsurance': {'type': 'number', 'maximum': 20000, 'minimum': 0, 'description': 'Renter insurance; it grows with rent. Unit: USD per year. Default: 300.'}, 'standardDeduction': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'Standard deduction the itemized deductions must exceed to save tax. Unit: USD. Default: 32200.'}, 'interestOnlyPeriod': {'type': 'integer', 'maximum': 40, 'minimum': 0, 'description': 'Interest-only years; only used when mortgageType is interestOnly. Unit: years. Default: 10.'}}, 'description': 'Any subset of the inputs; missing fields use the rentbuy.org defaults. Money in USD, rates in percent points.', 'additionalProperties': False}, 'oneTimeCosts': {'type': 'array', 'items': {'type': 'object', 'required': ['year', 'amount', 'appliesTo'], 'properties': {'year': {'type': 'integer', 'maximum': 30, 'minimum': 1, 'description': 'Year of the cost, 1 to 30.'}, 'amount': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Amount in USD.'}, 'reason': {'type': 'string', 'maxLength': 80, 'description': 'Label, e.g. "New roof".'}, 'appliesTo': {'enum': ['buy', 'both'], 'type': 'string', 'description': "'buy' = a house expense only the buyer pays (the renter invests that amount); 'both' = a general expense both households pay from their investments."}}, 'additionalProperties': False}, 'maxItems': 20, 'description': 'Up to 20 one-time costs.'}}, 'additionalProperties': False}, 'maxItems': 10, 'minItems': 2}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['baseline', 'scenarios', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['engineVersion', 'taxYear'], 'properties': {'taxYear': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'engineVersion': {'type': 'string'}}, 'additionalProperties': False}, 'baseline': {'type': 'string', 'description': 'Name of the first scenario; deltas are relative to it.'}, 'scenarios': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'winner', 'advantage', 'difference', 'buyNetWorthAfterSale', 'rentNetWorth', 'breakEvenYear', 'year1MonthlyOwnership', 'year1MonthlyRent', 'deltaVsBaseline'], 'properties': {'name': {'type': 'string'}, 'winner': {'enum': ['BUY', 'RENT'], 'type': 'string'}, 'advantage': {'type': 'number'}, 'difference': {'type': 'number'}, 'rentNetWorth': {'type': 'number'}, 'breakEvenYear': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}]}, 'deltaVsBaseline': {'type': 'object', 'required': ['difference', 'buyNetWorthAfterSale', 'rentNetWorth'], 'properties': {'difference': {'type': 'number'}, 'rentNetWorth': {'type': 'number'}, 'buyNetWorthAfterSale': {'type': 'number'}}, 'additionalProperties': False}, 'year1MonthlyRent': {'type': 'number'}, 'buyNetWorthAfterSale': {'type': 'number'}, 'year1MonthlyOwnership': {'type': 'number'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
rentbuy_open_calculator
Open the RentBuy.org calculator
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'inputs': {'type': 'object', 'properties': {'hoa': {'type': 'number', 'maximum': 20000, 'minimum': 0, 'description': 'HOA dues, held flat. Unit: USD per month. Default: 0.'}, 'homePrice': {'type': 'number', 'maximum': 50000000, 'minimum': 10000, 'description': 'Purchase price of the home. Unit: USD. Default: 800000.'}, 'downPayment': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Down payment as a percentage of the price (20 = 20%). Unit: % of price. Default: 20.'}, 'monthlyRent': {'type': 'number', 'maximum': 100000, 'minimum': 0, 'description': 'Rent for a comparable home in year 1. Unit: USD per month. Default: 3500.'}, 'renovations': {'type': 'number', 'maximum': 5000000, 'minimum': 0, 'description': 'One-time renovation spending at purchase; it does not add to the home value. Unit: USD. Default: 0.'}, 'closingCosts': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'One-time closing costs paid at purchase. Unit: USD. Default: 20000.'}, 'filingStatus': {'enum': ['single', 'marriedJoint', 'headOfHousehold'], 'type': 'string', 'description': 'Federal filing status used to pre-fill the tax inputs. Unit: enum. Default: marriedJoint.'}, 'mortgageRate': {'type': 'number', 'maximum': 30, 'minimum': 0, 'description': 'Mortgage interest rate (6.5 = 6.5%). Unit: % per year. Default: 6.5.'}, 'mortgageTerm': {'type': 'integer', 'maximum': 40, 'minimum': 1, 'description': 'Loan term in years. The analysis horizon is always 30 years. Unit: years. Default: 30.'}, 'mortgageType': {'enum': ['amortizing', 'interestOnly'], 'type': 'string', 'description': "'amortizing' pays principal and interest; 'interestOnly' pays interest only for interestOnlyPeriod years, then amortizes the balance over the remaining term (a balloon if the period covers the whole term). Unit: enum. Default: amortizing."}, 'sellingCosts': {'type': 'number', 'maximum': 20, 'minimum': 0, 'description': 'Selling costs subtracted from the headline buy result at year 30. Unit: % of sale price. Default: 6.'}, 'stateTaxRate': {'type': 'number', 'maximum': 30, 'minimum': 0, 'description': 'State marginal rate applied the same way. Unit: %. Default: 5.'}, 'adjustedValue': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Home value to use in adjustmentYear; 0 disables the adjustment. Unit: USD. Default: 0.'}, 'homeInsurance': {'type': 'number', 'maximum': 100000, 'minimum': 0, 'description': 'Homeowner insurance premium, held flat. Unit: USD per year. Default: 2400.'}, 'adjustmentYear': {'type': 'integer', 'maximum': 30, 'minimum': 0, 'description': 'Year in which the home value is reset to adjustedValue; 0 disables it. Unit: year (0 = none). Default: 0.'}, 'federalTaxRate': {'type': 'number', 'maximum': 60, 'minimum': 0, 'description': 'Federal marginal rate applied to itemized deductions above the standard deduction. Unit: %. Default: 22.'}, 'householdIncome': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Household income; with filingStatus it pre-fills federalTaxRate and standardDeduction unless those are given explicitly. Unit: USD per year. Default: 200000.'}, 'maintenanceRate': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Maintenance as a percentage of the current home value. Unit: % of home value per year. Default: 1.'}, 'propertyTaxRate': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Property tax as a percentage of the current home value. Unit: % of home value per year. Default: 1.25.'}, 'appreciationRate': {'type': 'number', 'maximum': 30, 'minimum': -20, 'description': 'Annual home value appreciation (3 = 3%). Unit: % per year. Default: 3.'}, 'investmentReturn': {'type': 'number', 'maximum': 30, 'minimum': -20, 'description': 'Effective annual return on invested savings for both households (7 = 7%). Unit: % per year (effective annual). Default: 7.'}, 'rentIncreaseRate': {'type': 'number', 'maximum': 30, 'minimum': -10, 'description': 'Annual rent growth (3 = 3%). Unit: % per year. Default: 3.'}, 'rentersInsurance': {'type': 'number', 'maximum': 20000, 'minimum': 0, 'description': 'Renter insurance; it grows with rent. Unit: USD per year. Default: 300.'}, 'standardDeduction': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'Standard deduction the itemized deductions must exceed to save tax. Unit: USD. Default: 32200.'}, 'interestOnlyPeriod': {'type': 'integer', 'maximum': 40, 'minimum': 0, 'description': 'Interest-only years; only used when mortgageType is interestOnly. Unit: years. Default: 10.'}}, 'description': 'Any subset of the inputs; missing fields use the rentbuy.org defaults. Money in USD, rates in percent points.', 'additionalProperties': False}, 'oneTimeCosts': {'type': 'array', 'items': {'type': 'object', 'required': ['year', 'amount', 'appliesTo'], 'properties': {'year': {'type': 'integer', 'maximum': 30, 'minimum': 1, 'description': 'Year of the cost, 1 to 30.'}, 'amount': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Amount in USD.'}, 'reason': {'type': 'string', 'maxLength': 80, 'description': 'Label, e.g. "New roof".'}, 'appliesTo': {'enum': ['buy', 'both'], 'type': 'string', 'description': "'buy' = a house expense only the buyer pays (the renter invests that amount); 'both' = a general expense both households pay from their investments."}}, 'additionalProperties': False}, 'maxItems': 20, 'description': 'Up to 20 one-time costs.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['winner', 'advantage', 'difference', 'buyNetWorthAfterSale', 'rentNetWorth', 'breakEvenYear', 'totals', 'year1', 'resolvedInputs', 'oneTimeCosts', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['engineVersion', 'taxYear', 'conventions'], 'properties': {'taxYear': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'conventions': {'type': 'string'}, 'engineVersion': {'type': 'string'}}, 'additionalProperties': False}, 'year1': {'type': 'object', 'required': ['monthlyOwnership', 'afterTaxOwnership', 'monthlyRent'], 'properties': {'monthlyRent': {'type': 'number'}, 'monthlyOwnership': {'type': 'number'}, 'afterTaxOwnership': {'type': 'number'}}, 'description': 'Monthly cash in year 1; ownership includes mortgage, property tax, insurance, maintenance and HOA.', 'additionalProperties': False}, 'totals': {'type': 'object', 'required': ['upfrontInvestment', 'totalInterestPaid', 'totalPropertyTaxPaid', 'totalTaxSavings', 'totalRentPaid', 'homeAppreciation', 'sellingCostAmount'], 'properties': {'totalRentPaid': {'type': 'number'}, 'totalTaxSavings': {'type': 'number'}, 'homeAppreciation': {'type': 'number'}, 'sellingCostAmount': {'type': 'number'}, 'totalInterestPaid': {'type': 'number'}, 'upfrontInvestment': {'type': 'number'}, 'totalPropertyTaxPaid': {'type': 'number'}}, 'additionalProperties': False}, 'winner': {'enum': ['BUY', 'RENT'], 'type': 'string', 'description': 'Which household has more net worth after 30 years, after selling costs on the buy side.'}, 'yearly': {'type': 'array', 'items': {'type': 'object', 'required': ['year', 'homeValue', 'mortgageBalance', 'homeEquity', 'buyerInvestments', 'buyNetWorth', 'rentNetWorth', 'difference', 'monthlyOwnership', 'afterTaxOwnership', 'monthlyRent', 'annualInterest', 'taxSavings'], 'properties': {'year': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'homeValue': {'type': 'number'}, 'difference': {'type': 'number'}, 'homeEquity': {'type': 'number'}, 'taxSavings': {'type': 'number'}, 'buyNetWorth': {'type': 'number'}, 'monthlyRent': {'type': 'number'}, 'rentNetWorth': {'type': 'number'}, 'annualInterest': {'type': 'number'}, 'mortgageBalance': {'type': 'number'}, 'buyerInvestments': {'type': 'number'}, 'monthlyOwnership': {'type': 'number'}, 'afterTaxOwnership': {'type': 'number'}}, 'additionalProperties': False}, 'description': 'Present when detail is "yearly". Net worth figures here are before selling costs.'}, '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.'}, 'oneTimeCosts': {'type': 'array', 'items': {'type': 'object', 'required': ['year', 'amount', 'appliesTo'], 'properties': {'year': {'type': 'integer', 'maximum': 30, 'minimum': 1, 'description': 'Year of the cost, 1 to 30.'}, 'amount': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Amount in USD.'}, 'reason': {'type': 'string', 'maxLength': 80, 'description': 'Label, e.g. "New roof".'}, 'appliesTo': {'enum': ['buy', 'both'], 'type': 'string', 'description': "'buy' = a house expense only the buyer pays (the renter invests that amount); 'both' = a general expense both households pay from their investments."}}, 'additionalProperties': False}}, 'rentNetWorth': {'type': 'number', 'description': 'Renter portfolio at year 30.'}, 'breakEvenYear': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'First year in which the buyer is ahead before selling costs, or null if never within 30 years.'}, 'resolvedInputs': {'type': 'object', 'description': 'The full input set the calculation used, after defaults and tax pre-fill, in the same units as the request.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': ['number', 'string']}}, 'buyNetWorthAfterSale': {'type': 'number', 'description': 'Buyer net worth at year 30 after selling costs (home equity plus buyer investments minus selling costs).'}}, 'additionalProperties': False}
rentbuy_run_scenario
Run a rent vs buy scenario
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.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'detail': {'enum': ['summary', 'yearly'], 'type': 'string', 'description': '"summary" (default) or "yearly" for the 30 annual rows.'}, 'inputs': {'type': 'object', 'properties': {'hoa': {'type': 'number', 'maximum': 20000, 'minimum': 0, 'description': 'HOA dues, held flat. Unit: USD per month. Default: 0.'}, 'homePrice': {'type': 'number', 'maximum': 50000000, 'minimum': 10000, 'description': 'Purchase price of the home. Unit: USD. Default: 800000.'}, 'downPayment': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Down payment as a percentage of the price (20 = 20%). Unit: % of price. Default: 20.'}, 'monthlyRent': {'type': 'number', 'maximum': 100000, 'minimum': 0, 'description': 'Rent for a comparable home in year 1. Unit: USD per month. Default: 3500.'}, 'renovations': {'type': 'number', 'maximum': 5000000, 'minimum': 0, 'description': 'One-time renovation spending at purchase; it does not add to the home value. Unit: USD. Default: 0.'}, 'closingCosts': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'One-time closing costs paid at purchase. Unit: USD. Default: 20000.'}, 'filingStatus': {'enum': ['single', 'marriedJoint', 'headOfHousehold'], 'type': 'string', 'description': 'Federal filing status used to pre-fill the tax inputs. Unit: enum. Default: marriedJoint.'}, 'mortgageRate': {'type': 'number', 'maximum': 30, 'minimum': 0, 'description': 'Mortgage interest rate (6.5 = 6.5%). Unit: % per year. Default: 6.5.'}, 'mortgageTerm': {'type': 'integer', 'maximum': 40, 'minimum': 1, 'description': 'Loan term in years. The analysis horizon is always 30 years. Unit: years. Default: 30.'}, 'mortgageType': {'enum': ['amortizing', 'interestOnly'], 'type': 'string', 'description': "'amortizing' pays principal and interest; 'interestOnly' pays interest only for interestOnlyPeriod years, then amortizes the balance over the remaining term (a balloon if the period covers the whole term). Unit: enum. Default: amortizing."}, 'sellingCosts': {'type': 'number', 'maximum': 20, 'minimum': 0, 'description': 'Selling costs subtracted from the headline buy result at year 30. Unit: % of sale price. Default: 6.'}, 'stateTaxRate': {'type': 'number', 'maximum': 30, 'minimum': 0, 'description': 'State marginal rate applied the same way. Unit: %. Default: 5.'}, 'adjustedValue': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Home value to use in adjustmentYear; 0 disables the adjustment. Unit: USD. Default: 0.'}, 'homeInsurance': {'type': 'number', 'maximum': 100000, 'minimum': 0, 'description': 'Homeowner insurance premium, held flat. Unit: USD per year. Default: 2400.'}, 'adjustmentYear': {'type': 'integer', 'maximum': 30, 'minimum': 0, 'description': 'Year in which the home value is reset to adjustedValue; 0 disables it. Unit: year (0 = none). Default: 0.'}, 'federalTaxRate': {'type': 'number', 'maximum': 60, 'minimum': 0, 'description': 'Federal marginal rate applied to itemized deductions above the standard deduction. Unit: %. Default: 22.'}, 'householdIncome': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Household income; with filingStatus it pre-fills federalTaxRate and standardDeduction unless those are given explicitly. Unit: USD per year. Default: 200000.'}, 'maintenanceRate': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Maintenance as a percentage of the current home value. Unit: % of home value per year. Default: 1.'}, 'propertyTaxRate': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Property tax as a percentage of the current home value. Unit: % of home value per year. Default: 1.25.'}, 'appreciationRate': {'type': 'number', 'maximum': 30, 'minimum': -20, 'description': 'Annual home value appreciation (3 = 3%). Unit: % per year. Default: 3.'}, 'investmentReturn': {'type': 'number', 'maximum': 30, 'minimum': -20, 'description': 'Effective annual return on invested savings for both households (7 = 7%). Unit: % per year (effective annual). Default: 7.'}, 'rentIncreaseRate': {'type': 'number', 'maximum': 30, 'minimum': -10, 'description': 'Annual rent growth (3 = 3%). Unit: % per year. Default: 3.'}, 'rentersInsurance': {'type': 'number', 'maximum': 20000, 'minimum': 0, 'description': 'Renter insurance; it grows with rent. Unit: USD per year. Default: 300.'}, 'standardDeduction': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'Standard deduction the itemized deductions must exceed to save tax. Unit: USD. Default: 32200.'}, 'interestOnlyPeriod': {'type': 'integer', 'maximum': 40, 'minimum': 0, 'description': 'Interest-only years; only used when mortgageType is interestOnly. Unit: years. Default: 10.'}}, 'description': 'Any subset of the inputs; missing fields use the rentbuy.org defaults. Money in USD, rates in percent points.', 'additionalProperties': False}, 'oneTimeCosts': {'type': 'array', 'items': {'type': 'object', 'required': ['year', 'amount', 'appliesTo'], 'properties': {'year': {'type': 'integer', 'maximum': 30, 'minimum': 1, 'description': 'Year of the cost, 1 to 30.'}, 'amount': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Amount in USD.'}, 'reason': {'type': 'string', 'maxLength': 80, 'description': 'Label, e.g. "New roof".'}, 'appliesTo': {'enum': ['buy', 'both'], 'type': 'string', 'description': "'buy' = a house expense only the buyer pays (the renter invests that amount); 'both' = a general expense both households pay from their investments."}}, 'additionalProperties': False}, 'maxItems': 20, 'description': 'Up to 20 one-time costs.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['winner', 'advantage', 'difference', 'buyNetWorthAfterSale', 'rentNetWorth', 'breakEvenYear', 'totals', 'year1', 'resolvedInputs', 'oneTimeCosts', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['engineVersion', 'taxYear', 'conventions'], 'properties': {'taxYear': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'conventions': {'type': 'string'}, 'engineVersion': {'type': 'string'}}, 'additionalProperties': False}, 'year1': {'type': 'object', 'required': ['monthlyOwnership', 'afterTaxOwnership', 'monthlyRent'], 'properties': {'monthlyRent': {'type': 'number'}, 'monthlyOwnership': {'type': 'number'}, 'afterTaxOwnership': {'type': 'number'}}, 'description': 'Monthly cash in year 1; ownership includes mortgage, property tax, insurance, maintenance and HOA.', 'additionalProperties': False}, 'totals': {'type': 'object', 'required': ['upfrontInvestment', 'totalInterestPaid', 'totalPropertyTaxPaid', 'totalTaxSavings', 'totalRentPaid', 'homeAppreciation', 'sellingCostAmount'], 'properties': {'totalRentPaid': {'type': 'number'}, 'totalTaxSavings': {'type': 'number'}, 'homeAppreciation': {'type': 'number'}, 'sellingCostAmount': {'type': 'number'}, 'totalInterestPaid': {'type': 'number'}, 'upfrontInvestment': {'type': 'number'}, 'totalPropertyTaxPaid': {'type': 'number'}}, 'additionalProperties': False}, 'winner': {'enum': ['BUY', 'RENT'], 'type': 'string', 'description': 'Which household has more net worth after 30 years, after selling costs on the buy side.'}, 'yearly': {'type': 'array', 'items': {'type': 'object', 'required': ['year', 'homeValue', 'mortgageBalance', 'homeEquity', 'buyerInvestments', 'buyNetWorth', 'rentNetWorth', 'difference', 'monthlyOwnership', 'afterTaxOwnership', 'monthlyRent', 'annualInterest', 'taxSavings'], 'properties': {'year': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'homeValue': {'type': 'number'}, 'difference': {'type': 'number'}, 'homeEquity': {'type': 'number'}, 'taxSavings': {'type': 'number'}, 'buyNetWorth': {'type': 'number'}, 'monthlyRent': {'type': 'number'}, 'rentNetWorth': {'type': 'number'}, 'annualInterest': {'type': 'number'}, 'mortgageBalance': {'type': 'number'}, 'buyerInvestments': {'type': 'number'}, 'monthlyOwnership': {'type': 'number'}, 'afterTaxOwnership': {'type': 'number'}}, 'additionalProperties': False}, 'description': 'Present when detail is "yearly". Net worth figures here are before selling costs.'}, '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.'}, 'oneTimeCosts': {'type': 'array', 'items': {'type': 'object', 'required': ['year', 'amount', 'appliesTo'], 'properties': {'year': {'type': 'integer', 'maximum': 30, 'minimum': 1, 'description': 'Year of the cost, 1 to 30.'}, 'amount': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Amount in USD.'}, 'reason': {'type': 'string', 'maxLength': 80, 'description': 'Label, e.g. "New roof".'}, 'appliesTo': {'enum': ['buy', 'both'], 'type': 'string', 'description': "'buy' = a house expense only the buyer pays (the renter invests that amount); 'both' = a general expense both households pay from their investments."}}, 'additionalProperties': False}}, 'rentNetWorth': {'type': 'number', 'description': 'Renter portfolio at year 30.'}, 'breakEvenYear': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}], 'description': 'First year in which the buyer is ahead before selling costs, or null if never within 30 years.'}, 'resolvedInputs': {'type': 'object', 'description': 'The full input set the calculation used, after defaults and tax pre-fill, in the same units as the request.', 'propertyNames': {'type': 'string'}, 'additionalProperties': {'type': ['number', 'string']}}, 'buyNetWorthAfterSale': {'type': 'number', 'description': 'Buyer net worth at year 30 after selling costs (home equity plus buyer investments minus selling costs).'}}, 'additionalProperties': False}
rentbuy_sweep
Sweep one or two inputs
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?".
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['axis'], 'properties': {'axis': {'type': 'object', 'required': ['parameter'], 'properties': {'max': {'type': 'number'}, 'min': {'type': 'number'}, 'steps': {'type': 'integer', 'maximum': 50, 'minimum': 2, 'description': 'With min and max: number of evenly spaced values (2 to 50).'}, 'values': {'type': 'array', 'items': {'type': 'number'}, 'maxItems': 50, 'minItems': 2, 'description': 'Explicit values to test (2 to 50).'}, 'parameter': {'enum': ['homePrice', 'downPayment', 'closingCosts', 'renovations', 'mortgageRate', 'mortgageTerm', 'interestOnlyPeriod', 'propertyTaxRate', 'homeInsurance', 'maintenanceRate', 'hoa', 'appreciationRate', 'adjustmentYear', 'adjustedValue', 'sellingCosts', 'monthlyRent', 'rentIncreaseRate', 'rentersInsurance', 'investmentReturn', 'householdIncome', 'federalTaxRate', 'stateTaxRate', 'standardDeduction'], 'type': 'string', 'description': 'Input to vary.'}}, 'additionalProperties': False}, 'base': {'type': 'object', 'properties': {'hoa': {'type': 'number', 'maximum': 20000, 'minimum': 0, 'description': 'HOA dues, held flat. Unit: USD per month. Default: 0.'}, 'homePrice': {'type': 'number', 'maximum': 50000000, 'minimum': 10000, 'description': 'Purchase price of the home. Unit: USD. Default: 800000.'}, 'downPayment': {'type': 'number', 'maximum': 100, 'minimum': 0, 'description': 'Down payment as a percentage of the price (20 = 20%). Unit: % of price. Default: 20.'}, 'monthlyRent': {'type': 'number', 'maximum': 100000, 'minimum': 0, 'description': 'Rent for a comparable home in year 1. Unit: USD per month. Default: 3500.'}, 'renovations': {'type': 'number', 'maximum': 5000000, 'minimum': 0, 'description': 'One-time renovation spending at purchase; it does not add to the home value. Unit: USD. Default: 0.'}, 'closingCosts': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'One-time closing costs paid at purchase. Unit: USD. Default: 20000.'}, 'filingStatus': {'enum': ['single', 'marriedJoint', 'headOfHousehold'], 'type': 'string', 'description': 'Federal filing status used to pre-fill the tax inputs. Unit: enum. Default: marriedJoint.'}, 'mortgageRate': {'type': 'number', 'maximum': 30, 'minimum': 0, 'description': 'Mortgage interest rate (6.5 = 6.5%). Unit: % per year. Default: 6.5.'}, 'mortgageTerm': {'type': 'integer', 'maximum': 40, 'minimum': 1, 'description': 'Loan term in years. The analysis horizon is always 30 years. Unit: years. Default: 30.'}, 'mortgageType': {'enum': ['amortizing', 'interestOnly'], 'type': 'string', 'description': "'amortizing' pays principal and interest; 'interestOnly' pays interest only for interestOnlyPeriod years, then amortizes the balance over the remaining term (a balloon if the period covers the whole term). Unit: enum. Default: amortizing."}, 'sellingCosts': {'type': 'number', 'maximum': 20, 'minimum': 0, 'description': 'Selling costs subtracted from the headline buy result at year 30. Unit: % of sale price. Default: 6.'}, 'stateTaxRate': {'type': 'number', 'maximum': 30, 'minimum': 0, 'description': 'State marginal rate applied the same way. Unit: %. Default: 5.'}, 'adjustedValue': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Home value to use in adjustmentYear; 0 disables the adjustment. Unit: USD. Default: 0.'}, 'homeInsurance': {'type': 'number', 'maximum': 100000, 'minimum': 0, 'description': 'Homeowner insurance premium, held flat. Unit: USD per year. Default: 2400.'}, 'adjustmentYear': {'type': 'integer', 'maximum': 30, 'minimum': 0, 'description': 'Year in which the home value is reset to adjustedValue; 0 disables it. Unit: year (0 = none). Default: 0.'}, 'federalTaxRate': {'type': 'number', 'maximum': 60, 'minimum': 0, 'description': 'Federal marginal rate applied to itemized deductions above the standard deduction. Unit: %. Default: 22.'}, 'householdIncome': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Household income; with filingStatus it pre-fills federalTaxRate and standardDeduction unless those are given explicitly. Unit: USD per year. Default: 200000.'}, 'maintenanceRate': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Maintenance as a percentage of the current home value. Unit: % of home value per year. Default: 1.'}, 'propertyTaxRate': {'type': 'number', 'maximum': 10, 'minimum': 0, 'description': 'Property tax as a percentage of the current home value. Unit: % of home value per year. Default: 1.25.'}, 'appreciationRate': {'type': 'number', 'maximum': 30, 'minimum': -20, 'description': 'Annual home value appreciation (3 = 3%). Unit: % per year. Default: 3.'}, 'investmentReturn': {'type': 'number', 'maximum': 30, 'minimum': -20, 'description': 'Effective annual return on invested savings for both households (7 = 7%). Unit: % per year (effective annual). Default: 7.'}, 'rentIncreaseRate': {'type': 'number', 'maximum': 30, 'minimum': -10, 'description': 'Annual rent growth (3 = 3%). Unit: % per year. Default: 3.'}, 'rentersInsurance': {'type': 'number', 'maximum': 20000, 'minimum': 0, 'description': 'Renter insurance; it grows with rent. Unit: USD per year. Default: 300.'}, 'standardDeduction': {'type': 'number', 'maximum': 1000000, 'minimum': 0, 'description': 'Standard deduction the itemized deductions must exceed to save tax. Unit: USD. Default: 32200.'}, 'interestOnlyPeriod': {'type': 'integer', 'maximum': 40, 'minimum': 0, 'description': 'Interest-only years; only used when mortgageType is interestOnly. Unit: years. Default: 10.'}}, 'description': 'Inputs held fixed during the sweep.', 'additionalProperties': False}, 'secondAxis': {'type': 'object', 'required': ['parameter'], 'properties': {'max': {'type': 'number'}, 'min': {'type': 'number'}, 'steps': {'type': 'integer', 'maximum': 50, 'minimum': 2, 'description': 'With min and max: number of evenly spaced values (2 to 50).'}, 'values': {'type': 'array', 'items': {'type': 'number'}, 'maxItems': 50, 'minItems': 2, 'description': 'Explicit values to test (2 to 50).'}, 'parameter': {'enum': ['homePrice', 'downPayment', 'closingCosts', 'renovations', 'mortgageRate', 'mortgageTerm', 'interestOnlyPeriod', 'propertyTaxRate', 'homeInsurance', 'maintenanceRate', 'hoa', 'appreciationRate', 'adjustmentYear', 'adjustedValue', 'sellingCosts', 'monthlyRent', 'rentIncreaseRate', 'rentersInsurance', 'investmentReturn', 'householdIncome', 'federalTaxRate', 'stateTaxRate', 'standardDeduction'], 'type': 'string', 'description': 'Input to vary.'}}, 'description': 'Optional second input for a grid.', 'additionalProperties': False}, 'oneTimeCosts': {'type': 'array', 'items': {'type': 'object', 'required': ['year', 'amount', 'appliesTo'], 'properties': {'year': {'type': 'integer', 'maximum': 30, 'minimum': 1, 'description': 'Year of the cost, 1 to 30.'}, 'amount': {'type': 'number', 'maximum': 100000000, 'minimum': 0, 'description': 'Amount in USD.'}, 'reason': {'type': 'string', 'maxLength': 80, 'description': 'Label, e.g. "New roof".'}, 'appliesTo': {'enum': ['buy', 'both'], 'type': 'string', 'description': "'buy' = a house expense only the buyer pays (the renter invests that amount); 'both' = a general expense both households pay from their investments."}}, 'additionalProperties': False}, 'maxItems': 20, 'description': 'Up to 20 one-time costs.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['parameter', 'unit', 'secondParameter', 'secondUnit', 'points', 'crossover', 'meta'], 'properties': {'meta': {'type': 'object', 'required': ['engineVersion', 'taxYear'], 'properties': {'taxYear': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'engineVersion': {'type': 'string'}}, 'additionalProperties': False}, 'unit': {'type': 'string'}, 'points': {'type': 'array', 'items': {'type': 'object', 'required': ['value', 'secondValue', 'difference', 'winner', 'buyNetWorthAfterSale', 'rentNetWorth', 'breakEvenYear'], 'properties': {'value': {'type': 'number'}, 'winner': {'enum': ['BUY', 'RENT'], 'type': 'string'}, 'difference': {'type': 'number'}, 'secondValue': {'type': ['number', 'null']}, 'rentNetWorth': {'type': 'number'}, 'breakEvenYear': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}]}, 'buyNetWorthAfterSale': {'type': 'number'}}, 'additionalProperties': False}, 'description': 'One row per grid point; difference is buy minus rent at year 30 after selling costs.'}, 'crossover': {'anyOf': [{'type': 'object', 'required': ['value', 'note'], 'properties': {'note': {'type': 'string'}, 'value': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Single-parameter sweeps only: the interpolated value where the winner flips, or null.'}, 'parameter': {'type': 'string'}, 'secondUnit': {'type': ['string', 'null']}, 'secondParameter': {'type': ['string', 'null']}}, 'additionalProperties': False}
Ajouté
rentbuy_open_calculator
2 October 2026 02:40
Ajouté
rentbuy_sweep
2 October 2026 02:40
Ajouté
rentbuy_compare_scenarios
2 October 2026 02:40
Ajouté
rentbuy_run_scenario
2 October 2026 02:40

Superlógica Condomínios

io.github.mcp-dir/superlogica-mcp

Connects to a condominium ERP for billing, collections, agreements, expenses, bank movements, statements, files, communications, …

DFX Real Estate Intelligence

io.github.Capital-W-Holdings/us-property-parcel-real-estate-debt

Provides US commercial real estate, parcel, debt maturity, bank CRE exposure, private capital, investor, ownership, occupancy, an…

RateAPI — live US mortgage, auto, HELOC, personal & deposit rates

dev.rateapi/mcp

Supplies live US lending and deposit rates, financing comparisons, affordability and amortization calculations, eligibility check…

Rafid Intelligence Network

io.github.iabdullahm/rafid-agent-api

Analyzes Oman properties using rental comparables, yields, costs, and payback metrics, and supports Oman company search, profilin…

Housing Intel

io.github.pipeworx-io/housing-intel

Analyzes housing markets, affordability, mortgage rates, rental yields, property data, employment, metro demand, and investment s…

OpenLMNP

io.github.manganate006/openlmnp

Manages French LMNP furnished-rental accounting, including income, expenses, depreciation, loans, VAT, fiscal calculations, FEC f…

Antevo Wealth

ch.antevo/wealth

Aggregates household wealth data across investments, liabilities, credit facilities, real assets, markets, risk, exposure, and fi…

DataPorium

tech.dataporium/mcp

Provides market and company data covering stocks, ETFs, crypto, forex, commodities, economic indicators, housing, property listin…