mcpField
B

BoostedTravel

本地服务
github.com/Boosted-Chat地图与出行2.2k3 天前更新

关于 BoostedTravel

BoostedTravel 是面向 AI Agent 的航班与酒店搜索预订 MCP 服务,由 LetsFG 提供。服务端搜索覆盖多家卖家与航空公司官网,搜索免费,预订后取得航空公司 PNR。

主要功能

  1. 01航班与酒店搜索
  2. 02服务端搜索引擎
  3. 03预订时冻结价格,出票后扣款
  4. 04搜索免费,连接后无需银行卡
  5. 05提供 PFS 脚本接口与 Bearer 令牌

适用场景

  1. 01让 AI Agent 比较多家航空公司的航班价格
  2. 02为旅行者搜索并预订航班或酒店
  3. 03通过脚本调用航班搜索接口

MCP 相关

该项目作为 MCP 服务运行,用户在 Claude、ChatGPT、Cursor 或 Windsurf 中添加 https://letsfg.co/mcp 即可连接,搜索与预订工具由服务端提供。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"efistoffeles-boostedtravel": {
"command": "npx",
"args": [
"-y",
"boostedtravel-mcp"
],
"env": {
"BOOSTEDTRAVEL_API_KEY": "<BOOSTEDTRAVEL_API_KEY>"
}
}
}
}
启动命令npx -y boostedtravel-mcp
需要配置的环境变量
BOOSTEDTRAVEL_API_KEY密钥Your BoostedTravel API key (optional — 75 local airline connectors work without it, API key adds 400+ GDS/NDC airlines)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmboostedtravel-mcp0.2.9
pypiboostedtravel0.2.17

工具

6

收录的工具列表 · 更新于 2 周前

参数类型必填说明
adultsinteger否成人数量(默认值:1)
originstring是出发地的 IATA 代码(例如,'LON'、'JFK')。如果只有名称,请使用 resolve_location。
childreninteger否儿童人数(2-11 岁)
currencystring否货币代码(EUR、USD、GBP)
date_fromstring是出发日期 YYYY-MM-DD
cabin_classenum否M=经济舱,W=高端经济舱,C=商务舱,F=头等舱M | W | C | F
destinationstring是到达地的 IATA 代码(例如,'BCN'、'LAX')
max_resultsinteger否要返回的报价数量上限
return_fromstring否返程日期 YYYY-MM-DD(单程时省略)

详细介绍

LetsFG

我们是 LetsFG——一个旅行者社区。

找航班或酒店,不该意味着要打开 47 个标签页,或花 3 个小时搜索。
也不该让你觉得,只要再多等一会儿,就能拿到更好的价格。

所以我们为此打造了一些东西。
总价一目了然。不追踪。不会因为你看了两次,价格就上涨。


添加到 Claude    点亮星标,表达支持    前往 letsfg.co 体验    pip install


在 Instagram 上关注我们    在 TikTok 上关注我们    在 X 上关注我们


加入社区,帮助大家找到更便宜的航班,把消息传播出去。
⭐ 为仓库点亮星标,分享给朋友 ✈️

分享到 X   分享到 LinkedIn   分享到 Reddit   分享到 WhatsApp   分享到 Telegram   通过电子邮件发送


航班和酒店。两者都能预订。

覆盖全球所有航空公司。真实价格。一次函数调用。

LetsFG 为你的 AI Agent 提供航班和酒店搜索及预订超能力。我们的服务端引擎会扫描全球,寻找最优惠的价格。搜索免费。预订是真实的:票价会从你的卡上预留,LetsFG 预订专员会购买机票,你会收到航空公司的 PNR。

同一航班的价格低 $20–$50,因为你无需承担 OTA 溢价,也不会受到 Cookie 跟踪和动态涨价的影响。

Claude: LetsFG 已加入 Claude 的连接器目录:直接在那里添加,无需粘贴 URL。其他 Agent: 将 https://letsfg.co/mcp 添加为 MCP 服务。批准连接后会打开 letsfg.co/connect:轻点一下即可,无需银行卡。首次预订时才会要求提供银行卡,并通过一笔金额为 0.00 的 Revolut 验证完成设置(不会扣款,也无需 Revolut 账户)。该令牌可用于免费搜索和预订。脚本: 将同一令牌作为 Authorization: Bearer 发送到 PFS 端点。开发者 API: 面向高频商业用途的独立付费产品;大多数 Agent 不需要它。→ 开始使用


GitHub 星标 PyPI npm 连接器运行状况 MCPVault:已认领 MIT 许可证


支持者
Evomi - 住宅代理 $0.49/GB

真实价格:LetsFG 与 Google Flights 对比

我们在同一天(2026-08-05)分别使用 Google Flights 和 LetsFG 搜索了 5 条航线,出发日期均为 2026-09-16。同一家航空公司、经停次数相同——LetsFG 每次都更便宜:

航线航空公司Google FlightsLetsFG为你省下
LAX → Paris (CDG)JetBlue,经停 1 次$363$334$29
SFO → London (LHR)JetBlue,经停 1 次$349$333$16
LA → New York (JFK)JetBlue,直飞$174$157$17
London → Singapore (SIN)Shenzhen Airlines,经停 1 次$395$380$15
Chicago → Dubai (DXB)Air Canada + Emirates,经停 2 次$517$461$56

5 条航线总共便宜 $133,这是经过验证的对比结果(2026-08-05)。无论你搜索多少次,LetsFG 返回的价格都相同,因为它不会跟踪你。

为什么会有差价? LetsFG 会比较同一航班在多个销售渠道的价格——Skyscanner、Kayak、Momondo,以及航空公司官网(Ryanair、United、Southwest、EasyJet、Spirit、Norwegian、AirAsia 等)——并显示最低价。不会跟踪 Cookie:无论你搜索多少次,返回的价格都相同。


