Koskamo

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.

FlightPayback MCP logo, by ClinSol Services Inc.Vendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-01Operated by ClinSol Services Inc.
MCP endpoint (Streamable HTTP)
https://myflightpayback.com/mcp
Vendor documentation

What 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

Vendor evidenceRegistry 1.1.0

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
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

FlightPayback checks whether an airline owes a passenger cash compensation for a delayed or cancelled flight under Canada's Air Passenger Protection Regulations (APPR): flights to, from or within Canada, on any airline. Workflow: use find_airport and find_airline to get codes, ask the passenger for anything you don't know (never guess times, reasons or dates), then call check_flight_compensation. The result is general information, not legal advice. FlightPayback prepares documents the passenger sends themselves; it never contacts airlines for them.

Tools

3 advertised

find_airport — Find an airport
Advertised by the server during the last successful anonymous check.
Advertised read-only

Search airports by city, name or IATA code. Returns up to 8 matches with their IATA codes; Canadian airports are listed first.

find_airport input schema
{
  "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\"."
    }
  }
}
find_airport annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
find_airline — Find an airline
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

find_airline input schema
{
  "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."
    }
  }
}
find_airline annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
check_flight_compensation — Check flight compensation
Advertised by the server during the last successful anonymous check.
Advertised read-only

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.

check_flight_compensation input schema
{
  "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?"
    }
  }
}
check_flight_compensation output schema
{
  "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
}
check_flight_compensation annotations
{
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

Not advertised

No resource definitions available.

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.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http flightpayback-mcp https://myflightpayback.com/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add flightpayback-mcp --url https://myflightpayback.com/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable flightpayback-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "flightpayback-mcp": {
      "url": "https://myflightpayback.com/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "flightpayback-mcp": {
      "type": "streamableHttp",
      "url": "https://myflightpayback.com/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start flightpayback-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "flightpayback-mcp": {
      "type": "http",
      "url": "https://myflightpayback.com/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http flightpayback-mcp https://myflightpayback.com/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "flightpayback-mcp": {
      "url": "https://myflightpayback.com/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "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.

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.

Claim this listing