LetsFG
Agent-native flight and hotel search and booking.
Что умеет
- Search Flights: Search for flights between any two cities/airports worldwide. Searches hundreds of airlines plus the major booking sites in parallel, server-side. Returns offers with prices, airlines,
- Search Hotels: Search real, bookable hotel rates in a city. Only free-cancellation, pay-later rates are returned, so everything you see can be booked — there is no separate wholesale figure to misquot
- Resolve Hotel City: Resolve a place name to the hotel-search city ids search_hotels understands. Use this when a place name is ambiguous (e.g. more than one 'Warsaw' or 'Springfield') and you need to
Какие данные видит
Нужен ли аккаунт
Не нужен: сервер работает без входа
Agent-native flight and hotel search and booking. One tool call searches hundreds of airlines plus the major booking sites — Google Flights, Skyscanner, Kiwi, Kayak, Momondo — and returns merged, deduplicated, ranked results with per-flight reliability history.
Your agent doesn't need to build a travel integration. It doesn't need to scrape. Add this MCP server and it can search and book flights and hotels.
Free, on one credential
Run letsfg auth once — a zero-amount Stripe card setup, nothing charged, no authorization hold — and you get a 90-day token that reaches both flights and hotels. No Developer API account, no prepaid credits, no separate login for hotels. The same card authorises both products.
Why?
Flight websites inflate prices with demand tracking, cookie-based pricing, and surge markup. LetsFG returns the raw price with no demand-based inflation and no cookie tracking — the same search returns the same prices however often you run it.
For hotels, you don't pay for the room upfront. A small charge holds the booking, and the balance goes straight to the hotel through a pay link, any time up to their own cancellation deadline. Only free-cancellation rates are sold, so every rate you see can actually be booked on those terms.
How it works
Search runs server-side at letsfg.co — no browsers, no scrapers on your machine. search_flights fans out across airline connectors and the major booking sites in parallel; search_hotels opens a real session at the supplier and returns live, bookable rates.
Tools
Flights
| Tool | What it does | Cost |
|---|---|---|
search_flights |
Search hundreds of airlines and booking sites | Free |
resolve_location |
City/airport → IATA code | Free |
book_flight |
Book with real PNR + e-ticket | Ticket price only — no LetsFG fee |
unlock_flight_offer |
Confirm live price and reserve. Legacy, Developer API only — not part of the agent flow; call book_flight directly |
— |
Hotels — need a card on file, because a hotel search opens a real session at the supplier. letsfg auth already puts one there.
| Tool | What it does | Cost |
|---|---|---|
resolve_hotel_city |
Place name → supplier city id. Call this first | Free |
search_hotels |
Live, bookable, free-cancellation pay-later rates | Free |
book_hotel |
Book a rate. Returns a job id — poll, don't retry | 5% now, non-refundable; balance to the hotel later |
get_hotel_booking |
Poll the booking job until it succeeds or fails | Free |
cancel_hotel_booking |
Release a reservation | Free |
Account
| Tool | What it does | Cost |
|---|---|---|
authenticate |
Zero-amount card setup → 90-day token | Free, nothing charged |
setup_payment |
Attach a Stripe payment method | Free |
get_agent_profile |
Your usage & profile | Free |
load_resources |
Load the in-server usage guide | Free |
Auth
Either credential reaches both flights and hotels:
LETSFG_BEARER_TOKEN— the free token fromletsfg auth. Recommended.LETSFG_API_KEY— a Developer API key (prepaid credits) from letsfg.co/developers, for high-volume commercial integrations.
If both are set, the token is used.
Pricing
- Flights — search is free and unlimited. Booking charges the airline ticket price only, with no LetsFG fee.
- Hotels — booking charges 5% of the price immediately as a non-refundable reservation fee. The balance is paid directly to the hotel through the pay link we return, by their own cancellation deadline. Cancel before that deadline and the balance was never charged.
Links
- GitHub: github.com/LetsFG/LetsFG — full docs, open-source ranking engine, architecture guide, agent integration tutorials
- API Docs: letsfg.co/developers/api/docs
- PyPI: pypi.org/project/letsfg
- npm: npmjs.com/package/letsfg-mcp
Как подключить
Как подключить LetsFG к Claude
Адрес сервера, который нужно вставить в настройках Claude:
https://letsfg.run.tools
- Откройте Claude (сайт claude.ai или приложение для компьютера).
- Перейдите в Настройки → Коннекторы (в английском интерфейсе: Settings → Connectors).
- Нажмите Добавить пользовательский коннектор (Add custom connector).
- Вставьте адрес сервера, скопированный ниже, в поле URL удалённого MCP-сервера и нажмите Добавить.
- В чате нажмите + → Коннекторы и включите новый коннектор.
Пользовательские коннекторы доступны на тарифах Free, Pro, Max, Team и Enterprise. На Free можно добавить только один. В Team и Enterprise коннектор сначала добавляет владелец организации в Настройки организации → Коннекторы.
Авторизация
После нажатия Добавить откроется окно входа в сервис. Войдите под своим аккаунтом и подтвердите доступ. Пароль Claude не видит.
Как подключить LetsFG к ChatGPT
Адрес сервера, который нужно вставить в настройках ChatGPT:
https://letsfg.run.tools
- Откройте ChatGPT в браузере (chatgpt.com). Нужен тариф Plus, Pro, Business, Enterprise или Edu.
- Один раз включите режим разработчика: Настройки → Приложения → Дополнительные настройки → Режим разработчика (Settings → Apps → Advanced settings → Developer mode).
- Откройте Настройки → Коннекторы и нажмите Создать (Create).
- Заполните форму: Название (любое), Описание (одна фраза, что делает сервис), URL MCP-сервера (скопируйте ниже).
- В поле Аутентификация выберите OAuth, если сервис требует вход, иначе Нет. Нажмите Создать.
- В новом чате откройте + → Приложения/Коннекторы и включите коннектор.
Название раздела у OpenAI менялось (Connectors → Apps/Plugins). Если пункт называется иначе, ищите «режим разработчика» в настройках. В рабочих пространствах Business/Enterprise администратор должен разрешить пользовательские коннекторы.
Авторизация
При первом использовании ChatGPT откроет окно входа в сервис. Войдите и подтвердите доступ.
Как подключить LetsFG к Cursor
Адрес сервера, который нужно вставить в настройках Cursor:
https://letsfg.run.tools
Быстрый способ: нажмите кнопку Открыть в Cursor ниже, Cursor сам предложит добавить сервер.
Вручную:
- В Cursor откройте Settings → Cursor Settings → MCP и нажмите Add new global MCP server.
- Вставьте JSON, скопированный ниже, в открывшийся файл
~/.cursor/mcp.json(для одного проекта:.cursor/mcp.jsonв корне проекта). - Сохраните файл. Сервер появится в списке MCP; при необходимости пройдите авторизацию по кнопке рядом с ним.
Авторизация
Если сервис требует вход, рядом с сервером в списке MCP появится кнопка авторизации.
Список инструментов сервера (11)
Технические названия из tools/list. Нужны только разработчикам.
| search_flights | Search for flights between any two cities/airports worldwide. Searches hundreds of airlines plus the major booking sites in parallel, server-side. Returns offers with prices, airlines, times, conditions. IMPORTANT: Response includes `passenger_ids` — save them for booking. |
| search_hotels | Search real, bookable hotel rates in a city. Only free-cancellation, pay-later rates are returned, so everything you see can be booked — there is no separate wholesale figure to misquote. `price` is what the guest pays (hotel cost + a flat 5% reservation fee) — that fee is already inside `price`, so nothing extra is added at checkout, unlike a typical ~3% OTA booking fee. Search is free up to 1,000 searches since your last hotel booking. Past that allowance, searches are sold in blocks of 1,000 for $5.00, debited from your prepaid developer balance the moment you cross the current allowance — book a hotel to reset the free allowance back to 1,000. A payment method on file is required for every search regardless — the same card that authorises flight booking (see setup_payment). Each offer carries a `booking_handle` object — pass it VERBATIM to book_hotel when the guest picks a room. Do not construct or edit it yourself. Logical filters, e.g. 'hotel with spa and parking, under €400, near the Eiffel Tower, with breakfast': set `amenities`, `max_total_price`, `max_distance_km`+`near`, and adults/children/child_ages directly — these are applied for you, not something you need to search broadly and filter yourself. `room_flexible=true` also tries the party split across multiple rooms when there are children, for 'any number of rooms is fine' requests. `dietary_hint` (e.g. 'vegan') is BEST-EFFORT only — say so to the guest, never claim it as verified. |
| resolve_hotel_city | Resolve a place name to the hotel-search city ids search_hotels understands. Use this when a place name is ambiguous (e.g. more than one 'Warsaw' or 'Springfield') and you need to show the guest a choice before searching — search_hotels already resolves unambiguous names on its own, so this is optional in the common case. |
| book_hotel | Book one hotel room from a search_hotels result and charge the 5% reservation fee. Returns immediately with a `booking_job_id` — this is NOT the finished booking. A real hotel booking takes several minutes (the rate is re-blocked, the card charged, the room committed at the supplier), so you MUST poll get_hotel_booking every ~20 seconds until `status` is 'succeeded' or 'failed'. Do NOT call book_hotel again for the same offer while a job is still in progress — that books the room twice and charges two reservation fees. Money: booking immediately charges 5% of the price to the connected account's card on file, as a non-refundable reservation fee. On success, the result carries a `pay_link` — the guest pays the remaining bare hotel cost directly to the supplier through that link, by `balance_due_by` (the supplier's real auto-cancellation date, not advisory). A declined card costs nothing: no reservation exists yet when the charge is attempted. |
| get_hotel_booking | Poll the result of a booking started with book_hotel. Call every ~20 seconds using the `booking_job_id` from book_hotel's response until `status` is 'succeeded' or 'failed' — it usually settles within 5 minutes. On success the result includes `confirmation`, `reservation_fee_charged`, `pay_link`, `balance_due`, `balance_due_by`, and the cancellation `terms`. |
| cancel_hotel_booking | Release a confirmed hotel reservation at the supplier. Free until `balance_due_by`; after that the hotel's own cancellation ladder applies and can reach 100% (see `terms.ladder` from the booking result). The 5% reservation fee is never refunded, cancellation or not. This can take a couple of minutes. If no response arrives before your own client gives up, that does NOT mean the cancellation failed — it may still be completing at the supplier. Wait a minute and check with support using the confirmation code rather than assuming failure or retrying immediately. |
| resolve_location | Convert a city or airport name to IATA codes for use in flight search. Use when the user says 'London' instead of 'LON'. |
| unlock_flight_offer | Confirm live price and reserve a flight offer for 30 minutes. After unlocking, call book_flight to complete the booking. |
| book_flight | Book an unlocked flight. Creates a real airline PNR with e-ticket. REQUIREMENTS: 1. Offer must be unlocked first (call unlock_flight_offer) 2. Use passenger_id from search results 3. Use REAL passenger details — airline sends e-ticket to the email provided |
| setup_payment | Attach a payment card. Required before booking. For testing: {"token": "tok_visa"} For production: {"payment_method_id": "pm_xxx"} from Stripe.js One-time setup — all future charges are automatic. |
| get_agent_profile | View your agent profile — payment status and usage stats. |