真实酒店价格:LetsFG 与 Booking.com 对比

同一家酒店、同一房型、同样入住 2 晚、同样的免费取消政策——在同一天(2026-08-05)查询,入住日期为 2026-09-16:

酒店Booking.comLetsFG为您省下
Hotel Boss, Warsaw$206$169$37
ibis Styles Paris Gare de l'Est$663$525$138
Copthorne Tara Hotel, London Kensington$379$347$32

经核实的对比显示,3 家酒店总共便宜 $207(2026-08-05):将每家酒店自己的免费取消价格,与 Booking.com 在相同日期和房型下的免费取消价格进行比较。预订时以 PLN 报价,按当日汇率换算为 USD。

为什么会有差价? LetsFG 的价格不会随需求变化,也不会因搜索者不同而上涨,并且没有忠诚度计划交叉补贴。预订时,费用会预授权到您的银行卡,而非直接扣款;只有酒店确认后才会扣款。以上对比双方均采用免费取消价格;LetsFG 也提供不可退款价格,每个报价都会注明是否可退款。


立即试用——无需安装

个人用户: 使用 letsfg.co,在浏览器中即时搜索航班:

搜索任意航线、比较实时结果,并预订您想要的航班——无需安装。

Agent / 脚本(免费服务端): 添加支付方式(不会扣款)以获取 Bearer token → 使用 POST /api/search 和 POST /api/agent-book。这是由 letsfg.co 引擎驱动的 PFS — Programmatic Flight Search。搜索免费;token 有效期较短,会自动刷新。完整指南请参阅 letsfg.co/for-agents。

准备好将其集成到自己的 Agent 中后,请继续阅读。


使用 LetsFG 的三种方式

