Skip to main content
Glama

cmbs.news: CMBS loan data

Search CMBS loans

search_loans
Read-onlyIdempotent

Returns loans in public CMBS trusts that match your filters, largest balance first unless sorted, with the total match count and total balance. Use it to find a loan or property by name, address, city or ZIP, or to screen by status, type, state, metro, tenant, maturity, balance, coverage, occupancy, rate, vintage, servicer, originator or trust. All filters are optional and combine; no match returns an empty list and a total of 0. Use get_loan for one loan's full record and tenant_exposure to rank tenants.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "search_loans"
  }
}

Input Schema

NameRequiredDescriptionDefault
qNoWord 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"
cbsaNoCensus CBSA metro code, e.g. 35620 for New York
cityNoWhole city name, optionally with state, e.g. "Houston" or "Houston, TX"
sortNoOrder
typeNoProperty type
limitNoResults per call: up to 10 free, 100 with a Pro or Team key
stateNoTwo-letter state or territory code
trustNoOnly loans in this trust, by slug, e.g. "benchmark-2018-b8"
offsetNoFor paging: free stops at the first 25 results; Pro and Team page through everything
statusNoLoan condition, or a Schedule AL status as filed: foreclosure, reo (real estate owned), forbearance or extended (a modification dated in the last 24 months)
tenantNoA tenant named among the three largest, e.g. "Walgreens"
vintageNoOrigination year, e.g. "2021"
max_dscrNoMaximum latest DSCR, e.g. 1.0
max_rateNoMaximum current interest rate, as a fraction or percent
min_dscrNoMinimum latest DSCR, e.g. 1.25
min_rateNoMinimum current interest rate, as a fraction or percent: 0.05 or 5
originatorNoOriginator, or part of the name, e.g. "Wells Fargo"
max_balanceNoMaximum balance in dollars
min_balanceNoMinimum balance in dollars
max_occupancyNoMaximum latest occupancy, as a fraction or percent
min_occupancyNoMinimum latest occupancy, as a fraction or percent: 0.8 or 80
maturing_afterNoYYYY-MM or YYYY-MM-DD
maturing_beforeNoYYYY-MM or YYYY-MM-DD
special_servicerNoTrust'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

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / city
      Added value: +{
      +  "description": "Whole city name, optionally with state, e.g. \"Houston\" or \"Houston, TX\"",
      +  "type": "string"
      +}
  2. Changed2 schema fields changed
    • changedInput schema / properties / status / description
      Previous value: -"Loan condition"New value: +"Loan condition, or a Schedule AL status as filed: foreclosure, reo (real estate owned), forbearance or extended (a modification dated in the last 24 months)"
    • changedInput schema / properties / status / enum
      Previous value: -[
      -  "special_servicing",
      -  "delinquent",
      -  "distressed",
      -  "watch",
      -  "matured_unpaid",
      -  "current"
      -]New value: +[
      +  "special_servicing",
      +  "delinquent",
      +  "distressed",
      +  "watch",
      +  "matured_unpaid",
      +  "current",
      +  "foreclosure",
      +  "reo",
      +  "forbearance",
      +  "extended"
      +]
  3. First observed

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuine behavior the annotations cannot: default ordering by largest balance unless sorted, that the response includes total match count and total balance, and that a no-match query returns an empty list with total 0. It stops short of describing per-loan fields or paging limits, but those are addressed in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the return contract before the usage guidance and the sibling routing. The long enumeration of filter axes is the one indulgence, though with 24 parameters it earns most of its space by aiding discovery.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 24-parameter tool with no output schema, the description covers what matters: result ordering, the presence of total count and total balance, and empty-result behavior. It does not describe the shape of each loan record, relying on get_loan for full detail, which is a reasonable division of labor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds semantics the schema does not state: all filters are optional and combine (AND semantics), and unordered/empty results behave predictably. It also groups the filter families (maturity, balance, coverage, occupancy, rate, vintage, servicer, originator, trust) so an agent knows the screening axes at a glance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: 'Returns loans in public CMBS trusts that match your filters', and immediately gives the result ordering. It distinguishes itself from get_loan (single full record) and tenant_exposure (tenant ranking) by name, so an agent can route without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states the use cases ('find a loan or property by name, address, city or ZIP, or to screen by status, type, state...') and names both alternatives with the condition that selects them: get_loan for one loan's full record, tenant_exposure to rank tenants. There are no exclusions left to infer.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources