io.github.chrischall/zillow-mcp
NPM · ZILLOW-MCP
Zillow real-estate for Claude — search, property details, Zestimates, saved searches & homes
Available components
Last scanned (13 hours ago)
Scores higher than 95% of npm servers
Category Maps and Location
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 8 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/zillow-mcp). View diagnostics → Pass
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 0 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability62
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 6368 tokens (~303/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 Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage91
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 72% 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
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.
- 5 Nov 26 +11
- Known CVEs: unverified → pass ▲ security
- Dependency health: unverified → 1.00 ▲ functional
- 4 Nov 26 −11
- Known CVEs: pass → unverified ▼ security
- Stability: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Dependency health: 1.00 → unverified ▼ functional
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Package version: 1.2.5 → 1.3.1 functional
- Package version: 1.2.5 → 1.3.0 functional
- 30 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 29 Oct 26 −15
- Malware scan: pass → unverified ▼ security
- Package version: 1.2.4 → 1.2.5 functional
- 22 Oct 26 0
- Package version: 1.2.3 → 1.2.4 functional
- 18 Oct 26 +2
- Known CVEs: partial → pass ▲ security
- Dependency health: partial → 1.00 functional
- 17 Oct 26 +1
- Stability: 0.90 → pass security
- 16 Oct 26 −3
- Stability: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Known CVEs: pass → partial ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Dependency health: 1.00 → partial functional
- Stability: pass → 0.90 functional
- Package version: 1.2.3 → 1.2.4 functional
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 5 Nov 2026 · Analysed npm/zillow-mcp@1.3.1
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/zillow-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/chrischall/zillow-mcp/.github/workflows/release-please.yml@refs/heads/main |
| Rekor log index | 3691542695 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:dd1155b6d5e720829412e156309282ac70d1213319e6ea1aff02dbc5794a48771d012b2572b1ecc9a3763a4c36667c133cbab03884af9444fccf3a2d9 |
Background: How many MCP packages publish verified provenance →
Dependencies 8 packages
| Packages resolved | 8 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
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 →
zillow_bulk_get Bulk-fetch Zillow properties by zpid ~415
Fetch up to 200 Zillow property records in a single call — the "give me everything for these N saved homes" endpoint. Returns one structured row per input id (no pivoted side-by-side summary table — for 2-25 listings with a comparison summary use `zillow_compare_properties`). Each row is either `{ zpid, status: "ok", property }` on success or `{ zpid, status, error_kind, retryable, error }` on failure (`status` = `error_kind`) — one bad zpid never fails the whole call. Calls fan out concurrently against `/homedetails/<zpid>_zpid/` (capped at 6 in flight, per issue #78, with retry-once-on-timeout per sub-request to absorb transient SW evictions). Big lists fan out bounded to 6 in flight and paced by a per-host requests-per-minute throttle (burst 20) so the batch doesn't trip Zillow's PerimeterX bot-wall (issue #90). If the bot-wall is hit, the blocked sub-requests are retried with exponential backoff; anything still blocked is reported with `error_kind: "bot_challenge"` (distinct from a missing listing) and the response carries a `{ blocked, retry_after_s }` envelope so you can finish the rest in a second pass. The whole call is bounded by an overall hard deadline (issue #98): a single slow/hung row never wedges the server — when the deadline is reached any row that has not yet settled is returned with `error_kind: "pending"` and the response carries a `{ pending }` count so you can re-run just those ids. The envelope also reports `count` / `ok` / `errored`.
| Name | Type | Req | Description |
|---|---|---|---|
| urls | array | – | Zillow homedetails URLs/paths to fetch. 1..200. |
| zpids | array | – | Zpids to fetch. 1..200. Provide either zpids or urls, not both. |
No output schema declared.
No examples provided.
zillow_calculate_affordability Calculate max affordable home price ~275
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.
| Name | Type | Req | Description |
|---|---|---|---|
| back_end_dti | number | – | Back-end DTI cap as decimal, default 0.36 |
| down_payment | number | yes | – |
| front_end_dti | number | – | Front-end DTI cap as decimal, default 0.28 |
| hoa_monthly | number | – | – |
| insurance_annual | number | – | – |
| interest_rate | number | yes | Annual %, e.g. 6.5 |
| loan_term_years | integer | – | Default 30, max 50 |
| monthly_debts | number | – | Sum of monthly debt payments (car, student loans, etc.) |
| monthly_income | number | yes | – |
| property_tax_rate | number | – | Annual % of home price, default 1.1 |
No output schema declared.
No examples provided.
zillow_calculate_mortgage Calculate mortgage payment (local) ~245
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.
| Name | Type | Req | Description |
|---|---|---|---|
| down_payment | number | – | – |
| down_payment_percent | number | – | – |
| hoa_monthly | number | – | – |
| home_price | number | yes | – |
| insurance_annual | number | – | – |
| interest_rate | number | yes | Annual %, e.g. 6.5 |
| loan_term_years | integer | – | Default 30, max 50 |
| pmi_rate | number | – | Annual %, applied when LTV > 80% |
| property_tax_annual | number | – | – |
| property_tax_rate | number | – | Annual % of home price |
No output schema declared.
No examples provided.
zillow_compare_properties Compare multiple Zillow properties side-by-side ~478
Side-by-side analysis of 2-25 Zillow properties. **If you just want N property records, use `zillow_bulk_get` instead** — compare is for genuine side-by-side (its pivoted summary table is the value-add); bulk_get is the fetch-many endpoint and accepts up to 200 ids. (Issue #79 raised this cap from 8 to 25 — a 19-listing analysis now fits in one call instead of three.) Provide an array of zpids (or homedetails URLs). Returns the full per-property record per row (with `extracted_features` populated). Pass `include_summary: true` for an extra pivoted summary table (one row per field) — defaults off because `results[].property.*` already carries everything. The raw `description` is omitted from each row by default — pass `include_description: true` to keep it. Errors for individual properties are captured per-row — one bad zpid won't fail the whole call. Calls fan out concurrently (capped at 6 in flight, per issue #78, with retry-once-on-timeout per sub-request to absorb transient SW evictions), paced by the same throttle as `zillow_bulk_get`; a bot-wall block is retried with backoff and, if it persists, reported as `error_kind: "bot_challenge"` (distinct from a missing listing) with `{ blocked, retry_after_s }` on the envelope. The call is bounded by an overall deadline — unsettled rows come back as `error_kind: "pending"`.
| Name | Type | Req | Description |
|---|---|---|---|
| include_description | boolean | – | Include the raw `description` on each row. Defaults to `false`. |
| include_summary | boolean | – | Include the pivoted `summary` table (one row per compared field, one column per listing). Defaults to `false` because `results[].property.*` already carries everything — the summary roughly doubles r… |
| urls | array | – | Array of 2-25 Zillow homedetails URLs/paths to compare. Provide either zpids or urls, not both. |
| zpids | array | – | Array of 2-25 zpids to compare. Provide either zpids or urls, not both. For larger batches, use `zillow_bulk_get`. |
No output schema declared.
No examples provided.
zillow_estimate_rent_vs_buy Estimate rent-vs-buy break-even over a horizon ~365
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), property appreciation (~3%/yr default), rent growth (~3%/yr default), and the opportunity cost of the down payment (renter invests it at the investment_return_rate, default 6%/yr). Mortgage P&I stops once the loan is paid off, so horizons longer than the loan term are handled. horizon_years and loan_term_years are capped at 50. Returns the year-by-year cumulative costs, the break-even year, and the net difference at the horizon. No network — pure local math.
| Name | Type | Req | Description |
|---|---|---|---|
| appreciation_rate | number | – | Annual %, default 3.0 |
| closing_cost_rate | number | – | % of home price, default 2.5 |
| down_payment | number | yes | – |
| hoa_monthly | number | – | – |
| home_price | number | yes | – |
| horizon_years | integer | – | Default 7, max 50 |
| insurance_annual | number | – | – |
| interest_rate | number | yes | – |
| investment_return_rate | number | – | Annual return on the renter's parallel-invested down payment, default 6.0 |
| loan_term_years | integer | – | Default 30, max 50 |
| maintenance_rate | number | – | Annual % of home value, default 1.0 |
| monthly_rent | number | yes | – |
| property_tax_rate | number | – | – |
| rent_growth_rate | number | – | Annual %, default 3.0 |
| selling_cost_rate | number | – | % of sale price, default 6.0 |
No output schema declared.
No examples provided.
zillow_get_by_address Resolve an address to its Zillow canonical URL + zpid ~608
Resolve a free-text address (with optional city/state/zip) to its Zillow canonical homedetails URL and zpid. IMPORTANT: for rural / mountain-MLS / locality-mismatched addresses (the search-fallback rung is often the ONLY rung that hits), ALWAYS pass `price_min` and `price_max` if you have any sense of the property's price band — without them the city/state search can't disambiguate and the call returns `{ resolved: false }`. The price params are not optional niceties; they are frequently load-bearing. Tries up to 5 rungs: (1) direct resolver hit, (2) autocomplete typeahead — Zillow's own canonical address suggestions, whole-token street-matched then resolved to a zpid (high recall), (3) bidirectional street-token swap ("Rd" <-> "Road", "Hts" <-> "Heights", "Bluebird" <-> "Blue Bird"), (4) locality remap — city-drop + locality-alias substitution when the caller-supplied city fails (real-world cases: Lake Lure <-> Rutherfordton, Beech/Sugar Mountain <-> Banner Elk), (5) city/state search fallback bounded by the price band. Returns `via: "direct" | "autocomplete" | "suffix_expansion" | "locality_remap" | "search_fallback"` so the caller knows how the match was made; when the locality remap fires, `queried_city` (what you sent) and `resolved_city` (what Zillow returned) are both set so the caller can see the substitution. Degrades to `{ resolved: false }` when ALL rungs miss — does not throw. Read-only, no auth required.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Street address (e.g. "126 Sleeping Bear Ln"). |
| city | string | – | City name (e.g. "Lake Lure"). |
| price_max | integer | – | Upper bound for the search-fallback rung. Pair with `price_min` — same load-bearing role for rural/remapped-locality addresses. |
| price_min | integer | – | Lower bound for the search-fallback rung. Frequently load-bearing: for rural / locality-mismatched addresses this is often the only rung that hits, and without a price band it cannot disambiguate. Pa… |
| state | string | – | Two-letter state code (e.g. "NC"). |
| view | string | – | Response 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"… |
| zip | string | – | ZIP code (e.g. "28746"). |
No output schema declared.
No examples provided.
zillow_get_market_report Get Zillow market report for a region ~144
Market report for a Zillow region: median sale/list prices, days on market, for-sale inventory, new listings, Zillow Home Value Index (ZHVI), and year-over-year ZHVI change. Provide either a `region_path` (e.g. "/home-values/6181/brooklyn-ny/") or a full Zillow home-values URL. Read-only; safe to call repeatedly.
| Name | Type | Req | Description |
|---|---|---|---|
| region_path | string | – | Path under /home-values/, e.g. "/home-values/6181/brooklyn-ny/" or "6181/brooklyn-ny/" |
| url | string | – | Full Zillow URL to a home-values page |
No output schema declared.
No examples provided.
zillow_get_price_history Get Zillow price history for a property ~205
Listing-price events for a property — listings, price changes, pending, sold, etc. — by zpid or homedetails URL. Returns two parallel arrays: `events` (raw Zillow shape with `event` strings and MLS attribution) and `events_normalized` (cross-MCP shared shape with a fixed `type` enum: Listed/PriceChange/Pending/Contingent/Sold/Withdrawn/Relisted/Delisted). The normalized form lets callers merge histories across real-estate MCPs without re-implementing taxonomy. Sourced from the same homedetails page as zillow_get_property. For some listings (commonly non-Showcase) Zillow omits the history from the server-rendered page; then `events` is empty and an explanatory `note` is returned — distinct from a genuine no-history.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | – | Zillow homedetails URL or path |
| zpid | – | – | Zillow Property ID |
No output schema declared.
No examples provided.
zillow_get_property Get Zillow property details ~451
Fetch a property's full Zillow record by zpid (numeric Zillow Property ID, e.g. 12345) or by homedetails URL. Returns address (Zillow's slugged form), mls_street_address (canonical MLS form — prefer this when it disagrees), neighborhood, price, Zestimate, rent Zestimate, beds/baths, square footage, lot_size (sq ft) plus the derived lot_size_acres (round(lot_size / 43560, 2); both null — never 0 — for condos and listings with no lot), year built, schools, and an `extracted_features` block (lake_front, hot_tub, basement, furnished, dock, community) keyword-parsed from the description. Also returns `zest_vs_list_pct` — the list-vs-Zestimate spread, `(price − zestimate) / zestimate × 100` rounded to 1 decimal: POSITIVE means listed ABOVE the Zestimate, negative below (null when either input is missing). The raw `description` is omitted by default — pass `include_description: true` to keep it; in most cases the extracted features cover what callers need. Price-history and tax-history are also opt-in (`include_price_history: true` / `include_tax_history: true`) — bundle them in to skip a separate call. Provide exactly one of zpid or url. Read-only; safe to call repeatedly.
| Name | Type | Req | Description |
|---|---|---|---|
| include_description | boolean | – | Include the raw `description` in the response. Defaults to `false` — `extracted_features` is always populated and usually sufficient. |
| include_price_history | boolean | – | Include the price-history series (mirrors `zillow_get_price_history`) on the response under `price_history`. Defaults to `false`. Saves a round trip when you already know you want the full picture. |
| include_tax_history | boolean | – | Include the tax-history series (mirrors `zillow_get_tax_history`) on the response under `tax_history`. Defaults to `false`. |
| url | string | – | A Zillow homedetails URL (or path beginning with /homedetails/) |
| zpid | – | – | Zillow Property ID (numeric) |
No output schema declared.
No examples provided.
zillow_get_property_photos Get Zillow property photo gallery ~189
The full photo gallery for a Zillow property — every image embedded in the homedetails page. Each entry returns the canonical hero URL plus the widest jpeg + webp variants and caption when present. Provide exactly one of `zpid` or `url`. Set `include_sources: true` to also include the full multi-width source lists (warning: a 50+ photo property can exceed the per-call token budget). Returns `{ zpid, count, photos, street_view_url?, high_res_url? }`. Read-only; safe to call repeatedly.
| Name | Type | Req | Description |
|---|---|---|---|
| include_sources | boolean | – | Include the full multi-width jpeg + webp source lists per photo (default false; on for properties with <~15 photos). |
| url | string | – | A Zillow homedetails URL (or path beginning with /homedetails/) |
| zpid | – | – | Zillow Property ID (numeric) |
No output schema declared.
No examples provided.
zillow_get_saved_homes Get my saved (favorited) Zillow homes ~139
The signed-in user's saved (favorited) homes on zillow.com, flattened across all of the user's collections. Returns address, price, Zestimate, status, and when each home was saved. An optional `session_id` (from `zillow_register_session`) is checked against the session registry — an unknown id errors — but it is a label only: the request always goes through whichever browser tab the extension is signed into. Requires the user to be signed in. Read-only; safe to call repeatedly.
| Name | Type | Req | Description |
|---|---|---|---|
| session_id | string | – | Optional registered session id (from `zillow_register_session`). Defaults to the active session. |
No output schema declared.
No examples provided.
zillow_get_saved_searches Get my saved Zillow searches ~253
The signed-in user's saved searches on zillow.com (name, filters, new-listing count, notification frequency) — the answer to "anything new on my saved searches?". `view: 'brief'` gives one line per search with its new-listing count. Requires the user to be signed in at zillow.com in the bridged browser tab — throws SessionNotAuthenticatedError otherwise. An optional `session_id` (from `zillow_register_session`) is checked against the session registry — an unknown id errors — but it is a label only: the request always goes through whichever browser tab the extension is signed into. Read-only; safe to call repeatedly.
| Name | Type | Req | Description |
|---|---|---|---|
| session_id | string | – | Optional registered session id (from `zillow_register_session`). Defaults to the active session. |
| view | string | – | "full" (default) returns each saved search as JSON; "brief" returns one line per search: name — <last update as an ISO date, or "no date"> — <N new | no new listings | new count unknown> ("new count… |
No output schema declared.
No examples provided.
zillow_get_session_context List all registered Zillow sessions ~91
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 Zillow account requests use. Every zillow tool call goes through whichever browser tab the ContextMint Bridge extension is signed into; to read a different account, sign that tab into it.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
zillow_get_tax_history Get Zillow tax history for a property ~125
Year-by-year property-tax record for a property: tax paid, assessed value, and the year-over-year change rates. Sourced from the homedetails page. Useful for spotting reassessment jumps or comparing tax burdens across properties. For some listings (commonly non-Showcase) Zillow omits the history from the server-rendered page; then `events` is empty and an explanatory `note` is returned — distinct from a genuine no-history.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | – | Zillow homedetails URL or path |
| zpid | – | – | Zillow Property ID |
No output schema declared.
No examples provided.
zillow_get_zestimate_history Get Zestimate history for a property ~176
Historical Zestimate values for a property by zpid or homedetails URL. Returns a time series of {date, value, rent?} entries (rent included when Zillow has a rent Zestimate for the property). Note: zillow_get_property returns only the *current* Zestimate as a scalar — call this tool when you need the trend. For some listings (commonly non-Showcase) Zillow renders the trend client-side and omits it from the server-rendered page; then `points` is empty and an explanatory `note` is returned — distinct from a genuine no-history. Read-only; safe to call repeatedly.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | – | Zillow homedetails URL (or path). Provide either zpid or url. |
| zpid | – | – | Zillow Property ID. Provide either zpid or url. |
No output schema declared.
No examples provided.
zillow_healthcheck Verify the ContextMint Bridge connection end-to-end ~135
Round-trips a small public www.zillow.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.zillow.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.
zillow_register_session Register a signed-in Zillow session ~178
Record (or refresh) which Zillow 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 Zillow account requests use. Every zillow tool call goes through whichever browser tab the ContextMint Bridge extension is signed into; to read a different account, sign that tab into it.
| Name | Type | Req | Description |
|---|---|---|---|
| account_identity | string | yes | Caller-supplied identifier for the signed-in account (typically the saved-account email). |
| auth_expires_at | string | – | Optional ISO timestamp at which the session expires. |
| mark_active | boolean | – | When true, immediately make the newly-registered session the active one. |
No output schema declared.
No examples provided.
zillow_resolve_addresses Bulk-resolve addresses → Zillow zpids ~656
Resolve up to 100 free-text or structured addresses to Zillow zpids + canonical URLs in one call. Each row may be a bare string or `{address, city?, state?, zip?, price_hint?}`. IMPORTANT: `price_hint` (USD) is frequently load-bearing — for rural / mountain-MLS / locality-mismatched rows the search-fallback rung is often the ONLY rung that hits, and without a price band it cannot disambiguate. The resolver derives a ±0.5% band from the hint. Always pass `price_hint` for any row where you have a sense of the price. Runs the same 5-rung resolver as `zillow_get_by_address` (direct → autocomplete-typeahead → suffix-expansion → locality-remap → search-fallback) — bulk and single walk the same ladder via the shared resolver, so they match the same partition for the same inputs. Locality-remap rung handles real-world mountain-MLS cases (Lake Lure <-> Rutherfordton, Beech/Sugar Mountain <-> Banner Elk) where Zillow indexes the parent locality; when it fires, `queried_city` (what you sent) and `resolved_city` (what Zillow returned) are both set so the caller can see the substitution. Concurrent fan-out — a 60-address batch returns in roughly one round trip instead of 60. Per-row error capture so one bad address never fails the batch. `confidence` is `"exact"` for direct hits, `"autocomplete"` / `"suffix_expansion"` / `"locality_remap"` / `"search_fallback"` for retries, `"none"` when all rungs missed. The whole call is bounded by an overall hard deadline (issue #98), like `zillow_bulk_get`: a single slow/hung row never wedges the server — when the deadline is reached any unsettled row is returned with `error_kind: "pending"` (distinct from a real miss) and the response carries a `pending` count so you can re-run just those addresses. Every lookup is paced by the same per-host requests-per-minute throttle as `zillow_bulk_get` so a big batch does not trip Zillow's PerimeterX bot-wall. If the wall is hit, the remaining rows stop querying Zillow and come back with `error_kind:…
| Name | Type | Req | Description |
|---|---|---|---|
| addresses | array | yes | Free-text addresses (e.g. "126 Sleeping Bear Ln, Lake Lure, NC") or structured rows. 1..100. |
| view | string | – | Response 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.
zillow_search_properties Search Zillow listings ~629
Search Zillow listings by location (city, ZIP, neighborhood, or address) and optional filters (status, price band, beds/baths minimums, home types). Returns matching properties with price, beds/baths, sqft, Zestimate, status, image, and homedetails URL. Works with city/ZIP-level queries (filtered against your criteria) AND with full-address or street-only queries (returns the listings Zillow resolves to directly — filters are not applied in this single-round-trip path; use zillow_get_by_address for the cleanest one-shot address → zpid lookup). Throws LocationNotResolved if Zillow can't pin either a region or matching listings for the input (instead of silently falling back to your default search region). Heads up: Zillow renders ~40 listings per page server-side; this tool auto-paginates by default when `limit` exceeds that, walking subsequent pages and concatenating results (set `auto_paginate: false` to opt out and get the single-page response). For dense markets, price-band the search to enumerate fully. Does NOT return Zestimate history — use zillow_get_zestimate_history for that. Read-only; safe to call repeatedly.
| Name | Type | Req | Description |
|---|---|---|---|
| auto_paginate | boolean | – | When true (default), aggregate across Zillow's paginated search responses until `limit` is reached. Pass `false` to disable pagination — only one Zillow page is fetched (~40 listings). |
| baths_min | integer | – | – |
| beds_min | integer | – | – |
| home_types | array | – | Restrict to one or more home types. |
| include_meta | boolean | – | When true, return {meta, results}: meta carries Zillow's own total_result_count, pages fetched, listings dropped by the filter/home-type guards, and `truncated` (more matches exist than were returned… |
| limit | integer | – | Max listings to return (default 40, max 1000). When > 40 and `auto_paginate` is true (the default), the tool walks Zillow's pagination server-side and aggregates pages until `limit` is reached, an em… |
| location | string | yes | Free-text location: city, ZIP, neighborhood, or address (e.g. "Brooklyn, NY", "94110", "Park Slope") |
| map_bounds | object | – | Optional map viewport (lat/lng box) to intersect with the location — use to tile dense markets. |
| price_max | integer | – | – |
| price_min | integer | – | – |
| status | string | – | Listing status. Default for_sale. |
| view | string | – | Response 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.
zillow_set_active_session Set the active Zillow session ~94
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 Zillow account requests use. Every zillow tool call goes through whichever browser tab the ContextMint Bridge extension is signed into; to read a different account, sign that tab into it.
| Name | Type | Req | Description |
|---|---|---|---|
| session_id | string | yes | Session id to make active. |
No output schema declared.
No examples provided.
zillow_sweep_area Exhaustively sweep a Zillow search area ~517
Enumerate EVERY Zillow listing matching the filters inside a location (resolved like zillow_search_properties) or an explicit bounding box, without silent truncation. Splits the area into map tiles and recursively quarters any tile whose Zillow-reported total exceeds what one query can return, dedupes by zpid and re-applies the numeric filters (drift guard). Returns a completeness summary (requests, tiles, unique listings, tiles still truncated at max depth, drift warnings such as Zillow ignoring the price filter or the viewport) plus the listings, or writes the listings to `output_path` as JSON for large areas (inside the output directory: ZILLOW_OUTPUT_DIR, default ~/Downloads/zillow-mcp). Sequential requests with a delay, paced by the same per-host requests-per-minute throttle as `zillow_bulk_get`; if Zillow's bot-wall blocks a request the sweep stops and returns `{ blocked: true, retry_after_s }` with what it had. Read-only against Zillow; the only write is the optional local output file.
| Name | Type | Req | Description |
|---|---|---|---|
| baths_min | integer | – | – |
| beds_min | integer | – | – |
| bounds | object | – | Optional box to sweep; defaults to the resolved region's map bounds. |
| delay_ms | integer | – | Pause before every Zillow request, including each page within a tile (default 1200). |
| home_types | array | – | – |
| location | string | yes | City / ZIP / county used to resolve the region (e.g. "King County, WA"). |
| max_depth | integer | – | Max quarterings per tile (default 6). |
| max_requests | integer | – | Hard request budget (default 150), counting the resolve call and every page; the sweep stops mid-tile rather than exceed it. |
| output_path | string | – | Optional NEW .json file to write the full results (and per-tile counts) to: a file name (e.g. "san-jose.json") written into the output directory (ZILLOW_OUTPUT_DIR, default ~/Downloads/zillow-mcp), o… |
| price_max | integer | – | – |
| price_min | integer | – | – |
| status | string | – | – |
| tile_cap | integer | – | Treat a tile as complete only if its total is at most this (default 400). |
No output schema declared.
No examples provided.
How do I install the io.github.chrischall/zillow-mcp server?
io.github.chrischall/zillow-mcp runs locally as an npm package, launched with npx -y zillow-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 · zillow-mcp
claude mcp add chrischall-zillow-mcp -- npx -y zillow-mcp
What is the io.github.chrischall/zillow-mcp server?
io.github.chrischall/zillow-mcp is listed in the public MCP registry as io.github.chrischall/zillow-mcp. Zillow real-estate for Claude, search, property details, Zestimates, saved searches & homes. This page covers its npm package (zillow-mcp).
Is the io.github.chrischall/zillow-mcp server safe to use?
io.github.chrischall/zillow-mcp scores 92 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 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/zillow-mcp server expose?
io.github.chrischall/zillow-mcp exposes 21 tools: zillow_search_properties, zillow_sweep_area, zillow_get_property, zillow_get_zestimate_history, zillow_get_saved_searches, and 16 more. Their descriptions and schemas cost roughly 6,368 tokens of context every time the server is loaded.
Is the io.github.chrischall/zillow-mcp server still maintained?
io.github.chrischall/zillow-mcp is still listed as active in the MCP registry. We last reached this channel on 5 November 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/zillow-mcp server under?
io.github.chrischall/zillow-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.