路径 1 — MCP / CLI / SDK路径 2 — PFS(通过 letsfg.co 使用 Programmatic Flight Search)路径 3 — Developer API
最适合AI Agent(Claude、ChatGPT、Cursor、Windsurf)、个人使用——最简单的入门方式使用 Bearer token 直接调用 API 的脚本 / Agent需要预付费的高流量商业集成。大多数 Agent 不应使用此方式
速度8–10 s 获得首批结果8–10 s 获得首批结果2–5 s(发现)· 8–10 s 获得首批结果(完整搜索)
搜索费用免费(连接一次:点按一次,无需银行卡)免费(连接一次:点按一次,无需银行卡)搜索至预订:每次预订后有 200 次免费搜索,之后每次 $0.01
预订book_flight — 票价预授权到您的银行卡,Agent 购买机票,获得真实 PNRPOST /api/agent-book — 相同流程POST /flights/book — 相同流程,无预订费
设置添加 https://letsfg.co/mcp 作为 MCP 服务并批准(点按一次,无需银行卡)使用同一 token,以 Authorization: Bearer 发送——见下文letsfg.co/developers
运行位置我们的服务器(SDK 在本地进行排序)我们的服务器我们的服务器
  • MCP / CLI / SDK(路径 1): 在 Claude、ChatGPT、Cursor 或 Windsurf 中添加 https://letsfg.co/mcp 作为 MCP 服务并批准连接。授权步骤会打开 letsfg.co/connect:点按一次,无需银行卡。首次预订时需要提供银行卡(任意银行卡,或 Revolut Pay / Google Pay),通过 0.00 Revolut 设置流程完成:不会扣款,无需 Revolut 账户,银行卡信息会发送给 Revolut,绝不会发送给 LetsFG。获取的 token 可免费搜索;添加银行卡后,同一 token 也可用于预订。Python 和 JS SDK 会从 LETSFG_BEARER_TOKEN 或 ~/.letsfg/config.json 读取该 token,并在本地应用开源排序算法。(letsfg auth 会在终端中运行同一连接流程:将自身注册为 OAuth 客户端,在浏览器中打开 letsfg.co/connect 以供用户批准,并保存 token。)

  • PFS — 程序化航班搜索(路径 2): 适用于直接调用 API 的脚本和 Agent。letsfg.co 默认仅供人类使用(Cloudflare Turnstile + 机器人防护),因此,连接流程提供的令牌是唯一可供程序化访问的方式。每次请求都要携带该令牌:

    1. 搜索:使用 Authorization: Bearer <token> 调用 POST https://letsfg.co/api/search → { search_id }
    2. 轮询:调用 GET https://letsfg.co/api/results/<search_id>(不会计入速率限制)
    3. 预订:调用 POST https://letsfg.co/api/agent-book → 在数秒内获得 { booking_ref }
    4. 等待:每隔 20–30 s 使用 { booking_ref } 调用 POST https://letsfg.co/api/agent-book/status,直到状态变为 completed(PNR)、failed(已释放预订,不会扣款)或 needs_attention

    POST /api/agent-access/request 仍会以 JSON 返回 402、add_card_url 和这些步骤,因此从该端点开始的 Agent 最终会进入同一流程。MPP 通道(使用钱包,无需银行卡)保持不变:响应 WWW-Authenticate: Payment 挑战(一次性支付 $0.01),并使用 Authorization: Payment 验证。Stripe setup_url / SetupIntent 通道已于 2026-09-02 停用,发放的所有令牌也已撤销;请前往 letsfg.co/connect 重新连接。完整指南和响应架构:letsfg.co/for-agents。

  • 开发者 API(路径 3): 在 letsfg.co/developers 提供服务器端搜索和预订。先搜索、后预订(每次预订后可免费搜索 200 次,之后每次 $0.01)、通过已连接的 Revolut 付款方式进行实际预订、完整的自然语言查询解析、可在一次调用中查询 20 个目的地的 /discover 端点(2–5 s)、酒店,以及免费的沙盒 /sandbox/flights/*,可端到端模拟预订(状态、问题、失败和实际耗时)。完整文档:letsfg.co/developers/api/docs。

免费服务器端搜索: 使用路径 1 或 PFS——在 letsfg.co/connect 连接一次(一键操作,无需银行卡),即可在我们的服务器上免费搜索。无需 Playwright,除 SDK 外也无需在本地安装其他内容。
在自有产品中进行预订: 使用开发者 API(路径 3)——先搜索、后预订,调用 POST /flights/book,且不收取预订费或交易费。酒店服务既支持连接流程提供的令牌,也支持开发者 API 密钥。

定价

使用方式搜索预订航班预订酒店运行位置?
MCP Server✅ 免费(在 letsfg.co/connect 连接一次,无需银行卡)价格会被预授权,在生成真实 PNR 后扣款。无单独费用价格会被预授权,在酒店确认后扣款。无预订费我们的服务器
CLI / Python SDK / npm✅ 免费(使用同一令牌)同上同上我们的服务器
PFS(通过 letsfg.co 调用原始 API)✅ 免费(使用同一令牌,或通过 MPP 一次性支付 $0.01)同上价格会被预授权,在酒店确认后扣款。无预订费我们的服务器
Developer API每次预订可免费搜索 200 次,之后每次 $0.01价格会被预授权,在生成真实 PNR 后扣款。无预订费、无交易费价格会被预授权,在酒店确认后扣款。无预订费我们的服务器

MCP / CLI / SDK / PFS = 搜索免费,可真实预订,无单独费用。 连接一次(点一下,无需银行卡),搜索就免费。首次预订时才需要提供银行卡,通过 Revolut 进行 0.00 的设置(不会扣款)。无需积分,也无需解锁。预订流程与网站结账完全一致:book_flight / POST /api/agent-book 会预授权你看到的价格,LetsFG 预订 Agent 会向卖家购买机票,只有在生成真实航空公司 PNR 后才会扣款。如果预订失败,会解除预授权,不会扣款。你看到的价格就是你支付的价格;预订时不会额外收费。

酒店 = 按报价价格预授权,之后扣款,所有渠道均如此。 预订时会在你的银行卡上预授权全额,LetsFG 会预订酒店并付款,只有在酒店确认后才会扣款;预订失败则会解除预授权。没有预订费、押金或付款链接。所有房价类型均可预订,每条报价都会注明是否可退款以及退款截止时间。详见下文的酒店。

Developer API = 商业用途,搜索转预订。 letsfg.co/developers 会直接预订航班——POST /flights/book 会在你绑定的 Revolut 付款方式上预授权票价,LetsFG 预订 Agent 会购买机票,流程与其他渠道完全相同。搜索不会按调用次数计费:每次预订后可免费搜索 200 次,预订后计数器会重置。超过后,可购买 500 次搜索的套餐,价格为 $5.00(每次 $0.01)。此外没有预订费,也没有交易费:搜索返回的金额就是实际扣款金额。最低充值金额:$5。

月度按次搜索套餐($0.50 / $0.20 / $0.10)已于 2026-09-08 停用,Stripe 也同时停用。付款通过 Revolut 处理:POST /agents/connect-payment 会返回一个一次性链接,用于保存银行卡;连接时不会扣款。

💡 认识经常旅行的人? 了解 LetsFG 的人越多,我们覆盖的航空公司就越多——所有人的体验也会更好。⭐ Star · 分享给朋友


开发者为何给这个仓库点星

Google Flights / ExpediaLetsFG
价格因网站和搜索而异重复搜索时价格稳定。经核实,截至 2026-08-05,5 条航线合计便宜 $133。
覆盖范围单个网站的来源全球所有航空公司——OTA、廉价航空公司、全服务航空公司
速度30 秒以上(页面加载、广告、重定向)CLI/PFS:8–10 秒出首批结果 · API discover:2–5 秒
重复搜索会涨价吗?会绝不会
能在 AI Agent 中使用吗?无 APIMCP · CLI · PFS(连接一次,免费)· Developer API(预付费)
预订重定向到 OTA 结账页面真实航空公司 PNR,电子机票发送至收件箱
舱位等级筛选无经济舱、高级经济舱、商务舱、头等舱
使用成本因网站而异CLI/PFS:搜索免费;无预订费、无交易费。Developer API:每次预订后可免费搜索 200 次,之后每次搜索 $0.01;无预订费、无交易费。

开始使用

所有服务都运行在我们的服务器上。一次连接即可使用 MCP、各类 SDK 和原始 API。

🔌 MCP — 连接一次,即可搜索和预订

添加远程服务并批准连接。授权步骤会打开 letsfg.co/connect:点一下即可,无需银行卡,随后就能使用。首次预订时才会要求提供银行卡(设置费用为 0.00,不会扣款)。

# Claude Code
claude mcp add --transport http letsfg https://letsfg.co/mcp
// Cursor (~/.cursor/mcp.json) — Windsurf uses "serverUrl" instead of "url"
{ "mcpServers": { "letsfg": { "url": "https://letsfg.co/mcp" } } }

Claude:LetsFG 已收录在 Claude 官方连接器目录中。打开 claude.ai/directory/letsfg,添加并批准连接。无需粘贴 URL。添加后,也可以在 Claude Desktop 和 Claude 手机应用中使用。

ChatGPT:在浏览器中前往 chatgpt.com 添加(ChatGPT 手机应用无法添加):Plugins > Add > Add custom MCP server,URL 为 https://letsfg.co/mcp,身份验证选择 OAuth,勾选 I understand,然后选择 Create as a plugin。添加后,也可以在 ChatGPT 手机应用中使用。

然后在聊天中输入:“帮我找 6 月 15 日从伦敦到巴塞罗那最便宜的航班并预订”。search_flights 会返回报价;book_flight 会用你的银行卡锁定票价并启动 LetsFG 预订 Agent;get_flight_booking 会在订单生成后返回 PNR(需 4–11 分钟)。

🖥️ 命令行 / SDK — 使用同一令牌,在本地运行排名
pip install letsfg
export LETSFG_BEARER_TOKEN=<token from the connect flow>
letsfg search LHR BCN 2026-06-15
letsfg search LHR JFK 2026-06-15 --cabin C   # cabin class: M economy, W premium, C business, F first

SDK 会从 LETSFG_BEARER_TOKEN 或 ~/.letsfg/config.json 读取令牌。letsfg auth 会自行执行连接流程:注册为 OAuth 客户端,打开 https://letsfg.co/connect 供用户批准,并将令牌写入 ~/.letsfg/config.json。添加 --no-browser 可打印 URL,而不打开浏览器。

🔌 PFS — 程序化航班搜索(免费,服务端运行)

通过任意脚本在我们的服务端运行 LetsFG 的完整搜索流程。访问需要连接流程中获取的令牌: letsfg.co 仅供人工访问(使用 Cloudflare Turnstile),因此该令牌是唯一的程序化访问方式。只需点一下即可连接,无需银行卡;首次预订时才会要求提供银行卡。

# 1. Search with the token
curl -X POST https://letsfg.co/api/search \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"origin":"LHR","destination":"BCN","date_from":"2026-06-15"}'
# → {"search_id":"ws_abc123","status":"searching"}

# 2. Poll until done (keep going while split_ticket_pending is true)
curl https://letsfg.co/api/results/ws_abc123 -H "Authorization: Bearer <token>"

# 3. Book — the fare is HELD on the card, a LetsFG agent buys the ticket
curl -X POST https://letsfg.co/api/agent-book \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{"search_id":"ws_abc123","offer_id":"wo_abc123","contact_email":"[email protected]",
       "passenger":{"given_name":"Ada","family_name":"Lovelace","born_on":"1990-04-01","gender":"f",
                    "nationality":"GB","phone_number":"+447700900000","phone_country":"GB",
                    "address_line1":"1 Analytical Way","address_city":"London","address_postal":"N1 9GU","address_country":"GB"}}'
# → {"booking_ref":"eyJ..."} within seconds

# 4. Wait for the PNR (every 20–30 s; a booking takes 4–11 minutes)
curl -X POST https://letsfg.co/api/agent-book/status \
  -H "Authorization: Bearer <token>" -H "Content-Type: application/json" \
  -d '{"booking_ref":"eyJ..."}'
# → {"state":"completed","pnr":"ABC123","charged_amount":93,"currency":"EUR"}

failed 表示已释放预留,且未扣款;needs_attention 表示 LetsFG 的工作人员正在核查,请勿再次预订。缺少乘客信息时会返回 missing_fields,且不会扣款。未提供银行卡时,端点会返回 payment_method_required 和 add_card_url。完整指南和响应架构:letsfg.co/for-agents。

⚡ 开发者 API — 服务端搜索、预订和酒店

面向高流量商业集成的独立产品;大多数 Agent 不应使用。搜索后可直接预订,结果几秒内返回,并可通过 POST /flights/book 实际预订——此外还有 /discover(一次调用可查询 20 个目的地)、异步轮询、自然语言查询解析、酒店,以及可端到端完成预订的免费沙盒(响应、状态、问题和耗时均与生产环境一致,不涉及真实资金)——先在这里构建你的预订流程。

# Register, then search with your API key
curl -X POST https://letsfg.co/developers/api/v1/agents/register \
  -H "Content-Type: application/json" \
  -d '{"agent_name":"my-agent","email":"[email protected]"}'

curl -X POST https://letsfg.co/developers/api/v1/flights/search \
  -H "X-API-Key: letsfg_..." \
  -H "Content-Type: application/json" \
  -d '{"origin":"LHR","destination":"BCN","date_from":"2026-06-15"}'

定价:每次预订后可免费搜索 200 次,之后每 500 次收费 $5.00(每次 $0.01)。无预订费,无交易费。最低充值金额为 $5。可先在沙盒中免费测试,包括预订。完整文档:letsfg.co/developers/api/docs。

完整搜索 → 预订流程(MCP / PFS Agent 路径,无解锁步骤)
search_flights  LON → BCN, 2026-04-01, return 2026-04-08
get_flight_results  (while more offers are still landing)
book_flight     search_id + offer_id + one traveller's real details + contact_email
                → booking_ref in seconds; price HELD on the connected card
get_flight_booking  every 20–30 s → completed (PNR, charged_amount) | failed (hold released) | needs_attention

通过原始 HTTP 调用时,相同的四个步骤是 POST /api/search、GET /api/results/<id>、POST /api/agent-book、POST /api/agent-book/status。

letsfg unlock 已于 2026-09-08 停用,其路由会返回 410 Gone。 两种方式都不需要解锁步骤:预订会锁定票价,只有获得真实 PNR 后才会扣款;这正是此前设置解锁步骤的目的。请参阅 CLI 命令。

💡 喜欢这个项目? 支持我们——⭐ 点赞 · 分享给朋友


适用于你的 Agent 运行的所有环境

MCP 服务(Claude / ChatGPT / Cursor / Windsurf / OpenClaw)

使用托管服务。它会替你携带令牌,而 book_flight 会实际预订机票。

{
  "mcpServers": {
    "letsfg": {
      "url": "https://letsfg.co/mcp"
    }
  }
}

当客户端询问时,请批准连接;同意步骤会打开 letsfg.co/connect:轻点一下即可,无需银行卡。首次预订时才会要求提供银行卡(设置费用为 0.00,不会扣款)。工具:search_flights、get_flight_results、book_flight、get_flight_booking,以及酒店工具。

如果提供令牌 LETSFG_BEARER_TOKEN,stdio 包(npx -y letsfg-mcp)也能正常工作;它的 authenticate 工具会返回当前的连接说明。

可选:改用 Developer API(先搜索再预订、POST /flights/book、酒店)
{
  "mcpServers": {
    "letsfg": {
      "command": "npx",
      "args": ["-y", "letsfg-mcp"],
      "env": {
        "LETSFG_API_KEY": "letsfg_your_api_key"
      }
    }
  }
}

这是一个面向高流量商业用途的独立付费产品——大多数 Agent 应使用上面的免费连接流程,而不必选择此方案。刻意设置此方案的用户可以在 letsfg.co/developers 获取密钥。

5 分钟快速入门:Claude · Cursor · Windsurf

Python SDK
from letsfg import LetsFG

bt = LetsFG()  # reads LETSFG_API_KEY from env
flights = bt.search("LHR", "JFK", "2026-04-15")
print(f"{flights.total_results} offers, cheapest: {flights.cheapest.summary()}")
JavaScript SDK
import { LetsFG } from 'letsfg';

const bt = new LetsFG({ apiKey: 'letsfg_...' });
const flights = await bt.search('LHR', 'JFK', '2026-04-15');
console.log(`${flights.totalResults} offers`);
Python SDK(云端搜索)
from letsfg.local import search_local

# Reads LETSFG_BEARER_TOKEN env var or ~/.letsfg/config.json (the token from the connect flow)
result = await search_local("GDN", "BCN", "2026-06-15")

for offer in result.offers[:5]:
    print(f"{offer.airlines[0]}: {offer.currency} {offer.price}")

⇄ 拆分机票——两张机票,一趟旅程

将长途行程作为一趟旅程搜索,返回的会是一张全程票,因为所有人都在转售同一张机票。通过枢纽机场将行程拆成两段独立航程搜索,每段航程都能从该航段最便宜的选项中预订——无论是哪家航空公司、哪家销售商。通常这会选中两家不同的航空公司(短途航段通常是廉价航空公司,长途航段则是另一家航空公司),但唯一的规则就是“每段航程都选最便宜的”。没有人会把这种组合当作一张机票出售,因此也没人会为它报价——这正是它更便宜的原因。

LetsFG 会为你生成这样的行程,并与全程票一起返回。拆分机票优惠会明确标记,绝不会伪装:

字段拆分机票优惠中的值
split_ticket"true"
combo_type"virtual_interlining"
self_transfer"unprotected"
for o in offers:
    if o.get("split_ticket") == "true":
        print(o["price"], "— two separate tickets, self-transfer not protected")

在展示价格前,请先查看 self_transfer。 unprotected 表示两张机票互不关联:如果第一趟航班晚点导致错过转机,第二家航空公司不承担任何责任——不会重新预订、不会退款,也不提供照料义务。这就是你为节省费用而接受的条件,旅客必须知晓。我们只会在转机时间确实充裕时生成拆分行程,并会在优惠中说明这一点——但如果 Agent 只转述价格却不说明条件,就是在误导旅客。

此探测有触发门槛。 两次额外的连接器扇出会产生实际费用,因此只有在全程票足够贵、行程足够长,且市场上存在可拆分行程的地点时,才会尝试拆分。大多数搜索不会触发此功能;即使触发,也不一定能找到更省钱的方案。

结果会在 completed 后出现。 请参阅轮询:completed 并非终点。

运行位置。 letsfg.co 及其背后的 Agent 通道——包括 CLI、Python 和 JS SDK,以及 MCP 服务。付费 Developer API 由不同的后端提供;它会返回 self_transfer,但拆分机票优惠不属于其服务范围。

实际节省金额
航线最便宜的单程票拆分——两张票节省金额经由两家航空公司中转时间
斯图加特 → 上海$552$461$91 (16%)布达佩斯Wizz Air + Qatar Airways6 h
卡托维兹 → 迪拜$283$216$67 (24%)伊斯坦布尔Wizz Air + Pegasus15 h
重庆 → 格但斯克$429$387$42 (10%)斯德哥尔摩China Eastern + Ryanair10 h
维尔纽斯 → 曼谷$370$337$33 (9%)雅典Ryanair + Air Arabia5 h
上海 → 维尔纽斯$406$377$29 (7%)伦敦Shenzhen Airlines + Wizz Air12 h

数据于 2026 年 8 月通过实时搜索测得(1 名成人,单程,约提前 2 个月)。每个拆分行程都包含两张独立机票(此处为两家不同航空公司的机票),且自行中转没有保障——如果第一趟航班晚点,第二家航空公司没有义务为你负责。价格不断变化;这些结果无法完全复现。在搜索的 26 条长途航线上,有 5 条的拆分行程比最便宜的单程票更便宜——这种优势出现在没有廉价长途直飞航班的二线城市。使用 tools/split-comparison.py 重新生成。

以上数据来自真实搜索,并且可以复现:脚本会运行任何人都能运行的同一项公开搜索,将最便宜的拆分行程与同一结果集中的最便宜单程票进行比较,并将原始报价写入 split-comparison.json,以便核查任意一行。没有产生拆分行程的航线也会一并报告,而不会悄悄略过——大多数搜索根本不会触发拆分查询,如果表格对此避而不谈,就会歪曲这种情况的发生频率。

✦ 搜索结果中的 Starlink Wi-Fi

报价会以两个准确的等级说明航班是否配备 Starlink。确定的结论(confirmed_all)表示航空公司已为该机型的所有飞机完成安装。保留条件的结论(likely_all)表示该机型的部署确有其事,但尚未完成——截至 2026 年 8 月,United 机队的覆盖率约为 29%——因此这只是一个参考信号,而非承诺。没有该字段表示没有相关信息,并不代表没有 Wi-Fi。

for o in offers:
    if o.get("starlink") == "confirmed_all":
        print(f"{o['owner_airline']} {o['price']} — Starlink on every leg")

完整语义见:docs/api-search.md。

🏨 酒店——全新上线,现已开放预订

你的 Agent 现在可以预订酒店,而不只是航班。使用相同的凭证和已登记的银行卡。

预订酒店前,请先更新 SDK。 酒店预订需要 letsfg 2026.5.101 或更高版本(Python)、 letsfg 2026.5.74 或更高版本(JavaScript/TypeScript),或 letsfg-mcp 2026.5.77 或更高版本。更早的版本会发送已于 2026-09-11 弃用的预订费用字段(expected_balance,没有 expected_cost),API 会拒绝它们发起的所有酒店预订。使用 pip install -U letsfg、npm install letsfg@latest 或 npx -y letsfg-mcp@latest 更新。托管 MCP https://letsfg.co/mcp 无需更新。

from letsfg import LetsFG
lfg = LetsFG()  # reads LETSFG_API_KEY — the SDK's hotel methods take a Developer API key

city = lfg.hotel_destinations("Warsaw")[0]
stays = lfg.search_hotels(
    city_id=city["Id"], city_name=city["Name"],
    check_in="2026-11-10", check_out="2026-11-12", adults=2,
)

hotel = stays["hotels"][0]
offer = hotel["offers"][0]
print(hotel["name"], offer["price"], offer["currency"],
      "refundable" if offer["refundable"] else "non-refundable")

booking = lfg.book_hotel_and_wait(
    session_id=offer["session_id"],
    hotel_code=hotel["hotel_code"],
    combination_id_v2=offer["combination_id_v2"],
    expected_price=offer["price"],
    expected_cost=offer["expected_cost"],
    currency=offer["currency"],
    fx_rate=offer["fx_rate"],
    city_id=city["Id"], city_name=city["Name"],
    check_in="2026-11-10", check_out="2026-11-12",
    guests=[{"title": "Mr", "first_name": "Jan", "last_name": "Kowalski"},     # one entry per guest:
            {"title": "Ms", "first_name": "Anna", "last_name": "Kowalska"}],   # adults=2 -> two names
    email="[email protected]", phone="512345678",
)
print(booking["status"], booking.get("confirmation"), booking.get("total_price"), booking.get("currency"))
如何付款

预订时冻结款项,酒店确认后扣款。 预订时会在你的银行卡上冻结全部 price,但不会立即扣款。LetsFG 会自行预订房间并向供应商付款;只有酒店确认后才会扣除冻结款项。如果预订因任何原因失败(房价已失效、价格变动或供应商拒绝),冻结款项会解除,不会产生任何扣款。没有预订费、押金或付款链接。

price 是包含所有费用的总价,以你搜索时使用的 currency 计价(默认 USD)。 在 free_cancellation_until 之前取消可全额退款的预订,即可获得全额退款。若取消会产生费用,端点会拒绝取消;酒店自身的阶梯式取消政策会列在预订的 terms 中,因此你可以提前查看费用。

构建前值得了解的事项
  • 搜索酒店无需银行卡,预订则需要。 搜索酒店会在供应商处开启一个真实会话,因此未绑定银行卡的账户每天可搜索酒店的次数有限。预订前会先要求提供银行卡,之后才会保留房间:book_hotel 会返回添加银行卡的链接,和 book_flight 一样。授权预订航班的银行卡也可授权预订酒店——无需单独注册酒店服务。
  • 每种房价类型都可能是可售、可退款或不可退款的。 每个报价都包含 refundable 和 free_cancellation_until;预订不可退款房价前,请向住客展示这些信息。
  • 预订是异步的。 book_hotel 返回的是 booking_job_id,而非预订结果——实际处理需要几分钟。轮询 hotel_booking(job_id),直到 status 为 succeeded、failed 或 attention;也可以调用 book_hotel_and_wait。attention 表示 LetsFG 的工作人员正在向供应商确认结果:房间会继续保留,不会扣款,而且你不得再次预订。
  • 原样传回报价。 按报价返回的内容原样发送 expected_price、expected_cost、currency 和 fx_rate;任何不一致都会在房间保留之前以 price_mismatch 拒绝。
  • 填写每位住客的姓名。 guests 需要为房间内每个人提供一项,包括儿童:先填写成人,再按 child_ages 中的顺序填写儿童。姓名数量少于搜索时的人数会导致预订失败,且请求不会发送到酒店,房间保留也会被取消。
  • 任务运行期间不要重新预订。 请轮询任务。使用相同的 idempotency_key 重试时,会返回现有任务,而不会重复预订。
  • 无论结果如何,我们都会通知住客。 住客会收到确认邮件;如果预订失败或需要核实,也会收到相应消息。
  • price 是住客支付的金额。expected_cost 是供应商给出的金额,仅用于传回——切勿将其作为报价。
JavaScript
import { LetsFG } from 'letsfg';
const lfg = new LetsFG({ apiKey: process.env.LETSFG_API_KEY });

const [city] = await lfg.hotelDestinations('Warsaw');
const stays = await lfg.searchHotels({
  cityId: city.Id, cityName: city.Name,
  checkIn: '2026-11-10', checkOut: '2026-11-12', adults: 2,
});

const booking = await lfg.bookHotelAndWait({ /* ...offer + guest details... */ });
console.log(booking.status, booking.confirmation, booking.total_price, booking.currency);
MCP

