realtystack-mcp

U.S. real-estate data: property records, AVM value + rent estimates, sale/rental listings.

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
92%
Naming quality
93%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains suspicious base64-like encoded stringin avm_value

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,761Tokens (tool definitions)
~4.6 KBTypical response size
Significant attention impact (2.16% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "realtystack-mcp": {
      "url": "https://realtystack-mcp.vercel.app/mcp"
    }
  }
}

Remote endpoints

https://realtystack-mcp.vercel.app/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_properties(address, city, state, zipCode, latitude, ...)

Search normalized U.S. property records (owner, structural attributes, tax assessments, tax + sale history) by location. Pin a location one of three ways: a full address, a city+state(+zipCode), or a latitude+longitude point with a radius (miles). All other parameters narrow the result set. Records are cached 24h upstream, so meta.cached may be true on repeat queries.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "description": "Full address, format \"Street, City, State, Zip\". Alternative to city/state/zipCode or lat+long. e.g. \"5500 Grand Lake Dr, San Antonio, TX, 78244\".",
      "type": "string"
    },
    "city": {
      "description": "City name; combine with state (and optionally zipCode) for an area search.",
      "type": "string"
    },
    "state": {
      "description": "2-character state abbreviation, e.g. TX.",
      "type": "string"
    },
    "zipCode": {
      "description": "5-digit ZIP code.",
      "type": "string"
    },
    "latitude": {
      "description": "Latitude of the search center; requires longitude and radius.",
      "type": "number"
    },
    "longitude": {
      "description": "Longitude of the search center; requires latitude and radius.",
      "type": "number"
    },
    "radius": {
      "description": "Search radius in miles (max 100); used with latitude/longitude.",
      "type": "number"
    },
    "propertyType": {
      "description": "Filter by property type.",
      "type": "string",
      "enum": [
        "Single Family",
        "Condo",
        "Townhouse",
        "Manufactured",
        "Multi-Family",
        "Apartment",
        "Land"
      ]
    },
    "bedrooms": {
      "description": "Bedroom count; supports ranges and multiple values.",
      "type": "string"
    },
    "bathrooms": {
      "description": "Bathroom count; supports fractions, ranges, and multiple values.",
      "type": "string"
    },
    "squareFootage": {
      "description": "Living-area square footage; supports ranges and multiple values.",
      "type": "string"
    },
    "lotSize": {
      "description": "Lot size in square feet; supports ranges and multiple values.",
      "type": "string"
    },
    "yearBuilt": {
      "description": "Year built; supports ranges and multiple values.",
      "type": "string"
    },
    "saleDateRange": {
      "description": "Days since last sale (min 1) — restricts to properties last sold within that window.",
      "type": "string"
    },
    "limit": {
      "description": "Max records to return per page. Default 50.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "offset": {
      "description": "Number of records to skip, for pagination. Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "includeTotalCount": {
      "description": "When true, RentCast also returns the total matching count. Default false.",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_property(id)

Full detail for a single property record, keyed by its RentCast id (the same id returned on every search_properties, avm_value, avm_rent, and listings record). Returns 404 if no property matches the id. Cached 24h upstream.

Input Schema

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "RentCast property id (from a prior search_properties, avm_value/avm_rent, or listings response), e.g. \"5500-Grand-Lake-Dr,-San-Antonio,-TX-78244\"."
    }
  },
  "required": [
    "id"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢avm_value(address, latitude, longitude, propertyType, bedrooms, ...)

Run RentCast's automated valuation model for a subject property and return a point price estimate, a priceRangeLow/priceRangeHigh band, the resolved subjectProperty, and comparables[] — recent comparable sales each scored with a distance (miles) and correlation (0-1 similarity). Pin the subject with either address or latitude+longitude; when subject attributes are unknown, supply propertyType/bedrooms/bathrooms/squareFootage (or leave lookupSubjectAttributes true to have RentCast fill them). Cached 6h upstream.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "description": "Subject property address. Required unless latitude+longitude are given. e.g. \"5500 Grand Lake Dr, San Antonio, TX, 78244\".",
      "type": "string"
    },
    "latitude": {
      "description": "Subject latitude; alternative to address (requires longitude).",
      "type": "number"
    },
    "longitude": {
      "description": "Subject longitude; alternative to address (requires latitude).",
      "type": "number"
    },
    "propertyType": {
      "description": "Subject property type; improves comparable selection.",
      "type": "string",
      "enum": [
        "Single Family",
        "Condo",
        "Townhouse",
        "Manufactured",
        "Multi-Family",
        "Apartment",
        "Land"
      ]
    },
    "bedrooms": {
      "description": "Subject bedroom count; 0 indicates a studio.",
      "type": "number"
    },
    "bathrooms": {
      "description": "Subject bathroom count; supports fractions.",
      "type": "number"
    },
    "squareFootage": {
      "description": "Subject living-area square footage.",
      "type": "number"
    },
    "maxRadius": {
      "description": "Max distance between comparables and subject, in miles.",
      "type": "number"
    },
    "daysOld": {
      "description": "Max days since comparable listings were last seen (min 1).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "compCount": {
      "description": "Number of comparables to use in the estimate. Default 15.",
      "type": "integer",
      "minimum": 5,
      "maximum": 25
    },
    "lookupSubjectAttributes": {
      "description": "When true, RentCast looks up any missing subject attributes from its records. Default true.",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢avm_rent(address, latitude, longitude, propertyType, bedrooms, ...)

Run RentCast's automated model for long-term (12-month lease) rent and return a point rent estimate, a rentRangeLow/rentRangeHigh band, the resolved subjectProperty, and comparables[] — recent comparable rentals each scored with distance and correlation. Same subject-pinning rules as avm_value (address or latitude+longitude, plus optional subject attributes). Cached 6h upstream.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "description": "Subject property address. Required unless latitude+longitude are given. e.g. \"5500 Grand Lake Dr, San Antonio, TX, 78244\".",
      "type": "string"
    },
    "latitude": {
      "description": "Subject latitude; alternative to address (requires longitude).",
      "type": "number"
    },
    "longitude": {
      "description": "Subject longitude; alternative to address (requires latitude).",
      "type": "number"
    },
    "propertyType": {
      "description": "Subject property type; improves comparable selection.",
      "type": "string",
      "enum": [
        "Single Family",
        "Condo",
        "Townhouse",
        "Manufactured",
        "Multi-Family",
        "Apartment"
      ]
    },
    "bedrooms": {
      "description": "Subject bedroom count; 0 indicates a studio.",
      "type": "number"
    },
    "bathrooms": {
      "description": "Subject bathroom count; supports fractions.",
      "type": "number"
    },
    "squareFootage": {
      "description": "Subject living-area square footage.",
      "type": "number"
    },
    "maxRadius": {
      "description": "Max distance between comparables and subject, in miles.",
      "type": "number"
    },
    "daysOld": {
      "description": "Max days since comparable rentals were last seen (min 1).",
      "type": "integer",
      "minimum": -9007199254740991,
      "maximum": 9007199254740991
    },
    "compCount": {
      "description": "Number of comparable rentals to use in the estimate. Default 15.",
      "type": "integer",
      "minimum": 5,
      "maximum": 25
    },
    "lookupSubjectAttributes": {
      "description": "When true, RentCast looks up any missing subject attributes from its records. Default true.",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_sale_listings(address, city, state, zipCode, latitude, ...)

Return a page of for-sale listings (list price, status, days on market, MLS name/number, listing agent + office contact, and price/status history) for a location. Same location-pinning rules as search_properties (address, city+state(+zipCode), or latitude+longitude+radius). Each record is tagged listingKind:"sale". Listings move faster than records, so these are cached only 30 minutes upstream.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "description": "Full address to match a specific listing.",
      "type": "string"
    },
    "city": {
      "description": "City name; combine with state for an area search.",
      "type": "string"
    },
    "state": {
      "description": "2-character state abbreviation.",
      "type": "string"
    },
    "zipCode": {
      "description": "5-digit ZIP code.",
      "type": "string"
    },
    "latitude": {
      "description": "Latitude of the search center; requires longitude and radius.",
      "type": "number"
    },
    "longitude": {
      "description": "Longitude of the search center; requires latitude and radius.",
      "type": "number"
    },
    "radius": {
      "description": "Search radius in miles (max 100); used with latitude/longitude.",
      "type": "number"
    },
    "propertyType": {
      "description": "Filter by property type.",
      "type": "string",
      "enum": [
        "Single Family",
        "Condo",
        "Townhouse",
        "Manufactured",
        "Multi-Family",
        "Apartment",
        "Land"
      ]
    },
    "bedrooms": {
      "description": "Bedroom count; supports ranges and multiple values.",
      "type": "string"
    },
    "bathrooms": {
      "description": "Bathroom count; supports fractions, ranges, and multiple values.",
      "type": "string"
    },
    "squareFootage": {
      "description": "Living-area square footage; supports ranges and multiple values.",
      "type": "string"
    },
    "lotSize": {
      "description": "Lot size in square feet; supports ranges and multiple values.",
      "type": "string"
    },
    "yearBuilt": {
      "description": "Year built; supports ranges and multiple values.",
      "type": "string"
    },
    "status": {
      "description": "Listing status to return; defaults to Active.",
      "type": "string",
      "enum": [
        "Active",
        "Inactive"
      ]
    },
    "price": {
      "description": "Listed price; supports ranges and multiple values.",
      "type": "string"
    },
    "daysOld": {
      "description": "Max days since the listing was last seen (min 1).",
      "type": "string"
    },
    "limit": {
      "description": "Max listings to return per page. Default 50.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "offset": {
      "description": "Number of listings to skip, for pagination. Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "includeTotalCount": {
      "description": "When true, RentCast also returns the total matching count. Default false.",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢search_rental_listings(address, city, state, zipCode, latitude, ...)

Return a page of long-term (12-month lease) rental listings — same record shape as search_sale_listings (monthly price is the asking rent), but each record is tagged listingKind:"rental-long-term". Same location-pinning rules and 30-minute upstream cache as the sale-listings endpoint.

Input Schema

{
  "type": "object",
  "properties": {
    "address": {
      "description": "Full address to match a specific listing.",
      "type": "string"
    },
    "city": {
      "description": "City name; combine with state for an area search.",
      "type": "string"
    },
    "state": {
      "description": "2-character state abbreviation.",
      "type": "string"
    },
    "zipCode": {
      "description": "5-digit ZIP code.",
      "type": "string"
    },
    "latitude": {
      "description": "Latitude of the search center; requires longitude and radius.",
      "type": "number"
    },
    "longitude": {
      "description": "Longitude of the search center; requires latitude and radius.",
      "type": "number"
    },
    "radius": {
      "description": "Search radius in miles (max 100); used with latitude/longitude.",
      "type": "number"
    },
    "propertyType": {
      "description": "Filter by property type.",
      "type": "string",
      "enum": [
        "Single Family",
        "Condo",
        "Townhouse",
        "Manufactured",
        "Multi-Family",
        "Apartment"
      ]
    },
    "bedrooms": {
      "description": "Bedroom count; supports ranges and multiple values.",
      "type": "string"
    },
    "bathrooms": {
      "description": "Bathroom count; supports fractions, ranges, and multiple values.",
      "type": "string"
    },
    "squareFootage": {
      "description": "Living-area square footage; supports ranges and multiple values.",
      "type": "string"
    },
    "lotSize": {
      "description": "Lot size in square feet; supports ranges and multiple values.",
      "type": "string"
    },
    "yearBuilt": {
      "description": "Year built; supports ranges and multiple values.",
      "type": "string"
    },
    "status": {
      "description": "Listing status to return; defaults to Active.",
      "type": "string",
      "enum": [
        "Active",
        "Inactive"
      ]
    },
    "price": {
      "description": "Listed rent; supports ranges and multiple values.",
      "type": "string"
    },
    "daysOld": {
      "description": "Max days since the listing was last seen (min 1).",
      "type": "string"
    },
    "limit": {
      "description": "Max listings to return per page. Default 50.",
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "offset": {
      "description": "Number of listings to skip, for pagination. Default 0.",
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "includeTotalCount": {
      "description": "When true, RentCast also returns the total matching count. Default false.",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools