letsfg-mcp 1.0.1 → 1.0.3
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.
- package/dist/index.js +18 -3
- package/package.json +1 -1
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
|
|
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: "
|
|
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
|
|
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,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "letsfg-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"mcpName": "io.github.Efistoffeles/letsfg",
|
|
5
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.",
|
|
6
6
|
"main": "dist/index.js",
|