pricewin-price-comparison

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese
Requires the
pricewin
MCP server. This skill issues no network calls of its own.
需要依赖
pricewin
MCP服务器。该Skill自身不会发起任何网络请求。

Price Comparison

价格对比

MCP server:
pricewin
. Compares live rates across Booking.com, Agoda, Traveloka (crawled) plus OpenTravel (direct API).
Comparison is something you do over the returned sources — there is no server-side compare call. Pick the entry point by what the user gave you:
User gave youTool
A city — "compare hotel prices in Da Nang"
search_hotels_live
poll_search_results
A named hotel — "is Mercure Danang cheaper on Agoda or Booking?"
get_ota_hotel_detail
A hotel already known to be OpenTravel direct (
source: "OPENTRAVEL_DIRECT"
, has
propertyId
)
get_hotel_detail
MCP服务器:
pricewin
。对比来自Booking.com、Agoda、Traveloka(爬虫获取)以及OpenTravel(直接API调用)的实时房价。
价格对比需要基于返回的数据源进行——不存在服务器端的对比调用。请根据用户提供的信息选择对应的入口工具:
用户提供的信息工具
一个城市 —— "对比岘港的酒店价格"
search_hotels_live
poll_search_results
一个指定酒店 —— "岘港美居酒店在Agoda还是Booking上更便宜?"
get_ota_hotel_detail
已知为OpenTravel直连的酒店(
source: "OPENTRAVEL_DIRECT"
,包含
propertyId
get_hotel_detail

City-wide comparison

全城范围对比

search_hotels_live
returns IMMEDIATELY with a
sessionId
— it does not return hotels.
  1. search_hotels_live
    — required:
    city
    ,
    checkIn
    ,
    checkOut
    (YYYY-MM-DD). Optional:
    adults
    (default 2),
    rooms
    ,
    area
    ,
    hotelName
    ,
    priceMin
    ,
    priceMax
    ,
    language
  2. Wait 5s →
    poll_search_results(sessionId, nights)
  3. While
    status
    is
    pending
    or
    partial
    : wait 5s and poll again — up to 18 times (90s)
  4. Present as soon as
    status == "partial"
    with hotels; keep polling silently and refine
Then compare per hotel across its sources. See
pricewin-hotel-search
for the full dedupe + presentation contract — do not restate it differently here.
search_hotels_live
会立即返回一个
sessionId
——不会直接返回酒店列表。
  1. search_hotels_live
    — 必填参数:
    city
    checkIn
    checkOut
    (格式为YYYY-MM-DD)。可选参数:
    adults
    (默认值为2)、
    rooms
    area
    hotelName
    priceMin
    priceMax
    language
  2. 等待5秒 → 调用
    poll_search_results(sessionId, nights)
  3. status
    pending
    partial
    时:等待5秒后再次轮询——最多轮询18次(共90秒)
  4. 一旦
    status == "partial"
    并返回酒店列表,立即展示结果;同时继续静默轮询以优化结果
随后针对每家酒店对比其在不同数据源的价格。完整的去重与展示规范请参考
pricewin-hotel-search
——请勿在此处重新表述。

Single named hotel

指定单一酒店

get_ota_hotel_detail
— for one specific Booking.com/Agoda hotel the user named.
  • Required:
    checkIn
    ,
    checkOut
    . Pass
    hotelName
    +
    city
    +
    queryText
    (verbatim user text) whenever known
  • Do NOT call
    search_hotels_live
    for a named hotel
    — that returns a whole-city list
  • Live crawl, ~20–60s. Say nothing about "loading" until it actually returns
  • Speed-up: if a prior search already gave you
    prices.booking.url
    , pass it as
    propertyUrl
    to skip name resolution
  • If it returns not-found under load, retry once
Returns rooms, prices, facilities, photos, reviews for that property.
get_ota_hotel_detail
— 用于查询用户指定的某一家Booking.com/Agoda酒店。
  • 必填参数:
    checkIn
    checkOut
    。若已知相关信息,请传入
    hotelName
    +
    city
    +
    queryText
    (用户原始查询文本)
  • 请勿针对指定酒店调用
    search_hotels_live
    — 该工具会返回全城酒店列表
  • 实时爬虫获取数据,耗时约20–60秒。在结果返回前不要提及“加载中”
  • 加速技巧:如果之前的搜索已提供
    prices.booking.url
    ,可将其作为
    propertyUrl
    传入,跳过名称解析步骤
  • 若因负载过高返回未找到结果,请重试一次
返回该酒店的房型、价格、设施、图片及评价信息。

OpenTravel direct properties

OpenTravel直连酒店

get_hotel_detail
— only for results with
source: "OPENTRAVEL_DIRECT"
.
  • Pass
    propertyId
    (UUID from
    opentravelResults[].propertyId
    ) when available
  • hotelName
    +
    city
    is a fallback only for a property already confirmed as OpenTravel direct
  • Required:
    checkIn
    ,
    checkOut
    . Optional:
    adults
    ,
    children
    ,
    language
  • Returns room types with
    roomTypeId
    and
    ratePlanId
    — these are what make a property bookable
⚠️ Router rule: have a
propertyId
get_hotel_detail
. Name only →
get_ota_hotel_detail
.
get_hotel_detail
— 仅适用于
source: "OPENTRAVEL_DIRECT"
的结果。
  • 若有
    propertyId
    (来自
    opentravelResults[].propertyId
    的UUID),请传入该参数
  • hotelName
    +
    city
    仅作为已确认是OpenTravel直连酒店的备用参数
  • 必填参数:
    checkIn
    checkOut
    。可选参数:
    adults
    children
    language
  • 返回包含
    roomTypeId
    ratePlanId
    的房型信息——这两个参数是酒店可预订的关键标识
⚠️ 路由规则:拥有
propertyId
→ 调用
get_hotel_detail
。仅知道名称 → 调用
get_ota_hotel_detail

Cancellation terms

取消条款

For OpenTravel rate plans only:
get_cancellation_policy(propertyId, ratePlanId, checkInDate)
→ non-refundable flag, free-cancellation window, refund %, and the computed deadline.
ratePlanId
comes from
get_hotel_detail
roomTypes[].ratePlanId
. Pass
checkInDate
or you get no deadline. OTA hotels have no structured policy — quote whatever the crawl returned.
仅针对OpenTravel的价格方案:调用
get_cancellation_policy(propertyId, ratePlanId, checkInDate)
→ 返回不可退款标识、免费取消窗口期、退款比例以及计算得出的取消截止日期。
ratePlanId
来自
get_hotel_detail
返回的
roomTypes[].ratePlanId
。必须传入
checkInDate
,否则无法获取取消截止日期。OTA酒店没有结构化的政策信息——直接引用爬虫返回的内容即可。

Presenting a comparison

对比结果展示

  • Rank purely by price. No source gets priority, OpenTravel included
  • Show the cheapest source first, then the others underneath:
    Agoda $X · Booking $Y · OpenTravel $Z
  • Savings vs the next-cheapest source:
    (next - cheapest) / next * 100
    → "Save Z%"
  • When the gap is small, prefer the free-cancellation option and say why
  • All prices USD unless the tool says otherwise. No conversion
Tool inputs and response fields: reference.md.
  • 完全按价格排序。任何数据源都不享有优先级,包括OpenTravel
  • 先展示价格最低的平台,再依次列出其他平台:
    Agoda $X · Booking $Y · OpenTravel $Z
  • 与次低价平台相比的节省比例:
    (next - cheapest) / next * 100
    → “节省Z%”
  • 当价格差距较小时,优先选择支持免费取消的选项,并说明原因
  • 所有价格默认以美元计价,除非工具另有说明。不进行货币转换
工具输入与响应字段说明:reference.md