Recipe: Property research
End-to-end property research from a single address. Returns valuation, tax history, market context, and flood risk.
Tools used: housing_property_report (compound) or attom_avm, attom_tax_history, altos_market_stats, fema_flood_zone.
Calls: 1 (compound) or 4 (manual).
Fast path
housing_property_report({ address: "123 Main St, Denver, CO 80202" })
Returns:
{
"address": "123 Main St, Denver, CO 80202",
"valuation": {
"avm": 687000,
"confidence_band": [661000, 712000],
"last_sale": { "date": "2021-06-14", "price": 545000 },
"characteristics": { "sqft": 2150, "beds": 3, "baths": 2.5, "year_built": 1998 }
},
"tax_history": [...],
"neighborhood_market": {
"median_list_price": 695000,
"days_on_market": 22,
"price_reductions_pct": 14
},
"flood": { "fema_zone": "X", "risk": "minimal" }
}
One call wraps ATTOM AVM + ATTOM tax + Altos market + FEMA flood — needs ATTOM and Altos keys (or a Housing Vertical subscription).
Manual path
If you want fine control or only have some keys:
attom_avm({ address1: "123 Main St", address2: "Denver, CO 80202", _apiKey: "..." })
attom_tax_history({ address1: "123 Main St", address2: "Denver, CO 80202", _apiKey: "..." })
altos_market_stats({ region: "us-co-denver", _apiKey: "..." })
fema_flood_zone({ address: "123 Main St, Denver, CO 80202" })
fema_flood_zone is free; the others are BYO key (or vertical-bundled).
Citation pattern
123 Main St, Denver — ATTOM AVM $687K (band $661K–$712K, last sold 2021-06 at $545K). Single-family, 2,150 sqft, 3/2.5. Neighborhood: median list $695K, 22 days on market, 14% price reductions per Altos. FEMA flood zone X (minimal risk).
Caveats
- AVM band is the honest answer. A point estimate without the band is misleading. Always carry both.
- Tax history is yearly. Pulled from county records via ATTOM. Recent reassessments may not be reflected for 6–12 months.
- Neighborhood vs. property-specific. Altos gives metro/ZIP-level stats. ATTOM gives the property. Both matter.
- Comps would be a useful addition.
attom_compswith this address returns nearby recent sales — call it as step 5 if you need pricing context.
Use the prompt
prompts/get({
name: "property_research",
arguments: { address: "123 Main St, Denver, CO 80202" }
})
Returns a substituted prompt that runs the full sequence and concludes with whether a list price is data-supported.