Searches for concrete flight options to a specific destination city or airport when the user's travel timing is flexible or not fully fixed.
Use this tool when the user wants actual flight options but provides one or more flexible temporal constraints, such as:
- a month rather than exact travel dates;
- a travel period or date window;
- flexible or nearby dates;
- a stay duration;
- a stay-duration range;
- best or cheapest dates within a period;
- a request to move previously exact dates slightly.
Do not use when the exact outbound and return dates are fixed for a round trip; use flight-search instead.
Do not use for an open destination, country, region, or continent without a specific city/airport destination; use flight-deals instead.
This tool needs at least some temporal notion: a month, a period or date window, flexible or nearby dates, a stay duration or stay range, or previously established dates to move. A request that names a destination with no temporal notion at all is not a flexible search — it has no window to search inside — and belongs to flight-price-trend.
`origin.name` and `destination.name` take a location name. A city name and an airport name are equally valid, and there is no need to convert one into the other.
The date window itself may be left unset when the temporal notion the traveller gave is a stay duration rather than a period. Never invent a date window solely to satisfy the tool.
When the user provides a month, relative period, season, explicit date window, or other temporal reference, resolve it relative to the current date. A named period without a year has already passed only when its last day is before today. If today falls inside it, keep this occurrence and start the window today, ending on the period's natural end. Roll the whole period to its next occurrence only when it has fully ended. A period that has not started yet stays in the current year.
When previously exact dates become flexible, convert the established exact-date context into an appropriate flexible window and preserve compatible active parameters.
If the user specifies the amount of date flexibility, use it. If the user asks to move dates slightly without specifying an amount, the conversation-level default is ±2 days.
Preserve established flexible context across follow-ups, including month/date window and stay constraints, unless the user explicitly changes or clears them.
Half-fixed trips: when one end of the trip is pinned and the other is still open, send the pinned day in `departure_date` (or `return_date`) together with the stay range, and omit the date window. Only one end may be pinned this way.
Stay-duration semantics:
- exact N days → stay_days_from=N and stay_days_until=N;
- explicit N–M range → stay_days_from=N and stay_days_until=M;
- do not convert a flexible stay range into an invented exact return date.
If the product defines a policy for open-ended minimum stays such as "at least N days", apply that explicit product policy. Do not invent an arbitrary upper bound unless such a policy exists.
When both a date window and stay duration are present, ensure that the window can accommodate the requested stay.
If only the stay duration changes in a follow-up, preserve the established travel window. Expand the window only if necessary for feasibility; do not shrink an existing travel period merely to match the stay duration.
PARAMETER PERSISTENCE: When a follow-up changes only some criteria, retain every compatible active user preference from the previous search or any earlier user message, including stops, baggage, cabin, time-of-day, currency, and ordering. Omit a preference only if the user explicitly changes or clears it, or the previous result marks it as dropped or unsupported. Passenger, unsupported-filter, and airline behavior follows the system-level rules and the tool schema.