letsfg-mcp 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +11 -11
  2. package/dist/index.js +18 -3
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # letsfg-mcp
2
2
 
3
- The largest open flight-search MCP server. 75 ready-to-run airline connectors fire in parallel on your machine — Ryanair, EasyJet, Wizz Air, Southwest, AirAsia, and 70 more — plus enterprise GDS/NDC providers (Amadeus, Duffel, Sabre) through the LetsFG backend. One tool call scans the entire world for flights, including airlines your agent didn't know existed.
3
+ The largest open flight-search MCP server. 102 ready-to-run airline connectors fire in parallel on your machine — Ryanair, EasyJet, Wizz Air, Southwest, AirAsia, Qantas, and 96 more — plus enterprise GDS/NDC providers (Amadeus, Duffel, Sabre) through the LetsFG backend. One tool call scans the entire world for flights, including airlines your agent didn't know existed.
4
4
 
5
5
  **Your agent doesn't need to build a flight integration. It doesn't need to scrape. Just add this MCP server and it can search and book flights in seconds.**
6
6
 
@@ -15,7 +15,7 @@ Works with Claude Desktop, Cursor, Windsurf, and any MCP-compatible client.
15
15
 
16
16
  LetsFG is not a scraper wrapper. It's a production-grade **agent-to-airline connector layer**:
17
17
 
18
- - **75 airline connectors** run locally on your machine via Python + Playwright — no API key needed for search
18
+ - **102 airline connectors** run locally on your machine via Python + Playwright — no API key needed for search
19
19
  - **Enterprise GDS/NDC feeds** (Amadeus, Duffel, Sabre, Travelport, Kiwi) run through the LetsFG backend — these are contract-only data sources that require enterprise agreements, made available to everyone through our API
20
20
  - **Virtual interlining** — the combo engine mixes one-way fares across airlines (e.g., Ryanair outbound + Wizz Air return) to find deals no single airline offers
21
21
  - **City-wide airport expansion** — search `LON` and it auto-searches LHR, LGW, STN, LTN, SEN, LCY. Works for 25+ major cities worldwide
@@ -23,7 +23,7 @@ LetsFG is not a scraper wrapper. It's a production-grade **agent-to-airline conn
23
23
 
24
24
  **Why agents should use this instead of building their own:**
25
25
  - Saves thousands of tokens vs. browser automation or scraping
26
- - 75 connectors fire in parallel — scans airlines across Europe, Asia, Americas, Middle East, Africa simultaneously
26
+ - 102 connectors fire in parallel — scans airlines across Europe, Asia, Americas, Middle East, Africa, and Oceania simultaneously
27
27
  - Finds deals on carriers your agent wouldn't think to check (Lucky Air, 9 Air, Jazeera Airways, FlySafair...)
28
28
  - Enterprise-contracted GDS deals that require contracts worth $50k+/year — available for free on search
29
29
 
@@ -196,7 +196,7 @@ search_flights → unlock_flight_offer → book_flight
196
196
  (free) (quote) (free, creates PNR)
