Faregrid

io.github.CloudCorpRecordsPublished by GitHub account CloudCorpRecordsv0.1.0Updated Nov 7, 2026

Search one-way and round-trip flight fares across dates and destinations, with price verdicts.

Overview

AI-generated overview

Local bridge that lets an assistant search live one-way and round-trip flight fares from Google Flights, with price verdicts and booking links.

What you can do
  • Search one-way fares by origin, destination (one or several IATA codes), a single date or a date range, with filters for stops, airlines, hour windows, currency, price cap, seat type and passengers
  • Search round-trip fares priced as paired legs, adding return date or trip-length options and separate outbound and return stop and airline filters
  • Compare results across many date and destination combinations in one call, returning price, airline, duration, stops, a bookable link and the historical price band for the route
When to use it
Useful when you want an assistant to compare flight prices across flexible dates or several candidate destinations and judge whether a fare is cheap for that route. It is search only, so it suits research and planning rather than booking.
Requirements
Runs as a local stdio process via npx (Node.js) or the Docker image. Network access to the upstream FlightPowers endpoint is required. Optionally set FLIGHTPOWERS_MCP_URL to override the endpoint and FLIGHTPOWERS_API_KEY to send your own RapidAPI key; without a key the upstream free sign-in allowance applies.
Before you install
Tool calls are forwarded to a third-party hosted service, so your search parameters leave your machine. The optional FLIGHTPOWERS_API_KEY is sent upstream as a header and should be treated as a secret. Results include booking links to the vendor's own flow; the server itself has no booking or payment tool, and fares go stale within minutes.

Installation

In SourceWeft

  1. Open Faregrid in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

faregrid

faregrid is a small local bridge to the hosted FlightPowers MCP server, which reads live flight prices from Google Flights. Give it an origin and a destination, plus either a single date or a whole date range, and it answers with fares, airlines, durations, stop counts, a bookable link for each flight, and the historical price band that shows whether a fare is unusually cheap or expensive for that route.

The bridge keeps no fare data of its own. It serves the upstream server's tool list locally, exactly as captured from the live endpoint, and forwards each tool call upstream, returning the result untouched. The captured surface is search only: results carry a buy_link to book on the vendor's own flow, and there is no booking, purchase, or payment tool in it.

Tools

  • search_oneway_flights — one-way fares. Required: from_airport and to_airport (IATA codes; the destination may be several codes as "BCN,LIS,ATH" or ["BCN","LIS","ATH"]). Optional: departure_date, or a range via departure_date_from / departure_date_to, max_stops, airline_codes, exclude_airline_codes, departure and arrival hour windows, currency (default "usd"), max_price, seat_type, passengers, sort_by (default "best"), limit (default 10), max_searches, use_fallback, and verbose. One call can search every date/destination combination in a range.
  • search_roundtrip_flights — round-trip fares, priced as paired legs rather than two separate one-ways. Required: from_airport and to_airport. Optional: the same departure date or range fields as the one-way tool, plus return_date or nights (a trip length, or a list like [5, 6, 7]), max_departure_stops, max_return_stops, departure_airline_codes, return_airline_codes, returns_per_outbound, and the shared currency, max_price, seat_type, passengers, sort_by, limit, max_searches, use_fallback, and verbose fields.

Fares go stale within minutes, so a current price always comes from a new search rather than an earlier result.

Configuration

  • FLIGHTPOWERS_MCP_URL (optional) — override the upstream endpoint. Defaults to https://flights.flightpowers.com/mcp. (The override hook is this rebuild's own labelled reconstruction.)
  • FLIGHTPOWERS_API_KEY (optional) — when set, every upstream request carries an x-rapidapi-key: <key> header, for the caller's own RapidAPI key for the Google Flights Live API. When it is not set, no key header is sent and the upstream applies its free sign-in allowance. No Authorization header is ever sent. (This forwarding is also a labelled reconstruction; the original surface was captured keyless.)

Forwarding mechanics

