Homes Mcp

io.github.chrischallPublished by GitHub account chrischallv2.2.0Updated Nov 7, 2026

homes.com real-estate for Claude — search, property details, photos, compare, mortgage math

Overview

AI-generated overview

Scrapes homes.com real-estate listings through your own signed-in browser tab, letting an assistant search properties, pull details and history, and run…

What you can do
  • Search listings by city, ZIP or neighborhood with property-type, listing-type, price and sort filters, and resolve single or bulk US addresses to homes.com property URLs
  • Fetch full property records, photo galleries, nearby listings, price/ownership/lien and tax history, and side-by-side comparisons of several properties
  • Derive market summaries (median sale price, average price per sqft) from recently sold listings
  • Read the signed-in user's saved homes and saved searches
  • Run local, offline mortgage PITI, affordability and rent-vs-buy calculations
  • Check bridge health and keep account labels for bookkeeping
When to use it
Useful when you want an assistant to research US homes on homes.com in natural language: comparing candidates, checking price and tax history, or running affordability and rent-vs-buy scenarios without leaving the chat.
Requirements
Runs locally as a Node.js process (npx homes-mcp or a built bundle) over stdio. Needs the separate ContextMint Bridge browser extension (Chrome; Safari not yet available) and a signed-in homes.com session in that browser tab. Optional environment variables HOMES_COMMUNITIES_FILE and HOMES_WS_PORT. Desktop only.
Before you install
It reads homes.com through your live browser session, so requests carry your cookies and act as you; the README calls this informal use of homes.com, at your own discretion. Saved homes and saved searches require being signed in. The bridge extension is installed separately and not from a store, so verify its source or checksum. Property data goes to the assistant as tool output.

Installation

In SourceWeft

  1. Open Homes Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

homes-mcp

[CI] [npm] [license]

homes.com real-estate access as an MCP server for Claude — search listings, resolve addresses, fetch property details, price/tax history, market reports, saved homes, photo galleries, and run affordability/mortgage math, all via natural language.

⚠️ homes.com does not publish a public consumer API. This server reads the same server-rendered HTML and Schema.org JSON-LD that homes.com itself ships to your browser, routed through your own signed-in browser tab via the ContextMint Bridge browser extension. Every request acts on behalf of your existing session — your cookies, your TLS, your JS context — exactly as if you'd clicked it in the browser yourself. Treat this as informal use of homes.com. Use at your own discretion.

Tools

ToolPurpose
homes_search_propertiesSearch 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_addressResolve 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_addressesBulk homes_get_by_address (up to 100 addresses, input order preserved, per-row outcomes). Prefer for batches ≥ 3.
homes_get_propertyFull 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_photosFull 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_getFetch up to 200 properties' structured records in one call (per-row errors, input order preserved).
homes_compare_propertiesSide-by-side comparison of 2–8 properties with an aligned summary table. Per-target errors captured per-row. Concurrent fetches.
homes_get_nearby_listingsThe "Homes for Sale Near This Property" cross-link cards from a detail page (For Sale, optionally Rentals). URL + address only.
homes_get_historyCombined 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_historyDeprecated — price/ownership/lien timelines only. Prefer homes_get_history.
homes_get_tax_historyDeprecated — year-by-year tax records only. Prefer homes_get_history.
homes_get_market_reportMedian / 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_homesThe signed-in user's saved (favorited) homes. Auth-gated.
homes_get_saved_searchesThe signed-in user's saved searches. Auth-gated.
homes_calculate_affordabilityLocal affordability calculator — max purchase price from income + DTI + rates. No network.
homes_calculate_mortgageLocal PITI calculator — principal+interest, taxes, insurance, HOA, PMI. No network.
homes_estimate_rent_vs_buyLocal rent-vs-buy model — you supply monthly_rent (homes.com has no rental signal to impute it; see below). No network.
homes_healthcheckRound-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_sessionList / register / switch account labels for your own bookkeeping. Label only: requests always use whichever account the fetchproxy browser tab is signed into.

Known data gap: rental estimates

