Bookd
Server Details
Search and request stays at independent hotels, B&Bs, guesthouses and vacation rentals, direct.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 6 tools
Each tool targets a distinct action and resource: search_stays finds properties, check_availability checks one property's live availability, get_property returns details, request_booking creates a request, booking_status reads status, and cancel_booking cancels. The descriptions clearly differentiate search_stays from check_availability despite both dealing with availability.
Five tools follow a verb_noun pattern (search_stays, check_availability, get_property, request_booking, cancel_booking), but booking_status deviates as a noun phrase. The snake_case convention is consistent across all names.
With 6 tools, the set is well-scoped for a booking platform, covering the essential flow from discovery to cancellation without redundancy or bloat. Each tool earns its place.
The surface covers the core booking lifecycle: search, inspect, check availability, request, check status, and cancel. Minor gaps exist for modifying an existing booking or listing a guest's bookings, but the main workflows are fully supported.
Available Tools
6 toolsbooking_statusBooking statusARead-onlyIdempotentInspect
Read-only. Status of a Bookd booking by its booking_id (e.g. BKD-AB12CD3): requested, accepted, declined, expired or cancelled, with dates, room and price. Returns no guest personal data.
| Name | Required | Description | Default |
|---|---|---|---|
| booking_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly, idempotent and non-destructive, so the description only needs to add what they cannot. It does: the full status enum, the fields returned (dates, room, price), and the explicit privacy guarantee that no guest personal data is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the safety qualifier 'Read-only' and then the identifying parameter, then the return payload. No filler, every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so fully: status enum, accompanying fields, and the explicit absence of personal data. An agent has everything needed to call and interpret the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it supplies a concrete ID format example (BKD-AB12CD3) that the schema lacks beyond type string/maxLength 20. It does not explain the ID's origin or validation failure behavior, keeping it short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: read the status of a Bookd booking from its booking_id. It also enumerates the possible status values, which pins down exactly what 'status' means and separates it from cancel_booking and request_booking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied (look up a booking's current state by ID) but the description never states when to prefer this over siblings such as cancel_booking, nor any precondition like having a booking_id in hand. No alternatives or exclusions are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cancel_bookingCancel a bookingADestructiveIdempotentInspect
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 emails the property and the guest.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| booking_id | Yes | ||
| guest_email | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag destructiveHint=true and idempotentHint=true, and the description adds substantial context beyond them: confirm=false is a true no-op dry run, confirm=true is irreversible, and it details the side effects (card hold release, refund via the property's own Stripe account, date release, emails to both parties). This is exactly the behavioral detail an agent needs before an irreversible action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight sentences, front-loaded with the action and then the safety protocol, followed by side effects. No filler; every sentence carries operational meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent what confirm=false returns (the refund under the property's policy) and what confirm=true does across every affected system, which is sufficient to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate, and it does for 'confirm' — explaining both modes and the default-false preview behavior — and confirms booking_id/guest_email are needed. It does not explain formats or where to obtain the booking_id (maxLength 20), a minor remaining gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Cancel a Bookd booking for the guest') and clearly distinguishes itself from siblings like booking_status and request_booking. The scope (guest-side cancellation) is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Prescribes an explicit two-step protocol: call with confirm=false first to preview the refund, then call with confirm=true only after the guest explicitly agrees. It also gates when cancellation should happen at all, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_availabilityCheck availabilityARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Property slug, e.g. "seaview-house-doolin" | |
| guests | No | ||
| check_in | Yes | YYYY-MM-DD | |
| check_out | Yes | YYYY-MM-DD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the opening "Read-only" is largely redundant. What earns credit is behavior annotations do not cover: it re-reads the owner's calendars on each call and holds nothing, and it discloses the response contents (room/unit prices, totals with cleaning fee and taxes, cancellation policy, deposit due).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One front-loaded sentence that leads with the safety profile and then the payload; every clause carries information. It is a dense run-on list of return fields, but nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by enumerating what comes back, and the calendar re-read clarifies freshness. The main gap is the undocumented guests parameter and the absence of any hint about failure modes (unavailable dates, unknown slug).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, with slug, check_in and check_out each already described (including formats) in the schema. The description only restates "one property and dates" and says nothing about the guests parameter or its bounds, so it adds little beyond structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: live availability for one property across a date range, with the return contents enumerated (prices, totals, fees, cancellation policy, deposit). The clause "nothing is booked or held" implicitly separates it from request_booking, but no sibling is named outright, so an agent still has to infer the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: read-only plus "nothing is booked or held" signals this is the pre-booking quote step before request_booking, but the description never says when to prefer it over search_stays or get_property, nor that a slug must first be discovered elsewhere. Adequate but leaves routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_propertyGet a Bookd propertyARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Property slug, e.g. "seaview-house-doolin" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint/idempotentHint/destructiveHint, so 'Read-only' is mildly redundant, but the description adds genuinely useful behavioral detail: deposits are 'held by the property' and taxes and cancellation policy are part of the payload. No permission or failure-mode context is given, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the mode and the one-line purpose before the field inventory. The enumeration is long but earns its place because there is no output schema to describe the response, and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by listing the returned fields (type, photos, amenities, house rules, rooms/units, fees, taxes, cancellation, deposit), and it covers the single input's source. Missing only minor operational detail such as error behavior for an unknown slug.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (pattern plus example), so the baseline is 3, but the description adds origin semantics for the slug value — it comes from search_stays or a Bookd link — which the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (get) and a precisely scoped resource (one Bookd property, by slug), then enumerates the payload contents. It is clearly distinguishable from sibling search_stays, whose results feed the slug input.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells the agent where the slug originates ('from search_stays or a Bookd link'), which establishes the natural call sequence. It does not state when not to use it or name alternatives for other lookups, but the entry condition is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
request_bookingRequest a bookingADestructiveInspect
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). Side effects: sends the request to the property by email (the guest is emailed when the property answers) and holds the room until the owner answers or the request expires. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| room | No | Room name from check_availability; omit for the cheapest free room | |
| slug | Yes | Property slug, e.g. "seaview-house-doolin" | |
| guests | Yes | ||
| message | No | Note for the owner, e.g. arrival time | |
| check_in | Yes | YYYY-MM-DD | |
| check_out | Yes | YYYY-MM-DD | |
| guest_name | Yes | ||
| guest_email | Yes | ||
| guest_phone | No | ||
| creator_code | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond annotations (readOnlyHint=false, destructiveHint=true, idempotentHint=false) by naming the concrete side effects: email sent to the property, room held until the owner answers or the request expires, guest emailed on reply, and the payment semantics (card held, charged only on acceptance). It also explains why the call is non-idempotent and what to do instead, which annotations alone cannot convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and scope, and most sentences carry distinct information about side effects, idempotency and payment. Slight redundancy: the 'contract is directly between guest and property / Bookd is only the platform' point is repeated at the end as 'Bookd never handles guest money.'
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description supplies the return contract (booking_id, and payment_url when online payments are on), the side effects, the idempotency rule and the precondition set. For a 10-parameter mutating tool, that is sufficient for an agent to call it safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 60%, so the schema already documents slug, room, check_in/out, message and creator_code. The description only restates the confirmed inputs (room, dates, guests, name, email) without adding format, ordering or constraint detail for the remaining parameters such as guest_phone or the guests range.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb ('send a booking request') plus resource ('to the property ... for a room or unit and dates'), and it explicitly scopes the product role ('Bookd is only the booking platform'). An agent can distinguish this from check_availability (pre-check) and booking_status (post-check) without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit precondition: 'Only call after the guest has confirmed the room, dates, guests, and given their name and email.' It also routes the agent away from retrying toward booking_status. The one gap is that it never states the obvious upstream dependency on check_availability to obtain a valid room name, which is only implied by the schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_staysSearch stays on BookdARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Results page (see has_more / next_page) | |
| limit | No | Results per page | |
| stars | No | Minimum star rating (3, 4 or 5) for partner hotel links. Bookd properties have no star rating and are never hidden by it. | |
| guests | No | ||
| check_in | Yes | YYYY-MM-DD | |
| currency | No | 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 | No | Town, county/state or country, e.g. "Doolin", "County Clare", "Ireland", "UK", "North Carolina", "United States". Empty = everywhere. | |
| min_beds | No | ||
| check_out | Yes | YYYY-MM-DD | |
| max_price | No | Max price per room or unit per night. Bookd properties: in the property currency. Partner hotel links: in currency. | |
| min_price | No | Min price per room or unit per night. Bookd properties: in the property currency. Partner hotel links: in currency. | |
| whole_home | No | true = only whole homes (apartment, condo, house, villa, cabin, cottage, chalet) | |
| min_bedrooms | No | ||
| min_bathrooms | No | ||
| property_type | No | 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) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover readOnly/idempotent/openWorld/destructive, but the description adds rich behavior: availability rule ('only properties with a room or unit free for every night'), sort order ('cheapest first, exact town matches first'), pagination, full result field inventory, deposit handling, the partner fallback path, commission disclosure, and the fact that only location text is sent to Trip.com.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded correctly, but the body is a dense wall of clauses covering deposits, partner terms, and data-sharing that could be tightened. Sentences do carry real information, yet the sheer density hurts scannability for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 15-parameter tool with no output schema, the description compensates well by enumerating returned fields (nightly price, total_price, cancellation policy, room counts, deposits) and explaining the partner_results branch with pricing, stars and currency applied. Nothing essential for correct invocation seems missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 73%, so most parameters are documented in the schema itself (stars, currency, price filters, property_type, whole_home). The description reinforces currency/price semantics and sorting behavior tied to location matching, but adds little that the schema does not already convey, and says nothing about min_beds/min_bedrooms/min_bathrooms.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('Find independent stays bookable direct on Bookd'), enumerates the property types covered, and scopes it by location and dates. An agent can immediately distinguish this search tool from get_property, check_availability, or request_booking.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly frames the tool as read-only ('nothing is booked or held') and gives an explicit when-not rule for a sibling ('Never call request_booking for them' regarding partner hotels). It lacks explicit guidance on when to prefer this over check_availability or get_property, so it falls short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
- First observed
booking_status - First observed
cancel_booking - First observed
check_availability - First observed
get_property - First observed
request_booking - First observed
search_stays
Related MCP Connectors
Search and book verified independent vacation rentals directly from hosts, with no guest fees.
AI search of 70,000+ independent rentals, with every booking channel and the host's direct link.
Find and price independent hotels and inns in Japan, then book on the hotel's own site.
Search 650,000 hotels, get each hotel's direct price with full offer lists, match rooms, book.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables searching CuddlyNest hotels and retrieving listing details, including live room options, prices, availability, and cancellation policies.259 npm1MIT
- AlicenseAqualityAmaintenanceSearches hotels and vacation rentals with nightly and total rates, ratings, amenities, and detailed property information through natural language in any MCP client.195 npm46 PyPI2MIT
- AlicenseAqualityAmaintenanceVacation rental software. A signed stay offer on the host's own domain. Agents discover a host domain, verify an Ed25519-signed offer (VRP), and send the guest to that domain to book and pay the host. Do not compare hosts or prices. HemmaBo + VRP, 6 runtime tools: 2 HemmaBo tools, 2 host onboarding tools, and 2 VRP verification tools. Not an OTA. Not a marketplace.76556 npm3Apache 2.0
- AlicenseBqualityAmaintenanceOfficial MCP server for MAQAMI, a hotel and flight booking platform with 3M+ hotels. Search live hotel rates and flights, look up places, airports and hotel details, then prebook and book. Remote Streamable HTTP endpoint, no API key required.1241428 npm2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.