classify_repeat_guests
ChatGPTFor a list of reservation PMS ids, classify each as repeat (guest had ≥1 prior stay at this hotel) or new. Uses the same person-key resolution as guest insights (email → phone → pmsId) with a contamination guard that demotes OTA placeholder emails/phones shared across unrelated guests back to pmsId-level uniqueness. Accepts up to 500 ids per call.
classify_repeat_guests
ChatGPTFor a list of reservation PMS ids, classify each as repeat (guest had ≥1 prior stay at this hotel) or new. Uses the same person-key resolution as guest insights (email → phone → pmsId) with a contamination guard that demotes OTA placeholder emails/phones shared across unrelated guests back to pmsId-level uniqueness. Accepts up to 500 ids per call.
get_ancillary_revenue
ChatGPTTotal ancillary revenue (everything non-room) for a date range, summed across every category. Works for every PMS: Mews returns F&B + Retail + Other combined; Cloudbeds and ResNexus return their single aggregate 'Other' bucket. Prefer this over get_fnb_revenue / get_retail_revenue when the caller does not need the split or when the property is on a PMS that cannot split them.
get_ancillary_revenue
ChatGPTTotal ancillary revenue (everything non-room) for a date range, summed across every category. Works for every PMS: Mews returns F&B + Retail + Other combined; Cloudbeds and ResNexus return their single aggregate 'Other' bucket. Prefer this over get_fnb_revenue / get_retail_revenue when the caller does not need the split or when the property is on a PMS that cannot split them.
get_arrivals_and_departures
ChatGPTGet reservations arriving and departing on a SINGLE specific date. Includes guest name, room assignment, source, and revenue. Defaults to today in the hotel's timezone. For a date RANGE (e.g. 'who's arriving this week' or 'arrivals in July') use get_reservations with start_date/end_date instead — do not loop this tool per day.
get_arrivals_and_departures
ChatGPTGet reservations arriving and departing on a SINGLE specific date. Includes guest name, room assignment, source, and revenue. Defaults to today in the hotel's timezone. For a date RANGE (e.g. 'who's arriving this week' or 'arrivals in July') use get_reservations with start_date/end_date instead — do not loop this tool per day.
get_booking_pace
ChatGPTGet the booking pace curve for a specific arrival date. Shows how reservations accumulated over time leading up to arrival. When include_stly is true, compares current pace to the equivalent day last year.
get_booking_pace
ChatGPTGet the booking pace curve for a specific arrival date. Shows how reservations accumulated over time leading up to arrival. When include_stly is true, compares current pace to the equivalent day last year.
get_booking_window
ChatGPTGet the average and median booking window (lead time between reservation creation and arrival) over a date range, with a 0-7 / 8-30 / 31-90 / 91+ day distribution. Use basis='created' when the user asks about bookings made during a window ('booking window for reservations since Jan 2026'); use basis='arrival' when they ask about stays during a window. Defaults to the trailing 90 days by creation date.
get_booking_window
ChatGPTGet the average and median booking window (lead time between reservation creation and arrival) over a date range, with a 0-7 / 8-30 / 31-90 / 91+ day distribution. Use basis='created' when the user asks about bookings made during a window ('booking window for reservations since Jan 2026'); use basis='arrival' when they ask about stays during a window. Defaults to the trailing 90 days by creation date.
get_bookings_by_stay_month
ChatGPTBreak bookings out by stay month within a date range. Aggregates from reservation_night so stays spanning a month boundary credit their nights and revenue to the correct month. Returns per-month room nights, distinct reservations (parent-level, Cloudbeds sub-rooms collapsed), and revenue. bookingCount is a per-month distinct count — a stay that spans Feb and Mar counts once in each month, so do not sum bookingCount across months.
get_bookings_by_stay_month
ChatGPTBreak bookings out by stay month within a date range. Aggregates from reservation_night so stays spanning a month boundary credit their nights and revenue to the correct month. Returns per-month room nights, distinct reservations (parent-level, Cloudbeds sub-rooms collapsed), and revenue. bookingCount is a per-month distinct count — a stay that spans Feb and Mar counts once in each month, so do not sum bookingCount across months.
get_channel_performance
ChatGPTGet revenue and booking breakdown by channel (Direct, OTA, Travel Agent). Shows commission costs per channel and net revenue after commissions.
get_channel_performance
ChatGPTGet revenue and booking breakdown by channel (Direct, OTA, Travel Agent). Shows commission costs per channel and net revenue after commissions.
get_competitor_rates
ChatGPTCompare your published rate against competitor hotels for a date range. Returns each competitor's rate, weighted influence, your rate, the weighted market average, and your positioning vs the market.
get_competitor_rates
ChatGPTCompare your published rate against competitor hotels for a date range. Returns each competitor's rate, weighted influence, your rate, the weighted market average, and your positioning vs the market.
get_current_pricing
ChatGPTGet current published rate prices by room type for a date range, fetched LIVE from the PMS. Falls back to last-synced local rates per room type if the live call fails. Defaults to today + 30 days if no dates provided.
get_current_pricing
ChatGPTGet current published rate prices by room type for a date range, fetched LIVE from the PMS. Falls back to last-synced local rates per room type if the live call fails. Defaults to today + 30 days if no dates provided.
get_daily_breakdown
ChatGPTGet day-by-day metrics (occupancy, revenue, ADR, RevPAR) for each date in the range. Useful for spotting trends and peak dates.
get_daily_breakdown
ChatGPTGet day-by-day metrics (occupancy, revenue, ADR, RevPAR) for each date in the range. Useful for spotting trends and peak dates.
get_floor_ceiling_prices
ChatGPTGet floor and ceiling price guardrails per date and room type for the requested range, plus any active price overrides and the seasons currently in effect.
get_floor_ceiling_prices
ChatGPTGet floor and ceiling price guardrails per date and room type for the requested range, plus any active price overrides and the seasons currently in effect.
get_fnb_revenue
ChatGPTTotal food & beverage revenue (gross of tax) for a date range, with optional outlet-level breakdown (restaurant, bar, minibar, breakfast). Includes optional year-over-year comparison. Rows not tied to a reservation (walk-in / POS sales) are included in the total. Mews-only — every other PMS returns unsupportedForPms: true; surface the capabilityNote instead of $0.
get_fnb_revenue
ChatGPTTotal food & beverage revenue (gross of tax) for a date range, with optional outlet-level breakdown (restaurant, bar, minibar, breakfast). Includes optional year-over-year comparison. Rows not tied to a reservation (walk-in / POS sales) are included in the total. Mews-only — every other PMS returns unsupportedForPms: true; surface the capabilityNote instead of $0.
get_forward_availability
ChatGPTGet future occupancy by date. Highlights undersold dates that may need pricing or marketing attention. Defaults to today + 60 days if no range is given. Set include_room_types to also return a per-room-type breakdown.
get_forward_availability
ChatGPTGet future occupancy by date. Highlights undersold dates that may need pricing or marketing attention. Defaults to today + 60 days if no range is given. Set include_room_types to also return a per-room-type breakdown.
get_ga4_traffic_sources
ChatGPTGet Google Analytics (GA4) session traffic broken down by source and medium. Complements get_google_ads_performance by covering organic, direct, referral, and other non-paid channels. Returns aggregate totals plus a daily breakdown. Returns a graceful message when GA4 is not connected.
get_ga4_traffic_sources
ChatGPTGet Google Analytics (GA4) session traffic broken down by source and medium. Complements get_google_ads_performance by covering organic, direct, referral, and other non-paid channels. Returns aggregate totals plus a daily breakdown. Returns a graceful message when GA4 is not connected.
get_google_ads_performance
ChatGPTGet Google Ads marketing metrics: impressions, clicks, CTR, conversion funnel (add-to-cart, begin-checkout, purchase), campaign breakdown, device split, and abandoned cart recovery. Returns a graceful message when Google Ads is not connected. May take up to 25 seconds to return because it fans out multiple Google Ads API calls in parallel.
get_google_ads_performance
ChatGPTGet Google Ads marketing metrics: impressions, clicks, CTR, conversion funnel (add-to-cart, begin-checkout, purchase), campaign breakdown, device split, and abandoned cart recovery. Returns a graceful message when Google Ads is not connected. May take up to 25 seconds to return because it fans out multiple Google Ads API calls in parallel.
get_guest_detail
ChatGPTGet a single guest's full booking history and stay aggregates. Match by name (case-insensitive substring match against first name, last name, or the full "first last" string). If the name matches multiple guests, returns a candidates list alongside the top match by stay count. Caps booking history at 50 rows (default 25, newest first). For hotels on Mews the guest identity fields may be empty because Mews does not sync guest names/contact info.
get_guest_detail
ChatGPTGet a single guest's full booking history and stay aggregates. Match by name (case-insensitive substring match against first name, last name, or the full "first last" string). If the name matches multiple guests, returns a candidates list alongside the top match by stay count. Caps booking history at 50 rows (default 25, newest first). For hotels on Mews the guest identity fields may be empty because Mews does not sync guest names/contact info.
get_guest_insights
ChatGPTGet guest analytics: top repeat guests (with first-stay and last-stay dates), average length of stay, revenue per guest, and nationality distribution. Defaults to the trailing 12 months. Limit defaults to 25 and caps at 50. Use sort_by to rank by stays (default), revenue, or recency. Set lifetime=true to aggregate all synced history instead of a date range.
get_guest_insights
ChatGPTGet guest analytics: top repeat guests (with first-stay and last-stay dates), average length of stay, revenue per guest, and nationality distribution. Defaults to the trailing 12 months. Limit defaults to 25 and caps at 50. Use sort_by to rank by stays (default), revenue, or recency. Set lifetime=true to aggregate all synced history instead of a date range.
get_guest_notes
ChatGPTFetch the list of staff notes attached to a guest profile (allergies, preferences, past incidents, etc.). Returns each note's id, timestamp, text, and author when available. Cloudbeds-only — other PMS types return unsupportedForPms. Pass the guest's PMS id (resolve it first via get_guest_detail or get_reservation_detail when the user asks by name).
get_guest_notes
ChatGPTFetch the list of staff notes attached to a guest profile (allergies, preferences, past incidents, etc.). Returns each note's id, timestamp, text, and author when available. Cloudbeds-only — other PMS types return unsupportedForPms. Pass the guest's PMS id (resolve it first via get_guest_detail or get_reservation_detail when the user asks by name).
get_guest_patterns
ChatGPTGet a single guest's booking-behavior patterns: seasonality (stays by month), day-of-week preference, stay-length distribution (min/median/max/modal), booking lead time (avg + median + distribution), channel loyalty, and preferred room types. Match by name (fuzzy, first + last). Available for Cloudbeds and Mews; ResNexus does not sync guest identity so results will be empty for ResNexus hotels.
get_guest_patterns
ChatGPTGet a single guest's booking-behavior patterns: seasonality (stays by month), day-of-week preference, stay-length distribution (min/median/max/modal), booking lead time (avg + median + distribution), channel loyalty, and preferred room types. Match by name (fuzzy, first + last). Available for Cloudbeds and Mews; ResNexus does not sync guest identity so results will be empty for ResNexus hotels.
get_guest_spend_breakdown
ChatGPTTop-spending guests for a date range, broken out by rooms revenue, F&B spend, and retail spend. Guests are matched via reservations whose check-in falls in the range; F&B and retail rows are joined via reservationPmsId. Returns an additional walkInTotal object for F&B/retail sales not attributable to any guest (walk-ins, POS).
get_guest_spend_breakdown
ChatGPTTop-spending guests for a date range, broken out by rooms revenue, F&B spend, and retail spend. Guests are matched via reservations whose check-in falls in the range; F&B and retail rows are joined via reservationPmsId. Returns an additional walkInTotal object for F&B/retail sales not attributable to any guest (walk-ins, POS).
get_keyword_performance
ChatGPTPer-keyword Google Ads conversions for a date range. Groups keywords by campaign category (Brand Protection, Discovery & Competitors, Google Hotels & Maps, Other). Returns the top 10 keywords per category ranked by purchases (tie-breaking on purchase value), each with impressions, clicks, CTR, add-to-cart, begin-checkout, purchases, purchase value, and CVR. Use to answer 'which keywords drove bookings?'. Returns a graceful message when Google Ads is not connected.
get_keyword_performance
ChatGPTPer-keyword Google Ads conversions for a date range. Groups keywords by campaign category (Brand Protection, Discovery & Competitors, Google Hotels & Maps, Other). Returns the top 10 keywords per category ranked by purchases (tie-breaking on purchase value), each with impressions, clicks, CTR, add-to-cart, begin-checkout, purchases, purchase value, and CVR. Use to answer 'which keywords drove bookings?'. Returns a graceful message when Google Ads is not connected.
get_local_events
ChatGPTGet events near the hotel that overlap a date range — conferences, concerts, sports, festivals, public holidays. Each event includes attendance estimates, rank, and labels. Defaults to today + 90 days when dates are omitted.
get_local_events
ChatGPTGet events near the hotel that overlap a date range — conferences, concerts, sports, festivals, public holidays. Each event includes attendance estimates, rank, and labels. Defaults to today + 90 days when dates are omitted.
get_mlos_restrictions
ChatGPTGet active minimum-length-of-stay (MLOS) restrictions for a date range, plus the current MLOS config (enabled flag, occupancy/pace thresholds, cascade strategy). Use when the user asks 'do I have a 2-night minimum?', 'is MLOS on?', or 'what are my current minimum stays?'. Returns an empty restrictions array when MLOS is off. Defaults to today + 90 days.
get_mlos_restrictions
ChatGPTGet active minimum-length-of-stay (MLOS) restrictions for a date range, plus the current MLOS config (enabled flag, occupancy/pace thresholds, cascade strategy). Use when the user asks 'do I have a 2-night minimum?', 'is MLOS on?', or 'what are my current minimum stays?'. Returns an empty restrictions array when MLOS is off. Defaults to today + 90 days.
get_multi_year_performance
ChatGPTCompare performance across multiple prior years (default: 2 years back, max 5). Use when the user asks 'how does X compare to prior years' (plural) or wants multi-year trend context. For single-year YoY, prefer get_performance_summary with include_yoy=true — it's cheaper.
get_multi_year_performance
ChatGPTCompare performance across multiple prior years (default: 2 years back, max 5). Use when the user asks 'how does X compare to prior years' (plural) or wants multi-year trend context. For single-year YoY, prefer get_performance_summary with include_yoy=true — it's cheaper.
get_performance_by_room_type
ChatGPTGet performance metrics broken down by room type. Shows which room types generate the most revenue and which have the highest or lowest occupancy for the given date range.
get_performance_by_room_type
ChatGPTGet performance metrics broken down by room type. Shows which room types generate the most revenue and which have the highest or lowest occupancy for the given date range.
get_performance_summary
ChatGPTGet hotel performance metrics (occupancy %, ADR, RevPAR, revenue) for a date range. When include_yoy is true, returns a year-over-year comparison matched by day-of-week.
get_performance_summary
ChatGPTGet hotel performance metrics (occupancy %, ADR, RevPAR, revenue) for a date range. When include_yoy is true, returns a year-over-year comparison matched by day-of-week.
get_pricing_history
ChatGPTGet the audit trail of all pushed prices for a date range. Each entry includes the trigger, suggested base price, applied floor/ceiling, whether the floor or ceiling was hit, and competitor rates at the time of push. Answers 'why was my price set to $X on date Y'.
get_pricing_history
ChatGPTGet the audit trail of all pushed prices for a date range. Each entry includes the trigger, suggested base price, applied floor/ceiling, whether the floor or ceiling was hit, and competitor rates at the time of push. Answers 'why was my price set to $X on date Y'.
get_product_catalog
ChatGPTProperty's configured product catalog (SKUs) live from the PMS — returns id, name, SKU, category, and price per item. Use this for 'what's in my Gift Shop?' / catalog-listing questions. Cloudbeds only today; returns an empty list for PMS types without a catalog endpoint.
get_product_catalog
ChatGPTProperty's configured product catalog (SKUs) live from the PMS — returns id, name, SKU, category, and price per item. Use this for 'what's in my Gift Shop?' / catalog-listing questions. Cloudbeds only today; returns an empty list for PMS types without a catalog endpoint.
get_property_details
ChatGPTGet the hotel property information: name, address, timezone, currency, contact info, and PMS connection status (type, last sync time). PMS credentials are never included.
get_property_details
ChatGPTGet the hotel property information: name, address, timezone, currency, contact info, and PMS connection status (type, last sync time). PMS credentials are never included.
get_rate_plans
ChatGPTList configured rate plans with PMS identifier, name, service ID, and a flag identifying Autumn's base rate — the rate used as the foundation for all pricing decisions.
get_rate_plans
ChatGPTList configured rate plans with PMS identifier, name, service ID, and a flag identifying Autumn's base rate — the rate used as the foundation for all pricing decisions.
get_reservation_detail
ChatGPTGet complete detail for a single reservation by code or PMS id: dates, status, source/channel, guest identity + contact info, room + rate plan, nightly price breakdown, cancellation reason, and group id if part of a group booking. Works for Cloudbeds, Mews, and ResNexus.
get_reservation_detail
ChatGPTGet complete detail for a single reservation by code or PMS id: dates, status, source/channel, guest identity + contact info, room + rate plan, nightly price breakdown, cancellation reason, and group id if part of a group booking. Works for Cloudbeds, Mews, and ResNexus.
get_reservations
ChatGPTSearch reservations in a date range. Use 'search' to find bookings by guest name (matches first name, last name, or full name). Excludes cancelled reservations by default unless 'status' is set explicitly. Results are paginated: default limit 100, max 500. Use this tool for questions about: • Week/month arrivals or departures — pass the full date range. • Cancellation analysis — pass status='Cancelled' and aggregate by guestName client-side to find top cancellers or lost revenue. • Group bookings — when multiple returned rows share the same guestName + checkinDate, treat them as ONE group booking; sum netPrice across the cluster and report the total group value, not the per-row value.
get_reservations
ChatGPTSearch reservations in a date range. Use 'search' to find bookings by guest name (matches first name, last name, or full name). Excludes cancelled reservations by default unless 'status' is set explicitly. Results are paginated: default limit 100, max 500. Use this tool for questions about: • Week/month arrivals or departures — pass the full date range. • Cancellation analysis — pass status='Cancelled' and aggregate by guestName client-side to find top cancellers or lost revenue. • Group bookings — when multiple returned rows share the same guestName + checkinDate, treat them as ONE group booking; sum netPrice across the cluster and report the total group value, not the per-row value.
get_retail_revenue
ChatGPTTotal retail / gift-shop revenue (gross of tax) for a date range. Optional year-over-year comparison. Walk-in / POS sales included in the total. Mews-only; every other PMS returns unsupportedForPms: true.
get_retail_revenue
ChatGPTTotal retail / gift-shop revenue (gross of tax) for a date range. Optional year-over-year comparison. Walk-in / POS sales included in the total. Mews-only; every other PMS returns unsupportedForPms: true.
get_review_summary
ChatGPTGet guest review analytics: average rating, sentiment distribution (positive/neutral/negative), top themes across reviews, response rate, and per-channel breakdown when no channel filter is applied. Filter by period (30d, 90d, 6m, 12m, all) and optionally by channel (google, booking, expedia). Defaults to the last 90 days.
get_review_summary
ChatGPTGet guest review analytics: average rating, sentiment distribution (positive/neutral/negative), top themes across reviews, response rate, and per-channel breakdown when no channel filter is applied. Filter by period (30d, 90d, 6m, 12m, all) and optionally by channel (google, booking, expedia). Defaults to the last 90 days.
get_room_types
ChatGPTList all active room types with capacity, extra capacity, physical room count, and base-room identification. The base room type is derived from the pricing configuration (user metadata), not from a column on the room type itself.
get_room_types
ChatGPTList all active room types with capacity, extra capacity, physical room count, and base-room identification. The base room type is derived from the pricing configuration (user metadata), not from a column on the room type itself.
get_seasonal_settings
ChatGPTGet all seasonal pricing rules categorized as active, upcoming, or expired (relative to today in the hotel timezone). Includes weekday/weekend floor and ceiling at the hotel level plus per-room-type overrides.
get_seasonal_settings
ChatGPTGet all seasonal pricing rules categorized as active, upcoming, or expired (relative to today in the hotel timezone). Includes weekday/weekend floor and ceiling at the hotel level plus per-room-type overrides.
get_top_selling_products
ChatGPTTop-selling products in F&B or retail by gross revenue (default) for a date range. Returns product name, total quantity sold, and gross revenue per product. Mews-only; returns [] for every other PMS (no product-level sales data available).
get_top_selling_products
ChatGPTTop-selling products in F&B or retail by gross revenue (default) for a date range. Returns product name, total quantity sold, and gross revenue per product. Mews-only; returns [] for every other PMS (no product-level sales data available).
get_upcoming_reservations
ChatGPTList a named guest's upcoming (future) reservations ordered by check-in date ascending. Each row includes room type, rate plan, channel, nightly price, and days until arrival. Merges duplicate guest records that share email/phone so the full upcoming schedule is visible even when the PMS has split the guest across multiple profiles. Works for Cloudbeds and Mews.
get_upcoming_reservations
ChatGPTList a named guest's upcoming (future) reservations ordered by check-in date ascending. Each row includes room type, rate plan, channel, nightly price, and days until arrival. Merges duplicate guest records that share email/phone so the full upcoming schedule is visible even when the PMS has split the guest across multiple profiles. Works for Cloudbeds and Mews.