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_comps with 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.

Last reviewed May 8, 2026