← Back to directory
L

LetsFG

Official
Flight and hotel search & booking for AI agents
Category
Other #174 of 230
Stars
★ 2.2k Very popular
Transport
stdio (local process)
Runtime
Node.js
Credentials
Optional API key
License
Other / unspecified
Last commit
Tools
5
46FMRS · D

The LetsFG MCP server gives agents free flight search and booking after a one-time zero-amount card verification, plus hotel booking that always requires a card on file and a 10% reservation fee. Key risks are the mandatory saved payment method for hotel calls, the non-refundable reservation fee, the need to poll asynchronous hotel bookings rather than retry blindly, and avoiding accidental use of the separate paid Developer API registration commands.

Strongest · Documentation 11/20 Weakest · Reliability 8/20

Reliability
8/20
Security and permissions
9/20
Maintenance
9/20
Documentation
11/20
Setup experience
9/20
Why each score
Reliability 8/20
Only server.json and the README are available — there is no test suite, CI workflow, or any reproducible evidence of the MCP init/tool-list handshake, so per the static calibration rule reliability cannot exceed 12. More importantly, the manifest and README directly contradict each other: the npm/pypi package's environment-variable description states 'Search runs locally, no key required,' while the README repeatedly insists search actually runs server-side on letsfg.co and requires a 90-day Bearer token obtained via `letsfg auth` first. This contradiction about where the core function even executes means the manifest's minimal declared surface (one optional LETSFG_API_KEY) cannot be trusted to reflect the real runtime dependency chain — external HTTP polling (60–90s), a Stripe setup session, and other undeclared dependencies — with no verifiable evidence of failure handling.
Security and permissions 9/20
The manifest's own declared credential surface is modest and reasonable (LETSFG_API_KEY marked isSecret, isRequired=false, used only for the paid Developer API). However, the README's recommended path (`letsfg auth`) requires attaching a payment method via Stripe for nearly every operation — including hotel 'search' — and this real payment data-flow is completely undisclosed in server.json, a meaningful transparency gap between the declared manifest and actual behavior. The docs also self-report a lack of idempotency protection on booking ('do not retry book_hotel blindly — it double-books and double-charges'), with no protocol-level confirmation or idempotency key, relying purely on documentation warnings. This does not cross the red line for irreversible-payment-without-confirmation (booking still requires an explicit call with passenger/payment details), but real monetary actions (full ticket price, 10% non-refundable hotel deposit) without protocol-level confirmation or dedup safeguards push this above a merely 'main risks visible' baseline into deduction territory.
Maintenance 9/20
The repository's license field is NOASSERTION while the README badge and body both claim 'MIT License' with a LICENSE link — a direct contradiction suggesting a missing/malformed SPDX header or an inaccurate claim, a clear governance/transparency flaw. Beyond that, none of the provided material shows a changelog, security-response channel, or dependency-update policy; stars and open-issue counts are discovery signals only and are not credited toward this score. The date-based versioning scheme (2026.4.9) suggests some cadence of updates, but without verifiable governance evidence this lands in the 'active but with versioning/governance gaps' mid-low range.
Documentation 11/20
The README is extensive — covering install, a three-path comparison table, CLI command reference, pricing, architecture diagrams, and Python/JS code samples — which is strong for static material. However, it contains substantive self-contradictions that squarely hit the 'docs contradict capability' deduction: (1) the manifest claims search 'runs locally, no key required' while the README insists search requires a server-side Bearer token; (2) the license is claimed as MIT while the repo's license field is NOASSERTION; (3) the README itself opens by admitting an earlier revision's description of an MPP charge at unlock time 'never shipped,' meaning the documentation has previously misrepresented actual capability. These contradictions undercut the docs' reliability as verifiable evidence and keep the score below the 'usable but with hidden assumptions' tier.
Setup experience 9/20
Per the static calibration rule, without real CI workflows plus committed tests covering key paths, setup cannot exceed 15. On the surface, MCP client configuration is minimal (`npx -y letsfg-mcp`), but functional search and booking require an additional in-session `letsfg auth` step that performs a Stripe-based payment-method setup and writes a local token file (~/.letsfg/config.json) — none of which is reflected in server.json's environmentVariables. Critically, the manifest's claim that 'search runs locally, no key required' contradicts the README's description of a cloud-token-gated search flow, meaning a user relying solely on the declared manifest configuration would likely end up with non-functional search — undermining the clarity and robustness of the setup path.

Static review · not runListed 2026-08-06

Read the FMRS scoring method →

Fit and risk

What it can accessUses the networkChanges third-party account data

Best for

  • Individuals or developers who want to search, compare, and book flights and hotels conversationally through an agent
  • Agent workflows willing to complete a one-time, zero-amount card verification in exchange for free flight search and booking
  • Travel booking flows that specifically need free-cancellation, pay-later hotel options

Not for

  • High-volume, commercial-scale integrations wanting prepaid-credit billing (use the separate paid Developer API instead)
  • Users unwilling to keep any payment method on file, since hotel functionality mandates a saved card for every call
  • Use cases requiring guaranteed (non free-cancellation) hotel rates, since only pay-later-eligible rates are sold

Required permissions

  • Network access to letsfg.co's cloud search and booking engine
  • A saved payment method / card on file via `letsfg auth` (a zero-amount Stripe setup used to issue a 90-day Bearer token)
  • For hotel tools, a valid saved payment method required on every call, including search
  • Optional LETSFG_API_KEY secret environment variable, needed only for the paid Developer API path

