clarify_hotel_search
ChatGPTAsk only missing hotel-search conditions, with choices and optional date inputs. Use BEFORE hotel/theme searches if destination is missing or ambiguous, or dates or party are missing for prices, budgets, booking links or a campaign. Never invent dates, a destination or adult counts. Ordinary form defaults: if checkout is omitted, use the given check-in plus the specified nights, or one night when nights are omitted. Unspecified children use the adult-only scope (children=0) without asking a child count. Preserve explicit children and date values; do not present adult-only results as matching a family. Campaign exception: unspecified children uses the fixed adults-only scope (children=0), without a separate consent question. Explicit children>0 does not stop a campaign search: keep that count in conditions and continue as an adults-only reference, without asking consent or a child count/age. Preserve the returned adult-reference notice in the answer and subsequent tool call. Campaign rooms>1 also permits a one-room reference without another approval question. Keep original rooms (1–4) in conditions and subsequent campaign arguments; never divide or reduce the adult count. Retain the single-room notice: multiple-room availability and total price are unconfirmed. This exception does not apply to OTA search. Child prices and availability/total for the whole family are unverified; users must add children on the official booking site. Never count children as adults or present adult-only prices/links as matching the whole family. Explicit unsupported ordinary party conditions remain unchanged and are not converted into a supported family search. Include context confirmed for the current search intent; do not ask those questions again. Campaign price bounds/sort/scope/luxury band are retained in conditions; pass them unchanged to search_campaign_availability after missing details are answered. On an explicit switch from ordinary search to ふっこう割, if no area is specified for the new campaign request, do not carry forward a prior non-Kyushu area such as Kyoto. Use purpose=campaign, prefecture=null and location="" (city/ward unset); ask the user to choose among the seven Kyushu prefectures and wait. Do not search or choose a prefecture before their answer. Preserve other confirmed constraints; this switch is not consent to change them. If the user explicitly specifies a non-Kyushu area in the campaign request, preserve it, explain this tool's Kyushu-only scope and offer a choice between a Kyushu campaign area and ordinary search in their requested area. Do not silently switch either area or mode, or claim that no campaign exists there. A requested nationwide search is explicit nationwide=true, not an unspecified destination. Dates and party are NOT required for discovery or aggregate review analysis. For ふっこう割 use purpose=campaign, inclusive candidate first_check_in/last_check_in and the user's explicit nights/party. It is not an ordinary OTA booking search. For purpose=campaign offer only the returned adult choices 1–5, in the form and text fallback alike. The shared schema accepts up to 8 to preserve unsupported input; that is not the campaign's supported choice range. Preserve the user's city/ward/town/village in location when continuing to search_campaign_availability. The campaign form supports multiple prefectures. For an initial multi-prefecture request, retain the complete formal prefecture names in location and leave the single prefecture unset; never silently pick one. The form confirms each selected prefecture separately. If it cannot open, confirm all named prefectures in text and call search_campaign_availability once per prefecture, preserving other conditions. Campaign-only exception to general no-shortening rules: a multi-night campaign stay is authorized to be adjusted to one night, without another approval question. Pass the original nights/stay dates here, not a silently pre-adjusted request; retain the returned adjusted values and adjustment notice when continuing. Keep the known check-in D; the adjusted checkout…
compare_hotels
ChatGPTOrdinary hotel comparison; for ふっこう割 use search_campaign_availability first. Use this when comparing 2–3 returned public hotels in input order; no Metro login. For ふっこう割/official direct campaigns, use search_campaign_availability if listed. Never substitute this tool's ordinary OTA prices or links as campaign offers. Unavailable/zero/unverified campaign results stay unconfirmed; do not infer discounts. Ordinary OTA searches remain supported when requested separately as non-campaign. Dates are optional for aggregate review comparisons; do not block them on dates. Compare the returned hotels in one call rather than parallel per-hotel detail calls. Preserve unknowns. Theme counts overlap, not unique guests. Display date-prefilled URLs verbatim; observed price is not a guaranteed offer at the URL. Dates and party must not be altered to bypass unsupported conditions. No reservations or live quotes. State the actual displayed hotel count. Include each displayed price's OTA source, source_observed_at and differing price bases, not just the cheapest amount. Repeat source/date/time/timezone in each follow-up comparison or changed-date answer, even if already stated earlier. Use table columns or a note explicitly bound to the relevant hotel/date; a shared note is valid only when those provenance values match.
get_hotel_details
ChatGPTHotel details only; for ふっこう割 use search_campaign_availability first. Use this when reading aggregate review evidence for one returned public hotel. For ふっこう割/official direct campaigns, use search_campaign_availability if listed. Never substitute this tool's ordinary OTA prices or links as campaign offers. Unavailable/zero/unverified campaign results stay unconfirmed; do not infer discounts. Ordinary OTA searches remain supported when requested separately as non-campaign. Dates are optional for aggregate analysis; never expose raw guest text. Reuse an existing result if it already contains the requested evidence, prices or links. Pass exact known dates/party for booking searches; never return a hotel front page instead. dates_required applies only to booking links, not aggregate analysis; ask dates only if links or prices are requested. Missing links never permit guessing. Show the source and source_observed_at of any displayed observed price. No Metro login. Cannot provide unverified amenities, walk times, photos or private reports. Cannot bypass unsupported-party limits from another tool.
get_hotel_price_calendar
ChatGPTOrdinary OTA prices only; for ふっこう割 use search_campaign_availability first. Use this when comparing cached daily prices for 1–3 hotels across 1–14 nights. For ふっこう割/official direct campaigns, use search_campaign_availability if listed. Never substitute this tool's ordinary OTA prices or links as campaign offers. Unavailable/zero/unverified campaign results stay unconfirmed; do not infer discounts. Ordinary OTA searches remain supported when requested separately as non-campaign. Dates are required for this calendar tool; not for review-only discovery. No login. Check-out is exclusive, within today JST to six calendar months. The entire stay must fit returned supported_window: start <= check_in < check_out <= end. Do not predict future data readiness from check-in alone. Only 2 adults, 1 room, no children. Request a flexible one-night range once, not per day. Compare hotel×date combinations, retaining repeated hotels unless unique hotels were asked. Unknown/stale/uncollected is not zero or sold out. Source sell-out is not hotel-wide fullness. Observed prices are not live quotes, same-plan stay totals or tax guarantees. Use source_availability_labels per OTA/date, combining observations with source_availability_gaps. For each source_availability_sources entry missing from both, use source_availability_default (not_collected). Never infer sold-out from absence. Match source aliases: じゃらん=Jalan.net, 楽天トラベル=Rakuten.co.jp. Keep unknown, no usable observation and expired information distinct. Show an expired observation's time only as historical, never its price. Missing source records do not establish a failed fetch or no previous collection. Show every displayed source availability status with source_observed_at and timezone, or 取得日時不明 when absent. Include each displayed price's OTA source and source_observed_at. If the source time is unknown, say so; checked_at is a response check time, not an OTA observation time. Show supplied booking URLs verbatim using normal clickable Markdown links, not button-only controls; never invent missing links.
list_hotel_themes
ChatGPTUse this when mapping a review preference to published theme IDs; no Metro login. For a hotel search with an ambiguous destination (e.g. 港区/中央区/北区), first ask which prefecture/city unless the user's explicit context resolves it; never assume Tokyo. A request for 港区 alone needs clarification (Tokyo, Osaka or Nagoya); a theme, language, device location or a popular hotel cannot resolve that ambiguity. This takes priority over choosing breakfast subtypes. Standalone theme browsing needs no destination. Discover once per keyword and reuse IDs; dates are not needed. General breakfast is not buffet; onsen does not imply a private bath. Review mentions are aggregate analysis, not verified hotel facilities or individual guest text. Keyword matches are alternative topics, not a list of jointly required filters. For good breakfast, use a returned general breakfast theme when available. If only narrower subtypes are returned, ask one brief clarification before searching. Do not select buffet or another subtype without the user's consent.
recommend_hotels
ChatGPTOrdinary hotel search only; for ふっこう割 use search_campaign_availability first. Use this for non-campaign hotel names, destinations or aggregate review themes. For ふっこう割/official direct campaigns, use search_campaign_availability if listed. If unavailable, zero or unverified, explain that campaign availability is unconfirmed. Never substitute this tool's ordinary OTA prices or links as campaign offers, or calculate campaign discounts from them. Ordinary OTA searches remain supported when requested separately; label those offers non-campaign and preserve the user's choice. Resolve ambiguous destinations (e.g. 港区/中央区/北区) from explicit user context or ask which prefecture/city before looking up themes or asking about subtypes. Never assume Tokyo or another city; do not invent a prefecture. Example: 港区で眺めのいいホテル needs a city clarification, not a Tokyo search. Offer 東京都港区, 大阪市港区 and 名古屋市港区, not just Tokyo and Osaka. 大阪市港区で眺めのいいホテル is explicit: preserve Osaka, never substitute Tokyo. For bare 品川 ask 品川駅周辺 or 品川区. Station areas and city/ward boundaries differ. An administrative-area match never verifies distance from a station. If a station or walking-radius constraint cannot be verified, ask before broadening the area; do not silently search 博多区 for 博多駅周辺 or label such results station-near. Dates are optional for hotel discovery and aggregate review analysis. Run these searches without dates; do not require a stay date just to find breakfast themes. Ask dates only when prices, budget filtering or date-prefilled booking links are requested. Metro registration/login is not required. Return up to 5 hotels. Pass all known dates, party, themes and budget together. Every selected theme must match: include only explicitly required themes. For good breakfast, use a returned general breakfast theme when available. If only narrower subtypes are returned, ask one brief clarification before searching; do not select buffet without consent. Related themes can be comparison dimensions, not mandatory search filters. Put the requested city/ward in location and hotel/chain name in hotel_name; do not merge them. A prefecture alone does not narrow to its similarly named city. Keep branch/building/sub-brand words in hotel_name. Location is not a meal preference or walking-distance guarantee. Japanese and English city forms are accepted. For explicit exclusions, pass prior returned IDs in exclude_hotel_ids or the user's named hotel/brand keywords in exclude_hotel_names. Exclusions run before ranking and budget selection, so eligible replacements can fill the requested limit. Preserve exclusions on follow-up searches along with all other conditions. Name exclusions are not a corporate ownership or entire hotel-group guarantee: do not infer unnamed affiliated brands. Clarify a requested corporate group if its brands are unknown. Names allow width/kana/separator variants and curated aliases, not arbitrary typos. If search_diagnostic is returned, explain its reason. name_suggestions are only possible identities, NOT matching recommendations; ask which hotel was intended. name_search_limited is an inconclusive bounded search, not proof that a hotel does not exist or lacks review evidence. Missing names can reflect catalog coverage or a different registered name. Never replace an unavailable named branch with a similarly named sister hotel or claim it is that same property. They have no verified theme/price match. After confirmation, retry recommend_hotels with the confirmed name and ALL original place, branch, theme, date, party and budget conditions. Do not bypass these filters by fetching suggestion IDs through details. A limited/unavailable name lookup is not proof that the hotel is absent. Zero results do not prove missing data, poor reviews or sell-out; clarify the name or city without dropping other conditions. Show returned registered names. Ask for destination when a vague trip is unresolved; do not substitute national leaders. No photo URLs are returned. Prefer text and clickable links; omit image carousels and unavailable-image placeholders. Exte…
search_campaign_availability
ChatGPTFind 九州ふっこう割 (Kyushu fukkowari) plans, candidate dates and official booking URLs. Use this tool first for ふっこう割/復興割/九州ふっこう応援割 requests for eligible hotels, available dates or official direct campaign booking links, not recommend_hotels. No preliminary ordinary hotel or theme search is needed when prefecture/dates are known. A matching ordinary hotel or OTA vacancy is not evidence of campaign eligibility. If this tool is unavailable, returns zero matches or cannot verify availability, explain that campaign availability is unconfirmed; never substitute Jalan/Rakuten/Ikyu/Booking.com prices or links as campaign offers. Never calculate a campaign discount or payable price from ordinary OTA prices. If the user separately requests ordinary OTA alternatives, clearly label them non-campaign offers; do not silently drop the campaign condition. Ask for the prefecture and candidate dates if missing; never invent conditions. Not a multi-night stay: both dates are inclusive candidate check-ins, at most 31. Example: 鹿児島で2026-10-24から25まで1泊・大人2名・ふっこう割の公式URL means prefecture=鹿児島県, first_check_in=last_check_in=2026-10-24, adults=2, nights=1. Only this campaign tool supports 1–5 adults, one room, one night and zero children. Do not change unsupported party conditions. Ordinary vacancies are NOT campaign stock; missing, stale or unverified records are NOT sold out. available_only=False explains non-available statuses, not alternative valid offers. Results cover only monitored cached hotel/date cells, not all hotels. Show observation time for each available match as a cycle-start lower bound, not an exact last-check time. Explain stale/freshness_unverified/participation_unverified as 確認中, never available. no_campaign_plan_observed is no observed campaign offer, NOT a fully booked hotel. Presence means an offer was seen, not one remaining room; never infer room counts. Amounts are per room/night for the requested party; discount basis is unverified. Membership/eligibility, subsidy funds and booking are not guaranteed. Include the supplied official booking_url unchanged for every available match that has one, as a clickable Markdown link. Never replace it with an OTA link, shorten it, strip/add query parameters or construct a missing official URL from a hotel name. If booking_url is missing, say no verified official booking destination was supplied. dated_search means verified date/party prefill; selection_required means an observed booking page: say 予約ページで宿泊日・人数・対象プランを確認・選択してください. A plan-level URL may open a month calendar; never claim its date is already selected. Link prices and membership conditions can differ from hotel-level aggregates. Never invent missing URLs, substitute marketing home pages or promise booking success. This is read-only, never books, browses or refreshes a source. No login is needed.