新增五个工具,按调用顺序排列:resolve_hotel_city → search_hotels → book_hotel → get_hotel_booking → cancel_hotel_booking。


🖥️ Omarchy 桌面插件

在 Omarchy 栏中搜索全球所有航空公司。输入两个机场代码和日期,按下 Search,再点击报价即可打开。面板位于此代码库中——根目录下的 manifest.json、BarWidget.qml、Panel.qml 和 Model.js——它使用与 CLI 和 MCP 服务相同的引擎,并按照 sdk/js/src/ranking.ts 中同一开源排名算法进行排序。

Omarchy 栏中的 LetsFG 航班面板

安装

omarchy plugin add https://github.com/LetsFG/LetsFG.git --enable

然后在 Omarchy 栏设置中,将 LetsFG Flights 添加到栏的某个分区。面板会从 ~/.letsfg/config.json 读取你的 LetsFG 令牌(由 letsfg auth 写入),并自行续期;你也可以通过面板连接 letsfg.co/connect——轻点一下,无需银行卡。请参阅 OMARCHY-PLUGIN.md。

移除

omarchy plugin remove io.github.letsfg.flights

这只会移除插件。令牌归你所有——如果想将其删除,请自行删除 ~/.letsfg/config.json。

此插件不包含任何 API 密钥。 它使用你创建且可撤销的令牌进行身份验证,不会索要银行卡信息,也不会自行启动搜索——没有后台轮询、价格监控或刷新计时器。它可能联系的所有主机、读取或写入的所有文件,以及它发送的匿名安装 ID(用于帮助我们了解是否有人在使用插件),都在 OMARCHY-PLUGIN.md 中完整说明。

