MCP-Server

chucho — Book Direct

io.github.chucho-ai/chucho
Reisen & Hospitality Öffentlich und erreichbar MCP 2025-11-25

Was dieses MCP kann

Finds published vacation rentals, provides property facts and photos, and opens direct host booking links without creating reservations or processing payments.

get_booking_link
Get host booking link
Get a currently published property’s confirmed host booking destination and structured reservation handoff. Open that URL to check dates, prices and terms, and complete booking with the host. This tool never creates a reservation or takes payment.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'locale': {'enum': ['en', 'es'], 'type': 'string', 'default': 'en'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['propertyId', 'propertyName', 'bookingUrl', 'bookingProvider', 'bookingStatus', 'reservationCreated', 'instructions', 'action'], 'properties': {'action': {'type': 'object', 'required': ['@type', 'name', 'target'], 'properties': {'name': {'type': 'string'}, '@type': {'type': 'string', 'const': 'ReserveAction'}, 'target': {'type': 'object', 'required': ['@type', 'urlTemplate', 'actionPlatform'], 'properties': {'@type': {'type': 'string', 'const': 'EntryPoint'}, 'urlTemplate': {'type': 'string', 'format': 'uri'}, 'actionPlatform': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'bookingUrl': {'type': 'string', 'format': 'uri'}, 'propertyId': {'type': 'string'}, 'instructions': {'type': 'string'}, 'propertyName': {'type': 'string'}, 'bookingStatus': {'type': 'string', 'const': 'requires_host_confirmation'}, 'bookingProvider': {'type': 'string', 'const': 'host'}, 'reservationCreated': {'type': 'boolean', 'const': False}}, 'additionalProperties': False}
get_filters
Discover public filters
Discover current coverage and supported exact place/area keys when the destination is ambiguous. Not needed for searches with city, region or country text.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'properties': {'locale': {'enum': ['en', 'es'], 'type': 'string', 'default': 'en'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['total', 'places', 'features', 'amenities', 'pool'], 'properties': {'pool': {'type': 'array', 'items': {'type': 'string'}}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'places': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'fullLabel', 'kind', 'countryCode', 'parentKey', 'center', 'count'], 'properties': {'key': {'type': 'string'}, 'kind': {'enum': ['country', 'region', 'locality'], 'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'label': {'type': 'string'}, 'center': {'anyOf': [{'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'fullLabel': {'type': 'string'}, 'parentKey': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'countryCode': {'type': 'string'}}, 'additionalProperties': False}}, 'features': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'count'], 'properties': {'key': {'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'label': {'type': 'string'}}, 'additionalProperties': False}}, 'amenities': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'count'], 'properties': {'key': {'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': False}}}, 'additionalProperties': False}
get_property
Read public property facts
Read a currently published property's approved facts and host booking link. Unpublished properties return 404 immediately.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'locale': {'enum': ['en', 'es'], 'type': 'string', 'default': 'en'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['id', 'slug', 'name', 'city', 'region', 'country', 'location', 'facts', 'photos', 'offerings', 'bookingUrl', 'canonicalUrl', 'markdownUrl', 'updatedAt', 'revision', 'theme'], 'properties': {'id': {'type': 'string'}, 'city': {'type': 'string'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'facts': {'type': 'object', 'required': ['rooms', 'amenities', 'photos', 'faq'], 'properties': {'faq': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'question', 'answer'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'answer': {'type': 'object', 'required': ['en'], 'properties': {'en': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'es': {'type': 'string', 'maxLength': 4000}}, 'additionalProperties': False}, 'question': {'type': 'object', 'required': ['en'], 'properties': {'en': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'es': {'type': 'string', 'maxLength': 4000}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'default': [], 'maxItems': 50}, 'beds': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'host': {'type': 'object', 'required': ['name', 'languages'], 'properties': {'name': {'type': 'string', 'maxLength': 160}, 'languages': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160}, 'default': [], 'maxItems': 10}, 'description': {'type': 'object', 'required': ['en'], 'properties': {'en': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'es': {'type': 'string', 'maxLength': 4000}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'pool': {'type': 'object', 'required': ['present'], 'properties': {'detail': {'type': 'object', 'required': ['en'], 'properties': {'en': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'es': {'type': 'string', 'maxLength': 4000}}, 'additionalProperties': False}, 'fenced': {'type': 'boolean'}, 'heated': {'type': 'boolean'}, 'present': {'type': 'boolean'}, 'privacy': {'enum': ['private', 'shared'], 'type': 'string'}}, 'additionalProperties': False}, 'rooms': {'type': 'array', 'items': {'type': 'object', 'required': ['name'], 'properties': {'beds': {'type': 'integer', 'maximum': 20, 'minimum': 0}, 'name': {'type': 'object', 'required': ['en'], 'properties': {'en': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'es': {'type': 'string', 'maxLength': 4000}}, 'additionalProperties': False}, 'bathroom': {'type': 'boolean'}, 'bedDescription': {'type': 'object', 'required': ['en'], 'properties': {'en': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'es': {'type': 'string', 'maxLength': 4000}}, 'additionalProperties': False}, 'airConditioning': {'type': 'boolean'}}, 'additionalProperties': False}, 'default': [], 'maxItems': 50}, 'rules': {'type': 'object', 'required': ['en'], 'properties': {'en': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'es': {'type': 'string', 'maxLength': 4000}}, 'additionalProperties': False}, 'photos': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'caption'], 'properties': {'id': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}, 'group': {'type': 'string', 'maxLength': 160}, 'caption': {'type': 'object', 'required': ['en'], 'properties': {'en': {'type': 'string', 'maxLength': 4000}, 'es': {'type': 'string', 'maxLength': 4000}}, 'additionalProperties': False}, 'publicListing': {'type': 'boolean'}}, 'additionalProperties': False}, 'default': [], 'maxItems': 40}, 'bedrooms': {'type': 'integer', 'maximum': 50, 'minimum': 0}, 'capacity': {'type': 'integer', 'maximum': 100, 'minimum': 1}, 'amenities': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'present'], 'properties': {'key': {'enum': ['air-conditioning', 'wifi', 'workspace', 'parking', 'pets', 'kitchen', 'washer', 'step-free'], 'type': 'string'}, 'detail': {'type': 'object', 'required': ['en'], 'properties': {'en': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'es': {'type': 'string', 'maxLength': 4000}}, 'additionalProperties': False}, 'present': {'type': 'boolean'}}, 'additionalProperties': False}, 'default': [], 'maxItems': 20}, 'bathrooms': {'type': 'number', 'maximum': 50, 'minimum': 0, 'multipleOf': 0.5}, 'constraint': {'type': 'object', 'required': ['en'], 'properties': {'en': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'es': {'type': 'string', 'maxLength': 4000}}, 'additionalProperties': False}, 'checkinTime': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$'}, 'description': {'type': 'object', 'required': ['en'], 'properties': {'en': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'es': {'type': 'string', 'maxLength': 4000}}, 'additionalProperties': False}, 'positioning': {'type': 'object', 'required': ['en'], 'properties': {'en': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'es': {'type': 'string', 'maxLength': 4000}}, 'additionalProperties': False}, 'checkoutTime': {'type': 'string', 'pattern': '^([01]\\d|2[0-3]):[0-5]\\d$'}, 'connectivity': {'type': 'object', 'properties': {'claim': {'type': 'object', 'required': ['en'], 'properties': {'en': {'type': 'string', 'maxLength': 4000, 'minLength': 1}, 'es': {'type': 'string', 'maxLength': 4000}}, 'additionalProperties': False}, 'measuredAt': {'type': 'string', 'format': 'date', 'pattern': '^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$'}, 'downloadMbps': {'type': 'number', 'maximum': 10000, 'exclusiveMinimum': 0}}, 'additionalProperties': False}, 'localContent': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160}, 'maxItems': 40}}, 'additionalProperties': False}, 'theme': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'photos': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'url', 'caption'], 'properties': {'id': {'type': 'string'}, 'url': {'type': 'string'}, 'group': {'type': 'string'}, 'caption': {'type': 'object', 'required': ['en'], 'properties': {'en': {'type': 'string'}, 'es': {'type': 'string'}}, 'additionalProperties': False}, 'publicListing': {'type': 'boolean'}}, 'additionalProperties': False}}, 'region': {'type': 'string'}, 'country': {'type': 'string'}, 'location': {'type': 'object', 'required': ['countryCode', 'revision', 'places'], 'properties': {'places': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'kind', 'countryCode', 'parentKey', 'label', 'labelEs', 'fullLabel', 'fullLabelEs', 'center'], 'properties': {'key': {'type': 'string'}, 'kind': {'enum': ['country', 'region', 'locality'], 'type': 'string'}, 'label': {'type': 'string'}, 'center': {'anyOf': [{'type': 'object', 'required': ['lat', 'lng'], 'properties': {'lat': {'type': 'number'}, 'lng': {'type': 'number'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'labelEs': {'type': 'string'}, 'fullLabel': {'type': 'string'}, 'parentKey': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}, 'countryCode': {'type': 'string'}, 'fullLabelEs': {'type': 'string'}}, 'additionalProperties': False}}, 'revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'countryCode': {'anyOf': [{'type': 'string'}, {'type': 'null'}]}}, 'additionalProperties': False}, 'revision': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'offerings': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'description', 'source'], 'properties': {'id': {'type': 'string'}, 'name': {'type': 'object', 'required': ['en'], 'properties': {'en': {'type': 'string'}, 'es': {'type': 'string'}}, 'additionalProperties': False}, 'source': {'enum': ['activity', 'restaurant', 'grocery', 'offer'], 'type': 'string'}, 'imageUrl': {'type': 'string'}, 'description': {'type': 'object', 'required': ['en'], 'properties': {'en': {'type': 'string'}, 'es': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'updatedAt': {'type': 'string'}, 'bookingUrl': {'type': 'string'}, 'markdownUrl': {'type': 'string'}, 'canonicalUrl': {'type': 'string'}}, 'additionalProperties': False}
get_stay_areas
Find public stay areas
Find named public areas with published chucho homes. Search a destination's town, region or country. Use the exact returned area key for nearby search. These are public locality centers, never property coordinates; unmapped homes remain searchable with search_properties.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'properties': {'q': {'type': 'string', 'default': '', 'maxLength': 160, 'description': 'Public destination name to look up; empty lists current named stay areas.'}, 'locale': {'enum': ['en', 'es'], 'type': 'string', 'default': 'en'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['areas', 'total', 'truncated'], 'properties': {'areas': {'type': 'array', 'items': {'type': 'object', 'required': ['key', 'label', 'count'], 'properties': {'key': {'type': 'string'}, 'count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'label': {'type': 'string'}}, 'additionalProperties': False}}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}
open_explorer
Explore homes
Open the published vacation-home browser in ChatGPT. Search by destination, guests and amenities, inspect photos and save homes to the conversation shortlist.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'properties': {'q': {'type': 'string', 'default': '', 'maxLength': 160, 'description': 'Search public property names, locations and approved introduction text.'}, 'city': {'type': 'string', 'default': '', 'maxLength': 160}, 'page': {'type': 'integer', 'default': 1, 'maximum': 1000, 'minimum': 1}, 'pool': {'enum': ['', 'present', 'private', 'shared', 'absent'], 'type': 'string', 'default': ''}, 'place': {'type': 'string', 'default': '', 'maxLength': 240, 'description': 'Place key from the live filter catalog.'}, 'guests': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Minimum sleeping capacity.'}, 'locale': {'enum': ['en', 'es'], 'type': 'string', 'default': 'en'}, 'region': {'type': 'string', 'default': '', 'maxLength': 160}, 'country': {'type': 'string', 'default': '', 'maxLength': 160}, 'feature': {'enum': ['', 'private-pools', 'room-for-4', 'room-for-6', 'room-for-8', 'room-for-10', '2-bedrooms', '3-bedrooms', '4-bedrooms', 'pets', 'air-conditioning', 'workspace', 'step-free'], 'type': 'string', 'default': '', 'description': 'Collection key from the filter catalog.'}, 'amenities': {'type': 'string', 'default': '', 'maxLength': 240, 'description': 'Comma-separated amenity keys; every requested amenity must be explicitly present.'}, 'minBedrooms': {'type': 'integer', 'maximum': 50, 'minimum': 1}, 'minBathrooms': {'type': 'number', 'maximum': 50, 'minimum': 0.5, 'multipleOf': 0.5}}, 'additionalProperties': False}
open_shortlist
Your shortlist
Open the conversation’s shortlist beside the chat. Saved public property IDs are kept in app model context and refreshed before display.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'properties': {'q': {'type': 'string', 'default': '', 'maxLength': 160, 'description': 'Search public property names, locations and approved introduction text.'}, 'city': {'type': 'string', 'default': '', 'maxLength': 160}, 'page': {'type': 'integer', 'default': 1, 'maximum': 1000, 'minimum': 1}, 'pool': {'enum': ['', 'present', 'private', 'shared', 'absent'], 'type': 'string', 'default': ''}, 'place': {'type': 'string', 'default': '', 'maxLength': 240, 'description': 'Place key from the live filter catalog.'}, 'guests': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Minimum sleeping capacity.'}, 'locale': {'enum': ['en', 'es'], 'type': 'string', 'default': 'en'}, 'region': {'type': 'string', 'default': '', 'maxLength': 160}, 'country': {'type': 'string', 'default': '', 'maxLength': 160}, 'feature': {'enum': ['', 'private-pools', 'room-for-4', 'room-for-6', 'room-for-8', 'room-for-10', '2-bedrooms', '3-bedrooms', '4-bedrooms', 'pets', 'air-conditioning', 'workspace', 'step-free'], 'type': 'string', 'default': '', 'description': 'Collection key from the filter catalog.'}, 'amenities': {'type': 'string', 'default': '', 'maxLength': 240, 'description': 'Comma-separated amenity keys; every requested amenity must be explicitly present.'}, 'minBedrooms': {'type': 'integer', 'maximum': 50, 'minimum': 1}, 'minBathrooms': {'type': 'number', 'maximum': 50, 'minimum': 0.5, 'multipleOf': 0.5}}, 'additionalProperties': False}
record_property_event
Record anonymous property interaction
For the property-card UI only: record a property view or successful outbound host-link action. Accepts only a public property ID, a temporary random session UUID, event type and language. Never send conversation text, contacts or URLs. This does not book a stay.
Eingabeschema
{'type': 'object', 'required': ['id', 'type', 'sessionId', 'locale'], 'properties': {'id': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'type': {'enum': ['public_property_opened', 'public_booking_referral'], 'type': 'string'}, 'locale': {'enum': ['en', 'es'], 'type': 'string'}, 'sessionId': {'type': 'string', 'format': 'uuid', 'pattern': '^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['accepted'], 'properties': {'accepted': {'type': 'boolean'}}, 'additionalProperties': False}
render_properties
Show vacation homes
Use this when the traveler wants photos or a comparison of homes already found by search_properties. Show one to six matching IDs as cards with Details and host booking links. Rechecks publication. Do not repeat the full cards in prose. Prices and availability are checked on the host website.
Nur Lesen Externer Zugriff Idempotent
Eingabeschema
{'type': 'object', 'required': ['ids'], 'properties': {'ids': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 6, 'minItems': 1}, 'locale': {'enum': ['en', 'es'], 'type': 'string', 'default': 'en'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['properties', 'locale'], 'properties': {'locale': {'enum': ['en', 'es'], 'type': 'string'}, 'missingIds': {'type': 'array', 'items': {'type': 'string'}}, 'properties': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'place'], 'properties': {'id': {'type': 'string'}, 'beds': {'type': 'number'}, 'name': {'type': 'string'}, 'pool': {'type': 'object', 'required': ['present'], 'properties': {'present': {'type': 'boolean'}, 'privacy': {'enum': ['private', 'shared'], 'type': 'string'}}, 'additionalProperties': False}, 'place': {'type': 'string'}, 'bedrooms': {'type': 'number'}, 'capacity': {'type': 'number'}, 'bathrooms': {'type': 'number'}, 'areaDistanceKm': {'type': 'number'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
search_nearby_properties
Find nearby vacation homes
Find published homes near an exact get_stay_areas key, with guest, bedroom, pool and amenity filters. Distances are approximate between public locality centers, not home locations or driving times. Choose the area using destination evidence or ask the traveler; never invent a key. No live rates or availability. Show returned homes as cards.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['nearArea'], 'properties': {'page': {'type': 'integer', 'default': 1, 'maximum': 1000, 'minimum': 1}, 'pool': {'enum': ['', 'present', 'private', 'shared', 'absent'], 'type': 'string', 'default': ''}, 'guests': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Minimum sleeping capacity.'}, 'locale': {'enum': ['en', 'es'], 'type': 'string', 'default': 'en'}, 'feature': {'enum': ['', 'private-pools', 'room-for-4', 'room-for-6', 'room-for-8', 'room-for-10', '2-bedrooms', '3-bedrooms', '4-bedrooms', 'pets', 'air-conditioning', 'workspace', 'step-free'], 'type': 'string', 'default': '', 'description': 'Collection key from the filter catalog.'}, 'nearArea': {'type': 'string', 'maxLength': 240, 'minLength': 1, 'description': 'Exact public stay-area key from get_stay_areas; never invent a key or coordinates.'}, 'radiusKm': {'type': 'number', 'default': 30, 'maximum': 100, 'minimum': 1, 'description': 'Maximum approximate straight-line distance between public area centers, not home GPS or driving distance.'}, 'amenities': {'type': 'string', 'default': '', 'maxLength': 240, 'description': 'Comma-separated amenity keys; every requested amenity must be explicitly present.'}, 'minBedrooms': {'type': 'integer', 'maximum': 50, 'minimum': 1}, 'minBathrooms': {'type': 'number', 'maximum': 50, 'minimum': 0.5, 'multipleOf': 0.5}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['total', 'page', 'pageSize', 'nextPage', 'area', 'radiusKm', 'distanceBasis', 'properties', 'locale'], 'properties': {'area': {'type': 'object', 'required': ['key', 'label'], 'properties': {'key': {'type': 'string'}, 'label': {'type': 'string'}}, 'additionalProperties': False}, 'page': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'locale': {'enum': ['en', 'es'], 'type': 'string'}, 'nextPage': {'anyOf': [{'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, {'type': 'null'}]}, 'pageSize': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'radiusKm': {'type': 'number'}, 'properties': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'place'], 'properties': {'id': {'type': 'string'}, 'beds': {'type': 'number'}, 'name': {'type': 'string'}, 'pool': {'type': 'object', 'required': ['present'], 'properties': {'present': {'type': 'boolean'}, 'privacy': {'enum': ['private', 'shared'], 'type': 'string'}}, 'additionalProperties': False}, 'place': {'type': 'string'}, 'bedrooms': {'type': 'number'}, 'capacity': {'type': 'number'}, 'bathrooms': {'type': 'number'}, 'areaDistanceKm': {'type': 'number'}}, 'additionalProperties': False}}, 'distanceBasis': {'type': 'string'}}, 'additionalProperties': False}
search_properties
Find vacation homes
Find vacation rentals, holiday homes and places to stay. Search immediately with free-text city, region or country and guest/pool/amenity needs; use get_filters only for ambiguous destinations or exact place/area keys. Shows photos and host booking buttons automatically. Returns approved facts, never rates or availability. Never ask for check-in/check-out dates, stay length or nightly budget; ignore offered dates/budget as filters and search the supported needs now.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'properties': {'q': {'type': 'string', 'default': '', 'maxLength': 160, 'description': 'Search public property names, locations and approved introduction text.'}, 'city': {'type': 'string', 'default': '', 'maxLength': 160}, 'page': {'type': 'integer', 'default': 1, 'maximum': 1000, 'minimum': 1}, 'pool': {'enum': ['', 'present', 'private', 'shared', 'absent'], 'type': 'string', 'default': ''}, 'place': {'type': 'string', 'default': '', 'maxLength': 240, 'description': 'Place key from the live filter catalog.'}, 'guests': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Minimum sleeping capacity.'}, 'locale': {'enum': ['en', 'es'], 'type': 'string', 'default': 'en'}, 'region': {'type': 'string', 'default': '', 'maxLength': 160}, 'country': {'type': 'string', 'default': '', 'maxLength': 160}, 'feature': {'enum': ['', 'private-pools', 'room-for-4', 'room-for-6', 'room-for-8', 'room-for-10', '2-bedrooms', '3-bedrooms', '4-bedrooms', 'pets', 'air-conditioning', 'workspace', 'step-free'], 'type': 'string', 'default': '', 'description': 'Collection key from the filter catalog.'}, 'amenities': {'type': 'string', 'default': '', 'maxLength': 240, 'description': 'Comma-separated amenity keys; every requested amenity must be explicitly present.'}, 'minBedrooms': {'type': 'integer', 'maximum': 50, 'minimum': 1}, 'minBathrooms': {'type': 'number', 'maximum': 50, 'minimum': 0.5, 'multipleOf': 0.5}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'required': ['properties', 'locale', 'total', 'page', 'pageSize', 'nextPage'], 'properties': {'page': {'type': 'number'}, 'total': {'type': 'number'}, 'locale': {'enum': ['en', 'es'], 'type': 'string'}, 'nextPage': {'anyOf': [{'type': 'number'}, {'type': 'null'}]}, 'pageSize': {'type': 'number'}, 'missingIds': {'type': 'array', 'items': {'type': 'string'}}, 'properties': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'place'], 'properties': {'id': {'type': 'string'}, 'beds': {'type': 'number'}, 'name': {'type': 'string'}, 'pool': {'type': 'object', 'required': ['present'], 'properties': {'present': {'type': 'boolean'}, 'privacy': {'enum': ['private', 'shared'], 'type': 'string'}}, 'additionalProperties': False}, 'place': {'type': 'string'}, 'bedrooms': {'type': 'number'}, 'capacity': {'type': 'number'}, 'bathrooms': {'type': 'number'}, 'areaDistanceKm': {'type': 'number'}}, 'additionalProperties': False}}}, 'additionalProperties': False}
search_property_mentions
Mention a home
Search published property names and destinations for the composer’s property picker. Returns public property references only.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'maxLength': 160}}, 'additionalProperties': False}
Hinzugefügt
search_nearby_properties
4. October 2026 02:40
Hinzugefügt
get_stay_areas
4. October 2026 02:40
Hinzugefügt
search_property_mentions
4. October 2026 02:40
Hinzugefügt
open_shortlist
4. October 2026 02:40
Hinzugefügt
open_explorer
4. October 2026 02:40
Hinzugefügt
record_property_event
4. October 2026 02:40
Hinzugefügt
render_properties
4. October 2026 02:40
Hinzugefügt
get_property
4. October 2026 02:40
Hinzugefügt
search_properties
4. October 2026 02:40
Hinzugefügt
get_filters
4. October 2026 02:40
Hinzugefügt
get_booking_link
4. October 2026 02:40