pricewin-booking-assistant
price-win/pricewin-skills-hub
Book hotels end-to-end with OpenTravel direct properties or OTA fallbacks, handle payments, and manage reservations.
What is pricewin-booking-assistant?
Recommends hotel rooms across OpenTravel direct properties and major OTAs (Booking.com, Agoda, Traveloka), then completes real bookings with payment links (bank QR, card, or PayPal) for direct inventory. Handles payment status checks, link renewal, and cancellations. Use when a user wants to search, compare, book, or manage a hotel reservation.
- Search live hotel availability by city, dates, and guest count
- Score and rank hotels by rating and review credibility
- Retrieve detailed room options and cancellation policies for OpenTravel direct properties
- Create real bookings with payment links (SePay QR, Polar card, or PayPal)
- Check booking status and resend expired payment links
- Cancel bookings via email-verified token flow
How to install pricewin-booking-assistant
npx skills add https://github.com/price-win/pricewin-skills-hub --skill pricewin-booking-assistant- pricewin MCP server must be installed and running
- User must provide full name, phone number, email, and payment method preference before booking
How to use pricewin-booking-assistant
- 1.Call search_hotels_live with city, check-in, check-out, and guest count to initiate a search session
- 2.Poll poll_search_results every 5 seconds until status is no longer pending (up to 90 seconds)
- 3.Score hotels by rating × log(reviewCount + 1) and rank top 3–5 candidates
- 4.Call get_hotel_detail for OpenTravel direct properties or get_ota_hotel_detail for named OTA hotels to retrieve room options and pricing
- 5.Present recommendations with room type, price, and cancellation terms; for OpenTravel direct, offer a booking button; for OTA hotels, provide comparison links
- 6.Collect guest name, phone, email, and payment method preference in a single message before proceeding
- 7.Summarize hotel, room type, dates, total price, guest details, and email address; ask explicit confirmation
- 8.Call create_booking only after confirmation; surface the payment link and confirmation code
Use cases
- User asks to book a hotel for specific dates and location; skill searches, recommends top options, collects guest details, and creates a confirmed reservation
- User has a confirmation code and wants to verify payment status or resend an expired payment link
- User requests cancellation; skill initiates the two-step token-based cancellation process
- User compares prices across OTAs; skill provides direct links with dates appended for hotels not available via OpenTravel direct
- Travel agents and booking assistants
- End users planning accommodation
- Customer service representatives handling reservation inquiries
pricewin-booking-assistant FAQ
No. Only OpenTravel direct properties (with propertyId) can be fully booked and paid through this skill. For Booking.com, Agoda, and Traveloka hotels, the skill provides direct comparison links only.
Three equal options: bank transfer via QR (SePay), international card (Polar), or PayPal. The user chooses; there is no default or recommended order.
It creates a duplicate booking and sends a duplicate confirmation email. If a payment link expires, use recreate_payment_link instead, which reuses the same confirmation code.
Cancellation is a two-step process by design. First, request_cancel_token emails the guest a magic link. The guest must retrieve the token from their inbox and provide it before cancel_booking can complete.
Guest name, phone, and email are sent to PriceWin's MCP server to create the reservation. Card numbers and bank credentials never pass through the skill—users pay on the provider's own secure page via the returned payment link.
Full instructions (SKILL.md)
Source of truth, from price-win/pricewin-skills-hub.
name: pricewin-booking-assistant description: Recommend hotel rooms and complete a real booking end to end — reserve an OpenTravel direct property with a payment link (bank QR, card, or PayPal), check payment status, resend an expired link, or cancel a booking. Falls back to direct Booking.com/Agoda/Traveloka links for OTA-only hotels. Use when booking or reserving a hotel, getting room recommendations, paying for a stay, checking a confirmation code, or cancelling a reservation. version: 1.0.3 author: PriceWin platforms: [linux, macos, windows] tags: [hotel-booking, book-hotel, reserve-hotel, room-recommendation, booking-links, payment-link, booking-management, check-booking, cancel-booking, cancellation, opentravel, agoda, booking-com, mcp, hotel, travel, accommodation] metadata: openclaw: emoji: "🛎️" homepage: https://github.com/Price-Win/pricewin-skills-hub
Requires the
pricewinMCP server. Handles real money: it creates bookings and payment links. Read the confirmation rules below before use.
Booking Assistant
MCP server: pricewin. Orchestrates discover → detail → recommend → book → pay → manage.
What is actually bookable
| Source | Can you book it here? |
|---|---|
source: "OPENTRAVEL_DIRECT" (has propertyId) | ✅ Yes — full booking + payment via create_booking |
| Booking.com / Agoda / Traveloka | ❌ No — comparison only. Hand the user the OTA url |
Only OpenTravel direct properties yield the propertyId + roomTypeId that
create_booking requires. Never imply an OTA hotel can be reserved through this skill.
Recommendation flow
- Discover —
search_hotels_live(city, checkIn, checkOut, adults, …)→sessionId, then pollpoll_search_results(sessionId, nights)every 5s whilestatusispending/partial(up to 18 polls / 90s) - Score —
rating × log(reviewCount + 1)— balances quality against credibility. Strong candidates:rating ≥ 8.0andreviewCount ≥ 100 - Rank — top 3–5 by score
- Detail —
get_hotel_detail(propertyId, checkIn, checkOut, adults)for OpenTravel picks;get_ota_hotel_detail(hotelName, city, checkIn, checkOut, queryText)for a named OTA hotel (~20–60s) - Recommend — filter rooms by guest capacity, then pick best value
Booking link rules (OTA hotels)
- NEVER invent URLs — only use a
urlthe tool returned - Always name the OTA next to the link; if several have the same room, show all with prices
- Append the user's dates to the raw URL — see
pricewin-hotel-search
Booking flow (OpenTravel direct)
1. Get the room first — mandatory
Call get_hotel_detail before booking to obtain roomTypeId, total price, and
currency. Do not guess any of the three.
Optionally call get_cancellation_policy(propertyId, ratePlanId, checkInDate) and show
the refund terms before taking payment.
2. Ask for all four things in ONE message
In your first request for guest info, ask for all of these together — never split across turns, and always in the user's language:
- Full name
- Phone number
- Email — the confirmation email goes here
- Payment method
⚠️ Never auto-fill the email from the account/profile. The guest is often not the account owner. It must come from what the user typed in this chat. If it is missing, ask.
Present the three payment methods as equal choices, no default, no recommended order:
- Bank transfer via QR (SePay) →
SEPAY - International card via Polar →
POLAR - PayPal →
PAYPAL
If the user already signalled a preference, infer it and skip re-asking:
| They said | Method |
|---|---|
| "scan QR", "quét mã", "chuyển khoản", "bank transfer", "VietQR" | SEPAY |
| "card", "thẻ", "credit/debit card", "visa", "mastercard" | POLAR |
| "PayPal" | PAYPAL |
If anything is still missing after their reply, ask again for just the missing item(s).
3. Confirm before charging
Summarise back everything — hotel, room type, check-in/check-out, guests, TOTAL price (full amount, not a deposit), guest name, email address (emphasise it — a typo means the confirmation never arrives), phone, payment method — then explicitly ask the user to confirm it is all correct.
4. Only then call create_booking
Required: propertyId, roomTypeId, checkIn, checkOut, adults, guestName,
guestPhone, guestEmail, paymentMethod, totalAmount, currency.
Also pass queryText (user's original text, verbatim).
Returns a payment link and a confirmationCode (e.g. K7X9M2P4) — surface both.
After booking
| User says | Tool |
|---|---|
| "I paid" / "check my booking" | check_booking_status(confirmationCode) |
| "the payment link expired" | recreate_payment_link(confirmationCode) |
| "cancel my booking" | request_cancel_token → then cancel_booking |
🚨 Never call create_booking twice for the same stay. An expired payment link is
fixed with recreate_payment_link — it reuses the same confirmation code. Calling
create_booking again creates a duplicate booking and a duplicate confirmation email.
Cancelling — two steps, by design
request_cancel_token(confirmationCode, guestEmail)— email must match the booking's primary guest. This emails the guest a magic link- The guest pastes the token back →
cancel_booking(confirmationCode, cancelToken, reason)(reason≥ 3 chars)
You cannot cancel without the guest fetching that token from their inbox. Tell them to check their email rather than retrying step 1.
Output format
### Hotel Name ★★★★☆
- Rating: 8.5/10 (1,234 reviews)
- Best room: Deluxe Double — $85/night
- Free cancellation: until 2026-08-10
- Book: [Reserve now](payment-link) ← OpenTravel direct
- Or compare: [Agoda](url) | [Booking.com](url)
Tool inputs and response fields: reference.md.
Security & data handling
This skill has real transaction authority and transmits guest PII (name,
phone, email) to PriceWin's hosted MCP server https://mcp.price.win/mcp — that
is inherent to making a reservation, and it is why booking is a separate skill
from search. It ships no code and makes no network calls of its own.
Card numbers, CVV and bank credentials never pass through the skill or the
agent — create_booking returns a payment link and the user pays on the
provider's own page. Never ask for card details; refuse if offered.
Confirm the full summary and total price with the user before every
create_booking. Full disclosure — operator, exact PII fields per tool, payment
boundary, cancellation model — in SECURITY.md.
Related skills
More from price-win/pricewin-skills-hub and the wider catalog.

pricewin-deal-finder
Compare live hotel prices across Booking.com, Agoda, Google Hotels & OpenTravel in one command.

pricewin-flight-search
Search live flight fares across Agoda, Trip.com, and Traveloka with airline, times, stops, and booking links.

pricewin-hotel-deal-finder
Compare live hotel prices across Booking.com, Agoda, Google Hotels & OpenTravel in one command.

pricewin-hotel-search
Search hotels live across Agoda, Booking.com, Traveloka, and OpenTravel with real-time pricing.

pricewin-price-comparison
Compare live hotel rates across Booking.com, Agoda, Traveloka, and OpenTravel to find the cheapest option.

ace-step
Tag-driven music generation, inpainting, and outpainting with ACE Step on RunComfy — $0.0002–0.0003/s.