MCP Server

upgrade-agent

ai.upgradeagent/upgrade-agent
Travel & Hospitality Public & reachable MCP 2025-11-25

What this MCP does

Answers travel-upgrade questions, checks booking eligibility, provides upgrade pricing and bid guidance, places or modifies bids, and watches bookings for better travel options.

ask_upgrade_agent
Answer a general (not booking-specific) travel-upgrade question — how bid/instant/points upgrades work, eligibility rules, bidding strategy, and which airlines, cruise lines, or rail operators offer upgrades. Use this for informational questions only. To check a SPECIFIC booking, use start_eligibility_check (preferred — collects PNR + last name on a secure page).
Read only Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['question'], 'properties': {'askedBy': {'type': 'string', 'description': "Identifier for the calling agent/app (e.g. 'claude-cowork', 'aircanada-bot'). Used for per-partner reporting on which agents ask about their brand."}, 'question': {'type': 'string', 'description': "The traveler's upgrade question, in natural language."}, 'conversationId': {'type': 'string', 'description': "Optional stable conversation id â\x80\x94 carries the operator in play across follow-up questions (e.g. 'what about the return?')."}}, 'additionalProperties': False}
cancel_bid
Cancel Upgrade Bid
Withdraw a bid already placed on a booking the traveler checked with start_eligibility_check. Pass the sessionId (or conversationId). If the booking has more than one bid, pass orderChangeId to say which — get_bid_status lists them. Confirm with the traveler before calling; this releases the bid.
Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'confirm': {'type': 'boolean', 'description': 'Set true once the traveler has confirmed they want the bid withdrawn.'}, 'sessionId': {'type': 'string', 'description': 'The sessionId from start_eligibility_check. Optional if conversationId is passed.'}, 'orderChangeId': {'type': 'string', 'description': 'Which bid to cancel, when the booking has more than one (from get_bid_status).'}, 'conversationId': {'type': 'string', 'description': 'Stable conversation id (reuses the last checked booking).'}, 'presentationReport': {'type': 'array', 'items': {'type': 'object', 'required': ['offerId', 'shown'], 'properties': {'shown': {'type': 'boolean', 'description': 'Whether you actually presented this offer to the traveler.'}, 'reason': {'enum': ['REASON_PRICE_CEILING', 'REASON_LOW_PROBABILITY', 'REASON_PREFERENCE_CLASH'], 'type': 'string', 'description': 'Why it was filtered or deprioritized â\x80\x94 supply when shown=false (over budget â\x86\x92 REASON_PRICE_CEILING; low acceptance odds â\x86\x92 REASON_LOW_PROBABILITY; conflicts with stated preferences â\x86\x92 REASON_PREFERENCE_CLASH).'}, 'offerId': {'type': 'string', 'description': "The offer id from the eligibility result's 'Offer ids for presentation reporting' line."}}, 'additionalProperties': False}, 'description': 'REPORT WHAT YOU SHOWED: if you filtered, hid, or deprioritized ANY offer from the eligibility result before presenting to the traveler, report every offer here with shown + reason. Contains no traveler data; powers partner analytics.'}}, 'additionalProperties': False}
check_upgrade_eligibility
Check Booking Eligibility
Looks up a booking's upgrade eligibility from a booking reference, last name, and airline. Returns eligibility status, upgrade options, bid ranges, and a session id for follow-up bid tools.
Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['pnr', 'lastName'], 'properties': {'pnr': {'type': 'string', 'description': 'The booking reference or PNR (e.g. ABC123).'}, 'carrier': {'type': 'string', 'description': "Airline/cruise/rail name or IATA code (e.g. 'SWISS' or 'LX')."}, 'language': {'type': 'string', 'description': "ISO 639-1 language for the offer page (e.g. 'fr', 'es'). Defaults to 'en'."}, 'lastName': {'type': 'string', 'description': 'Passenger last name, exactly as it appears on the booking.'}, 'intentContext': {'type': 'object', 'properties': {'notes': {'type': 'string', 'maxLength': 200, 'description': "Short preference note, e.g. 'anniversary trip, wants lie-flat'. For privacy, leave out booking references and names."}, 'budgetAmount': {'type': 'number', 'description': "Traveler's stated budget for the upgrade.", 'exclusiveMinimum': 0}, 'budgetCurrency': {'type': 'string', 'maxLength': 3, 'description': "ISO currency for the budget, e.g. 'CAD'."}, 'preferredCabin': {'enum': ['BUSINESS', 'FIRST', 'PREMIUM_ECONOMY'], 'type': 'string'}}, 'description': "The traveler's stated shopping intent â\x80\x94 bound to the session and surfaced back so offers are presented against it.", 'additionalProperties': False}, 'conversationId': {'type': 'string', 'description': 'Optional stable conversation id â\x80\x94 lets place_bid/modify_bid reuse this booking.'}, 'travelerQuestion': {'type': 'string', 'description': "The traveler's request in their own words, verbatim (e.g. 'can I upgrade my Swiss flight to business?'). For privacy, leave out the booking reference, last name, email, and other personal details. Pass it whenever the traveler asked in free text â\x80\x94 it improves Upgrade Agent's answers over time."}}, 'additionalProperties': False}
get_bid_status
Get Bid Status
Check any bids already on a booking (submitted / accepted / declined), the bid-eligible cabins with their ranges, and the current cart. Pass the sessionId from start_eligibility_check. In hosts that render app widgets it shows a manage screen inline. Use modify_bid / cancel_bid to change or withdraw a bid.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'sessionId': {'type': 'string', 'description': 'The sessionId from start_eligibility_check. Optional if conversationId is passed.'}, 'conversationId': {'type': 'string', 'description': 'Stable conversation id (reuses the last checked booking).'}, 'presentationReport': {'type': 'array', 'items': {'type': 'object', 'required': ['offerId', 'shown'], 'properties': {'shown': {'type': 'boolean', 'description': 'Whether you actually presented this offer to the traveler.'}, 'reason': {'enum': ['REASON_PRICE_CEILING', 'REASON_LOW_PROBABILITY', 'REASON_PREFERENCE_CLASH'], 'type': 'string', 'description': 'Why it was filtered or deprioritized â\x80\x94 supply when shown=false (over budget â\x86\x92 REASON_PRICE_CEILING; low acceptance odds â\x86\x92 REASON_LOW_PROBABILITY; conflicts with stated preferences â\x86\x92 REASON_PREFERENCE_CLASH).'}, 'offerId': {'type': 'string', 'description': "The offer id from the eligibility result's 'Offer ids for presentation reporting' line."}}, 'additionalProperties': False}, 'description': 'REPORT WHAT YOU SHOWED: if you filtered, hid, or deprioritized ANY offer from the eligibility result before presenting to the traveler, report every offer here with shown + reason. Contains no traveler data; powers partner analytics.'}}, 'additionalProperties': False}
get_eligibility_result
Read the result of a secure eligibility check started with start_eligibility_check. Pass the sessionId returned by that tool. Returns the live eligibility outcome (eligible options, bid ranges, offer URL) once the passenger has submitted their details on the secure page — or a 'still waiting' status if they haven't yet.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['sessionId'], 'properties': {'sessionId': {'type': 'string', 'description': 'The sessionId returned by start_eligibility_check.'}, 'conversationId': {'type': 'string', 'description': 'Optional stable conversation id â\x80\x94 lets later tools (place_bid) reuse this booking without re-passing the sessionId.'}}, 'additionalProperties': False}
get_partner_info
Get the full upgrade profile for one operator — products offered (with the official page URL), loyalty program, cabin paths, how to access, and summary. More detailed than ask_upgrade_agent. Accepts an IATA code or a name (e.g. 'AC' or 'Air Canada').
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['carrier'], 'properties': {'carrier': {'type': 'string', 'description': "Operator IATA code or name, e.g. 'LH' or 'Lufthansa'."}, 'travelerQuestion': {'type': 'string', 'description': "The traveler's request in their own words, verbatim (e.g. 'can I upgrade my Swiss flight to business?'). For privacy, leave out the booking reference, last name, email, and other personal details. Pass it whenever the traveler asked in free text â\x80\x94 it improves Upgrade Agent's answers over time."}}, 'additionalProperties': False}
get_price_breakdown
Get Price Breakdown
Show the itemized all-in cost of an upgrade before the traveler commits — the amount plus any taxes and fees. Pass the sessionId (or conversationId), the amount (omit it for INSTANT — the airline's fixed price is used), and the cabin/segment if the booking has more than one option. For a BID it also returns the operator's own bid-strength read. Use it to answer 'what will this actually cost me?' before place_bid.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'amount': {'type': 'number', 'description': 'The amount to price â\x80\x94 a bid in the offer currency, or a number of points for purchaseType POINTS. Omit for INSTANT (fixed price).'}, 'segment': {'type': 'string', 'description': "Route 'YUL-LHR' or flight number, if more than one is eligible."}, 'sessionId': {'type': 'string', 'description': 'The sessionId from start_eligibility_check. Optional if conversationId is passed.'}, 'upgradeType': {'enum': ['BUSINESS', 'FIRST', 'PREMIUM_ECONOMY'], 'type': 'string'}, 'purchaseType': {'enum': ['BID', 'POINTS', 'INSTANT'], 'type': 'string', 'description': "BID (default), POINTS, or INSTANT (buy now at the airline's fixed price)."}, 'conversationId': {'type': 'string', 'description': 'Stable conversation id (reuses the last checked booking).'}}, 'additionalProperties': False}
get_upgrade_pricing
Returns typical upgrade bid ranges (low / typical / high, per cabin) for an operator, aggregated from anonymized eligibility checks. Accepts an IATA code or a name. Says so when there isn't enough observed data.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'cabin': {'enum': ['BUSINESS', 'FIRST', 'PREMIUM_ECONOMY'], 'type': 'string', 'description': 'Optional: limit to one target cabin.'}, 'carrier': {'type': 'string', 'description': "Operator IATA code or name, e.g. 'LH' or 'Lufthansa'. Optional if conversationId carries the operator from earlier."}, 'conversationId': {'type': 'string', 'description': 'Optional stable conversation id â\x80\x94 reuses the operator in play.'}, 'travelerQuestion': {'type': 'string', 'description': "The traveler's request in their own words, verbatim (e.g. 'can I upgrade my Swiss flight to business?'). For privacy, leave out the booking reference, last name, email, and other personal details. Pass it whenever the traveler asked in free text â\x80\x94 it improves Upgrade Agent's answers over time."}}, 'additionalProperties': False}
get_watch_status
Check a Watcher Concierge watch (created with start_watch). Returns its status, what it's watching for, and any improvements found so far. Pass the token from start_watch.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['token'], 'properties': {'token': {'type': 'string', 'description': 'The watch token returned by start_watch.'}}, 'additionalProperties': False}
list_partners
List the travel operators that offer upgrade programs, with optional filters. Returns each operator's name, IATA/code, vertical, region, and the upgrade products it offers. Use this to build travel workflows or answer 'which airlines/cruise lines offer upgrades'.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'region': {'enum': ['Americas', 'Europe', 'MEA', 'APAC', 'Cruise', 'Rail'], 'type': 'string', 'description': 'Filter by region (MEA = Middle East & Africa, APAC = Asia-Pacific).'}, 'product': {'enum': ['bid_upgrade', 'instant_upgrade', 'seat_blocker', 'premium_seating'], 'type': 'string', 'description': 'Only operators that offer this product.'}, 'vertical': {'enum': ['airline', 'cruise', 'rail', 'hotel'], 'type': 'string', 'description': 'Filter by operator type.'}}, 'additionalProperties': False}
mint_eligibility_session
Mint Eligibility Session (internal)
Internal helper for the inline eligibility form: creates a secure session and returns its id. No UI; agents should use start_eligibility_check instead.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'carrier': {'type': 'string', 'description': 'Operator name/IATA if known.'}, 'language': {'type': 'string', 'description': "ISO 639-1 language (default 'en')."}}, 'additionalProperties': False}
modify_bid
Modify Upgrade Bid
Change the amount of a bid already prepared/placed on a booking. Same as place_bid but for updating an existing bid — pass the sessionId, the NEW amount, and the cabin/segment if ambiguous. The new amount is validated against the airline's range; payment/confirmation completes on the operator's secure page.
Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['amount'], 'properties': {'amount': {'type': 'number', 'description': 'The NEW bid amount in the offer currency.'}, 'confirm': {'type': 'boolean', 'description': 'Set true to confirm and commit a REAL bid update (human-in-the-loop). Only required once live bid submission is enabled.'}, 'segment': {'type': 'string', 'description': "Route 'YUL-LHR' or flight number, if ambiguous."}, 'quantity': {'type': 'number'}, 'sessionId': {'type': 'string', 'description': 'The sessionId from start_eligibility_check. Optional if conversationId is passed.'}, 'upgradeType': {'enum': ['BUSINESS', 'FIRST', 'PREMIUM_ECONOMY'], 'type': 'string'}, 'conversationId': {'type': 'string', 'description': 'Stable conversation id (reuses the last checked booking).'}, 'presentationReport': {'type': 'array', 'items': {'type': 'object', 'required': ['offerId', 'shown'], 'properties': {'shown': {'type': 'boolean', 'description': 'Whether you actually presented this offer to the traveler.'}, 'reason': {'enum': ['REASON_PRICE_CEILING', 'REASON_LOW_PROBABILITY', 'REASON_PREFERENCE_CLASH'], 'type': 'string', 'description': 'Why it was filtered or deprioritized â\x80\x94 supply when shown=false (over budget â\x86\x92 REASON_PRICE_CEILING; low acceptance odds â\x86\x92 REASON_LOW_PROBABILITY; conflicts with stated preferences â\x86\x92 REASON_PREFERENCE_CLASH).'}, 'offerId': {'type': 'string', 'description': "The offer id from the eligibility result's 'Offer ids for presentation reporting' line."}}, 'additionalProperties': False}, 'description': 'REPORT WHAT YOU SHOWED: if you filtered, hid, or deprioritized ANY offer from the eligibility result before presenting to the traveler, report every offer here with shown + reason. Contains no traveler data; powers partner analytics.'}}, 'additionalProperties': False}
partner_question_insights
Report what travelers and AI agents are asking about a specific partner's upgrade programs: total volume, the most frequent questions, which agents are asking, and which answers were strong vs. which need review. Pass the partner name (e.g. 'Air Canada', 'MSC Cruises').
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'partner': {'type': 'string', 'description': "Partner name, e.g. 'Air Canada'. Ignored for partner-scoped tokens (locked to their own brand)."}}, 'additionalProperties': False}
place_bid
Place Upgrade Bid
Places an upgrade bid, or buys a fixed-price (INSTANT) upgrade, for a checked booking. Takes an eligibility-check session id, an amount (omitted for INSTANT), and a cabin/segment. Returns a secure operator link to complete payment.
Open world
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'amount': {'type': 'number', 'description': "Bid amount in the offer currency (or points for POINTS). OMIT for INSTANT â\x80\x94 the airline's fixed price is used automatically."}, 'confirm': {'type': 'boolean', 'description': 'Set true to confirm and commit a REAL bid submission (human-in-the-loop). Only required once live bid submission is enabled; otherwise the bid is staged for secure payment.'}, 'segment': {'type': 'string', 'description': "Route 'YUL-LHR' or flight number, if more than one segment is eligible."}, 'quantity': {'type': 'number', 'description': 'Number of seats (default 1).'}, 'sessionId': {'type': 'string', 'description': 'The sessionId from start_eligibility_check. Optional if conversationId is passed (reuses the last checked booking).'}, 'upgradeType': {'enum': ['BUSINESS', 'FIRST', 'PREMIUM_ECONOMY'], 'type': 'string', 'description': 'Target cabin, if the booking has more than one eligible option.'}, 'purchaseType': {'enum': ['BID', 'POINTS', 'INSTANT'], 'type': 'string', 'description': "BID (money offer, default), POINTS to redeem loyalty points ('amount' = points), or INSTANT to buy now at the airline's fixed price (no amount needed)."}, 'conversationId': {'type': 'string', 'description': 'Stable conversation id used on get_eligibility_result â\x80\x94 lets you bid without re-passing the sessionId.'}, 'presentationReport': {'type': 'array', 'items': {'type': 'object', 'required': ['offerId', 'shown'], 'properties': {'shown': {'type': 'boolean', 'description': 'Whether you actually presented this offer to the traveler.'}, 'reason': {'enum': ['REASON_PRICE_CEILING', 'REASON_LOW_PROBABILITY', 'REASON_PREFERENCE_CLASH'], 'type': 'string', 'description': 'Why it was filtered or deprioritized â\x80\x94 supply when shown=false (over budget â\x86\x92 REASON_PRICE_CEILING; low acceptance odds â\x86\x92 REASON_LOW_PROBABILITY; conflicts with stated preferences â\x86\x92 REASON_PREFERENCE_CLASH).'}, 'offerId': {'type': 'string', 'description': "The offer id from the eligibility result's 'Offer ids for presentation reporting' line."}}, 'additionalProperties': False}, 'description': 'REPORT WHAT YOU SHOWED: if you filtered, hid, or deprioritized ANY offer from the eligibility result before presenting to the traveler, report every offer here with shown + reason. Contains no traveler data; powers partner analytics.'}}, 'additionalProperties': False}
predict_bid_success
Predict Bid Success
Estimates how likely a specific bid amount is to be accepted, grounded in Plusgrade's resolved bid outcomes for the carrier and cabin, plus the operator's own bid-strength read when a checked booking's session id is provided. Returns null when there isn't enough data.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['amount'], 'properties': {'cabin': {'enum': ['BUSINESS', 'FIRST', 'PREMIUM_ECONOMY'], 'type': 'string', 'description': 'Optional: target cabin.'}, 'amount': {'type': 'number', 'description': "The bid amount to evaluate, in the operator's offer currency."}, 'carrier': {'type': 'string', 'description': "Operator IATA code or name, e.g. 'LH' or 'Lufthansa'. Optional if conversationId carries the operator from earlier."}, 'segment': {'type': 'string', 'description': "Route 'YUL-LHR' or flight number, if the booking has more than one bid-eligible segment."}, 'sessionId': {'type': 'string', 'description': "The sessionId from start_eligibility_check â\x80\x94 unlocks the operator's LIVE bid-strength read for this exact booking and amount."}, 'conversationId': {'type': 'string', 'description': 'Optional stable conversation id â\x80\x94 reuses the operator (and checked booking) in play.'}, 'travelerQuestion': {'type': 'string', 'description': "The traveler's request in their own words, verbatim (e.g. 'can I upgrade my Swiss flight to business?'). For privacy, leave out the booking reference, last name, email, and other personal details. Pass it whenever the traveler asked in free text â\x80\x94 it improves Upgrade Agent's answers over time."}}, 'additionalProperties': False}
search_upgrade_options
Find operators that offer upgrades, filtered by vertical, region, and/or product. NOTE: Upgrade Agent has operator coverage by region, not flight route networks — it cannot confirm a specific origin→destination city pair. If origin/destination are given, results are operators offering upgrades (optionally in that region), NOT route-filtered.
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'origin': {'type': 'string', 'description': 'Origin city/airport (informational only â\x80\x94 not used to route-filter).'}, 'region': {'enum': ['Americas', 'Europe', 'MEA', 'APAC', 'Cruise', 'Rail'], 'type': 'string'}, 'product': {'enum': ['bid_upgrade', 'instant_upgrade', 'seat_blocker', 'premium_seating'], 'type': 'string'}, 'vertical': {'enum': ['airline', 'cruise', 'rail', 'hotel'], 'type': 'string'}, 'destination': {'type': 'string', 'description': 'Destination city/airport (informational only â\x80\x94 not used to route-filter).'}, 'travelerQuestion': {'type': 'string', 'description': "The traveler's request in their own words, verbatim (e.g. 'can I upgrade my Swiss flight to business?'). For privacy, leave out the booking reference, last name, email, and other personal details. Pass it whenever the traveler asked in free text â\x80\x94 it improves Upgrade Agent's answers over time."}}, 'additionalProperties': False}
start_eligibility_check
Start Eligibility Check
Starts an upgrade eligibility check for a flight, cruise, or rail booking. Returns a secure page (and, where supported, an inline form) for the traveler to enter their booking reference and last name.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'carrier': {'type': 'string', 'description': "Airline/cruise/rail name or IATA code if known (e.g. 'Air Canada' or 'AC')."}, 'language': {'type': 'string', 'description': "ISO 639-1 language for the page/offer (e.g. 'fr', 'es'). Defaults to 'en'."}, 'intentContext': {'type': 'object', 'properties': {'notes': {'type': 'string', 'maxLength': 200, 'description': "Short preference note, e.g. 'anniversary trip, wants lie-flat'. For privacy, leave out booking references and names."}, 'budgetAmount': {'type': 'number', 'description': "Traveler's stated budget for the upgrade.", 'exclusiveMinimum': 0}, 'budgetCurrency': {'type': 'string', 'maxLength': 3, 'description': "ISO currency for the budget, e.g. 'CAD'."}, 'preferredCabin': {'enum': ['BUSINESS', 'FIRST', 'PREMIUM_ECONOMY'], 'type': 'string'}}, 'description': "The traveler's stated shopping intent â\x80\x94 bound to the session and surfaced back so offers are presented against it.", 'additionalProperties': False}, 'travelerQuestion': {'type': 'string', 'description': "The traveler's request in their own words, verbatim (e.g. 'can I upgrade my Swiss flight to business?'). For privacy, leave out the booking reference, last name, email, and other personal details. Pass it whenever the traveler asked in free text â\x80\x94 it improves Upgrade Agent's answers over time."}}, 'additionalProperties': False}
start_watch
Start Booking Watch
Sets up a Watcher that monitors a traveler's booking between now and departure for upgrade opportunities (a better seat, an empty adjacent seat, a cabin upgrade, lounge, or fast track). Returns a secure card/link where the traveler enters their booking, notification preference, and consent.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['preferences'], 'properties': {'carrier': {'type': 'string', 'description': 'Airline/operator name or IATA code if known.'}, 'contact': {'type': 'object', 'properties': {'email': {'type': 'string'}, 'phone': {'type': 'string', 'description': 'Mobile number for SMS (E.164, e.g. +14155551234).'}, 'whatsapp': {'type': 'string'}}, 'additionalProperties': False}, 'purpose': {'enum': ['business', 'leisure'], 'type': 'string', 'description': 'Is the trip for business or leisure? Tailors the complementary experiences we surface at the destination.'}, 'channels': {'type': 'array', 'items': {'type': 'string'}, 'description': 'How to reach them: in_chat | watch_page | email | sms | whatsapp | push.'}, 'autoAction': {'type': 'boolean', 'description': 'If true (and a budget is set), act within budget; else notify.'}, 'firstVisit': {'type': 'boolean', 'description': "Is this the traveler's first time at the destination? Biases toward the classics vs off-the-beaten-path."}, 'preferences': {'type': 'array', 'items': {'type': 'object', 'required': ['type'], 'properties': {'rank': {'type': 'number', 'description': '1 = most wanted.'}, 'type': {'type': 'string', 'description': 'e.g. window_seat | aisle_seat | extra_legroom | empty_seat | premium_economy | business_upgrade | first_upgrade | lounge | fast_track'}, 'currency': {'type': 'string'}, 'maxAmount': {'type': 'number', 'description': 'Optional budget cap for this perk.'}}, 'additionalProperties': False}, 'description': "The traveler's improvements to watch for, in their order of preference."}, 'budgetAmount': {'type': 'number', 'description': 'Overall budget if they want the agent to act.'}, 'budgetCurrency': {'type': 'string'}}, 'additionalProperties': False}
usage_totals
Running totals across the whole system: how many questions have been asked, and how many were answered successfully (quality at or above the success threshold).
Read only Idempotent
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Changed
search_upgrade_options
Sept. 25, 2026, 3 a.m.
Changed
get_upgrade_pricing
Sept. 25, 2026, 3 a.m.
Changed
get_partner_info
Sept. 25, 2026, 3 a.m.
Changed
start_watch
Sept. 25, 2026, 3 a.m.
Changed
predict_bid_success
Sept. 25, 2026, 3 a.m.
Changed
cancel_bid
Sept. 25, 2026, 3 a.m.
Changed
get_price_breakdown
Sept. 25, 2026, 3 a.m.
Changed
get_bid_status
Sept. 25, 2026, 3 a.m.
Changed
modify_bid
Sept. 25, 2026, 3 a.m.
Changed
place_bid
Sept. 25, 2026, 3 a.m.
Changed
mint_eligibility_session
Sept. 25, 2026, 3 a.m.
Changed
start_eligibility_check
Sept. 25, 2026, 3 a.m.
Changed
check_upgrade_eligibility
Sept. 25, 2026, 3 a.m.
Added
cancel_bid
Sept. 23, 2026, 2:51 a.m.
Added
get_price_breakdown
Sept. 23, 2026, 2:51 a.m.
Changed
get_bid_status
Sept. 23, 2026, 2:51 a.m.
Changed
place_bid
Sept. 23, 2026, 2:51 a.m.
Added
search_upgrade_options
Sept. 17, 2026, 7:57 a.m.
Added
get_upgrade_pricing
Sept. 17, 2026, 7:57 a.m.
Added
get_partner_info
Sept. 17, 2026, 7:57 a.m.
Added
list_partners
Sept. 17, 2026, 7:57 a.m.
Added
usage_totals
Sept. 17, 2026, 7:57 a.m.
Added
partner_question_insights
Sept. 17, 2026, 7:57 a.m.
Added
ask_upgrade_agent
Sept. 17, 2026, 7:57 a.m.
Added
get_watch_status
Sept. 17, 2026, 7:57 a.m.
Added
start_watch
Sept. 17, 2026, 7:57 a.m.
Added
predict_bid_success
Sept. 17, 2026, 7:57 a.m.
Added
get_bid_status
Sept. 17, 2026, 7:57 a.m.
Added
modify_bid
Sept. 17, 2026, 7:57 a.m.
Added
place_bid
Sept. 17, 2026, 7:57 a.m.