io.github.chrischall/redfin-mcp
NPM · REDFIN-MCP
Redfin real-estate for Claude — search, property details, market reports, saved homes
Available components
Last scanned (6 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/redfin-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 6104 tokens (~277/item across 22 items; 22 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
- 74% 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 22 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 22 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.
- 4 Nov 26 0
- Stability: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Package version: 1.2.6 → 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.5 → 1.2.6 functional
- 27 Oct 26 0
- Package version: 1.2.4 → 1.2.5 functional
- 25 Oct 26 0
- Package version: 1.2.4 → 1.2.5 functional
- 18 Oct 26 0
- Package version: 1.2.4 → 1.2.5 functional
- 17 Oct 26 +13
- Known CVEs: unverified → pass ▲ security
- Stability: 0.90 → pass security
- Dependency health: unverified → 1.00 ▲ functional
- 16 Oct 26 −13
- Stability: pass → unverified ▼ security
- Known CVEs: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Capabilities: pass → unverified ▼ functional
- Dependency health: 1.00 → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- Stability: pass → 0.90 functional
- Package version: 1.2.4 → 1.2.5 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/redfin-mcp@1.3.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/redfin-mcp |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/chrischall/redfin-mcp/.github/workflows/release-please.yml@refs/heads/main |
| Rekor log index | 3691297636 |
| Predicate type | SLSA build provenance https://slsa.dev/provenance/v1 |
| Subject digest | sha512:b3c0ac0a63c12eb9fab883648806f754a1e2b8a3e413ef65739e6e9722ecee3a1decbade2c728806bc98acac009da0f289df4cb16c2506debbd2f3327 |
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 →
redfin_bulk_get Bulk fetch Redfin property records ~394
Fetch up to 200 Redfin property records in a single tool call. Provide an array of targets, each one of: a `url` (full Redfin homedetails URL or path with the /home/<id> segment), a `property_id` alone (resolved internally by following Redfin's /home/<id> redirect to the canonical listing), or a `property_id`+`listing_id` pair (fastest — skips resolution). Returns the same per-property record shape as `redfin_get_property`, but without a summary table — use `redfin_compare_properties` for that. Per-target errors are captured per-row; a single bad ID does not fail the batch. Server-side concurrency, ~6 in flight at a time, with retry-once-on-timeout per row to absorb transient bridge hiccups. The whole call is bounded by an overall hard deadline: a single slow/hung row never wedges the server — when the deadline is reached any unsettled row is returned with `status: "pending"` (retryable) and a `pending` count so you can re-run just those targets. Use this when you have a list of saved homes / candidate properties and need the full structured data for every one of them.
| Name | Type | Req | Description |
|---|---|---|---|
| include_description | boolean | – | Include each property's raw marketing/public-remarks description. Default false to save context — `extracted_features` always carries the structured signal. |
| targets | array | yes | Array of 1–200 properties to fetch |
| 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.
redfin_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.
redfin_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.
redfin_compare_properties Compare multiple Redfin properties side-by-side ~481
Fetch and compare 2 to 25 Redfin properties side-by-side. Provide an array of targets, each either a `url` or a `property_id`+`listing_id` pair. Returns the full per-property record (price, beds/baths, sqft, year built, HOA monthly, last sold, derived price-drop, etc.). For >25 properties or workflows that don't need side-by-side analysis use `redfin_bulk_get`. Pass `include_summary: true` for an aligned-by-field `summary` table (default false to save context — the per-row records carry the same data, so emitting both duplicates ~30% of the response weight). Each record's `extracted_features` (lake_front, hot_tub, basement, furnished, dock, community) is always included. The raw marketing description is omitted by default — opt in with `include_description: true`. Errors for individual properties are captured per-row with a `status` (`ok` / `timeout` / `bridge_down` / `protocol` / `pending` / `other`) and `retryable`. Server-side concurrency (~6 in flight) with retry-once-on-timeout per row; the whole call is bounded by an overall deadline, and any row still unsettled then comes back as `status: "pending"` (retryable) with a `pending` count.
| Name | Type | Req | Description |
|---|---|---|---|
| include_description | boolean | – | Include each property's raw marketing/public-remarks description. Default false to save context — `extracted_features` always carries the structured signal. |
| include_summary | boolean | – | Include the aligned-by-field `summary` table. Default false — the per-row records carry the same data, so emitting both duplicates ~30% of the response weight. (#37) |
| targets | array | yes | Array of 2–25 properties to compare. Use `redfin_bulk_get` for larger batches that don't need side-by-side analysis. |
| 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.
redfin_get_area_climate_baseline Sample climate baseline for an area by pulling a few addresses ~226
Fetch climate risk for a small set of representative URLs in an area, then return their averaged baseline values plus the shared cluster_id when present. Use this as a cheap area-level read BEFORE fanning out a per-property call: if all sample properties agree (same cluster_id, same fire/flood/heat factors), the baseline applies to the whole cluster and N redundant fetches are avoidable. Pass 2–10 URLs you believe represent the area; returns the aggregate plus the per-URL responses for transparency. Server-side concurrency (~5 fetches in flight) with retry-once-on-timeout per URL; the whole call is bounded by an overall deadline, and any sample still unsettled then comes back as `status: "pending"` (retryable) with a `pending` count and is left out of the averages. Limitations of the per-property tool apply (no landslide coverage — note documented in the per-property tool description).
| Name | Type | Req | Description |
|---|---|---|---|
| sample_urls | array | yes | Array of 2–10 sample Redfin URLs representative of the area. |
No output schema declared.
No examples provided.
redfin_get_by_address Resolve an address to its Redfin canonical URL + home_id ~330
Resolve a free-text address (with optional city/state/zip) to its Redfin canonical home URL and home_id. Walks a 3-rung ladder: (1) autocomplete as-typed, (2) autocomplete with suffix expansion (Rd ↔ Road, Ln ↔ Lane, etc.), (3) search fallback (#75) — when autocomplete misses entirely and city/state are provided, resolves the locality to a region, fires a bounded gis search, and fuzzy-matches the input street tokens against returned homes. `matched_via` is `'autocomplete'` or `'search_fallback'`. A miss on every rung returns `resolved: false` (with the `attempts` tried) rather than an error; a signed-out session, bridge failure or region mismatch is still reported as an error. Address discrepancies across MLS feeds are common (the `109 vs 169 Overlook Point Ln` cross-MLS case is a regular occurrence) — `redfin_get_property` on the resolved URL surfaces them as `address_alternates[]` (#42). Use this when you have a property address and need its Redfin home_id for follow-on calls (e.g. `redfin_get_property`). Read-only, no auth required.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | yes | Street address (e.g. "158 Raven Blvd"). |
| city | string | – | City name (e.g. "Lake Lure"). |
| state | string | – | Two-letter state code (e.g. "NC"). |
| zip | string | – | ZIP code (e.g. "28746"). |
No output schema declared.
No examples provided.
redfin_get_climate_risk Get Redfin climate risk for a property ~349
First Street Foundation climate risk scores for a property. COVERS: flood (factor 1–10, FEMA zones, 30-year annual chance series), fire (factor 1–10, relative risk, insurance price band, provider count), heat (factor 1–10, cumulative-risk projections at 0/5/10/15/20-year horizons). DOES NOT COVER: landslide. This is the Helene-relevant risk vector in the NC mountains market and many parts of California / the Pacific Northwest. First Street has no landslide product — for that vector check the NC Geological Survey landslide hazard maps (NC-specific) or USGS landslide hazard data (national). Surfaced on every response as `not_covered: ['landslide']`. Response shape: when First Street data is available, `available: true` with the risk blocks; when not, `{ available: false, reason }` where reason is one of `no_first_street_data`, `new_construction`, `address_outside_coverage`. Sourced from Redfin's server-rendered homedetails HTML (no clean stingray endpoint exists). Pass a homedetails URL (full or path) — it must end in a `/home/<propertyId>` segment; any other page is rejected without being fetched. When a `cluster_id` is surfaced, properties with the same value typically share identical climate scores — use that to group N properties and skip redundant fetches.
| Name | Type | Req | Description |
|---|---|---|---|
| url | string | yes | Redfin homedetails URL or path (e.g. /NY/Brooklyn/42-Monroe-St-11238/home/40732555) |
No output schema declared.
No examples provided.
redfin_get_climate_risk_bulk Bulk-fetch Redfin climate risk for many properties ~186
Fetch climate risk for up to 100 property URLs in a single call. Same per-property shape as `redfin_get_climate_risk`; output preserves input order. Per-row error capture — properties without First Street data return `{ available: false, reason }` without aborting the batch. Server-side concurrency (~5 fetches in flight) with retry-once-on-timeout per URL. The whole call is bounded by an overall deadline: any URL still unsettled then comes back as `status: "pending"` (retryable) with a `pending` count, so re-run just those. Use this when batching ~60-property workflows where climate risk is the dominant cost. Limitations from the per-property tool apply (no landslide coverage).
| Name | Type | Req | Description |
|---|---|---|---|
| urls | array | yes | Array of 1–100 Redfin homedetails URLs or paths. |
No output schema declared.
No examples provided.
redfin_get_comparable_rentals Get comparable rentals near a Redfin property ~254
Find nearby rental comparables for a given property: nearby active rental listings with similar bed/bath/sqft, including monthly rent, distance, and the Redfin URL. Useful for estimating what a property could rent for, or for finding rentals near a home you're considering. Inputs are the rent estimate range + lat/lng + propertyId. `redfin_get_property` supplies property_id, latitude and longitude, but it does not return a rent estimate — take the range from the Redfin property page's rental estimate or another source (e.g. a Zillow rent Zestimate), or pass a deliberately wide range around a known rent. The range is sent to Redfin as a filter, so a wrong or invented range narrows the comps; low must not exceed high.
| Name | Type | Req | Description |
|---|---|---|---|
| latitude | number | yes | Property latitude (from redfin_get_property). |
| longitude | number | yes | Property longitude (from redfin_get_property). |
| property_id | integer | yes | – |
| rent_estimate_high | integer | yes | Upper bound of the rent estimate. |
| rent_estimate_low | integer | yes | Lower bound of the rent estimate. Use the same value for low+high if you only have one estimate. |
No output schema declared.
No examples provided.
redfin_get_market_report Get Redfin market report for a region ~239
Market report for a Redfin region: median list/sold prices, $/sqft, sale-to-list ratio, total homes for sale + sold, all with year-over-year and month-over-month change. Provide either (a) `location` — free-text we resolve via autocomplete (best with city names; "New York", "Seattle"; neighborhoods typically return empty data), or (b) `region_id` + `region_type` directly. `property_type` defaults to 1 (all). Each metric returns `{ label, value, unit, yoy_change_fraction, yoy_direction, mom_change_fraction, mom_direction }`. Read-only; safe to call repeatedly.
| Name | Type | Req | Description |
|---|---|---|---|
| location | string | – | Free-text location to autocomplete (alternative to region_id+region_type) |
| property_type | integer | – | Property type filter, default 1 (all) |
| region_id | integer | – | Redfin region id (e.g. 30749 for New York City) |
| region_type | integer | – | Redfin region type code (6 = city, 2 = ZIP code, 1 = neighborhood, 5 = county) |
No output schema declared.
No examples provided.
redfin_get_price_history Get Redfin price history for a property ~124
Listing-price events for a property — listings, price changes, pending, sold, etc. Each entry has a date, event description, price, days-on-market at that point, and the data-source attribution (MLS, county records, etc.). Also returns the tax-history series from public records. Provide either `url` or `property_id`+`listing_id`. Read-only; safe to call repeatedly.
| Name | Type | Req | Description |
|---|---|---|---|
| listing_id | integer | – | – |
| property_id | integer | – | – |
| url | string | – | Redfin homedetails URL or path |
No output schema declared.
No examples provided.
redfin_get_property Get Redfin property details ~613
Fetch a property's full Redfin record. Provide one of: (a) `url` — full Redfin homedetails URL or path, resolved via the initialInfo endpoint; (b) `property_id` alone — resolved internally by following Redfin's /home/<id> redirect to the canonical listing, then initialInfo; or (c) `property_id` + `listing_id` — fastest, skips resolution and goes straight to aboveTheFold. Returns address, beds/baths, sqft, lot_size (sq ft), year built, price, status, days on market, plus derived fields (lot_size_acres, price_drop_*, hoa_monthly_usd, last_sold_*, tax_annual, extracted_features). lot_size / lot_size_acres are null (never 0) for condos and listings with no public-records lot. `primary_photo_url` is a raw Redfin CDN URL and is dropped on the default `compact` view — pass `view: "full"` for it, or use `redfin_get_property_photos` for the whole gallery. The raw marketing description is OMITTED by default — opt in with `include_description: true`. Set `include_price_history: true` to bundle the full price history (and the cross-MCP-normalized `events_normalized` view) inline; set `include_tax_history: true` for `tax_history`. Read-only; safe to call repeatedly.
| Name | Type | Req | Description |
|---|---|---|---|
| include_description | boolean | – | Include the raw marketing/public-remarks description string in the response. Default false to save context — `extracted_features` always carries the structured signal callers actually need. |
| include_price_history | boolean | – | Bundle the full price history inline as `price_history` + `events_normalized`. Default false. Saves a follow-up redfin_get_price_history round trip — use this when a workflow needs both. (#49) |
| include_tax_history | boolean | – | Bundle the full tax history inline as `tax_history`. Default false. (#49) |
| listing_id | integer | – | Numeric Redfin listing ID. Optional; pairs with property_id to skip resolution. |
| property_id | integer | – | Numeric Redfin property ID. Sufficient on its own — when no listing_id/url is given it is resolved internally via the /home/<id> redirect. Pair with listing_id to skip that resolve step entirely. |
| url | string | – | Redfin homedetails URL or path (e.g. /NY/Brooklyn/42-Monroe-St-11238/home/40732555) |
| 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.
redfin_get_property_photos Get Redfin property photo gallery ~212
The full photo gallery for a Redfin property — every image in mediaBrowserInfo. Each entry returns CDN URLs at multiple sizes (fullscreen, large, medium, lightbox) plus a thumbnail and the photo's caption when set. Provide either `url` (full Redfin homedetails URL or path; we resolve to IDs via initialInfo) or `property_id` + `listing_id` (skip the resolve step). Returns `{ property_id, listing_id, count, photos }`. Off-market or stub listings may return count=0. Read-only; safe to call repeatedly.
| Name | Type | Req | Description |
|---|---|---|---|
| listing_id | integer | – | Numeric Redfin listing ID. Required when property_id is provided. |
| property_id | integer | – | Numeric Redfin property ID. Pair with listing_id to skip the URL resolve step. |
| url | string | – | Redfin homedetails URL or path (e.g. /NY/Brooklyn/42-Monroe-St-11238/home/40732555) |
No output schema declared.
No examples provided.
redfin_get_saved_homes Get my saved (favorited) Redfin homes ~164
The signed-in user's favorited homes on redfin.com. Returns `{ count, homes }` — each home has address, price, beds/baths, status — plus a `note` when none were found (no favorites vs. a page-scrape miss). Requires the user to be signed in. Read-only; safe to call repeatedly.
| Name | Type | Req | Description |
|---|---|---|---|
| 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.
redfin_get_saved_searches Get my saved Redfin searches ~181
The signed-in user's saved searches on redfin.com, derived from the saved-searches page HTML. Returns `{ count, searches }`; each entry is `{ url, region_segment, display_text }`. Requires the user to be signed in. When none are found, `searches` is empty and a `note` explains it may be no saved searches or a page-scrape miss. Read-only; safe to call repeatedly.
| Name | Type | Req | Description |
|---|---|---|---|
| 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.
redfin_get_session_context List all registered Redfin sessions ~92
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 Redfin account requests use. Every redfin 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.
redfin_healthcheck Verify the ContextMint Bridge connection end-to-end ~135
Round-trips a small public www.redfin.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.redfin.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.
redfin_register_session Register a signed-in Redfin session ~180
Record (or refresh) which Redfin 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 Redfin account requests use. Every redfin 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.
redfin_resolve_addresses Bulk-resolve street addresses to Redfin URLs + home_ids ~337
Resolve up to 100 free-text street addresses to Redfin canonical home URLs + home_ids in a single tool call. Each input is either a string (full address) or a structured `{street, city, state, zip}` object. Output preserves input order. Unresolved entries return `resolved: false` without aborting the batch; a transient bridge failure surfaces a distinct retryable `status` (timeout/bridge_down/pending) so it is never mistaken for a genuine no-match. Per-row retry-once-on-timeout, server-side concurrency ~6 in flight. The whole call is bounded by an overall hard deadline: a single slow/hung row never wedges the server — unsettled rows come back with `status: "pending"` and a `pending` count so you can re-run just those. Use this when you have a list of properties from another system (Compass, MLS, spreadsheet) and need their Redfin handles for follow-on calls — collapses the typical 6-search-call + 15-resolve flow into one trip.
| Name | Type | Req | Description |
|---|---|---|---|
| addresses | array | yes | Array of 1–100 addresses to resolve, each a string or a {street, city, state, zip} object. |
| 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.
redfin_search_properties Search Redfin listings ~469
Search Redfin listings by location (city, ZIP, neighborhood, or full street address) and optional filters. Resolves the location via Redfin's autocomplete then queries the gis API; full street addresses short-circuit to the single matched home (no gis call). Returns matching properties with price, beds/baths, sqft, year built, address, and the Redfin home URL. `resolved_as` is `'region'` / `'address'`. `coverage` is `'full'` (gis indexed this region), `'profile_only'` (Redfin has profiles for individual addresses here but search isn't indexed — use redfin_get_by_address per property), or `'none'`. `result_cap_hit: true` signals the result page is full — gis returned as many rows as requested (`limit`, default 40, max 350) — so more listings likely exist; raise `limit` or narrow with price/beds filters. ZIP queries that fall into Redfin's cross-continent fallback (e.g. ZIP 28746 returning Seattle results) now error loudly. Only `for_sale` status is supported; `sold` / `for_rent` return an error (use redfin_get_comparable_rentals for rentals, redfin_get_market_report for sold-price trends). Read-only; safe to call repeatedly.
| Name | Type | Req | Description |
|---|---|---|---|
| baths_min | integer | – | – |
| beds_min | integer | – | – |
| bounds | object | – | Optional lat/lng box: search this drawn-map area instead of the resolved region (works inside big cities where ZIP/neighborhood regions fall back). `location` is then only a label. |
| home_types | array | – | Restrict to one or more property types. |
| limit | integer | – | Max listings to return (default 40; values above 350, the gis hard cap, are clamped to 350). |
| location | string | yes | Free-text location: city, ZIP, neighborhood, or address (e.g. "Brooklyn, NY", "94110", "Park Slope") |
| price_max | integer | – | – |
| price_min | integer | – | – |
| status | string | – | Listing status. Only for_sale is supported; sold and for_rent return an error rather than for-sale results. |
No output schema declared.
No examples provided.
redfin_set_active_session Set the active Redfin session ~95
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 Redfin account requests use. Every redfin 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.
redfin_sweep_area Exhaustively sweep a Redfin map area ~523
Enumerate EVERY for-sale Redfin listing inside a bounding box without silent truncation. Redfin's gis API returns at most 350 homes per call and ignores server-side filters, so this tool searches drawn-map polygons, recursively quarters any tile that hits the cap, dedupes by property_id and re-applies the caller's filters locally. Homes outside the box and tiles where Redfin drifted to another region are left out. Alternatively pass `zips` (ZIP mode) to sweep a list of ZIP regions instead of map tiles, when Redfin ignores drawn-map polygons. Returns a completeness summary (requests, tiles or ZIPs, unique listings, tiles/ZIPs still at the cap, drift warnings) plus the listings inline by default; pass the optional `output_path` to write them to a new JSON file instead, for large areas (inside the output directory: REDFIN_OUTPUT_DIR, default ~/Downloads/redfin-mcp). Sequential requests with a delay. Read-only against Redfin; the only write is the optional local output file.
| Name | Type | Req | Description |
|---|---|---|---|
| baths_min | integer | – | – |
| beds_min | integer | – | – |
| bounds | object | – | Box to sweep (lat/lng). Required unless `zips` is given. |
| delay_ms | integer | – | Pause between requests (default 1200). |
| home_types | array | – | – |
| location | string | – | Optional city (e.g. "San Jose, CA") whose region lets the polygon probe try region-pinned request shapes. |
| max_depth | integer | – | Max quarterings per tile (default 6). |
| max_requests | integer | – | Hard request budget (default 120). |
| 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 (REDFIN_OUTPUT_DIR, default ~/Downloads/redfin-mcp), o… |
| price_max | integer | – | – |
| price_min | integer | – | – |
| zips | array | – | ZIP mode: sweep these ZIP regions instead of map tiles (fallback when Redfin ignores drawn-map polygons). Each ZIP is checked by the homes' own ZIPs; a ZIP that returns the 350-home cap is reported a… |
No output schema declared.
No examples provided.
How do I install the io.github.chrischall/redfin-mcp server?
io.github.chrischall/redfin-mcp runs locally as an npm package, launched with npx -y redfin-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 · redfin-mcp
claude mcp add chrischall-redfin-mcp -- npx -y redfin-mcp
What is the io.github.chrischall/redfin-mcp server?
io.github.chrischall/redfin-mcp is listed in the public MCP registry as io.github.chrischall/redfin-mcp. Redfin real-estate for Claude, search, property details, market reports, saved homes. This page covers its npm package (redfin-mcp).
Is the io.github.chrischall/redfin-mcp server safe to use?
io.github.chrischall/redfin-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/redfin-mcp server expose?
io.github.chrischall/redfin-mcp exposes 22 tools: redfin_search_properties, redfin_sweep_area, redfin_get_property, redfin_get_saved_homes, redfin_get_saved_searches, and 17 more. Their descriptions and schemas cost roughly 6,104 tokens of context every time the server is loaded.
Is the io.github.chrischall/redfin-mcp server still maintained?
io.github.chrischall/redfin-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/redfin-mcp server under?
io.github.chrischall/redfin-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.