Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

ai.upgradeagent/upgrade-agent

REMOTE · WWW.UPGRADEAGENT.AI

Quote, bid and confirm travel upgrades: eligibility, bid range, place/modify/cancel, instant buy.

0 this week 87 Trust /100

Last scanned (10 hours ago)

Scores higher than 94% of remote servers

Reachable. Last reached 5 Nov 2026.

Category E-commerce

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security94
Transport & Reachability100
Schema Quality & AI Usability44
  • 0% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Fail
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 4541 tokens (~133/item across 34 items; 21 tools + 13 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage97
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 91% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 23 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
  • Supports UI / widget rendering.Pass
What we tested

Checks we ran (14)

  • TLS certificate
  • Authorization
  • HTTPS
  • HSTS header
  • DNSSEC
  • Transport
  • Schema quality
  • Stability
  • Tool coverage
  • Injection markers
  • Destructive annotations
  • Judged manipulation
  • MCP protocol
  • Capabilities

Does not apply to this hosted endpoint (2)

  • Supply Chain SecurityScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.
  • Provenance & TransparencyScored on package channels only. This is a hosted endpoint, so there is nothing to install or inspect.

The score does not measure everything. What the score does not measure →

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 23 Oct 26 +3
    • Stability: fail → pass ▲ security
  • 3 Oct 26 0
    • Tool “predict_bid_success” rewrote its description, which is the text the model reads security
    • Tool “check_upgrade_eligibility” rewrote its description, which is the text the model reads security
    • Tool “get_upgrade_pricing” rewrote its description, which is the text the model reads security
    • Tool “partner_question_insights” rewrote its description, which is the text the model reads security
    • Tool “search_upgrade_options” rewrote its description, which is the text the model reads security
    • Schema quality: 3924 → 4541 ▼ functional
    • New tool “get_offer_events” functional
    • New tool “partner_visibility_report” functional
    • “get_upgrade_pricing” added an optional parameter “destination” cosmetic
    • “get_upgrade_pricing” added an optional parameter “origin” cosmetic
    • “partner_question_insights” added an optional parameter “window” cosmetic
    • “search_upgrade_options” added an optional parameter “cabin” cosmetic
    • “search_upgrade_options” added an optional parameter “date” cosmetic
    • “check_upgrade_eligibility” reworded the description of “travelerQuestion” cosmetic
    • “get_partner_info” reworded the description of “travelerQuestion” cosmetic
    • “get_upgrade_pricing” reworded the description of “travelerQuestion” cosmetic
    • “partner_question_insights” reworded the description of “partner” cosmetic
    • “predict_bid_success” reworded the description of “travelerQuestion” cosmetic
    • “search_upgrade_options” reworded the description of “destination” cosmetic
    • “search_upgrade_options” reworded the description of “origin” cosmetic
    • “search_upgrade_options” reworded the description of “travelerQuestion” cosmetic
    • “start_eligibility_check” reworded the description of “travelerQuestion” cosmetic
  • 28 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 25 Sept 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 24 Sept 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “check_upgrade_eligibility” rewrote its description, which is the text the model reads security
    • Tool “get_upgrade_pricing” rewrote its description, which is the text the model reads security
    • Tool “place_bid” rewrote its description, which is the text the model reads security
    • Tool “predict_bid_success” rewrote its description, which is the text the model reads security
    • Tool “start_eligibility_check” rewrote its description, which is the text the model reads security
    • Tool “start_watch” rewrote its description, which is the text the model reads security
    • Schema quality: 184 → 122 ▲ functional
    • New resource “eligibility-widget-ui://widget/eligibility-v5.html” functional
    • New resource “eligibility-widget-ui://widget/eligibility-v6.html” functional
    • New resource “eligibility-widget-ui://widget/eligibility-v7.html” functional
  • 23 Sept 26 0
    • Stability: pass → fail ▼ security
    • A breaking change shipped without a version bump: still 1.0.0 ▼ security
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “check_upgrade_eligibility” rewrote its description, which is the text the model reads security
    • Tool “predict_bid_success” rewrote its description, which is the text the model reads security
    • Tool “start_eligibility_check” rewrote its description, which is the text the model reads security
    • Tool “start_watch” rewrote its description, which is the text the model reads security
    • Tool “cancel_bid” dropped its output schema ▼ functional
    • Tool “check_upgrade_eligibility” dropped its output schema ▼ functional
    • Tool “get_bid_status” dropped its output schema ▼ functional
    • Tool “get_price_breakdown” dropped its output schema ▼ functional
    • Tool “mint_eligibility_session” dropped its output schema ▼ functional
    • Tool “modify_bid” dropped its output schema ▼ functional
    • Tool “place_bid” dropped its output schema ▼ functional
    • Tool “predict_bid_success” dropped its output schema ▼ functional
    • Tool “start_eligibility_check” dropped its output schema ▼ functional
    • Tool “start_watch” dropped its output schema ▼ functional
    • “predict_bid_success” added an optional parameter “segment” cosmetic
    • “predict_bid_success” added an optional parameter “sessionId” cosmetic
    • “check_upgrade_eligibility” reworded the description of “travelerQuestion” cosmetic
    • “get_partner_info” reworded the description of “travelerQuestion” cosmetic
    • “get_upgrade_pricing” reworded the description of “travelerQuestion” cosmetic
    • “predict_bid_success” reworded the description of “conversationId” cosmetic
    • “predict_bid_success” reworded the description of “travelerQuestion” cosmetic
    • “search_upgrade_options” reworded the description of “travelerQuestion” cosmetic
    • “start_eligibility_check” reworded the description of “travelerQuestion” cosmetic
  • 22 Sept 26 0
    • Tool “get_bid_status” rewrote its description, which is the text the model reads security
    • Tool “place_bid” rewrote its description, which is the text the model reads security
    • Schema quality: 5190 → 5791 ▼ functional
    • Tool coverage: 41% → 53% ▲ functional
    • Tool “get_bid_status” now declares an output schema ▲ functional
    • Destructive annotations: pass → 100 functional
    • New resource “eligibility-widget-ui://widget/eligibility-v4.html” functional
    • New resource “manage-widget-ui://widget/manage-v1.html” functional
    • New resource “manage-widget-ui://widget/manage.html” functional
    • New tool “cancel_bid” functional
    • New tool “get_price_breakdown” functional
    • “place_bid” added an optional parameter “purchaseType” cosmetic
    • “place_bid” reworded the description of “amount” cosmetic
    • “place_bid” made “amount” optional cosmetic
    • Tool “get_bid_status” changed its title: Get Bid Status cosmetic
  • 26 Aug 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Probed https://www.upgradeagent.ai/api/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=www.upgradeagent.ai CN=YR1,O=Let's Encrypt,C=US 27 Oct 2026 25 Jan 2027 RSA 2048 SHA256-RSA 5cab6201fbfd8e651918d604f477dd06a22
SANs: www.upgradeagent.ai
CN=YR1,O=Let's Encrypt,C=US (CA) CN=Root YR,O=ISRG,C=US 3 Sept 2025 2 Sept 2028 RSA 2048 SHA256-RSA a20253f15f2691c05dc1ce13b9bcca4e
CN=Root YR,O=ISRG,C=US (CA) CN=ISRG Root X1,O=Internet Security Research Group,C=US 13 May 2026 2 Sept 2032 RSA 4096 SHA256-RSA f24b6d17f9d9ad7cb1c9fea78782699f

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of www.upgradeagent.ai. — Not signed

Zone DS Keys Algorithms Outcome
. Trust anchor 20326, 38696 8, 8 Verified
ai. DS published 1814, 3799 8, 8 Verified
upgradeagent.ai. No DS Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer error="invalid_token", error_description="No authorization provided", resource_metadata="https://www.upgradeagent.ai/.well-known/oauth-protected-resource"

Bearer error="invalid_token", error_description="No authorization provided", resource_metadata="https://www.upgradeagent.ai/.well-known/oauth-protected-resource"
Header Value
strict-transport-security max-age=63072000

Protected resource metadata

Document https://www.upgradeagent.ai/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://www.upgradeagent.ai/api/mcp
Authorisation server https://www.upgradeagent.ai

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://www.upgradeagent.ai/api/mcp Verified 200
http (plaintext) http://www.upgradeagent.ai/api/mcp HTTPS enforced 308 https://www.upgradeagent.ai/api/mcp
MCP tools · 21 exposed · ~4,070 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
ask_upgrade_agent ~177

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).

