Servidor MCP

Déstaire

com.destaire/destaire
Viajes y hospitalidad Público y accesible MCP 2025-11-25

Qué hace este MCP

Searches and provides information about luxury hotels, private stays, travel articles, destinations, and city guides in Europe, with paid guide purchasing.

buy_guide
Buy a city guide
Buy a city guide for the user, paid inside this conversation. Gives a pay link that takes an MPP payment (a Stripe Shared Payment Token from your wallet, such as Link). Confirm the user's email first: the guide goes to that account, and the purchase is final.
Acceso externo Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['slug', 'email'], 'properties': {'slug': {'type': 'string', 'pattern': '^[a-z0-9]+(-[a-z0-9]+)*$', 'maxLength': 120, 'description': "The guide's slug, the last part of its URL."}, 'email': {'type': 'string', 'format': 'email', 'pattern': "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$", 'maxLength': 254, 'description': "The user's email address: the guide goes to this Déstaire account."}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['paymentLink', 'guide', 'price', 'email', 'instructions'], 'properties': {'email': {'type': 'string'}, 'guide': {'type': 'object', 'required': ['title', 'url', 'city', 'country', 'cover'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'city': {'type': 'string'}, 'cover': {'anyOf': [{'type': 'string', 'format': 'uri'}, {'type': 'null'}]}, 'title': {'type': 'string'}, 'country': {'type': 'string'}}, 'additionalProperties': {}}, 'price': {'type': 'string'}, 'paymentLink': {'type': 'string', 'format': 'uri'}, 'instructions': {'type': 'object', 'required': ['beforePaying', 'agent', 'afterPaying', 'browser'], 'properties': {'agent': {'type': 'string'}, 'browser': {'type': 'string'}, 'afterPaying': {'type': 'string'}, 'beforePaying': {'type': 'string'}}, 'additionalProperties': {}}}, 'additionalProperties': {}}
get_article
Get an article
One article: its opening paragraphs, or with detail "full" its whole text with every list of places.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'pattern': '^[a-z0-9]+(-[a-z0-9]+)*$', 'maxLength': 120, 'description': "The article's slug, the last part of its URL."}, 'detail': {'enum': ['concise', 'full'], 'type': 'string', 'default': 'concise', 'description': '"concise" (the default): the start of the answer and a count, to save context; "full": all of it.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['title', 'url', 'standfirst', 'author', 'category', 'published', 'photo', 'text', 'truncated'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'note': {'type': 'string'}, 'text': {'type': 'string'}, 'photo': {'type': 'string', 'format': 'uri'}, 'title': {'type': 'string'}, 'author': {'type': 'string'}, 'category': {'type': 'string'}, 'published': {'type': 'string'}, 'truncated': {'type': 'boolean'}, 'standfirst': {'type': 'string'}}, 'additionalProperties': {}}
get_destination
Get a destination
One destination and its stays: the first 10 and the total, or all of them with detail "full".
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'pattern': '^[a-z0-9]+(-[a-z0-9]+)*$', 'maxLength': 120, 'description': "The destination's slug, the last part of its URL."}, 'detail': {'enum': ['concise', 'full'], 'type': 'string', 'default': 'concise', 'description': '"concise" (the default): the start of the answer and a count, to save context; "full": all of it.'}, 'country': {'type': 'string', 'maxLength': 60, 'description': 'The country, when two destinations share a slug.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name', 'url', 'country', 'total', 'stays'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'name': {'type': 'string'}, 'note': {'type': 'string'}, 'stays': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'slug', 'url', 'kind', 'town', 'destination', 'country', 'lede', 'rate', 'photo'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'kind': {'enum': ['hotel', 'private stay'], 'type': 'string', 'description': 'A hotel, or a private stay: a whole house or estate that one party rents.'}, 'lede': {'type': 'string'}, 'name': {'type': 'string'}, 'rate': {'type': 'object', 'required': ['text', 'amount', 'currency', 'per', 'checked'], 'properties': {'per': {'anyOf': [{'enum': ['night', 'week'], 'type': 'string'}, {'type': 'null'}]}, 'text': {'type': 'string', 'description': 'As the site shows it: "from â\x82¬950/night", or "Price on request".'}, 'amount': {'type': ['number', 'null'], 'description': 'The "from" rate in euros, rounded to 10.'}, 'checked': {'anyOf': [{'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])))$'}, {'type': 'null'}], 'description': "The day the rate was last read on the hotel's own booking engine (YYYY-MM-DD). Null when no date is recorded."}, 'currency': {'anyOf': [{'type': 'string', 'const': 'EUR'}, {'type': 'null'}]}}, 'description': 'The "from" rate: the lowest nightly price over the next six months, checked each week.', 'additionalProperties': {}}, 'slug': {'type': 'string'}, 'town': {'type': 'string'}, 'photo': {'anyOf': [{'type': 'string', 'format': 'uri'}, {'type': 'null'}], 'description': 'A card-size photo of the stay (3:2).'}, 'country': {'type': 'string'}, 'destination': {'type': 'object', 'required': ['name', 'url', 'slug'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}}, 'additionalProperties': {}}}, 'additionalProperties': {}}}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'country': {'type': 'string'}}, 'additionalProperties': {}}
get_guide
Get a city guide
One city guide's public shop page: its standfirst, what it holds, its price, and photo URLs. The guide itself is sold on its page.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'pattern': '^[a-z0-9]+(-[a-z0-9]+)*$', 'maxLength': 120, 'description': "The guide's slug, the last part of its URL."}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['title', 'url', 'city', 'country', 'standfirst', 'onSale', 'price', 'sections', 'cover', 'buyInChat', 'photos'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'city': {'type': 'string'}, 'cover': {'type': 'string', 'format': 'uri', 'description': 'The cover at 4:5.'}, 'price': {'type': 'string'}, 'title': {'type': 'string'}, 'onSale': {'type': 'boolean'}, 'photos': {'type': 'array', 'items': {'type': 'string', 'format': 'uri'}}, 'country': {'type': 'string'}, 'sections': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'text'], 'properties': {'text': {'type': 'string'}, 'title': {'type': 'string'}}, 'additionalProperties': {}}}, 'buyInChat': {'type': 'boolean', 'description': 'True when buy_guide can buy this guide in this conversation.'}, 'standfirst': {'type': 'string'}}, 'additionalProperties': {}}
get_stay
Get a stay
One stay as its page shows it: description, address, location, website, "from" rate, amenities, collections, and photo URLs.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'pattern': '^[a-z0-9]+(-[a-z0-9]+)*$', 'maxLength': 120, 'description': "The stay's slug, the last part of its URL."}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name', 'url', 'kind', 'lede', 'description', 'town', 'destination', 'country', 'address', 'location', 'website', 'rate', 'amenities', 'collections', 'hero', 'photos'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'hero': {'type': 'string', 'format': 'uri', 'description': 'The main photo at 2:1.'}, 'kind': {'enum': ['hotel', 'private stay'], 'type': 'string', 'description': 'A hotel, or a private stay: a whole house or estate that one party rents.'}, 'lede': {'type': 'string'}, 'name': {'type': 'string'}, 'rate': {'type': 'object', 'required': ['text', 'amount', 'currency', 'per', 'checked'], 'properties': {'per': {'anyOf': [{'enum': ['night', 'week'], 'type': 'string'}, {'type': 'null'}]}, 'text': {'type': 'string', 'description': 'As the site shows it: "from â\x82¬950/night", or "Price on request".'}, 'amount': {'type': ['number', 'null'], 'description': 'The "from" rate in euros, rounded to 10.'}, 'checked': {'anyOf': [{'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])))$'}, {'type': 'null'}], 'description': "The day the rate was last read on the hotel's own booking engine (YYYY-MM-DD). Null when no date is recorded."}, 'currency': {'anyOf': [{'type': 'string', 'const': 'EUR'}, {'type': 'null'}]}}, 'description': 'The "from" rate: the lowest nightly price over the next six months, checked each week.', 'additionalProperties': {}}, 'town': {'type': 'string'}, 'photos': {'type': 'array', 'items': {'type': 'string', 'format': 'uri'}}, 'address': {'type': 'string'}, 'country': {'type': 'string'}, 'website': {'type': 'string', 'format': 'uri'}, 'location': {'type': 'object', 'required': ['latitude', 'longitude'], 'properties': {'latitude': {'type': 'number'}, 'longitude': {'type': 'number'}}, 'additionalProperties': {}}, 'amenities': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'description'], 'properties': {'name': {'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': {}}}, 'collections': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'name': {'type': 'string'}}, 'additionalProperties': {}}}, 'description': {'type': 'string'}, 'destination': {'type': 'object', 'required': ['name', 'url'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'name': {'type': 'string'}}, 'additionalProperties': {}}}, 'additionalProperties': {}}
list_articles
List articles
The travel writing, newest first: title, standfirst, author, category, date, and page URL.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'The most articles to give.'}, 'category': {'type': 'string', 'maxLength': 60, 'description': 'Only this category.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['total', 'articles'], 'properties': {'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}, 'articles': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'slug', 'url', 'standfirst', 'author', 'category', 'published'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'slug': {'type': 'string'}, 'title': {'type': 'string'}, 'author': {'type': 'string'}, 'category': {'type': 'string'}, 'published': {'type': 'string'}, 'standfirst': {'type': 'string'}}, 'additionalProperties': {}}}}, 'additionalProperties': {}}
list_destinations
List destinations and collections
The countries and destinations that have stays, and the collections (Coast, City, Mountain…), each with its number of stays. Their names and slugs are the filters of search_stays.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'country': {'type': 'string', 'maxLength': 60, 'description': 'Only this country: a name or an ISO code.'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['countries', 'collections'], 'properties': {'countries': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'url', 'code', 'destinations'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'code': {'type': 'string'}, 'name': {'type': 'string'}, 'destinations': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'url', 'slug', 'stays'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'stays': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': {}}}}, 'additionalProperties': {}}}, 'collections': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'url', 'slug', 'stays'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}, 'stays': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': {}}}}, 'additionalProperties': {}}
list_guides
List city guides
The city guides on sale: city, standfirst, price, and the URL of the page where a reader can buy the guide.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', 'properties': {}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['guides'], 'properties': {'guides': {'type': 'array', 'items': {'type': 'object', 'required': ['title', 'slug', 'url', 'city', 'country', 'standfirst', 'price'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'city': {'type': 'string'}, 'slug': {'type': 'string'}, 'price': {'type': 'string'}, 'title': {'type': 'string'}, 'country': {'type': 'string'}, 'standfirst': {'type': 'string'}}, 'additionalProperties': {}}}}, 'additionalProperties': {}}
search_stays
Search stays
Find hotels and private stays by plain words, with optional filters for country, destination, collection, amenities, and a nightly budget in euros. Best matches first. Gives each stay's page URL, place, short description, and "from" rate.
Solo lectura Idempotente
Esquema de entrada
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'sort': {'enum': ['relevance', 'rate'], 'type': 'string', 'default': 'relevance', 'description': '"relevance" (best match first) or "rate" (lowest rate first).'}, 'limit': {'type': 'integer', 'default': 10, 'maximum': 50, 'minimum': 1, 'description': 'The most stays to give.'}, 'query': {'type': 'string', 'maxLength': 200, 'description': 'What the reader wants, in plain words: "quiet hotel on Lake Como with a spa". Stays that match more words come first.'}, 'country': {'type': 'string', 'maxLength': 60, 'description': 'Only this country: a name or an ISO code, such as "France" or "FR".'}, 'max_rate': {'type': 'number', 'description': 'Only stays whose "from" rate is at most this many euros a night (a week rate counts a seventh). Stays with no rate are left out.', 'exclusiveMinimum': 0}, 'amenities': {'type': 'array', 'items': {'type': 'string', 'maxLength': 40}, 'maxItems': 5, 'description': 'Only stays that have each of these, by word: "spa", "pool", "beach", "tennis".'}, 'collection': {'type': 'string', 'maxLength': 60, 'description': 'Only this collection: a name or a slug, such as "Coast". list_destinations lists them.'}, 'destination': {'type': 'string', 'maxLength': 60, 'description': 'Only this destination: a name or a slug, such as "Provence".'}}}
Esquema de salida
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['total', 'stays'], 'properties': {'note': {'type': 'string'}, 'stays': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'slug', 'url', 'kind', 'town', 'destination', 'country', 'lede', 'rate', 'photo'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'kind': {'enum': ['hotel', 'private stay'], 'type': 'string', 'description': 'A hotel, or a private stay: a whole house or estate that one party rents.'}, 'lede': {'type': 'string'}, 'name': {'type': 'string'}, 'rate': {'type': 'object', 'required': ['text', 'amount', 'currency', 'per', 'checked'], 'properties': {'per': {'anyOf': [{'enum': ['night', 'week'], 'type': 'string'}, {'type': 'null'}]}, 'text': {'type': 'string', 'description': 'As the site shows it: "from â\x82¬950/night", or "Price on request".'}, 'amount': {'type': ['number', 'null'], 'description': 'The "from" rate in euros, rounded to 10.'}, 'checked': {'anyOf': [{'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])))$'}, {'type': 'null'}], 'description': "The day the rate was last read on the hotel's own booking engine (YYYY-MM-DD). Null when no date is recorded."}, 'currency': {'anyOf': [{'type': 'string', 'const': 'EUR'}, {'type': 'null'}]}}, 'description': 'The "from" rate: the lowest nightly price over the next six months, checked each week.', 'additionalProperties': {}}, 'slug': {'type': 'string'}, 'town': {'type': 'string'}, 'photo': {'anyOf': [{'type': 'string', 'format': 'uri'}, {'type': 'null'}], 'description': 'A card-size photo of the stay (3:2).'}, 'country': {'type': 'string'}, 'destination': {'type': 'object', 'required': ['name', 'url', 'slug'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'name': {'type': 'string'}, 'slug': {'type': 'string'}}, 'additionalProperties': {}}}, 'additionalProperties': {}}}, 'total': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991}}, 'additionalProperties': {}}
Modificado
buy_guide
1 de October de 2026 a las 02:42
Modificado
get_guide
1 de October de 2026 a las 02:42
Modificado
list_guides
1 de October de 2026 a las 02:42
Modificado
get_article
1 de October de 2026 a las 02:42
Modificado
list_articles
1 de October de 2026 a las 02:42
Modificado
get_destination
1 de October de 2026 a las 02:42
Modificado
list_destinations
1 de October de 2026 a las 02:42
Modificado
get_stay
1 de October de 2026 a las 02:42
Modificado
search_stays
1 de October de 2026 a las 02:42
Modificado
buy_guide
29 de September de 2026 a las 02:48
Modificado
get_guide
29 de September de 2026 a las 02:48
Modificado
list_guides
29 de September de 2026 a las 02:48
Modificado
get_article
29 de September de 2026 a las 02:48
Modificado
list_articles
29 de September de 2026 a las 02:48
Modificado
get_destination
29 de September de 2026 a las 02:48
Modificado
list_destinations
29 de September de 2026 a las 02:48
Modificado
get_stay
29 de September de 2026 a las 02:48
Modificado
search_stays
29 de September de 2026 a las 02:48
Modificado
buy_guide
27 de September de 2026 a las 02:40
Modificado
get_guide
27 de September de 2026 a las 02:40
Modificado
get_destination
27 de September de 2026 a las 02:40
Modificado
get_stay
27 de September de 2026 a las 02:40
Modificado
search_stays
27 de September de 2026 a las 02:40
Añadido
buy_guide
25 de September de 2026 a las 02:40
Añadido
get_guide
25 de September de 2026 a las 02:40
Añadido
list_guides
25 de September de 2026 a las 02:40
Añadido
get_article
25 de September de 2026 a las 02:40
Añadido
list_articles
25 de September de 2026 a las 02:40
Añadido
get_destination
25 de September de 2026 a las 02:40
Añadido
list_destinations
25 de September de 2026 a las 02:40