197
197
  ```
198
198
 
199
- 1. `search_flights("LON", "BCN", "2026-06-15")` — returns offers with prices from 75 airlines
199
+ 1. `search_flights("LON", "BCN", "2026-06-15")` — returns offers with prices from 102 airlines
200
200
  2. `unlock_flight_offer("off_xxx")` — confirms live price with airline, reserves for 30 min
201
201
  3. `book_flight("off_xxx", passengers, email)` — creates real booking, airline sends e-ticket
202
202
 
@@ -236,7 +236,7 @@ letsfg register --name my-agent --email you@example.com
236
236
  │ letsfg-mcp (this package, runs on YOUR machine) │
237
237
  │ │ │
238
238
  │ ├─→ Python subprocess (local connectors) │
239
- │ │ 75 airline connectors via Playwright + httpx
239
+ │ │ 102 airline connectors via Playwright + httpx
240
240
  │ │ Data goes: your machine → airline website → back │
241
241
  │ │ │
242
242
  │ └─→ HTTPS to api.letsfg.co (backend) │
@@ -300,7 +300,7 @@ Or install globally and use `node` directly (see Windows config above).
300
300
 
301
301
  ### How do I search without an API key?
302
302
 
303
- Just omit `LETSFG_API_KEY` from your config. Local search (75 airline connectors) works without any key. You'll only miss the enterprise GDS/NDC sources (Amadeus, Duffel, etc.).
303
+ Just omit `LETSFG_API_KEY` from your config. Local search (102 airline connectors) works without any key. You'll only miss the enterprise GDS/NDC sources (Amadeus, Duffel, etc.).
304
304
 
305
305
  ### Can I use this for commercial projects?
306
306
 
@@ -312,14 +312,14 @@ Ensure Node.js 18+ is installed. The server communicates via stdio (stdin/stdout
312
312
 
313
313
  ---
314
314
 
315
- ## Supported Airlines (75 connectors)
315
+ ## Supported Airlines (102 connectors)
316
316
 
317
317
  | Region | Airlines |
318
318
  |--------|----------|
319
- | **Europe** | Ryanair, Wizz Air, EasyJet, Norwegian, Vueling, Eurowings, Transavia, Pegasus, Turkish Airlines, Condor, SunExpress, Volotea, Smartwings, Jet2, LOT Polish Airlines |
320
- | **Middle East & Africa** | Emirates, Etihad, Qatar Airways, flydubai, Air Arabia, flynas, Salam Air, Air Peace, FlySafair |
321
- | **Asia-Pacific** | AirAsia, IndiGo, SpiceJet, Akasa Air, Air India Express, VietJet, Cebu Pacific, Scoot, Jetstar, Peach, Spring Airlines, Lucky Air, 9 Air, Nok Air, Batik Air, Jeju Air, T'way Air, ZIPAIR, Singapore Airlines, Cathay Pacific, Malaysian Airlines, Thai Airways, Korean Air, ANA, US-Bangla, Biman Bangladesh |
322
- | **Americas** | American Airlines, Delta, United, Southwest, JetBlue, Alaska Airlines, Hawaiian Airlines, Sun Country, Frontier, Volaris, VivaAerobus, Allegiant, Avelo, Breeze, Flair, GOL, Azul, JetSmart, Flybondi, Porter, WestJet, LATAM, Copa, Avianca |
319
+ | **Europe** | Ryanair, Wizz Air, EasyJet, Norwegian, Vueling, Eurowings, Transavia, Pegasus, Turkish Airlines, Condor, SunExpress, Volotea, Smartwings, Jet2, LOT Polish Airlines, Finnair, SAS, Aegean, Aer Lingus, ITA Airways, TAP Portugal, Icelandair, PLAY |
320
+ | **Middle East & Africa** | Emirates, Etihad, Qatar Airways, flydubai, Air Arabia, flynas, Salam Air, Air Peace, FlySafair, EgyptAir, Ethiopian Airlines, Kenya Airways, Royal Air Maroc, South African Airways |
321
+ | **Asia-Pacific** | AirAsia, IndiGo, SpiceJet, Akasa Air, Air India, Air India Express, VietJet, Cebu Pacific, Scoot, Jetstar, Peach, Spring Airlines, Lucky Air, 9 Air, Nok Air, Batik Air, Jeju Air, T'way Air, ZIPAIR, Singapore Airlines, Cathay Pacific, Malaysian Airlines, Thai Airways, Korean Air, ANA, JAL, Qantas, Virgin Australia, Bangkok Airways, Air New Zealand, Garuda Indonesia, Philippine Airlines, US-Bangla, Biman Bangladesh |
322
+ | **Americas** | American Airlines, Delta, United, Southwest, JetBlue, Alaska Airlines, Hawaiian Airlines, Sun Country, Frontier, Volaris, VivaAerobus, Allegiant, Avelo, Breeze, Flair, GOL, Azul, JetSmart, Flybondi, Porter, WestJet, LATAM, Copa, Avianca, Air Canada, Arajet, Wingo, Sky Airline |
323
323
  | **Aggregator** | Kiwi.com (virtual interlining + LCC fallback) |
324
324
 
325
325
  ---
package/dist/index.js CHANGED
@@ -100,7 +100,7 @@ var TOOLS = [
100
100
  },
101
101
  {
102
102
  name: "unlock_flight_offer",
103
- description: 'Unlock a flight offer for booking \u2014 $1 proof-of-intent fee.\n\nThis is the "quote" step: confirms the latest price with the airline and reserves the offer for 30 minutes. ALWAYS call this before book_flight so the user can see the confirmed price.\n\nIf the confirmed price differs from the search price, inform the user before proceeding.\n\nRequires payment method (call setup_payment first).\n\nSAFETY: Charges $1. Not idempotent \u2014 calling twice on the same offer will charge twice.',
103
+ description: 'Unlock a flight offer for booking \u2014 FREE with GitHub star.\n\nThis is the "quote" step: confirms the latest price with the airline and reserves the offer for 30 minutes. ALWAYS call this before book_flight so the user can see the confirmed price.\n\nIf the confirmed price differs from the search price, inform the user before proceeding.\n\nRequires GitHub star verification (call link_github first).\n\nNot idempotent \u2014 calling twice on the same offer may process twice.',
104
104
  inputSchema: {
105
105
  type: "object",
106
106
  required: ["offer_id"],
@@ -142,7 +142,7 @@ var TOOLS = [
142
142
  },
143
143
  {
144
144
  name: "setup_payment",
145
- description: "Set up payment method. Required before unlock/book. For testing use token 'tok_visa'. Only needed once.\n\nIdempotent \u2014 safe to call multiple times (updates the payment method).",
145
+ description: "Legacy payment setup \u2014 no longer required. Use link_github instead for free unlimited access.\n\nOnly needed if you want the old Stripe-based flow. For most users, star the GitHub repo and call link_github.",
146
146
  inputSchema: {
147
147
  type: "object",
148
148
  properties: {
@@ -158,7 +158,7 @@ var TOOLS = [
158
158
  },
159
159
  {
160
160
  name: "start_checkout",
161
- description: "Automate airline checkout up to the payment page \u2014 NEVER submits payment.\n\nFLOW: search_flights \u2192 unlock_flight_offer ($1) \u2192 start_checkout\n\nUses Playwright to drive the airline website: selects flights, fills passenger details, skips extras/seats, and stops at the payment form. Returns a screenshot and booking URL so the user can complete manually in their browser.\n\nSupported airlines: Ryanair, Wizz Air, EasyJet. Other airlines return booking URL only.\n\nSAFETY: Uses fake test data by default. Never enters payment info. The checkout_token from unlock_flight_offer is required \u2014 prevents unauthorized usage.\n\nRuns locally via Python subprocess (pip install letsfg && playwright install chromium).",
161
+ description: "Automate airline checkout up to the payment page \u2014 NEVER submits payment.\n\nFLOW: search_flights \u2192 unlock_flight_offer \u2192 start_checkout\n\nUses Playwright to drive the airline website: selects flights, fills passenger details, skips extras/seats, and stops at the payment form. Returns a screenshot and booking URL so the user can complete manually in their browser.\n\nSupported airlines: Ryanair, Wizz Air, EasyJet. Other airlines return booking URL only.\n\nSAFETY: Uses fake test data by default. Never enters payment info. The checkout_token from unlock_flight_offer is required \u2014 prevents unauthorized usage.\n\nRuns locally via Python subprocess (pip install letsfg && playwright install chromium).",
162
162
  inputSchema: {
163
163
  type: "object",
164
164
  required: ["offer_id", "checkout_token"],
@@ -184,6 +184,17 @@ var TOOLS = [
184
184
  }
185
185
  }
186
186
  },
187
+ {
188
+ name: "link_github",
189
+ description: 'Link your GitHub account for FREE unlimited access \u2014 star the repo and verify.\n\nFLOW: 1) User stars https://github.com/LetsFG/LetsFG 2) Call this tool with their GitHub username\n\nOnce verified, the user gets unlimited search, unlock, and booking forever.\nOnly needs to be called once. If already verified, returns confirmation.\n\nIf status is "star_required", the user needs to star the repo first, then try again.',
190
+ inputSchema: {
191
+ type: "object",
192
+ required: ["github_username"],
193
+ properties: {
194
+ github_username: { type: "string", description: "User's GitHub username (e.g., 'octocat')" }
195
+ }
196
+ }
197
+ },
187
198
  {
188
199
  name: "system_info",
189
200
  description: "Get system resource info (RAM, CPU cores) and recommended concurrency settings.\n\nUse this to determine optimal max_browsers value for search_flights. Returns RAM total/available, CPU cores, recommended max browsers, and performance tier.\n\nTiers: minimal (<2GB, max 2), low (2-4GB, max 3), moderate (4-8GB, max 5), standard (8-16GB, max 8), high (16-32GB, max 12), maximum (32+GB, max 16).\n\nRead-only, no side effects, instant response.",
@@ -260,6 +271,10 @@ async function callTool(name, args) {
260
271
  const result = await apiRequest("POST", "/api/v1/bookings/unlock", { offer_id: args.offer_id });
261
272
  return JSON.stringify(result, null, 2);
262
273
  }
274
+ case "link_github": {
275
+ const result = await apiRequest("POST", `/api/v1/agents/link-github?github_username=${encodeURIComponent(args.github_username)}`, {});
276
+ return JSON.stringify(result, null, 2);
277
+ }
263
278
  case "book_flight": {
264
279
  const body = {
265
280
  offer_id: args.offer_id,
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "letsfg-mcp",
3
- "version": "1.0.1",
3
+ "version": "1.0.2",
4
4
  "mcpName": "io.github.Efistoffeles/letsfg",
5
- "description": "LetsFG MCP Server — 75 airline connectors run locally + enterprise GDS/NDC APIs. Flight search & booking for Claude, Cursor, Windsurf, and any MCP-compatible AI agent.",
5
+ "description": "LetsFG MCP Server — 102 airline connectors run locally + enterprise GDS/NDC APIs. Flight search & booking for Claude, Cursor, Windsurf, and any MCP-compatible AI agent.",
6
6
  "main": "dist/index.js",
7
7
  "bin": {
8
8
  "letsfg-mcp": "dist/index.js"