NameTypeReqDescription
askedBystring–Identifier for the calling agent/app (e.g. 'claude-cowork', 'aircanada-bot'). Used for per-partner reporting on which agents ask about their brand.
conversationIdstring–Optional stable conversation id — carries the operator in play across follow-up questions (e.g. 'what about the return?').
questionstringyesThe traveler's upgrade question, in natural language.

No output schema declared.

No examples provided.

cancel_bid ~210

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.

NameTypeReqDescription
confirmboolean–Set true once the traveler has confirmed they want the bid withdrawn.
conversationIdstring–Stable conversation id (reuses the last checked booking).
orderChangeIdstring–Which bid to cancel, when the booking has more than one (from get_bid_status).
presentationReportarray–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 travel…
sessionIdstring–The sessionId from start_eligibility_check. Optional if conversationId is passed.

No output schema declared.

No examples provided.

check_upgrade_eligibility ~269

Looks up a booking's upgrade eligibility from a booking reference and last name, and airline. Returns eligibility status, upgrade options, bid ranges, and a session id for follow-up bid tools.

NameTypeReqDescription
carrierstring–Airline/cruise/rail name or IATA code (e.g. 'SWISS' or 'LX').
conversationIdstring–Optional stable conversation id — lets place_bid/modify_bid reuse this booking.
intentContextobject–The traveler's stated shopping intent — bound to the session and surfaced back so offers are presented against it.
languagestring–ISO 639-1 language for the offer page (e.g. 'fr', 'es'). Defaults to 'en'.
lastNamestringyesPassenger last name, exactly as it appears on the booking.
pnrstringyesThe booking reference or PNR (e.g. ABC123).
travelerQuestionstring–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. Pa…

