Machine capability
Property sale and ownership data for AI agents
Recorded deeds with consideration, book and page, plus the assessor parcel layer behind them. This is DFX's DEEPEST data and its NARROWEST geography, and the two facts belong in the same sentence.
Short answer
What did this property sell for, and who owns it? Yes, for 2 states only: MA, NY. 43,857 published events. Free, with no API key and no signup. Call resolve_address at https://exchange-production-9123.up.railway.app/mcp.
What it returns
Per sale: the recorded date, the consideration as published, this parcel's allocated share of it, the allocation basis, how many parcels the instrument covered, and the registry book and page. Per parcel: assessed value, land use, gross building area, value per square foot, annual tax and year built.
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 |
|---|---|---|
| PROPERTY_SOLD | 43,857 | 2 states only: MA, NYMA NY |
Why this is different from the alternatives
A deed repeats its full consideration on every parcel it covers, so summing the naive column multiplies a portfolio sale by the number of parcels in it. DFX carries the instrument total and the allocated share as separate fields and states which split is its own. Most sale feeds carry one number and do not say which one it is.
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.
Recent recorded property sales in New York.
No within_days: a sale has already happened, and the filter looks forward.
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":"PROPERTY_SOLD","state":"NY","limit":3}}}'Response (truncated)
{
"dfx": {
"capability": "search_property_events",
"version": "0.3.0",
"answered_at": "2026-09-02T11:27:39.285737+00:00"
},
"ok": true,
"count": 3,
"results": [
{
"dfx_id": "5db7703d-98fb-4958-b61d-75f055bd0b9b",
"place_kind": "parcel",
"event_type": "PROPERTY_SOLD",
"occurred_at": "2002-12-20",
"in_days": -8657,
"headline": "123 EAST 73 STREET, New York NY sold for $10,250,000 on 2002-12-20 to KEMPNER ,, THOMAS L JR",
"address": "123 EAST 73 STREET",
"city": "New York",
"state": "NY",
"unit_count": null,
"address_known": true,
"evidence_class": "VERIFIED",
"source": "nyc_acris",
"sources": [
"nyc_acris"
],
"verify": {
"capability": "get_property_record",
"dfx_id": "5db7703d-98fb-4958-b61d-75f055bd0b9b"
}
},
{
"dfx_id": "d68294f7-80ff-49a1-a506-950ac0fd53dc",
"place_kind": "parcel",
"event_type": "PROPERTY_SOLD",
"occurred_at": "2002-12-23",
"in_days": -8654,
"headline": "13 EAST 94 STREET, New York NY sold for $11,250,000 on 2002-12-23 to an individual buyer",
"address": "13 EAST 94 STREET",
"city": "New York",
"state": "NY",
"unit_count": null,
"address_known": true,
"evidence_class": "VERIFIED",
"source": "nyc_acris",
"sources": [
"nyc_acris"
],
"verify": {
"capability": "get_property_record",
"dfx_id": "d68294f7-80ff-49a1-a506-950ac0fd53dc"
}
},
{
"dfx_id": "14125a99-898a-4862-8754-2d7025c3c1e1",
"place_kind": "parcel",
"event_type": "PROPERTY_SOLD",
"occurred_at": "2003-02-12",
"in_days": -8603,
"headline": "135 WEST 27 STREET, New York NY sold for $13,500,000 on 2003-02-12 to an individual buyer",
"address": "135 WEST 27 STREET",
"city": "New York",
"state": "NY",
"unit_count": null,
"address_known": true,
"evidence_class": "VERIFIED",
"source": "nyc_acris",
"sources": [
"nyc_acris"
],
"verify": {
"capability": "get_property_record",
"dfx_id": "14125a99-898a-4862-8754-2d7025c3c1e1"
}
}
],
"state": "OK",
"coverage": {
"verdict": "COVERED",
"refreshed_at": "2026-09-01T13:03:52.11183+00:00"
},
"searched": true,
"complete": false,
"no_match": null,
"index_coverage": null,
"note": "Only sources whose redistribution terms are reviewed and recorded as permitted are searched, and that filter is applied in the database.",
"caution": "ExactTurn a street address into a canonical id.
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":"resolve_address","arguments":{"address":"100 Binney St","city":"Cambridge","state":"MA"}}}'Response
{
"dfx": {
"capability": "resolve_address",
"version": "0.3.0",
"answered_at": "2026-09-02T11:27:34.676021+00:00"
},
"ok": true,
"objects": [
{
"dfx_id": "90555f06-627e-4946-a97f-8397a7bf8726",
"type": "parcel",
"name": "100 BINNEY ST",
"city": "Cambridge",
"state": "MA",
"county": null,
"apn": null,
"land_use": null,
"assessed_total": 494419400.0,
"assessment_year": 2026,
"address_ambiguous": false,
"match": {
"key": "100 BINNEY ST, CAMBRIDGE MA",
"basis": "exact normalised address"
},
"verify": {
"capability": "get_property_record",
"dfx_id": "90555f06-627e-4946-a97f-8397a7bf8726"
}
}
],
"count": 1,
"ambiguity": "unique",
"caution": null,
"no_match": null,
"interpreted": null,
"latency_ms": 235,
"state": "OK"
}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.
{
"mcpServers": {
"dfx-real-estate": {
"url": "https://exchange-production-9123.up.railway.app/mcp"
}
}
}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
- Recorded sales carry a buyer and never a seller.
- The parcel and ownership layer is Massachusetts. Nothing here is national and it is not a national product with gaps; it is a state product.
- `within_days` looks FORWARD. A sale has already happened, so omit it.
The other capabilities on this server
- Which commercial real-estate loans mature in a given state and window? 3,717 events, 52 states and territories, effectively national.
- Which LIHTC properties are reaching the end of a compliance period? 13,549 events, 56 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? 342 events, 28 states, broad but NOT national.
- Which commercial leases are approaching expiry, and who occupies a building? 1,432 events, 49 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.