需要 Omarchy Quattro shell。与此代码库的其余部分一样,采用 MIT 许可证。与 Omarchy 或 37signals 无关联,也未获其赞助或认可。


安装

软件包命令可获得的内容
Remote MCPhttps://letsfg.co/mcp无需安装。在 letsfg.co/connect 批准连接(点按一次,无需银行卡),即可搜索和预订
Python SDK + CLIpip install letsfgSDK + CLI(通过连接流程获取令牌,并存储在 LETSFG_BEARER_TOKEN 中)
MCP Server (stdio)npx letsfg-mcp为不支持 Remote MCP 的客户端提供本地服务;需要 LETSFG_BEARER_TOKEN
JS/TS SDKnpm install -g letsfgSDK + CLI + 开源排序引擎
Agent Skillnpx skills add LetsFG/LetsFG为任意 AI Agent 安装航班搜索技能(skills.sh)
Smitherysmithery.ai/servers/letsfg一键安装 MCP
Omarchy 插件omarchy plugin add https://github.com/LetsFG/LetsFG.git --enable在 Omarchy 栏中搜索航班(详情)

CLI 命令

命令说明
letsfg auth在 letsfg.co/connect 连接(点按一次,无需银行卡)并存储令牌(自动注册,采用 PKCE + loopback 重定向,并打开浏览器)。--no-browser 会打印 URL
letsfg search <origin> <dest> <date>搜索航班(使用连接流程获取的令牌即可免费使用)
letsfg register[仅限开发者 API] 为付费预付额度产品注册账户——不属于 Agent 流程
letsfg connect-payment[仅限开发者 API] 打印一次性链接,用于将银行卡关联到付费账户;不会扣款。letsfg setup-payment 仍作为别名保留——它曾调用的 Stripe 路由已于 2026-09-08 停用,并返回 410 Gone
letsfg recover --email <email>通过电子邮件找回丢失的 API 密钥
letsfg locations <query>将城市/机场解析为 IATA 代码
letsfg unlock <offer_id>已于 2026-09-08 停用——该路由返回 410 Gone。两种流程都无需解锁步骤;请使用 letsfg book
letsfg book <offer_id>预订航班:在已关联的银行卡上冻结票价,由 LetsFG Agent 购买机票,并返回用于查询状态的 booking_ref
letsfg me查看个人资料和使用统计