homes.com does NOT publish rental estimates anywhere on its consumer site — there's no rent_zestimate analogue, no "estimated rent" widget on property detail pages, and no comparable-rentals endpoint. The homes_estimate_rent_vs_buy tool exists for the math, but it requires the caller to pass monthly_rent directly (you can't fetch a rent estimate from homes.com to plug in).

For rental signals, use a sibling MCP: zillow_get_property carries rent_zestimate on detail records, and redfin_get_comparable_rentals returns rental comps by URL. See issue #28 for the feasibility investigation.

Acknowledgement of Terms

By using this MCP server, you acknowledge and agree to the following:

1. This server accesses your own homes.com session. Every request is dispatched through your own browser tab via the ContextMint Bridge extension — your cookies, your TLS, your session. It does not — and cannot — access anyone else's account.

2. homes.com's Terms of Use govern your use of this server, just as they govern your direct use of homes.com. The terms prohibit automated crawling without written permission, and IDX listing data is licensed for personal, non-commercial use only. You are agreeing to those terms every time you invoke a tool in this server.

3. Personal, non-commercial use only. This project is not affiliated with, endorsed by, sponsored by, or in partnership with homes.com or CoStar Group. It is a personal automation tool that reads the same server-rendered HTML and Schema.org JSON-LD homes.com ships to your browser. Do not use it to bulk-extract listings, redistribute IDX data, train AI models, populate a competing real-estate product, or for any commercial purpose.

4. Stability is not guaranteed. This server reads Schema.org JSON-LD (<script type="application/ld+json">) and DOM-side <img> tags from SSR pages whose URL conventions (/<city>-<state>/, /property/<slug>/<id>/) may change without notice. It may break. It may stop working. That's by design — the surface is not theirs to maintain on our behalf.

5. You accept full responsibility for any consequences of using this server in connection with your homes.com access — rate limiting, account suspension, IP blocks, AWS WAF challenges, or any enforcement action homes.com takes. If homes.com objects to your use, stop using this server.

This section is the maintainer's good-faith summary of the terms — it is not legal advice and does not modify or supersede homes.com's actual ToU.

Install

Option A — npx (after first publish)

Add to .mcp.json:

json
{  "mcpServers": {    "homes": {      "command": "npx",      "args": ["-y", "homes-mcp"]    }  }}

Option B — from source

bash
git clone https://github.com/chrischall/homes-mcpcd homes-mcpnpm installnpm run build
json
{  "mcpServers": {    "homes": {      "command": "node",      "args": ["/path/to/homes-mcp/dist/bundle.js"]    }  }}

One-time browser setup

homes-mcp talks to your browser through the ContextMint Bridge extension, which is shared across every fetchproxy-based MCP (zillow-mcp, opentable-mcp, resy-mcp, …) and installed separately — it is not bundled here. Get it from the ContextMint Bridge releases:

  • Chrome: download the Chrome zip, unzip it, then chrome://extensions → toggle Developer mode → Load unpacked → pick the unzipped folder.
  • Safari: not available yet — the extension will ship inside the ContextMint app, which has no public download link. Use Chrome for now.

Where it comes from. ContextMint Bridge is the fetchproxy browser extension under its new name, from the same maintainer; fetchproxy's own README (Extension) points to it. Its source is public at nullnet-app/contextmint-bridge: build it yourself, or check a release zip against the .sha256 file published beside it (shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256). There is no Chrome Web Store listing yet.

Open homes.com and sign in. That's all the auth this server needs.

How it works

┌────────────────┐  stdio   ┌──────────────────┐   WS   ┌──────────────────┐    fetch()    ┌─────────────┐│ MCP client     │◀────────▶│  dist/bundle.js  │◀──────▶│  ContextMint     │◀────────────▶│ homes.com  ││ (Claude, etc.) │          │  (Homes MCP)    │ :37149 │  Bridge          │   (real TLS, │ (your tab)  │└────────────────┘          └──────────────────┘        │  (separate)      │   cookies)    └─────────────┘

