Skip to main content
Glama

Server Details

Live flight prices and working booking links for AI agents and travel apps.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
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

A4.1/5.0

Scored across 3 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count4/5

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.

Completeness4/5

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 tools
search_airportsSearch airportsA
Read-only
Inspect

Find airport IATA codes by city, airport name, metro area, or code.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of airport results to return.
queryYesSearch query for airport names, city names, or airport codes.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYesList of airports matching the query.

TDQS

A4.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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 datesA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
adultsNoNumber of adult passengers traveling.
marketNo2-letter market or country code affecting pricing and results.US
originYesOrigin airport or metro IATA code.
childrenNoNumber of child passengers traveling.
max_priceNoMaximum whole-trip price in the market currency.
max_stopsNoMaximum number of stops in each direction.
stay_daysNoOmit for one-way. For round trips, return this many days after each departure.
cabin_classNoPreferred cabin class: economy, premium_economy, business, or first.economy
destinationYesDestination airport or metro IATA code.
infants_on_lapNoNumber of infants traveling on an adult's lap.
infants_in_seatNoNumber of infants traveling with their own seat.
departure_date_endYesLast departure date to compare, in YYYY-MM-DD format; at most 30 days after the start.
departure_date_startYesFirst departure date to compare, in YYYY-MM-DD format.

Output Schema

ParametersJSON Schema
NameRequiredDescription
datesYesEvery requested departure date in ascending order.
originYesOrigin airport or metro IATA code.
destinationYesDestination airport or metro IATA code.

TDQS

A4.5/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 flightsA
Read-only
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
adultsNoNumber of adult passengers traveling.
marketNo2-letter market or country code affecting pricing and results.US
originYesOrigin airport or metro IATA code.
childrenNoNumber of child passengers traveling.
max_priceNoMaximum price in the selected market currency for flight results.
max_stopsNoMaximum number of stops allowed in the flight itinerary.
cabin_classNoPreferred cabin class: economy, premium_economy, business, or first.economy
destinationYesDestination airport or metro IATA code.
max_resultsNoMaximum number of flight results to return.
return_dateNoOptional return date in YYYY-MM-DD format for round-trip flights.
departure_dateYesDeparture date in YYYY-MM-DD format.
infants_on_lapNoNumber of infants traveling on an adult's lap.
infants_in_seatNoNumber of infants traveling with their own seat.
airlines_excludeNoAirline codes to specifically exclude from search results.
airlines_includeNoAirline codes to specifically include in search results.
allow_self_transferNoWhether to include self-transfer flight options (true or false).

Output Schema

ParametersJSON Schema
NameRequiredDescription
originYesOrigin airport details for flight search.
destinationYesDestination airport details for flight search.
itinerariesYesList of flight itineraries.
return_dateNoScheduled return date for round-trip flights (YYYY-MM-DD).
departure_dateYesScheduled departure date (YYYY-MM-DD).

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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. 1 tool update
    • Changedsearch_flights9 fields changed
      • addedOutput schema / else
        Added value: +{
        +  "properties": {
        +    "itineraries": {
        +      "items": {
        +        "not": {
        +          "required": [
        +            "inbound"
        +          ]
        +        },
        +        "properties": {
        +          "booking_options": {
        +            "items": {
        +              "properties": {
        +                "legs": {
        +                  "const": [
        +                    "outbound"
        +                  ]
        +                }
        +              }
        +            },
        +            "maxItems": 1
        +          }
        +        }
        +      }
        +    }
        +  }
        +}
      • addedOutput schema / if
        Added value: +{
        +  "properties": {
        +    "return_date": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "return_date"
        +  ]
        +}
      • changedOutput schema / properties / itineraries / items / properties / booking_link / description
        Previous value: -"Clickable booking link for the itinerary."New value: +"Clickable link for the booking group's covered legs."
      • addedOutput schema / properties / itineraries / items / properties / booking_link / properties / price
        Added 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"
        +}
      • changedOutput schema / properties / itineraries / items / properties / booking_link / properties / url / description
        Previous value: -"Direct URL to book the itinerary."New value: +"Direct URL to book the covered legs."
      • addedOutput schema / properties / itineraries / items / properties / booking_options
        Added 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"
        +}
      • changedOutput schema / properties / itineraries / items / properties / booking_url / description
        Previous value: -"Direct URL to book the itinerary."New value: +"Direct URL when one booking covers the whole itinerary."
      • changedOutput schema / properties / itineraries / items / required
        Previous value: -[
        -  "price",
        -  "outbound",
        -  "booking_url",
        -  "booking_link"
        -]New value: +[
        +  "price",
        +  "outbound",
        +  "booking_options"
        +]
      • addedOutput schema / then
        Added 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"
        +        ]
        +      }
        +    }
        +  }
        +}
  2. 1 tool update
    • Addedsearch_cheapest_dates
  3. 1 tool update
    • Changedsearch_flights2 fields changed
      • changedInput schema / properties / destination / description
        Previous value: -"Destination airport code for flight search."New value: +"Destination airport or metro IATA code."
      • changedInput schema / properties / origin / description
        Previous value: -"Origin airport code for flight search."New value: +"Origin airport or metro IATA code."
  4. 1 tool update
    • Changedsearch_flights2 fields changed
      • addedOutput schema / properties / itineraries / items / properties / price / properties / status
        Added value: +{
        +  "description": "Whether the price was confirmed or is an unverified search hint.",
        +  "enum": [
        +    "verified",
        +    "unverified"
        +  ],
        +  "type": "string"
        +}
      • changedOutput schema / properties / itineraries / items / properties / price / required
        Previous value: -[
        -  "amount",
        -  "currency"
        -]New value: +[
        +  "amount",
        +  "currency",
        +  "status"
        +]
  5. 2 tool updates
    • First observedsearch_airports
    • First observedsearch_flights

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to help users find better prices for flights they have already discovered, by comparing prices across multiple booking sources.
    29 npm
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables live flight search and pricing via the Duffel Flights API, allowing AI agents to query flight data and pricing.
    14 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Flight search for AI agents: flexible-date cheapest round-trips with a good-price verdict from historical data. Hosted remote MCP, free, no key.
    3
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.