Award Travel Finder
What this MCP does
Searches award flights and hotels, tracks bookings and loyalty balances, evaluates points and credit cards, and monitors travel redemptions.
Tools
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['airline', 'origin', 'destination', 'departure_date', 'cabin_class'], 'properties': {'kind': {'enum': ['award', 'cash'], 'type': 'string', 'description': 'award = points/miles redemption (default); cash = paid with money. Defaults to award.'}, 'notes': {'type': 'string'}, 'origin': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'airline': {'type': 'string'}, 'program': {'type': 'string', 'description': 'Award bookings only. Loyalty program used.'}, 'trip_id': {'type': 'string', 'description': 'Optional UUID grouping legs of the same multi-leg booking. Generate once and reuse for all legs. Omit for single-leg bookings.'}, 'cash_paid': {'type': 'number', 'minimum': 0, 'description': 'Cash bookings only. Total cash fare paid for this leg, in taxes_currency (default USD).'}, 'passengers': {'type': 'integer', 'minimum': 1}, 'taxes_paid': {'type': 'number'}, 'cabin_class': {'enum': ['economy', 'premium_economy', 'business', 'first'], 'type': 'string'}, 'destination': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'return_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'points_spent': {'type': 'integer', 'minimum': 0, 'description': 'Award bookings only. Total points for this leg. Use 0 for connecting legs — put the full booking cost on the first leg only.'}, 'flight_number': {'type': 'string'}, 'departure_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'taxes_currency': {'type': 'string', 'description': 'Currency for taxes_paid and cash_paid. Defaults to USD.'}, 'workspace_trip_id': {'type': 'integer', 'description': 'Optional id of a workspace Trip (from create_trip / list_trips) to file this flight under, so it shows grouped with the matching hotels. Distinct from trip_id, which only chains multi-leg legs.'}, 'confirmation_number': {'type': 'string'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['hotel_id', 'check_in_date', 'check_out_date'], 'properties': {'kind': {'enum': ['award', 'cash'], 'type': 'string', 'description': 'award = points stay with price-drop monitoring (default); cash = paid with money. Defaults to award.'}, 'notes': {'type': 'string'}, 'trip_id': {'type': 'integer', 'description': 'Optional id of a workspace Trip (from create_trip / list_trips) to file this stay under.'}, 'hotel_id': {'type': 'string', 'description': 'Hotel identifier from search_hotels / get_hotel_availability results.'}, 'rate_plan': {'type': 'string'}, 'room_type': {'type': 'string'}, 'check_in_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'check_out_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'original_points': {'type': 'integer', 'minimum': 1, 'description': 'Award bookings only. Total points paid for the stay.'}, 'cash_rate_currency': {'type': 'string', 'description': 'Currency of original_pay_rate_usd. Defaults to USD.'}, 'confirmation_number': {'type': 'string'}, 'original_pay_rate_usd': {'type': 'number', 'minimum': 0, 'description': 'Cash rate paid for the stay (required for cash bookings; optional cash-equivalent for award bookings).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['voucher_slug'], 'properties': {'notes': {'type': 'string'}, 'reference': {'type': 'string', 'description': 'Voucher code or membership reference.'}, 'expires_on': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Voucher expiry date (YYYY-MM-DD).'}, 'voucher_slug': {'type': 'string', 'description': "Slug from list_voucher_types, e.g. 'ba-amex-premium-plus-companion'."}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['voucher_id'], 'properties': {'booking_id': {'type': 'integer', 'minimum': 1, 'description': 'ID of the booking to apply the voucher to. Omit to detach.'}, 'voucher_id': {'type': 'integer', 'minimum': 1, 'description': "ID of the user's voucher (from list_my_vouchers)."}, 'booking_type': {'enum': ['flight', 'hotel'], 'type': 'string', 'description': 'Whether booking_id refers to a flight redemption or a hotel booking.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['trip_id'], 'properties': {'trip_id': {'type': 'integer', 'description': 'Target workspace Trip id.'}, 'hotel_booking_ids': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Hotel booking ids to file under the trip.'}, 'flight_booking_ids': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Flight redemption ids to file under the trip.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['chain', 'folio_text'], 'properties': {'chain': {'enum': ['marriott', 'hilton', 'hyatt', 'ihg'], 'type': 'string'}, 'stay_type': {'enum': ['award', 'cash', 'points_advance'], 'type': 'string'}, 'folio_text': {'type': 'string'}, 'status_tier': {'type': 'string'}, 'confirmation_number': {'type': 'string'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['folio_text'], 'properties': {'stay_type': {'enum': ['award', 'cash', 'points_advance'], 'type': 'string'}, 'folio_text': {'type': 'string'}, 'status_tier': {'enum': ['member', 'silver', 'gold', 'platinum', 'titanium', 'ambassador'], 'type': 'string'}, 'confirmation_number': {'type': 'string'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['origin', 'destination', 'program'], 'properties': {'cabin': {'type': 'string', 'default': 'economy', 'description': 'Cabin: economy, premium, business, or first.'}, 'origin': {'type': 'string', 'description': "Origin airport IATA code, e.g. 'LHR'."}, 'program': {'type': 'string', 'description': "Qualifying program slug: 'british-airways-executive-club', 'air-france-klm-flying-blue', or 'american-aadvantage'."}, 'segments': {'type': 'integer', 'minimum': 1, 'description': 'Number of flight segments/legs (multiplies Flying Blue XP). Default 1.'}, 'fare_price': {'type': 'number', 'description': 'Fare price for revenue-based programs (BA Tier Points, AA Loyalty Points). Base fare + carrier surcharges, excluding taxes.'}, 'destination': {'type': 'string', 'description': "Destination airport IATA code, e.g. 'JFK'."}, 'fare_currency': {'type': 'string', 'description': "ISO currency of fare_price (e.g. GBP, USD, EUR). Defaults to the program's home currency."}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['monitor_id'], 'properties': {'monitor_id': {'type': 'integer'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['standing_order_id'], 'properties': {'standing_order_id': {'type': 'integer'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['monthly_spending'], 'properties': {'limit': {'type': 'number', 'description': 'Max cards to return (default 10).'}, 'region': {'enum': ['US', 'UK', 'AU', 'DE', 'FR', 'IT', 'ES', 'NL'], 'type': 'string', 'description': 'Region of cards to evaluate. Defaults to US.'}, 'card_type': {'enum': ['personal', 'business'], 'type': 'string'}, 'monthly_spending': {'type': 'array', 'items': {'type': 'object', 'required': ['category', 'amount'], 'properties': {'amount': {'type': 'number'}, 'category': {'type': 'string'}}}, 'description': "Array of {category, amount} for the user's typical monthly spend. Amounts in the local currency of the chosen region."}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['ids'], 'properties': {'ids': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 4, 'minItems': 2, 'description': 'Card ids to compare, e.g. ["amex-gold-us", "chase-sapphire-preferred"].'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['category'], 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 10).'}, 'region': {'enum': ['US', 'UK', 'AU', 'DE', 'FR', 'IT', 'ES', 'NL'], 'type': 'string'}, 'category': {'type': 'string', 'description': 'Spend category — supports UK/AU terms like "petrol", "chemist", "woolworths".'}, 'card_type': {'enum': ['personal', 'business'], 'type': 'string'}, 'min_multiplier': {'type': 'number', 'description': 'Only return cards at or above this multiplier.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['partner_name'], 'properties': {'region': {'enum': ['US', 'UK', 'AU', 'DE', 'FR', 'IT', 'ES', 'NL'], 'type': 'string', 'description': 'Filter to programs from a specific region.'}, 'partner_name': {'type': 'string', 'description': 'Airline or hotel name, e.g. "Qantas", "Virgin Atlantic", "Hyatt".'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Card id, e.g. "amex-gold-us". Use list_cards to discover ids.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'region': {'enum': ['US', 'UK', 'AU', 'DE', 'FR', 'IT', 'ES', 'NL'], 'type': 'string', 'description': 'Filter by region/country.'}, 'provider': {'enum': ['amex', 'chase', 'bilt', 'capital-one', 'anz', 'nab', 'westpac', 'cba', 'barclaycard', 'hsbc', 'virgin-money', 'lloyds', 'currensea', 'yonder', 'other'], 'type': 'string', 'description': 'Filter by issuer.'}, 'card_type': {'enum': ['personal', 'business'], 'type': 'string', 'description': 'Filter by personal vs business.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'days': {'type': 'number', 'description': 'Look back this many days (default 30).'}, 'limit': {'type': 'number', 'description': 'Max results (default 50).'}, 'card_id': {'type': 'string', 'description': 'Filter to changes for one card.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'region': {'enum': ['US', 'UK', 'AU', 'DE', 'FR', 'IT', 'ES', 'NL'], 'type': 'string', 'description': 'Filter to programs from a specific region.'}, 'provider': {'type': 'string', 'description': 'Filter to one provider, e.g. "amex" or "anz".'}, 'partner_type': {'enum': ['airline', 'hotel'], 'type': 'string'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'number', 'description': 'Max results (default 20).'}, 'region': {'enum': ['US', 'UK', 'AU', 'DE', 'FR', 'IT', 'ES', 'NL'], 'type': 'string'}, 'card_type': {'enum': ['personal', 'business'], 'type': 'string'}, 'min_value': {'type': 'number', 'description': 'Minimum bonus point/mile value.'}, 'monthly_spend': {'type': 'number', 'description': "Monthly spend in the card's local currency. If provided, only includes bonuses where required spend ≤ monthly_spend × months."}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['target_program', 'points_needed'], 'properties': {'points_needed': {'type': 'integer', 'minimum': 1, 'description': 'How many target-program points the redemption costs'}, 'target_program': {'type': 'string', 'description': "The program you need points in (e.g. 'Asia Miles', 'Avios', 'Aeroplan', 'Virgin Points')"}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['provider'], 'properties': {'provider': {'enum': ['seats_aero', 'award_wallet', 'google_sheets', 'tripit', 'autopilot'], 'type': 'string', 'description': 'Which integration to connect'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['origin', 'destination', 'earliest_date', 'latest_date'], 'properties': {'cabin': {'enum': ['economy', 'premium_economy', 'business', 'first'], 'type': 'string'}, 'origin': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'airlines': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional airline filter; omit to watch all supported carriers'}, 'max_points': {'type': 'integer', 'description': 'Only fire when points <= this cap'}, 'passengers': {'type': 'integer', 'maximum': 9, 'minimum': 1}, 'destination': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'latest_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'earliest_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['prompt'], 'properties': {'prompt': {'type': 'string', 'description': 'The self-contained instruction to run each time. No conversation context is carried over.'}, 'cadence': {'enum': ['daily', 'weekly'], 'type': 'string', 'description': 'Defaults to weekly.'}, 'trip_id': {'type': 'integer', 'description': 'Optional trip to file this order under.'}, 'run_hour': {'type': 'integer', 'maximum': 23, 'minimum': 0, 'description': 'Hour of day in UTC to run. Defaults to 7.'}, 'run_weekday': {'type': 'integer', 'maximum': 6, 'minimum': 0, 'description': '0=Sunday … 6=Saturday. Weekly cadence only. Defaults to Monday (1).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['name'], 'properties': {'name': {'type': 'string', 'description': "Trip name, e.g. 'Tokyo with the family'"}, 'end_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'start_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'destination': {'type': 'string', 'description': 'Primary destination (city or airport)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['booking_id'], 'properties': {'booking_id': {'type': 'integer', 'minimum': 1}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['booking_id'], 'properties': {'booking_id': {'type': 'integer', 'minimum': 1}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['visit_id'], 'properties': {'visit_id': {'type': 'integer', 'description': 'Id of the logged visit, from list_lounge_visits.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['program'], 'properties': {'program': {'type': 'string'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['program'], 'properties': {'program': {'type': 'string', 'description': 'Loyalty program name to remove (as shown by list_points_balances)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['trip_id'], 'properties': {'trip_id': {'type': 'integer', 'description': 'Trip id to remove. Use list_trips to find it.'}, 'permanently': {'type': 'boolean', 'description': 'Delete the trip and its itinerary for good instead of archiving. Defaults to false.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['voucher_id'], 'properties': {'voucher_id': {'type': 'integer', 'minimum': 1}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['provider'], 'properties': {'provider': {'enum': ['seats_aero', 'award_wallet', 'google_sheets', 'tripit', 'autopilot'], 'type': 'string'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'city': {'type': 'string', 'description': "City name to search (e.g. 'Tokyo', 'Maldives'). Optional — omit to list all premium hotels."}, 'program': {'enum': ['any', 'amex_fhr', 'amex_thc', 'chase_edit'], 'type': 'string', 'description': 'Filter by program. Default: any.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['from_program', 'target_program'], 'properties': {'max_hops': {'type': 'integer', 'maximum': 3, 'minimum': 1, 'description': 'Max transfer steps to consider (default 3)'}, 'from_program': {'type': 'string', 'description': "Program you have points in (e.g. 'Amex Membership Rewards', 'Chase', 'Marriott Bonvoy')"}, 'points_needed': {'type': 'integer', 'minimum': 1, 'description': 'Optional: how many target-program points you need. Returns source points required per route.'}, 'target_program': {'type': 'string', 'description': "Program you want points in (e.g. 'American Airlines AAdvantage', 'Alaska', 'Avios')"}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['flight_number', 'flight_date', 'cabin_class', 'seat_preference'], 'properties': {'cabin_class': {'enum': ['economy', 'premium_economy', 'business', 'first'], 'type': 'string', 'description': 'Cabin class to monitor'}, 'flight_date': {'type': 'string', 'description': 'Flight date in YYYY-MM-DD format. Must be today or within the next 60 days.'}, 'flight_number': {'type': 'string', 'description': "Flight number, e.g. 'QF1', 'AA716'"}, 'specific_seat': {'type': 'string', 'description': "Required when seat_preference is 'specific' (e.g. '12A')"}, 'seat_preference': {'enum': ['window', 'aisle', 'bulkhead', 'exit_row', 'extra_legroom', 'quiet_zone', 'front_of_cabin', 'rear_of_cabin', 'specific', 'adjacent_seats', 'minimum_seats', 'class_availability', 'better_seat_upgrade'], 'type': 'string', 'description': 'Seat preference to alert on'}, 'adjacent_seats_count': {'type': 'integer', 'maximum': 9, 'minimum': 2, 'description': "Required when seat_preference is 'adjacent_seats' or 'minimum_seats' (2-9)"}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['alert_id'], 'properties': {'alert_id': {'type': 'integer', 'description': 'ID of the seat alert to delete'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema'}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['flight_number', 'preferences'], 'properties': {'cabin_class': {'enum': ['economy', 'premium_economy', 'business', 'first'], 'type': 'string', 'description': 'Optional cabin class filter'}, 'flight_date': {'type': 'string', 'description': 'Optional flight date in YYYY-MM-DD format'}, 'preferences': {'type': 'array', 'items': {'enum': ['window', 'aisle', 'extra_legroom', 'exit_row', 'quiet_zone', 'front', 'rear', 'bulkhead'], 'type': 'string'}, 'description': 'Seat preferences to match'}, 'flight_number': {'type': 'string', 'description': "Flight number, e.g. 'QF1'"}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['flight_number', 'seat_number'], 'properties': {'flight_date': {'type': 'string', 'description': 'Optional flight date in YYYY-MM-DD format'}, 'seat_number': {'type': 'string', 'description': "Seat number, e.g. '12A', '1F', '32K'"}, 'flight_number': {'type': 'string', 'description': "Flight number, e.g. 'QF1'"}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['flight_number'], 'properties': {'flight_date': {'type': 'string', 'description': 'Optional flight date in YYYY-MM-DD format'}, 'flight_number': {'type': 'string', 'description': "Flight number including airline code, e.g. 'QF1', 'AA716', 'BA178'"}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['flight_number'], 'properties': {'seat_number': {'type': 'string', 'description': "Optional seat number to filter reviews (e.g. '12A')"}, 'flight_number': {'type': 'string', 'description': "Flight number, e.g. 'QF1'"}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['flight_number'], 'properties': {'flight_date': {'type': 'string', 'description': 'Optional flight date in YYYY-MM-DD format'}, 'flight_number': {'type': 'string', 'description': "Flight number, e.g. 'QF1', 'AA716'"}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema'}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['flight_number'], 'properties': {'flight_date': {'type': 'string', 'description': 'Flight date in YYYY-MM-DD format (defaults to today)'}, 'flight_number': {'type': 'string', 'description': "Flight number, e.g. 'QF1', 'AA716'"}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['program'], 'properties': {'program': {'type': 'string', 'description': "Programme slug or loose name, e.g. 'aeroplan', 'British Airways', 'avios', 'world-of-hyatt'."}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['airline'], 'properties': {'airline': {'type': 'string', 'description': "IATA code (e.g. 'BA') or carrier name (e.g. 'British Airways')."}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['trip_id'], 'properties': {'trip_id': {'type': 'string', 'description': 'The `trip_id` field from an award search result row'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'program': {'type': 'string', 'description': 'Program slug. Omit to list all available programs.'}, 'quantity': {'type': 'integer', 'minimum': 1, 'description': 'Number of points/miles to price (e.g. 50000).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['airline'], 'properties': {'airline': {'type': 'string', 'description': "Airline slug or name, e.g. 'british-airways', 'Qatar Airways', 'virgin'."}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['program', 'airline'], 'properties': {'airline': {'type': 'string', 'pattern': '^[A-Z0-9]{2}$', 'description': 'Operating airline IATA code (e.g. AA, BA, QR)'}, 'program': {'enum': ['british-airways', 'aeroplan', 'alaska', 'american-aadvantage', 'virgin-atlantic', 'flying-blue'], 'type': 'string', 'description': 'Loyalty program to credit to'}, 'fare_class': {'type': 'string', 'description': 'Optional booking class letter (e.g. K, M, Y). If omitted, returns the full table for that program×airline.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['booking_id'], 'properties': {'booking_id': {'type': 'integer', 'minimum': 1}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['hotel_code', 'check_in_date', 'check_out_date'], 'properties': {'hotel_code': {'type': 'string', 'description': 'Hotel code or numeric id from search_hotels'}, 'check_in_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'check_out_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['booking_id'], 'properties': {'booking_id': {'type': 'integer', 'minimum': 1}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['carrier', 'departure', 'destination'], 'properties': {'carrier': {'type': 'string', 'description': 'Operating airline IATA code (2 letters, e.g. KE for Korean Air, AF for Air France).'}, 'departure': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': 'Origin airport IATA code (e.g. ICN).'}, 'destination': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': 'Destination airport IATA code (e.g. LAX).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['currency'], 'properties': {'currency': {'type': 'string', 'description': 'Points/miles currency — a slug (chase-ultimate-rewards) or loose name ("amex points", "marriott", "hyatt").'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['airline', 'departure_code', 'arrival_code'], 'properties': {'airline': {'enum': ['british_airways', 'qatar_airways', 'cathay_pacific', 'virgin_atlantic', 'iberia', 'emirates', 'qantas'], 'type': 'string'}, 'arrival_code': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'departure_code': {'type': 'string', 'pattern': '^[A-Z]{3}$'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['program'], 'properties': {'program': {'enum': ['aeroplan', 'aadvantage', 'singapore-krisflyer', 'cathay-asia-miles', 'turkish-miles-smiles', 'ana-mileage-club'], 'type': 'string', 'description': 'Programme slug.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['program'], 'properties': {'program': {'enum': ['british-airways', 'qatar-airways', 'singapore-airlines', 'cathay-pacific', 'emirates', 'etihad', 'flying-blue', 'aeroplan', 'turkish-airlines', 'ana', 'jetblue', 'jet2-emirates', 'virgin-atlantic', 'iberia', 'alaska-airlines', 'american-airlines', 'qantas', 'delta-skymiles', 'united', 'lifemiles', 'marriott-bonvoy', 'hilton-honors', 'hyatt'], 'type': 'string', 'description': 'Loyalty program slug (e.g. british-airways, emirates, aeroplan)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['key'], 'properties': {'key': {'type': 'string', 'description': 'Skill key from list_skills'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'alliance': {'enum': ['SkyTeam', 'Star Alliance', 'oneworld'], 'type': 'string', 'description': 'Filter by airline alliance'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'program': {'type': 'string', 'description': 'Optional — limit to a single program slug. Omit to return all tracked statuses.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['flight_number'], 'properties': {'origin': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': 'Optional departure airport IATA code'}, 'destination': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': 'Optional arrival airport IATA code'}, 'flight_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Optional departure date'}, 'flight_number': {'type': 'string', 'pattern': '^[A-Za-z0-9]{2,3}\\s*\\d{1,4}$', 'description': 'Flight code such as BA117 or AA 100'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'page': {'type': 'integer', 'minimum': 1, 'description': 'Page number (1-indexed). Defaults to 1.'}, 'status': {'enum': ['all', 'active', 'paused', 'cancelled', 'fired'], 'type': 'string'}, 'per_page': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Items per page (default 20, max 100).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'include_inactive': {'type': 'boolean', 'description': 'Include cancelled/paused orders. Defaults to false.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'status': {'enum': ['all', 'active', 'archived', 'planning', 'booked', 'completed'], 'type': 'string', 'description': 'Filter by status (default: all)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'region': {'enum': ['UK', 'US'], 'type': 'string', 'description': 'Filter by issuer region.'}, 'category': {'enum': ['companion', 'upgrade', 'companion_pass', 'upgrade_cert'], 'type': 'string', 'description': 'Filter by voucher category.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['airport_code', 'lounge_name', 'visit_date'], 'properties': {'notes': {'type': 'string', 'description': 'Optional notes'}, 'rating': {'type': 'integer', 'maximum': 5, 'minimum': 1, 'description': 'Optional 1-5 rating'}, 'visit_date': {'type': 'string', 'description': 'Date of the visit (YYYY-MM-DD)'}, 'lounge_name': {'type': 'string', 'description': 'Lounge name, e.g. Qantas First Lounge'}, 'airport_code': {'type': 'string', 'description': 'Airport IATA code, e.g. LHR'}, 'access_method': {'type': 'string', 'description': 'How you got in, e.g. Priority Pass, Amex Platinum, business ticket'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['flight_code'], 'properties': {'flight_code': {'type': 'string', 'description': "A flight code like 'BA117', 'AA 1234', or 'EK521'."}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['lounge_slug'], 'properties': {'lounge_slug': {'type': 'string', 'description': 'Lounge slug (from search results)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['lounge_slug'], 'properties': {'lounge_slug': {'type': 'string', 'description': 'Lounge slug of the review to delete'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['lounge_slug'], 'properties': {'visited_at': {'type': 'string', 'format': 'date', 'description': 'Visit date (YYYY-MM-DD) — needed only to disambiguate multiple visits'}, 'lounge_slug': {'type': 'string', 'description': 'Lounge slug of the visit to delete'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema'}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['access_method'], 'properties': {'access_method': {'enum': ['amex-platinum', 'chase-sapphire-reserve', 'capital-one-venture-x', 'citi-prestige', 'amex-centurion', 'hilton-aspire', 'marriott-brilliant', 'ritz-carlton', 'bilt-mastercard', 'priority-pass', 'loungekey', 'dragonpass', 'diners-club', 'plaza-premium', 'business-class', 'first-class', 'united-club', 'delta-sky-club', 'admirals-club', 'qantas-club', 'star-alliance', 'oneworld', 'skyteam', 'star-alliance-gold', 'oneworld-emerald', 'oneworld-sapphire', 'skyteam-elite-plus'], 'type': 'string', 'description': 'Access method slug (e.g. amex-platinum, priority-pass, chase-sapphire-reserve, business-class, star-alliance-gold)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['iata'], 'properties': {'iata': {'type': 'string', 'pattern': '^[A-Za-z]{3}$', 'description': 'Airport IATA code (e.g. LHR, JFK, SIN)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['slug'], 'properties': {'slug': {'type': 'string', 'description': 'Lounge slug (from search results or airport lounges)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema'}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema'}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'description': 'Max reviews to return (default 20, max 50)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'description': 'Max visits to return (default 20, max 50)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema'}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['network'], 'properties': {'network': {'enum': ['priority-pass', 'loungekey', 'dragonpass', 'plaza-premium', 'amex-centurion'], 'type': 'string', 'description': 'Network slug (priority-pass, loungekey, dragonpass, plaza-premium, amex-centurion)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema'}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema'}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['visited_at'], 'properties': {'notes': {'type': 'string', 'description': 'Optional notes about your visit'}, 'rating': {'type': 'integer', 'maximum': 5, 'minimum': 1, 'description': 'Your rating, 1 (poor) to 5 (excellent)'}, 'visited_at': {'type': 'string', 'format': 'date', 'description': 'Date of visit (YYYY-MM-DD)'}, 'lounge_name': {'type': 'string', 'description': "Lounge name — use with airport_iata if you don't have the slug."}, 'lounge_slug': {'type': 'string', 'description': 'Lounge slug (from search results). Preferred if known.'}, 'airport_iata': {'type': 'string', 'description': '3-letter airport IATA code — use with lounge_name.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['lounge_slug'], 'properties': {'lounge_slug': {'type': 'string', 'description': 'Lounge slug (from search results)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'query': {'type': 'string', 'minLength': 2, 'description': 'Search query (lounge name, airport name, IATA code, city, or country)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['lounge_slug'], 'properties': {'rating': {'type': 'integer', 'maximum': 5, 'minimum': 1, 'description': 'New rating, 1-5'}, 'content': {'type': 'string', 'minLength': 10, 'description': 'New review text (minimum 10 characters)'}, 'lounge_slug': {'type': 'string', 'description': 'Lounge slug of the review to update'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['lounge_slug'], 'properties': {'notes': {'type': 'string', 'description': 'New notes'}, 'rating': {'type': 'integer', 'maximum': 5, 'minimum': 1, 'description': 'New rating, 1-5'}, 'visited_at': {'type': 'string', 'format': 'date', 'description': 'Existing visit date (YYYY-MM-DD) — needed only to disambiguate multiple visits'}, 'lounge_slug': {'type': 'string', 'description': 'Lounge slug of the visit to update'}, 'new_visited_at': {'type': 'string', 'format': 'date', 'description': 'Change the visit date to this (YYYY-MM-DD)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['lounge_slug', 'rating', 'content'], 'properties': {'rating': {'type': 'integer', 'maximum': 5, 'minimum': 1, 'description': 'Rating from 1 (poor) to 5 (excellent)'}, 'content': {'type': 'string', 'minLength': 10, 'description': 'Review text (minimum 10 characters)'}, 'lounge_slug': {'type': 'string', 'description': 'Lounge slug (from search results)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['hotel_code', 'check_in_date', 'check_out_date', 'original_points', 'room_type', 'rate_plan'], 'properties': {'notes': {'type': 'string'}, 'rate_plan': {'type': 'string'}, 'room_type': {'type': 'string'}, 'hotel_code': {'type': 'string', 'description': 'Hotel code or numeric id from search_hotels'}, 'check_in_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'check_out_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'original_points': {'type': 'integer', 'minimum': 1, 'description': 'TOTAL points cost (per-night rate x nights)'}, 'confirmation_number': {'type': 'string'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['origin', 'destination', 'date'], 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'cabin': {'enum': ['economy', 'premium_economy', 'business', 'first'], 'type': 'string'}, 'origin': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'passengers': {'type': 'integer', 'maximum': 9, 'minimum': 1}, 'destination': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'flexibility_days': {'type': 'integer', 'maximum': 14, 'minimum': 0, 'description': 'Optional ± days flexibility — if set, also probes adjacent dates'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['origin', 'destination', 'date'], 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'cabin': {'enum': ['economy', 'premium_economy', 'business', 'first'], 'type': 'string'}, 'origin': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'passengers': {'type': 'integer', 'maximum': 9, 'minimum': 1}, 'destination': {'type': 'string', 'pattern': '^[A-Z]{3}$'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['target_program'], 'properties': {'target_tier': {'type': 'string', 'description': "Optional target tier (e.g. 'Gold'). Defaults to the next tier above the user's current one, or the top tier."}, 'target_program': {'type': 'string', 'description': "Program slug to reach status with — e.g. 'qatar-privilege-club', 'british-airways-executive-club'."}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['blocks'], 'properties': {'title': {'type': 'string', 'description': 'Card heading, e.g. "SFO → NRT in business".'}, 'blocks': {'type': 'array', 'items': {'type': 'object', 'required': ['kind'], 'properties': {'kind': {'enum': ['stats', 'table', 'bars', 'steps', 'list', 'note'], 'type': 'string', 'description': 'Block kind.'}, 'rows': {'type': 'array', 'items': {'type': 'array', 'items': {'type': 'string'}}, 'description': 'table: rows of cell strings.'}, 'text': {'type': 'string', 'description': 'note: the callout body.'}, 'tone': {'enum': ['info', 'warn', 'success', 'danger'], 'type': 'string', 'description': 'note: callout tone.'}, 'unit': {'type': 'string', 'description': 'bars: unit shown after each value, e.g. "pts".'}, 'items': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Rows for stats/bars/steps/list. Objects whose keys depend on the kind.'}, 'caption': {'type': 'string', 'description': 'table: optional caption under the table.'}, 'columns': {'type': 'array', 'items': {'type': 'string'}, 'description': 'table: column headers.'}}}, 'description': 'Blocks to render, in order. Max 10.'}, 'subtitle': {'type': 'string', 'description': 'One-line context under the heading.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['departure_code', 'arrival_code', 'date'], 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Travel date (YYYY-MM-DD)'}, 'cabin': {'enum': ['economy', 'premium_economy', 'business', 'first'], 'type': 'string', 'description': 'Cabin to unlock and rank by (default: economy). Results list EVERY bookable cabin the airline returned, not just this one — free accounts may only request economy.'}, 'flex_days': {'type': 'integer', 'maximum': 7, 'minimum': 0, 'description': 'Also search this many days either side of the date. Only widens the seats.aero results (all 24 programmes); the per-airline search stays on the exact date.'}, 'arrival_code': {'type': 'string', 'pattern': '^[A-Z]{3}$', 'description': 'Arrival airport IATA code (e.g. JFK)'}, 'departure_code': {'type': 'string', 'pattern': '^[A-Z]{3}$', 'description': 'Departure airport IATA code (e.g. LHR)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['airline', 'departure_code', 'arrival_code', 'date'], 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'cabin': {'enum': ['economy', 'premium_economy', 'business', 'first'], 'type': 'string', 'description': 'Cabin to unlock and rank by (default: economy). Results list EVERY bookable cabin the airline returned, not just this one — free accounts may only request economy.'}, 'airline': {'enum': ['british_airways', 'qatar_airways', 'cathay_pacific', 'virgin_atlantic', 'iberia', 'alaska_airlines', 'american_airlines', 'qantas', 'jetblue', 'frontier', 'southwest', 'delta', 'etihad', 'emirates', 'japan_airlines', 'united', 'tap_portugal', 'cape_air', 'icelandair', 'condor', 'aer_lingus', 'el_al', 'turkish_airlines', 'ana', 'lufthansa', 'air_france', 'klm', 'smiles', 'qantas_rewards', 'alaska_direct'], 'type': 'string'}, 'arrival_code': {'type': 'string', 'description': 'IATA code (SIN), or a city or airport name'}, 'departure_code': {'type': 'string', 'description': 'IATA code (LHR), or a city or airport name (Heathrow, Tokyo)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['origin', 'destination', 'date'], 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'cabin': {'enum': ['economy', 'premium_economy', 'business', 'first'], 'type': 'string'}, 'origin': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'source': {'enum': ['auto', 'duffel', 'ignav', 'airtrfx'], 'type': 'string', 'description': "Default 'auto' tries Duffel, then Ignav, then AirTRFX. Force one with 'duffel', 'ignav' or 'airtrfx'."}, 'airline': {'type': 'string', 'description': "Airline slug for the 'airtrfx' source (e.g. 'american', 'klm'). AirTRFX is per-airline, so this is required to use it."}, 'passengers': {'type': 'integer', 'maximum': 9, 'minimum': 1}, 'destination': {'type': 'string', 'pattern': '^[A-Z]{3}$'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'brand': {'enum': ['Marriott', 'Hilton', 'IHG', 'Hyatt'], 'type': 'string'}, 'limit': {'type': 'integer', 'maximum': 20, 'minimum': 1}, 'query': {'type': 'string', 'description': 'Hotel name or city'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['origin', 'destination', 'date'], 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'cabin': {'enum': ['economy', 'business', 'first'], 'type': 'string', 'description': 'Target cabin class (default: business)'}, 'origin': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'destination': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'points_value_cents': {'type': 'number', 'description': 'How you value points in cents/pence per point (default: 1.5)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 10, 'minimum': 1, 'description': 'How many excerpts to return (default 5)'}, 'query': {'type': 'string', 'description': "Natural-language question or topic, e.g. 'best Avios redemption sweet spots from London'"}, 'source': {'enum': ['miles_and_points_daily', 'smart_with_points'], 'type': 'string', 'description': 'Restrict to one publication. Omit to search both.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'card': {'type': 'string', 'description': "Filter to a specific card by name (e.g. 'Amex Gold'). Optional."}, 'limit': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Max entries to return (default 20).'}, 'query': {'type': 'string', 'description': "Merchant, card, or category to search for (e.g. 'Whole Foods', 'Amex Gold', 'Dining'). Optional."}, 'country': {'type': 'string', 'description': "Two-letter country code to filter by (e.g. 'US', 'UK'). Optional."}, 'category': {'type': 'string', 'description': "Filter to a bonus category (e.g. 'Groceries', 'Dining'). Optional."}, 'min_multiplier': {'type': 'number', 'description': 'Only return entries earning at least this multiplier (e.g. 4 for 4x and up). Optional.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['airline', 'departure_code', 'arrival_code', 'date'], 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}(-\\d{2})?$', 'description': 'Month to search (YYYY-MM or YYYY-MM-DD)'}, 'airline': {'enum': ['british_airways', 'qatar_airways', 'cathay_pacific', 'virgin_atlantic', 'iberia', 'qantas', 'qantas_rewards', 'etihad', 'smiles'], 'type': 'string'}, 'arrival_code': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'departure_code': {'type': 'string', 'pattern': '^[A-Z]{3}$'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['departure_code', 'arrival_code', 'date', 'passengers'], 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'cabin': {'enum': ['economy', 'premium_economy', 'business', 'first'], 'type': 'string'}, 'passengers': {'type': 'integer', 'maximum': 9, 'minimum': 2}, 'arrival_code': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'departure_code': {'type': 'string', 'pattern': '^[A-Z]{3}$'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'maximum': 10, 'minimum': 1, 'description': 'How many excerpts to return (default 5).'}, 'query': {'type': 'string', 'description': "Natural-language question or topic to find in the user's documents."}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['program', 'tier'], 'properties': {'tier': {'type': 'string', 'description': "Exact elite tier name as used by the program — e.g. 'Gold' (BA), 'Diamond Medallion' (Delta), 'Globalist' (Hyatt), 'Titanium Elite' (Bonvoy). Case-insensitive; will be normalized to official casing."}, 'notes': {'type': 'string', 'description': 'Optional notes (free-form).'}, 'program': {'type': 'string', 'description': "Loyalty program slug — e.g. 'british-airways-executive-club', 'marriott-bonvoy', 'world-of-hyatt', 'delta-skymiles'. Use the slug from the known programs list."}, 'member_id': {'type': 'string', 'description': 'Optional loyalty number.'}, 'expires_on': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Optional ISO date when this status expires.'}, 'target_tier': {'type': 'string', 'description': 'Optional — a tier the user is chasing (must be a valid tier for the program).'}, 'qualifying_balance': {'type': 'integer', 'minimum': 0, 'description': 'Optional — current qualifying units this period (Tier Points / XP / Loyalty Points / MQD / PQP / nights), for status-progress tracking.'}, 'qualifying_year_end': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Optional — ISO date the qualifying/membership year ends.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['program'], 'properties': {'tier': {'type': 'string', 'description': "Optional — the user's CURRENT tier. Required only if no status is tracked for this program yet."}, 'program': {'type': 'string', 'description': "Loyalty program slug — e.g. 'british-airways-executive-club', 'marriott-bonvoy'."}, 'target_tier': {'type': 'string', 'description': "Optional tier the user is chasing — e.g. 'Gold'. Must be a valid tier for the program. Defaults the progress bar to this instead of the next tier up."}, 'qualifying_balance': {'type': 'integer', 'minimum': 0, 'description': 'Current qualifying units earned this period (Tier Points / XP / Loyalty Points / MQD / PQP / nights).'}, 'qualifying_year_end': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'ISO date the current qualifying/membership year ends (e.g. BA membership years are anchored to the join date — ask the user).'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['type', 'summary', 'details', 'confirmed'], 'properties': {'type': {'enum': ['feedback', 'bug'], 'type': 'string', 'description': 'Whether this is general feedback or a bug report.'}, 'details': {'type': 'string', 'maxLength': 4000, 'description': 'What the user wants the Award Travel Finder team to know.'}, 'summary': {'type': 'string', 'maxLength': 160, 'description': 'A concise title for the feedback or bug.'}, 'page_url': {'type': 'string', 'maxLength': 500, 'description': 'The current Award Travel Finder path or URL, when known.'}, 'confirmed': {'type': 'boolean', 'description': 'True only once the user has confirmed that this report should be sent.'}, 'actual_behavior': {'type': 'string', 'maxLength': 4000, 'description': 'For bugs, what actually happened.'}, 'expected_behavior': {'type': 'string', 'maxLength': 4000, 'description': 'For bugs, what the user expected to happen.'}, 'steps_to_reproduce': {'type': 'string', 'maxLength': 4000, 'description': 'For bugs, the steps that reproduce the problem, if known.'}}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['airline_code'], 'properties': {'airline_code': {'type': 'string', 'description': 'IATA airline code, e.g. "UA" for United, "DL" for Delta'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['flight_number'], 'properties': {'flight_number': {'type': 'string', 'description': 'IATA flight number, e.g. "UA123" or "DL456"'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'airline_code': {'type': 'string', 'description': 'Optional IATA airline code to filter rollouts, e.g. "UA"'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'airline_code': {'type': 'string', 'description': 'IATA airline code, e.g. "UA"'}, 'flight_number': {'type': 'string', 'description': 'IATA flight number, e.g. "UA123"'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['tail_number'], 'properties': {'tail_number': {'type': 'string', 'description': 'Aircraft registration / tail number, e.g. "N12345"'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['flight_number'], 'properties': {'date': {'type': 'string', 'description': 'Flight date in YYYY-MM-DD format. Defaults to today.'}, 'flight_number': {'type': 'string', 'description': 'IATA flight number, e.g. "UA123"'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema'}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': 'Search query, e.g. "United" or "UA123"'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'provider': {'enum': ['seats_aero', 'award_wallet', 'google_sheets', 'tripit', 'autopilot'], 'type': 'string', 'description': 'Optional — sync just this provider. Omit to sync all connected integrations.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['booking_id'], 'properties': {'kind': {'enum': ['award', 'cash'], 'type': 'string'}, 'notes': {'type': 'string'}, 'origin': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'airline': {'type': 'string'}, 'program': {'type': 'string'}, 'trip_id': {'type': 'string'}, 'cash_paid': {'type': 'number', 'minimum': 0}, 'booking_id': {'type': 'integer', 'minimum': 1}, 'taxes_paid': {'type': 'number'}, 'cabin_class': {'enum': ['economy', 'premium_economy', 'business', 'first'], 'type': 'string'}, 'destination': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'return_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'points_spent': {'type': 'integer', 'minimum': 0}, 'flight_number': {'type': 'string'}, 'departure_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'confirmation_number': {'type': 'string'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['booking_id'], 'properties': {'kind': {'enum': ['award', 'cash'], 'type': 'string'}, 'notes': {'type': 'string'}, 'hotel_id': {'type': 'string'}, 'rate_plan': {'type': 'string'}, 'room_type': {'type': 'string'}, 'booking_id': {'type': 'integer', 'minimum': 1}, 'check_in_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'check_out_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'original_points': {'type': 'integer', 'minimum': 0}, 'cash_rate_currency': {'type': 'string'}, 'monitoring_enabled': {'type': 'boolean'}, 'confirmation_number': {'type': 'string'}, 'original_pay_rate_usd': {'type': 'number', 'minimum': 0}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['heading', 'body'], 'properties': {'body': {'type': 'string', 'description': 'Section body in markdown'}, 'kind': {'enum': ['flight', 'hotel', 'note', 'budget'], 'type': 'string', 'description': 'Section kind (default: note)'}, 'heading': {'type': 'string', 'description': "Section heading, e.g. 'Outbound flight' or 'Hotel: Tokyo'"}, 'trip_id': {'type': 'integer', 'description': "Target trip. If omitted, the user's most recent active trip is used (or a new one is created)."}, 'section_id': {'type': 'string', 'description': 'Existing section id to update. Omit to append a new section.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['program', 'balance'], 'properties': {'balance': {'type': 'integer', 'minimum': 0}, 'program': {'type': 'string', 'description': 'Loyalty program name'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['monitor_id'], 'properties': {'cabin': {'enum': ['economy', 'premium_economy', 'business', 'first'], 'type': 'string'}, 'status': {'enum': ['active', 'paused'], 'type': 'string', 'description': 'Pause or resume the monitor'}, 'airlines': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Replaces the existing airline filter; pass [] to watch all carriers'}, 'max_points': {'type': 'integer'}, 'monitor_id': {'type': 'integer'}, 'passengers': {'type': 'integer', 'maximum': 9, 'minimum': 1}, 'latest_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}, 'earliest_date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['code', 'sessionId'], 'properties': {'code': {'type': 'string', 'description': '(required) Unique identifier of the Viator experience to retrieve details for.This value must correspond to an experience previously returned by the search_experiences tool.The model must not guess or make up experience IDs; if the user request is ambiguous (e.g., multiple items shown), the model must ask which experience they mean before calling the tool.'}, 'locale': {'type': 'string', 'description': '(optional) The language/locale code requested for content localization (e.g., en-US, en-GB, fr-FR).If not provided by the user, the model should infer it from context or default to en.Used to descriptions, highlights, and content where available.'}, 'currency': {'type': 'string', 'description': '(optional) Currency code for from-price display (e.g., USD, EUR, GBP).When provided, fromPrice and fromPriceBeforeDiscount are populated.When omitted, pricing fields are not returned.Should match the currency used in the preceding search_experiences call when available.'}, 'language': {'type': 'string', 'description': '(deprecated) This value is deprecated and should not be sent. Please only send the locale.'}, 'sessionId': {'type': 'string', 'description': '(mandatory) A unique identifier, ideally an UUID, for the current user conversation. The same identifier should be used until the user opens a new chat.'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['searchTerm', 'startDate', 'endDate', 'sessionId'], 'properties': {'limit': {'type': 'integer', 'format': 'int32', 'description': '(optional) Maximum number of products to return, between 1 and 10.If omitted, defaults to 5.Not intended as a user-facing refinement mechanism; the model should not use it to alter intent.'}, 'locale': {'type': 'string', 'description': '(optional) The language/locale code requested for content localization (e.g., en-US, en-GB, fr-FR).If not provided by the user, the model should infer it from context or default to en.Used to localize title, and other content where available.'}, 'endDate': {'type': 'string', 'description': "(required) The last date the user is available to participate in an experience, formatted as ISO-8601 (YYYY-MM-DD).Also derived from natural-language expressions (e.g., 'this summer', 'next weekend', 'early April', 'tomorrow'); if the user gives a single day, set endDate = startDate. When resolving these expressions, use the destination timezone from searchTerm when inferable, otherwise the user's timezone. Must be >= startDate. Used to widen search results to a date range."}, 'toPrice': {'type': 'number', 'description': '(optional) Maximum per-person price to include in search, expressed in the requested currency.Used when the user expresses a maximum budget (e.g., “under $100”)'}, 'currency': {'type': 'string', 'description': '(optional) Currency code used for interpreting and filtering prices.The model should infer currency from context when possible (e.g., GBP if the user is in the UK; USD if the user specifies dollars).Default value: USDValid ISO currency codes include: AED, ARS, AUD, BRL, CAD, CHF, CLP, CNY, COP, DKK, EUR, FJD, GBP, HKD, IDR, ILS, INR, ISK, JPY, KRW, MXN, MYR, NOK, NZD, PEN, PHP, PLN, SEK, SGD, THB, TRY, TWD, USD, VND, ZAR'}, 'duration': {'type': 'integer', 'format': 'int32', 'description': '(optional) User preference for maximum experience length, expressed in minutes.Used to filter results to experiences at or below this duration.'}, 'fromPrice': {'type': 'number', 'description': '(optional) Minimum per-person price to include in search, expressed in the requested currency.Used when the user specifies a lower budget boundary (e.g., “at least €50”).'}, 'sessionId': {'type': 'string', 'description': '(mandatory) A unique identifier, ideally an UUID, for the current user conversation. The same identifier should be used until the user opens a new chat.'}, 'startDate': {'type': 'string', 'description': "(required) The first date the user is available to participate in an experience, formatted as ISO-8601 (YYYY-MM-DD).The model must convert natural-language expressions (e.g., 'this summer', 'next weekend', 'early April', 'tomorrow') into a specific ISO date before calling the tool. When resolving these expressions, if searchTerm names a destination, use that location's local timezone. Otherwise, use the user's current timezone. The date must not be in the past. Must be before the endDate."}, 'searchTerm': {'type': 'string', 'description': "(required) Natural-language description of what the user is looking for. Must be non-blank and at most 500 characters; the tool rejects empty, whitespace-only, or over-length values. Include destination, activity type, and preferences in this single free-text query (e.g. 'walking tours in Paris, France'). Do not embed dates, prices, duration limits, or currency here—use the dedicated fields."}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'program': {'type': 'string', 'description': "Filter to a single program (e.g. 'Avios', 'Marriott Bonvoy')"}, 'category': {'enum': ['all', 'airline', 'hotel', 'transfer'], 'type': 'string', 'description': 'Filter (default: all)'}}}
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['airport_code'], 'properties': {'airline': {'type': 'string', 'description': 'Optional — filter the result to this airline name (substring match)'}, 'destination': {'type': 'string', 'description': 'Optional — filter to flights serving this destination IATA or city'}, 'airport_code': {'type': 'string', 'pattern': '^[A-Z]{3,4}$', 'description': 'IATA (3-letter) or ICAO (4-letter) airport code'}}}
Recent tool changes
Similar MCP servers
Cancun4me — Reservas de Hotel
Searches, quotes, books, tracks, cancels, and provides vouchers for hotels in Cancun and Riviera Maya, with Stripe payment links.
x402card: Virtual Cards + Freeland eSIM
Supports x402 virtual-card issuance and top-ups and lists prepaid travel eSIM plans payable with Base USDC.
esimker eSIM store
Searches travel eSIM plans and enables purchases, top-ups, wallet funding, and checkout through card, crypto, or prepaid balance.
Hotel Booking AI MCP
Searches hotels and live room rates, checks availability, creates and manages bookings, and generates payment requests.
booking
Resolves travel locations, flights, and trains; obtains private-driver quotes; and creates payment links for Paris transfers and …
Gitsim Chat
Searches, orders and manages international eSIM data packages and provides Stripe checkout links for purchases and top-ups.
topup
Lists and sells travel eSIMs, mobile top-ups, prepaid services, and international payment offers using user-approved USDC wallet …
pifini
Searches events and places across the Caribbean and Latin America, provides listings and reviews, and creates hosted ticket payme…