The MCP server runs in Node, but every HTTP call to homes.com is dispatched into your live browser tab through the ContextMint Bridge extension. Each request rides your existing session — TLS fingerprint, cookies, and JS execution context all match the page that's already on screen. No headless browser stand-in, no separate identity, no third-party proxy: just your real browser, acting on its own behalf, with the MCP server picking what to ask for.

homes.com's pages are SSR React with no public JSON API — every tool extracts data from the Schema.org JSON-LD block embedded in each page (<script type="application/ld+json">). Search pages put listings in CollectionPage.mainEntity.itemListElement[]; detail pages emit a RealEstateListing graph node with mainEntity (address, size, geo) and offers.offeredBy[] (listing agent). Photos are scraped from the DOM since the JSON-LD only carries one primary image. The client wraps that into the tool surface so callers never have to parse HTML themselves.

Commands

bash
npm test               # tsc typecheck + vitest, mocked transport, no networknpm run test:watchnpm run test:coveragenpm run build          # tsc --noEmit + esbuild bundle → dist/bundle.jsnpm run dev            # node dist/bundle.js (after build)

License

MIT

Source: README.md at commit 0a59675

Tools

21

homes_search_properties

Search homes.com listings

Search homes.com listings by free-text location (city, ZIP, neighborhood). Optionally filter by property_type (single_family/condo/townhouse/land/mobile/multi_family), listing_type (for_sale/sold/for_rent/open_houses/new_construction), and sort (newest). Slugifies the location into homes.com's URL routing (e.g. 'Atlanta, GA' + condo + for_sale → /atlanta-ga/condos-for-sale/). Parses the embedded Schema.org JSON-LD to return each listing's address, price, beds/baths, sqft, primary photo, listing agent + brokerage, and the homes.com property URL. `location` is required and must contain Latin letters or digits — a blank or unsluggable location (e.g. only punctuation or non-Latin script) is rejected with an error rather than returning an empty result. KNOWN CAP: homes.com server-renders ~40 listings per page; the response carries `truncated: true` + `total_estimated` when the market has more. To enumerate a busy market, price-band or sub-area your search until each segment fits under the cap. Read-only; safe to call repeatedly.

Parameterssortviewlimitlocationrequiredprice_maxprice_minlisting_typeproperty_type

homes_get_property

Get homes.com property details

Fetch a property's full homes.com record. Pass `url` — the full property detail URL (e.g. from a homes_search_properties result's `url` field). Parses the page's Schema.org JSON-LD plus DOM-side sections to return address, lat/lng, beds/baths, sqft, year built, price, status, listing agent + brokerage, highlights, estimated monthly payment, total views, Matterport tour URL, floorplan URLs, schools, HOA fee, lot_size_sqft plus the derived lot_size_acres (round(lot_size_sqft / 43560, 2); both null — never 0 — for condos and listings with no lot), parking, heating/cooling, MLS ID/source, and date posted/modified. Also returns `extracted_features` (lake_front, hot_tub, basement, furnished, dock, community) derived server-side from the listing description so callers don't have to keyword-parse marketing prose. Pass `include_price_history: true` to inline the same data `homes_get_property_history` returns (`listing_events`, `ownership_events`, `lien_events`, `events_normalized`) under `price_history`. Pass `include_tax_history: true` to inline `homes_get_tax_history` records under `tax_history`. Both are off by default; opting in costs nothing extra over the dedicated tools (same page fetch). The raw `description` is omitted by default; pass `include_description: true` to opt back in. `listing_agent` carries name / job title / profile url only; pass `include_agent_contact: true` for the agent's telephone and email. Read-only; safe to call repeatedly.

Parametersurlrequiredviewinclude_descriptioninclude_tax_historyinclude_agent_contactinclude_price_history

homes_calculate_mortgage

Calculate mortgage payment (local)

