pricewin-booking-assistant

bởi price-win

Đề xuất phòng khách sạn và hoàn tất đặt phòng thực tế từ đầu đến cuối — đặt chỗ trực tiếp tại cơ sở OpenTravel với liên kết thanh toán (QR ngân hàng, thẻ hoặc PayPal), kiểm tra trạng thái thanh toán, gửi lại liên kết hết hạn hoặc hủy đặt phòng. Dự phòng bằng liên kết trực tiếp Booking.com/Agoda/Traveloka cho khách sạn chỉ có trên OTA. Sử dụng khi đặt hoặc giữ phòng khách sạn, nhận đề xuất phòng, thanh toán cho kỳ lưu trú, kiểm tra mã xác nhận hoặc hủy đặt chỗ.

npx skills add https://github.com/price-win/pricewin-skills-hub --skill pricewin-booking-assistant

Requires the pricewin MCP 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

SourceCan 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

  1. Discoversearch_hotels_live(city, checkIn, checkOut, adults, …)sessionId, then poll poll_search_results(sessionId, nights) every 5s while status is pending/partial (up to 18 polls / 90s)
  2. Scorerating × log(reviewCount + 1) — balances quality against credibility. Strong candidates: rating ≥ 8.0 and reviewCount ≥ 100
  3. Rank — top 3–5 by score
  4. Detailget_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)
  5. Recommend — filter rooms by guest capacity, then pick best value

Booking link rules (OTA hotels)

  • NEVER invent URLs — only use a url the 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:

  1. Full name
  2. Phone number
  3. Email — the confirmation email goes here
  4. 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 saidMethod
"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 saysTool
"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

  1. request_cancel_token(confirmationCode, guestEmail) — email must match the booking's primary guest. This emails the guest a magic link
  2. 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 agentcreate_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.

Thêm skills từ price-win

pricewin-deal-finder
price-win
So sánh giá khách sạn & ưu đãi trên Booking, Agoda, Google Hotels và OpenTravel cho ngày đi và số lượng khách nhất định. Sử dụng để tìm giá khách sạn, ưu đãi hoặc so sánh giá OTA.
pricewin-hotel-deal-finder
price-win
Tìm ưu đãi khách sạn rẻ nhất bằng cách so sánh giá trực tiếp trên Booking.com, Agoda, Google Hotels và OpenTravel cho bất kỳ thành phố nào trên thế giới và bất kỳ ngày đi nào — một lệnh trả về các lựa chọn được xếp hạng theo giá trị tốt nhất, rẻ nhất và chất lượng kèm liên kết đặt phòng trực tiếp, tất cả được quy đổi sang USD. Sử dụng bất cứ khi nào ai đó hỏi về giá khách sạn, ưu đãi khách sạn, phòng hoặc mức giá rẻ nhất, mức giá khách sạn tốt nhất, so sánh giá khách sạn, hoặc OTA nào rẻ hơn — ví dụ: 'Booking hay Agoda rẻ hơn cho Tokyo', 'tìm cho tôi một khách sạn ở...
pricewin-hotel-search
price-win
Tìm kiếm khách sạn trực tiếp trên Agoda + Booking.com + Traveloka + OpenTravel với giá theo thời gian thực cho các ngày cụ thể. Sử dụng khi người dùng muốn biết giá khách sạn cho ngày du lịch, so sánh các OTA, hoặc tìm phòng.
researchweb-scrapingapi
pricewin-price-comparison
price-win
So sánh giá phòng khách sạn trực tiếp trên Booking.com, Agoda, Traveloka và OpenTravel cho các ngày cụ thể — OTA nào rẻ nhất cho cùng một khách sạn, giá mỗi phòng và điều kiện hủy miễn phí. Sử dụng khi so sánh giá khách sạn, kiểm tra giá phòng cho một khách sạn cụ thể, hỏi trang nào rẻ hơn hoặc tìm mức giá tốt nhất cho ngày nhận phòng/trả phòng đã cho.
pricewin-flight-search
price-win
Tìm kiếm giá vé máy bay trực tiếp cho một chặng bay và ngày cụ thể trên Agoda, Trip.com và Traveloka — một chiều hoặc khứ hồi, mọi hạng cabin, kèm hãng bay, giờ bay, số điểm dừng, thời lượng và liên kết đặt vé trực tiếp. Sử dụng khi người dùng muốn biết giá vé máy bay, vé máy bay hoặc vé hàng không, vé rẻ giữa hai thành phố, so sánh hãng bay cho ngày đi, hoặc lên kế hoạch cho chặng bay của chuyến đi.
researchweb-scraping