{"publication":"Fact Lot","readOnly":true,"authentication":null,"note":"Unstated facts are null. search.json parameter q maps to MCP search_facts argument query.","tools":[{"name":"search_facts","description":"Search published records by market, ZIP, use and query. Returns source and date. matched is the count before the slice. limit is the cap applied, from 1 to 50, default 20. Null means not stated.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"market":{"type":"string","enum":["houston","san-antonio"]},"zip":{"type":"string"},"use":{"type":"string","enum":["office","retail","industrial","flex","medical"]},"query":{"type":"string"},"limit":{"type":"integer","minimum":1,"maximum":50}}}},{"name":"market_stats","description":"Medians, n and as-of date for a market, by use and ZIP. Median is null below n of 5. A zip argument adds censusEstablishments2023 for a ZIP published in that market, or null otherwise, and censusEstablishmentsSource with the citation and URL. The count is not part of n.","inputSchema":{"type":"object","additionalProperties":false,"required":["market"],"properties":{"market":{"type":"string","enum":["houston","san-antonio"]},"use":{"type":"string","enum":["office","retail","industrial","flex","medical"]},"zip":{"type":"string"}}}},{"name":"building_facts","description":"Facts for one building by slug or normalized address.","inputSchema":{"type":"object","additionalProperties":false,"properties":{"slug":{"type":"string"},"address":{"type":"string"}}}},{"name":"citation_urls","description":"Canonical Fact Lot URLs and citation strings.","inputSchema":{"type":"object","additionalProperties":false,"properties":{}}}]}