No output schema declared.

No examples provided.

get_bid_status ~169

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.

NameTypeReqDescription
conversationIdstring–Stable conversation id (reuses the last checked booking).
presentationReportarray–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 travel…
sessionIdstring–The sessionId from start_eligibility_check. Optional if conversationId is passed.

No output schema declared.

No examples provided.

get_eligibility_result ~123

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.

NameTypeReqDescription
conversationIdstring–Optional stable conversation id — lets later tools (place_bid) reuse this booking without re-passing the sessionId.
sessionIdstringyesThe sessionId returned by start_eligibility_check.

No output schema declared.

No examples provided.

get_offer_events ~227

Poll for bid-outcome changes on a checked booking without re-running a status check: an ordered log of events (offer.status_changed, offer.accepted, offer.declined, offer.cancelled, checkout.paid) with the offer reference, new and previous status, amount and cabin. Pass the sessionId (or conversationId) and, on later calls, the `since` cursor from the previous response to get only what's new. Bids settle 24–72h before departure, so poll periodically (or subscribe via REST POST /api/v1/webhooks) instead of asking the traveler to check back. Empty means no change observed yet.

NameTypeReqDescription
conversationIdstring–Stable conversation id (reuses the last checked booking).
limitinteger–Max events to return (default 50).
sessionIdstring–The sessionId from start_eligibility_check. Optional if conversationId is passed.
sincestring–Return only events after this: the `nextCursor` from a previous call, or an ISO-8601 timestamp.

No output schema declared.

No examples provided.

get_partner_info ~163

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').

NameTypeReqDescription
carrierstringyesOperator IATA code or name, e.g. 'LH' or 'Lufthansa'.
travelerQuestionstring–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. Pa…

No output schema declared.

No examples provided.

get_price_breakdown ~242

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.

