Unlisted Property Search
Search and explore residential properties that aren't for sale (yet)
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"unlisted": {
"url": "https://api.unlistedhomes.com/mcp"
}
}
}원격 엔드포인트
https://api.unlistedhomes.com/mcpstreamable-httphttps://api.unlistedhomes.com/mcpsse할 수 있는 일
도구 목록
도구 (3)
🟢property_details_tool(id)
Fetch full details for a single Unlisted property by its ID. When telling the user what you're doing, say "area" not "boundary", and "home" or "property profile" not "listing". Don't mention internal IDs or parameter names.
입력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Property ID"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}출력 스키마
{
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Property identifier"
},
"url": {
"type": "string",
"description": "URL to view this property on Unlisted",
"format": "uri"
},
"thumbnail_url": {
"type": "string",
"description": "Thumbnail image URL",
"format": "uri"
},
"photo_uuids": {
"type": "array",
"description": "Photo UUIDs — use with CloudFront to build sized URLs (-thumbnail, -medium, -large)",
"items": {
"type": "string"
}
},
"cover_photo_uuid": {
"anyOf": [
{
"type": "null"
},
{
"type": "string"
}
],
"description": "Curated cover photo UUID — preferred over photo_uuids[0] for display"
},
"agent_cover_photo_uuid": {
"anyOf": [
{
"type": "null"
},
{
"type": "string"
}
],
"description": "Agent-selected cover photo UUID — preferred over cover_photo_uuid when present"
},
"address_line_1": {
"type": "string",
"description": "Street address"
},
"city": {
"type": "string",
"description": "City name"
},
"state": {
"type": "string",
"description": "State abbreviation",
"min_length": 2,
"max_length": 2
},
"zip": {
"type": "string",
"description": "ZIP code"
},
"longitude": {
"type": "number",
"description": "Location longitude",
"minimum": -180,
"maximum": 180
},
"latitude": {
"type": "number",
"description": "Location latitude",
"minimum": -90,
"maximum": 90
},
"google_street_pose": {
"anyOf": [
{
"type": "null"
},
{
"type": "object",
"description": "Cached Street View pose for optimal framing",
"properties": {
"street_lat": {
"type": "number"
},
"street_lng": {
"type": "number"
},
"heading": {
"type": "number"
},
"pitch": {
"type": "number"
},
"fov": {
"type": "number"
},
"zoom": {
"type": "number"
},
"pano": {
"type": "string"
}
}
}
]
},
"stories": {
"type": "number",
"description": "Number of stories/floors"
},
"bathrooms": {
"type": "number",
"description": "Number of bathrooms"
},
"bedrooms": {
"type": "number",
"description": "Number of bedrooms"
},
"build_year": {
"type": "number",
"description": "Build year"
},
"building_area": {
"type": "number",
"description": "Building area (ft²)"
},
"last_sale_date": {
"type": "string",
"description": "Last sale date",
"format": "date"
},
"last_sale_amount": {
"type": "number",
"description": "Last sale price"
},
"market_value": {
"type": "number",
"description": "Market value"
},
"estimated_value_one": {
"type": "number",
"description": "Estimated value"
},
"owner_expected_value": {
"type": "number",
"description": "Owner estimated value"
},
"owner_given_bathrooms": {
"type": "number",
"description": "Owner given number of bathrooms"
},
"owner_given_bedrooms": {
"type": "number",
"description": "Owner given number of bedrooms"
},
"owner_given_area": {
"type": "number",
"description": "Owner given building area (ft²)"
},
"owner_headline": {
"type": "string",
"description": "Owner headline"
},
"owner_blurb": {
"type": "string",
"description": "Owner description"
},
"unlisted_sorting_score": {
"type": "number",
"description": "Sorting score"
},
"unlisted_selling_soon_score": {
"type": "number",
"description": "Selling-soon score"
},
"views_count": {
"type": "number",
"description": "Number of views"
},
"likes_count": {
"type": "number",
"description": "Number of likes"
},
"waitlisters_count": {
"type": "number",
"description": "Number of waitlisters"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢property_search_tool(beds, baths, stories, perks, price_min, ...)
Search for properties on Unlisted that meet certain criteria. boundary_id should always be used unless doing a nation-wide search, and is obtained by using the autocomplete_tool. Returns up to 100 matches; use max_results only when the user asks for a specific count. When telling the user what you're doing, say "area" not "boundary", and "home" or "property profile" not "listing". Don't mention internal IDs or parameter names.
입력 스키마
{
"type": "object",
"properties": {
"beds": {
"description": "Minimum number of bedrooms",
"anyOf": [
{
"type": "null"
},
{
"type": "number",
"minimum": 1
}
]
},
"baths": {
"description": "Minimum number of bathrooms",
"anyOf": [
{
"type": "null"
},
{
"type": "number",
"minimum": 1
}
]
},
"stories": {
"description": "Number of stories/floors",
"anyOf": [
{
"type": "null"
},
{
"type": "number",
"minimum": 1
}
]
},
"perks": {
"description": "Features and perks",
"anyOf": [
{
"type": "null"
},
{
"type": "array",
"items": {
"type": "string",
"enum": [
"accessible",
"arbor_pergola",
"arena",
"attic",
"balcony",
"barn",
"bath_house",
"boat_access",
"boat_house",
"boat_lift",
"bonus_room",
"breakfast_nook",
"breezeway",
"cabin",
"canopy",
"cellar",
"central_vacuum",
"community_rec_room",
"courtyard",
"deck",
"elevator",
"escalator",
"exercise_room",
"family_room",
"finished_basement",
"fire_sprinklers",
"fireplace",
"first_floor_bedroom",
"first_floor_laundry",
"game_room",
"garage",
"gazebo",
"golf_course_green",
"granary",
"great_room",
"green_house",
"guest_house",
"hobby_room",
"intercom",
"kennel",
"laundry_room",
"lean_to",
"loading_platform",
"media_room",
"milk_house",
"mobile_home_hookup",
"mud_room",
"office",
"outdoor_kitchen",
"overhead_door",
"patio",
"pergola",
"pole_structure",
"pond",
"pool",
"pool_house",
"porch",
"poultry_house",
"practice_green",
"quonset",
"rooftop_garden",
"rv_parking",
"safe_room",
"sauna",
"security_alarm",
"shed",
"silo",
"sitting_room",
"sound_system",
"sports_court",
"sprinklers",
"stable",
"storage_building",
"storm_shelter",
"storm_shutter",
"study",
"study_room",
"sunroom",
"tax_ex_disabled",
"tax_ex_senior",
"tax_ex_veteran",
"tax_ex_widow",
"tennis_court",
"universal_access",
"utility_building",
"utility_room",
"water_feature",
"wet_bar",
"wine_cellar"
]
}
}
]
},
"price_min": {
"description": "Minimum price ($)",
"anyOf": [
{
"type": "null"
},
{
"type": "number",
"minimum": 0
}
]
},
"price_max": {
"description": "Maximum price ($)",
"anyOf": [
{
"type": "null"
},
{
"type": "number",
"minimum": 0
}
]
},
"build_min": {
"description": "Minimum build year",
"anyOf": [
{
"type": "null"
},
{
"type": "number",
"minimum": 0
}
]
},
"build_max": {
"description": "Maximum build year",
"anyOf": [
{
"type": "null"
},
{
"type": "number",
"minimum": 0
}
]
},
"area_min": {
"description": "Minimum building area (ft²)",
"anyOf": [
{
"type": "null"
},
{
"type": "number",
"minimum": 0
}
]
},
"area_max": {
"description": "Maximum building area (ft²)",
"anyOf": [
{
"type": "null"
},
{
"type": "number",
"minimum": 0
}
]
},
"lot_area_min": {
"description": "Minimum lot area (acres)",
"anyOf": [
{
"type": "null"
},
{
"type": "number",
"minimum": 0
}
]
},
"lot_area_max": {
"description": "Maximum lot area (acres)",
"anyOf": [
{
"type": "null"
},
{
"type": "number",
"minimum": 0
}
]
},
"min_last_sale_date": {
"description": "Minimum last sale date",
"anyOf": [
{
"type": "null"
},
{
"type": "string",
"format": "date"
}
]
},
"max_last_sale_date": {
"description": "Maximum last sale date",
"anyOf": [
{
"type": "null"
},
{
"type": "string",
"format": "date"
}
]
},
"include_null_last_sale": {
"description": "Include properties with no recorded sale date?",
"anyOf": [
{
"type": "null"
},
{
"type": "boolean"
}
]
},
"sort_type": {
"description": "Sort order for results. Use default unless the user specifies otherwise. default: ranked by Unlisted's overall relevance/quality score, heavily weighted by selling_soon_score (best match first); owner_updated_at: properties most recently updated by their owner first (active/engaged sellers); selling_soon_score: properties with the highest likelihood of going to market soon, first; likes: most-liked properties first; last_sale_date: most recently sold properties first (properties with no sale date are excluded).",
"anyOf": [
{
"type": "null"
},
{
"type": "string",
"enum": [
"default",
"owner_updated_at",
"selling_soon_score",
"likes",
"last_sale_date"
]
}
]
},
"boundary_id": {
"description": "Filter results to properties within a named geographic area (city, county, neighborhood, school district, etc.). Obtained from the autocomplete_tool.",
"anyOf": [
{
"type": "null"
},
{
"type": "number"
}
]
},
"geometry": {
"description": "GeoJSON Polygon to spatially filter properties. This is handy for when a boundary id is not found, or for other special cases where the user describes an area that is not well-known, or does not have a proper name.Coordinates are [longitude, latitude] pairs; first and last point must match to close the ring. Can be combined with boundary_id — results must satisfy both constraints. Example: {\"type\":\"Polygon\",\"coordinates\":[[[-87.635560,41.885830],[-87.628755,41.885842],[-87.628685,41.879399],[-87.635509,41.879389],[-87.635560,41.885830]]]}",
"anyOf": [
{
"type": "null"
},
{
"type": "object",
"required": [
"type",
"coordinates"
],
"properties": {
"type": {
"type": "string",
"enum": [
"Polygon"
]
},
"coordinates": {
"type": "array",
"description": "Array of linear rings; first ring is the outer boundary",
"items": {
"type": "array",
"minItems": 4,
"items": {
"type": "array",
"description": "[longitude, latitude]",
"minItems": 2,
"maxItems": 2,
"items": {
"type": "number"
}
}
}
}
}
}
]
},
"style": {
"description": "Architectural style(s) to filter by",
"anyOf": [
{
"type": "null"
},
{
"type": "array",
"items": {
"type": "string",
"enum": [
"art_deco",
"bungalow",
"cape_cod",
"colonial",
"contemporary",
"craftsman",
"creole",
"dutch_colonial",
"federal",
"french_provincial",
"georgian",
"gothic_revival",
"greek_revival",
"international",
"italianate",
"monterey",
"national",
"neoclassical",
"mcm_prairie",
"pueblo",
"queen_anne",
"ranch",
"regency",
"saltbox",
"second_empire",
"shed",
"shingle",
"shotgun",
"spanish_eclectic",
"split_level",
"stick",
"tudor",
"victorian",
"other"
]
}
}
]
},
"max_results": {
"description": "Cap the total number of results shown to the user. Only use when the user explicitly asks for a specific count, e.g. 'show me the top 5' or 'give me 20 homes'. Must be 100 or fewer. Leave blank for normal searches.",
"anyOf": [
{
"type": "null"
},
{
"type": "integer",
"minimum": 1,
"maximum": 100
}
]
},
"property_use_standardized": {
"description": "Filter by property use type. Each item can be a category name (selects all codes in the group) or an individual ATTOM numeric code to cherry-pick. If omitted, all standard residential types are included. Categories and their codes — single_family [181,363,364,380,383,385,440,467,468]: SFR, cluster homes, rural residences, homesteads, ADU; condos_and_townhouses [366,376,377,379,382,386,390,416,421,452]: condos, PUDs, patio homes, row houses, townhouses, garden homes, zero lot line; coops [367,461]: cooperatives; manufactured [371,373]: mobile/manufactured/modular homes; multi_24 [369,372,378,388,469,470]: 2-4 unit multifamily (duplexes, triplexes, quads, generic multifamily); multi_5 [360,374,381]: apartments and large multifamily/income properties; misc [375,384]: seasonal/cabin/vacation + miscellaneous residential; vacant_land [398,401,453,462]: residential vacant land and uninhabitable/destroyed structures; other [171,254,306,368,370,387,402,447]: mixed-use, historical, dormitories, fraternity/sorority houses, timeshares, under construction, tiny houses, unknown.",
"anyOf": [
{
"type": "null"
},
{
"type": "array",
"items": {
"anyOf": [
{
"type": "string",
"enum": [
"single_family",
"condos_and_townhouses",
"coops",
"manufactured",
"misc",
"multi_24",
"multi_5",
"other",
"vacant_land"
]
},
{
"type": "integer"
}
]
}
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}출력 스키마
{
"type": "object",
"properties": {
"search_url": {
"type": "string",
"description": "URL to view these results on Unlisted Discover",
"format": "uri"
},
"total_count": {
"type": "number",
"description": "Total number of properties matching the search"
},
"max_results": {
"anyOf": [
{
"type": "null"
},
{
"type": "number"
}
],
"description": "Cap applied to results, if the user asked for a specific count"
},
"properties": {
"type": "array",
"items": {
"properties": {
"id": {
"type": "number",
"description": "Property identifier"
},
"url": {
"type": "string",
"description": "URL to view this property on Unlisted",
"format": "uri"
},
"thumbnail_url": {
"type": "string",
"description": "Thumbnail image URL",
"format": "uri"
},
"photo_uuids": {
"type": "array",
"description": "Photo UUIDs — use with CloudFront to build sized URLs (-thumbnail, -medium, -large)",
"items": {
"type": "string"
}
},
"cover_photo_uuid": {
"anyOf": [
{
"type": "null"
},
{
"type": "string"
}
],
"description": "Curated cover photo UUID — preferred over photo_uuids[0] for display"
},
"agent_cover_photo_uuid": {
"anyOf": [
{
"type": "null"
},
{
"type": "string"
}
],
"description": "Agent-selected cover photo UUID — preferred over cover_photo_uuid when present"
},
"address_line_1": {
"type": "string",
"description": "Street address"
},
"city": {
"type": "string",
"description": "City name"
},
"state": {
"type": "string",
"description": "State abbreviation",
"min_length": 2,
"max_length": 2
},
"zip": {
"type": "string",
"description": "ZIP code"
},
"longitude": {
"type": "number",
"description": "Location longitude",
"minimum": -180,
"maximum": 180
},
"latitude": {
"type": "number",
"description": "Location latitude",
"minimum": -90,
"maximum": 90
},
"google_street_pose": {
"anyOf": [
{
"type": "null"
},
{
"type": "object",
"description": "Cached Street View pose for optimal framing",
"properties": {
"street_lat": {
"type": "number"
},
"street_lng": {
"type": "number"
},
"heading": {
"type": "number"
},
"pitch": {
"type": "number"
},
"fov": {
"type": "number"
},
"zoom": {
"type": "number"
},
"pano": {
"type": "string"
}
}
}
]
},
"stories": {
"type": "number",
"description": "Number of stories/floors"
},
"bathrooms": {
"type": "number",
"description": "Number of bathrooms"
},
"bedrooms": {
"type": "number",
"description": "Number of bedrooms"
},
"build_year": {
"type": "number",
"description": "Build year"
},
"building_area": {
"type": "number",
"description": "Building area (ft²)"
},
"last_sale_date": {
"type": "string",
"description": "Last sale date",
"format": "date"
},
"last_sale_amount": {
"type": "number",
"description": "Last sale price"
},
"market_value": {
"type": "number",
"description": "Market value"
},
"estimated_value_one": {
"type": "number",
"description": "Estimated value"
},
"owner_expected_value": {
"type": "number",
"description": "Owner estimated value"
},
"owner_given_bathrooms": {
"type": "number",
"description": "Owner given number of bathrooms"
},
"owner_given_bedrooms": {
"type": "number",
"description": "Owner given number of bedrooms"
},
"owner_given_area": {
"type": "number",
"description": "Owner given building area (ft²)"
},
"owner_headline": {
"type": "string",
"description": "Owner headline"
},
"owner_blurb": {
"type": "string",
"description": "Owner description"
},
"unlisted_sorting_score": {
"type": "number",
"description": "Sorting score"
},
"unlisted_selling_soon_score": {
"type": "number",
"description": "Selling-soon score"
},
"views_count": {
"type": "number",
"description": "Number of views"
},
"likes_count": {
"type": "number",
"description": "Number of likes"
},
"waitlisters_count": {
"type": "number",
"description": "Number of waitlisters"
}
},
"required": [
"id"
]
}
},
"alternative_search": {
"anyOf": [
{
"type": "null"
},
{
"type": "object",
"description": "Present when fewer than 3 properties matched the original criteria. Contains relaxed results with a description of what was loosened. These results should usually be shown to the user when it occurs.",
"properties": {
"description": {
"type": "string",
"description": "Human-readable description of which filter(s) were relaxed (e.g. 'Removed price range filter')"
},
"total_count": {
"type": "number",
"description": "Total number of properties matching the relaxed criteria"
},
"properties": {
"type": "array",
"items": {
"properties": {
"id": {
"type": "number",
"description": "Property identifier"
},
"url": {
"type": "string",
"description": "URL to view this property on Unlisted",
"format": "uri"
},
"thumbnail_url": {
"type": "string",
"description": "Thumbnail image URL",
"format": "uri"
},
"photo_uuids": {
"type": "array",
"description": "Photo UUIDs — use with CloudFront to build sized URLs (-thumbnail, -medium, -large)",
"items": {
"type": "string"
}
},
"cover_photo_uuid": {
"anyOf": [
{
"type": "null"
},
{
"type": "string"
}
],
"description": "Curated cover photo UUID — preferred over photo_uuids[0] for display"
},
"agent_cover_photo_uuid": {
"anyOf": [
{
"type": "null"
},
{
"type": "string"
}
],
"description": "Agent-selected cover photo UUID — preferred over cover_photo_uuid when present"
},
"address_line_1": {
"type": "string",
"description": "Street address"
},
"city": {
"type": "string",
"description": "City name"
},
"state": {
"type": "string",
"description": "State abbreviation",
"min_length": 2,
"max_length": 2
},
"zip": {
"type": "string",
"description": "ZIP code"
},
"longitude": {
"type": "number",
"description": "Location longitude",
"minimum": -180,
"maximum": 180
},
"latitude": {
"type": "number",
"description": "Location latitude",
"minimum": -90,
"maximum": 90
},
"google_street_pose": {
"anyOf": [
{
"type": "null"
},
{
"type": "object",
"description": "Cached Street View pose for optimal framing",
"properties": {
"street_lat": {
"type": "number"
},
"street_lng": {
"type": "number"
},
"heading": {
"type": "number"
},
"pitch": {
"type": "number"
},
"fov": {
"type": "number"
},
"zoom": {
"type": "number"
},
"pano": {
"type": "string"
}
}
}
]
},
"stories": {
"type": "number",
"description": "Number of stories/floors"
},
"bathrooms": {
"type": "number",
"description": "Number of bathrooms"
},
"bedrooms": {
"type": "number",
"description": "Number of bedrooms"
},
"build_year": {
"type": "number",
"description": "Build year"
},
"building_area": {
"type": "number",
"description": "Building area (ft²)"
},
"last_sale_date": {
"type": "string",
"description": "Last sale date",
"format": "date"
},
"last_sale_amount": {
"type": "number",
"description": "Last sale price"
},
"market_value": {
"type": "number",
"description": "Market value"
},
"estimated_value_one": {
"type": "number",
"description": "Estimated value"
},
"owner_expected_value": {
"type": "number",
"description": "Owner estimated value"
},
"owner_given_bathrooms": {
"type": "number",
"description": "Owner given number of bathrooms"
},
"owner_given_bedrooms": {
"type": "number",
"description": "Owner given number of bedrooms"
},
"owner_given_area": {
"type": "number",
"description": "Owner given building area (ft²)"
},
"owner_headline": {
"type": "string",
"description": "Owner headline"
},
"owner_blurb": {
"type": "string",
"description": "Owner description"
},
"unlisted_sorting_score": {
"type": "number",
"description": "Sorting score"
},
"unlisted_selling_soon_score": {
"type": "number",
"description": "Selling-soon score"
},
"views_count": {
"type": "number",
"description": "Number of views"
},
"likes_count": {
"type": "number",
"description": "Number of likes"
},
"waitlisters_count": {
"type": "number",
"description": "Number of waitlisters"
}
},
"required": [
"id"
]
},
"description": "Properties from the relaxed search"
}
}
}
]
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢autocomplete_tool(query)
Autocomplete a search term to find geographic areas (cities, counties, neighborhoods, school districts, states, etc.) and properties by address. Use this to look up boundary IDs for the boundary_id parameter in PropertySearch, OR Use this to look up property IDs for the id parameter in property details tool. If a search does not yield the expected results attempt to simplify and/or shorten the query, removing potentially problematic or unneeded words/symbols. When telling the user what you're doing, say "area" not "boundary", and "home" or "property profile" not "listing". Don't mention internal IDs or parameter names.
입력 스키마
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Place name, city, neighborhood, county, state, or street address to search for"
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}출력 스키마
{
"type": "object",
"properties": {
"boundaries": {
"type": "array",
"description": "Matching geographic areas (cities, neighborhoods, counties, school districts, etc.). Use the id as boundary_id in PropertySearch.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Boundary ID — pass this as boundary_id to PropertySearch"
},
"name": {
"type": "string",
"description": "Boundary display name (e.g. 'Lincoln Park, IL')"
},
"type": {
"type": "string",
"description": "Boundary type: city, county, neighborhood, school_district, state, town, township, etc."
},
"state": {
"type": "string",
"description": "State abbreviation"
}
},
"required": [
"id",
"name",
"type"
]
}
},
"properties": {
"type": "array",
"description": "Matching properties by address. Preferred primary method for finding exact addresses.",
"items": {
"type": "object",
"properties": {
"id": {
"type": "number",
"description": "Property ID"
},
"address_line_1": {
"type": "string",
"description": "Street address"
},
"city": {
"type": "string",
"description": "City"
},
"state": {
"type": "string",
"description": "State abbreviation"
},
"zip": {
"type": "string",
"description": "ZIP code"
}
},
"required": [
"id"
]
}
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}커뮤니티
증거