Déstaire
A curated guide to exceptional hotels and private stays, with editorial content and city guides.
使うべきか
品質と安全性
ツール定義とプロトコルへの準拠に関する自動分析に基づいています。
コンテキストコスト
これは、サーバーのツールがモデルのコンテキストに読み込まれるたびに消費されるおおよそのトークン数です。数が多いほど、ほかのタスクに使える注意が減ります。
インストール
ワンクリックインストール
これを `claude_desktop_config.json` ファイルに追加してください:
{
"mcpServers": {
"destaire": {
"url": "https://destaire.com/mcp"
}
}
}リモートエンドポイント
https://destaire.com/mcpstreamable-httpできること
ツール一覧
ツール(9)
🟢search_stays(query, country, destination, collection, amenities, ...)
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",
"properties": {
"query": {
"description": "What the reader wants, in plain words: \"quiet hotel on Lake Como with a spa\". Stays that match more words come first.",
"type": "string",
"maxLength": 200
},
"country": {
"description": "Only this country: a name or an ISO code, such as \"France\" or \"FR\".",
"type": "string",
"maxLength": 60
},
"destination": {
"description": "Only this destination: a name or a slug, such as \"Provence\".",
"type": "string",
"maxLength": 60
},
"collection": {
"description": "Only this collection: a name or a slug, such as \"Coast\". list_destinations lists them.",
"type": "string",
"maxLength": 60
},
"amenities": {
"description": "Only stays that have each of these, by word: \"spa\", \"pool\", \"beach\", \"tennis\".",
"maxItems": 5,
"type": "array",
"items": {
"type": "string",
"maxLength": 40
}
},
"max_rate": {
"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.",
"type": "number",
"exclusiveMinimum": 0
},
"sort": {
"default": "relevance",
"description": "\"relevance\" (best match first) or \"rate\" (lowest rate first).",
"type": "string",
"enum": [
"relevance",
"rate"
]
},
"limit": {
"default": 10,
"description": "The most stays to give.",
"type": "integer",
"minimum": 1,
"maximum": 50
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"stays": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"kind": {
"type": "string",
"enum": [
"hotel",
"private stay"
],
"description": "A hotel, or a private stay: a whole house or estate that one party rents."
},
"town": {
"type": "string"
},
"destination": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"slug": {
"type": "string"
}
},
"required": [
"name",
"url",
"slug"
],
"additionalProperties": {}
},
"country": {
"type": "string"
},
"lede": {
"type": "string"
},
"rate": {
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "As the site shows it: \"from €950/night\", or \"Price on request\"."
},
"amount": {
"description": "The \"from\" rate in euros, rounded to 10.",
"type": [
"number",
"null"
]
},
"currency": {
"anyOf": [
{
"type": "string",
"const": "EUR"
},
{
"type": "null"
}
]
},
"per": {
"anyOf": [
{
"type": "string",
"enum": [
"night",
"week"
]
},
{
"type": "null"
}
]
},
"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."
}
},
"required": [
"text",
"amount",
"currency",
"per",
"checked"
],
"additionalProperties": {},
"description": "The \"from\" rate: the lowest nightly price over the next six months, checked each week."
},
"photo": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
],
"description": "A card-size photo of the stay (3:2)."
}
},
"required": [
"name",
"slug",
"url",
"kind",
"town",
"destination",
"country",
"lede",
"rate",
"photo"
],
"additionalProperties": {}
}
},
"note": {
"type": "string"
}
},
"required": [
"total",
"stays"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢get_stay(slug)
One stay as its page shows it: description, address, location, website, "from" rate, amenities, collections, and photo URLs.
入力スキーマ
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"maxLength": 120,
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
"description": "The stay's slug, the last part of its URL."
}
},
"required": [
"slug"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"kind": {
"type": "string",
"enum": [
"hotel",
"private stay"
],
"description": "A hotel, or a private stay: a whole house or estate that one party rents."
},
"lede": {
"type": "string"
},
"description": {
"type": "string"
},
"town": {
"type": "string"
},
"destination": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
}
},
"required": [
"name",
"url"
],
"additionalProperties": {}
},
"country": {
"type": "string"
},
"address": {
"type": "string"
},
"location": {
"type": "object",
"properties": {
"latitude": {
"type": "number"
},
"longitude": {
"type": "number"
}
},
"required": [
"latitude",
"longitude"
],
"additionalProperties": {}
},
"website": {
"type": "string",
"format": "uri"
},
"rate": {
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "As the site shows it: \"from €950/night\", or \"Price on request\"."
},
"amount": {
"description": "The \"from\" rate in euros, rounded to 10.",
"type": [
"number",
"null"
]
},
"currency": {
"anyOf": [
{
"type": "string",
"const": "EUR"
},
{
"type": "null"
}
]
},
"per": {
"anyOf": [
{
"type": "string",
"enum": [
"night",
"week"
]
},
{
"type": "null"
}
]
},
"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."
}
},
"required": [
"text",
"amount",
"currency",
"per",
"checked"
],
"additionalProperties": {},
"description": "The \"from\" rate: the lowest nightly price over the next six months, checked each week."
},
"amenities": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
}
},
"required": [
"name",
"description"
],
"additionalProperties": {}
}
},
"collections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
}
},
"required": [
"name",
"url"
],
"additionalProperties": {}
}
},
"hero": {
"type": "string",
"format": "uri",
"description": "The main photo at 2:1."
},
"photos": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
}
}
},
"required": [
"name",
"url",
"kind",
"lede",
"description",
"town",
"destination",
"country",
"address",
"location",
"website",
"rate",
"amenities",
"collections",
"hero",
"photos"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢list_destinations(country)
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",
"properties": {
"country": {
"description": "Only this country: a name or an ISO code.",
"type": "string",
"maxLength": 60
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"countries": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"code": {
"type": "string"
},
"destinations": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"slug": {
"type": "string"
},
"stays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"name",
"url",
"slug",
"stays"
],
"additionalProperties": {}
}
}
},
"required": [
"name",
"url",
"code",
"destinations"
],
"additionalProperties": {}
}
},
"collections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"slug": {
"type": "string"
},
"stays": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
}
},
"required": [
"name",
"url",
"slug",
"stays"
],
"additionalProperties": {}
}
}
},
"required": [
"countries",
"collections"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢get_destination(slug, country, detail)
One destination and its stays: the first 10 and the total, or all of them with detail "full".
入力スキーマ
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"maxLength": 120,
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
"description": "The destination's slug, the last part of its URL."
},
"country": {
"description": "The country, when two destinations share a slug.",
"type": "string",
"maxLength": 60
},
"detail": {
"default": "concise",
"description": "\"concise\" (the default): the start of the answer and a count, to save context; \"full\": all of it.",
"type": "string",
"enum": [
"concise",
"full"
]
}
},
"required": [
"slug"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"country": {
"type": "string"
},
"total": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"stays": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"kind": {
"type": "string",
"enum": [
"hotel",
"private stay"
],
"description": "A hotel, or a private stay: a whole house or estate that one party rents."
},
"town": {
"type": "string"
},
"destination": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"slug": {
"type": "string"
}
},
"required": [
"name",
"url",
"slug"
],
"additionalProperties": {}
},
"country": {
"type": "string"
},
"lede": {
"type": "string"
},
"rate": {
"type": "object",
"properties": {
"text": {
"type": "string",
"description": "As the site shows it: \"from €950/night\", or \"Price on request\"."
},
"amount": {
"description": "The \"from\" rate in euros, rounded to 10.",
"type": [
"number",
"null"
]
},
"currency": {
"anyOf": [
{
"type": "string",
"const": "EUR"
},
{
"type": "null"
}
]
},
"per": {
"anyOf": [
{
"type": "string",
"enum": [
"night",
"week"
]
},
{
"type": "null"
}
]
},
"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."
}
},
"required": [
"text",
"amount",
"currency",
"per",
"checked"
],
"additionalProperties": {},
"description": "The \"from\" rate: the lowest nightly price over the next six months, checked each week."
},
"photo": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
],
"description": "A card-size photo of the stay (3:2)."
}
},
"required": [
"name",
"slug",
"url",
"kind",
"town",
"destination",
"country",
"lede",
"rate",
"photo"
],
"additionalProperties": {}
}
},
"note": {
"type": "string"
}
},
"required": [
"name",
"url",
"country",
"total",
"stays"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢list_articles(category, limit)
The travel writing, newest first: title, standfirst, author, category, date, and page URL.
入力スキーマ
{
"type": "object",
"properties": {
"category": {
"description": "Only this category.",
"type": "string",
"maxLength": 60
},
"limit": {
"default": 20,
"description": "The most articles to give.",
"type": "integer",
"minimum": 1,
"maximum": 100
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"total": {
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"articles": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"slug": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"standfirst": {
"type": "string"
},
"author": {
"type": "string"
},
"category": {
"type": "string"
},
"published": {
"type": "string"
}
},
"required": [
"title",
"slug",
"url",
"standfirst",
"author",
"category",
"published"
],
"additionalProperties": {}
}
}
},
"required": [
"total",
"articles"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢get_article(slug, detail)
One article: its opening paragraphs, or with detail "full" its whole text with every list of places.
入力スキーマ
{
"type": "object",
"properties": {
"slug": {
"type": "string",
"maxLength": 120,
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
"description": "The article's slug, the last part of its URL."
},
"detail": {
"default": "concise",
"description": "\"concise\" (the default): the start of the answer and a count, to save context; \"full\": all of it.",
"type": "string",
"enum": [
"concise",
"full"
]
}
},
"required": [
"slug"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"standfirst": {
"type": "string"
},
"author": {
"type": "string"
},
"category": {
"type": "string"
},
"published": {
"type": "string"
},
"photo": {
"type": "string",
"format": "uri"
},
"text": {
"type": "string"
},
"truncated": {
"type": "boolean"
},
"note": {
"type": "string"
}
},
"required": [
"title",
"url",
"standfirst",
"author",
"category",
"published",
"photo",
"text",
"truncated"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢list_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",
"properties": {
"guides": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"slug": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"city": {
"type": "string"
},
"country": {
"type": "string"
},
"standfirst": {
"type": "string"
},
"price": {
"type": "string"
}
},
"required": [
"title",
"slug",
"url",
"city",
"country",
"standfirst",
"price"
],
"additionalProperties": {}
}
}
},
"required": [
"guides"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}🟢get_guide(slug)
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",
"properties": {
"slug": {
"type": "string",
"maxLength": 120,
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
"description": "The guide's slug, the last part of its URL."
}
},
"required": [
"slug"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"city": {
"type": "string"
},
"country": {
"type": "string"
},
"standfirst": {
"type": "string"
},
"onSale": {
"type": "boolean"
},
"price": {
"type": "string"
},
"sections": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"text": {
"type": "string"
}
},
"required": [
"title",
"text"
],
"additionalProperties": {}
}
},
"cover": {
"type": "string",
"format": "uri",
"description": "The cover at 3:4."
},
"buyInChat": {
"type": "boolean",
"description": "True when buy_guide can buy this guide in this conversation."
},
"photos": {
"type": "array",
"items": {
"type": "string",
"format": "uri"
}
}
},
"required": [
"title",
"url",
"city",
"country",
"standfirst",
"onSale",
"price",
"sections",
"cover",
"buyInChat",
"photos"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}⚪buy_guide(slug, email)
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",
"properties": {
"slug": {
"type": "string",
"maxLength": 120,
"pattern": "^[a-z0-9]+(-[a-z0-9]+)*$",
"description": "The guide's slug, the last part of its URL."
},
"email": {
"type": "string",
"maxLength": 254,
"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,}$",
"description": "The user's email address: the guide goes to this Déstaire account."
}
},
"required": [
"slug",
"email"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}出力スキーマ
{
"type": "object",
"properties": {
"paymentLink": {
"type": "string",
"format": "uri"
},
"guide": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"url": {
"type": "string",
"format": "uri"
},
"city": {
"type": "string"
},
"country": {
"type": "string"
},
"cover": {
"anyOf": [
{
"type": "string",
"format": "uri"
},
{
"type": "null"
}
]
}
},
"required": [
"title",
"url",
"city",
"country",
"cover"
],
"additionalProperties": {}
},
"price": {
"type": "string"
},
"email": {
"type": "string"
},
"instructions": {
"type": "object",
"properties": {
"beforePaying": {
"type": "string"
},
"agent": {
"type": "string"
},
"afterPaying": {
"type": "string"
},
"browser": {
"type": "string"
}
},
"required": [
"beforePaying",
"agent",
"afterPaying",
"browser"
],
"additionalProperties": {}
}
},
"required": [
"paymentLink",
"guide",
"price",
"email",
"instructions"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": {}
}コミュニティ
エビデンス