Search and request stays at independent hotels, B&Bs, guesthouses and vacation rentals, direct.
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.
Read-only. Status of a Bookd booking by its booking_id (e.g. BKD-AB12CD3): requested, accepted (= confirmed, including instant bookings), declined, expired or cancelled, with dates, room and price. Returns no guest personal data.
Read-only. Status of a Bookd booking by its booking_id (e.g. BKD-AB12CD3): requested, accepted (= confirmed, including instant bookings), declined, expired or cancelled, with dates, room and price. Returns no guest personal data.
| Argument | Type | Description |
|---|---|---|
| booking_id* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"booking_id"
],
"properties": {
"booking_id": {
"type": "string",
"maxLength": 20
}
}
}Cancel a Bookd booking for the guest. First call with confirm=false to see the refund under the property's policy and tell the guest; only call with confirm=true after the guest explicitly agrees. Needs the booking_id and the email used to book. confirm=false changes nothing. confirm=true cancels for good (it cannot be undone): it releases any card hold or refunds under the policy on the property's own Stripe account, frees the dates (and cancels it in the property's booking system when it is connected), and emails the property and the guest.
| Argument | Type | Description |
|---|---|---|
| confirm | boolean | |
| booking_id* | string | |
| guest_email* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"booking_id",
"guest_email"
],
"properties": {
"confirm": {
"type": "boolean",
"default": false
},
"booking_id": {
"type": "string",
"maxLength": 20
},
"guest_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": 200
}
}
}Read-only. Live availability for one Bookd property and dates (re-reads the owner's calendars first; nothing is booked or held), with room/unit prices, totals including any cleaning fee and taxes, cancellation policy and any deposit due.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Property slug, e.g. "seaview-house-doolin" |
| guests | integer | |
| check_in* | string | YYYY-MM-DD |
| check_out* | string | YYYY-MM-DD |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug",
"check_in",
"check_out"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9-]{2,60}$",
"description": "Property slug, e.g. \"seaview-house-doolin\""
},
"guests": {
"type": "integer",
"default": 1,
"maximum": 20,
"minimum": 1
},
"check_in": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD"
},
"check_out": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD"
}
}
}Read-only. Full details of one Bookd property by its slug (from search_stays or a Bookd link): type, description, photos, amenities, house rules, check-in/out times, rooms or units (bedrooms, bathrooms, beds, cleaning fee) and prices from, taxes, cancellation policy and any damage deposit (held by the property).
| Argument | Type | Description |
|---|---|---|
| slug* | string | Property slug, e.g. "seaview-house-doolin" |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"pattern": "^[a-z0-9-]{2,60}$",
"description": "Property slug, e.g. \"seaview-house-doolin\""
}
}
}Send a booking request to the property (hotel, B&B, guesthouse or vacation rental) for a room or unit and dates. The resulting stay contract is directly between the guest and the property; Bookd is only the booking platform. Only call after the guest has confirmed the room, dates, guests, and given their name and email. Returns a booking_id and, when online payments are on, a payment_url for the deposit (card held, charged only if the owner accepts). Usually status is "requested": the request is emailed to the property (the guest is emailed when it answers) and the room is held until the owner answers or the request expires. Instant booking: for properties with instant_booking=true, Bookd checks the room live in the property's own booking system; if it is available, the booking is made there at once and status is "confirmed" (with the booking_id; the guest and property are emailed). With a deposit, the reply has instant_booking=true and a payment_url, and the booking is confirmed as soon as the deposit is paid (check booking_status). If the live check or write fails it stays a normal request; if the room was just taken, an error says nothing was booked. Only tell the guest it is confirmed when status is "confirmed". Not idempotent: each call creates a new request, so do not retry after a booking_id is returned (use booking_status). The guest pays the property directly; Bookd never handles guest money.
| Argument | Type | Description |
|---|---|---|
| room | string | Room name from check_availability; omit for the cheapest free room |
| slug* | string | Property slug, e.g. "seaview-house-doolin" |
| guests* | integer | |
| message |
Find independent stays bookable direct on Bookd (hotels, B&Bs, guesthouses, apartments, houses, villas, cabins) for a location and dates. Read-only: nothing is booked or held. Bookd properties come first: only properties with a room or unit free for every night are returned, cheapest first (exact town matches first), paginated. Each result has nightly price, total_price (incl. any cleaning fee and taxes), cancellation policy, bedrooms/bathrooms/beds for whole homes, any information-only damage deposit held by the property, and any deposit due (only when the property takes card deposits; otherwise the guest pays the property directly). If no Bookd property matches a location, the result has partner_results instead: links to partner hotels (accommodation only) on Trip.com and a Stay22 map for that place, dates and guests, with min_price, max_price, stars and currency applied. Partner hotels are not Bookd properties: the guest books and pays on Trip.com or the partner site, under that site's terms, and Bookd may earn a commission. Never call request_booking for them. Finding the partner city sends only the location text to Trip.com.
| Argument | Type | Description |
|---|---|---|
| page | integer | Results page (see has_more / next_page) |
| limit | integer | Results per page |
| stars | integer | Minimum star rating (3, 4 or 5) for partner hotel links. Bookd properties have no star rating and are never hidden by it. |
| guests | integer | |
| check_in* | string |
| string |
| Note for the owner, e.g. arrival time |
| check_in* | string | YYYY-MM-DD |
| check_out* | string | YYYY-MM-DD |
| guest_name* | string |
| guest_email* | string |
| guest_phone | string |
| creator_code | string | Optional: a creator or promo code the guest mentions (e.g. from a video). Only pass one the guest gave you; never invent or suggest one. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug",
"check_in",
"check_out",
"guests",
"guest_name",
"guest_email"
],
"properties": {
"room": {
"type": "string",
"maxLength": 100,
"description": "Room name from check_availability; omit for the cheapest free room"
},
"slug": {
"type": "string",
"pattern": "^[a-z0-9-]{2,60}$",
"description": "Property slug, e.g. \"seaview-house-doolin\""
},
"guests": {
"type": "integer",
"maximum": 20,
"minimum": 1
},
"message": {
"type": "string",
"maxLength": 1000,
"description": "Note for the owner, e.g. arrival time"
},
"check_in": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD"
},
"check_out": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD"
},
"guest_name": {
"type": "string",
"maxLength": 120,
"minLength": 1
},
"guest_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": 200
},
"guest_phone": {
"type": "string",
"maxLength": 40
},
"creator_code": {
"type": "string",
"maxLength": 40,
"description": "Optional: a creator or promo code the guest mentions (e.g. from a video). Only pass one the guest gave you; never invent or suggest one."
}
}
}| YYYY-MM-DD |
| currency | string | Currency for partner hotel links and their price filter. Default: local currency of the place (EUR in the euro area, GBP in the UK, else USD). |
| location | string | Town, county/state or country, e.g. "Doolin", "County Clare", "Ireland", "UK", "North Carolina", "United States". Empty = everywhere. |
| min_beds | integer |
| check_out* | string | YYYY-MM-DD |
| max_price | number | Max price per room or unit per night. Bookd properties: in the property currency. Partner hotel links: in currency. |
| min_price | number | Min price per room or unit per night. Bookd properties: in the property currency. Partner hotel links: in currency. |
| whole_home | boolean | true = only whole homes (apartment, condo, house, villa, cabin, cottage, chalet) |
| min_bedrooms | integer |
| min_bathrooms | number |
| property_type | any | Filter by type: hotel, bnb, guesthouse, inn, hostel, motel, lodge, apartment, condo, house, villa, cabin, cottage, chalet, other ("B&B" and "vacation rental" are understood) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"check_in",
"check_out"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 100,
"minimum": 1,
"description": "Results page (see has_more / next_page)"
},
"limit": {
"type": "integer",
"default": 10,
"maximum": 25,
"minimum": 1,
"description": "Results per page"
},
"stars": {
"type": "integer",
"maximum": 5,
"minimum": 3,
"description": "Minimum star rating (3, 4 or 5) for partner hotel links. Bookd properties have no star rating and are never hidden by it."
},
"guests": {
"type": "integer",
"default": 2,
"maximum": 20,
"minimum": 1
},
"check_in": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD"
},
"currency": {
"enum": [
"USD",
"EUR",
"GBP"
],
"type": "string",
"description": "Currency for partner hotel links and their price filter. Default: local currency of the place (EUR in the euro area, GBP in the UK, else USD)."
},
"location": {
"type": "string",
"maxLength": 100,
"description": "Town, county/state or country, e.g. \"Doolin\", \"County Clare\", \"Ireland\", \"UK\", \"North Carolina\", \"United States\". Empty = everywhere."
},
"min_beds": {
"type": "integer",
"maximum": 100,
"minimum": 0
},
"check_out": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "YYYY-MM-DD"
},
"max_price": {
"type": "number",
"maximum": 10000,
"description": "Max price per room or unit per night. Bookd properties: in the property currency. Partner hotel links: in currency.",
"exclusiveMinimum": 0
},
"min_price": {
"type": "number",
"maximum": 10000,
"description": "Min price per room or unit per night. Bookd properties: in the property currency. Partner hotel links: in currency.",
"exclusiveMinimum": 0
},
"whole_home": {
"type": "boolean",
"description": "true = only whole homes (apartment, condo, house, villa, cabin, cottage, chalet)"
},
"min_bedrooms": {
"type": "integer",
"maximum": 50,
"minimum": 0
},
"min_bathrooms": {
"type": "number",
"maximum": 50,
"minimum": 0
},
"property_type": {
"anyOf": [
{
"type": "string",
"maxLength": 40
},
{
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 10
}
],
"description": "Filter by type: hotel, bnb, guesthouse, inn, hostel, motel, lodge, apartment, condo, house, villa, cabin, cottage, chalet, other (\"B&B\" and \"vacation rental\" are understood)"
}
}
}