原始内容
name: flightclaw description: Personal travel-booking agent. Onboard a traveler once (who you are, companions, loyalty programs, credit cards, travel preferences), then chat about where you want to go and get a few preference-ranked flight options, fully book and pay for them, and follow up after the trip to learn how you like to travel. Also searches and price-tracks flights via Google Flights. Runs as an MCP server (Python 3.10+, fli + mcp). Profiles live server-side in the private flightclaw-api Worker (D1).
flightclaw
FlightClaw is a personal travel-booking agent. It remembers who you are, who you travel with, the loyalty programs and cards you hold, and how you like to fly — then recommends, books, pays for, and learns from each trip.
Personalization data (travelers, preferences, cards/points, companion groups,
trip history) is stored server-side in the private flightclaw-api Worker
(D1), reached via FLIGHTCLAW_API_URL + FLIGHTCLAW_API_KEY. Payment for
bookings routes through Link virtual cards (duffel_book_with_link).
The flow
1. Onboarding (one time)
Set this up once, then reuse forever.
- Who you are —
save_travelerfor yourself (full passport-accurate name, DOB, contact, loyalty programmes), thenset_meto mark that profile as you and record home airports. - Companions —
save_travelerfor each person you travel with (relationship: spouse/partner/child/parent/friend/colleague). Group them withsave_group(e.g.family=jack,jane). - Preferences —
set_preferences: cabin by haul (e.g. short-haul ECONOMY, long-haul BUSINESS), preferred/avoided airlines, alliance, seat, departure window, max stops, red-eye tolerance, baggage, meal, and budget sensitivity (cheapest/balanced/comfort). - Cards & points —
save_cardfor each card;set_points_balancefor each loyalty/transfer program. Then enrich with the Card Links MCP (find_transfer_programs_for_airline,list_transfer_partners) so you know which airlines each card's points can reach.
2. Planning a trip
- Ask where they want to go and who's coming — reuse a group with
get_group(it returns the exactpassengersstring for booking) or make a new one withsave_group. - Recommend —
recommend_flights(origin, destination, date, ...). It loads the saved preferences, picks the cabin by haul, drops avoided airlines, and ranks options on price/duration/stops/preferred-airline/departure-window/ red-eye, returning the top 3 with a "why this fits you" for each. - Awards / points option — if they want to spend points, call the Award
Travel Finder MCP (
search_availability,search_all_airlines,get_pricing) using their stored loyalty programs and points balances, and present award options alongside the cash fares ("best overall / cheapest / best points value").
3. Booking & paying
- Get a bookable, payable offer with
duffel_search_flights(real fares/ conditions).duffel_get_offer/duffel_get_seat_mapfor extras. - Confirm the choice with the user, then
duffel_book_with_linkwith the group'spassengersstring. This creates a Link spend request (the user approves the charge, ≤ $500), returns a virtual card + Duffel checkout URL, and you complete payment via Chrome automation. For higher amounts useduffel_book_flight(Duffel balance) orduffel_create_checkout. log_tripright after booking (route, dates, travelers, cabin, price,order_id) so it enters history and the follow-up queue.
4. Post-trip follow-up & learning (the real magic)
trips_pending_followupsurfaces trips that have completed/returned.- Ask how each went, then
record_trip_feedback(id, feedback, learnings=...). Durable lessons (e.g. "prefers window on long-haul", "dislikes early departures") are appended to the user's preferences, so the nextrecommend_flightsis sharper. Over time FlightClaw learns the traveler.
Tools
Personalization (backend-backed)
- Travelers:
save_traveler,list_travelers,get_traveler,delete_traveler,set_me,get_me,import_local_passengers(one-time migration of any old localdata/passengers.json). - Preferences:
set_preferences,get_preferences,update_preferences. - Cards/points:
save_card,list_cards,delete_card,set_points_balance,list_points. - Groups:
save_group,list_groups,get_group,delete_group. - Trips:
log_trip,list_trips,get_trip,trips_pending_followup,record_trip_feedback. - Recommendation:
recommend_flights.
Search & tracking — search_flights, search_dates, track_flight,
check_prices, list_tracked, remove_tracked.
Booking (Duffel) — duffel_search_flights, duffel_search_multi_city,
duffel_get_offer, duffel_get_seat_map, duffel_book_flight,
duffel_book_with_link, duffel_create_checkout, duffel_list_orders,
duffel_get_order, duffel_request_change, duffel_confirm_change,
duffel_cancel_order, duffel_confirm_cancel, duffel_check_alerts,
link_list_payment_methods.
External MCP integration
FlightClaw stores the user's cards/points; the agent enriches and acts on them using two other MCP servers when present:
- Card Links — transfer partners and card comparisons for the user's stored cards.
- Award Travel Finder — award availability and points pricing across airlines/programs.
When surfacing card recommendations from Card Links, always include its disclaimers: not financial advice; affiliate links may earn commission; card terms change — verify current offers with the issuer.
Setup
pip install flights "mcp[cli]"
export FLIGHTCLAW_API_URL="https://flightclaw-api.<your>.workers.dev"
export FLIGHTCLAW_API_KEY="<your API key>"
claude mcp add flightclaw -- python3 /path/to/flightclaw/server.py
The Worker (flightclaw-api) holds the Duffel token and D1 profile store; apply
schema.sql once with wrangler d1 execute flightclaw-db --remote --file schema.sql.
Data
Personalization data is server-side (D1). Price-tracking history
(data/tracked.json) and a local Duffel order cache (data/duffel_orders.json)
remain local and are gitignored.