Local-only mortgage payment calculator. Returns a full PITI breakdown (principal + interest, property tax, insurance, HOA, PMI) and total interest over the life of the loan. No network call — fully deterministic, safe to use for scenario comparison without burning a fetch. Provide either `down_payment` OR `down_payment_percent`; defaults to 20%. Property tax can be given as `property_tax_annual` or `property_tax_rate` (% of home price). PMI applies automatically when LTV > 80% and `pmi_rate` is provided.

Parameterspmi_ratehome_pricerequiredhoa_monthlydown_paymentinterest_raterequiredloan_term_yearsinsurance_annualproperty_tax_rateproperty_tax_annualdown_payment_percent

homes_compare_properties

Compare homes.com properties side-by-side

Fetch 2 or more homes.com properties and align their facts side-by-side. Each target supplies a `url` — the full homes.com property URL (e.g. from a homes_search_properties result's `url` field). Returns the full per-property record (with server-side `extracted_features`, `hoa_monthly_usd`, `days_on_market`, `price_drop_*`, `lot_size_sqft` + the derived `lot_size_acres`, and `portal_url_hyperlink`). Per-target errors are captured per-row — one bad target will not fail the whole call: a failed row carries `status` = `error_kind` (`timeout` / `bridge_down` / `protocol` / `other`) plus `retryable` and `error`, and the envelope reports `count` / `ok` / `errored`. Calls are concurrent and bounded by an overall deadline: any row still unsettled comes back `status: "pending"` (retryable) with a top-level `pending` count — re-run just those targets. The raw `description` is omitted by default; pass `include_description: true` to keep the marketing prose. `listing_agent` omits the agent's telephone/email unless `include_agent_contact: true`. The cross-row `summary` table duplicates per-property fields (~30% of response weight); it is OPT-IN via `include_summary: true`.

Parametersviewtargetsrequiredinclude_summaryinclude_descriptioninclude_agent_contact

homes_calculate_affordability

Calculate max affordable home price

Solve for the maximum home price you can afford under the standard 28/36 DTI rule. Inputs: monthly income, recurring monthly debts (car loans, student loans, etc.), down payment, interest rate, and optional property-tax rate / insurance / HOA / loan term. Output: max home price, the binding constraint (front-end vs back-end), and the full PITI breakdown at that price. Same math across the realty MCP cohort (@chrischall/realty-core). No network — pure local math.

Parametershoa_monthlyback_end_dtidown_paymentrequiredfront_end_dtiinterest_raterequiredmonthly_debtsmonthly_incomerequiredloan_term_yearsinsurance_annualproperty_tax_rate

homes_get_property_photos

Get homes.com property photo gallery

The full photo gallery for a homes.com listing. homes.com's JSON-LD only exposes one primary image, so this tool scrapes every <img> tag on the property detail page and filters to the homes.com CDN. Pass `url` — the full homes.com property URL or path (e.g. from a homes_search_properties result's `url` field). Returns `{ property_id, url, count, photos: [{ url, position, alt? }] }`. Read-only; safe to call repeatedly.

Parametersurlrequired

homes_healthcheck

Verify the ContextMint Bridge connection end-to-end

Round-trips a small public www.homes.com URL (/robots.txt) through ContextMint Bridge (your signed-in browser tab) and returns diagnostics: the bridge's role (host/peer/null), port, version, the extension link (linked / pair pending / not attached / never answered), the elapsed round-trip time, and a plain-English hint distinguishing 'bridge never came up' from 'extension not connected' from 'this browser can't serve a capability' from 'real www.homes.com-side problem'. Read-only, no auth required. Call this when a real tool fails and you want to know which hop broke.

Takes no parameters.

homes_get_property_history

Get homes.com property history (DEPRECATED — use homes_get_history)

DEPRECATED — prefer `homes_get_history` (combined timelines + tax) or `homes_get_property({ url, include_price_history: true })`. Same data, fewer round trips. Will be removed in a future major version. Three timelines for a homes.com property in one call: `listing_events`, `ownership_events`, `lien_events`. Also returns `events_normalized` mapped onto the cross-MCP enum. Each `events_normalized` row is `{ date, type, price?, price_change_pct?, list_to_sale_pct? }` — `price_change_pct` only on `PriceChange` rows; every other row carries homes.com's "List to Sale" figure as `list_to_sale_pct` (e.g. the sale-to-list ratio on a `Sold` row), never as a price change.

