MCP-Server

Déstaire

com.destaire/destaire
Reisen & Hospitality Öffentlich und erreichbar MCP 2025-11-25

Was dieses MCP kann

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.
Externer Zugriff Idempotent
Eingabeschema
{'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."}}}
Ausgabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.'}}}
Ausgabeschema
{'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".
Nur Lesen Idempotent
Eingabeschema
{'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.'}}}
Ausgabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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."}}}
Ausgabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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."}}}
Ausgabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.'}}}
Ausgabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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.'}}}
Ausgabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'type': 'object', 'properties': {}}
Ausgabeschema
{'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.
Nur Lesen Idempotent
Eingabeschema
{'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".'}}}
Ausgabeschema
{'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': {}}
Geändert
buy_guide
1. October 2026 02:42
Geändert
get_guide
1. October 2026 02:42
Geändert
list_guides
1. October 2026 02:42
Geändert
get_article
1. October 2026 02:42
Geändert
list_articles
1. October 2026 02:42
Geändert
get_destination
1. October 2026 02:42
Geändert
list_destinations
1. October 2026 02:42
Geändert
get_stay
1. October 2026 02:42
Geändert
search_stays
1. October 2026 02:42
Geändert
buy_guide
29. September 2026 02:48
Geändert
get_guide
29. September 2026 02:48
Geändert
list_guides
29. September 2026 02:48
Geändert
get_article
29. September 2026 02:48
Geändert
list_articles
29. September 2026 02:48
Geändert
get_destination
29. September 2026 02:48
Geändert
list_destinations
29. September 2026 02:48
Geändert
get_stay
29. September 2026 02:48
Geändert
search_stays
29. September 2026 02:48
Geändert
buy_guide
27. September 2026 02:40
Geändert
get_guide
27. September 2026 02:40
Geändert
get_destination
27. September 2026 02:40
Geändert
get_stay
27. September 2026 02:40
Geändert
search_stays
27. September 2026 02:40
Hinzugefügt
buy_guide
25. September 2026 02:40
Hinzugefügt
get_guide
25. September 2026 02:40
Hinzugefügt
list_guides
25. September 2026 02:40
Hinzugefügt
get_article
25. September 2026 02:40
Hinzugefügt
list_articles
25. September 2026 02:40
Hinzugefügt
get_destination
25. September 2026 02:40
Hinzugefügt
list_destinations
25. September 2026 02:40