cmbs.news: CMBS loan data

Free CMBS loan data from SEC filings, no key on the free tier: search loans, open loan and trust records, the monthly distress index, special servicing transfers, tenant exposure and comps. Remote endpoint: https://cmbs.news/mcp

Hosted MCP Server

npx add-mcp 'https://cmbs.news/mcp'

Installs into Claude Code, Codex, Cursor and more

Documentation

CMBS data for your code and your agents

The loans in public CMBS trusts that file with the SEC (12,119 loans, $283.3B), the special servicer's comments, the trusts' bond classes, the distress index (4.18% delinquent in October 2026) and the monthly Wire, as a JSON API and a remote MCP server. Start with no key and no sign-up, within the free limits below. Pro lifts them.

Limits

Free, no keyPro, $199 a monthTeam, $399 a month
Calls a day (API and MCP together)252,00050,000
Rows a call10100100
How deep a search readsThe first 25 resultsFull pagingFull paging
Lists (trusts, tenants, comps, a Wire section)25400400
FieldsSnapshot fields; each answer's proFields names what Pro addsAllAll
History, guarantors and contactsNoYesYes
CSV of any listNoYes (?format=csv), up to 5,000 rows a fileYes, no row limit
Whole-database filesNoNoYes

Past the daily allowance a call returns 429; it resets at midnight UTC. Free calls through Claude share one pool of 5,000 a day, because its users all arrive from the same published addresses and a call does not say which user is asking. Free calls through ChatGPT count each user separately, at the free allowance above. A program that only says in its User-Agent that it is an assistant gets 500 a day per address. A key goes in an Authorization: Bearer header, and you make one on your account page.

Use it with Claude, ChatGPT, Cursor or VS Code

The MCP server is at https://cmbs.news/mcp (Streamable HTTP). It works with no key on the free limits. With a Pro or Team key, send it as an Authorization: Bearer header; an assistant that cannot send headers can use the address with ?key=YOUR_KEY on the end. Treat that address like a password.

Claude

In Claude on the web or in the desktop app, open Customize, then Connectors, choose Add custom connector, type cmbs.news as the name, paste the address below and leave sign-in off: the free plan needs none. This link opens that dialog with both filled in, and nothing is added until you confirm.

https://cmbs.news/mcp

On a Team or Enterprise plan an Owner adds it first, under Organization settings, Connectors (the same link for Owners).

Claude Code

claude mcp add --transport http cmbs-news https://cmbs.news/mcp

With a key:

claude mcp add --transport http cmbs-news https://cmbs.news/mcp --header "Authorization: Bearer YOUR_KEY"

ChatGPT

Open chatgpt.com/plugins on the web, choose the plus button, then Add custom MCP server. Paste the address below, set Authentication to No authentication, accept the warning with "I understand and want to continue", and choose Create as a plugin. In a chat, type @ and pick the plugin to use it. If the plus button has no Add custom MCP server option, your workspace's permissions or security settings may be blocking custom servers; ask your workspace admin. OpenAI moves these menus; its help pages name the current ones.

https://cmbs.news/mcp

Cursor and VS Code

Add to Cursor

Each opens the editor and asks you to confirm.

Windsurf and other clients

In a client that reads an mcp.json (Cursor: .cursor/mcp.json), leave headers out for the free plan:

{
  "mcpServers": {
    "cmbs-news": {
      "type": "http",
      "url": "https://cmbs.news/mcp",
      "headers": { "Authorization": "Bearer YOUR_KEY" }
    }
  }
}

Copy

YOUR_KEY is the Pro or Team key from your account page. On the free plan, delete the headers line and the comma before it.

Then ask things like "Which Walgreens-anchored CMBS loans mature before 2028 and are under 1.2x?", "What did the special servicer say about One SoHo Square?" or "Office delinquency by vintage".

