FlightPayback MCP
An official MCP server that allows AI assistants to check if passengers are owed compensation for delayed or cancelled flights under Canada's Air Passenger Protection Regulations. It provides tools to find airports, airlines, and check flight compensation eligibility without requiring authentication.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://myflightpayback.com/mcpWhat you can do with it
- Check if an airline owes compensation for a delayed flight
- Check if an airline owes compensation for a cancelled flight
- Find airport details using the find_airport tool
- Find airline details using the find_airline tool
Source and maintenance
Protocol and capabilities
- Server
- flightpayback 1.0.0
- MCP protocol
- 2025-06-18
- Tools
- 3 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
3 advertised
find_airport — Find an airport
Search airports by city, name or IATA code. Returns up to 8 matches with their IATA codes; Canadian airports are listed first.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 60,
"minLength": 2,
"description": "City, airport name or code, e.g. \"toronto\" or \"YUL\"."
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}find_airline — Find an airline
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.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 60,
"minLength": 2,
"description": "A flight number or an airline name."
}
}
}{
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}check_flight_compensation — Check flight compensation
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.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"disruption",
"originIata",
"destinationIata",
"marketingCarrierIata",
"charter",
"flightDate",
"outcome",
"notice",
"reason",
"blamedEarlierFlight",
"acceptedVoucherInWriting",
"alreadyCompensated"
],
"properties": {
"notice": {
"enum": [
"within_14_days",
"more_than_14_days"
],
"type": "string",
"description": "When did the airline tell the passenger? \"within_14_days\" includes being told at the airport."
},
"reason": {
"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"
],
"type": "string",
"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)."
},
"charter": {
"enum": [
"no",
"yes",
"unsure"
],
"type": "string",
"description": "Was it a charter or package-holiday flight? Use \"unsure\" if the passenger does not know."
},
"outcome": {
"enum": [
"travelled",
"refunded",
"other"
],
"type": "string",
"description": "\"travelled\" = reached the destination (original or new flight); \"refunded\" = took a refund instead; \"other\" = e.g. made their own way."
},
"disruption": {
"enum": [
"delay",
"cancellation"
],
"type": "string",
"description": "Was the flight delayed or cancelled?"
},
"flightDate": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Original scheduled departure date, YYYY-MM-DD."
},
"originIata": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "IATA code of the departure airport, e.g. YYZ. Use find_airport if unsure."
},
"arrivalDelay": {
"enum": [
"under_3h",
"3_to_6h",
"6_to_9h",
"9h_plus"
],
"type": "string",
"description": "If the passenger doesn't know the exact times: how late they reached the final destination. When outcome is \"travelled\", give scheduledArrival + actualArrival, or this."
},
"actualArrival": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}$",
"description": "When the passenger actually arrived at the final destination (aircraft door opened), local time there: YYYY-MM-DDTHH:mm."
},
"connectionIatas": {
"type": "array",
"items": {
"type": "string",
"pattern": "^[A-Z]{3}$"
},
"default": [],
"maxItems": 4,
"description": "IATA codes of connecting airports, in order. Empty for a direct flight."
},
"destinationIata": {
"type": "string",
"pattern": "^[A-Z]{3}$",
"description": "IATA code of the FINAL destination on the original ticket (not a connection)."
},
"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. With actualArrival; or use arrivalDelay instead."
},
"alreadyCompensated": {
"type": "boolean",
"description": "Has the passenger already been paid compensation for this disruption (by the airline or under another country's rules)?"
},
"blamedEarlierFlight": {
"type": "boolean",
"description": "Did the airline say the problem was caused by an earlier flight?"
},
"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": {
"type": "string",
"pattern": "^[A-Z0-9]{2}$",
"description": "Only if a different airline actually flew the plane (\"operated by ...\"): its 2-character code."
},
"delayAtRefundAtLeast3h": {
"type": "boolean",
"description": "Only for a delayed flight where the passenger took a refund: was it at least 3 hours late at that point?"
},
"acceptedVoucherInWriting": {
"type": "boolean",
"description": "Did the passenger accept a voucher or credit instead of cash, in writing?"
}
}
}{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"verdict",
"amountCadMin",
"amountCadMax",
"lastDayToFile",
"deadlineSoon",
"euOrUkRulesMayAlsoApply",
"whereToClaim",
"moreInfo"
],
"properties": {
"verdict": {
"enum": [
"eligible",
"may_be_eligible",
"possibly_settled",
"not_eligible",
"out_of_scope"
],
"type": "string"
},
"moreInfo": {
"type": "string"
},
"amountCadMax": {
"type": [
"number",
"null"
]
},
"amountCadMin": {
"type": [
"number",
"null"
]
},
"deadlineSoon": {
"type": "boolean"
},
"whereToClaim": {
"anyOf": [
{
"type": "object",
"required": [
"airline",
"label",
"url"
],
"properties": {
"url": {
"type": "string"
},
"label": {
"type": "string"
},
"airline": {
"type": "string"
}
},
"additionalProperties": false
},
{
"type": "null"
}
]
},
"lastDayToFile": {
"type": [
"string",
"null"
]
},
"euOrUkRulesMayAlsoApply": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false,
"destructiveHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 510 ms
- 95th percentile latency
- 510 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 510 ms · metadata changed · 3 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http flightpayback-mcp https://myflightpayback.com/mcpCodex
codex mcp add flightpayback-mcp --url https://myflightpayback.com/mcpCursor
{
"mcpServers": {
"flightpayback-mcp": {
"url": "https://myflightpayback.com/mcp"
}
}
}Cline
{
"mcpServers": {
"flightpayback-mcp": {
"type": "streamableHttp",
"url": "https://myflightpayback.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"flightpayback-mcp": {
"type": "http",
"url": "https://myflightpayback.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http flightpayback-mcp https://myflightpayback.com/mcpClaude Desktop
{
"mcpServers": {
"flightpayback-mcp": {
"url": "https://myflightpayback.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"flightpayback-mcp": {
"serverUrl": "https://myflightpayback.com/mcp"
}
}
}Let your agent find its tools
Find servers like FlightPayback MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other productivity and knowledge servers
Do you run FlightPayback MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.