Machine capability
LIHTC Year 15 and compliance-period data for AI agents
The Year 15 recapitalisation trigger, as dated events an agent can query by state and window. This is the broadest family DFX holds and it is free.
Short answer
Which LIHTC properties are reaching the end of a compliance period? Yes, for 56 states and territories, effectively national. 11,956 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 compliance-period ending per property, with the property's canonical id, address, unit count and the programme record it derives 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 family | Events | Where it is covered |
|---|---|---|
| COMPLIANCE_PERIOD_ENDING | 11,956 | 56 states and territories, effectively national |
Why this is different from the alternatives
Year 15 is a transaction trigger, not a lookup: it is the moment a limited partner can exit and the deal has to be resyndicated, sold or refinanced. It is broadly published in bulk and almost never published callable.
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.
LIHTC properties reaching Year 15 in California.
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":"COMPLIANCE_PERIOD_ENDING","state":"CA","within_days":1095,"limit":3}}}'Response (truncated)
{
"dfx": {
"capability": "search_property_events",
"version": "0.3.0",
"answered_at": "2026-09-12T14:38:26.090023+00:00"
},
"ok": true,
"count": 3,
"results": [
{
"dfx_id": "00d00a1a-bf0d-4098-afea-a823fcfa9a37",
"place_kind": "property",
"event_type": "COMPLIANCE_PERIOD_ENDING",
"occurred_at": "2026-12-31",
"in_days": 110,
"headline": "SYCAMORE FAMILY APTS I, ARVIN, CA: placed in service in 2012, so the fifteen year compliance period ends in 2026, this year. 48 units.",
"address": "740 SYCAMORE RD",
"city": "ARVIN",
"state": "CA",
"unit_count": 48,
"address_known": true,
"magnitude": 48.0,
"magnitude_unit": "units",
"evidence_class": "INFERRED",
"source": "hud_lihtc",
"sources": [
"hud_lihtc"
],
"verify": {
"capability": "get_property_record",
"dfx_id": "00d00a1a-bf0d-4098-afea-a823fcfa9a37"
}
},
{
"dfx_id": "01daacb6-0aac-4765-91bc-3bc5c9860472",
"place_kind": "property",
"event_type": "COMPLIANCE_PERIOD_ENDING",
"occurred_at": "2026-12-31",
"in_days": 110,
"headline": "CEDAR GATEWAY, SAN DIEGO, CA: placed in service in 2012, so the fifteen year compliance period ends in 2026, this year. 65 units.",
"address": "1612 SIXTH AVE",
"city": "SAN DIEGO",
"state": "CA",
"unit_count": 65,
"address_known": true,
"magnitude": 65.0,
"magnitude_unit": "units",
"evidence_class": "INFERRED",
"source": "hud_lihtc",
"sources": [
"hud_lihtc"
],
"verify": {
"capability": "get_property_record",
"dfx_id": "01daacb6-0aac-4765-91bc-3bc5c9860472"
}
},
{
"dfx_id": "048c7504-a9fc-4911-943e-57a7fbb97066",
"place_kind": "property",
"event_type": "COMPLIANCE_PERIOD_ENDING",
"occurred_at": "2026-12-31",
"in_days": 110,
"headline": "NEW GENESIS APTS, LOS ANGELES, CA: placed in service in 2012, so the fifteen year compliance period ends in 2026, this year. 106 units.",
"address": "458 S MAIN ST",
"city": "LOS ANGELES",
"state": "CA",
"unit_count": 106,
"address_known": true,
"magnitude": 106.0,
"magnitude_unit": "units",
"evidence_class": "INFERRED",
"source": "hud_lihtc",
"sources": [
"hud_lihtc"
],
"verify": {
"capability": "get_property_record",
"dfx_id": "048c7504-a9fc-4911-943e-57a7fbb97066"
}
}
],
"state": "OK",
"coverage": {
"verdict": "COVERED",
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
- Compliance periods are statutory and every one falls on 31 December, so a count bucketed by day shows a December cliff that is an artefact of the statute rather than a market event.
- The event is the date the compliance period ends. It is not a statement that the property is for sale.
State by state
One page per state, each carrying the dated rows themselves rather than a description of them. These are free to read and free to call.
- Alabama 158
- Alaska 39
- American Samoa 113
- Arizona 147
- Arkansas 188
- California 1,406
- Colorado 150
- Connecticut 70
- Delaware 43
- District of Columbia 94
- Florida 364
- Georgia 361
- Guam 5
- Hawaii 37
- Idaho 75
- Illinois 319
- Indiana 268
- Iowa 183
- Kansas 156
- Kentucky 222
- Louisiana 360
- Maine 77
- Maryland 199
- Massachusetts 191
- Michigan 405
- Minnesota 232
- Mississippi 184
- Missouri 296
- Montana 55
- Nebraska 120
- Nevada 84
- New Hampshire 69
- New Jersey 283
- New Mexico 30
- New York 1,057
- North Carolina 353
- North Dakota 63
- Northern Mariana Islands 1
- Ohio 469
- Oklahoma 139
- Oregon 187
- Pennsylvania 266
- Puerto Rico 89
- Rhode Island 64
- South Carolina 226
- South Dakota 67
- Tennessee 234
- Texas 470
- US Virgin Islands 9
- Utah 103
- Vermont 95
- Virginia 338
- Washington 334
- West Virginia 82
- Wisconsin 286
- Wyoming 41
The other capabilities on this server
- Which commercial real-estate loans mature in a given state and window? 3,422 events, 52 states and territories, effectively national.
- Which HUD-subsidised properties have contracts approaching expiry? 4,721 events, 54 states and territories, effectively national.
- Where is commercial real estate in distress, foreclosure or workout? 307 events, 28 states, broad but NOT national.
- What did this property sell for, and who owns it? 43,680 events, 2 states only: MA, NY.
- Which commercial leases are approaching expiry, and who occupies a building? 3,966 events, 55 states and territories, effectively national.
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.