Servidor MCP

chucho — Book Direct

io.github.chucho-ai/chucho
Viajes y hospitalidad Público y accesible MCP 2025-11-25

Qué hace este MCP

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.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'locale': {'enum': ['en', 'es'], 'type': 'string', 'default': 'en'}}, 'additionalProperties': False}
Esquema de salida
{'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.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'properties': {'locale': {'enum': ['en', 'es'], 'type': 'string', 'default': 'en'}}, 'additionalProperties': False}
Esquema de salida
{'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.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'locale': {'enum': ['en', 'es'], 'type': 'string', 'default': 'en'}}, 'additionalProperties': False}
Esquema de salida
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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}
Esquema de salida
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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.
Esquema de entrada
{'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}
Esquema de salida
{'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.
Solo lectura Acceso externo Idempotente
Esquema de entrada
{'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}
Esquema de salida
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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}
Esquema de salida
{'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.
Solo lectura Idempotente
Esquema de entrada
{'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}
Esquema de salida
{'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.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'maxLength': 160}}, 'additionalProperties': False}
Añadido
search_nearby_properties
4 de October de 2026 a las 02:40
Añadido
get_stay_areas
4 de October de 2026 a las 02:40
Añadido
search_property_mentions
4 de October de 2026 a las 02:40
Añadido
open_shortlist
4 de October de 2026 a las 02:40
Añadido
open_explorer
4 de October de 2026 a las 02:40
Añadido
record_property_event
4 de October de 2026 a las 02:40
Añadido
render_properties
4 de October de 2026 a las 02:40
Añadido
get_property
4 de October de 2026 a las 02:40
Añadido
search_properties
4 de October de 2026 a las 02:40
Añadido
get_filters
4 de October de 2026 a las 02:40
Añadido
get_booking_link
4 de October de 2026 a las 02:40