realtystack-mcp
U.S. real-estate data: property records, AVM value + rent estimates, sale/rental listings.
Should I use this
Quality & Safety
Findings (2)
- HIGH
- MEDIUMin avm_value
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
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-httpWhat it can do
Tool inventory
Tools (6)
🟢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
Evidence