Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.chrischall/homes-mcp

NPM · HOMES-MCP · SCANNED SEP 21

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

Available components

+15 this week 89 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 0 of 19 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to chrischall/homes-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 1 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability64
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 5266 tokens (~250/item across 21 items; 21 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management83
  • Stability observed for 25 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage86
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 59% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 21 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 21 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the io.github.chrischall/homes-mcp server?

io.github.chrischall/homes-mcp runs locally as an npm package, launched with npx -y homes-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · homes-mcp

# add to Claude Code
claude mcp add chrischall-homes-mcp -- npx -y homes-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "chrischall-homes-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "homes-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "chrischall-homes-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "homes-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add chrischall-homes-mcp -- npx -y homes-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "chrischall-homes-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "homes-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add chrischall-homes-mcp --command npx --arg -y --arg homes-mcp
# ~/.hermes/config.yaml
mcp_servers:
  chrischall-homes-mcp:
    command: "npx"
    args: ["-y", "homes-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "chrischall-homes-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "homes-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add chrischall-homes-mcp -t stdio -c npx -a -y homes-mcp
// mcp.json
{
  "mcpServers": {
    "chrischall-homes-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "homes-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 −3
    • MCP protocol: Implements a current MCP spec version (2026-07-28). functional
    • Stability: pass → 0.80 functional
    • Package version: 2.0.0 → 2.1.0 functional
  • 19 Sept 26 +1
    • Stability: 0.97 → pass security
  • 17 Sept 26 +1
    • Stability: 0.90 → unverified security
    • Tool safety: pass → unverified security
    • Capabilities: pass → unverified functional
    • Tool coverage: 100 → unverified functional
    • Dependency health: 0.88 → 1.00 functional
    • Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
    • Package version: 1.4.5 → 2.0.0 functional
  • 16 Sept 26 +16
    • Malware scan: unverified → pass security
  • 15 Sept 26 0
    • Malware scan: unverified → pass security
    • Package version: 1.4.4 → 1.4.5 functional
  • 14 Sept 26 −14
    • Stability: 0.80 → unverified security
    • Malware scan: pass → unverified security
    • Tool safety: pass → unverified security
    • Capabilities: pass → unverified functional
    • Tool coverage: 100 → unverified functional
    • Schema quality: Schema quality not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet. functional
    • Package version: 1.1.2 → 1.4.4 functional
    • Package version: 1.4.3 → 1.4.4 functional
  • 13 Sept 26 −3
    • Stability: pass → 0.80 functional
  • 12 Sept 26 +15
    • Malware scan: unverified → pass security
    • Stability: 0.97 → pass security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 21 Sept 2026 · Analysed npm/homes-mcp@2.1.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo chrischall/homes-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/chrischall/homes-mcp/.github/workflows/release-please.yml@refs/heads/main
Rekor log index 2893921578
Predicate type https://slsa.dev/provenance/v1
Subject digest sha512:fc21239305e9f5723e80008ca7a57c48ba8dca26b5675bdb14eaa02e65e27879b667139eb8604ce191c9a99b73fb7cf32a109d6f5d1e4126c562f3fe9

Background: How many MCP packages publish verified provenance →

Dependencies 19 packages
Packages resolved 19
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 21 exposed · ~5,266 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
homes_bulk_get ~388

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` / `error` / `pending`). 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`. 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.

NameTypeReqDescription
include_descriptionbooleanWhen true, include the raw listing `description` marketing prose per-row. Default false.
urlsarrayyesArray of homes.com property URLs or paths (e.g. from a homes_search_properties result). 1–200 per call.
viewstringResponse shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact strips image/avatar URLs from the response; "full"…

No output schema declared.

No examples provided.

homes_calculate_affordability ~199

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

NameTypeReqDescription
back_end_dtinumber
down_paymentnumberyes
front_end_dtinumber
hoa_monthlynumber
insurance_annualnumber
interest_ratenumberyes
loan_term_yearsinteger
monthly_debtsnumber
monthly_incomenumberyes
property_tax_ratenumber

No output schema declared.

No examples provided.

homes_calculate_mortgage ~226

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

NameTypeReqDescription
down_paymentnumber
down_payment_percentnumber
hoa_monthlynumber
home_pricenumberyes
insurance_annualnumber
interest_ratenumberyesAnnual %, e.g. 6.5
loan_term_yearsintegerDefault 30
pmi_ratenumberAnnual %, applied when LTV > 80%
property_tax_annualnumber
property_tax_ratenumberAnnual % of home price

No output schema declared.

No examples provided.

homes_compare_properties ~358

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. Calls are concurrent. The raw `description` is omitted by default; pass `include_description: true` to keep the marketing prose. The cross-row `summary` table duplicates per-property fields (~30% of response weight); it is OPT-IN via `include_summary: true`.

NameTypeReqDescription
include_descriptionbooleanWhen true, include the raw listing `description` marketing prose on each per-property record. Default false.
include_summarybooleanWhen true, also emit a cross-row `summary` table aligned by field. Default false — the per-row records already carry every summary field, so the table is redundant context weight unless explicitly re…
targetsarrayyesArray of 2–8 properties to compare
viewstringResponse shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact strips image/avatar URLs from the response; "full"…

No output schema declared.

No examples provided.

homes_estimate_rent_vs_buy ~334

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 (renter invests it at investment_return_rate, default 6%/yr). Returns year-by-year cumulative costs, break-even year, and the net difference at horizon. 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`.

NameTypeReqDescription
appreciation_ratenumber
closing_cost_ratenumber
down_paymentnumberyes
hoa_monthlynumber
home_pricenumberyes
horizon_yearsinteger
insurance_annualnumber
interest_ratenumberyes
investment_return_ratenumber
loan_term_yearsinteger
maintenance_ratenumber
monthly_rentnumberyes
property_tax_ratenumber
rent_growth_ratenumber
selling_cost_ratenumber

No output schema declared.

No examples provided.

homes_get_by_address ~647

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). KNOWN FAILURE MODE: rural addresses and very-new construction can still miss because homes.com hasn't indexed them yet. Compare the returned `street_address` against your input to confirm. For larger batches (≥ 3 addresses), prefer `homes_resolve_addresses`. Read-only; safe to call repeatedly.

NameTypeReqDescription
addressstringyesStreet address (e.g. "126 Sleeping Bear Ln").
citystringyesCity (e.g. "Lake Lure").
price_maxnumberOptional upper price bound (USD). Applied ONLY to the search-fallback rung (homes.com's `?price-max=` filter). Useful when an address is ambiguous or the typeahead misses and you know the listing's r…
price_minnumberOptional lower price bound (USD). Applied ONLY to the city/zip search-fallback rung — bounds that area search with homes.com's `?price-min=` filter so an ambiguous address resolves against a narrower…
statestringyes2-letter US state code (e.g. "NC").
zipstringZIP code (optional; improves precision when present).

No output schema declared.

No examples provided.

homes_get_history ~141

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). Read-only; safe to call repeatedly.

NameTypeReqDescription
urlstringyeshomes.com property detail URL or path.

No output schema declared.

No examples provided.

homes_get_market_report ~207

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'). 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.

NameTypeReqDescription
locationstringyesFree-text location: city, ZIP, neighborhood
viewstringResponse shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact strips image/avatar URLs from the response; "full"…

No output schema declared.

No examples provided.

homes_get_nearby_listings ~245

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.

NameTypeReqDescription
include_rentalsbooleanWhen true, also include the Rentals tab (`<ul id="nb-property">` lowercase). Default false — For Sale tab only.
limitintegerMax nearby listings to return (default unlimited).
urlstringyeshomes.com property detail URL or path.

No output schema declared.

No examples provided.

homes_get_property ~603

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. Read-only; safe to call repeatedly.

NameTypeReqDescription
include_descriptionbooleanWhen true, include the raw listing `description` marketing prose. Default false — the structured `extracted_features` field surfaces the keywords callers usually want; the prose itself is heavy chat-…
include_price_historybooleanWhen true, inline `price_history` (listing/ownership/lien events + events_normalized) on the response — the same data `homes_get_property_history` returns. Saves a second round trip when you need bot…
include_tax_historybooleanWhen true, inline `tax_history` records — same data `homes_get_tax_history` returns. Saves a second round trip when you need both (#27).
urlstringyeshomes.com property detail URL or path (e.g. https://www.homes.com/property/3199-delmar-ln-nw-atlanta-ga/rxrzwg0kjnr32/). Required — pass the `url` field from a homes_search_properties result.
viewstringResponse shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact strips image/avatar URLs from the response; "full"…

No output schema declared.

No examples provided.

homes_get_property_history ~109

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.

NameTypeReqDescription
urlstringyeshomes.com property detail URL or path.

No output schema declared.

No examples provided.

homes_get_property_photos ~142

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.

NameTypeReqDescription
urlstringyeshomes.com property detail URL or path. Required — pass the `url` field from a homes_search_properties result.

No output schema declared.

No examples provided.

homes_get_saved_homes ~158

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

homes_get_saved_searches ~115

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

homes_get_session_context ~45

Return the full set of registered sessions plus the current `active_session_id`. When no sessions are registered, `sessions` is empty and `active_session_id` is null.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

homes_get_tax_history ~110

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.

NameTypeReqDescription
urlstringyeshomes.com property detail URL or path.

No output schema declared.

No examples provided.

homes_healthcheck ~119

Round-trips a small public www.homes.com URL (/robots.txt) through the fetchproxy bridge 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 '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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

homes_register_session ~153

Register (or refresh) an authenticated Homes session keyed by signed-in account identity. Re-registering the same `account_identity` updates the existing session rather than creating a duplicate. Returns the `session_id` to use when routing per-tool calls. The first registered session becomes the default `active_session_id`. Pass `mark_active: true` to make the newly-registered session active in the same call.

NameTypeReqDescription
account_identitystringyesCaller-supplied identifier for the signed-in account (typically the saved-account email).
auth_expires_atstringOptional ISO timestamp at which the session expires.
mark_activebooleanWhen true, immediately make the newly-registered session the active one.

No output schema declared.

No examples provided.

homes_resolve_addresses ~319

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. Results preserve input order. Use this instead of looping `homes_get_by_address` for any batch ≥ 3. Read-only; safe to call repeatedly.

NameTypeReqDescription
addressesarrayyesArray of address records to resolve (1–100 per call). Each must include street `address`, `city`, and 2-letter `state`; `zip` is optional but improves precision. Optional per-row `price_min` / `price…

No output schema declared.

No examples provided.

homes_search_properties ~583

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

NameTypeReqDescription
limitintegerMax listings to return (default 40, which is also the homes.com SSR page size). Passing >40 will still cap at the page size; the response will set `truncated: true` and `total_estimated` to homes.com…
listing_typestringSearch axis. Defaults to for_sale. "sold" returns recently-sold listings (useful for market context). "for_rent" returns rentals. "open_houses" returns listings with scheduled open houses. "new_const…
locationstringyesFree-text location: city, ZIP, neighborhood (e.g. "Atlanta, GA", "Brooklyn, NY", "30311", "Park Slope")
price_maxnumberUpper price bound in USD (inclusive). Emitted as homes.com's `?price-max=` filter. Pair with price_min to band a busy market under the ~40-listing SSR cap.
price_minnumberLower price bound in USD (inclusive). Emitted as homes.com's `?price-min=` filter. Composes with property_type / listing_type. Must be <= price_max when both are given.
property_typestringRestrict to a specific homes.com property type. Composes with listing_type.
sortstringSort order. Only "newest" is currently supported.
viewstringResponse shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact strips image/avatar URLs from the response; "full"…

No output schema declared.

No examples provided.

homes_set_active_session ~65

Switch which registered session subsequent tool calls route through by default. Pass a `session_id` previously returned by `homes_register_session`. Tools that accept an explicit `session_id` parameter override this default per-call.

NameTypeReqDescription
session_idstringyesSession id to make active.

No output schema declared.

No examples provided.

Common questions

What is the io.github.chrischall/homes-mcp server?

io.github.chrischall/homes-mcp is listed in the public MCP registry as io.github.chrischall/homes-mcp. homes.com real-estate for Claude, search, property details, photos, compare, mortgage math. This page covers its npm package (homes-mcp).

Is the io.github.chrischall/homes-mcp server safe to use?

io.github.chrischall/homes-mcp scores 89 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.chrischall/homes-mcp server expose?

io.github.chrischall/homes-mcp exposes 21 tools: homes_search_properties, homes_get_property, homes_calculate_mortgage, homes_compare_properties, homes_calculate_affordability, and 16 more. Their descriptions and schemas cost roughly 5,266 tokens of context every time the server is loaded.

Is the io.github.chrischall/homes-mcp server still maintained?

io.github.chrischall/homes-mcp is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.chrischall/homes-mcp server under?

io.github.chrischall/homes-mcp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.