Risks and side effects

  • Hotel search and booking both mandate a saved, valid card on file for every call — unusual compared to typical free search tools and worth surfacing to users before use
  • Hotel bookings charge a 10% non-refundable reservation fee that is not returned even if the booking is later cancelled
  • Hotel booking is asynchronous, returning a booking_job_id rather than a confirmation; retrying book_hotel blindly for the same rate can double-book the room and double-charge the reservation fee
  • The README explicitly warns against accidentally calling `letsfg register` / `letsfg setup-payment`, which creates a separate paid commercial billing account not intended for the normal agent flow
  • The repository's license field is listed as NOASSERTION while the README claims an MIT license, leaving the actual licensing status somewhat unclear

Setup

Before you start

Runtime:Node.js

LETSFG_API_KEY optionalsecret Your LetsFG API key, optional — only needed for unlock/book (search runs locally without it); obtain it from your LetsFG account, treat as a secret.
  1. Add to your MCP client config: {"mcpServers":{"letsfg":{"command":"npx","args":["-y","letsfg-mcp"]}}}.
  2. Inside the MCP session, run letsfg auth once — a zero-amount card-on-file setup (nothing charged) that saves a 90-day Bearer token locally.
  3. After that, flight search and booking work immediately with no LetsFG fee.
  4. For hotel tools, ensure a valid payment method stays on file, since every hotel search and booking call requires one.
  5. Only set the LETSFG_API_KEY environment variable if deliberately switching to the separate, paid Developer API — the README states most agents should not do this and should never call letsfg register or letsfg setup-payment.
claude_desktop_config.json
{"mcpServers":{"letsfg":{"command":"npx","args":["-y","letsfg-mcp"]}}}

Shown for Claude Desktop. Other clients may use a different file or key (VS Code uses "servers") — the configurator below converts it.

.vscode/mcp.json
{
  "servers": {
    "letsfg": {
      "command": "npx",
      "args": [
        "-y",
        "letsfg-mcp"
      ]
    }
  }
}

Goes in your project's .vscode/mcp.json (VS Code uses a "servers" key).

Terminal
claude mcp add letsfg -- npx -y letsfg-mcp

Run it in a terminal; replace any <…> placeholders with your own values first.

Check that it works

Check that the client's tool list shows the five letsfg tools: resolve_hotel_city, search_hotels, book_hotel, get_hotel_booking, cancel_hotel_booking; then run resolve_hotel_city on a city name — a returned city ID confirms the connection works.

Troubleshooting

  1. If search or booking fails, confirm `letsfg auth` was run successfully in the MCP session and produced a valid 90-day Bearer token
  2. If hotel calls are rejected, verify a valid payment method is on file, since both hotel search and booking require a saved card
  3. After booking a hotel, poll get_hotel_booking until status is succeeded or failed rather than assuming book_hotel completes synchronously
  4. LETSFG_API_KEY is not needed for standard flight search/booking — it is only relevant to the paid Developer API
  5. If an unexpected billing account or charge appears, check whether `letsfg register` or `letsfg setup-payment` was called by mistake instead of `letsfg auth`

Things to try

Once connected, you can ask your AI assistant things like:

  • Resolve the city name Warsaw to a LetsFG hotel city ID
  • Search hotels in Warsaw for check-in 2026-11-10 and check-out 2026-11-12 for 2 adults
  • Book the first free-cancellation offer at Hotel Gromada Warszawa Centrum from that search for guest Jan Kowalski, email [email protected]
  • Check the status of my hotel booking and then cancel it before the balance_due_by deadline

Tools 5

resolve_hotel_city read-only
Resolves a city name to the city ID/name needed to search hotels.
search_hotels read-only
Searches bookable hotel offers for a city, check-in/check-out dates, and guest count, returning only free-cancellation, pay-later rates.
book_hotel destructive
Starts an asynchronous hotel booking for a selected offer; returns a booking_job_id rather than an immediate confirmation, since the real booking takes minutes.
get_hotel_booking read-only
Polls a hotel booking job by ID until its status is succeeded or failed.
cancel_hotel_booking destructive
Cancels an existing hotel booking; cost depends on whether balance_due_by has passed and the hotel's own cancellation ladder.

Use cases

Search and compare flight prices across hundreds of airlines and OTAs for an AI agent
Book a real airline PNR or get a direct booking link for a chosen flight offer
Search hotel rates in a given city with free-cancellation, pay-later terms
Book a hotel room and let the guest pay the remaining balance directly to the supplier via pay_link
Poll an asynchronous hotel booking job until it succeeds or fails

Supported clients

Claude Desktop
Cursor
Windsurf

Listed from the project's documentation, not tested by this site.

Overview

LetsFG is the upstream MCP server for the LetsFG travel product, giving AI agents search across hundreds of airlines and the major booking sites plus bookable hotel rates with free-cancellation and pay-later terms. Search and flight booking run on LetsFG's own cloud engine; access requires a one-time, zero-amount card-on-file setup (letsfg auth) that yields a 90-day Bearer token, after which flight search and booking are free with no LetsFG fee. Hotel calls — including search — require a saved payment method on every request; booking charges a 10% non-refundable reservation fee up front, with the remaining balance paid directly to the supplier via a returned pay_link. The repo also documents a separate paid Developer API (prepaid credits, direct airline booking URLs) for high-volume commercial use, but the README explicitly warns agents not to call that product's registration/payment-setup commands.

Similar servers

BioMCP 75 · B

One binary. One grammar. Evidence from the biomedical sources you already trust.

★ 672 · Tools 11 Compare with this →

Source revision cfe6a3fe9431 Data synced 2026-11-04 Read the FMRS scoring method