Developer reference

Machine capability

Commercial lease expiry and tenancy data for AI agents

Disclosed commercial tenancies with expiry dates, derived from filings rather than from a broker's listing sheet. Broad geographically and shallow in depth.

Short answer

Which commercial leases are approaching expiry, and who occupies a building? Yes, for 55 states and territories, effectively national. 3,966 published events, measured 12 September 2026. Free, with no API key and no signup. Call search_property_events at https://exchange-production-9123.up.railway.app/mcp.

What it returns

A dated lease expiry per property with the tenant, the premises where disclosed, and the filing it came from.

Coverage, with the denominators

Coverage is uneven by family and stating it any other way would be the one failure that matters here. These are whole populations, not samples.

Event familyEventsWhere it is covered
LEASE_EXPIRING3,96655 states and territories, effectively national

Why this is different from the alternatives

Tenancy is normally private. What is here is the slice a public company had to disclose, which means it is checkable against a primary document.

A real call, and the real response

Executed against production when this page was generated. The response below is what came back, truncated, not an illustration.

Commercial leases expiring in the next three years.

curl -s https://exchange-production-9123.up.railway.app/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_property_events","arguments":{"event_type":"LEASE_EXPIRING","within_days":1095,"limit":3}}}'

Response (truncated)

{
 "dfx": {
  "capability": "search_property_events",
  "version": "0.3.0",
  "answered_at": "2026-09-12T14:38:39.482018+00:00"
 },
 "ok": true,
 "count": 3,
 "results": [
  {
   "dfx_id": "58214cfc-3bec-4962-912f-39167e750713",
   "place_kind": "property",
   "event_type": "LEASE_EXPIRING",
   "occurred_at": "2026-09-12",
   "in_days": 0,
   "headline": "The federal lease at 6500 43RD AVE N, BIRMINGHAM, AL expires 2026-09-12 (3,926 sq ft, $102,076 a year). The lessor is BIRMINGHAM AIRPORT AUTHORITY. No renewal option remains.",
   "address": "6500 43RD AVE N",
   "city": "Birmingham",
   "state": "AL",
   "unit_count": null,
   "address_known": true,
   "magnitude": 3926.0,
   "magnitude_unit": "square_feet",
   "evidence_class": "OBSERVED",
   "source": "gsa_pbs_external_lease",
   "sources": [
    "gsa_pbs_external_lease"
   ],
   "verify": {
    "capability": "get_property_record",
    "dfx_id": "58214cfc-3bec-4962-912f-39167e750713"
   }
  },
  {
   "dfx_id": "fcee679c-ce0f-444a-b1ca-307836253d2d",
   "place_kind": "property",
   "event_type": "LEASE_EXPIRING",
   "occurred_at": "2026-09-13",
   "in_days": 1,
   "headline": "The federal lease at 1400 K ST NW, WASHINGTON, DC expires 2026-09-13 (33,490 sq ft, $1,712,542 a year). The lessor is TPP 1400K LLC. No renewal option remains.",
   "address": "1400 K ST NW",
   "city": "Washington",
   "state": "DC",
   "unit_count": null,
   "address_known": true,
   "magnitude": 33490.0,
   "magnitude_unit": "square_feet",
   "evidence_class": "OBSERVED",
   "source": "gsa_pbs_external_lease",
   "sources": [
    "gsa_pbs_external_lease"
   ],
   "verify": {
    "capability": "get_property_record",
    "dfx_id": "fcee679c-ce0f-444a-b1ca-307836253d2d"
   }
  },
  {
   "dfx_id": "01349fe5-d369-4f54-8a84-318c293e6b88",
   "place_kind": "property",
   "event_type": "LEASE_EXPIRING",
   "occurred_at": "2026-09-14",
   "in_days": 2,
   "headline": "The federal lease at 1050 LAKES DR, WEST COVINA, CA expires 2026-09-14 (22,034 sq ft, $782,780 a year). The lessor is Lakes Property Owner LLC. No renewal option remains.",
   "address": "1050 LAKES DR",
   "city": "West Covina",
   "state": "CA",
   "unit_count": null,
   "address_known": true,
   "magnitude": 22034.0,
   "magnitude_unit": "square_feet",
   "evidence_class": "OBSERVED",
   "source": "gsa_pbs_external_lease",
   "sources": [
    "gsa_pbs_external_lease"
   ]

Connecting

One HTTPS endpoint speaking Model Context Protocol over JSON-RPC. No signup, no API key, no OAuth for anything free. A plain GET on the endpoint returns every tool schema, so you can evaluate the server without calling it.

Claude Code

one command, then it is available in every session

claude mcp add --transport http dfx-real-estate https://exchange-production-9123.up.railway.app/mcp

Claude Desktop

claude_desktop_config.json, then restart the app. It cannot reach a remote server directly, so this bridges through mcp-remote.

{
  "mcpServers": {
    "dfx-real-estate": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://exchange-production-9123.up.railway.app/mcp"
      ]
    }
  }
}

Cursor, Windsurf, Cline and Zed

the mcp.json their settings panel writes

{
  "mcpServers": {
    "dfx-real-estate": {
      "url": "https://exchange-production-9123.up.railway.app/mcp"
    }
  }
}

VS Code

the servers key, which is spelled differently to everything above

{
  "servers": {
    "dfx-real-estate": {
      "type": "http",
      "url": "https://exchange-production-9123.up.railway.app/mcp"
    }
  }
}

There is no signup, no API key and no OAuth for anything free, and eleven of the twelve tools are free. A plain GET on the endpoint returns every tool schema, so a client can be pointed at it and evaluated before it is trusted.

Registry entry io.github.Capital-W-Holdings/us-property-parcel-real-estate-debt. The full machine-readable capability catalog, including every tool schema, the measured coverage grid and the stated gaps, is at /ai/real-estate-mcp/catalog.json.

Where this does not help

Where it does not help

  • This is the DISCLOSED slice of tenancy, not all of it. Absence of a lease is not evidence a building is empty.
  • Shallow: broad state coverage over a small number of events.

State by state

The other capabilities on this server

Facts on this page were last checked against the running product on . Prices are read from the live billing configuration, so this page and your invoice cannot disagree. The machine-readable version of this record is at /ai/entity.json.