Ignav Flights
Server Details
Live flight prices and working booking links for AI agents and travel apps.
- Status
- Healthy
- Uptime
- 100.0% over 66 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- gusgordon/ignav-skill
- GitHub Stars
- 1
- Server Listing
- Ignav Flights MCP Server
TDQS
Scored across 3 tools
Each tool targets a distinct task: search_airports resolves codes, search_cheapest_dates compares fares across a date range, and search_flights returns bookable itineraries for a specific date. The descriptions explicitly clarify the boundary between the two price-returning tools (cheapest-dates prices are not bookable), preventing misselection.
All three tools follow the same snake_case verb_noun pattern with a consistent 'search_' prefix: search_airports, search_cheapest_dates, search_flights. Fully predictable and readable.
Three tools is on the lean side but each serves a genuinely distinct step in the flight-search workflow (resolve code, explore dates, select flight), so nothing feels redundant or missing. A slightly broader surface (e.g., explicit booking) would round it out.
The core search lifecycle is covered end-to-end: code lookup, flexible-date price comparison, and bookable itinerary retrieval with booking_url for completion. Minor gaps exist (no booking execution, multi-city, or price alerts), but those appear intentionally out of scope and agents can work around them.
Available Tools
3 toolssearch_airportsSearch airportsARead-onlyInspect
Find airport IATA codes by city, airport name, metro area, or code.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of airport results to return. | |
| query | Yes | Search query for airport names, city names, or airport codes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes | List of airports matching the query. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the description adds minimal extra behavioral context. It aligns with the safe, read-only nature but does not disclose further traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the key purpose and input types. Every word is essential, no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and simple input schema (2 params, all described), the description is complete. It covers the search scope and aligns with the tool's intended use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters described. The description adds meaning by explicitly listing 'metro area' and 'code' as searchable fields, which goes beyond the schema's generic description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Find airport IATA codes by city, airport name, metro area, or code.' It specifies the verb and resource, and distinguishes from the sibling 'search_flights' which deals with flights.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear input types (city, airport name, metro area, code) but does not explicitly state when to use this tool versus the sibling 'search_flights'. The context is clear and no exclusions are needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_cheapest_datesSearch cheapest datesARead-onlyInspect
Compare the lowest one-way or round-trip fare for each departure date across up to 31 dates. Prices are not bookable; search the chosen date with search_flights.
| Name | Required | Description | Default |
|---|---|---|---|
| adults | No | Number of adult passengers traveling. | |
| market | No | 2-letter market or country code affecting pricing and results. | US |
| origin | Yes | Origin airport or metro IATA code. | |
| children | No | Number of child passengers traveling. | |
| max_price | No | Maximum whole-trip price in the market currency. | |
| max_stops | No | Maximum number of stops in each direction. | |
| stay_days | No | Omit for one-way. For round trips, return this many days after each departure. | |
| cabin_class | No | Preferred cabin class: economy, premium_economy, business, or first. | economy |
| destination | Yes | Destination airport or metro IATA code. | |
| infants_on_lap | No | Number of infants traveling on an adult's lap. | |
| infants_in_seat | No | Number of infants traveling with their own seat. | |
| departure_date_end | Yes | Last departure date to compare, in YYYY-MM-DD format; at most 30 days after the start. | |
| departure_date_start | Yes | First departure date to compare, in YYYY-MM-DD format. |
Output Schema
| Name | Required | Description |
|---|---|---|
| dates | Yes | Every requested departure date in ascending order. |
| origin | Yes | Origin airport or metro IATA code. |
| destination | Yes | Destination airport or metro IATA code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is covered. The description adds genuinely new behavioral context — results are indicative only and cannot be booked, and the comparison is bounded to 31 dates — which is the key trait an agent must know. It stops short of describing the response shape, but an output schema exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. The capability and its bound come first, then the non-bookability caveat and the correct follow-up tool — the most decision-relevant information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a fully covered 13-parameter schema, rich annotations, and an output schema that documents the return values, the description supplies everything else an agent needs: what is compared, the date bound, that results are not bookable, and which sibling to call next.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter including the one-way vs round-trip semantics of stay_days is already documented in the schema. The description adds no syntax, format, or constraint detail beyond that baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Compare the lowest one-way or round-trip fare for each departure date across up to 31 dates.' The scope (per-date comparison, up to 31 dates, one-way or round-trip) makes it clearly distinguishable from the sibling search_flights.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes the agent: 'Prices are not bookable; search the chosen date with search_flights.' It names the alternative tool and the condition under which it should be used, so the agent never mistakes this for a booking or single-date search.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_flightsSearch flightsARead-onlyInspect
Search one-way or round-trip flight prices between two IATA airport codes. Returns complete booking_options with leg coverage and prices when known. Choose one link per group; multiple groups require separate bookings. booking_url is also included when one booking covers the whole itinerary.
| Name | Required | Description | Default |
|---|---|---|---|
| adults | No | Number of adult passengers traveling. | |
| market | No | 2-letter market or country code affecting pricing and results. | US |
| origin | Yes | Origin airport or metro IATA code. | |
| children | No | Number of child passengers traveling. | |
| max_price | No | Maximum price in the selected market currency for flight results. | |
| max_stops | No | Maximum number of stops allowed in the flight itinerary. | |
| cabin_class | No | Preferred cabin class: economy, premium_economy, business, or first. | economy |
| destination | Yes | Destination airport or metro IATA code. | |
| max_results | No | Maximum number of flight results to return. | |
| return_date | No | Optional return date in YYYY-MM-DD format for round-trip flights. | |
| departure_date | Yes | Departure date in YYYY-MM-DD format. | |
| infants_on_lap | No | Number of infants traveling on an adult's lap. | |
| infants_in_seat | No | Number of infants traveling with their own seat. | |
| airlines_exclude | No | Airline codes to specifically exclude from search results. | |
| airlines_include | No | Airline codes to specifically include in search results. | |
| allow_self_transfer | No | Whether to include self-transfer flight options (true or false). |
Output Schema
| Name | Required | Description |
|---|---|---|
| origin | Yes | Origin airport details for flight search. |
| destination | Yes | Destination airport details for flight search. |
| itineraries | Yes | List of flight itineraries. |
| return_date | No | Scheduled return date for round-trip flights (YYYY-MM-DD). |
| departure_date | Yes | Scheduled departure date (YYYY-MM-DD). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds genuinely non-structured behavior: results contain 'booking_options' grouped by bookable unit, prices appear only 'when known' (partial results are possible), and 'booking_url' is only present when a single booking covers the whole itinerary. These are the kind of quirks an agent would otherwise learn only by trial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the core purpose and result shape, no filler or hedging. The last two sentences on booking groups are slightly dense but each carries distinct information. Could be marginally tightened, hence not a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 16-parameter tool with full schema coverage and an output schema, the description is essentially complete: it covers trip type, result structure, and the booking-selection rule. Minor omissions (no mention of pricing currency source, rate limits, or that return_date is what makes the trip round-trip) keep it at a 4 rather than 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all 16 parameters are already documented in the schema, and an output schema exists. The description only echoes that origin/destination are IATA codes, adding no format, constraint, or interplay information beyond the schema (e.g. that return_date drives round-trip mode). Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Search ... flight prices') and scopes it to one-way or round-trip trips between two IATA codes. An agent immediately understands this is a fare-search tool. It does not name or contrast the siblings (search_airports, search_cheapest_dates), which keeps it short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the description explains how to consume the output ('Choose one link per group; multiple groups require separate bookings') but gives no explicit when-to-use-vs-alternative guidance, e.g. when to prefer search_cheapest_dates for date flexibility or search_airports for code resolution. The booking-group instruction is useful operational context but is about interpreting results, not selecting this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
search_flights9 fields changed- added
Output schema / elseAdded value: +{ + "properties": { + "itineraries": { + "items": { + "not": { + "required": [ + "inbound" + ] + }, + "properties": { + "booking_options": { + "items": { + "properties": { + "legs": { + "const": [ + "outbound" + ] + } + } + }, + "maxItems": 1 + } + } + } + } + } +} - added
Output schema / ifAdded value: +{ + "properties": { + "return_date": { + "type": "string" + } + }, + "required": [ + "return_date" + ] +} - changed
Output schema / properties / itineraries / items / properties / booking_link / descriptionPrevious value: -"Clickable booking link for the itinerary."New value: +"Clickable link for the booking group's covered legs." - added
Output schema / properties / itineraries / items / properties / booking_link / properties / priceAdded value: +{ + "description": "Price for this link's covered legs, when known.", + "properties": { + "amount": { + "description": "Numerical price amount in given currency.", + "type": "number" + }, + "currency": { + "description": "Currency code of the price amount.", + "type": "string" + }, + "status": { + "description": "Whether the price was confirmed or is an unverified search hint.", + "enum": [ + "verified", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "amount", + "currency", + "status" + ], + "type": "object" +} - changed
Output schema / properties / itineraries / items / properties / booking_link / properties / url / descriptionPrevious value: -"Direct URL to book the itinerary."New value: +"Direct URL to book the covered legs." - added
Output schema / properties / itineraries / items / properties / booking_optionsAdded value: +{ + "description": "Choose one link from every group. Multiple groups require separate bookings.", + "items": { + "properties": { + "legs": { + "items": { + "enum": [ + "outbound", + "inbound" + ] + }, + "type": "array" + }, + "links": { + "items": { + "description": "Clickable link for the booking group's covered legs.", + "properties": { + "price": { + "description": "Price for this link's covered legs, when known.", + "properties": { + "amount": { + "description": "Numerical price amount in given currency.", + "type": "number" + }, + "currency": { + "description": "Currency code of the price amount.", + "type": "string" + }, + "status": { + "description": "Whether the price was confirmed or is an unverified search hint.", + "enum": [ + "verified", + "unverified" + ], + "type": "string" + } + }, + "required": [ + "amount", + "currency", + "status" + ], + "type": "object" + }, + "provider_name": { + "description": "Name of booking provider.", + "type": "string" + }, + "provider_type": { + "description": "Type of booking provider.", + "type": [ + "string", + "null" + ] + }, + "url": { + "description": "Direct URL to book the covered legs.", + "type": "string" + } + }, + "required": [ + "provider_name", + "url" + ], + "type": "object" + }, + "minItems": 1, + "type": "array" + } + }, + "required": [ + "legs", + "links" + ], + "type": "object" + }, + "maxItems": 2, + "minItems": 1, + "type": "array" +} - changed
Output schema / properties / itineraries / items / properties / booking_url / descriptionPrevious value: -"Direct URL to book the itinerary."New value: +"Direct URL when one booking covers the whole itinerary." - changed
Output schema / properties / itineraries / items / requiredPrevious value: -[ - "price", - "outbound", - "booking_url", - "booking_link" -]New value: +[ + "price", + "outbound", + "booking_options" +] - added
Output schema / thenAdded value: +{ + "properties": { + "itineraries": { + "items": { + "properties": { + "booking_options": { + "oneOf": [ + { + "maxItems": 1, + "minItems": 1, + "prefixItems": [ + { + "properties": { + "legs": { + "const": [ + "outbound", + "inbound" + ] + } + } + } + ] + }, + { + "maxItems": 1, + "minItems": 1, + "prefixItems": [ + { + "properties": { + "legs": { + "const": [ + "inbound", + "outbound" + ] + } + } + } + ] + }, + { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "properties": { + "legs": { + "const": [ + "outbound" + ] + } + } + }, + { + "properties": { + "legs": { + "const": [ + "inbound" + ] + } + } + } + ] + }, + { + "maxItems": 2, + "minItems": 2, + "prefixItems": [ + { + "properties": { + "legs": { + "const": [ + "inbound" + ] + } + } + }, + { + "properties": { + "legs": { + "const": [ + "outbound" + ] + } + } + } + ] + } + ] + } + }, + "required": [ + "inbound" + ] + } + } + } +}
1 tool update
- Added
search_cheapest_dates
1 tool update
- Changed
search_flights2 fields changed- changed
Input schema / properties / destination / descriptionPrevious value: -"Destination airport code for flight search."New value: +"Destination airport or metro IATA code." - changed
Input schema / properties / origin / descriptionPrevious value: -"Origin airport code for flight search."New value: +"Origin airport or metro IATA code."
1 tool update
- Changed
search_flights2 fields changed- added
Output schema / properties / itineraries / items / properties / price / properties / statusAdded value: +{ + "description": "Whether the price was confirmed or is an unverified search hint.", + "enum": [ + "verified", + "unverified" + ], + "type": "string" +} - changed
Output schema / properties / itineraries / items / properties / price / requiredPrevious value: -[ - "amount", - "currency" -]New value: +[ + "amount", + "currency", + "status" +]
2 tool updates
- First observed
search_airports - First observed
search_flights
Related MCP Connectors
Flight search & booking for AI agents. 400+ airlines, $20-50 cheaper than OTAs.
Last-minute booking slots across 11 suppliers. Search, price, and execute bookings via AI agents.
AI marketplace — flights, tours, activities, transport & more via MCP. No auth required.
Google Flights search data: fares, routes, stops, and price insights via a hosted MCP server.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search, price-track, and book flights across ~300 airlines, with traveler profiles, preferences, and email fare-drop alerts.75MIT
Navifare MCP Serverofficial
FlicenseNot gradedqualityDmaintenanceEnables AI assistants to help users find better prices for flights they have already discovered, by comparing prices across multiple booking sources.29 npm-- AlicenseNot gradedqualityBmaintenanceEnables live flight search and pricing via the Duffel Flights API, allowing AI agents to query flight data and pricing.14 npmMIT
- AlicenseNot gradedqualityBmaintenanceFlight search for AI agents: flexible-date cheapest round-trips with a good-price verdict from historical data. Hosted remote MCP, free, no key.3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.