Parametersurlrequired

homes_get_tax_history

Get homes.com property tax history (DEPRECATED — use homes_get_history)

DEPRECATED — prefer `homes_get_history` (combined timelines + tax) or `homes_get_property({ url, include_tax_history: true })`. Same data, fewer round trips; note that `homes_get_history` returns the tax array as `tax_records` (not `records`). Will be removed in a future major version. Year-by-year property-tax records: tax paid, total assessed value, land/improvement split.

Parametersurlrequired

homes_get_history

Get homes.com property + tax history (combined)

Combined history endpoint — replaces `homes_get_property_history` + `homes_get_tax_history` with a single fetch. Returns `{ property_id, url, listing_events, ownership_events, lien_events, events_normalized, tax_records }`. Pass `url` — the full property detail URL. Series are `[]` when the listing doesn't carry that section. Cross-MCP-normalized `events_normalized` carries the same enum across siblings (Listed/PriceChange/Pending/Contingent/Sold/Withdrawn/Relisted/Delisted). Each `events_normalized` row is `{ date, type, price?, price_change_pct?, list_to_sale_pct? }` — `price_change_pct` only on `PriceChange` rows; every other row carries homes.com's "List to Sale" figure as `list_to_sale_pct` (e.g. the sale-to-list ratio on a `Sold` row), never as a price change. Read-only; safe to call repeatedly.

Parametersurlrequired

homes_get_nearby_listings

Get nearby homes.com listings for a property

Scrape the nearby-links section of a homes.com detail page (the tabbed list of `<ul id="nb-Property">` near the bottom of the page) and return the nearby active listings. Pass `url` (the property whose neighborhood to inspect). By default returns the For Sale tab; pass `include_rentals: true` to also include the Rentals tab. Optional `limit` caps the count. Returns `{ property_id, url, count, listings: [{ property_id, url, address?, tab }] }`. Note: the nearby section is a curated cross-link list, not a comparable-sales set — only URL + address are exposed (no price/beds/baths/sqft/photo). To enrich a row, call `homes_get_property` on its url. Read-only; safe to call repeatedly.

Parametersurlrequiredlimitinclude_rentals

homes_get_market_report

Get a homes.com market report for a location

Fetch homes.com's recently-sold listings for a city/ZIP/neighborhood and derive a market summary: count, median sale price, and average $/sqft across the sample. Pass `location` — free-text (e.g. 'Brooklyn, NY', '30311'). `location` is required and must contain Latin letters or digits — a blank or unsluggable location (e.g. only punctuation or non-Latin script) is rejected with an error rather than returning an empty result. Returns `{ region, slug, sold_summary, sample_sold }`. Note: homes.com's sold page typically returns ~40 recent listings — this is a sample-based summary, not an exhaustive market index. Read-only.

Parametersviewlocationrequired

homes_get_saved_homes

Get the signed-in user's saved homes on homes.com

The signed-in user's saved (favorited) homes on homes.com. Scrapes /customer/dashboard/favorites/. Returns `{ count, homes: [{ property_id, url, address?, price?, beds?, baths?, sqft?, status? }] }`. REQUIRES the user to be signed into homes.com in their browser tab — if not, the request throws SessionNotAuthenticatedError. Card fields (price/beds/baths/sqft) are best-effort DOM scrapes — they may be missing on some card variants; treat absence as 'not surfaced on the saved-homes card', not 'no value'. Call `homes_get_property(url)` per row when you need the canonical record. Read-only; safe to call repeatedly.

Takes no parameters.

homes_get_saved_searches

Get the signed-in user's saved searches on homes.com

The signed-in user's saved searches on homes.com. Scrapes /customer/dashboard/saved-searches/. Returns `{ count, searches: [{ name?, url, filters? }] }`. REQUIRES the user to be signed into homes.com in their browser tab — if not, the request throws SessionNotAuthenticatedError. `name` and `filters` are DOM-scraped from the saved-search card; absence means homes.com didn't render them, not that the search has none. Read-only; safe to call repeatedly.