NameTypeReqDescription
amountnumber–The amount to price — a bid in the offer currency, or a number of points for purchaseType POINTS. Omit for INSTANT (fixed price).
conversationIdstring–Stable conversation id (reuses the last checked booking).
purchaseTypestring–BID (default), POINTS, or INSTANT (buy now at the airline's fixed price).
segmentstring–Route 'YUL-LHR' or flight number, if more than one is eligible.
sessionIdstring–The sessionId from start_eligibility_check. Optional if conversationId is passed.
upgradeTypestring––

No output schema declared.

No examples provided.

get_upgrade_pricing ~284

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. With an origin and destination airport, the ranges are scoped to that route when observed data exists there (either direction), otherwise the operator-wide ranges are returned and labelled as such. Says so when there isn't enough observed data.

NameTypeReqDescription
cabinstring–Optional: limit to one target cabin.
carrierstring–Operator IATA code or name, e.g. 'LH' or 'Lufthansa'. Optional if conversationId carries the operator from earlier.
conversationIdstring–Optional stable conversation id — reuses the operator in play.
destinationstring–Optional destination airport IATA code (e.g. 'LHR') — scopes the ranges to a route.
originstring–Optional origin airport IATA code (e.g. 'YUL') — scopes the ranges to a route.
travelerQuestionstring–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. Pa…

No output schema declared.

No examples provided.

get_watch_status ~58

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.

NameTypeReqDescription
tokenstringyesThe watch token returned by start_watch.

No output schema declared.

No examples provided.

list_partners ~108

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'.

NameTypeReqDescription
productstring–Only operators that offer this product.
regionstring–Filter by region (MEA = Middle East & Africa, APAC = Asia-Pacific).
verticalstring–Filter by operator type.

No output schema declared.

No examples provided.

mint_eligibility_session ~71

Internal helper for the inline eligibility form: creates a secure session and returns its id. No UI; agents should use start_eligibility_check instead.

NameTypeReqDescription
carrierstring–Operator name/IATA if known.
languagestring–ISO 639-1 language (default 'en').

No output schema declared.

No examples provided.

modify_bid ~248

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.

NameTypeReqDescription
amountnumberyesThe NEW bid amount in the offer currency.
confirmboolean–Set true to confirm and commit a REAL bid update (human-in-the-loop). Only required once live bid submission is enabled.
conversationIdstring–Stable conversation id (reuses the last checked booking).
presentationReportarray–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 travel…
quantitynumber––
segmentstring–Route 'YUL-LHR' or flight number, if ambiguous.
sessionIdstring–The sessionId from start_eligibility_check. Optional if conversationId is passed.
upgradeTypestring––

No output schema declared.

No examples provided.

partner_question_insights ~163

Per-partner analytics report: what travelers and AI agents are asking about a specific partner's upgrade programs (by intent, by route, most frequent questions, which agents/clients are asking), the AI-check → bid → paid conversion funnel by channel, AI visibility (share of answer per engine, what agents say, where answers are wrong), open content gaps and observed bid ranges. Text summary plus the full report object in structuredContent. Pass the partner name (e.g. 'Air Canada', 'MSC Cruises').

NameTypeReqDescription
partnerstring–Partner name, slug or IATA code, e.g. 'Air Canada'. Ignored for partner-scoped tokens (locked to their own brand).
windowstring–Report window (default 30d).

No output schema declared.

No examples provided.

partner_visibility_report ~129

AI visibility for one partner's upgrade program: share of answer across the answer engines (ChatGPT, Claude, Perplexity, Gemini) for prompts about that partner, which domains get cited instead, what the agents say about the program, and where the answers are wrong (community claims that contradict the program's facts, plus engine excerpts flagged for human review). Partner-scoped tokens are locked to their own brand.

NameTypeReqDescription
partnerstring–Partner name, slug or IATA code. Ignored for partner-scoped tokens.
windowstring–Report window (default 30d).

No output schema declared.

No examples provided.

place_bid ~348

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.

NameTypeReqDescription
amountnumber–Bid amount in the offer currency (or points for POINTS). OMIT for INSTANT — the airline's fixed price is used automatically.
confirmboolean–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.
conversationIdstring–Stable conversation id used on get_eligibility_result — lets you bid without re-passing the sessionId.
presentationReportarray–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 travel…
purchaseTypestring–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).
quantitynumber–Number of seats (default 1).
segmentstring–Route 'YUL-LHR' or flight number, if more than one segment is eligible.
sessionIdstring–The sessionId from start_eligibility_check. Optional if conversationId is passed (reuses the last checked booking).
upgradeTypestring–Target cabin, if the booking has more than one eligible option.

No output schema declared.

No examples provided.

predict_bid_success ~278

Estimates how likely a specific bid amount is to be accepted, grounded in resolved bid outcomes for the carrier 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.

NameTypeReqDescription
amountnumberyesThe bid amount to evaluate, in the operator's offer currency.
cabinstring–Optional: target cabin.
carrierstring–Operator IATA code or name, e.g. 'LH' or 'Lufthansa'. Optional if conversationId carries the operator from earlier.
conversationIdstring–Optional stable conversation id — reuses the operator (and checked booking) in play.
segmentstring–Route 'YUL-LHR' or flight number, if the booking has more than one bid-eligible segment.
sessionIdstring–The sessionId from start_eligibility_check — unlocks the operator's LIVE bid-strength read for this exact booking and amount.
travelerQuestionstring–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. Pa…