所有命令都接受 --json 以输出结构化数据,并接受 --api-key 以覆盖环境变量。


工作原理

CLI / SDK / MCP(免费,由云端提供支持)
Connect the MCP (once, one tap at letsfg.co/connect) → token → Search (free) → Book (card asked for at the first booking; hold → agent → PNR)
  1. 身份验证 — 将 https://letsfg.co/mcp 添加为 MCP 服务并批准连接。OAuth 授权步骤会打开 letsfg.co/connect:点按一次,无需银行卡。首次预订时才会要求提供银行卡,并进行 0.00 Revolut 设置。连接不会产生任何扣款。SDK 会从 LETSFG_BEARER_TOKEN 或 ~/.letsfg/config.json 中读取令牌。
  2. 搜索 — letsfg search LHR BCN 2026-06-15 会调用 POST https://letsfg.co/api/search,轮询直至完成(首批结果需 8–10 秒),并在本地应用开源排序算法。
  3. 预订 — POST /api/agent-book 会冻结银行卡上显示的价格并启动 LetsFG 预订 Agent;POST /api/agent-book/status 会在 4–11 分钟后返回带有 PNR 的 completed,或者返回 failed 并解除冻结。预订时不会收取额外费用。
轮询:completed 并不代表结束

搜索通常需要 8–10 秒才会返回首批结果。立即轮询 GET /api/results/<search_id>,之后每 2 秒轮询一次——如果先休眠再进入循环,那么对于本来比休眠时间还快的搜索,就会被强行拖慢。

