Title99/100
Search Bookable Flights and Airfare
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Use this when the user wants to find, compare, price, or shop live bookable flights. Origin and destination accept natural-language cities, metro areas, airport names, or IATA codes; Rift resolves city codes and bounded airport groups internally, so never construct airport arrays.
The description explains the capability, when to use it, and what to expect.
Inputs76/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
origin
Origin city, metro area, airport name, or IATA code, e.g. New York, Bay Area, Heathrow, NYC, or SFO. Required unless slices is provided.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
destination
Destination city, metro area, airport name, or IATA code, e.g. Los Angeles, London, LAX, or LON. Required unless slices is provided.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
date
Departure date in YYYY-MM-DD format.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
return_date
Return date in YYYY-MM-DD format for round trips.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
passengers
Number of passengers when passenger details are not supplied.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
passengers_detail › items › type
Passenger type for fare calculation.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
passengers_detail › items › born_on
Date of birth in YYYY-MM-DD format.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
passengers_detail › items › age
Passenger age in years when born_on is unknown.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
passenger_ids
Saved Rift passenger IDs from the user account, such as self or managed traveler IDs.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
cabin
Requested cabin class. Defaults to economy.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
airlines
Marketing airline IATA codes to keep, e.g. ["AA"]. Applied after search before limit.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
sort
Primary sort before limit. Defaults to best (Rift app Best: price+duration+stops). Use price for explicit cheapest-first. For time-window requests ("around 7am", "must leave by 8") keep default sort=best or sort=price and use departure_after/before or arrival_after/before with time_mode—do not switch to sort=departure. Only use duration/departure/arrival when the user prioritizes that dimension over price without specifying a window.
Clear enough to supply this argument.
secondary_sort
Optional tiebreaker after primary sort. When sort=price, equal prices break by duration, stops, then departure (same as the web app) unless you set secondary_sort.
Clear enough to supply this argument.
time_mode
How departure/arrival windows apply. prefer (default): soft time want but best-value ranking wins—"prefer morning", "around 7 if possible", "ideally 7am"; keep all offers, default sort=best, present recommended and when preferred_time_match is false also preferred_time_offer_id. strict: hard time requirement—"must leave at 7", "only morning", "cannot leave after 8"; drop out-of-window offers; recommended is best in-window.
Clear enough to supply this argument.
departure_after
Window start for first departure (local HH:MM). Pair with departure_before. Example ~7am: departure_after=06:00, departure_before=08:00. prefer (default): soft—cheaper out-of-window offers remain. strict: hard—offers before this time are dropped.
Clear enough to supply this argument.
departure_before
Window end for first departure (local HH:MM). Pair with departure_after. Example ~7am: departure_after=06:00, departure_before=08:00. prefer (default): soft—cheaper out-of-window offers remain. strict: hard—offers after this time are dropped.
Clear enough to supply this argument.
arrival_after
Window start for first-slice arrival (local HH:MM). Pair with arrival_before. prefer (default): soft—cheaper out-of-window offers remain. strict: hard—offers arriving before this time are dropped.
Clear enough to supply this argument.
arrival_before
Window end for first-slice arrival (local HH:MM). Pair with arrival_after. prefer (default): soft—cheaper out-of-window offers remain. strict: hard—offers arriving after this time are dropped.
Clear enough to supply this argument.
stops
Exact stop count after search (0 = nonstop). Distinct from max_connections (provider upper bound).
Clear enough to supply this argument.
min_stops
Minimum stops after search.
Clear enough to supply this argument.
max_stops
Maximum stops after search.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
max_price
Maximum total_amount in USD after search.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
refundable_only
Keep only offers with conditions.refundable=true.
Clear enough to supply this argument.
changeable_only
Keep only offers with conditions.changeable=true.
Clear enough to supply this argument.
min_checked_bags
Minimum included checked bags when bag data is present. Offers with missing/unknown bag data are kept (not treated as zero); use list_bag_options on a chosen offer_id to confirm purchasable bags.
Clear enough to supply this argument.
via
Require a connection through one of these airport IATAs.
Clear enough to supply this argument.
avoid_airports
Drop offers that connect through any of these airport IATAs.
Clear enough to supply this argument.
require_origin
After metro expansion, keep only offers whose first origin is one of these IATAs.
Clear enough to supply this argument.
require_destination
After metro expansion, keep only offers whose first-slice destination is one of these IATAs.
Clear enough to supply this argument.
currency
Optional ISO 4217 currency code. Rift Flight Booking MCP prices flights in USD only; omit this field or pass USD.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slices › items › origin
Origin city, metro, airport name, or IATA code. May be omitted after the first slice to continue from the prior destination.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slices › items › destination
Destination city, metro, airport name, or IATA code.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slices › items › date
Slice departure date in YYYY-MM-DD format.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slices › items › departure_date
Alias for date; slice departure date in YYYY-MM-DD format.
Resolve the mismatch between this description and its schema constraints.
slices › items › cabin
Optional cabin override for this slice.
Resolve the mismatch between this description and its schema constraints.
limit
Maximum compact offers to return after MCP filters/sort. Defaults to 15 after filters/sort; pass a higher limit (up to 250) or call again with a larger limit if the user needs more options. Filters run before this limit. preferred_time pin may add one extra row when the best in-window offer would otherwise be omitted.
Resolve the mismatch between this description and its schema constraints.
include_fare_options
When true, include alternate fare tiers on each offer. Defaults to false so search stays small enough for agents; use soar_get_offer after selecting an offer_id for fare comparison.
Resolve the mismatch between this description and its schema constraints.
max_connections
Provider-side maximum connections (upper bound). For exact stop counts use stops/min_stops/max_stops.
Resolve the mismatch between this description and its schema constraints.
Annotations100/100
All four behavior hints are declared.
{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Output schema73/100
The output schema explains the structured result.
View output schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"code": {
"type": "string",
"description": "Machine-readable error code when present."
},
"mode": {
"type": "string",
"description": "Current Rift account mode: test or prod."
},
"sort": {
"type": "string",
"description": "Primary sort mode used for the page."
},
"error": {
"type": "string",
"description": "Error message when the tool fails."
},
"object": {
"type": "string",
"description": "Public response object type."
},
"offers": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"description": "Compact bookable flight offers after filters/sort/limit."
},
"filters": {
"type": "object",
"description": "Echo of applied MCP browse filters.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"partner_id": {
"type": "string",
"description": "Public API partner identifier."
},
"api_version": {
"type": "string",
"description": "Public API response version."
},
"offer_limit": {
"type": "number",
"description": "Applied page size."
},
"recommended": {
"anyOf": [
{
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
{
"type": "null"
}
],
"description": "Cheapest matching pick plus optional preferred-time alternate."
},
"result_count": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of offers returned in this page."
},
"price_currency": {
"type": "string",
"description": "ISO currency for offer prices (USD)."
},
"secondary_sort": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Secondary sort mode."
},
"raw_offer_count": {
"type": "number",
"description": "Offer count before MCP compaction."
},
"offers_truncated": {
"type": "boolean",
"description": "Whether additional matching offers exist."
},
"resolved_locations": {
"type": "array",
"items": {
"type": "object",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"description": "Resolved search locations."
},
"filtered_offer_count": {
"type": "number",
"description": "Offer count after browse filters."
},
"include_fare_options": {
"type": "boolean",
"description": "Whether fare options were requested."
},
"deduplicated_offer_count": {
"type": "number",
"description": "Offer count after deduplication."
}
},
"additionalProperties": {}
}