Worth Sheet: apartment building value at today's loan rates
Server Details
Apartment building value and loan-supported price at the live 10-year Treasury rate.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 3 tools
Each tool has a distinct role: fetching market rates/loan limits, running a rate-ladder sensitivity sweep, and running the full valuation worksheet. rate_sensitivity and value_at_rate both compute a buyer-carryable price at a 10-year Treasury level, which is the one point of potential overlap, but the descriptions clarify that one is a scenario ladder and the other is the complete NOI-to-value workflow.
All names are snake_case and readable, but the conventions are mixed: get_rates_and_loan_limits uses a verb_noun form, value_at_rate is a verb-plus-preposition phrase, and rate_sensitivity is a bare noun phrase. No single predictable pattern runs through the set.
Three tools fit a narrow, focused worksheet purpose: market data, sensitivity, and full valuation. Each earns its place without redundancy, though the set is on the lean side and a fourth tool (e.g. a plain refi/loan-sizing helper) could round it out.
The surface covers the stated domain well: current rates and loan limits, a rate-sensitivity ladder, and a full NOI-to-value worksheet with per-unit value and refi sizing. Minor gaps remain, such as no amortization/payment detail or explicit expense-side DSCR stress, but agents can work around these with the existing tools.
Available Tools
3 toolsget_rates_and_loan_limitsToday's Treasury yields and agency loan limitsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false. The description adds meaningful context beyond that: it discloses the as-of dates, the conditional availability of prior readings, the publisher link, and the specific loan-limit definitions from the term sheets.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the main data types and is dense but efficient. The single long sentence with a semicolon is slightly run-on, but every clause contributes useful detail about what is returned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of explaining return contents. It does this thoroughly for a no-parameter read-only retrieval tool by listing the rates, dates, prior readings, publisher link, loan limits, and spread note, though 'spread note' remains somewhat undefined.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
This tool takes zero parameters, so there are no parameter semantics to explain. The baseline for a no-parameter tool is 4, and the description does not need to compensate for missing schema parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the specific resources retrieved: 5-, 7-, and 10-year Treasury par yields, overnight SOFR, as-of dates, prior readings, publisher link, loan limits, and spread note. It is clear what the tool returns, but it does not explicitly differentiate itself from siblings like rate_sensitivity or value_at_rate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies retrieval of current rate and loan-limit data, but it gives no explicit guidance on when to use this tool versus the sibling tools rate_sensitivity and value_at_rate. There are no stated exclusions or alternative conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rate_sensitivityHow loan rates move what a buyer can payARead-onlyIdempotentInspect
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?".
| Name | Required | Description | Default |
|---|---|---|---|
| dscr | No | Min debt service coverage, times. Default 1.25 (both agencies' term sheets). | |
| ltv_pct | No | Max loan-to-value, percent. Default 80 (Fannie Mae and Freddie Mac conventional term sheets). | |
| shifts_bp | No | Moves in the 10-year to test, in basis points. Default [-100,-50,-25,0,25,50,100]. | |
| tax_reset | No | 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 | Yes | Net operating income per year in US dollars, e.g. 300000. | |
| spread_pct | No | Lender spread over the 10-year, percent. Default 1.75, the worksheet's placeholder (not a quote). | |
| tax_rate_pct | No | 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 | No | 10-year Treasury yield to use, percent. Default: the latest daily par yield the site has (U.S. Treasury). | |
| amortization_years | No | Amortization in years. Default 30. | |
| property_taxes_annual | No | Current property taxes inside that NOI, US dollars. Needed only with tax_reset. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this a read-only, idempotent, closed-world computation, so the safety profile is covered. The description adds real behavioral substance beyond that: the sizing is income-limited via DSCR as well as LTV, the ladder is centered on today's Treasury by default, and the default scenario set is -100 to +100 bp. It does not describe the shape of the returned ladder (units, length), which is the remaining gap given no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the key defaults and the ladder range are front-loaded ahead of the example question. The first sentence is syntactically dense and slightly hard to parse on a first read, which costs a point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a ten-parameter pricing model with no output schema, the description conveys what is being solved (constrained price and loan size), the default scenario grid, and the default underwriting assumptions. What is missing is the return shape — whether the output is a table keyed by shift, and in what units — which matters for an agent that must interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all ten parameters carry defaults and rationale (agency term sheets, placeholder spread, tax reset semantics), so the schema does the heavy lifting. The description only corroborates the 80% LTV, 1.25x DSCR and default shift range rather than adding new meaning. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific computation on a specific resource: it solves the price a financed buyer can carry and the income-limited loan size across a ladder of 10-year Treasury shifts for a given NOI. That is far more than a restatement of the name. It does not explicitly name the sibling it is not (value_at_rate, get_rates_and_loan_limits), so an agent must infer the difference from the 'ladder' framing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is conveyed only by the illustrative question ('what is my building worth to a buyer if rates drop half a point?') and the ladder framing. There is no explicit when-to-use or when-not-to-use statement, and the sibling value_at_rate is never mentioned even though the two are close enough to confuse an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
value_at_rateValue an apartment building at today's loan ratesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dscr | No | Min debt service coverage, times. Default 1.25 (both agencies' term sheets). | |
| units | No | Number of units, for per-unit value when you give noi_annual. | |
| ltv_pct | No | Max loan-to-value, percent. Default 80 (Fannie Mae and Freddie Mac conventional term sheets). | |
| unit_mix | No | Rent roll by unit type, e.g. [{"units":12,"monthly_rent":1250},{"units":16,"monthly_rent":1500}]. Give this or noi_annual. | |
| tax_reset | No | 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 | No | Net operating income per year in US dollars, if you already know it. Give this or unit_mix (not both). | |
| spread_pct | No | Lender spread over the 10-year, percent. Default 1.75, the worksheet's placeholder (not a quote). | |
| vacancy_pct | No | Vacancy and bad debt, percent of gross. Default 5. | |
| loan_balance | No | Your current loan balance, US dollars, to compare against the refinance loan. Optional. | |
| tax_rate_pct | No | 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 | No | Management, percent of collected income; charge it even if self-managed. Default 5. | |
| payroll_annual | No | Payroll per year, US dollars. Default 0. | |
| cap_rate_low_pct | Yes | 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 | No | Insurance per year, US dollars. Default 0. | |
| utilities_annual | No | Owner-paid utilities per year, US dollars. Default 0. | |
| cap_rate_high_pct | Yes | High end of the cap rate range, percent, e.g. 7. | |
| reserves_per_unit | No | Replacement reserves per unit per year, US dollars. Default 300. | |
| treasury_10yr_pct | No | 10-year Treasury yield to use, percent. Default: the latest daily par yield the site has (U.S. Treasury). | |
| admin_other_annual | No | Admin, legal and other expenses per year, US dollars. Put any lump-sum expense total (excluding property taxes) here. Default 0. | |
| amortization_years | No | Amortization in years. Default 30. | |
| other_income_monthly | No | Other income per month (laundry, parking, fees), US dollars. Default 0. | |
| property_taxes_annual | No | Property taxes per year, US dollars. Default 0. With noi_annual, needed only for tax_reset. | |
| repairs_maintenance_annual | No | Repairs, maintenance and turnover per year, US dollars. Default 0. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that the result is an estimate from supplied numbers, not an appraisal, and notes the latest Treasury default, which is useful behavioral context without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and outputs are front-loaded in a compact two-sentence description despite the tool's complexity. Every clause carries relevant information, and the appraisal caveat is appropriately placed at the end.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the important work of naming the returned metrics: NOI, expense ratio, value range, financed-buyer price, per-unit value, and refinance loan. It is complete enough for invocation, though output formatting is not specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema itself documents all 23 parameters thoroughly. The description reinforces the main inputs and defaults but does not add much parameter-level detail beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: runs a named valuation worksheet for 5+ unit apartment buildings and lists the main outputs. It is clear what the tool does, but it does not explicitly differentiate itself from the sibling rate tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Makes the usage context clear: rent roll plus a year of expenses, or a known NOI. It does not explicitly say when to choose this over get_rates_and_loan_limits or rate_sensitivity, but the input conditions are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
- First observed
get_rates_and_loan_limits - First observed
rate_sensitivity - First observed
value_at_rate
Related MCP Connectors
CRE market data: Treasury, SOFR, bank CRE delinquency, CMBS, prices and cap rates, sourced.
Size an apartment loan under Fannie Mae, Freddie Mac and HUD published limits, side by side.
US real estate data: home prices, rents, and market trends
Live CRE analysis: Federal Reserve rates, Census 1/3/5-mile demographics, DCF models, IC memos.
Related MCP Servers
- AlicenseAqualityAmaintenanceMultifamily real estate deal analysis — analyze deals, score properties, calculate max offer prices, and look up market data. Four tools for underwriting 2-200 unit apartment properties.4144 npm4MIT
- AlicenseNot gradedqualityDmaintenanceLive real estate market data for 895 US metros. Ask your AI assistant about home prices, rental yields, investment health scores, migration trends, and affordability. Free tier covers top 50 markets (no account needed). Premium tier unlocks all 895 markets, HUD Fair Market Rents, side-by-side market comparison, and filtered market search.MIT
- AlicenseNot gradedqualityDmaintenanceSubmarket-level US residential rental intelligence for AI agents. Search, compare, rank, and analyze rent data, trends, vacancy, affordability, and days on market across 1,000+ named submarkets in the 20+ largest US metros. ZIP-level and metro-level queries included. Always current, always expanding. Free tier available.1MIT
- AlicenseNot gradedqualityBmaintenanceLandlord and rental-property calculators as MCP tools: cash flow, cap rate, DSCR, Airbnb break-even occupancy, rent late fees, lease notice dates, and IRS mileage. Offline and deterministic, with no dependencies.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.