Déstaire
A curated guide to exceptional hotels and private stays, with editorial content and city guides.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"destaire": {
"url": "https://destaire.com/mcp"
}
}
}Remote-Endpunkte
https://destaire.com/mcpstreamable-httpWas es kann
Tool-Inventar
Tools (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.
Eingabe-Schema
{
"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"
}Ausgabe-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.
Eingabe-Schema
{
"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"
}Ausgabe-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.
Eingabe-Schema
{
"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"
}Ausgabe-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".
Eingabe-Schema
{
"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"
}Ausgabe-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.
Eingabe-Schema
{
"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"
}Ausgabe-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.
Eingabe-Schema
{
"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"
}Ausgabe-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.
Eingabe-Schema
{
"type": "object",
"properties": {}
}Ausgabe-Schema
{
"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.
Eingabe-Schema
{
"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"
}Ausgabe-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.
Eingabe-Schema
{
"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"
}Ausgabe-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": {}
}Community
Nachweis