Booking Wolf connector for Muse

Booked a hotel on Booking.com, Agoda, Expedia, Hotels.com or Trip.com? Booking Wolf watches the price and rebooks the same room for less - you keep booking where you like. It can also find and book new stays. Endpoint: https://mcp.bookingwolf.com/muse/mcp (MCP over HTTP, JSON-RPC 2.0).

Setup and permissions

Tools

ToolClassNeedsInputOutputSide effects
search_hotelsReadNonedestination (required); country, checkin, checkout (YYYY-MM-DD), guests, currencyHotels with name, location, star rating, photo, price_estimate (a search estimate in the requested currency) and credit_back (first-booking credit) where offeredNone
get_hotel_ratesReadNonehotel_id, checkin, checkout (required); guests, currencyPublic prices on the major booking sites (competitors[].total) and the cheapest room actually bookable here (cheapest_bookable: room, meal, total, taxes, cancellation terms, rate_option_id). All amounts in the requested currencyNone
get_room_optionsReadNone (signed-in users see member prices)hotel_id, checkin, checkout (required); adults (default 2), child_ages, currency (default USD)Only rooms that can be booked here: meal, total price, which taxes are included or payable at the hotel (when the supplier does not say, a note that local city/tourist taxes may be payable at the hotel), refundable, free-cancellation deadline (hotel local time), rate_option_idNone
quote_bookingWriteConnected account with "Book and cancel for me"rate_option_id, guest namesquote_id and the approval summary: hotel, room, guests, dates, total, taxes, payment timing, cancellation terms, payment_method_on_file (+ add_card_url if no card is saved)Re-checks the live price with the hotel supplier and stores a quote valid for 15 minutes. Nothing is booked or charged.
book_hotelSensitive writeConnected account with "Book and cancel for me" + a saved cardquote_id, expected_total, currency (exactly as quoted); confirm_duplicate (only after the user confirms a second identical booking)state confirmed (with confirmation id) / pending / payment_in_progress / awaiting_bank_approval (link) / payment_uncertain / failed / expired / not_booked (incl. possible_duplicate)Charges the saved card the quoted total and books the room. Refused if the total or currency differs from the quote. One booking per quote; repeating the call never charges twice and returns the booking's current state.
list_my_bookingsReadConnected account (read only is enough)upcoming_onlyBookings in every state (incl. pending, awaiting bank approval, failed, refunded) with confirmation id, checkin / checkout, room, total paid, free-cancellation deadlineNone
get_bookingReadConnected account (read only is enough)booking_idOne booking with its current state, checkin / checkout (same names as the search inputs); confirmation_id is set only once the hotel has confirmed. A quote_id is reported as "not a booking"None
get_cancellation_termsReadConnected account (read only is enough)booking_idFee if cancelled now (null = not stated by the policy), free-until time, expected refundNone
cancel_bookingSensitive writeConnected account with "Book and cancel for me"booking_id, max_fee, currencystate cancelled (fee, refund amount, refund pending) / not_cancelled / uncertainCancels the booking with the hotel and starts the refund minus any fee. Refused if the current fee is above max_fee; when the fee is unknown the user must accept up to the full amount paid.
sync_my_hotel_bookingsReadConnected account (read only is enough)sites: one entry per booking site (booking / agoda / expedia / hotels_com / trip_com) with the URL and visible text of each page Muse read in its own browser - the trips page and each upcoming hotel booking's page (up to 11 per site); or status needs_login / bot_wallPer site: bookings read and how many are new, or what to do (sign in, robot check); then everything watched - live offers, rebooked stays, and for any original still to cancel: the site, booking number, link and free-cancellation deadline in hotel time (cancel_original)Reads the bookings out of the pages (only pages on that site are used) and adds them to the user's own watch list - the same booking sent twice is kept once - then prices new ones straight away. A page that shows an original booking cancelled marks it cancelled. Nothing is booked, charged or cancelled.
watch_hotel_bookingWriteConnected account with "Book and cancel for me"site (booking / agoda / expedia / hotels_com / trip_com), booking_reference, hotel_name, city, check_in, check_out, adults, room_name, meal, total_price, currency, free_cancellation_until (hotel local time); optional country, child_ages, manage_urlwatch_id, status, and any live offer right away (saving amount + %, our price, optional same-room-with-free-meal option, offer_id)Adds a booking the user holds on another site to their watch list and prices it now. We re-check every few hours and email the user when we can book the same room for less. Nothing is booked or charged.
list_rebook_offersReadConnected account (read only is enough)noneWatched bookings with live offers (saving amount and %, our price, free-meal option, offer_id, expiry), rebooked stays, and originals the user still has to cancelNone
approve_rebookSensitive writeConnected account with "Book and cancel for me" + a saved cardoffer_id, choice (same / free_meal), expected_total, currency (exactly as shown)state rebooked (confirmation id, amount charged, the deadline to cancel the original and its link) / price_changed / needs_card / not rebookedRe-checks the price, charges the saved card and books the same room with Booking Wolf. Refused if the total differs from what the user approved. The user's original booking stays until it is cancelled (free, before its deadline): the result says where, which booking and by when, so Muse can cancel it in its browser after the user confirms. We also email reminders.
confirm_original_cancelledWriteConnected account with "Book and cancel for me"watch_id; page_url + page_text of the booking site's page showing the cancellation (recommended)state cancelled_verified (the page shows it cancelled) / told_us_cancelled (noted, confirmed on the next sync) / still_active (the page shows it still active; nothing recorded)Records that the user cancelled their original booking. It is only marked cancelled when a page shows it cancelled - the claim alone just stops the reminders, and a later sync that still sees it active brings them back. Cancels and charges nothing itself.

