MCP Server

Flightcat

io.flightcat/flightcat
Travel & Hospitality Public & reachable MCP 2025-11-25

What this MCP does

Searches live flight prices using flexible dates and broad destinations, with itineraries and booking links.

search_flights
Search flights
Search live public airfare, including requests with vague or broad location names and flexible dates. Resolves locations and dates, then returns and displays up to 10 itineraries in an interactive comparison with prices, schedules, stops, and booking links.
Read only Open world
Input schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['search_type', 'passengers', 'cabins', 'max_stops', 'max_price', 'flight_duration', 'connecting_airports', 'bags', 'trips'], 'properties': {'bags': {'anyOf': [{'type': 'object', 'required': ['checked', 'carry_on'], 'properties': {'checked': {'type': 'integer', 'maximum': 18, 'minimum': 0}, 'carry_on': {'type': 'integer', 'maximum': 9, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'null'}], 'description': 'Total passenger bags.'}, 'trips': {'type': 'array', 'items': {'type': 'object', 'required': ['departure', 'arrival', 'departure_date', 'return_date', 'duration'], 'properties': {'arrival': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'code'], 'properties': {'code': {'type': 'string', 'description': 'Three-letter IATA code or use "n/a" when unavailable.'}, 'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Location name. Preserve custom or vague names; use "n/a" when unavailable.'}}, 'additionalProperties': False}, 'maxItems': 20, 'minItems': 1, 'description': 'One or more arrival locations.'}, 'duration': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': "Stay duration in days, such as '7' or '3-5'."}, 'departure': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'code'], 'properties': {'code': {'type': 'string', 'description': 'Three-letter IATA code or use "n/a" when unavailable.'}, 'name': {'type': 'string', 'maxLength': 100, 'minLength': 1, 'description': 'Location name. Preserve custom or vague names; use "n/a" when unavailable.'}}, 'additionalProperties': False}, 'maxItems': 20, 'minItems': 1, 'description': 'One or more departure locations.'}, 'return_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': 'Round-trip return date. Use null when duration is used.'}, 'departure_date': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'description': "A date or date range in 'MM/DD/YY' or 'MM/DD/YY-MM/DD/YY' format."}}, 'additionalProperties': False}, 'maxItems': 8, 'minItems': 1, 'description': 'Each item is a trip; approximate dates require a range.'}, 'cabins': {'anyOf': [{'type': 'string', 'const': 'economy'}, {'type': 'string', 'const': 'economyPremium'}, {'type': 'string', 'const': 'business'}, {'type': 'string', 'const': 'firstClass'}, {'type': 'null', 'const': None}]}, 'max_price': {'anyOf': [{'type': 'number', 'maximum': 8000, 'minimum': 100}, {'type': 'null'}]}, 'max_stops': {'anyOf': [{'type': 'integer', 'maximum': 2, 'minimum': 0}, {'type': 'null'}]}, 'passengers': {'anyOf': [{'type': 'object', 'required': ['adults', 'children', 'infants'], 'properties': {'adults': {'type': 'integer', 'maximum': 9, 'minimum': 0}, 'infants': {'type': 'integer', 'maximum': 9, 'minimum': 0}, 'children': {'type': 'integer', 'maximum': 9, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'null'}]}, 'search_type': {'enum': ['oneway', 'roundtrip', 'multi'], 'type': 'string'}, 'flight_duration': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 1}, {'type': 'null'}], 'description': 'Maximum flight duration in hours.'}, 'connecting_airports': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'description': 'Required connection-airport IATA codes.'}}, 'additionalProperties': False}
Output schema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['search_id', 'resolved_search', 'result_count', 'itineraries'], 'properties': {'search_id': {'type': 'string'}, 'itineraries': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'price', 'currency', 'ticket_count', 'search_type', 'trips', 'booking_link'], 'properties': {'id': {'type': 'string'}, 'price': {'type': 'number'}, 'trips': {'type': 'array', 'items': {'type': 'object', 'required': ['departure', 'arrival', 'duration', 'arrival_day_offset', 'stop_count', 'stop_airports', 'layovers', 'airline_codes', 'airline_names'], 'properties': {'arrival': {'type': 'object', 'required': ['city', 'airport', 'local_time'], 'properties': {'city': {'type': 'string'}, 'airport': {'type': 'string'}, 'local_time': {'type': 'string'}}, 'additionalProperties': False}, 'duration': {'type': 'object', 'required': ['hours', 'mins'], 'properties': {'mins': {'type': 'number'}, 'hours': {'type': 'number'}}, 'additionalProperties': False}, 'layovers': {'type': 'array', 'items': {'type': 'object', 'required': ['airport', 'duration'], 'properties': {'airport': {'type': 'string'}, 'duration': {'type': 'object', 'required': ['hours', 'mins'], 'properties': {'mins': {'type': 'number'}, 'hours': {'type': 'number'}}, 'additionalProperties': False}}, 'additionalProperties': False}}, 'departure': {'type': 'object', 'required': ['city', 'airport', 'local_time'], 'properties': {'city': {'type': 'string'}, 'airport': {'type': 'string'}, 'local_time': {'type': 'string'}}, 'additionalProperties': False}, 'stop_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'airline_codes': {'type': 'array', 'items': {'type': 'string'}}, 'airline_names': {'type': 'array', 'items': {'type': 'string'}}, 'stop_airports': {'type': 'array', 'items': {'type': 'string'}}, 'arrival_day_offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}}, 'currency': {'type': 'string'}, 'search_type': {'enum': ['oneway', 'roundtrip', 'multicity'], 'type': 'string'}, 'booking_link': {'type': 'string'}, 'ticket_count': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}}, 'additionalProperties': False}, 'maxItems': 10}, 'result_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'resolved_search': {'type': 'object', 'required': ['search_type', 'passengers', 'cabin', 'filters', 'trips', 'locale', 'currency'], 'properties': {'cabin': {'anyOf': [{'type': 'string', 'const': 'economy'}, {'type': 'string', 'const': 'economyPremium'}, {'type': 'string', 'const': 'business'}, {'type': 'string', 'const': 'firstClass'}, {'type': 'null', 'const': None}]}, 'trips': {'type': 'array', 'items': {'type': 'object', 'required': ['departure', 'arrival', 'departure_date', 'return_date', 'duration'], 'properties': {'arrival': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string'}, 'code': {'type': 'string'}, 'name': {'type': 'string'}, 'type': {'type': 'string'}}, 'additionalProperties': False}}, 'duration': {'anyOf': [{'type': 'object', 'required': ['min', 'max'], 'properties': {'max': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'min': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'null'}]}, 'departure': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string'}, 'code': {'type': 'string'}, 'name': {'type': 'string'}, 'type': {'type': 'string'}}, 'additionalProperties': False}}, 'return_date': {'anyOf': [{'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string'}, 'from': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'departure_date': {'type': 'object', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string'}, 'from': {'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'maxItems': 8, 'minItems': 1}, 'locale': {'type': 'string', 'maxLength': 10, 'minLength': 2}, 'filters': {'type': 'object', 'required': ['max_stops', 'max_price', 'flight_duration', 'connecting_airports', 'bags'], 'properties': {'bags': {'anyOf': [{'type': 'object', 'required': ['checked', 'carry_on'], 'properties': {'checked': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'carry_on': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, {'type': 'null'}]}, 'max_price': {'anyOf': [{'type': 'number', 'maximum': 8000, 'minimum': 100}, {'type': 'null'}]}, 'max_stops': {'anyOf': [{'type': 'integer', 'maximum': 2, 'minimum': 0}, {'type': 'null'}]}, 'flight_duration': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 1}, {'type': 'null'}]}, 'connecting_airports': {'anyOf': [{'type': 'array', 'items': {'type': 'string', 'pattern': '^[A-Z]{3}$'}}, {'type': 'null'}]}}, 'additionalProperties': False}, 'currency': {'type': 'string', 'pattern': '^[A-Z]{3}$'}, 'passengers': {'type': 'object', 'required': ['adults', 'children', 'infants'], 'properties': {'adults': {'type': 'integer', 'maximum': 9, 'minimum': 1}, 'infants': {'type': 'integer', 'maximum': 9, 'minimum': 0}, 'children': {'type': 'integer', 'maximum': 9, 'minimum': 0}}, 'additionalProperties': False}, 'search_type': {'enum': ['oneway', 'roundtrip', 'multi'], 'type': 'string'}}, 'additionalProperties': False}}, 'additionalProperties': False}
Added
search_flights
Sept. 17, 2026, 12:40 p.m.