Koskamo

cmbs.news MCP

An MCP server providing programmatic access to loan-level CMBS data from SEC filings, including tools to search loans, retrieve trust details, check distress indices, and analyze tenant exposure and comparables for AI agents.

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.

cmbs.news MCP logo, by Janover Capital LLCVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-07Operated by Janover Capital LLC
You need:no key needed on the free limitsa key goes in an Authorization: Bearer header
MCP endpoint (Streamable HTTP)
https://cmbs.news/mcp
Vendor documentation

What its tools do

12 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

12 of 12 have a description · 12 of 12 declare behavior hints · 10 of 10 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to cmbs.news ·
  • Passed Endpoint is on the registry namespace domain ·
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Search for CMBS loans by property, city, or status
  • Retrieve detailed loan terms and special servicer comments
  • Analyze monthly delinquency and special-servicing rates
  • Find tenant exposure across CMBS portfolios

Source and maintenance

Vendor evidenceRegistry 1.2026.1107.0

Protocol and capabilities

Server
cmbs.news 1.1.0
MCP protocol negotiated in check
2025-11-25
Tools
12 advertised
Resources
Not advertised
Resource templates
Not advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

cmbs.news: loan-level data on the loans in public CMBS trusts that file with the SEC (about 12,000 loans, $280B), read monthly from Form ABS-EE Schedule AL and Form 10-D trustee reports. Single-asset (SASB) and other private deals do not file, so they are not included. Use search_loans to find loans by property, city, status, type, state, metro, tenant or maturity; get_loan for one loan's record and the special servicer's comment facts; get_trust for a trust's parties, bond classes (CUSIPs, credit support) and losses; distress_index for monthly delinquency and special-servicing rates; wire for this month's transfers, delinquencies, appraisal reductions and losses; tenant_exposure for every loan a tenant backs; comps for property NOI, occupancy and value by market; get_loan_parties and get_loan_history for a loan's guarantors and contacts from SEC filings and its full monthly history (Pro and Team). Not covered: private Rule 144A single-borrower deals, CRE CLOs, agency and bank loans, and the servicer watchlist (not filed with the SEC). Figures are servicer-reported and lag about a month. Cite cmbs.news and link the loan's url. cmbs.news is published by Janover Capital LLC. Free plan, no key: 25 calls a day, 10 rows a call, the first 25 results of a search, lists of 25, snapshot fields only, for internal use with credit. When a result says capped, proFields or proRequired, tell the user what Pro adds: 2,000 calls a day, 100 rows a call, full paging, every field (history, operating statement, rent roll detail, servicer comment excerpts, modification terms), guarantors and contacts from SEC filings, and client deliverables under its license, for $199 a month; Team adds 50,000 calls a day, unlimited people and whole-database bulk files for $399 a month. No plan allows resale or redistribution. A key goes in an Authorization: Bearer header. https://cmbs.news/pro/

Tools

12 advertised

search_loans — Search CMBS loans
Advertised by the server during the last successful anonymous check.
Advertised read-only

Find loans in public CMBS trusts. All filters are optional and combine. Returns the loans (largest first by default), the total count and balance.

