MCP server for Airbnb - let AI agents search listings, check availability, manage reservations, and book stays
Server has 14 tools with complete schemas and descriptions. Naming follows verb_noun convention (airbnb_search, airbnb_book, etc.). Descriptions are present and contextual (avg ~120 chars), meeting baseline minimums. However, critical gaps exist: (1) No output schemas documented for any tool, LLMs cannot predict response structure or chain calls; (2) airbnb_book and airbnb_cancel_reservation lack proper confirmation/dry-run patterns despite being IRREVERSIBLE/DESTRUCTIVE; (3) Error handling is absent, no recovery guidance, no actionable error messages; (4) airbnb_message_host has ambiguous parameter logic (either reservationId OR listingId required, but schema shows both optional); (5) No pagination support on search/list tools despite potential for large result sets. Descriptions are functional but lack dependency hints and prerequisites.
Book an Airbnb listing. IMPORTANT: Set confirm=true only when you have explicit user confirmation. Without confirm=true, returns a price preview instead of booking.
Cancel an Airbnb reservation. IMPORTANT: Set confirm=true only with explicit user confirmation. Cancellation policies vary — always check refund terms first.
Check whether an Airbnb listing is available for specific dates.
Get detailed information about an Airbnb listing by its ID or URL. Returns title, price, amenities, host info, and house rules.
Get full price breakdown for a listing including nightly rate, cleaning fee, service fee, taxes, and total.
View upcoming or past Airbnb reservations. Requires being logged in.
No output schemas documented for any tool. LLMs cannot predict response structure, field names, or types. This breaks tool chaining and forces agents to guess what data is available.
airbnb_book and airbnb_cancel_reservation are IRREVERSIBLE/DESTRUCTIVE but lack proper dry-run or multi-step confirmation. Description warns about confirm=true but provides no recovery path if agent makes a mistake.
airbnb_message_host has ambiguous parameter logic: description says 'Provide either a reservationId OR listingId' but schema shows both as optional with no required array. LLMs may pass neither or both, causing silent failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Get reviews for an Airbnb listing.
View all saved listings and wishlists. Requires being logged in.
Initiate Airbnb login flow. Returns a URL and instructions for the user to complete login manually. After logging in, use airbnb_status to verify.
Clear saved Airbnb session and cookies. Use this to log out or reset authentication state.
Send a message to an Airbnb host. Provide either a reservationId (for existing bookings) or a listingId (for pre-booking inquiries).
Save an Airbnb listing to your wishlist. Requires being logged in.
Search Airbnb listings by location, dates, and guest count. Returns listing titles, prices, ratings, and URLs.
Check Airbnb login status and session info. Use this to verify authentication before performing other actions.
No error handling guidance. Tools provide no recovery hints, error classification, or actionable messages. If a search fails or booking is rejected, the agent has no path forward.
airbnb_search lacks pagination support (no limit/offset/cursor parameters visible). Large result sets will blow context window; no guidance on max results returned.