Skip to main content
Glama
zillow-mcp

zillow-mcp

by chrischall

Exhaustively sweep a Zillow search area

zillow_sweep_area
Idempotent

Sweep an entire Zillow area by filters or bounding box to enumerate every matching listing without truncation, dedupe results, and return completeness warnings.

Instructions

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.

Input Schema

NameRequiredDescriptionDefault
boundsNoOptional box to sweep; defaults to the resolved region's map bounds.
statusNo
beds_minNo
delay_msNoPause before every Zillow request, including each page within a tile (default 1200).
locationYesCity / ZIP / county used to resolve the region (e.g. "King County, WA").
tile_capNoTreat a tile as complete only if its total is at most this (default 400).
baths_minNo
max_depthNoMax quarterings per tile (default 6).
price_maxNo
price_minNo
home_typesNo
output_pathNoOptional 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), or an absolute path inside it. Paths outside that directory are refused, and an existing file is never overwritten. Omit to get the results inline; use a file for large areas so the listings stay out of the conversation.
max_requestsNoHard request budget (default 150), counting the resolve call and every page; the sweep stops mid-tile rather than exceed it.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.2.4
    • changedInput schema / properties / output_path / description
      Previous value: -"Optional absolute path of a NEW .json file to write the full results (and per-tile counts) to; an existing file is never overwritten. Omit to get the results inline; use a file for large areas so the listings stay out of the conversation."New value: +"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), or an absolute path inside it. Paths outside that directory are refused, and an existing file is never overwritten. Omit to get the results inline; use a file for large areas so the listings stay out of the conversation."
  2. Addedv1.2.0

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnly=false, openWorld=true, idempotent=true, destructive=false. The description goes well beyond: it discloses sequential paced requests sharing the `zillow_bulk_get` throttle, the bot-wall failure contract (`{ blocked: true, retry_after_s }` with partial results), the recursive quartering/dedupe/drift-guard algorithm, and clarifies that the only write is the optional local output file. This explains the readOnly=false annotation rather than contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the purpose, then densely sequenced through algorithm, return shape, output options, and failure behavior. It is one very long paragraph and somewhat dense to parse, but essentially every clause carries operational information rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a high-complexity, 13-param tool with no output schema, the description covers the critical ground: what the return contains (completeness summary plus listings), the file-output alternative, the throttling model, and the blocked/retry failure mode. Only the individual filter parameters and the exact shape of individual listing fields are left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 54% across 13 params. The description gives useful conceptual context for the sweep controls (tile_cap, max_depth, max_requests, output_path) and mentions re-applying numeric filters, but those params already carry schema descriptions, and the remaining filter params (beds_min, baths_min, home_types, status, price range) are undocumented in both places. It partially, not fully, compensates for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Enumerate EVERY Zillow listing matching the filters inside a location ... or an explicit bounding box, without silent truncation.' The phrase 'without silent truncation' and 'EVERY' distinguish it from the ordinary sibling search by defining the exhaustive-completeness guarantee. An agent can tell it apart from zillow_search_properties without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the tool's completeness guarantee suggests when to reach for it, and it advises using `output_path` for large areas. But there is no explicit when-to-use/when-not statement and no direct instruction like 'prefer zillow_search_properties for a quick single-page lookup'; the sibling references (search_properties, bulk_get) are made for resolution and throttling reasons, not routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.