MCP 服务器

Déstaire

com.destaire/destaire
旅行与酒店 公开且可连接 MCP 2025-11-25

此 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.
可访问外部资源 幂等
输入模式
{'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."}}}
输出模式
{'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.
只读 幂等
输入模式
{'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.'}}}
输出模式
{'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".
只读 幂等
输入模式
{'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.'}}}
输出模式
{'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.
只读 幂等
输入模式
{'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."}}}
输出模式
{'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.
只读 幂等
输入模式
{'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."}}}
输出模式
{'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.
只读 幂等
输入模式
{'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.'}}}
输出模式
{'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.
只读 幂等
输入模式
{'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.'}}}
输出模式
{'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.
只读 幂等
输入模式
{'type': 'object', 'properties': {}}
输出模式
{'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.
只读 幂等
输入模式
{'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".'}}}
输出模式
{'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': {}}
已更改
buy_guide
2026年10月1日 02:42
已更改
get_guide
2026年10月1日 02:42
已更改
list_guides
2026年10月1日 02:42
已更改
get_article
2026年10月1日 02:42
已更改
list_articles
2026年10月1日 02:42
已更改
get_destination
2026年10月1日 02:42
已更改
list_destinations
2026年10月1日 02:42
已更改
get_stay
2026年10月1日 02:42
已更改
search_stays
2026年10月1日 02:42
已更改
buy_guide
2026年9月29日 02:48
已更改
get_guide
2026年9月29日 02:48
已更改
list_guides
2026年9月29日 02:48
已更改
get_article
2026年9月29日 02:48
已更改
list_articles
2026年9月29日 02:48
已更改
get_destination
2026年9月29日 02:48
已更改
list_destinations
2026年9月29日 02:48
已更改
get_stay
2026年9月29日 02:48
已更改
search_stays
2026年9月29日 02:48
已更改
buy_guide
2026年9月27日 02:40
已更改
get_guide
2026年9月27日 02:40
已更改
get_destination
2026年9月27日 02:40
已更改
get_stay
2026年9月27日 02:40
已更改
search_stays
2026年9月27日 02:40
已添加
buy_guide
2026年9月25日 02:40
已添加
get_guide
2026年9月25日 02:40
已添加
list_guides
2026年9月25日 02:40
已添加
get_article
2026年9月25日 02:40
已添加
list_articles
2026年9月25日 02:40
已添加
get_destination
2026年9月25日 02:40
已添加
list_destinations
2026年9月25日 02:40