On the first tool call the client opens a streamable HTTP session with the upstream: a JSON-RPC initialize request (protocolVersion 2025-03-26, clientInfo name faregrid), then a notifications/initialized notification, then the tools/call request carrying the caller's arguments unchanged. When the upstream answers initialize with an Mcp-Session-Id header, that value rides on every later request of the session, which is reused for the life of the process. Replies may arrive as plain JSON or as server-sent events; both are read.

Successful upstream results pass through verbatim, including any isError flag the upstream sets. Failures — a JSON-RPC error, a non-2xx status, an unreadable response, or a request that cannot be completed — come back as an isError result whose text starts with faregrid error: (this rendering is this rebuild's own labelled reconstruction).

CLI

Each tool is also a subcommand taking one JSON argument string:

bash
npx @reneturcios/faregrid search_oneway_flights '{"from_airport":"TLV","to_airport":"BCN","departure_date":"2026-11-10"}'npx @reneturcios/faregrid search_roundtrip_flights '{"from_airport":"TLV","to_airport":"BCN,LIS","departure_date_from":"2026-11-01","departure_date_to":"2026-11-07","nights":[3,4]}'npx @reneturcios/faregrid --version

Exit codes: 0 on success, 1 on an isError result, 2 on a usage error.

MCP server

bash
npx -y @reneturcios/faregrid mcp

MCP client config:

json
{  "mcpServers": {    "faregrid": {      "command": "npx",      "args": ["-y", "@reneturcios/faregrid", "mcp"]    }  }}

Docker

bash
docker run -i ghcr.io/cloudcorprecords/faregriddocker run --rm ghcr.io/cloudcorprecords/faregrid --version

The container's default command is mcp, so the first form is a stdio MCP server; any other arguments reach the CLI normally.

Development

bash
npm installnpm run buildnpm testnpm run dev

The test suite runs entirely against a stubbed JSON-RPC upstream — no live network calls.

License

MIT — see LICENSE.

Source: README.md at commit 7120f91

Tools

2

search_oneway_flights

FlightPowers: search one-way flights

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), the band that shows whether a fare is actually a good deal. Suited to any one-way fare question, including open-ended ones. One call accepts a date range and several destinations and searches every combination: 'Cheapest flight to Sri Lanka anywhere in October' is one call, not thirty. That holds with the caller's own key. On the free sign-in allowance (10 searches a day, one per combination) a grid larger than what is left today is refused before anything runs; a grid within what is left runs, and a whole-month scan needs the caller's own key. Each date/destination combination is one search; the count comes back in `api_usage`. `by_destination` carries one entry per requested destination -- empty ones included, each with a `reason` that separates a destination with no flights from one that was not searched, whose search failed, or whose fares did not fit in `limit`. Fares go stale within minutes: a current price comes from a new search, not from an earlier result.

Parameterslimitsort_byverbosecurrencymax_pricemax_stopsseat_typepassengersto_airportrequiredfrom_airportrequiredmax_searchesuse_fallback+9 more

search_roundtrip_flights

FlightPowers: search round-trip 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. Suited to any return-trip fare question. A flexible search is ONE call: departure_date_from / departure_date_to set the outbound range and `nights`, in place of return_date, compares 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 shows which combination is cheapest. That is 93 date/night combinations and the cap rises to cover them by itself, so the whole grid runs in that one call. That holds with the caller's own key. On the free sign-in allowance (10 searches a day, one per combination) a grid larger than what is left today is refused before anything runs; a grid within what is left runs, and a whole-month scan needs the caller's own key. Each date/night/destination combination is ONE search, so a month at three trip lengths is 93 of them and the same month across two destinations is 186. A search that fails with a server error is retried once, so with the caller's own key the figure the plan is charged is `api_usage.hub_requests_billed` (retries included), not the combination count. `by_destination` carries one entry per requested destination -- empty ones included, each with a `reason` that separates a destination with no flights from one that was not searched, whose search failed, or whose fares did not fit in `limit`. Fares go stale within minutes: a current price comes from a new search, not from an earli

Parameterslimitnightssort_byverbosecurrencymax_priceseat_typepassengersto_airportrequiredreturn_datefrom_airportrequiredmax_searches+9 more

Version history

1
  1. v0.1.0LatestNov 4, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts