{"name":"com.flightpowers/google-flights","slug":"flightpowers-google-flights","title":"Google Flights Search (Real-Time Fares)","description":"Real-time Google Flights: one-way and round-trip fares over date ranges, with price verdicts.","url":"https://mcp.market/server/flightpowers-google-flights","rating":null,"grade":"A","score":85,"certified":false,"status":"active","category":"search","tags":["search"],"presence":{"score":26,"stars":1,"forks":1,"downloads_week":null,"last_push_at":"2026-09-29T21:57:06.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T03:50:31.307Z","last_ok_at":"2026-11-04T03:50:31.307Z","latency_ms":469},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/mtnrabi/google-flights-mcp","website":"https://flights.flightpowers.com","version":"1.2.0","remotes":[{"type":"streamable-http","url":"https://flights.flightpowers.com/mcp","headers":[{"description":"Your own RapidAPI key for the Google Flights Live API. Free tier at https://rapidapi.com/mtnrabi/api/google-flights-live-api","format":"string","isSecret":true,"name":"x-rapidapi-key"}]}],"packages":[],"tools":[{"name":"search_oneway_flights","description":"FlightPowers one-way fare search: live prices read from Google Flights. Input: origin and destination IATA codes -- the destination may be several codes, as \"BCN,LIS,ATH\" or [\"BCN\",\"LIS\",\"ATH\"] -- plus either one departure date or a date range. Returns each flight's price, airline, duration, stops, a bookable buy_link, and Google's historical price range (price_insights_low / price_insights_high) so you can say whether a fare is actually a good deal.\n\nUse it for any one-way fare question, including open-ended ones. For a flexible search make ONE call with a date range and/or several destinations -- do NOT call it once per date. 'Cheapest flight to Sri Lanka anywhere in October' is one call, not thirty.\n\nEach date/destination combination is one billed request; the count and the plan's remaining quota come back in `api_usage`.\n\n`by_destination` carries one entry per destination you asked for -- empty ones included, each with a `reason` -- so read it before telling a user a destination has no flights.\n\nRequires the caller's own RapidAPI key for the Google Flights Live API. Get one (free tier available) at https://rapidapi.com/mtnrabi/api/google-flights-live-api, then pass it as an `x-rapidapi-key` header (preferred), a `?rapidapi_key=` query parameter on the server URL, or your client's own API key field -- first non-empty wins. Usage counts against the caller's own RapidAPI plan, not ours; every response reports what it spent and what is left in `api_usage`. No key? Sign in with Google and the first 10 searches each day are free on this server -- ad-free, nothing to paste. Connect your own RapidAPI key at https://flights.flightpowers.com/connect to remove the cap.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"from_airport":{"description":"Origin IATA code, e.g. \"TLV\". One origin per search; a second one is refused rather than searched.","type":"string"},"to_airport":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}],"description":"Destination airport. One IATA code (\"BCN\"), several separated by commas (\"BCN,LIS,ATH\"), or a list ([\"BCN\",\"LIS\",\"ATH\"]) -- every shape is accepted and the destinations are compared in the same search."},"departure_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Single departure date, \"YYYY-MM-DD\"."},"departure_date_from":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"First date of a departure range."},"departure_date_to":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Last date of a departure range."},"max_stops":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum stops per flight. 0 means non-stop only."},"airline_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Restrict to these airline codes, e.g. [\"LY\"]."},"exclude_airline_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Exclude these airline codes."},"departure_time_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Earliest departure hour, 0-23."},"departure_time_max":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Latest departure hour, 0-23."},"arrival_time_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Earliest arrival hour, 0-23."},"arrival_time_max":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Latest arrival hour, 0-23."},"currency":{"default":"usd","description":"ISO currency code, default \"usd\".","type":"string"},"max_price":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only return flights at or below this price."},"seat_type":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"1 economy, 2 premium economy, 3 business, 4 first."},"passengers":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"default":null,"description":"One entry per traveller, not a count: 1 adult, 2 child (aged 2-11), 3 infant on lap, 4 infant in seat, e.g. [1, 1, 2] for two adults and a child. At least one adult, each infant on lap needs its own adult, at most 9. Omit for one adult. A counts list [adults, children, infants], e.g. [2, 1, 0], or a bare [2] for two adults, is recognised and converted to codes before the search; a list that is valid as codes is searched as codes."},"sort_by":{"default":"best","description":"\"best\", \"price\", or \"duration\". Applied across all results.","type":"string"},"limit":{"default":10,"description":"Maximum flights to return, after merging and sorting.","type":"integer"},"max_searches":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"The billed requests this call may make, up or down. Leave it out for the normal behaviour: the cap covers the request when the request is reasonable (a whole month at three trip lengths is 93 combinations and a whole month x 3 nights x 3 destinations is 279; both run in full) and anything past it is sampled evenly across the range rather than cut short. Set it lower to spend less of the plan's quota on a wide search, or higher -- to a hard maximum of 300 -- for a grid wider than that."},"use_fallback":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Leave unset. Switches the search to a second, independent flight data source instead of the usual Google Flights page read. Unset already escalates to that source once, automatically, after a search's retries have failed. true forces it inline on every attempt -- much slower, and it can time out. false disables it entirely, that automatic retry included."},"verbose":{"default":false,"description":"Return every field the upstream sends on each fare, and every fare that was selected, with no row bound. Off by default: a result carries the best rows by your sort_by in a compact shape (dates, destination, airline, stops, duration, price, trip length and the booking link), because a wide search over a month and several destinations otherwise produces a megabyte of JSON that some hosts refuse to put in the conversation at all. Turn it on when you need the arrival times, the per-leg stop counts, the raw stop details or more rows than results_returned; results_total always says how many there were.","type":"boolean"}},"required":["from_airport","to_airport"],"additionalProperties":false}},{"name":"search_roundtrip_flights","description":"FlightPowers round-trip fare search: live prices read from Google Flights, priced as paired legs rather than two separate one-ways. Input: origin and destination IATA codes -- the destination may be several codes, as \"BCN,LIS,ATH\" or [\"BCN\",\"LIS\",\"ATH\"] -- a departure date or range, and either a return date or a trip length in nights. Returns the total price for both legs, per-leg airline, stops and duration, and a single bookable buy_link for the trip.\n\nUse it for any return-trip fare question. For a flexible search make ONE call: pass departure_date_from / departure_date_to for the outbound range and `nights` instead of return_date to compare trip lengths -- '5 to 7 nights in Rome sometime in May' is one call.\n\nA WHOLE MONTH is one call too. departure_date_from \"2026-10-01\", departure_date_to \"2026-10-31\" and nights [3, 4, 5] prices every departure day in October at three trip lengths and tells you which combination is cheapest. That is 93 date/night combinations and the cap rises to cover them by itself -- do not narrow the question to make it fit, and do not split it into several calls.\n\nEach date/night/destination combination is ONE request billed to the caller's plan, so a month at three trip lengths costs 93 of them and the same month across two destinations costs 186. Say that number before running a search that large if the user has not asked for it in so many words. A search that fails with a server error is retried once and RapidAPI bills the retry, so the figure to quote back is `api_usage.hub_requests_billed` (what the plan was actually charged), not the combination count. Both come back in `api_usage`, with the plan's remaining quota.\n\n`by_destination` carries one entry per destination you asked for -- empty ones included, each with a `reason` -- so read it before telling a user a destination has no flights.\n\nRequires the caller's own RapidAPI key for the Google Flights Live API. Get one (free tier available) at https://rapidapi.com/mtnrabi/api/google-flights-live-api, then pass it as an `x-rapidapi-key` header (preferred), a `?rapidapi_key=` query parameter on the server URL, or your client's own API key field -- first non-empty wins. Usage counts against the caller's own RapidAPI plan, not ours; every response reports what it spent and what is left in `api_usage`. No key? Sign in with Google and the first 10 searches each day are free on this server -- ad-free, nothing to paste. Connect your own RapidAPI key at https://flights.flightpowers.com/connect to remove the cap.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"from_airport":{"description":"Origin IATA code, e.g. \"TLV\". One origin per search; a second one is refused rather than searched.","type":"string"},"to_airport":{"anyOf":[{"type":"string"},{"items":{"type":"string"},"type":"array"}],"description":"Destination airport. One IATA code (\"BCN\"), several separated by commas (\"BCN,LIS,ATH\"), or a list ([\"BCN\",\"LIS\",\"ATH\"]) -- every shape is accepted and the destinations are compared in the same search."},"departure_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Single outbound date, \"YYYY-MM-DD\"."},"departure_date_from":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"First date of an outbound range."},"departure_date_to":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Last date of an outbound range."},"return_date":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Fixed return date. Use this OR nights, not both."},"nights":{"anyOf":[{"type":"integer"},{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"default":null,"description":"Trip length in nights; a number, or a list like [5, 6, 7]. The return date is derived from each departure date."},"max_departure_stops":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum stops on the outbound leg."},"max_return_stops":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Maximum stops on the return leg."},"departure_airline_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Restrict the outbound leg to these airlines."},"return_airline_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Restrict the return leg to these airlines."},"currency":{"default":"usd","description":"ISO currency code, default \"usd\".","type":"string"},"max_price":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Only return trips at or below this total price."},"seat_type":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"1 economy, 2 premium economy, 3 business, 4 first."},"passengers":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"default":null,"description":"One entry per traveller, not a count: 1 adult, 2 child (aged 2-11), 3 infant on lap, 4 infant in seat, e.g. [1, 1, 2] for two adults and a child. At least one adult, each infant on lap needs its own adult, at most 9. Omit for one adult. A counts list [adults, children, infants], e.g. [2, 1, 0], or a bare [2] for two adults, is recognised and converted to codes before the search; a list that is valid as codes is searched as codes."},"sort_by":{"default":"best","description":"\"best\", \"price\", or \"duration\". Applied across all results.","type":"string"},"limit":{"default":10,"description":"Maximum trips to return, after merging and sorting.","type":"integer"},"max_searches":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"The billed requests this call may make, up or down. Leave it out for the normal behaviour: the cap covers the request when the request is reasonable (a whole month at three trip lengths is 93 combinations and a whole month x 3 nights x 3 destinations is 279; both run in full) and anything past it is sampled evenly across the range rather than cut short. Set it lower to spend less of the plan's quota on a wide search, or higher -- to a hard maximum of 300 -- for a grid wider than that."},"use_fallback":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Leave unset. Switches the search to a second, independent flight data source instead of the usual Google Flights page read. Unset already escalates to that source once, automatically, after a search's retries have failed. true forces it inline on every attempt -- much slower, and it can time out. false disables it entirely, that automatic retry included."},"verbose":{"default":false,"description":"Return every field the upstream sends on each fare, and every fare that was selected, with no row bound. Off by default: a result carries the best rows by your sort_by in a compact shape (dates, destination, airline, stops, duration, price, trip length and the booking link), because a wide search over a month and several destinations otherwise produces a megabyte of JSON that some hosts refuse to put in the conversation at all. Turn it on when you need the arrival times, the per-leg stop counts, the raw stop details or more rows than results_returned; results_total always says how many there were.","type":"boolean"}},"required":["from_airport","to_airport"],"additionalProperties":false}}],"scan":{"score":85,"grade":"A","scanned_at":"2026-10-02T13:04:24.047Z","report":{"scannerVersion":"0.1.10","scannedAt":"2026-10-02T13:04:24.027Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 305ms"]},"poisoning":{"score":13,"max":15,"notes":["2 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":15,"max":15,"notes":["last push 3 days ago"]},"identity":{"score":8,"max":10,"notes":["endpoint served from the registry-verified namespace domain"]}},"findings":[{"id":"poison.long-description","severity":"low","component":"poisoning","title":"Unusually long tool description (over 2,000 characters)","evidence":"tool search_roundtrip_flights: …FlightPowers round-trip fare search: live prices read from Google Flights, priced as paired legs rather than two separate one-ways. Input: origin and destination IATA codes -- the destination may be several codes, as \"BCN,LIS,ATH\" or [\"BCN\",\"LIS\",\"ATH\"] -- a departure date or range, and either a return date or a trip length in nights. Returns the total price for both legs, per-leg airline, stops and duration, and a single bookable buy_link for the trip. Use it for any return-trip fare question. For a flexible search make ONE call: pass departure_date_from / departure_date_to for the outbound range and `nights` instead of return_date to compare trip lengths -- '5 to 7 nights in Rome sometime in May' is one call. A WHOLE MONTH is one call too. departure_date_from \"2026-10-01\", departure_date_to \"2026-10-31\" and nights [3, 4, 5] prices every departure day in October at three trip lengths and tells you which combination is cheapest. That is 93 date/night combinations and the cap rises to cover them by itself -- do not narrow the question to make it fit, and do not split it into several calls. Each date/night/destination combination is ONE request billed to the caller's plan, so a month at three trip lengths costs 93 of them and the same month across two destinations costs 186. Say that number before running a search that large if the user has not asked for it in so many words. A search that fails with a server error is retried once and RapidAPI bills the retry, so the figure to quote back is `api_usage.hub_requests_billed` (what the plan was actually charged), not the combination count. Both come back in `api_usage`, with the plan's remaining quota. `by_destination` carries one entry per destination you asked for -- empty ones included, each with a `reason` -- so read it before telling a user a destination has no flights. Requires the caller's own RapidAPI key for the Google Flights Live API. Get one (free tier available) at https://rapidapi.com/mtnrabi/api/google-flights-live-api, then pass it as an `x-rapidapi-key` header (preferred), a `?rapidapi_key=` query parameter on the server URL, or your client's own API key field -- first non-empty wins. Usage counts against the caller's own RapidAPI plan, not ours; every response reports what it spent and what is left in `api_usage`. No key? Sign in with Google and the first 10 searches each day are free on this server -- ad-free, nothing to paste. Connect your own RapidAPI key at https://flights.flightpowers.com/connect to remove the cap.…"}],"inputs":{"probes":[{"url":"https://flights.flightpowers.com/mcp","reachable":true,"authRequired":false,"latencyMs":305,"serverInfo":{"name":"google-flights-mcp","version":"1.0.0"}}],"packages":[],"repo":{"found":true,"owner":"mtnrabi","repo":"google-flights-mcp","archived":false,"pushedAt":"2026-09-29T21:57:06Z","stars":1,"forks":1,"openIssues":2,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/46162004?v=4","ownerCreatedAt":"2018-12-26T12:59:10Z","license":"MIT"},"icon":{"url":"https://flights.flightpowers.com/favicon.svg","source":"registry"},"presence":{"stars":1,"forks":1,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-29T21:57:06.000Z","score":26}}}},"grade_history":[],"reviews":[]}