search_loans input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "q": {
      "type": "string",
      "description": "Word starts in the property name, street address, ZIP, city, metro, state, property type or trust name, e.g. \"times square\", \"825 Eighth Avenue\" or \"houston office\""
    },
    "cbsa": {
      "type": "string",
      "description": "Census CBSA metro code, e.g. 35620 for New York"
    },
    "sort": {
      "enum": [
        "balance",
        "maturity",
        "dscr",
        "transfer"
      ],
      "type": "string",
      "description": "Order"
    },
    "type": {
      "enum": [
        "office",
        "retail",
        "multifamily",
        "lodging",
        "industrial",
        "mixed-use",
        "self-storage",
        "manufactured-housing",
        "healthcare",
        "other"
      ],
      "type": "string",
      "description": "Property type"
    },
    "limit": {
      "type": "number",
      "description": "Results per call: up to 10 free, 100 with a Pro or Team key"
    },
    "state": {
      "type": "string",
      "description": "Two-letter state or territory code"
    },
    "trust": {
      "type": "string",
      "description": "Only loans in this trust, by slug, e.g. \"benchmark-2018-b8\""
    },
    "offset": {
      "type": "number",
      "description": "For paging: free stops at the first 25 results; Pro and Team page through everything"
    },
    "status": {
      "enum": [
        "special_servicing",
        "delinquent",
        "distressed",
        "watch",
        "matured_unpaid",
        "current"
      ],
      "type": "string",
      "description": "Loan condition"
    },
    "tenant": {
      "type": "string",
      "description": "A tenant named among the three largest, e.g. \"Walgreens\""
    },
    "vintage": {
      "type": "string",
      "description": "Origination year, e.g. \"2021\""
    },
    "max_dscr": {
      "type": "number",
      "description": "Maximum latest DSCR, e.g. 1.0"
    },
    "max_rate": {
      "type": "number",
      "description": "Maximum current interest rate, as a fraction or percent"
    },
    "min_dscr": {
      "type": "number",
      "description": "Minimum latest DSCR, e.g. 1.25"
    },
    "min_rate": {
      "type": "number",
      "description": "Minimum current interest rate, as a fraction or percent: 0.05 or 5"
    },
    "originator": {
      "type": "string",
      "description": "Originator, or part of the name, e.g. \"Wells Fargo\""
    },
    "max_balance": {
      "type": "number",
      "description": "Maximum balance in dollars"
    },
    "min_balance": {
      "type": "number",
      "description": "Minimum balance in dollars"
    },
    "max_occupancy": {
      "type": "number",
      "description": "Maximum latest occupancy, as a fraction or percent"
    },
    "min_occupancy": {
      "type": "number",
      "description": "Minimum latest occupancy, as a fraction or percent: 0.8 or 80"
    },
    "maturing_after": {
      "type": "string",
      "description": "YYYY-MM or YYYY-MM-DD"
    },
    "maturing_before": {
      "type": "string",
      "description": "YYYY-MM or YYYY-MM-DD"
    },
    "special_servicer": {
      "type": "string",
      "description": "Trust's special servicer: finds loans in trusts whose general special servicer is this name, or part of it, e.g. \"Rialto\". A given loan may be serviced by someone else"
    }
  },
  "additionalProperties": false
}
search_loans annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_loan — Get one CMBS loan
Advertised by the server during the last successful anonymous check.
Advertised read-only

One loan: terms, status, coverage, occupancy, the three largest tenants, watch flags, every trust holding a piece, and from the trustee report the special servicer's comment facts, appraisal reduction and advances. The special servicer is named only when one trust holds the whole loan and its report names one. A Pro or Team key adds the 12-month history, the operating statement, the rent roll detail, the servicer comment excerpt and modification terms.

get_loan input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "The loan slug: the last part of its cmbs.news URL, from search_loans"
    }
  },
  "additionalProperties": false
}
get_loan annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_loan_parties — Guarantors and contacts for a loan
Advertised by the server during the last successful anonymous check.
Advertised read-only

Pro and Team: the guarantors, named parties and contacts SEC filings give for one loan (prospectus Annex A-1, the trust's 10-D), each with a link to its filing. Without a key it says how many are on file and how to get them.

get_loan_parties input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "The loan slug: the last part of its cmbs.news URL, from search_loans"
    }
  },
  "additionalProperties": false
}
get_loan_parties annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_loan_history — Full monthly history of a loan
Advertised by the server during the last successful anonymous check.
Advertised read-only

Pro and Team: every monthly report for one loan back to its first filing (late 2016 at the earliest): balance, payment status, special servicing, workout strategy, modification, coverage and occupancy. Without a key it says how to get it; the loan page shows the last six months.

get_loan_history input schema
{
  "type": "object",
  "required": [
    "slug"
  ],
  "properties": {
    "slug": {
      "type": "string",
      "description": "The loan slug: the last part of its cmbs.news URL, from search_loans"
    }
  },
  "additionalProperties": false
}
get_loan_history annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
get_trust — Get one CMBS trust
Advertised by the server during the last successful anonymous check.
Advertised read-only

A trust (deal) by slug or name fragment: balance and distress, parties (master and special servicer, directing certificateholder, operating advisor, trustee), every certificate class with CUSIP, coupon, balance, losses and credit support, and liquidated loans with loss severity.

get_trust input schema
{
  "type": "object",
  "required": [
    "trust"
  ],
  "properties": {
    "trust": {
      "type": "string",
      "description": "Trust slug like \"benchmark-2018-b8\" or a name fragment like \"BANK 2019-BNK16\""
    }
  },
  "additionalProperties": false
}
get_trust annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
list_trusts — List CMBS trusts
Advertised by the server during the last successful anonymous check.
Advertised read-only

Public CMBS trusts, most distressed first (share of balance delinquent or with the special servicer), optionally filtered by name.

list_trusts input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "q": {
      "type": "string",
      "description": "Name fragment, e.g. \"Benchmark\" or \"2021\""
    },
    "limit": {
      "type": "number",
      "description": "Up to 25 free, 400 with a Pro or Team key"
    }
  },
  "additionalProperties": false
}
list_trusts annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
distress_index — CMBS distress index
Advertised by the server during the last successful anonymous check.
Advertised read-only

