FlightPayback
Free check: does an airline owe you cash for a delayed or cancelled flight in Canada?
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"flightpayback": {
"url": "https://myflightpayback.com/mcp"
}
}
}Remote endpoints
https://myflightpayback.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
π’find_airport(query)
Search airports by city, name or IATA code. Returns up to 8 matches with their IATA codes; Canadian airports are listed first.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 2,
"maxLength": 60,
"description": "City, airport name or code, e.g. \"toronto\" or \"YUL\"."
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’find_airline(query)
Find an airlineβs 2-character code from a flight number (e.g. "AC 857") or a name (e.g. "WestJet"). An airline missing from the list can still be checked by its code.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 2,
"maxLength": 60,
"description": "A flight number or an airline name."
}
},
"required": [
"query"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}π’check_flight_compensation(disruption, originIata, destinationIata, connectionIatas, marketingCarrierIata, ...)
Check whether an airline owes cash compensation for a delayed or cancelled flight under Canada's Air Passenger Protection Regulations, and how much. Ask the passenger for every answer; don't guess. Returns the verdict, amount per passenger and the last day to file. General information, not legal advice.
Input Schema
{
"type": "object",
"properties": {
"disruption": {
"type": "string",
"enum": [
"delay",
"cancellation"
],
"description": "Was the flight delayed or cancelled?"
},
"originIata": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "IATA code of the departure airport, e.g. YYZ. Use find_airport if unsure."
},
"destinationIata": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "IATA code of the FINAL destination on the original ticket (not a connection)."
},
"connectionIatas": {
"default": [],
"description": "IATA codes of connecting airports, in order. Empty for a direct flight.",
"maxItems": 4,
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Z]{3}$"
}
},
"marketingCarrierIata": {
"type": "string",
"pattern": "^[A-Z0-9]{2}$",
"description": "2-character code of the airline on the ticket: the letters of the flight number, e.g. AC for AC 857."
},
"operatingCarrierIata": {
"description": "Only if a different airline actually flew the plane (\"operated by ...\"): its 2-character code.",
"type": "string",
"pattern": "^[A-Z0-9]{2}$"
},
"charter": {
"type": "string",
"enum": [
"no",
"yes",
"unsure"
],
"description": "Was it a charter or package-holiday flight? Use \"unsure\" if the passenger does not know."
},
"flightDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Original scheduled departure date, YYYY-MM-DD."
},
"scheduledArrival": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
"description": "Scheduled arrival at the final destination, as on the original ticket, local time there: YYYY-MM-DDTHH:mm."
},
"actualArrival": {
"description": "Required if outcome is \"travelled\": when the passenger actually arrived at the final destination (aircraft door opened), local time there: YYYY-MM-DDTHH:mm.",
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$"
},
"outcome": {
"type": "string",
"enum": [
"travelled",
"refunded",
"other"
],
"description": "\"travelled\" = reached the destination (original or new flight); \"refunded\" = took a refund instead; \"other\" = e.g. made their own way."
},
"delayAtRefundAtLeast3h": {
"description": "Only for a delayed flight where the passenger took a refund: was it at least 3 hours late at that point?",
"type": "boolean"
},
"notice": {
"type": "string",
"enum": [
"within_14_days",
"more_than_14_days"
],
"description": "When did the airline tell the passenger? \"within_14_days\" includes being told at the airport."
},
"reason": {
"type": "string",
"enum": [
"crew_shortage",
"scheduled_maintenance",
"schedule_or_aircraft_change",
"airline_it_problem",
"mechanical_issue",
"safety_other",
"weather",
"air_traffic_control",
"airport_operations",
"security_threat",
"medical_emergency",
"wildlife_strike",
"labour_disruption",
"manufacturer_defect",
"government_or_police_order",
"war_or_unrest",
"illegal_act",
"no_reason_given",
"not_remembered",
"other"
],
"description": "The reason the airline gave, mapped to the closest value. Airline operations: crew_shortage (Crew or staff shortage), scheduled_maintenance (Scheduled maintenance), schedule_or_aircraft_change (Schedule change or aircraft swap), airline_it_problem (Airline's computer or IT problem). Safety: mechanical_issue (Mechanical or technical problem), safety_other (Another safety reason). Outside the airline: weather (Weather), air_traffic_control (Air traffic control), airport_operations (Airport problem (e.g. de-icing, runway, fuelling)), security_threat (Security threat), medical_emergency (Medical emergency), wildlife_strike (Bird or wildlife strike), labour_disruption (Strike or labour disruption), manufacturer_defect (Aircraft defect announced by the manufacturer or regulator), government_or_police_order (Order from government, police or airport security), war_or_unrest (War or political unrest), illegal_act (Sabotage or another illegal act). Not sure: no_reason_given (They didn't give a clear reason), not_remembered (I don't remember), other (Something else)."
},
"blamedEarlierFlight": {
"type": "boolean",
"description": "Did the airline say the problem was caused by an earlier flight?"
},
"acceptedVoucherInWriting": {
"type": "boolean",
"description": "Did the passenger accept a voucher or credit instead of cash, in writing?"
},
"alreadyCompensated": {
"type": "boolean",
"description": "Has the passenger already been paid compensation for this disruption (by the airline or under another country's rules)?"
}
},
"required": [
"disruption",
"originIata",
"destinationIata",
"marketingCarrierIata",
"charter",
"flightDate",
"scheduledArrival",
"outcome",
"notice",
"reason",
"blamedEarlierFlight",
"acceptedVoucherInWriting",
"alreadyCompensated"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Output Schema
{
"type": "object",
"properties": {
"verdict": {
"type": "string",
"enum": [
"eligible",
"may_be_eligible",
"possibly_settled",
"not_eligible",
"out_of_scope"
]
},
"amountCadMin": {
"type": [
"number",
"null"
]
},
"amountCadMax": {
"type": [
"number",
"null"
]
},
"lastDayToFile": {
"type": [
"string",
"null"
]
},
"deadlineSoon": {
"type": "boolean"
},
"euOrUkRulesMayAlsoApply": {
"type": "boolean"
},
"whereToClaim": {
"anyOf": [
{
"type": "object",
"properties": {
"airline": {
"type": "string"
},
"label": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"airline",
"label",
"url"
],
"additionalProperties": false
},
{
"type": "null"
}
]
},
"moreInfo": {
"type": "string"
}
},
"required": [
"verdict",
"amountCadMin",
"amountCadMax",
"lastDayToFile",
"deadlineSoon",
"euOrUkRulesMayAlsoApply",
"whereToClaim",
"moreInfo"
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false
}Community
Evidence