ToolWhat it returnsWith a Pro or Team key
search_loansFind loans by property, city, status, type, state, metro, tenant, maturity, balance or coverage.
get_loanOne loan: terms, status, trusts, special servicer comment facts, appraisal reduction, and termsAtIssuance from its prospectus.History, operating statement, rent roll detail, comment excerpt, modification terms, reserves, prepayment provisions, debt amounts and full tenant rows at issuance
get_loan_partiesGuarantors, named parties and contacts from SEC filings, each with its source.Pro and Team only
get_loan_historyEvery monthly report back to the first filing (late 2016 at the earliest).Pro and Team only
get_loan_servicerWhat each trust's trustee report said about a loan, month by month, and what changed: comment facts, strategy, dates, appraisal values.Pro and Team only
get_other_loans_by_nameFor each guarantor or sponsor name on a loan, the other loans whose filings print the same name: balance, status, maturity and the filing. Same printed name as of issuance, not proof of one person or company.Pro and Team only
get_loan_companiesFor each company or fund a loan's prospectus names: state business records under that name (entity number, status, agent, addresses, officers where the state publishes them) and the people tied to it.Pro and Team only
reveal_contactOne person's business email, mobile number and LinkedIn. Counts against a monthly allowance: 50 on Pro, 250 on Team.Pro and Team only
get_trustA trust: parties, certificate classes with CUSIPs and credit support, liquidations and losses.
list_trustsTrusts, most distressed first.Up to 400
find_cusipA certificate class by CUSIP.
distress_indexDelinquency and special-servicing rates and this month's flows, by property type; set view for vintage (and type by vintage), state, the monthly series since December 2016, or seasoning.
wireThis month's transfers, delinquencies, appraisal reductions, losses and servicer updates.Comment excerpts
tenant_exposureEvery loan a tenant backs, or the tenants with the most exposure.Up to 400
compsProperty comps: NOI per square foot, occupancy, DSCR, value, with medians.Up to 400
aboutCoverage, as-of dates, plan limits, license and links.

If it does not work

  • It asks you to sign in. The free server needs no sign-in. Choose No authentication in ChatGPT, leave sign-in off in Claude, and leave any key or header field empty.
  • The connection fails or no tools appear. The address must be exactly https://cmbs.news/mcp. Opening it in a browser shows a short 405 note, which is normal: the server answers POST requests from an MCP client, and a client that speaks only the older SSE transport cannot connect.
  • The answer says "That key was not recognised". The key is mistyped (check for a stray space) or has been revoked. Make a new one on your account page, or leave the key out to use the free plan.
  • The answer says the daily allowance is used. The free plan allows 25 calls a day and resets at midnight UTC; see Limits above. Calls through Claude share one pool.
  • Answers stop at 10 rows or leave fields out. That is the free plan. The answer's capped, proFields or proRequired field says what was left out.
  • Something else. Report it or write to desk@cmbs.news with the assistant you used and what the answer said.

JSON API

Base URL https://cmbs.news/api/v1. Every response is JSON with CORS open. Free answers are cached for an hour; Pro and Team answers are never cached. Schema: /openapi.json (OpenAPI 3.1, works with GPT Actions and most agent frameworks).