The cmbs.news distress index: monthly delinquency, special-servicing and matured-unpaid rates (balance-weighted, every public trust), plus current rates by property type, vintage, property type by vintage and state, and this month's transfers in and out of special servicing. Open data under CC BY 4.0.

distress_index input schema
{
  "type": "object",
  "required": [],
  "properties": {},
  "additionalProperties": false
}
distress_index annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
wire — This month in CMBS
Advertised by the server during the last successful anonymous check.
Advertised read-only

The latest monthly Wire: loans transferred to or returned from special servicing, newly delinquent, moved deeper into delinquency, new appraisal reductions, liquidations with losses, and special servicer updates, largest first. A Pro or Team key adds the comment excerpts.

wire input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "limit": {
      "type": "number",
      "description": "Items per section: default 10 free and 25 with a key, up to 25 free and 400 with a Pro or Team key"
    },
    "section": {
      "enum": [
        "transfers",
        "returns",
        "delinquent",
        "worse",
        "appraisals",
        "liquidations",
        "updates"
      ],
      "type": "string",
      "description": "One section only"
    }
  },
  "additionalProperties": false
}
wire annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
tenant_exposure — Tenant exposure
Advertised by the server during the last successful anonymous check.
Advertised read-only

Every loan in the data where a tenant is among the three largest at the property, with balance, status, coverage and lease end where it is the largest tenant. With no tenant, lists the tenants with the most CMBS exposure.

tenant_exposure input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "limit": {
      "type": "number",
      "description": "Tenants or loans listed: up to 25 free, 400 with a Pro or Team key"
    },
    "tenant": {
      "type": "string",
      "description": "Tenant name, e.g. \"Walgreens\", \"Dollar Tree\", \"WeWork\""
    }
  },
  "additionalProperties": false
}
tenant_exposure annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
comps — Property comps
Advertised by the server during the last successful anonymous check.
Advertised read-only

Single-property CMBS loans as comparables: revenue, operating expenses, NOI (and each per square foot), expense ratio, occupancy, DSCR and valuations, filtered by type, metro, state, size and year built, with medians.

comps input schema
{
  "type": "object",
  "required": [],
  "properties": {
    "cbsa": {
      "type": "string",
      "description": "Census CBSA metro code"
    },
    "type": {
      "enum": [
        "office",
        "retail",
        "multifamily",
        "lodging",
        "industrial",
        "mixed-use",
        "self-storage",
        "manufactured-housing",
        "healthcare",
        "other"
      ],
      "type": "string",
      "description": "Property type"
    },
    "limit": {
      "type": "number",
      "description": "Up to 25 free, 400 with a Pro or Team key; the medians always cover every match"
    },
    "state": {
      "type": "string",
      "description": "Two-letter state code"
    },
    "max_sqft": {
      "type": "number",
      "description": "Maximum square feet"
    },
    "min_sqft": {
      "type": "number",
      "description": "Minimum square feet"
    },
    "built_after": {
      "type": "number",
      "description": "Year built at or after"
    }
  },
  "additionalProperties": false
}
comps annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
find_cusip — Find a certificate by CUSIP
Advertised by the server during the last successful anonymous check.
Advertised read-only

Look up a CMBS certificate class by CUSIP: its trust, coupon, original and current balance, principal paid, realized losses and credit support from the latest trustee report.

find_cusip input schema
{
  "type": "object",
  "required": [
    "cusip"
  ],
  "properties": {
    "cusip": {
      "type": "string",
      "description": "9-character CUSIP"
    }
  },
  "additionalProperties": false
}
find_cusip annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
about — About the data
Advertised by the server during the last successful anonymous check.
Advertised read-only

Coverage, as-of dates, counts, the headline index, plan limits, license and links (docs, OpenAPI, changelog).

about input schema
{
  "type": "object",
  "required": [],
  "properties": {},
  "additionalProperties": false
}
about annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (2 of 2 answered).

  1. 2026-11-07: 1 of 1 checks answered
  2. 2026-11-09: 1 of 1 checks answered

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
411 ms
95th percentile latency
411 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 411 ms · metadata changed · 12 tool(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http cmbs-news-mcp https://cmbs.news/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add cmbs-news-mcp --url https://cmbs.news/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable cmbs-news-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "cmbs-news-mcp": {
      "url": "https://cmbs.news/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "cmbs-news-mcp": {
      "type": "streamableHttp",
      "url": "https://cmbs.news/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start cmbs-news-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "cmbs-news-mcp": {
      "type": "http",
      "url": "https://cmbs.news/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http cmbs-news-mcp https://cmbs.news/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://cmbs.news/mcp

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "cmbs-news-mcp": {
      "serverUrl": "https://cmbs.news/mcp"
    }
  }
}

Let your agent find its tools

Find servers like cmbs.news MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.

Do you run cmbs.news 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.

Claim this listing