Worth Sheet MCP
An MCP server that allows AI assistants to value apartment buildings using rent rolls and expenses, determine loan-supported prices at current 10-year Treasury rates, and analyze rate sensitivity. It provides tools for valuation, rate sensitivity analysis, and retrieving current Treasury yields and loan limits.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://multifamily.forsale/mcpWhat you can do with it
- Value an apartment building from its rent roll and expenses
- Determine the price a financed buyer can pay at today's rates
- Analyze how rate changes affect loan-supported prices
- Retrieve current Treasury yields and Fannie Mae/Freddie Mac loan limits
Source and maintenance
Protocol and capabilities
- Server
- multifamily-forsale 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 3 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
3 advertised
value_at_rate — Value an apartment building at today's loan rates
Runs the Worth Sheet valuation worksheet for a 5+ unit apartment building: from a rent roll and a year of expenses (or a known NOI) it returns NOI, expense ratio, value across your cap rate range, the price a financed buyer can carry at the latest 10-year Treasury plus a lender spread (80% LTV, 1.25x DSCR by default), per-unit value, and the refinance loan the income supports against your balance. An estimate from your numbers, not an appraisal.
{
"type": "object",
"required": [
"cap_rate_low_pct",
"cap_rate_high_pct"
],
"properties": {
"dscr": {
"type": "number",
"default": 1.25,
"maximum": 3,
"minimum": 1,
"description": "Min debt service coverage, times. Default 1.25 (both agencies' term sheets)."
},
"units": {
"type": "integer",
"maximum": 5000,
"minimum": 1,
"description": "Number of units, for per-unit value when you give noi_annual."
},
"ltv_pct": {
"type": "number",
"default": 80,
"maximum": 100,
"minimum": 1,
"description": "Max loan-to-value, percent. Default 80 (Fannie Mae and Freddie Mac conventional term sheets)."
},
"unit_mix": {
"type": "array",
"items": {
"type": "object",
"required": [
"units",
"monthly_rent"
],
"properties": {
"label": {
"type": "string",
"maxLength": 40,
"description": "Optional name, e.g. \"2 bedroom\"."
},
"units": {
"type": "integer",
"maximum": 5000,
"minimum": 0
},
"monthly_rent": {
"type": "number",
"maximum": 100000,
"minimum": 0
}
},
"additionalProperties": false
},
"maxItems": 10,
"minItems": 1,
"description": "Rent roll by unit type, e.g. [{\"units\":12,\"monthly_rent\":1250},{\"units\":16,\"monthly_rent\":1500}]. Give this or noi_annual."
},
"tax_reset": {
"type": "boolean",
"default": false,
"description": "True if a sale resets the property tax bill to a share of the price; value is then solved with taxes at tax_rate_pct of price."
},
"noi_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Net operating income per year in US dollars, if you already know it. Give this or unit_mix (not both)."
},
"spread_pct": {
"type": "number",
"default": 1.75,
"maximum": 10,
"minimum": 0,
"description": "Lender spread over the 10-year, percent. Default 1.75, the worksheet's placeholder (not a quote)."
},
"vacancy_pct": {
"type": "number",
"default": 5,
"maximum": 95,
"minimum": 0,
"description": "Vacancy and bad debt, percent of gross. Default 5."
},
"loan_balance": {
"type": "number",
"maximum": 5000000000,
"minimum": 0,
"description": "Your current loan balance, US dollars, to compare against the refinance loan. Optional."
},
"tax_rate_pct": {
"type": "number",
"default": 1.5,
"maximum": 10,
"minimum": 0,
"description": "Tax rate on the new value, percent of price (county millage as a percent). Default 1.5. Used only when tax_reset is true."
},
"management_pct": {
"type": "number",
"default": 5,
"maximum": 30,
"minimum": 0,
"description": "Management, percent of collected income; charge it even if self-managed. Default 5."
},
"payroll_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Payroll per year, US dollars. Default 0."
},
"cap_rate_low_pct": {
"type": "number",
"maximum": 20,
"minimum": 1,
"description": "Low end of the cap rate range brokers quote for similar buildings, percent, e.g. 5.5. No government source publishes cap rates."
},
"insurance_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Insurance per year, US dollars. Default 0."
},
"utilities_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Owner-paid utilities per year, US dollars. Default 0."
},
"cap_rate_high_pct": {
"type": "number",
"maximum": 20,
"minimum": 1,
"description": "High end of the cap rate range, percent, e.g. 7."
},
"reserves_per_unit": {
"type": "number",
"maximum": 10000,
"minimum": 0,
"description": "Replacement reserves per unit per year, US dollars. Default 300."
},
"treasury_10yr_pct": {
"type": "number",
"maximum": 20,
"minimum": 0,
"description": "10-year Treasury yield to use, percent. Default: the latest daily par yield the site has (U.S. Treasury)."
},
"admin_other_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Admin, legal and other expenses per year, US dollars. Put any lump-sum expense total (excluding property taxes) here. Default 0."
},
"amortization_years": {
"type": "integer",
"default": 30,
"maximum": 40,
"minimum": 5,
"description": "Amortization in years. Default 30."
},
"other_income_monthly": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Other income per month (laundry, parking, fees), US dollars. Default 0."
},
"property_taxes_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Property taxes per year, US dollars. Default 0. With noi_annual, needed only for tax_reset."
},
"repairs_maintenance_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Repairs, maintenance and turnover per year, US dollars. Default 0."
}
},
"additionalProperties": false
}{
"title": "Value an apartment building at today's loan rates",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}rate_sensitivity — How loan rates move what a buyer can pay
For an apartment building's net operating income, the price a financed buyer can carry and the income-limited loan size at a ladder of 10-year Treasury levels around today's (default -100 to +100 bp), at 80% LTV and 1.25x DSCR by default. Answers "what is my building worth to a buyer if rates drop half a point?".
{
"type": "object",
"required": [
"noi_annual"
],
"properties": {
"dscr": {
"type": "number",
"default": 1.25,
"maximum": 3,
"minimum": 1,
"description": "Min debt service coverage, times. Default 1.25 (both agencies' term sheets)."
},
"ltv_pct": {
"type": "number",
"default": 80,
"maximum": 100,
"minimum": 1,
"description": "Max loan-to-value, percent. Default 80 (Fannie Mae and Freddie Mac conventional term sheets)."
},
"shifts_bp": {
"type": "array",
"items": {
"type": "integer",
"maximum": 300,
"minimum": -300
},
"maxItems": 13,
"minItems": 1,
"description": "Moves in the 10-year to test, in basis points. Default [-100,-50,-25,0,25,50,100]."
},
"tax_reset": {
"type": "boolean",
"default": false,
"description": "True if a sale resets the property tax bill to a share of the price; value is then solved with taxes at tax_rate_pct of price."
},
"noi_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Net operating income per year in US dollars, e.g. 300000."
},
"spread_pct": {
"type": "number",
"default": 1.75,
"maximum": 10,
"minimum": 0,
"description": "Lender spread over the 10-year, percent. Default 1.75, the worksheet's placeholder (not a quote)."
},
"tax_rate_pct": {
"type": "number",
"default": 1.5,
"maximum": 10,
"minimum": 0,
"description": "Tax rate on the new value, percent of price (county millage as a percent). Default 1.5. Used only when tax_reset is true."
},
"treasury_10yr_pct": {
"type": "number",
"maximum": 20,
"minimum": 0,
"description": "10-year Treasury yield to use, percent. Default: the latest daily par yield the site has (U.S. Treasury)."
},
"amortization_years": {
"type": "integer",
"default": 30,
"maximum": 40,
"minimum": 5,
"description": "Amortization in years. Default 30."
},
"property_taxes_annual": {
"type": "number",
"maximum": 1000000000,
"minimum": 0,
"description": "Current property taxes inside that NOI, US dollars. Needed only with tax_reset."
}
},
"additionalProperties": false
}{
"title": "How loan rates move what a buyer can pay",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_rates_and_loan_limits — Today's Treasury yields and agency loan limits
The latest 5-, 7- and 10-year Treasury par yields and overnight SOFR the site has, each with its as-of date, the readings a week and a month earlier when the daily feed has them, and publisher link; plus the loan limits the worksheet uses (80% max LTV, 1.25x min DSCR from the Fannie Mae and Freddie Mac term sheets) and the spread note.
{
"type": "object",
"properties": {},
"additionalProperties": false
}{
"title": "Today's Treasury yields and agency loan limits",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 425 ms
- 95th percentile latency
- 425 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 425 ms · metadata changed · 3 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http worth-sheet-mcp https://multifamily.forsale/mcpCodex
codex mcp add worth-sheet-mcp --url https://multifamily.forsale/mcpCursor
{
"mcpServers": {
"worth-sheet-mcp": {
"url": "https://multifamily.forsale/mcp"
}
}
}Cline
{
"mcpServers": {
"worth-sheet-mcp": {
"type": "streamableHttp",
"url": "https://multifamily.forsale/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"worth-sheet-mcp": {
"type": "http",
"url": "https://multifamily.forsale/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http worth-sheet-mcp https://multifamily.forsale/mcpClaude Desktop
{
"mcpServers": {
"worth-sheet-mcp": {
"url": "https://multifamily.forsale/mcp"
}
}
}Windsurf
{
"mcpServers": {
"worth-sheet-mcp": {
"serverUrl": "https://multifamily.forsale/mcp"
}
}
}Let your agent find its tools
Find servers like Worth Sheet MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run Worth Sheet MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.