当 status 不再是 searching 时,连接器扇出已完成,但报价集合可能仍在增加。分票探测会在扇出完成后派发,其结果随后才会合并,因此,搜索中最便宜的行程往往在状态变为终态时还不存在。响应会说明这一点:

标志值为 true 时的含义
split_ticket_pending分票探测仍在运行
gf_enrich_pendingGoogle Flights 补充结果尚未合并

只要其中任一标志为 true,就继续轮询,并限制等待时间——标志若一直不清除,不应让你的 Agent 挂起。达到等待上限时,使用已返回的所有结果。

Python 和 JS SDK 以及 MCP 服务已实现此逻辑,等待上限为 90 秒——这与服务用于判断结果已稳定的时间窗口相同。 因此,触发分票探测的搜索可能明显超过“8–10 秒返回首批结果”的快速路径;你等待的是分票报价。若你更希望快速得到结果,可设置 LETSFG_WAIT_FOR_SPLIT=0。

大多数搜索都不会触发探测,因此首次轮询时这两个标志通常都已为 false,不会增加耗时。

PFS——原始 API(与 CLI 相同,不含封装)
Connected at letsfg.co/connect -> Bearer token -> POST /api/search -> poll GET /api/results/<id> -> POST /api/agent-book -> poll POST /api/agent-book/status
  1. 获取 Bearer 令牌——通过 MCP OAuth 流程连接;授权步骤位于 letsfg.co/connect(点按一次,无需银行卡;首次预订时会要求提供银行卡或使用 Revolut Pay,金额为 0.00,不会扣款)。POST /api/agent-access/request 会以 402 响应返回 add_card_url 和操作步骤。MPP 钱包通道(一次性支付 $0.01)通过 POST /api/agent-access/verify 验证,并使用 Authorization: Payment。
  2. 搜索——向 https://letsfg.co/api/search 发送 POST 请求,并携带 Authorization: Bearer <token>。返回 { search_id }。立即轮询 GET /api/results/<search_id>,之后每 2 秒轮询一次,直到 status 不再是 searching。然后,只要 split_ticket_pending 或 gf_enrich_pending 为 true,就继续轮询——分票报价会在状态变为终态后合并。
  3. 预订——POST /api/agent-book → booking_ref;轮询 POST /api/agent-book/status,直到状态为 completed(PNR)或 failed(已释放预留,不会扣款)。