No output schema declared.

No examples provided.

search_upgrade_options ~316

Finds operators that offer upgrades. With an origin and destination airport (IATA codes, e.g. YUL and LHR) the result is route-level: carriers with observed upgrade pricing on that airport pair (per-cabin ranges from anonymized checks, either direction), carriers confirmed by operator inventory where that upstream is enabled, and carriers whose hub or home country is at one end of the route — the last group is labelled as a hub match that is not confirmed and carries no pricing. Without a route, the result is the operator list filtered by vertical, region, and/or product.

NameTypeReqDescription
cabinstring–Optional: limit observed route pricing to one target cabin.
datestring–Optional travel date (YYYY-MM-DD) — used for live inventory confirmation when that upstream is enabled.
destinationstring–Destination airport IATA code (e.g. 'LHR'). With origin, filters to that route.
originstring–Origin airport IATA code (e.g. 'YUL'). With destination, filters to that route.
productstring––
regionstring––
travelerQuestionstring–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. Pa…
verticalstring––

No output schema declared.

No examples provided.

start_eligibility_check ~214

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.

NameTypeReqDescription
carrierstring–Airline/cruise/rail name or IATA code if known (e.g. 'Air Canada' or 'AC').
intentContextobject–The traveler's stated shopping intent — bound to the session and surfaced back so offers are presented against it.
languagestring–ISO 639-1 language for the page/offer (e.g. 'fr', 'es'). Defaults to 'en'.
travelerQuestionstring–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. Pa…

No output schema declared.

No examples provided.

start_watch ~235

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.

NameTypeReqDescription
autoActionboolean–If true (and a budget is set), act within budget; else notify.
budgetAmountnumber–Overall budget if they want the agent to act.
budgetCurrencystring––
carrierstring–Airline/operator name or IATA code if known.
channelsarray–How to reach them: in_chat | watch_page | email | sms | whatsapp | push.
contactobject––
firstVisitboolean–Is this the traveler's first time at the destination? Biases toward the classics vs off-the-beaten-path.
preferencesarrayyesThe traveler's improvements to watch for, in their order of preference.
purposestring–Is the trip for business or leisure? Tailors the complementary experiences we surface at the destination.

No output schema declared.

No examples provided.

usage_totals ~38

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).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

Install

How do I install the ai.upgradeagent/upgrade-agent MCP server?

ai.upgradeagent/upgrade-agent is a hosted endpoint at https://www.upgradeagent.ai/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · www.upgradeagent.ai

# add to Claude Code
claude mcp add --transport http ai-upgradeagent-upgrade-agent 'https://www.upgradeagent.ai/api/mcp'
Common questions

What is the ai.upgradeagent/upgrade-agent MCP server?

ai.upgradeagent/upgrade-agent is an MCP server listed in the public MCP registry as ai.upgradeagent/upgrade-agent. Quote, bid and confirm travel upgrades: eligibility, bid range, place/modify/cancel, instant buy. This page covers its hosted endpoint (https://www.upgradeagent.ai/api/mcp).

Is the ai.upgradeagent/upgrade-agent MCP server safe to use?

ai.upgradeagent/upgrade-agent scores 87 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the ai.upgradeagent/upgrade-agent MCP server expose?

ai.upgradeagent/upgrade-agent exposes 21 tools: check_upgrade_eligibility, start_eligibility_check, mint_eligibility_session, get_eligibility_result, place_bid, and 16 more. Their descriptions and schemas cost roughly 4,070 tokens of context every time the server is loaded.

Does the ai.upgradeagent/upgrade-agent MCP server require authentication?

Yes. ai.upgradeagent/upgrade-agent asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the ai.upgradeagent/upgrade-agent MCP server still maintained?

ai.upgradeagent/upgrade-agent is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What did VerifyMCP test on the ai.upgradeagent/upgrade-agent MCP server?

VerifyMCP ran 14 checks on ai.upgradeagent/upgrade-agent, covering TLS certificate, Authorization, HTTPS, HSTS header and 10 more. Supply Chain Security and Provenance & Transparency do not apply to a hosted endpoint, so they were not tested. The score does not measure everything, and the scoring documentation lists what it leaves out.