pricewin-flight-search

작성자: price-win

Agoda, Trip.com, Traveloka에서 노선과 날짜별 실시간 항공운임을 검색합니다. 편도 또는 왕복, 모든 객실 등급을 지원하며 항공사, 시간, 경유지, 소요 시간, 직접 예약 링크를 제공합니다. 사용자가 항공요금, 비행기 또는 항공권, 두 도시 간 저가 항공편이나 운임을 원하거나, 여행 날짜별 항공사를 비교하거나, 여행의 비행 구간을 계획할 때 사용하세요.

npx skills add https://github.com/price-win/pricewin-skills-hub --skill pricewin-flight-search

Requires the pricewin MCP server. This skill issues no network calls of its own.

Setup (once per machine)

Without the MCP server registered this skill is inert — it tells you to call search_flights_live and no such tool exists. skills add only copies files, so run:

bash install.sh          # add --dry-run first to see what it would change

It registers the hosted server (https://mcp.price.win/mcp, Streamable HTTP, no credentials) with every agent it finds — Claude Code, Cursor, Windsurf, Gemini CLI, VS Code, Codex — writing a .bak before touching any file and skipping configs it cannot parse. Re-running it changes nothing. Restart the agent afterwards.

Flight Search (Live)

MCP server: pricewin. Tool search_flights_live starts an async crawl across Agoda, Trip.com and Traveloka; poll_flight_results returns the merged, cheapest-per-flight fares.

CRITICAL: IATA codes only

Both airports MUST be 3-letter IATA codes. There is no airport-lookup tool on this server — resolve the city yourself: Sài Gòn / TP.HCM → SGN, Hà Nội → HAN, Đà Nẵng → DAD, Bangkok → BKK (main international), Tokyo → NRT or HND, Seoul → ICN.

When a city has several airports and the user did not say which, ask one short question — never pick silently. Never invent a code.

CRITICAL: Polling pattern (differs from hotel search)

search_flights_live returns IMMEDIATELY with a sessionId and zero flights.

  1. Call search_flights_live with origin, destination, departureDate (YYYY-MM-DD), and returnDate only for a round trip. Add adults, cabin, language="vi" as needed.
  2. Call poll_flight_results(sessionId). This tool blocks internally up to ~30s and returns as soon as the first fares land — do NOT sleep before calling it.
  3. status is pending | searching | completed | failed. If it comes back searching with few or no flights, call again — up to 4 more times.
  4. Present results as soon as flights arrive; keep polling only if the user wants more.

The session expires 15 minutes after the last poll. After that, start a new search — the old sessionId is dead.

poll_flight_results is registered app-visible for the flight widget. If your host does not expose it to the model, let the widget do the polling and do not fabricate fares.

CRITICAL: price is the party total, in USD

price is the total for all adults — not per-person, and not the two legs combined. Divide by adults yourself for a per-person figure.

currency is "USD". Do not convert it. It falls back to "VND" only when the live FX rate was unavailable — so read currency and label the figure with it rather than assuming either one.

Response format (MUST follow exactly)

Present the TOP 5-7 flights per leg ONLY. For EACH flight:

✈️ *<airline> <flightNumber>*  ← bold via markdown
🕐 <dep.time> <origin> → <arr.time> <destination> · <Xh Ym> · <bay thẳng | N điểm dừng>
💰 $<price> tổng cho <adults> khách (~$<price/adults>/khách)
🔗 <bookingUrl>

Line break between flights, no bullet markers. Cheapest flight gets 🏆. duration is in minutes — format it as 2h 10m. Flag an overnight arrival when arrival.date differs from departure.date.

Round trips

outboundFlights and returnFlights are two independent one-way searches. List them under separate headings. You may state a combined estimate as cheapest outbound + cheapest return, but label it as two separate one-way tickets — it is not a quoted round-trip fare and the two legs are booked separately.

Booking URLs — use verbatim

bookingUrl is the deep link of the cheapest agent, with dates and passengers already baked in. Never append, rewrite, or construct params (unlike the hotel skill). A bookingUrl of exactly https://www.price.win/ means no agent deep link was captured — say the fare must be re-checked on the provider's site instead of presenting it as a click-to-book link.

Attribute the source only from the URL host (agoda.com, trip.com, traveloka.com) — the result carries no explicit source field, so do not guess one.

Fields that look useful but are not

  • stopCities — always empty; describe stops by count only
  • departure.city / arrival.city — repeat the IATA code, not a real city name
  • legs — usually absent on list results; don't promise a segment breakdown

Ranking

Sort by price. Cheapest first, but surface a non-stop or much shorter option when it costs only marginally more — say so in one line rather than reordering silently.

Security & data handling

No runtime code and no network calls of its own; the only executable is install.sh, which adds one MCP entry (pricewinhttps://mcp.price.win/mcp) to agent configs the user already has, backing each file up first and skipping any it cannot parse. It downloads and executes nothing. The only data sent is the route query (IATA codes, dates, passengers, cabin) — no passenger names, no PII, no credentials. Comparison only: this skill cannot book or pay. Full disclosure in SECURITY.md.

price-win의 다른 스킬

pricewin-deal-finder
price-win
주어진 여행 날짜와 투숙객 수에 대해 부킹, 아고다, 구글 호텔, 오픈트래블의 호텔 가격 비교 및 특가 정보를 제공합니다. 호텔 가격, 특가, 또는 OTA 요금 비교에 사용하세요.
pricewin-hotel-deal-finder
price-win
전 세계 모든 도시와 모든 여행 날짜에 대해 Booking.com, Agoda, Google Hotels, OpenTravel의 실시간 가격을 비교하여 가장 저렴한 호텔 딜을 찾아줍니다 — 한 번의 명령으로 최고 가성비, 최저가, 품질 선택지를 순위로 반환하며 직접 예약 링크와 함께 모든 가격을 USD로 환산합니다. 호텔 가격, 호텔 딜, 가장 저렴한 객실이나 요금, 최적의 호텔 요금, 호텔 가격 비교, 또는 어떤 OTA가 더 저렴한지 묻는 경우에 사용하세요 — 예: '도쿄에서 부킹닷컴과 아고다 중 어디가 더 저렴한지', '호텔을 찾아줘...
pricewin-hotel-search
price-win
Agoda, Booking.com, Traveloka, OpenTravel 전반에서 특정 날짜의 실시간 요금으로 호텔을 실시간 검색합니다. 사용자가 여행 날짜의 호텔 요금을 원하거나, OTA를 비교하거나, 객실을 찾을 때 사용합니다.
researchweb-scrapingapi
pricewin-price-comparison
price-win
Booking.com, Agoda, Traveloka, OpenTravel 전반의 특정 날짜별 실시간 호텔 객실 요금을 비교합니다 — 동일한 숙소에 대해 어떤 OTA가 가장 저렴한지, 객실당 가격, 무료 취소 조건을 확인할 수 있습니다. 호텔 요금을 비교하거나, 특정 호텔의 객실 요금을 확인하거나, 어떤 사이트가 더 저렴한지 묻거나, 주어진 체크인/체크아웃 날짜에 가장 좋은 요금을 찾을 때 사용하세요.
pricewin-booking-assistant
price-win
호텔 객실을 추천하고 실제 예약을 처음부터 끝까지 완료합니다 — 결제 링크(은행 QR, 카드 또는 PayPal)로 OpenTravel 직영 숙소를 예약하고, 결제 상태를 확인하고, 만료된 링크를 재전송하거나 예약을 취소합니다. OTA 전용 호텔의 경우 Booking.com/Agoda/Traveloka 직접 링크로 대체합니다. 호텔을 예약하거나 객실 추천을 받거나, 숙박비를 결제하거나, 확인 코드를 확인하거나, 예약을 취소할 때 사용합니다.