Takes no parameters.

homes_estimate_rent_vs_buy

Project cumulative buy-vs-rent cost over N years

Project the cumulative cost of buying a home versus renting a comparable place over N years. Accounts for down payment, closing costs, monthly PITI, maintenance (~1%/yr default), appreciation (~3%/yr default), rent growth (~3%/yr default), and the opportunity cost of the down payment + closing costs (renter invests it at investment_return_rate, default 6%/yr). P&I stops once the loan term ends. Each year is the buyer's net position if they sold that year (cash out minus equity) versus the renter's net cost, so break-even year is independent of the horizon. Returns year-by-year cumulative net costs, break-even year, and the net difference at horizon (default horizon 7y). No network — pure local math. Same math contract as zillow_estimate_rent_vs_buy. NOTE: caller must supply `monthly_rent` — homes.com does not publish rental estimates anywhere on its consumer site (no rent_zestimate analogue, no comparable-rentals endpoint). For a rent estimate to plug in here, use `zillow_get_property` (its `rent_zestimate` field) or `redfin_get_comparable_rentals`.

Parametershome_pricerequiredhoa_monthlydown_paymentrequiredmonthly_rentrequiredhorizon_yearsinterest_raterequiredloan_term_yearsinsurance_annualmaintenance_raterent_growth_rateappreciation_rateclosing_cost_rate+3 more

homes_get_by_address

Resolve a street address to a homes.com property URL

