Serveur MCP

FlatHunt

com.flat-hunt/mcp
Immobilier Recherche et exploration Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Searches and compares furnished Berlin housing listings and manages saved listings and search alerts.

compare_listings
Compare Berlin listings
Return normalized detail fields for 2–10 FlatHunt listings by numeric id in one read-only response. Includes prices, location, amenities, rental-policy flags, capacity, description, utilities, nearby distances, provider and tracking URLs for side-by-side comparison.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['listingIds'], 'properties': {'listingIds': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'maxItems': 10, 'minItems': 2, 'description': 'Between 2 and 10 unique listing ids.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['listings'], 'properties': {'listings': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title'], 'properties': {'id': {'type': 'number'}, 'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'area': {'type': 'string'}, 'floor': {'type': 'string'}, 'price': {'type': 'number'}, 'rooms': {'type': ['number', 'string']}, 'saved': {'type': 'boolean'}, 'title': {'type': 'string'}, 'images': {'type': 'array', 'items': {'type': 'object', 'required': ['url'], 'properties': {'alt': {'type': 'string'}, 'url': {'type': 'string'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'thumbnailUrl': {'type': 'string'}}, 'additionalProperties': False}}, 'labels': {'type': 'array', 'items': {'type': 'string'}}, 'maxAge': {'type': 'number'}, 'minAge': {'type': 'number'}, 'address': {'type': 'string'}, 'deposit': {'type': 'number'}, 'bedrooms': {'type': 'number'}, 'location': {'type': 'string'}, 'postCode': {'type': 'string'}, 'provider': {'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'logoUrl': {'type': 'string'}}, 'additionalProperties': False}, 'roomType': {'enum': ['private', 'shared'], 'type': 'string'}, 'bathrooms': {'type': 'number'}, 'furnished': {'type': 'string'}, 'noDeposit': {'type': 'boolean'}, 'detailsUrl': {'type': 'string'}, 'personsMax': {'type': 'number'}, 'amenityTags': {'type': 'array', 'items': {'type': 'string'}}, 'availableTo': {'type': 'string'}, 'description': {'type': 'string'}, 'housingType': {'type': 'string'}, 'petsAllowed': {'type': 'boolean'}, 'trackingUrl': {'type': 'string'}, 'partyAllowed': {'type': 'boolean'}, 'availableFrom': {'type': 'string'}, 'maxStayMonths': {'type': 'number'}, 'minStayMonths': {'type': 'number'}, 'utilitiesCost': {'type': 'number'}, 'couplesAllowed': {'type': 'boolean'}, 'noSchufaLikely': {'type': 'boolean'}, 'priceFormatted': {'type': 'string'}, 'schufaRequired': {'type': 'boolean'}, 'smokingAllowed': {'type': 'boolean'}, 'virtualTourUrl': {'type': 'string'}, 'anmeldungLikely': {'type': 'boolean'}, 'childrenAllowed': {'type': 'boolean'}, 'nearbyDistances': {'type': 'array', 'items': {'type': 'object', 'required': ['place', 'distance'], 'properties': {'place': {'type': 'string'}, 'distance': {'type': 'string'}}, 'additionalProperties': False}}, 'preferredGender': {'type': 'string'}, 'propertySubtype': {'type': 'string'}, 'amenitiesUnknown': {'type': 'array', 'items': {'type': 'string'}}, 'areaSquareMeters': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'depositFormatted': {'type': 'string'}, 'noSchufaRequired': {'type': 'boolean'}, 'studentsFriendly': {'type': 'boolean'}, 'guarantorRequired': {'type': 'boolean'}, 'utilitiesIncluded': {'type': 'array', 'items': {'type': 'string'}}, 'buildingAmenityTags': {'type': 'array', 'items': {'type': 'string'}}, 'onlyStudentsAllowed': {'type': 'boolean'}, 'registrationPossible': {'type': 'boolean'}, 'buildingAmenitiesUnknown': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}}, 'additionalProperties': False}
create_alert
Create a saved search alert
Create a saved search alert so FlatHunt notifies the user about new matching Berlin listings. Accepts housing, price, size, rooms, availability, canonical area ids, amenity and rental-policy filters. Email notifications are enabled by default; Telegram too when the user has linked Telegram on FlatHunt. Requires the alerts.write scope.
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'lat': {'type': 'number', 'description': 'Latitude for nearby search; must be provided with lng (+ radiusKm). Do not mix with areas.'}, 'lng': {'type': 'number', 'description': 'Longitude for nearby search; must be provided with lat (+ radiusKm). Do not mix with areas.'}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': 'Optional short label for the saved search (max 120 characters). If omitted, FlatHunt derives a concise label from housing type, budget and location filters.'}, 'areas': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 20, 'description': 'Canonical Berlin area IDs from list_areas (e.g. berlin:ortsteil:prenzlauer-berg). Up to 20 IDs; multiple IDs are combined with OR. District / Ortsteil mode — do not mix with lat/lng/radiusKm. When the user names an area, call list_areas first. Pass only canonical IDs returned by list_areas. Never construct, translate, normalize, or guess IDs.'}, 'rooms': {'type': 'array', 'items': {'enum': ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'studio'], 'type': 'string'}, 'maxItems': 10, 'description': 'Exact room counts (OR). Allowed values only: "studio", "1", "2", …, "10" (strings, not numbers). Prefer over roomsMin/roomsMax for "1–2 rooms": ["1","2"] or ["studio","1"].'}, 'sortBy': {'enum': ['rank', 'price', 'squareMeters', 'createdAt', 'availableFrom'], 'type': 'string', 'description': 'Sort field (default rank). sortOrder is ignored when sortBy=rank. Cheaper first → price+asc; larger area → squareMeters+desc.'}, 'postCode': {'type': 'string', 'description': 'Exact Berlin post code (PLZ), e.g. 10115.'}, 'priceMax': {'type': 'number', 'minimum': 0, 'description': 'Maximum monthly price in EUR.'}, 'priceMin': {'type': 'number', 'minimum': 0, 'description': 'Minimum monthly price in EUR.'}, 'radiusKm': {'type': 'number', 'maximum': 25, 'minimum': 0.1, 'description': 'Search radius in km around lat/lng (min 0.1, max 25). Nearby mode — do not mix with areas.'}, 'roomType': {'enum': ['private', 'shared'], 'type': 'string', 'description': 'Room occupancy: private = one private bedroom in shared housing; shared = a bed in a shared bedroom. Omit to include both. housingType=room remains the broad backwards-compatible filter.'}, 'roomsMax': {'type': 'number', 'minimum': 0, 'description': 'Maximum rooms. Prefer rooms[] for exact OR lists.'}, 'roomsMin': {'type': 'number', 'minimum': 0, 'description': 'Minimum rooms (studio = 0). Prefer rooms[] for exact OR lists.'}, 'providers': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 10, 'description': 'Restrict to specific housing providers (ids from the providers catalog).'}, 'sortOrder': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction (default desc). Ignored when sortBy=rank.'}, 'depositMax': {'type': 'number', 'minimum': 0, 'description': 'Maximum deposit (Kaution) in EUR.'}, 'amenityTags': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'maxItems': 10, 'description': 'Canonical amenity tags (AND). Backend filters listings that have ALL of these tags. Catalog (snake_case only): wifi, parking, bike_parking, wheelchair, dishwasher, washing_machine, dryer, elevator, balcony, desk, tv, oven, heating, furnished, fridge, microwave, cooktop, coffee_machine, iron, hair_dryer, closet, wardrobe, bed, bathtub, shower, garden, basement, air_conditioning, parking_street, workspace, fitness, concierge, laundry, pets_friendly. Do not invent aliases (wiFi, hasWifi, Waschmaschine).'}, 'availableTo': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Available until / not later than (YYYY-MM-DD).'}, 'bedroomsMin': {'type': 'number', 'minimum': 0, 'description': 'Minimum number of bedrooms (from provider extra data when available).'}, 'housingType': {'enum': ['room', 'apartment'], 'type': 'string', 'description': 'Type of housing. Studios map to apartment; room includes both private and shared rooms unless roomType narrows it.'}, 'petsAllowed': {'type': 'boolean', 'description': 'true = pets explicitly allowed.'}, 'availableFrom': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Available from / not earlier than (YYYY-MM-DD), e.g. "2026-08-01".'}, 'personsMaxMin': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Minimum capacity (personsMax). Use 2 for couples, 1 for solo — filters listings that can accommodate at least this many people.', 'exclusiveMinimum': 0}, 'noSchufaLikely': {'type': 'boolean', 'description': 'true = Schufa likely not required (broader). Prefer for "without Schufa".'}, 'schufaRequired': {'type': 'boolean', 'description': 'true = Schufa required.'}, 'smokingAllowed': {'type': 'boolean', 'description': 'false = non-smokers only / smoking not allowed.'}, 'anmeldungLikely': {'type': 'boolean', 'description': 'true = Anmeldung likely (broader). Prefer for "with Anmeldung" unless the user needs a hard guarantee.'}, 'squareMetersMax': {'type': 'number', 'minimum': 0, 'description': 'Maximum living area in m².'}, 'squareMetersMin': {'type': 'number', 'minimum': 0, 'description': 'Minimum living area in m². "from 40 m²" → 40. Filter on the backend — do not paginate to drop small listings.'}, 'noSchufaRequired': {'type': 'boolean', 'description': 'true = Schufa explicitly not required (strict).'}, 'studentsFriendly': {'type': 'boolean', 'description': 'true = student-oriented housing (broader).'}, 'onlyStudentsAllowed': {'type': 'boolean', 'description': 'true = students-only listings.'}, 'registrationPossible': {'type': 'boolean', 'description': 'true = Anmeldung / registration explicitly possible (strict).'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['alert'], 'properties': {'alert': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'number'}, 'name': {'type': 'string'}, 'createdAt': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}
delete_alert
Delete saved search alerts
Delete one or more of the current user's saved search alerts by numeric id. This is destructive and cannot be undone. Accepts 1–10 ids per call and requires alerts.write.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'alertId': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Deprecated single-id form; use alertIds: [id] instead.', 'exclusiveMinimum': 0}, 'alertIds': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'maxItems': 10, 'minItems': 1, 'description': 'Between 1 and 10 alert ids to delete. Preferred for one or many.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['deleted', 'alertIds'], 'properties': {'deleted': {'type': 'boolean'}, 'alertIds': {'type': 'array', 'items': {'type': 'number'}}}, 'additionalProperties': False}
get_listing
Get Berlin listing details
Get detailed information about a single FlatHunt listing in Berlin by its numeric id. Returns its description, amenities, rental-policy flags, capacity, stay terms, utilities, nearby distances, media, provider and tracking URLs. Availability and provider terms may change.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['listingId'], 'properties': {'listingId': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Numeric FlatHunt listing id.', 'exclusiveMinimum': 0}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['listing'], 'properties': {'listing': {'type': 'object', 'required': ['id', 'title'], 'properties': {'id': {'type': 'number'}, 'lat': {'type': 'number'}, 'lng': {'type': 'number'}, 'area': {'type': 'string'}, 'floor': {'type': 'string'}, 'price': {'type': 'number'}, 'rooms': {'type': ['number', 'string']}, 'saved': {'type': 'boolean'}, 'title': {'type': 'string'}, 'images': {'type': 'array', 'items': {'type': 'object', 'required': ['url'], 'properties': {'alt': {'type': 'string'}, 'url': {'type': 'string'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'thumbnailUrl': {'type': 'string'}}, 'additionalProperties': False}}, 'labels': {'type': 'array', 'items': {'type': 'string'}}, 'maxAge': {'type': 'number'}, 'minAge': {'type': 'number'}, 'address': {'type': 'string'}, 'deposit': {'type': 'number'}, 'bedrooms': {'type': 'number'}, 'location': {'type': 'string'}, 'postCode': {'type': 'string'}, 'provider': {'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'logoUrl': {'type': 'string'}}, 'additionalProperties': False}, 'roomType': {'enum': ['private', 'shared'], 'type': 'string'}, 'bathrooms': {'type': 'number'}, 'furnished': {'type': 'string'}, 'noDeposit': {'type': 'boolean'}, 'detailsUrl': {'type': 'string'}, 'personsMax': {'type': 'number'}, 'amenityTags': {'type': 'array', 'items': {'type': 'string'}}, 'availableTo': {'type': 'string'}, 'description': {'type': 'string'}, 'housingType': {'type': 'string'}, 'petsAllowed': {'type': 'boolean'}, 'trackingUrl': {'type': 'string'}, 'partyAllowed': {'type': 'boolean'}, 'availableFrom': {'type': 'string'}, 'maxStayMonths': {'type': 'number'}, 'minStayMonths': {'type': 'number'}, 'utilitiesCost': {'type': 'number'}, 'couplesAllowed': {'type': 'boolean'}, 'noSchufaLikely': {'type': 'boolean'}, 'priceFormatted': {'type': 'string'}, 'schufaRequired': {'type': 'boolean'}, 'smokingAllowed': {'type': 'boolean'}, 'virtualTourUrl': {'type': 'string'}, 'anmeldungLikely': {'type': 'boolean'}, 'childrenAllowed': {'type': 'boolean'}, 'nearbyDistances': {'type': 'array', 'items': {'type': 'object', 'required': ['place', 'distance'], 'properties': {'place': {'type': 'string'}, 'distance': {'type': 'string'}}, 'additionalProperties': False}}, 'preferredGender': {'type': 'string'}, 'propertySubtype': {'type': 'string'}, 'amenitiesUnknown': {'type': 'array', 'items': {'type': 'string'}}, 'areaSquareMeters': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'depositFormatted': {'type': 'string'}, 'noSchufaRequired': {'type': 'boolean'}, 'studentsFriendly': {'type': 'boolean'}, 'guarantorRequired': {'type': 'boolean'}, 'utilitiesIncluded': {'type': 'array', 'items': {'type': 'string'}}, 'buildingAmenityTags': {'type': 'array', 'items': {'type': 'string'}}, 'onlyStudentsAllowed': {'type': 'boolean'}, 'registrationPossible': {'type': 'boolean'}, 'buildingAmenitiesUnknown': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}
list_alerts
List saved search alerts
List the current user's saved search alerts on FlatHunt, including each alert's numeric id, name and creation time when available. Requires alerts.read.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['alerts'], 'properties': {'alerts': {'type': 'array', 'items': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'number'}, 'name': {'type': 'string'}, 'createdAt': {'type': 'string'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
list_areas
List Berlin districts catalog
List supported Berlin districts (Bezirke) and neighbourhoods (Ortsteile) with canonical FlatHunt ids. Returns id, name, slug, type and parent area information, with optional name and type filtering. Mitte exists both as a whole Bezirk (berlin:bezirk:mitte) and as a smaller Ortsteil (berlin:ortsteil:mitte). Charlottenburg is an Ortsteil; the parent Bezirk is Charlottenburg-Wilmersdorf.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'type': {'enum': ['bezirk', 'ortsteil'], 'type': 'string', 'description': 'Optional filter by area type.'}, 'query': {'type': 'string', 'description': 'Optional case-insensitive substring filter on area name or slug. Omit to return the full catalog (109 areas).'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['areas', 'total', 'catalogVersion'], 'properties': {'areas': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'slug', 'type'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'type': {'enum': ['bezirk', 'ortsteil'], 'type': 'string'}, 'parentName': {'type': 'string'}, 'parentAreaId': {'type': ['string', 'null']}}, 'additionalProperties': False}}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'catalogVersion': {'type': 'string'}}, 'additionalProperties': False}
list_saved_listings
List saved listings
List the current user's saved (favorited) FlatHunt listings. Requires the favorites.read scope.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['savedListings'], 'properties': {'savedListings': {'type': 'array', 'items': {'type': 'object', 'required': ['listingId'], 'properties': {'listing': {'type': 'object', 'required': ['id', 'title'], 'properties': {'id': {'type': 'number'}, 'area': {'type': 'string'}, 'floor': {'type': 'string'}, 'price': {'type': 'number'}, 'rooms': {'type': ['number', 'string']}, 'title': {'type': 'string'}, 'images': {'type': 'array', 'items': {'type': 'object', 'required': ['url'], 'properties': {'alt': {'type': 'string'}, 'url': {'type': 'string'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'thumbnailUrl': {'type': 'string'}}, 'additionalProperties': False}}, 'labels': {'type': 'array', 'items': {'type': 'string'}}, 'maxAge': {'type': 'number'}, 'minAge': {'type': 'number'}, 'deposit': {'type': 'number'}, 'bedrooms': {'type': 'number'}, 'location': {'type': 'string'}, 'postCode': {'type': 'string'}, 'provider': {'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'logoUrl': {'type': 'string'}}, 'additionalProperties': False}, 'roomType': {'enum': ['private', 'shared'], 'type': 'string'}, 'bathrooms': {'type': 'number'}, 'furnished': {'type': 'string'}, 'noDeposit': {'type': 'boolean'}, 'detailsUrl': {'type': 'string'}, 'personsMax': {'type': 'number'}, 'amenityTags': {'type': 'array', 'items': {'type': 'string'}}, 'availableTo': {'type': 'string'}, 'housingType': {'type': 'string'}, 'petsAllowed': {'type': 'boolean'}, 'trackingUrl': {'type': 'string'}, 'partyAllowed': {'type': 'boolean'}, 'availableFrom': {'type': 'string'}, 'maxStayMonths': {'type': 'number'}, 'minStayMonths': {'type': 'number'}, 'couplesAllowed': {'type': 'boolean'}, 'noSchufaLikely': {'type': 'boolean'}, 'priceFormatted': {'type': 'string'}, 'schufaRequired': {'type': 'boolean'}, 'smokingAllowed': {'type': 'boolean'}, 'anmeldungLikely': {'type': 'boolean'}, 'childrenAllowed': {'type': 'boolean'}, 'preferredGender': {'type': 'string'}, 'propertySubtype': {'type': 'string'}, 'amenitiesUnknown': {'type': 'array', 'items': {'type': 'string'}}, 'areaSquareMeters': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'depositFormatted': {'type': 'string'}, 'noSchufaRequired': {'type': 'boolean'}, 'studentsFriendly': {'type': 'boolean'}, 'guarantorRequired': {'type': 'boolean'}, 'buildingAmenityTags': {'type': 'array', 'items': {'type': 'string'}}, 'onlyStudentsAllowed': {'type': 'boolean'}, 'registrationPossible': {'type': 'boolean'}, 'buildingAmenitiesUnknown': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}, 'savedAt': {'type': 'string'}, 'listingId': {'type': 'number'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
remove_saved_listing
Remove a saved listing
Remove a listing from the current user's saved (favorited) listings by its numeric id. Requires the favorites.write scope.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['listingId'], 'properties': {'listingId': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Numeric id of the listing to remove.', 'exclusiveMinimum': 0}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['removed', 'listingId'], 'properties': {'removed': {'type': 'boolean'}, 'listingId': {'type': 'number'}}, 'additionalProperties': False}
render_listings_widget
Render FlatHunt listing cards
Return UI-ready cards and an interactive MCP Apps gallery for 1–10 FlatHunt listing ids. The tool refreshes current listing data and displays images, provider, price, availability and listing actions. Optional alertCriteria adds a saved-search control for the represented filters.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['listingIds'], 'properties': {'listingIds': {'type': 'array', 'items': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'maxItems': 10, 'minItems': 1, 'description': 'Between 1 and 10 unique FlatHunt listing ids.'}, 'alertCriteria': {'type': 'object', 'properties': {'lat': {'type': 'number', 'description': 'Optional. Nearby-search latitude (with lng).'}, 'lng': {'type': 'number', 'description': 'Optional. Nearby-search longitude (with lat).'}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': "Optional. Short saved-search label in the user's language so Save search uses a meaningful name (not a generic default)."}, 'areas': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional. Canonical area ids from list_areas used in the search.'}, 'rooms': {'type': 'array', 'items': {'enum': ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'studio'], 'type': 'string'}, 'description': 'Optional. Exact room counts from the search. Allowed: "studio", "1"…"10" (strings only).'}, 'postCode': {'type': 'string', 'description': 'Optional. Exact Berlin PLZ from the search.'}, 'priceMax': {'type': 'number', 'minimum': 0, 'description': 'Optional. Maximum monthly price in EUR from the search.'}, 'priceMin': {'type': 'number', 'minimum': 0, 'description': 'Optional. Minimum monthly price in EUR from the search.'}, 'radiusKm': {'type': 'number', 'description': 'Optional. Nearby-search radius in km.', 'exclusiveMinimum': 0}, 'roomType': {'enum': ['private', 'shared'], 'type': 'string', 'description': 'Optional. Same roomType as the preceding search_listings call.'}, 'roomsMax': {'type': 'number', 'minimum': 0, 'description': 'Optional. Maximum rooms from the search.'}, 'roomsMin': {'type': 'number', 'minimum': 0, 'description': 'Optional. Minimum rooms from the search (studio = 0).'}, 'providers': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional. Provider ids from the search.'}, 'depositMax': {'type': 'number', 'minimum': 0, 'description': 'Optional. Maximum deposit EUR from the search.'}, 'amenityTags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional. Canonical amenity tags (AND) from the search, e.g. wifi, parking, washing_machine.'}, 'availableTo': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Optional. Available-to date (YYYY-MM-DD) from the search.'}, 'bedroomsMin': {'type': 'number', 'minimum': 0, 'description': 'Optional. Minimum bedrooms from the search.'}, 'housingType': {'enum': ['room', 'apartment'], 'type': 'string', 'description': 'Optional. Same housingType as the preceding search_listings call.'}, 'petsAllowed': {'type': 'boolean', 'description': 'Optional. Pets filter from the search.'}, 'availableFrom': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Optional. Available-from date (YYYY-MM-DD) from the search.'}, 'personsMaxMin': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional. Minimum capacity from the search.', 'exclusiveMinimum': 0}, 'noSchufaLikely': {'type': 'boolean', 'description': 'Optional. No-Schufa-likely filter from the search.'}, 'schufaRequired': {'type': 'boolean', 'description': 'Optional. Schufa-required filter from the search.'}, 'smokingAllowed': {'type': 'boolean', 'description': 'Optional. Smoking filter from the search.'}, 'anmeldungLikely': {'type': 'boolean', 'description': 'Optional. Anmeldung-likely filter from the search.'}, 'squareMetersMax': {'type': 'number', 'minimum': 0, 'description': 'Optional. Maximum living area m² from the search.'}, 'squareMetersMin': {'type': 'number', 'minimum': 0, 'description': 'Optional. Minimum living area m² from the search.'}, 'noSchufaRequired': {'type': 'boolean', 'description': 'Optional. No-Schufa-required filter from the search.'}, 'studentsFriendly': {'type': 'boolean', 'description': 'Optional. Students-friendly filter from the search.'}, 'onlyStudentsAllowed': {'type': 'boolean', 'description': 'Optional. Students-only filter from the search.'}, 'registrationPossible': {'type': 'boolean', 'description': 'Optional. Anmeldung/registration filter from the search.'}}, 'description': 'Optional saved-search criteria represented by this result set. Every nested field is optional. Pagination and sort fields are not accepted.'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['listings'], 'properties': {'listings': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'available', 'images', 'amenities', 'amenitiesMoreCount'], 'properties': {'id': {'type': 'number'}, 'area': {'type': 'string'}, 'price': {'type': 'number'}, 'rooms': {'type': ['number', 'string']}, 'saved': {'type': 'boolean'}, 'title': {'type': 'string'}, 'images': {'type': 'array', 'items': {'type': 'object', 'required': ['url'], 'properties': {'alt': {'type': 'string'}, 'url': {'type': 'string'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'thumbnailUrl': {'type': 'string'}}, 'additionalProperties': False}}, 'labels': {'type': 'array', 'items': {'type': 'string'}}, 'address': {'type': 'string'}, 'deposit': {'type': 'number'}, 'bedrooms': {'type': 'number'}, 'provider': {'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'logoUrl': {'type': 'string'}}, 'additionalProperties': False}, 'roomType': {'enum': ['private', 'shared'], 'type': 'string'}, 'amenities': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'label', 'tone'], 'properties': {'id': {'type': 'string'}, 'icon': {'type': 'string'}, 'tone': {'enum': ['neutral', 'positive'], 'type': 'string'}, 'label': {'type': 'string'}}, 'additionalProperties': False}}, 'available': {'type': 'boolean'}, 'bathrooms': {'type': 'number'}, 'noDeposit': {'type': 'boolean'}, 'detailsUrl': {'type': 'string'}, 'personsMax': {'type': 'number'}, 'availableTo': {'type': 'string'}, 'housingType': {'type': 'string'}, 'petsAllowed': {'type': 'boolean'}, 'trackingUrl': {'type': 'string'}, 'availableFrom': {'type': 'string'}, 'priceFormatted': {'type': 'string'}, 'areaSquareMeters': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'depositFormatted': {'type': 'string'}, 'amenitiesMoreCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'registrationPossible': {'type': 'boolean'}, 'availableFromFormatted': {'type': 'string'}}, 'additionalProperties': False}}, 'alertCriteria': {'type': 'object', 'properties': {'lat': {'type': 'number', 'description': 'Optional. Nearby-search latitude (with lng).'}, 'lng': {'type': 'number', 'description': 'Optional. Nearby-search longitude (with lat).'}, 'name': {'type': 'string', 'maxLength': 120, 'minLength': 1, 'description': "Optional. Short saved-search label in the user's language so Save search uses a meaningful name (not a generic default)."}, 'areas': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional. Canonical area ids from list_areas used in the search.'}, 'rooms': {'type': 'array', 'items': {'enum': ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'studio'], 'type': 'string'}, 'description': 'Optional. Exact room counts from the search. Allowed: "studio", "1"…"10" (strings only).'}, 'postCode': {'type': 'string', 'description': 'Optional. Exact Berlin PLZ from the search.'}, 'priceMax': {'type': 'number', 'minimum': 0, 'description': 'Optional. Maximum monthly price in EUR from the search.'}, 'priceMin': {'type': 'number', 'minimum': 0, 'description': 'Optional. Minimum monthly price in EUR from the search.'}, 'radiusKm': {'type': 'number', 'description': 'Optional. Nearby-search radius in km.', 'exclusiveMinimum': 0}, 'roomType': {'enum': ['private', 'shared'], 'type': 'string', 'description': 'Optional. Same roomType as the preceding search_listings call.'}, 'roomsMax': {'type': 'number', 'minimum': 0, 'description': 'Optional. Maximum rooms from the search.'}, 'roomsMin': {'type': 'number', 'minimum': 0, 'description': 'Optional. Minimum rooms from the search (studio = 0).'}, 'providers': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional. Provider ids from the search.'}, 'depositMax': {'type': 'number', 'minimum': 0, 'description': 'Optional. Maximum deposit EUR from the search.'}, 'amenityTags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional. Canonical amenity tags (AND) from the search, e.g. wifi, parking, washing_machine.'}, 'availableTo': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Optional. Available-to date (YYYY-MM-DD) from the search.'}, 'bedroomsMin': {'type': 'number', 'minimum': 0, 'description': 'Optional. Minimum bedrooms from the search.'}, 'housingType': {'enum': ['room', 'apartment'], 'type': 'string', 'description': 'Optional. Same housingType as the preceding search_listings call.'}, 'petsAllowed': {'type': 'boolean', 'description': 'Optional. Pets filter from the search.'}, 'availableFrom': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Optional. Available-from date (YYYY-MM-DD) from the search.'}, 'personsMaxMin': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Optional. Minimum capacity from the search.', 'exclusiveMinimum': 0}, 'noSchufaLikely': {'type': 'boolean', 'description': 'Optional. No-Schufa-likely filter from the search.'}, 'schufaRequired': {'type': 'boolean', 'description': 'Optional. Schufa-required filter from the search.'}, 'smokingAllowed': {'type': 'boolean', 'description': 'Optional. Smoking filter from the search.'}, 'anmeldungLikely': {'type': 'boolean', 'description': 'Optional. Anmeldung-likely filter from the search.'}, 'squareMetersMax': {'type': 'number', 'minimum': 0, 'description': 'Optional. Maximum living area m² from the search.'}, 'squareMetersMin': {'type': 'number', 'minimum': 0, 'description': 'Optional. Minimum living area m² from the search.'}, 'noSchufaRequired': {'type': 'boolean', 'description': 'Optional. No-Schufa-required filter from the search.'}, 'studentsFriendly': {'type': 'boolean', 'description': 'Optional. Students-friendly filter from the search.'}, 'onlyStudentsAllowed': {'type': 'boolean', 'description': 'Optional. Students-only filter from the search.'}, 'registrationPossible': {'type': 'boolean', 'description': 'Optional. Anmeldung/registration filter from the search.'}}, 'description': 'Optional object. If present, include only the filter keys used in the preceding search_listings call — every nested field is optional; omit unused keys. Never require all fields. Do not include page, limit, sortBy, or sortOrder.', 'additionalProperties': False}}, 'additionalProperties': False}
save_listing
Save a listing
Save (favorite) a FlatHunt listing for the current user by its numeric id. Requires the favorites.write scope. Ownership and duplicate handling are enforced by FlatHunt.
Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['listingId'], 'properties': {'listingId': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Numeric id of the listing to save.', 'exclusiveMinimum': 0}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['saved', 'listingId'], 'properties': {'saved': {'type': 'boolean'}, 'listingId': {'type': 'number'}}, 'additionalProperties': False}
search_listings
Search Berlin furnished listings
Search current furnished apartments, studios, private rooms and shared rooms in Berlin through FlatHunt. Supports price, size, rooms, bedrooms, canonical area ids or nearby coordinates, availability dates, capacity, deposit, providers, amenity tags, rental-policy flags, sorting and pagination up to 20 results. Returns normalized listing summaries and pagination metadata. Availability, prices and provider terms may change.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'lat': {'type': 'number', 'description': 'Latitude for nearby search; must be provided with lng (+ radiusKm). Do not mix with areas.'}, 'lng': {'type': 'number', 'description': 'Longitude for nearby search; must be provided with lat (+ radiusKm). Do not mix with areas.'}, 'page': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Page number (default 1).', 'exclusiveMinimum': 0}, 'areas': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 20, 'description': 'Canonical Berlin area IDs from list_areas (e.g. berlin:ortsteil:prenzlauer-berg). Up to 20 IDs; multiple IDs are combined with OR. District / Ortsteil mode — do not mix with lat/lng/radiusKm. When the user names an area, call list_areas first. Pass only canonical IDs returned by list_areas. Never construct, translate, normalize, or guess IDs.'}, 'limit': {'type': 'integer', 'maximum': 20, 'description': 'Results per page (default 10, max 20).', 'exclusiveMinimum': 0}, 'rooms': {'type': 'array', 'items': {'enum': ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'studio'], 'type': 'string'}, 'maxItems': 10, 'description': 'Exact room counts (OR). Allowed values only: "studio", "1", "2", …, "10" (strings, not numbers). Prefer over roomsMin/roomsMax for "1–2 rooms": ["1","2"] or ["studio","1"].'}, 'sortBy': {'enum': ['rank', 'price', 'squareMeters', 'createdAt', 'availableFrom'], 'type': 'string', 'description': 'Sort field (default rank). sortOrder is ignored when sortBy=rank. Cheaper first → price+asc; larger area → squareMeters+desc.'}, 'postCode': {'type': 'string', 'description': 'Exact Berlin post code (PLZ), e.g. 10115.'}, 'priceMax': {'type': 'number', 'minimum': 0, 'description': 'Maximum monthly price in EUR.'}, 'priceMin': {'type': 'number', 'minimum': 0, 'description': 'Minimum monthly price in EUR.'}, 'radiusKm': {'type': 'number', 'maximum': 25, 'minimum': 0.1, 'description': 'Search radius in km around lat/lng (min 0.1, max 25). Nearby mode — do not mix with areas.'}, 'roomType': {'enum': ['private', 'shared'], 'type': 'string', 'description': 'Room occupancy: private = one private bedroom in shared housing; shared = a bed in a shared bedroom. Omit to include both. housingType=room remains the broad backwards-compatible filter.'}, 'roomsMax': {'type': 'number', 'minimum': 0, 'description': 'Maximum rooms. Prefer rooms[] for exact OR lists.'}, 'roomsMin': {'type': 'number', 'minimum': 0, 'description': 'Minimum rooms (studio = 0). Prefer rooms[] for exact OR lists.'}, 'providers': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 10, 'description': 'Restrict to specific housing providers (ids from the providers catalog).'}, 'sortOrder': {'enum': ['asc', 'desc'], 'type': 'string', 'description': 'Sort direction (default desc). Ignored when sortBy=rank.'}, 'depositMax': {'type': 'number', 'minimum': 0, 'description': 'Maximum deposit (Kaution) in EUR.'}, 'amenityTags': {'type': 'array', 'items': {'type': 'string', 'minLength': 1}, 'maxItems': 10, 'description': 'Canonical amenity tags (AND). Backend filters listings that have ALL of these tags. Catalog (snake_case only): wifi, parking, bike_parking, wheelchair, dishwasher, washing_machine, dryer, elevator, balcony, desk, tv, oven, heating, furnished, fridge, microwave, cooktop, coffee_machine, iron, hair_dryer, closet, wardrobe, bed, bathtub, shower, garden, basement, air_conditioning, parking_street, workspace, fitness, concierge, laundry, pets_friendly. Do not invent aliases (wiFi, hasWifi, Waschmaschine).'}, 'availableTo': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Available until / not later than (YYYY-MM-DD).'}, 'bedroomsMin': {'type': 'number', 'minimum': 0, 'description': 'Minimum number of bedrooms (from provider extra data when available).'}, 'housingType': {'enum': ['room', 'apartment'], 'type': 'string', 'description': 'Type of housing. Studios map to apartment; room includes both private and shared rooms unless roomType narrows it.'}, 'petsAllowed': {'type': 'boolean', 'description': 'true = pets explicitly allowed.'}, 'availableFrom': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Available from / not earlier than (YYYY-MM-DD), e.g. "2026-08-01".'}, 'personsMaxMin': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Minimum capacity (personsMax). Use 2 for couples, 1 for solo — filters listings that can accommodate at least this many people.', 'exclusiveMinimum': 0}, 'noSchufaLikely': {'type': 'boolean', 'description': 'true = Schufa likely not required (broader). Prefer for "without Schufa".'}, 'schufaRequired': {'type': 'boolean', 'description': 'true = Schufa required.'}, 'smokingAllowed': {'type': 'boolean', 'description': 'false = non-smokers only / smoking not allowed.'}, 'anmeldungLikely': {'type': 'boolean', 'description': 'true = Anmeldung likely (broader). Prefer for "with Anmeldung" unless the user needs a hard guarantee.'}, 'squareMetersMax': {'type': 'number', 'minimum': 0, 'description': 'Maximum living area in m².'}, 'squareMetersMin': {'type': 'number', 'minimum': 0, 'description': 'Minimum living area in m². "from 40 m²" → 40. Filter on the backend — do not paginate to drop small listings.'}, 'noSchufaRequired': {'type': 'boolean', 'description': 'true = Schufa explicitly not required (strict).'}, 'studentsFriendly': {'type': 'boolean', 'description': 'true = student-oriented housing (broader).'}, 'onlyStudentsAllowed': {'type': 'boolean', 'description': 'true = students-only listings.'}, 'registrationPossible': {'type': 'boolean', 'description': 'true = Anmeldung / registration explicitly possible (strict).'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['listings', 'pagination'], 'properties': {'listings': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'title'], 'properties': {'id': {'type': 'number'}, 'area': {'type': 'string'}, 'floor': {'type': 'string'}, 'price': {'type': 'number'}, 'rooms': {'type': ['number', 'string']}, 'title': {'type': 'string'}, 'images': {'type': 'array', 'items': {'type': 'object', 'required': ['url'], 'properties': {'alt': {'type': 'string'}, 'url': {'type': 'string'}, 'width': {'type': 'number'}, 'height': {'type': 'number'}, 'thumbnailUrl': {'type': 'string'}}, 'additionalProperties': False}}, 'labels': {'type': 'array', 'items': {'type': 'string'}}, 'maxAge': {'type': 'number'}, 'minAge': {'type': 'number'}, 'deposit': {'type': 'number'}, 'bedrooms': {'type': 'number'}, 'location': {'type': 'string'}, 'postCode': {'type': 'string'}, 'provider': {'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'string'}, 'logoUrl': {'type': 'string'}}, 'additionalProperties': False}, 'roomType': {'enum': ['private', 'shared'], 'type': 'string'}, 'bathrooms': {'type': 'number'}, 'furnished': {'type': 'string'}, 'noDeposit': {'type': 'boolean'}, 'detailsUrl': {'type': 'string'}, 'personsMax': {'type': 'number'}, 'amenityTags': {'type': 'array', 'items': {'type': 'string'}}, 'availableTo': {'type': 'string'}, 'housingType': {'type': 'string'}, 'petsAllowed': {'type': 'boolean'}, 'trackingUrl': {'type': 'string'}, 'partyAllowed': {'type': 'boolean'}, 'availableFrom': {'type': 'string'}, 'maxStayMonths': {'type': 'number'}, 'minStayMonths': {'type': 'number'}, 'couplesAllowed': {'type': 'boolean'}, 'noSchufaLikely': {'type': 'boolean'}, 'priceFormatted': {'type': 'string'}, 'schufaRequired': {'type': 'boolean'}, 'smokingAllowed': {'type': 'boolean'}, 'anmeldungLikely': {'type': 'boolean'}, 'childrenAllowed': {'type': 'boolean'}, 'preferredGender': {'type': 'string'}, 'propertySubtype': {'type': 'string'}, 'amenitiesUnknown': {'type': 'array', 'items': {'type': 'string'}}, 'areaSquareMeters': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'depositFormatted': {'type': 'string'}, 'noSchufaRequired': {'type': 'boolean'}, 'studentsFriendly': {'type': 'boolean'}, 'guarantorRequired': {'type': 'boolean'}, 'buildingAmenityTags': {'type': 'array', 'items': {'type': 'string'}}, 'onlyStudentsAllowed': {'type': 'boolean'}, 'registrationPossible': {'type': 'boolean'}, 'buildingAmenitiesUnknown': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'pagination': {'type': 'object', 'required': ['page', 'limit', 'total', 'totalPages'], 'properties': {'page': {'type': 'number'}, 'limit': {'type': 'number'}, 'total': {'type': 'number'}, 'totalPages': {'type': 'number'}}, 'additionalProperties': False}}, 'additionalProperties': False}
Ajouté
remove_saved_listing
2 October 2026 02:40
Ajouté
save_listing
2 October 2026 02:40
Ajouté
list_saved_listings
2 October 2026 02:40
Ajouté
delete_alert
2 October 2026 02:40
Ajouté
create_alert
2 October 2026 02:40
Ajouté
list_alerts
2 October 2026 02:40
Ajouté
render_listings_widget
2 October 2026 02:40
Ajouté
list_areas
2 October 2026 02:40
Ajouté
compare_listings
2 October 2026 02:40
Ajouté
get_listing
2 October 2026 02:40
Ajouté
search_listings
2 October 2026 02:40

US Company Intelligence for AI Agents (SEC EDGAR, x402)

online.x-402/mcp

Offers pay-per-call web extraction, search and LLM tools plus French company, property, procurement, marketplace and security dat…

The Mine Works

com.themineworks/the-mine-works

Aggregates web research tools for company intelligence, leads, recruiting, social and review data, public records, jobs, securiti…

Subastech — subastas judiciales de inmuebles (BOE)

com.subastech/subastas-judiciales

Searches and analyzes Spanish BOE judicial real-estate auctions, with property details, viability reports, alerts, market statist…

Fless Apartment Hunt

io.fless/mcp

Provides apartment-hunting research for the DC, Maryland, and Virginia region, including neighborhood rents, amenities, and pre-f…

Zoning Signal

com.zoningsignal/observatory

Provides searchable and citable US municipal zoning intelligence covering places, corridors, meetings, entities, patterns, and fo…

SPACEXPLORATION

com.spacexploration/listings

Searches and manages commercial real-estate listings, saved searches, property attributes, media, geocoding, and custom-domain li…

Jacob Campbell — Florida Real Estate (The Keyes Company)

com.jacobcampbellrealtor/jacobcampbellrealtor

Provides Florida real estate market figures, MLS search access, referral information, service areas and site content for a specif…

ONR: Mapa do Registro de Imóveis

io.github.mcp-dir/onr_mapa_registro_imoveis-mcp

Queries the official ONR map and property registry information sources in Brazil.