开发者 API——服务端搜索与预订
Register → Connect a Revolut method → Search (200 free per booking) → POST /flights/book → poll to a PNR
  1. 发现——向 POST /flights/discover 发送最多 20 个目的地,获取按价格从低到高排序的参考价格。耗费 1 个点数,耗时 2–5 秒。用于确定选项排序,再决定是否执行完整搜索。
  2. 完整搜索——调用 POST /flights/search(阻塞)或 /flights/search/async(非阻塞并轮询)。耗费 1 个点数,通常需要 8–10 秒返回首批结果。
  3. 预订——每个报价都包含航空公司的直接 booking_url。无需支付 LetsFG 费用,也无需经过结账步骤。
虚拟联程

服务端引擎会组合不同航空公司的单程票价,构建跨航司往返行程。与单独在任一家航空公司预订往返行程相比,瑞安航空去程 + Wizz Air 返程可节省 30–50%。

全城机场扩展

搜索城市代码时,LetsFG 会自动搜索该城市的所有机场。LON 会扩展为 LHR、LGW、STN、LTN、SEN、LCY。NYC 会扩展为 JFK、EWR、LGA。全球 25 个以上主要城市均支持此功能。


架构

CLI / SDK / MCP / PFS

CLI / SDK / MCP / AI Agent
        │  Connected at letsfg.co/connect (one tap) -> Bearer token
        ▼
POST letsfg.co/api/search  (bot-protected, token required)
        │
        ▼
letsfg.co server-side search engine
        │
        ▼
GET /api/results/<search_id>  (poll every 2 s; keep going while split_ticket_pending)
        │
        ▼
Ranking applied locally (sdk/js/src/ranking.ts, open-source)
        │
        ▼
Results + booking via POST /api/agent-book (hold on card -> LetsFG agent -> PNR)

开发者 API

Product / Team / Agent
        │  API key + a connected Revolut method
        ▼
letsfg.co/developers/api/v1
  ├─ /flights/discover      (indicative prices, 20 dest, 2–5 s)
  ├─ /flights/search        (full search, 8–10 s to first results)
  ├─ /flights/search/async  (non-blocking + poll)
  ├─ /flights/parse-query   (Gemini NL parsing, free)
  ├─ /flights/book          (holds the fare on the connected method)
  ├─ /flights/bookings/{id} (poll to a real PNR, 4–11 min)
  └─ /sandbox/flights/*     (free: search + simulated booking, same schema)
        │
        ▼
Real airline PNR - the hold is captured only once it exists
涵盖的航空公司
地区航空公司
欧洲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
中东和非洲Emirates, Etihad, Qatar Airways, flydubai, Air Arabia, flynas, Salam Air, Air Peace, FlySafair, EgyptAir, Ethiopian Airlines, Kenya Airways, Royal Air Maroc, South African Airways
亚太地区AirAsia, AirAsia X, IndiGo, SpiceJet, Akasa Air, Air India, Air India Express, Alliance Air, Star Air, EaseMyTrip OTA, VietJet, Cebu Pacific, Scoot, Jetstar, Peach, Spring Airlines, Lucky Air, 9 Air, Nok Air, Batik Air, Jeju Air, T'way Air, ZIPAIR, Skymark, H.I.S. Travel OTA, 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
美洲Southwest, JetBlue, Frontier, Spirit, Allegiant, Avelo, Breeze, Sun Country, Flair, Porter, WestJet, Volaris, VivaAerobus, GOL, Azul, LATAM, JetSmart, Flybondi, Arajet, Wingo, Sky Airline, Copa, Avianca
大洋洲Rex, Bonza, Link Airways, Air Vanuatu, Fiji Airways

Star 历史

Star 历史图表

letsfg.co · API 文档 · 连接器状态 · PyPI · npm · Smithery · Instagram · TikTok · X

开源 · MIT 许可证 · 由旅行者打造,为旅行者服务 ❤️

想获取更新?点击上方的 Watch,或在 Instagram 上关注 LetsFG、在 TikTok 上关注 @letsfg_,或在 X 上关注 @LetsFG_。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。