MCP server
The same database as a Model Context Protocol server at https://retrofitatlas.org/api/mcp: Streamable HTTP transport, stateless, one JSON-RPC message per POST, JSON replies, no key, no session id. Protocol version 2025-06-18 (older 2025-03-26 and 2024-11-05 clients are accepted).
Connect
# Claude Code
claude mcp add --transport http retrofit-atlas https://retrofitatlas.org/api/mcp
# Claude Desktop, Cursor, Windsurf (claude_desktop_config.json / mcp.json)
{ "mcpServers": { "retrofit-atlas": { "url": "https://retrofitatlas.org/api/mcp" } } }
# ChatGPT (custom connector) and other hosted clients: paste the URL https://retrofitatlas.org/api/mcp; no auth.
# Any HTTP client
curl -X POST https://retrofitatlas.org/api/mcp -H "content-type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
Tools
* = required argument. Every tool returns structuredContent (the JSON object) and a text copy; errors come back as isError: true with an error field, or as JSON-RPC errors for unknown tools and methods.
| Tool | What it does | Arguments |
|---|---|---|
search_sites | Search Retrofit Atlas records (former malls and suburban sites and what became of them). Filters: q (name, aka, city), state (2 letters), country, type (mall, big-box, strip, office-park, garden-apartments, industrial, golf-course, gas-station, other), status (operating, closed, demolished, proposed, approved, under construction, built, partial, stalled, reversed), strategy (redevelop, reinhabit, regreen), element (profile slug; comma = all), min_acres, max_acres, verified (curated, draft, contributed), updated_since (YYYY-MM-DD), sort (name, acres, year_closed, year_retrofit, updated, score), limit, offset. | q, state, country, type, status, strategy, element, min_acres, max_acres, verified, updated_since, sort, limit, offset |
get_site | Full record by id (m-…, n-…) or slug: fields with provenance, events, sources with quotes, deals, parties, parcels, every context layer, profile elements, photos. | id* |
location_sheet | The location section of an underwriting for one site: tract demographics and 10-year change, county home values/rents/permits/retail jobs, FEMA flood and hazard ratings, social vulnerability, walkability and job reach, transit, traffic, Opportunity Zone, LIHTC nearby, SEC EDGAR filers and 10-K/Exhibit 102 facts, GLA per acre, DeadMalls.com story link, upward mobility (Opportunity Atlas), food access (USDA FARA), tract jobs (LODES), county retail (QCEW), schools (NCES), elevation (USGS), storm events (NOAA) and homes for sale by ZIP (Realtor.com). Every layer with its source and date. | id* |
sites_near | Sites within km (≤ 200) of a point, nearest first. | lat*, lon*, km, limit |
list_elements | All profile elements (BuiltWith-style tags such as status-awaiting, place-rail, scale-large-site) with counts. | — |
sites_with_element | Sites carrying one element, with the evidence snippet. | slug*, limit, offset |
owners | Owners, operators and developers; pass q to filter, or slug for one party with its sites and Wikidata facts. | q, slug, limit |
stats | Counts by country, state, status, tier, retrofit decade and context layer. | — |
changes | Records whose source was edited since a date (YYYY-MM-DD). | since*, limit, offset |
Example: initialize, then a location sheet
→ {
"jsonrpc": "2.0",
"id": 0,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {},
"clientInfo": {
"name": "docs",
"version": "1"
}
}
}
← {
"jsonrpc": "2.0",
"id": 0,
"result": {
"protocolVersion": "2025-06-18",
"capabilities": {
"tools": {
"listChanged": false
}
},
"serverInfo": {
"name": "retrofit-atlas",
"title": "Retrofit Atlas",
"version": "1.0.0"
},
"instructions": "Read-only database of former malls and suburban sites and what became of them (Retrofit Atlas, retrofitatlas.org). Start with search_sites or sites_near, then get_site or location_sheet for one record. Values carry their source and tier: 'curated' = from the authors' public map, not reviewed by them; 'draft' = imported or model-extracted, unreviewed. Licence undecided; research use only; cite the record URL. Do not infer live loan status from EDGAR text matches."
}
}
→ {
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "location_sheet",
"arguments": {
"id": "m-31b5364d66"
}
}
}
← {
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "{\"id\": \"m-31b5364d66\", \"name\": \"Valley Plaza\", \"city\": \"North Hollywood\", \"state\": \"CA\", \"country\": \"US\", \"status\": \"demolished\", \"lat\": 34.18718, \"lon\": -11…"
}
],
"structuredContent": {
"id": "m-31b5364d66",
"name": "Valley Plaza",
"city": "North Hollywood",
"state": "CA",
"country": "US",
"status": "demolished",
"lat": 34.18718,
"lon": -118.39739,
"acres": 100.0,
"gla_sqft": 1039000,
"year_opened": 1951,
"year_closed": null,
"url": "https://retrofitatlas.org/malls/ca/north-hollywood-valley-plaza/",
"sheet": {
"tract": {
"geoid": "06037123901",
"pop": 4369,
"pop_per_sqmi": 8764,
"median_hh_income": 56333,
"median_gross_rent": 1878,
"renter_share": 0.64,
"vacancy_rate": 0.095,
"transit_commute_share": 0.123,
"retrieved": "2026-10-15"
},
"tract_change": {
"geoid": "06037123901",
"y2013": {
"pop": 4481,
"median_hh_income": 43929,
"renter_share": 0.666,
"median_home_value": 435500
},
"y2023": {
"pop": 4369,
"median_hh_income": 56333,
"renter_share": 0.643,
"median_home_value": 956500
},
"retrieved": "2026-10-16",
"pop_change": -0.025,
"median_hh_income_change": 0.282,
"renter_share_change": -0.023,
"median_home_value_change": 1.196
},
"housing_market": {
"zhvi": {
"latest": 871674,
"month": "2026-09",
"change_1y": 0.004,
"change_5y": 0.131
},
"zori": {
"latest": 2806,
"month": "2026-09",
"change_1y": 0.013,
"change_5y": 0.177
},
"county_fips": "06037",
"source": "Zillow Research (ZHVI, ZORI)"
},
"hpi": {
"year": 2025,
"index": 791.0,
"change_1y": -0.028,
"change_5y": 0.266,
"change_10y": 0.817,
"base": "2000=100 (FHFA annual tract index, all-transactions)",
"tract": "06037123901",
"retrieved": "2026-10-20"
},
"permits": {
"county": "Los Angeles County",
"2024": {
"units_1": 9106,
"units_2_4": 1273,
"units_5plus": 9430,
"value_total": 3876623417
},
"2023": {
"units_1": 9554,
"units_2_4": 1518,
"units_5plus": 13214,
"value_total": 5392309587
},
"retrieved": "2026-10-18"
},
"retail_trend": {
"2012": {
"estab": 28345,
"emp": 386821
},
"2023": {
"estab": 28998,
"emp": 419890
},
"estab_change": 0.023,
"emp_change": 0.085,
"county_fips": "06037"
},
"flood": {
"zone": "X",
"subtype": "AREA OF MINIMAL FLOOD HAZARD",
"sfha": "F",
"bfe": -9999.0,
"retrieved": "2026-10-15"
},
"nri": {
"tract": "06037123901",
"risk_score": 97.2,
"risk_rating": "Relatively High",
"eal_score": 97.6,
"eal_rating": "Very High",
"expected_annual_loss_usd": 6276445,
"social_vulnerability": "Relatively Moderate",
"community_resilience": "Very Low",
"hazards": {
"tornado": "Very Low",
"inland flooding": "Very High",
"heat wave": "Relatively Low",
"wildfire": "Very Low",
"earthquake": "Very High",
"hail": "Very Low",
"strong wind": "Very Low",
"winter weather": "Very Low",
"landslide": "Very Low",
"lightning": "Very Low"
},
"high_hazards": [
"inland flooding",
"… 1 more"
],
"retrieved": "2026-10-16"
},
"svi": {
"tract": "06037123901",
"overall_pct": 0.92,
"socioeconomic_pct": 0.91,
"household_pct": 0.64,
"minority_pct": 0.76,
"housing_transport_pct": 0.93,
"pop": 3986,
"poverty150_share": 35.9,
"no_vehicle_share": 3.7,
"minority_share": 64.9,
"unemployed_share": 5.8,
"retrieved": "2026-10-15"
},
"walk": {
"geoid": "060371239013",
"walk_index": 19,
"intersection_density": 215.7,
"road_density": 30.5,
"transit_distance_m": 221.0,
"land_use_mix": 0.77,
"jobs_per_acre": 11.99,
"jobs_45min_auto": 378688,
"jobs_45min_transit": 343541,
"zero_car_share": 0.023,
"pop": 810,
"housing_units": 296,
"acres_land": 199.0,
"retrieved": "2026-10-15"
},
"transit": {
"rail_stations": [],
"bus_stops": 8,
"bus_stations": [],
"motorway_junctions": [
"7",
"… 3 more"
],
"retrieved": "2026-10-15"
},
"traffic": {
"max_aadt": 20958,
"trucks_aadt": 1666,
"road": null,
"class": "principal arterial",
"lanes": 4,
"segments_600m": 22,
"year": "2024",
"source": "FHWA HPMS",
"retrieved": "2026-10-20"
},
"oz": {
"opportunity_zone": true,
"tract": "06037123901",
"rural": "N",
"retrieved": "2026-10-15"
},
"lihtc": {
"count_1km": 3,
"units_1km": 431,
"li_units_1km": 271,
"projects": [
{
"name": "Park Plaza Senior Apts",
"units": 203,
"year": null,
"bond": false
},
"… 2 more"
],
"retrieved": "2026-10-16"
},
"edgar": {
"query": "Valley Plaza",
"city": "North Hollywood",
"total": 83,
"name_only_total": 74,
"common_name": false,
"sampled": 83,
"latest": "2022-02-25",
"earliest": "2001-03-30",
"cmbs": [
{
"name": "Bear Stearns Commercial Mortgage Securities Trust 2006-PWR13",
"cik": "0001372830",
"n": 6,
"first": "2006-10-12",
"last": "2006-10-13",
"forms": {
"8-K": 3,
"8-K/A": 3
},
"cmbs": true,
"kind": "cmbs",
"sic": "6189",
"acc": "0000950136-06-008549",
"doc": "file8.htm",
"adjacent": false,
"vintage": 2006
},
"… 6 more"
],
"public": [
{
"name": "Seritage Growth Properties (SRG, SRG-PA)",
"cik": "0001628063",
"n": 20,
"first": "2016-03-11",
"last": "2020-03-02",
"forms": {
"8-K": 12,
"10-K": 5,
"10-Q": 3
},
"cmbs": false,
"kind": "owner",
"sic": "6500",
"acc": "0001564590-20-008210",
"doc": "srg-10k_20191231.htm",
"adjacent": true
},
"… 3 more"
],
"other": [
{
"name": "DAVITA INC (DVA)",
"cik": "0000927066",
"n": 5,
"first": "2011-02-25",
"last": "2017-05-02",
"forms": {
"10-K": 2,
"10-Q": 2,
"10-K/A": 1
},
"cmbs": false,
"kind": "other",
"sic": "8090",
"acc": "0001628280-17-004680",
"doc": "dva-33117ex101.htm",
"adjacent": false
},
"… 8 more"
],
"forms": {
"10-K": 33,
"8-K": 32,
"10-Q": 9,
"8-K/A": 7,
"10-K/A": 2
},
"url": "https://efts.sec.gov/LATEST/search/#/q=%22Valley%20Plaza%22%20%22North%20Hollywood%22&forms=10-K,10-D,8-K,10-Q,ABS-EE&dateRange=custom&startdt=2001-01-01",
"retrieved": "2026-10-20",
"v": 4,
"adj": [
"0001095651",
"… 1 more"
],
"adj_total": 13,
"first_in_sample": "2004-01-07",
"securitised": null,
"vintage": 2004,
"vintage_strong": false,
"source": "SEC EDGAR full-text search"
},
"sec": {
"reit": [],
"absee": [
{
"trust": "Benchmark 2021-B30 Mortgage Trust",
"cik": "0001885855",
"filed": "2026-10-01",
"as_of": "2026-09-11",
"url": "https://www.sec.gov/Archives/edgar/data/1885855/000188852426018228/exh_102.xml",
"primary": "https://www.sec.gov/Archives/edgar/data/1885855/000188852426018228/bmk21b30_absee-202609.htm",
"match": "exact",
"linked": true,
"n_properties": 1,
"loan": {
"loan_id": "7",
"originator": "Goldman Sachs Bank USA",
"origination_date": "09-24-2021",
"loan_original": "38900000.00000000",
"maturity": "10-06-2031",
"loan_balance": "38900000.00000000",
"loan_balance_actual": "38900000.00000000",
"interest_rate": ".03706000",
"payment_status": "0",
"paid_through": "09-06-2026",
"servicer": "Midland Loan Services",
"modified": "false",
"defeased": "N",
"dscr_ncf": "2.96090000",
"dscr_noi": "2.99230000",
"noi": "1093446.74000000",
"financials_end": "03-31-2026",
"dscr_ncf_at_securitization": "2.13000000",
"noi_at_securitization": "3159966.11000000",
"period_end": "09-11-2026",
"n_properties": "1",
"n_properties_now": "1"
},
"property": {
"property": "Valley Plaza",
"address": "12121 Victory Boulevard 6433 Laurel Canyon Boulevard",
"city": "North Hollywood",
"state": "CA",
"zip": "91606",
"property_type": "RT",
"nrsf": "155305",
"nrsf_at_securitization": "155305",
"year_built": "1951",
"year_renovated": "2021",
"appraised_at_securitization": "65500000.00000000",
"appraisal_date_at_securitization": "08-16-2021",
"appraised_value": "65500000.00000000",
"appraisal_date": "08-16-2021",
"occupancy_pct": "1.00000000",
"occupancy_pct_at_securitization": "1.00000000",
"property_status": "6",
"tenant1": "TARGET STORE",
"tenant1_sqft": "80411",
"tenant1_expiry": "01-31-2041",
"tenant2": "BURLINGTON STORES",
"tenant2_sqft": "42680",
"tenant3": "ROSS DRESS FOR LESS",
"tenant3_sqft": "32214"
}
}
],
"source": "SEC EDGAR: REIT 10-K property tables and ABS-EE Exhibit 102",
"retrieved": "2026-10-21"
},
"yield": {
"value_per_acre": null,
"gla_per_acre": 10390,
"far": 0.24,
"parcel_value_total": null
},
"deadmalls": {
"url": "https://www.deadmalls.com/malls/valley_plaza.html",
"title": "Valley Plaza: North Hollywood, CA",
"match": "name+state+city",
"index": "https://www.deadmalls.com/stories.html",
"retrieved": "2026-10-20"
},
"opportunity": {
"tract10": "06037123901",
"kfr_p25": 0.4479,
"jail_p25": 0.0006,
"kids_count": 857.3846,
"commuting_zone": "Los Angeles",
"vintage": "children born 1978-83, outcomes measured 2014-15",
"source": "Opportunity Insights, Opportunity Atlas (Chetty, Friedman, Hendren, Jones, Porter 2018)",
"retrieved": "2026-10-20"
},
"food_access": {
"tract10": "06037123901",
"urban": 1,
"lila_1_10": 0,
"low_access_1mi": 0,
"poverty_rate": 19.327538883806,
"median_family_income": 50307.0,
"snap_households": 205.0,
"pop2010": 4500.0,
"source": "USDA ERS Food Access Research Atlas 2019 (ArcGIS copy)",
"retrieved": "2026-10-20"
},
"jobs_lodes": {
"tract20": "06037123901",
"jobs": 2542,
"retail_jobs": 261,
"food_accommodation_jobs": 265,
"year": 2022,
"source": "Census LEHD LODES8 WAC 2022 (all jobs, primary and secondary), blocks summed to the 2020 tract",
"retrieved": "2026-10-20"
},
"qcew_retail": {
"county": "06037",
"year": 2025,
"establishments": 28960,
"employment": 391331,
"avg_annual_pay": 52235,
"lq_employment": 0.87,
"employment_change_1y": -1.7,
"source": "BLS QCEW 2025 annual, county, NAICS 44-45 retail trade, private",
"retrieved": "2026-10-20"
},
"schools": {
"district": "Los Angeles Unified School District",
"district_geoid": "0622710",
"grades": "KG-12",
"district_vintage": "SY2024-25",
"public_schools_1mi": 6,
"schools": [
"ISANA Palmati Academy",
"… 5 more"
],
"schools_vintage": "SY2023-24",
"source": "NCES EDGE",
"retrieved": "2026-10-20"
},
"elevation": {
"elevation_ft": 699.6,
"resolution": 1,
"source": "USGS EPQS (3DEP)",
"retrieved": "2026-10-20"
},
"storms": {
"county": "06037",
"years": "2016-2025",
"events": 157,
"by_type": {
"Flash Flood": 86,
"Thunderstorm Wind": 35,
"Debris Flow": 21,
"Hail": 6,
"Tornado": 6,
"Funnel Cloud": 1,
"Lightning": 1,
"Flood": 1
},
"property_damage_usd": 8000,
"deaths_direct": 1,
"injuries_direct": 2,
"note": "county-typed events only; events logged to forecast zones (CZ_TYPE Z: most winter, heat, flood and coastal events) are not counted",
"source": "NOAA NCEI Storm Events Database, details files",
"retrieved": "2026-10-20"
},
"listings": {
"zip": "91606",
"month": "202609",
"median_listing_price": 857000,
"median_listing_price_yy": -0.0595,
"active_listing_count": 57,
"median_days_on_market": 49,
"price_reduced_share": 0.184,
"pending_ratio": 0.3274,
"source": "Realtor.com Research, inventory core metrics by ZIP (ZCTA at the site point)",
"retrieved": "2026-10-20"
}
},
"sources_note": "Each layer carries its own source and retrieved date; tract, block-group, county and site figures sit at different geographies. Missing layers mean the publi…",
"record": "https://retrofitatlas.org/malls/ca/north-hollywood-valley-plaza/",
"json": "https://retrofitatlas.org/data/records/m-31b5364d66.json",
"restricted_fields": {
"parcels": [
"owner_addr",
"… 5 more"
],
"deals": [
"price",
"… 4 more"
],
"how": "free API key: POST /api/v1/keys {\"email\": …}"
}
},
"isError": false
}
}
Behaviour
| Topic | Behaviour |
|---|---|
| Transport | Streamable HTTP, stateless. POST only; GET answers 405 because the server opens no server-initiated stream. Batches (JSON arrays) are accepted; notifications get HTTP 202 and no body. |
| Capabilities | tools (listChanged false). No resources, no prompts, no sampling. |
| Size | A tool result above 400 kB is truncated with a note; use the REST endpoint or the per-record JSON file for the full object. |
| Caching | Cache-Control: no-store; the underlying data refreshes on every publish. |
| Conduct and licence | Same as the REST API: research use only, attribute Retrofit Atlas, cite the record URL the tool returns, keep model-extracted values labelled as drafts, and do not infer live loan status from EDGAR text matches. |
Documentation built 2026-10-21 from the live database (1,904 records). Corrections: the form or desk@retrofitatlas.org.