Skip to main content
Glama
HasData

com.hasdata/redfin

Redfin MCP Server

A hosted Model Context Protocol (MCP) server that gives Claude, Cursor, Windsurf and any other MCP client two read-only Redfin tools. Search for-sale, for-rent and sold listings with the filter set Redfin shows a visitor, and read one property page in full, both as structured JSON, with no MLS licence and nothing to host.

It reads public Redfin pages that a signed-out visitor can see.

1,000 free credits every month, no card required, which is 200 Redfin calls at the 5-credit rate.

https://mcp.hasdata.com/api/mcp?apis=redfin

Glama score tool contract MCP Tools npm PyPI License

Contents

Related MCP server: Zillapi - Zillow Property Data

What you need

An MCP client and a HasData API key from the dashboard, free to create with no card, and the free tier covers about 200 calls a month at the 5-credit rate. This is a remote server, so the simplest path is a URL and an x-api-key header, with no container to run. A client that only speaks stdio reaches it through a thin launcher, published as @hasdata/redfin-mcp on npm and hasdata-redfin-mcp on PyPI, shown below.

Quick start

The server URL is the same for every client. We run it hands-on in Claude Code and Claude Desktop. The other blocks follow each client's own documented format for a remote server.

Field

Value

URL

https://mcp.hasdata.com/api/mcp?apis=redfin

Transport

HTTP, streamable

Auth header

x-api-key: HASDATA_API_KEY

Clients with OAuth support can add the same URL as a connector and sign in without putting a key in a config file.

claude mcp add --transport http redfin "https://mcp.hasdata.com/api/mcp?apis=redfin" \
  --header "x-api-key: HASDATA_API_KEY"

Settings, then Connectors, then Add custom connector, then paste https://mcp.hasdata.com/api/mcp?apis=redfin and sign in.

For the config-file route, Claude Desktop loads only local (stdio) servers, so it reaches a remote server through a stdio launcher. The @hasdata/redfin-mcp package is that launcher, and it reads the key from the environment. Add this to claude_desktop_config.json:

{
  "mcpServers": {
    "redfin": {
      "command": "npx",
      "args": ["-y", "@hasdata/redfin-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

For Python instead of Node, swap the launcher for the PyPI package, which uvx runs without a manual install:

{
  "mcpServers": {
    "redfin": {
      "command": "uvx",
      "args": ["hasdata-redfin-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

~/.cursor/mcp.json for every project, or .cursor/mcp.json for one:

{
  "mcpServers": {
    "redfin": {
      "url": "https://mcp.hasdata.com/api/mcp?apis=redfin",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

~/.codeium/windsurf/mcp_config.json. Windsurf calls the field serverUrl, not url:

{
  "mcpServers": {
    "redfin": {
      "serverUrl": "https://mcp.hasdata.com/api/mcp?apis=redfin",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

.vscode/mcp.json in the workspace:

{
  "servers": {
    "redfin": {
      "type": "http",
      "url": "https://mcp.hasdata.com/api/mcp?apis=redfin",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

Example prompts

Each of these lands on one tool, or on two in sequence when the second needs the URL the first returns.

  • Find three-bedroom houses for sale in 78741 under $500,000 and sort them by price per square foot.

  • What sold in Austin in the last three months, and how does that compare with what is listed now?

  • Pull the full property page for this Redfin URL and summarise the condition from the description.

  • Which rentals in Austin allow dogs and include in-unit laundry?

  • Show me for-sale homes in the Austin Independent School District where the assigned elementary school rates 8 or better.

  • Find fixer-uppers built before 1970 in this zipcode that have been on Redfin more than 30 days.

A prompt that names a market goes to the search tool. A prompt that hands you a Redfin URL goes straight to the property tool. Searching for a full street address is a third case, covered below, because it answers with one property rather than a list.

Tools

Two tools, 5 credits per successful call.

Get Redfin real estate listings

hasdata_redfin_listing_getRealEstateListings

A page of listings for a location, or one property when the location is a single address.

Two parameters are required, and the rest of the schema mirrors Redfin's own filter panel.

Parameter

Type

Required

Notes

keyword

string

yes

A zipcode, city, neighborhood, school, school district, apartment building name, or a full street address

type

string

yes

forSale, forRent or sold

sort

string

recommended, newest, oldest, priceLowToHigh, priceHighToLow, bedrooms, bathrooms, lotSize, squareFeetPrice and more

page

number

Result page, starting at 1

The filters are named after the nested structure Redfin uses internally, flattened with underscores, so they have to be passed exactly as the schema spells them. price_min_ and price_max_ are the price band, beds_min_ and beds_max_ the bedroom count, monthlyPayment_interestRate_ a mortgage assumption. A doubled underscore marks an array.

The ones worth knowing:

Parameter

Type

Notes

price_min_ / price_max_

number

Price band

beds_min_ / beds_max_

number

Bedroom count

baths

string

Minimum baths, one through four, plus oneAndHalf and twoAndHalf

homeTypes__

array

house, townhouse, townhome, condo, land, multiFamily, mobile, coOp, apartment, other. Which values apply depends on type

statusOptions__

array

active, comingSoon, contingentPending

listingType_category___

array

byAgent, byOwnerFsbo, newConstruction, foreclosures

timeOnRedfin

string

newListing through moreThan45Days

soldWithinOption

string

Sold window, from lastOneWeek to lastFiveYear. See the warning below

yearBuilt_min_ / yearBuilt_max_

string

A year from a fixed ladder, 1940 through 2026

forSaleSquareFeet_min_ / _max_

string

Floor area from a fixed ladder, 750 through 10000

lotSize_min_ / lotSize_max_

string

2000 sqft through 100 acres, as written

cost_hoa_

number

Maximum monthly HOA fee

cost_priceReduced_

string

inTheLastDay through moreThan120Days

homeFeatures_options___

array

waterfront, hasAView, fireplace, fixerUpper, guestHouse, elevator, greenHome, accessibleHome and more

homeFeatures_poolType_

string

privatePool, communityPool, privateOrCommunityPool, noPrivatePool

homeFeatures_keywordSearch_

string

Free text against the listing description

schools_greatSchoolRating_

number

Minimum GreatSchools rating, 1 to 10

transportScores_walkScore_

number

Minimum walk score, 1 to 100

rentalAmenities__

array

inUnitWasherDryer, parkingAllowed, utilitiesIncluded, furnished, pool and more

pets__

array

dogsAllowed, catsAllowed

moveInDate

string

MM/DD/YYYY

A market search returns searchInformation with totalResults, a properties array of 40, and pagination with currentPage, nextPage and an otherPages map. A for-sale or sold property carries id, mlsId, url, homeType, status, price, beds, baths, area, yearBuilt, daysOnSite, addressRaw, a parsed address, latitude, longitude, description, atAGlanceFacts and photos.

{
  "id": 31625298,
  "mlsId": "2190201772333567097",
  "url": "https://www.redfin.com/TX/Austin/1721-Deerfield-Dr-78741/home/31625298",
  "homeType": "House",
  "status": "FOR_SALE",
  "price": 675000,
  "beds": 3,
  "baths": 2,
  "area": 1667,
  "yearBuilt": 1963,
  "daysOnSite": 0,
  "addressRaw": "1721 Deerfield Dr, Austin, TX 78741",
  "address": { "street": "1721 Deerfield Dr", "city": "Austin", "state": "TX", "zipcode": "78741" },
  "latitude": 30.231372,
  "longitude": -97.734893,
  "atAGlanceFacts": [
    { "factLabel": "Property Type", "factValue": "Single-family" },
    { "factLabel": "Year Built", "factValue": "1963" },
    { "factLabel": "Price/Sq.Ft.", "factValue": "$405" }
  ]
}

A rental is a building rather than a home, so type: forRent returns a different shape. price, beds, baths and area each become a { min, max } object across the available units, and the entry adds propertyName, availableUnits, agentEmail and agentPhone while dropping mlsId, homeType, yearBuilt and daysOnSite.

{
  "id": "31510362",
  "propertyName": "The Sonata",
  "status": "FOR_RENT",
  "availableUnits": 12,
  "price": { "min": 745, "max": 1300 },
  "beds": { "min": 1, "max": 2 },
  "baths": { "min": 1, "max": 2 },
  "area": { "min": 474, "max": 976 },
  "addressRaw": "1070 Mearns Meadow Blvd, Austin, TX 78758"
}

Get Redfin property details

hasdata_redfin_property_getPropertyDetails

One property page in full, by its Redfin URL.

Parameter

Type

Required

Notes

url

string

yes

The Redfin property URL, as the search tool returns it

Returns a property object. On top of everything the search result carries, it adds propertyDetails, schools, nearby, agentInfo, viewsActivity, openHouseSchedule, updatedAt, a geo object and the full photos collection, which ran to 61 images on the property below.

propertyDetails is the specification block, grouped into parking, interior, exterior, utilities and publicFacts. Each group is an array of labelled sections, and each section is an array of label and value pairs, so it reads as the page presents it rather than as a typed object. Look up a fact by its label instead of by position.

schools.assignedSchools carries the catchment schools with greatSchoolsRating, parentRating, distanceInMiles and a servesHome flag, which is the field that says whether the school actually serves this address.

{
  "id": 31625298,
  "homeType": "Single Family Residential",
  "status": "COMING SOON",
  "price": 675000,
  "beds": 3,
  "baths": 2,
  "area": 1667,
  "yearBuilt": 1963,
  "geo": { "latitude": 30.231372, "longitude": -97.734893 },
  "updatedAt": "Sep 9, 2026 4:04 AM",
  "viewsActivity": { "views": 98, "favorites": 5 },
  "agentInfo": {
    "agentName": "Lilly Rockwell",
    "agentPhoneNumber": "512-413-1975",
    "brokerName": "Compass",
    "brokerPhoneNumber": ""
  },
  "propertyDetails": {
    "parking": [{ "parkingInformation": [{ "label": "Has Garage", "value": "yes" }] }],
    "utilities": [{ "utilitiesInformation": [{ "label": "Has Air Conditioning", "value": "yes" }] }]
  },
  "schools": { "assignedSchools": [{ "greatSchoolsRating": 6, "parentRating": 5, "servesHome": true }] }
}

Errors and failure paths

Plan for these rather than assuming a happy path.

soldWithinOption is currently broken and silently returns for-sale homes labelled SOLD. Passing any of its values puts the value straight into the Redfin filter, Redfin does not recognise it, and the response is the active for-sale list with status stamped as SOLD. Every listing came back identical to the plain for-sale search in our checks. Leave the parameter off. type: sold on its own works correctly and covers the last three months, which is Redfin's own default window.

The search tool returns three different shapes, and which one you get depends on the keyword. A market keyword answers with searchInformation, properties and pagination. A full street address or a named building answers with a single property object and no properties array, no searchInformation and no pagination. A rental search answers with the range-shaped entries shown above. Branch on the presence of properties before you iterate it.

totalResults tops out at 350, and that is a ceiling rather than a count. Austin and New York both report 350 while a single zipcode reports 168 and a small town 57. Pagination stops at nine pages of 40. To enumerate a large market, slice it by zipcode, price band or home type instead of paging, because there is no page ten.

Sold search does not give you sold prices as a separate field. price holds whatever the page shows for that status, so a for-sale price and a sold price arrive in the same field. Read status alongside it every time.

There is no price history, tax history or Redfin Estimate in the property response. Those sit on the page but are not in what the tool returns today. What you get instead is propertyDetails.publicFacts, which carries the assessor-style facts as label and value pairs.

nearby.pointsOfInterest is nearby places, not comparable sales. Its categories come from a third-party places dataset and are frequently wrong, so a title loan office can arrive tagged as a bar. Use the names and coordinates, and do not trust the category.

openHouseSchedule can be an array holding an empty object when the page has the section but no dates in it. Test the contents, not the length.

brokerPhoneNumber and other agent fields come back as empty strings rather than null. Treat empty string as absent.

Results that carry data also carry a requestMetadata.id worth quoting in support.

Pricing, free tier and limits

Each Redfin tool costs 5 credits per successful call. Response size does not change the price, so a 40-listing page and a single property cost the same.

The free tier is 1,000 credits every month with no card, which is 200 Redfin calls at the base rate. It renews with the billing cycle, so a low-volume agent runs on the free tier indefinitely.

Paid plans start at $49 a month for 200,000 credits, which is 40,000 calls. The unit price falls with volume, from $1.23 per 1,000 calls on the entry plan to $0.50 on Business, $0.42 on Growth and $0.37 on the largest high-volume plans.

Your plan also sets concurrency. The free tier allows 1 request at a time, Startup 15, Business 30, Growth 50, and the high-volume plans run from 200 to 1,500. Handle the overflow case defensively in anything unattended, because an agent that walks a list of properties will reach the ceiling before you do.

A request that comes back non-200 is not billed. A successful call that finds nothing is still a call.

Tool selection

Start from what the prompt gives you. A market, a zipcode or a school district goes to the search tool. A Redfin URL goes straight to the property tool. Spending a search call to reach a URL you already have is the most common waste.

Then pick by depth. The search result is enough for ranking, price sweeps and market summaries, and it already carries price, beds, baths, area, year built and days on site. The property tool is the only one that returns the specification block, the assigned schools and the listing agent, and it is worth one call per property you actually care about rather than one per row.

Filter server-side. The schema mirrors Redfin's filter panel precisely, so a query like "three beds, under $500k, built before 1970, in this zipcode" is one call with four parameters, not a page sweep followed by local filtering.

How it compares

There is no public Redfin API, so the real alternative is an MLS or IDX feed.

MLS or IDX feed

This server

Eligibility

A licensed brokerage or an agent relationship

An API key

Setup

Per-MLS application, contract and compliance review

One header

Coverage

One MLS per feed, hundreds nationally

Whatever Redfin publishes, in one place

Sold data

Full history where the MLS permits it

The recent window Redfin shows

Rentals

Often a separate feed or absent

The same tool, with a range shape

Redistribution

Contractually restricted

Your responsibility to check

Cost

Setup fees plus monthly, per MLS

Paid past the free tier, 5 credits a call

The row that decides it is eligibility. An MLS feed is the authoritative source and it needs a licence you cannot buy as a developer, which rules it out for research, prototypes and anything an agent does on your behalf. When you are a brokerage with a feed already, the feed is more complete and more current, and you should use it.

FAQ

Is there an official Redfin MCP server?

Redfin does not publish one, and it does not publish a public API either. This one is maintained by HasData and reads public Redfin pages.

What is a Redfin MCP server?

An MCP server exposes tools an AI client can call. This one turns Redfin search results and property pages into JSON an agent can reason over, without a browser or a scraping library in your stack.

Do I need an MLS licence or a Redfin account?

No. The only credential is your HasData key.

Why does searching an address return one property instead of a list?

Because Redfin resolves a full street address to that property's page rather than to a result set. The tool passes that through, so the response holds a single property object in the same shape the property tool returns. It is a useful shortcut when you have an address but not a URL.

How do I pull every listing in a city?

You cannot, in one sweep. Redfin caps a result set at 350 across nine pages, so a large market has to be cut into smaller queries by zipcode, price band or home type, and the slices stitched together.

Can I filter sold listings by date?

Not reliably right now. type: sold works and returns Redfin's default three-month window, but soldWithinOption is not being translated into a filter Redfin accepts, and passing it returns active listings labelled SOLD. Leave it off until that is fixed.

Does it cover rentals?

Yes, through type: forRent. Expect the range shape rather than the single-home shape, because a rental result is a building with several available units.

Can I use this together with other HasData APIs?

Yes. One key covers everything, and one endpoint serves them all through the apis parameter. Point a client at ?apis=redfin,zillow to get both tool sets in one connection, or at mcp.hasdata.com/api/mcp for the full catalogue.

Is HasData affiliated with Redfin?

No. HasData is an independent service and is not affiliated with, endorsed by, or sponsored by Redfin. Redfin is a trademark of its respective owner. The tools work with publicly available data only, and you are responsible for using the results in line with Redfin's terms and the law that applies to you.

Compliance and personal data

Listings carry agent contact details. A for-sale property returns agentInfo with a name and a direct phone number, and a rental returns agentEmail and agentPhone. Those belong to identifiable people, published in a professional capacity, which does not take them out of scope of the GDPR or the CCPA. Marketing to them is regulated separately again, and real estate agents are a common target of exactly that, so check your obligations before you build a contact list. Market analysis does not need those fields at all.

Other HasData MCP servers: Google Search, Google Maps, Google Trends, Google Flights, DuckDuckGo, YouTube, TikTok, Instagram, Amazon, Shopify, Yelp, Zillow, Airbnb, Booking.com, Indeed.

Development

The launcher is a thin stdio bridge to the remote server, so there is nothing to build.

npm install
HASDATA_API_KEY=your_key_here npm test

The tests in test/ assert the tool contract, the part that can break without a commit here. They check that ?apis=redfin returns the expected tool count, that no name changed, that every tool still declares its required parameters and carries a description, that the filter enums this README documents are still the ones the schema offers, and that the key in use is actually accepted. That last check calls a tool for real and costs 5 credits, which is the price of a canary that can fail for the right reason.

The contract suite also runs weekly on a schedule, because the upstream tool list can change without anyone touching this repository.

Contributing

A tool table, a response sample or a documented behaviour that does not match reality is worth an issue. There is a template for exactly that. Pull requests are welcome for the same, and for anything in the launcher.

License

MIT, see LICENSE.

Available Tools

2 tools
hasdata_redfin_listing_getRealEstateListingsredfin_listing: GET /AInspect

Get Redfin Real Estate Listings

Searches Redfin for-sale, for-rent, or sold listings with pagination. The location accepts a zipcode, city, neighborhood, school, school district, apartment-building name, or a full street address. Returns each listing with address, Redfin URL, list price, beds/baths, square footage, lot size, year built, days on market, status, coordinates, photos, MLS number, and HOA; an address or building returns a single property card instead. Use for real-estate market research, lead generation for agents, price/DOM trend analysis, and feeding URLs into the Redfin Property endpoint for deep-dive details.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNoThe page number of the results to retrieve.
sortNoThe sorting option for the search results.
typeYesThe type of listing.
bathsNoThe minimum number of bathrooms.
pets__NoAn array of pet types allowed.
keywordYesThe location to search for listings. Accepts a zipcode (`33321`), a city (`Austin` or `Austin, TX`), a neighborhood (`East Austin`), a school (`BASIS Austin`), a school district (`Austin Independent School District`), an apartment building by its name (`Maizon Brickell`), or a full street address (`5805 Woodview Ave, Austin, TX 78756`), including a single unit (`221 SW 12th St Unit 1716, Miami, FL`). An address or a building returns a single property card instead of a list of listings, and the `type` parameter does not apply to it.
beds_max_NoThe maximum number of bedrooms.
beds_min_NoThe minimum number of bedrooms.
cost_hoa_NoThe maximum monthly Homeowners Association (HOA) fee.
moveInDateNoThe desired move-in date in MM/DD/YYYY format.
price_max_NoThe maximum price of the listing.
price_min_NoThe minimum price of the listing.
homeTypes__NoAn array of home types to filter the listings. Allowed values depend on the listing `type`.
lotSize_max_NoThe maximum lot size.
lotSize_min_NoThe minimum lot size.
stories_max_NoThe maximum number of stories.
stories_min_NoThe minimum number of stories.
timeOnRedfinNoHow long the listing has been on Redfin.
yearBuilt_max_NoThe maximum year the property was built.
yearBuilt_min_NoThe minimum year the property was built.
statusOptions__NoAn array of listing statuses.
soldWithinOptionNoFilter sold listings by how recently they were sold.
rentalAmenities__NoAn array of rental amenities to filter the listings.
cost_priceReduced_NoFilter listings by when the price was reduced.
rentalOtherTerms__NoAn array of additional rental terms.
monthlyPayment_max_NoThe maximum monthly payment.
monthlyPayment_min_NoThe minimum monthly payment.
schools_schoolType___NoAn array of school types.
forSaleSquareFeet_max_NoThe maximum square footage for for-sale listings.
forSaleSquareFeet_min_NoThe minimum square footage for for-sale listings.
homeFeatures_basement_NoThe basement type.
homeFeatures_poolType_NoThe type of pool.
cost_acceptedFinancing_NoThe accepted financing type.
cost_excludeLandLeases_NoIf set to true, listings with land leases will be excluded.
cost_pricePerSqft__max_NoThe maximum price per square foot.
cost_pricePerSqft__min_NoThe minimum price per square foot.
homeFeatures_options___NoAn array of home feature flags to filter the listings.
listingType_category___NoAn array of listing categories.
onlyWithDealOrPromotionNoIf set to true, only listings with a deal or promotion will be included.
exclude55PlusCommunitiesNoIf set to true, 55+ communities will be excluded.
forRentSquareFootage_max_NoThe maximum square footage for for-rent listings.
forRentSquareFootage_min_NoThe minimum square footage for for-rent listings.
schools_greatSchoolRating_NoThe minimum GreatSchools rating (1-10).
transportScores_bikeScore_NoThe minimum bike score (1-100).
transportScores_walkScore_NoThe minimum walk score (1-100).
cost_maxPropertyTaxPerYear_NoThe maximum property tax per year.
homeFeatures_keywordSearch_NoA free-text keyword search applied to listing descriptions.
openHouseAndTour_openHouse_NoFilter listings with an open house.
openHouseAndTour_videoTour_NoIf set to true, only listings with a video tour will be included.
homeFeatures_garageSpotsMin_NoThe minimum number of garage spots.
monthlyPayment_interestRate_NoThe mortgage interest rate (percent) used to calculate the monthly payment.
monthlyPayment_mortgageTerm_NoThe mortgage term used to calculate the monthly payment.
monthlyPayment_insuranceRate_NoThe home insurance rate (percent) used to calculate the monthly payment.
transportScores_transitScore_NoThe minimum transit score (1-100).
listingType_excludeShortSales_NoIf set to true, short sales will be excluded.
schools_includeUnratedSchools_NoIf set to true, unrated schools will be included.
listingType_redfinListingsOnly_NoIf set to true, only Redfin-listed properties will be included.
monthlyPayment_downPaymentAmount_NoThe down payment as an absolute amount.
monthlyPayment_downPaymentPercent_NoThe down payment as a percentage of the home price.

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the disclosure burden. It discloses pagination, the accepted keyword forms, the full set of returned listing fields, and the important behavioral exception that an address/building returns a single property card and ignores `type`. Rate-limit and error behavior are absent, but the core behavioral surface is well covered.

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

Conciseness5/5

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

Four dense, front-loaded sentences with no filler: action and pagination first, then location semantics, return fields/exception, and use cases. It is well sized for a 59-parameter tool because the schema carries the detailed filter documentation.

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?

Despite no output schema and no annotations, the description compensates by naming the main returned fields and explaining the single-property-card case. For a large search tool, the use cases and sibling routing make it reasonably complete, though it omits pagination-count/default behavior and error-handling expectations.

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 description coverage is 100%, so the baseline is 3. The narrative mostly re-states the `keyword` semantics and the `type` exception that already exist in the schema, and it adds no new information about `page`, `sort`, or the other filter parameters. It therefore earns no bonus beyond the well-documented schema.

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?

The description opens with a specific, verb-driven statement: 'Searches Redfin for-sale, for-rent, or sold listings with pagination,' and enumerates the location forms and return fields. This makes the listing-search scope unmistakable and differentiates it from the single-property sibling endpoint.

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

Usage Guidelines4/5

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

It gives concrete use cases ('real-estate market research, lead generation for agents, price/DOM trend analysis') and points to the 'Redfin Property endpoint' for deep-dive details, effectively routing an agent to the sibling after this search step. It does not phrase this as a hard when-not-to-use rule, but the guidance is unambiguous enough.

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

hasdata_redfin_property_getPropertyDetailsredfin_property: GET /AInspect

Get Redfin Property Details

Fetches the full Redfin property page by URL. Returns address, list/sold price, price history, Redfin Estimate, beds/baths, square footage, lot size, year built, property type, HOA, days on market, school ratings, tax history, listing agent, full description, photos, walk/transit/bike scores, and nearby comparables. Use for CMA reports, investor due-diligence, valuation models, listing enrichment, and powering buyer-assistant agents with verified property facts.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the property on Redfin. Must be a valid Redfin property URL.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only says it 'fetches' and returns data, but does not address authentication, rate limits, error behavior, or what happens with invalid URLs. This leaves the agent without operational expectations beyond the basic return field list.

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?

The description is front-loaded with the core action and includes no filler. The list of returned fields and use cases is lengthy but informative; however, it could have been trimmed slightly without losing essential guidance, so it does not earn a perfect score.

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 simple one-parameter fetch tool with no output schema, the description covers the input, the returned data, and common use cases, which is largely sufficient for correct invocation. It falls short of complete because behavioral caveats such as rate limits and error handling are missing.

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?

The single parameter 'url' is fully described in the schema with 100% coverage, so the schema already provides the needed semantics. The description adds no further format, examples, or constraints beyond what the schema states, justifying the baseline score of 3.

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

Purpose4/5

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

The description clearly states a specific action and resource: 'Fetches the full Redfin property page by URL' and lists the many fields it returns. However, it never explicitly contrasts itself with the sibling listing tool, so the distinction is left to inference rather than stated outright.

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

Usage Guidelines4/5

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

The description explicitly lists use cases: 'Use for CMA reports, investor due-diligence, valuation models, listing enrichment, and powering buyer-assistant agents.' This gives clear context for when the tool is appropriate, but it does not mention when not to use it or point to the sibling tool as an alternative.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv1.0.0
    • First observedhasdata_redfin_listing_getRealEstateListings
    • First observedhasdata_redfin_property_getPropertyDetails

TDQS

A3.8/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one searches for listings, the other fetches details for a specific property. An agent would not confuse them because they operate on different resource types and return different data.

Naming Consistency4/5

Both tools follow the hasdata_redfin_<resource>_get<Detail> pattern, which is consistent. The first tool's name is slightly redundant ('listing_getRealEstateListings') but still predictable and aligned with the second tool.

Tool Count3/5

With only two tools, the server feels minimal but not unreasonable. It covers the two most common Redfin needs (search and property details), yet the surface is thin compared to typical MCP servers that include more resource endpoints.

Completeness4/5

The pair covers the essential workflow: search listings, then dive into property details. Missing operations like agent search or market stats are non-critical, and the property details endpoint includes comparables and price history, so there are no obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    REST API and MCP server for Zillow property data: Zestimates, rent estimates, tax records, listing search, price history, photos, and 300+ fields. 4 tools with OAuth 2.1 + PKCE. Free tier: 100 credits.
    6
    MIT No Attribution
  • A
    license
    A
    quality
    A
    maintenance
    Enables natural language access to Redfin real estate data, including property search, details, photos, market reports, price history, climate risk, and saved homes/searches, by routing requests through your own signed-in browser session.
    21
    639
    3
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Unofficial MCP server that exposes PropertyGuru Singapore & Malaysia property listing search as MCP tools, returning detailed listing data without an API key.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/HasData/redfin-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server