{"id":10993,"plugin_id":"plugin_asdk_app_6a64b484573081918d970f524136b630","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T22:58:32.144Z","digest":"9d1a1cb5808fbe1dc23a011b854fbb2982e9526935038ff64dc5ab827ea385cb","against":null,"payload":{"name":"pricewin-travel-search","description":"Search and compare live hotel and flight prices with the Pricewin MCP server, including hotel details and cancellation terms for OpenTravel direct listings. Use when the user asks to find hotels or flights for dates, compare travel prices, inspect an OpenTravel hotel or room, or check a selected rate's cancellation policy.","included_files":[{"relative_path":"agents/openai.yaml","size_in_bytes":525}],"skill_md_contents":"---\nname: pricewin-travel-search\ndescription: Search and compare live hotel and flight prices with the Pricewin MCP server, including hotel details and cancellation terms for OpenTravel direct listings. Use when the user asks to find hotels or flights for dates, compare travel prices, inspect an OpenTravel hotel or room, or check a selected rate's cancellation policy.\n---\n\n# Pricewin Travel Search\n\nUse only the Pricewin MCP dependency declared in `agents/openai.yaml`. Do not\nreplace it with browser automation, shell commands, direct API calls, or\ninvented booking URLs.\n\n## Collect the required trip details\n\nFor a hotel search, obtain:\n\n- destination or city;\n- check-in and check-out dates;\n- number of adults, defaulting to 2 when the user does not specify;\n- number of rooms, defaulting to 1.\n\nFor a flight search, obtain:\n\n- origin and destination airport IATA codes;\n- departure date and optional return date;\n- number of adults, defaulting to 1;\n- cabin, defaulting to economy.\n\nResolve unambiguous relative dates from the current date. Ask one concise\nfollow-up when a required date, destination, or airport is genuinely ambiguous.\nNever invent a date or silently choose among multiple plausible airports.\n\nPass `language` matching the user's language when supported. Do not put\nunrelated conversation or personal data in `queryText`.\n\n## Search hotels\n\n1. Call `search_hotels_live` with the destination, dates, occupancy, and only\n   the filters the user actually requested.\n2. Read `sessionId` and `nights` from the response.\n3. Call `poll_search_results` with that `sessionId` and `nights`.\n4. If the response is pending or partial with no useful results, poll again\n   until results arrive, the search completes or fails, or the session expires.\n5. Present a concise comparison of relevant results. Label the source and\n   currency exactly as returned.\n\nUse `hotelName`, `area`, `priceMin`, or `priceMax` only when the user supplied\nthat constraint. Do not claim that a result is the cheapest in the whole\nmarket; describe it as the cheapest among the sources returned for this search.\nA failed or missing source does not invalidate results from other sources.\n\n## Inspect an OpenTravel direct hotel\n\nCall `get_hotel_detail` only for a hotel identified as an OpenTravel direct\nlisting.\n\n- Prefer its `propertyId` from `opentravelResults`.\n- Reuse the user's dates and occupancy.\n- Use `hotelName` plus `city` only when the property is already known to be an\n  OpenTravel direct listing and no `propertyId` is available.\n- Do not call this tool for an Agoda, Booking.com, or Traveloka-only result.\n\nPresent the returned photos, amenities, availability, room capacity, total\nprice, per-night price, and currency without changing their meaning. State\nclearly when availability or a price is missing.\n\n## Explain a cancellation policy\n\nCall `get_cancellation_policy` only after `get_hotel_detail` supplies both:\n\n- the property's `propertyId`; and\n- the selected room's `ratePlanId`.\n\nPass the check-in date so the tool can compute an exact deadline. Report the\nreturned non-refundable status, refund percentage, free-cancellation window,\ndeadline, and summary. Never infer a policy or deadline when the tool does not\nreturn one.\n\n## Search flights\n\n1. Call `search_flights_live` with IATA codes, departure date, optional return\n   date, adults, and cabin.\n2. Read the returned `sessionId`.\n3. Use `poll_flight_results` when the host exposes it to the model; otherwise\n   let the Pricewin flight widget perform its app-side polling.\n4. Continue only until useful results arrive, the search completes or fails, or\n   the session expires.\n5. Present relevant options with source, carrier, times, stops, cabin, currency,\n   and fare exactly as returned.\n\nKeep outbound and return legs distinct. Do not combine unrelated one-way fares\ninto a round trip or imply that a fare is still available after the live result\nexpires.\n\n## Safety and output rules\n\n- Use only these six tools: `search_hotels_live`, `poll_search_results`,\n  `search_flights_live`, `poll_flight_results`, `get_hotel_detail`, and\n  `get_cancellation_policy`.\n- Treat all prices as time-sensitive and avoid guarantees or unsupported\n  \"lowest price\" claims.\n- Use only outbound URLs returned by the tools. Never construct, append,\n  rewrite, or guess a booking URL.\n- Explain that booking and payment happen outside ChatGPT on Pricewin or the\n  selected travel provider.\n- Do not ask for or handle guest names, email addresses, booking references,\n  card data, credentials, or other booking/payment information.\n- Do not create, modify, cancel, or pay for a booking. Those actions are not\n  exposed by this plugin.\n- If a tool fails, state the limitation briefly and suggest a new search. Do\n  not fabricate partial inventory, prices, availability, or policies.\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}