curl "https://cmbs.news/api/v1/loans?status=special_servicing&type=office&state=NY&limit=5"
curl "https://cmbs.news/api/v1/loans/20-times-square-new-york-ny"
curl "https://cmbs.news/api/v1/trusts/benchmark-2018-b8"
curl "https://cmbs.news/api/v1/index"
curl "https://cmbs.news/api/v1/tenants/walgreens"
curl -H "Authorization: Bearer YOUR_KEY" "https://cmbs.news/api/v1/loans/20-times-square-new-york-ny/history?format=csv"
EndpointWhat it returns
/loansSearch: q, status, type, state, cbsa, city, tenant, maturing_after, maturing_before, min_balance, max_balance, min_dscr, max_dscr, min_occupancy, max_occupancy, min_rate, max_rate, vintage, special_servicer, originator, trust, sort, limit, offset. q matches word starts in the property name, street address, ZIP, city, metro, state, type and trust name, so q=houston office finds Houston's office loans and q=825 Eighth Avenue finds that building. noCoverage counts the loans matching everything but the coverage filters that report no coverage; noCoverageLeftOut says a coverage filter left them out. special_servicer is the trust's special servicer: it finds loans in trusts whose general special servicer is that name. It does not say who services a given loan, since a loan split across trusts or with its own servicing agreement is often serviced by someone else.
/loans/{slug}One loan with its trusts and trustee-report facts; Pro adds history and the rest of proFields. specialServicer appears only when one trust holds the whole loan and that trust's report names one special servicer.
/loans/{slug}/historyPro and Team: every monthly report back to the first filing (also ?format=csv)
/loans/{slug}/partiesPro and Team: guarantors, named parties and contacts from SEC filings, with sources
/loans/{slug}/other-loansPro and Team: for each guarantor or sponsor name printed on the loan, the other loans whose filings print the same name, with balance, status, maturity and the filing (name, limit, offset). Same printed name in SEC filings, as of issuance; it does not show they are one person or company. Not a consumer report: see the terms
/loans/{slug}/companiesPro and Team: for each company or fund the loan's prospectus names, the state business records under that name, with the source and date read, and the people tied to it. A record matches on the same name; it does not prove it is the company the filing means.
POST /contacts/{personId}/revealPro and Team: one person's business email, mobile number and LinkedIn; calling or texting the number is subject to the TCPA and Do Not Call rules. Each new person counts against the account's monthly allowance (50 on Pro, 250 on Team); the answer says how many are left. Business use only, no extracting or resale.
/trusts, /trusts/{slug}Trusts; one trust's parties, certificate classes and liquidations
/cusips/{cusip}A certificate class by CUSIP
/indexThe whole distress index, including byTypeVintage (also CSV); the MCP tool returns it in parts, by its view argument. Rates are null in a cell with fewer than 50 loans (suppression), and months before July 2020 are not comparable with later ones (seasoning).
/wireThis month's events, by section
/tenants, /tenants/{name}Tenant exposure
/compsProperty comps with medians
/metros, /meta, /changelogReference data, coverage and the change log

Files

  • Open to everyone: the distress index series since December 2016, CSV or JSON, and by property type (CSV, which usually ends a month before the index), both CC BY 4.0. Lines starting with # in the CSV files are notes. Site maps for agents: /llms.txt and /llms-full.txt.
  • Pro and Team: a CSV of any list, by the link on its page, by ?format=csv on any list endpoint, or at /data/downloads/ (deal/{slug}.csv, metro/{slug}.csv, type/{type}.csv, maturing-{year}.csv, calendar/{month}.csv, watch-list.csv, special-servicing.csv). On Pro, ?format=csv stops at 5,000 rows: a file cut short has an X-Capped header (5000 of 12122 rows) and says so on its last line, which starts with #, and a JSON answer on a list that long carries csvCap. Paging the JSON is unchanged. Team has no row limit. A CSV of loans adds who the prospectus names and where, as of issuance: guarantor_as_of_issuance, sponsor_as_of_issuance, guarantor_flag_as_of_issuance and issuance_source_url. The Team bulk loans.csv has them too. It also adds the loan's terms at issuance, read from the prospectus: appraised value and date, LTV, underwritten DSCR and debt yield, lockbox, cash management, ownership interest, prepayment provisions and other debt.
  • Team: whole-database files at /api-data/: loans.csv, loans-extra.json, deals.json, deals-extra.json, tenants.json, comps.json, wire-latest.json, distress-cube.csv (the distress index's balances by month, property type, vintage and state), terms.csv (each note's terms at issuance from its prospectus's Annex A, keyed by loan and trust) and terms-properties.csv (the same for each property of a portfolio).

Terms

  • The data is compiled from public SEC filings. Free: your own internal use with credit to "cmbs.news" and a link. Pro and Team: internal use and client deliverables. No plan allows resale, redistribution or republishing as a dataset. The distress index alone is open under CC BY 4.0.
  • Servicer-reported and unaudited, about a month behind the real world. No warranty; see the terms and the methodology.
  • Coverage: the public trusts that file loan-level data with the SEC. Private Rule 144A single-borrower deals, CRE CLOs, agency and bank loans are not in it.

Breaking changes are announced on the changelog first. Questions or a bug: report it or desk@cmbs.news.