Booking flow

  1. search_hotels then get_room_options for the chosen hotel and dates.
  2. quote_booking re-checks the live price and returns a summary. Show it to the user.
  3. Only after the user approves: book_hotel with the quote_id, expected_total and currency from the quote.
  4. If the result is pending, check get_booking - never report a booking as confirmed before it has a confirmation_id.
  5. If the result is awaiting_bank_approval, give the user the link. If it is payment_uncertain or the call errored, never book again: call book_hotel with the same quote_id (same payment reference, so no double charge) or check list_my_bookings.
  6. To cancel: get_cancellation_terms, show the fee, then cancel_booking with the approved max_fee and currency.

Rebooking a stay booked elsewhere

  1. The user signs in to Booking.com, Agoda, Expedia, Hotels.com and/or Trip.com once in Muse's browser (Muse keeps the password; we never see it).
  2. sync_my_hotel_bookings: Muse opens each site's trips page and each upcoming hotel booking's page and sends us the text. We find the bookings - the same reader the Booking Wolf Chrome extension uses - and say straight away whether we can book the same room for less. Once a day is enough (a daily Muse scheduled task can do this where available). A single booking can also be added from its details with watch_hotel_booking.
  3. Any time later: list_rebook_offers. An offer can come in two forms - the same room and meal for less, or the same room with a free better meal (e.g. breakfast) and still less. Show both and let the user choose.
  4. Only after the user approves: approve_rebook with the offer_id, their choice and the exact total. Users who would rather not approve each one can turn on Auto-rebook at bookingwolf.com/account.
  5. Until the original booking is cancelled the user holds two bookings. The result gives the site, booking number, link and free-cancellation deadline in hotel time: Muse confirms with the user, cancels it in its browser, then calls confirm_original_cancelled with the page that shows it cancelled. We only treat it as cancelled once a page shows it; otherwise we keep reminding the user. (If the user also uses our Chrome extension and has given us the separate permission to cancel originals for them, the extension may cancel it first; the next sync then shows it cancelled.)

Reviewer accounts: approve_rebook is simulated like book_hotel (result says TEST; nothing is charged or booked).

Status values

Bookings: confirmed, pending (paid, hotel not confirmed yet), payment_in_progress (the charge is running; after 2 minutes without a result it becomes payment_uncertain), awaiting_bank_approval, payment_uncertain, failed, expired, cancellation_pending, cancelled, refunded. Quotes expire after 15 minutes; an expired quote returns not_booked and nothing is charged. A used quote returns the state of the booking made from it.

Errors

Limits

Signed-in requests: 60 per minute per connected account. Requests without an account: 1,200 per minute per IP address. Single-room bookings. Prices in the currency requested where the supplier supports it.

Testing without real charges

How to test rebooking as a reviewer

  1. Without a Booking.com account: ask Muse to watch this sample booking - watch_hotel_booking with site booking, booking_reference REVIEW-0001, hotel_name Holiday Inn Resort Baruna Bali, city Kuta, country Indonesia, check_in 2027-02-10, check_out 2027-02-11, adults 2, room_name King Standard Garden View Balcony, meal nomeal, total_price 2529732, currency IDR, free_cancellation_until 2027-01-10T23:59. Prices are live, so the saving can change; on 6 Oct 2026 it returned an offer to save about 13%.
  2. list_rebook_offers shows the offer; approve_rebook on a reviewer account is simulated (TEST - nothing is charged or booked) and returns the cancel-the-original instructions.
  3. With a Booking.com (or Agoda, Expedia, Hotels.com, Trip.com) account that has an upcoming refundable hotel booking: sign in to it in Muse's browser and run sync_my_hotel_bookings. Reading never changes or cancels anything.

Reviewer accounts we register are simulated for book_hotel and cancel_booking: no card is charged and no hotel is booked (results say TEST). Search, room options and quotes stay live. The lead guest's last name picks a scenario: Nocard (no saved card), Bankcheck (bank approval link), Supplierfail (hotel does not confirm), Declined (card declined); any other name books successfully.

Data and support

We use account data only to provide the connector (bookings, payments, support). We do not sell it or use it for advertising, profiling or to train AI models. When you disconnect, Muse loses access immediately and the unused quotes it created are deleted; quotes nobody booked are deleted after 30 days anyway. See our privacy policy and terms. Support: team@bookingwolf.com.