homes_search_properties | Search listings by free-text location (city/ZIP/neighborhood). Slugifies the input into homes.com's URL routing (a blank or unsluggable location is an error, not an empty result) and parses the JSON-LD CollectionPage.mainEntity.itemListElement[]. Filters by property_type, listing_type, sort, and a price_min/price_max band. Returns address, price, beds/baths, sqft, primary photo, listing agent + brokerage; flags truncated/total_estimated past the ~40-listing SSR cap. |
homes_get_by_address | Resolve one US street address to its canonical homes.com property URL + opaque hash. Walks structured typeahead → slug → city/zip search-fallback with whole-token street + unit verification. Returns matched_via; degrades to { resolved: false }. |
homes_resolve_addresses | Bulk homes_get_by_address (up to 100 addresses, input order preserved, per-row outcomes). Prefer for batches ≥ 3. |
homes_get_property | Full record for a property by URL. Parses JSON-LD + DOM-side sections: address, lat/lng, beds/baths, sqft, year built, price, status, agent (name/title/profile — telephone/email only with include_agent_contact: true) + brokerage, highlights, schools, HOA (raw + monthly), lot size (sqft + acres), parking, heating/cooling, MLS id/source, tax, days-on-market, price drops, extracted_features. Optional inline price_history/tax_history. |
homes_get_property_photos | Full photo gallery scraped from <img> tags on the detail page (JSON-LD only carries one image). Returns { url, position, alt? } per photo, filtered to the homes.com CDN. |
homes_bulk_get | Fetch up to 200 properties' structured records in one call (per-row errors, input order preserved). |
homes_compare_properties | Side-by-side comparison of 2–8 properties with an aligned summary table. Per-target errors captured per-row. Concurrent fetches. |
homes_get_nearby_listings | The "Homes for Sale Near This Property" cross-link cards from a detail page (For Sale, optionally Rentals). URL + address only. |
homes_get_history | Combined price + tax history in one fetch: listing_events, ownership_events, lien_events, normalized events_normalized, and tax_records. events_normalized sets price_change_pct only on PriceChange rows; other rows carry homes.com's "List to Sale" figure as list_to_sale_pct (no dom / source_mls keys). |
homes_get_property_history | Deprecated — price/ownership/lien timelines only. Prefer homes_get_history. |
homes_get_tax_history | Deprecated — year-by-year tax records only. Prefer homes_get_history. |
homes_get_market_report | Median / average / $-per-sqft for a market, derived from the sold search page's JSON-LD. A blank or unsluggable location is an error, not an empty market. |
homes_get_saved_homes | The signed-in user's saved (favorited) homes. Auth-gated. |
homes_get_saved_searches | The signed-in user's saved searches. Auth-gated. |
homes_calculate_affordability | Local affordability calculator — max purchase price from income + DTI + rates. No network. |
homes_calculate_mortgage | Local PITI calculator — principal+interest, taxes, insurance, HOA, PMI. No network. |
homes_estimate_rent_vs_buy | Local rent-vs-buy model — you supply monthly_rent (homes.com has no rental signal to impute it; see below). No network. |
homes_healthcheck | Round-trips /robots.txt through the fetchproxy bridge (the shared registerBridgeHealthcheckTool from @chrischall/mcp-utils/fetchproxy) and returns diagnostics: bridge role/port/version, the extension link state (bridge.session_state, pending_pair_code, extension_connected), a classified error.kind (timeout / bridge_down / session_not_ready / protocol / unknown), and a plain-English hint distinguishing "bridge down" from "extension not connected / pair code pending" from "homes.com-side problem." |
homes_get_session_context / homes_register_session / homes_set_active_session | List / register / switch account labels for your own bookkeeping. Label only: requests always use whichever account the fetchproxy browser tab is signed into. |