Resolve a US street address to its canonical homes.com property URL + opaque property hash. Pass `address` (street), `city`, `state`, and optional `zip`. Walks three rungs: first the structured smartsearch typeahead (POST /routes/res/consumer/smartsearch/autocomplete/ — the primary rung, the same address-suggest API homes.com's search box fires, returning the real /property/<slug>/<hash>/ URL directly), then a slug-routed page (parsing the embedded Schema.org JSON-LD — both the CollectionPage search-results shape and the single-RealEstateListing detail redirect), and finally a city/zip search page with street-token fuzzy match. Every candidate is verified against the input with a whole-token street match (plus a unit guard so a multi-unit building resolves to the exact unit, not a neighbour). Optional `price_min` / `price_max` (USD) bound ONLY the city/zip search-fallback rung — when an address is ambiguous or the typeahead misses and you know the listing's rough price, this narrows the area search (homes.com `?price-min=`/`?price-max=` filter) so the fuzzy matcher picks from fewer, more-relevant candidates; omit for unchanged unbounded behaviour. Returns `{ url, property_hash, street_address, matched_via, resolved: true }` on success — `matched_via` is `'typeahead'` for the structured-API hit, `'slug'` for a direct routing hit, `'search_fallback'` for the search-page fuzzy match — or `{ resolved: false, error: 'no listing found' }` when homes.com has no match (so the higher-level unified canonical-URL lookup can degrade gracefully). A retryable `{ resolved: false, status: 'timeout' | 'blocked', retryable: true }` means homes.com never answered (bridge timeout) or refused (sign-in / AWS WAF challenge / HTTP 403-429) — NOT a confirmed miss; for `blocked`, have the user open homes.com and clear the challenge, then retry. KNOWN FAILURE MODE: rural addresses and very-new construction can still miss because homes.com hasn't indexed them yet. Compare the returned `street_

Parameterszipcityrequiredstaterequiredaddressrequiredprice_maxprice_min

homes_register_session

Register a signed-in Homes.com session

Record (or refresh) which Homes.com account the signed-in session belongs to, keyed by `account_identity`. Re-registering the same identity updates the existing entry. Returns a `session_id`; pass `mark_active: true` to mark it as the current account in the same call. The registry is a label only: it does not change which Homes.com account requests use. Every homes tool call goes through whichever browser tab the ContextMint Bridge extension is signed into; to read a different account, sign that tab into it.

Parametersmark_activeauth_expires_ataccount_identityrequired

homes_set_active_session

Set the active Homes.com session

Mark a previously registered `session_id` as the current account label, for your own bookkeeping across a conversation. The registry is a label only: it does not change which Homes.com account requests use. Every homes tool call goes through whichever browser tab the ContextMint Bridge extension is signed into; to read a different account, sign that tab into it.

Parameterssession_idrequired

homes_get_session_context

List all registered Homes.com sessions

List every registered account label plus the current `active_session_id`. When none are registered, `sessions` is empty and `active_session_id` is null. The registry is a label only: it does not change which Homes.com account requests use. Every homes tool call goes through whichever browser tab the ContextMint Bridge extension is signed into; to read a different account, sign that tab into it.

Takes no parameters.

homes_bulk_get

Bulk-fetch homes.com properties (structured records only)

Fetch up to 200 homes.com properties in one call and return their structured records. Pass `urls: string[]`. Results are ordered to match the input array and per-row errors are captured (one bad URL won't fail the whole call). Each row carries a `status`: `ok`, `pending`, or — on failure — the error kind (`timeout` / `bridge_down` / `protocol` / `other`, also in `error_kind`) with a `retryable` flag; the envelope reports `count` / `ok` / `errored` (+ `pending` when non-zero). Mirrors `homes_get_property` per-row, including `extracted_features`, `hoa_fee`, `highlights`, `schools`, `lot_size_sqft` + the derived `lot_size_acres` (null — never 0 — for condos / no-lot listings), and all standard listing fields. The raw `description` is omitted by default; opt back in via `include_description: true`. `listing_agent` omits the agent's telephone/email unless `include_agent_contact: true`. The whole call is bounded by an overall hard deadline: a single slow/hung URL never wedges the server — when the deadline is reached any unsettled row is returned with `status: "pending"` and a `pending` count so you can re-run just those URLs. Use this instead of looping `homes_compare_properties` (which caps at 8 + emits a redundant summary table) when you just want the records. Read-only; safe to call repeatedly.

Parametersurlsrequiredviewinclude_descriptioninclude_agent_contact

homes_resolve_addresses

Bulk-resolve street addresses to homes.com property URLs

Resolve up to 100 street addresses to canonical homes.com property URLs + opaque property hashes in one call. Pass `addresses: [{ address, city, state, zip? }, ...]`. Fans out to the same rungs `homes_get_by_address` runs (structured smartsearch typeahead → slug → city/zip search fallback), verifying each candidate with the same whole-token street + unit match. Per-row outcomes parallel `homes_get_by_address` (with `property_hash` renamed to `property_id` here so the field name lines up with `homes_bulk_get`): `{ resolved: true, url, property_id, street_address, matched_via }` on success — `matched_via` is `'typeahead'`, `'slug'`, or `'search_fallback'` — `{ resolved: false, error }` otherwise; one bad row won't fail the whole call. Each row's `status` is `resolved`, `unresolved`, `pending` (deadline reached — retry it) or `blocked` (homes.com returned a sign-in / AWS WAF challenge or HTTP 403/429 — not a miss; clear the challenge in the browser and retry). Results preserve input order. Use this instead of looping `homes_get_by_address` for any batch ≥ 3. Read-only; safe to call repeatedly.

Parametersaddressesrequired

Version history

15
  1. v2.2.0LatestNov 4, 2026
  2. v2.1.11Oct 16, 2026
  3. v2.1.10Oct 10, 2026
  4. v2.1.9Oct 7, 2026
  5. v2.1.8Oct 5, 2026
  6. v2.1.7Oct 3, 2026
  7. v2.1.6Sep 28, 2026
  8. v2.1.5Sep 25, 2026
  9. v2.1.4Sep 24, 2026
  10. v2.1.3Sep 23, 2026
  11. v2.1.2Sep 23, 2026
  12. v2.1.1Sep 21, 2026
  13. v2.1.0Sep 20, 2026
  14. v2.0.0Sep 17, 2026
  15. v1.4.5Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts