A curated guide to exceptional hotels and private stays, with editorial content and city guides.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
The guide's slug, the last part of its URL.
The user's email address: the guide goes to this Déstaire account.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The guide's slug, the last part of its URL. |
| email* | string | 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": [
"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."
}
}
}One article: its opening paragraphs, or with detail "full" its whole text with every list of places.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The article's slug, the last part of its URL. |
| detail | string | "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": [
"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."
}
}
}One destination and its stays: the first 10 and the total, or all of them with detail "full".
| Argument | Type | Description |
|---|---|---|
| slug* | string | The destination's slug, the last part of its URL. |
| detail | string | "concise" (the default): the start of the answer and a count, to save context; "full": all of it. |
| country | string | The country, when two destinations share a slug. |
{
"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."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The guide's slug, the last part of its URL. |
{
"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."
}
}
}One stay as its page shows it: description, address, location, website, "from" rate, amenities, collections, and photo URLs.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The stay's slug, the last part of its URL. |
{
"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."
}
}
}The travel writing, newest first: title, standfirst, author, category, date, and page URL.
| Argument | Type | Description |
|---|---|---|
| limit | integer | The most articles to give. |
| category | string | Only this category. |
{
"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."
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| country | string | Only this country: a name or an ISO code. |
{
"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."
}
}
}The city guides on sale: city, standfirst, price, and the URL of the page where a reader can buy the guide.
No arguments.
{
"type": "object",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| sort | string | "relevance" (best match first) or "rate" (lowest rate first). |
| limit | integer | The most stays to give. |
| query | string | What the reader wants, in plain words: "quiet hotel on Lake Como with a spa". Stays that match more words come first. |
| country | string | Only this country: a name or an ISO code, such as "France" or "FR". |
| max_rate | number | 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. |
| amenities | array | Only stays that have each of these, by word: "spa", "pool", "beach", "tennis". |
| collection | string | Only this collection: a name or a slug, such as "Coast". list_destinations lists them. |
| destination | string |
| Only this destination: a name or a slug, such as "Provence". |
{
"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\"."
}
}
}