# cmbs.loan: CMBS loan rates, lenders and servicing

> CMBS rates, lenders, underwriting, maturity wall and loan sizing from SEC data; servicing rules.

- name: loan.cmbs/cmbs-loan
- version: 1.2026.1101.1
- connection class: R0 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 100/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/loan.cmbs%2Fcmbs-loan
- tools: https://api.protogrid.dev/v1/servers/loan.cmbs%2Fcmbs-loan/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "cmbs-loan": {
      "type": "http",
      "url": "https://cmbs.loan/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 97
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-94% +updated-12d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 100/100 (strong)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 3600000)

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 9 of 9 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,708 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name
- pass `stability.new_links`: no tool change named a new site

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 9, about 2,708 tokens to load them all
- tool set hash: b4d154ecec486927ae26285783d40d8e
- badge: [![protogrid quality](https://protogrid.dev/badge/loan.cmbs/cmbs-loan.svg)](https://protogrid.dev/servers/loan.cmbs/cmbs-loan)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://cmbs.loan/mcp (streamable-http, auth none, reachable true, uptime30d 0.9361702)

## Packages

_none_

## Tools (9)

- `calculate_appraisal_reduction`: Appraisal Reduction Amount for a delinquent CMBS loan from a new appraisal, using the formula in a 2025 pooling and servicing agreement: balance minus (90% of appraised value + reserves - unpaid interest, advances and other amounts due). Returns the value side, the reduction, the share of scheduled interest the servicer keeps advancing, and the 25% deemed reduction that applies if no appraisal arrives in time.
- `estimate_special_servicing_fees`: Special servicing, workout and liquidation fees on a CMBS loan for one outcome (loan corrected and paid at maturity, refinanced within 120 days of a missed maturity, or liquidated/discounted payoff), using the fee terms of a real 2025 pooling and servicing agreement: 0.25%/yr with a $3,500 monthly minimum, 1% workout fee with a $25,000 minimum, 1% to 3% liquidation fee. Returns each fee, the monthly fee and the total.
- `find_cmbs_lenders`: CMBS originators ranked by loan volume over the last 12 months, from the originator named on each loan in the trusts' SEC filings. Filter by property type, state and loan amount (keeps lenders whose securitized loan sizes span it). Returns volume, loan count, size range, median rate, leverage and a page per lender.
- `get_cmbs_lender`: One CMBS originator's securitized book from SEC filings: 12- and 24-month volume, loan sizes, median rate, leverage, property types, states and its most recent loans (property, city, amount, rate, term, trust). Give the lender's name or slug, e.g. "Citi" or "wells-fargo".
- `get_cmbs_maturity_wall`: CMBS loans still reporting, by maturity year: count, balance, average note rate and the share whose NOI at securitization is under 9% of today's balance (a rough refinance-gap proxy), compared with today's median new-loan rate. Overall, by property type or by state (one filter at a time).
- `get_cmbs_rates`: Median original note rates on CMBS loans securitized in the last 90 days, 180 days and 12 months, from SEC Form ABS-EE loan data, overall or for one property type, with the middle half, loan counts, the 5- vs 10-year split and recent months. Rates on closed loans, not a quote.
- `get_cmbs_underwriting`: What CMBS lenders actually underwrote in the last 12 months, from SEC loan data: loan size, loan to value, debt service coverage, debt yield and occupancy (median and percentiles), interest-only share and 5/10-year term mix, overall or for one property type.
- `size_cmbs_loan`: Maximum CMBS loan on a property under the three sizing tests lenders apply, and which one binds: loan to value x value, NOI / (DSCR x annual debt constant at the rate and amortization, or the rate if interest-only), and NOI / debt yield. Limits you omit default to what recent CMBS loans stayed within (90th percentile LTV, 10th percentile DSCR and debt yield, by property type), and the rate to the 90-day median.
- `special_servicing_timeline`: The contractual sequence after a missed monthly payment or a missed balloon on a CMBS loan, day by day: transfer to the special servicer, SEC delinquency status codes, the appraisal reduction trigger and deadline, the 120-day maturity window, each with its PSA section. Give days_elapsed to get which events have already been triggered and the next one with days remaining.
