Aviationstack MCP Server
An MCP server that wraps the Aviationstack API to expose aviation data as easy-to-use tools for flight tracking, schedules, and reference data.
Look up a single flight by IATA number (e.g., AA100) for today or a specific date, with status, times, terminal, gate, and codeshares.
Get live flights for an airline, optionally filtered by status (scheduled, active, landed, cancelled, incident, diverted).
Fetch historical flights for past dates, with optional airline and airport filters.
Retrieve today's arrival/departure boards for an airport and airline.
Get future flight schedules from tomorrow through about 12 months ahead for an airport, airline, and date.
Sample random aircraft types, detailed airplane records, countries, and cities.
List reference data: airports, airlines, routes, and taxes, with pagination and search/filter options.
Includes reusable prompts for common lookups and resources that expose server metadata, endpoint mappings, and tool input examples.
Enables querying flight information for Delta Air Lines, including retrieving flight schedules, arrival and departure information
Allows retrieving flight data using IATA airport and airline codes, supporting operations like checking arrivals/departures for specific airports and scheduling future flights
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Aviationstack MCP Servershow me 5 upcoming arrivals at JFK for Delta"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Aviationstack MCP Server
This project is an MCP (Model Context Protocol) server that provides a set of tools to interact with the AviationStack API. It exposes endpoints for retrieving real-time and future flight data, aircraft and airplane details, and core reference data (airports, airlines, routes, taxes), making it easy to integrate aviation data into your applications.
You can also find the Aviationstack MCP server in these well-known MCP server repositories for easy access:
Demo
https://github.com/user-attachments/assets/9325fcce-8ecc-4b01-8923-4ccb2f6968f4
Features
Look up a single flight by its flight number
Get flights for a specific airline
Fetch historical flights by date
Retrieve arrival and departure schedules for airports
Fetch future flight schedules (from tomorrow through about 12 months ahead)
Get random aircraft types
Get detailed info on random airplanes
Get detailed info on random countries
Get detailed info on random cities
List airports, airlines, routes, and taxes
All endpoints are implemented as MCP tools and are ready to be used in an MCP-compatible environment.
Every tool returns the same JSON envelope. On success: {"ok": true, "count": N, "data": [...]}, plus a pagination block on the list_* tools and a message when there were no matches. On failure: {"ok": false, "context": "...", "error": "..."}. Any limit is capped at 100 records per call.
Prerequisites
Aviationstack API Key (You can get a FREE API Key from Aviationstack)
Python 3.13 or newer
uv package manager installed
Available Tools
Tool | Description | Parameters |
| Look up one flight by its IATA flight number, for today or a given date. | - |
| Get live flights for a specific airline. | - |
| Get historical flights for a date (Basic plan+). | - |
| Get today's arrival or departure board for a given airport and airline. Current day only. | - |
| Get scheduled flights for a given airport, airline, and future date. Covers tomorrow through about 12 months ahead, including the next 7 days. | - |
| Get aircraft types from a random offset in the dataset. | - |
| Get detailed info on airplanes from a random offset in the dataset. | - |
| Get detailed info on countries from a random offset in the dataset. | - |
| Get detailed info on cities from a random offset in the dataset. | - |
| List airports. | - |
| List airlines. | - |
| List routes. | - |
| List aviation taxes. | - |
Prompts
The server ships reusable prompts that steer a model toward the right tool.
Prompt | Arguments | Purpose |
|
| Check one specific flight, and explain its codeshares. |
|
| Query live flights for an airline. |
|
| Query a future airport schedule. |
|
| Explore airport, airline, route or tax reference data. |
Resources
Resource | URI | Contents |
|
| API base URL and the accepted API key variables. |
|
| The Aviationstack endpoints each tool calls. |
|
| A sample payload for a given tool. |
Development
The main server logic is in
src/aviationstack_mcp/server.py.All MCP tools are defined as Python functions decorated with
@mcp.tool().Each tool is a thin wrapper that validates input with a Pydantic model, then calls the matching plain function. Tests target the plain functions.
The server uses the
FastMCPclass frommcp.server.fastmcp. Themcpdependency is pinned to<2, because 2.x renamesFastMCPtoMCPServer.Tools never raise. Every failure is caught and returned as the error envelope.
Set up and run the checks the CI runs:
uv sync --all-groups
# Unit tests
uv run python -m unittest discover -s tests -v
# Lint, must stay at 10.00/10
uv run pylint $(git ls-files '*.py')
# Coverage
uv run coverage run --source=aviationstack_mcp -m unittest discover -s tests
uv run coverage report.well-known/mcp/server-card.json is generated, not hand-edited. After changing any tool,
prompt or resource, regenerate it or CI will fail:
uv run python scripts/generate_server_card.py # rewrite the card
uv run python scripts/generate_server_card.py --check # what CI runsMCP Server configuration
To add this server to your favorite MCP client, you can add the following to your MCP client configuration file.
Using
uvxwithout cloning the repository (recommended)
{
"mcpServers": {
"Aviationstack MCP": {
"command": "uvx",
"args": [
"aviationstack-mcp"
],
"env": {
"AVIATION_STACK_API_KEY": "<your-api-key>"
}
}
}
}By cloning the repository and running the server locally
{
"mcpServers": {
"Aviationstack MCP": {
"command": "uv",
"args": [
"--directory",
"/path/to/aviationstack-mcp/src/aviationstack_mcp",
"run",
"-m",
"aviationstack_mcp",
"mcp",
"run"
],
"env": {
"AVIATION_STACK_API_KEY": "<your-api-key>"
}
}
}
}Related MCP server: flights-mcp
License
This project is licensed under the MIT License. See LICENSE for details.
Available Tools
13 toolsflight_arrival_departure_scheduleA
Return today's arrival or departure board for an airport, optionally filtered by airline name. Returns airline, flight number, scheduled, estimated and actual times, terminals, gates and departure delay per flight. Covers the current day only: for any later date use future_flights_arrival_departure_schedule instead.
| Name | Required | Description | Default |
|---|---|---|---|
| airline_name | No | Optional airline name filter. | |
| schedule_type | Yes | Whether to return the arrival board or the departure board. One of: arrival, departure. | |
| airport_iata_code | Yes | Airport IATA code (for example: SFO). | |
| number_of_flights | No | Maximum number of flights to return, from 1 to 100. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It discloses the current-day-only limitation, optional airline filtering, and the per-flight fields returned. This is strong for a read-only schedule tool, though it does not discuss ordering or data availability.
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 compact sentences with no filler: the core action and scope are front-loaded, followed by useful return-field details and the key routing to the future-date sibling.
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?
The description covers purpose, scope, key returned fields, and the critical date limitation. The schema fully documents parameters and the output schema covers return structure, so nothing essential is missing for correct invocation.
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 four parameters are already documented. The description adds context by linking schedule_type to arrival/departure boards and mentioning airline_name filtering, but it does not add new syntax or format detail beyond the schema.
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 ('Return') and resource: today's arrival or departure board for an airport, with an optional airline filter. It also names the sibling future_flights_arrival_departure_schedule, making it easy to distinguish from the related tool.
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 scopes the tool to the current day and directs the agent to future_flights_arrival_departure_schedule for any later date. This gives clear when-to-use guidance and an explicit alternative, leaving no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
flights_with_airlineA
Return live flights for one airline, optionally narrowed to a single flight status. Returns flight number, airline, departure and arrival airports with timezones, scheduled departure time, status, delay, terminal and gate. Use this to survey an airline's current activity; use get_flight_status when you already know the flight number.
| Name | Required | Description | Default |
|---|---|---|---|
| airline_name | Yes | Airline name to filter flights (for example: Delta Air Lines). | |
| flight_status | No | Optional flight status filter. One of: scheduled, active, landed, cancelled, incident, diverted. | |
| number_of_flights | Yes | Maximum number of flights to return, from 1 to 100. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure itself. It communicates the live nature of the data, the optional status narrowing, and exactly which fields will be returned. It does not discuss auth, rate limits, or empty-result behavior, but these are not critical for a read-only lookup.
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?
Three sentences with no wasted words: purpose first, return fields second, routing to the sibling third. Every sentence contributes distinct value.
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?
The description, full parameter docs, and existing output schema together cover the main contract. Minor gaps remain around API limitations (rate limits, live-data freshness guarantees), but an agent knows what to call, with what inputs, and what kind of output to expect.
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 the schema already documents airline_name, flight_status, and number_of_flights. The description only restates the optional status narrowing and adds no new parameter-level meaning, matching the baseline for high schema coverage.
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 opens with a specific verb-resource pair ('Return live flights for one airline') and an optional filter, and then explicitly contrasts it with get_flight_status. An agent can tell exactly what this tool does and how it differs from its nearest sibling.
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?
It gives an explicit when-to-use cue ('survey an airline's current activity') and points to get_flight_status for the known-flight-number case, but it does not mention exclusions for historical or schedule-based siblings such as historical_flights_by_date. Context is clear, but exclusions are partial.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
future_flights_arrival_departure_scheduleA
Return the scheduled arrival or departure board for an airport on a specific future date. Covers any date from tomorrow through about 12 months ahead, including the next 7 days. Returns airline, flight number, scheduled times, arrival airport, terminal, gate and aircraft model. Use flight_arrival_departure_schedule for today's board instead.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date to query, in YYYY-MM-DD format. Any date from tomorrow through about 12 months ahead, including the next 7 days. | |
| airline_iata | No | Optional airline IATA code filter (for example: UA). | |
| schedule_type | Yes | Whether to return the arrival board or the departure board. One of: arrival, departure. | |
| airport_iata_code | Yes | Airport IATA code (for example: SFO). | |
| number_of_flights | No | Maximum number of flights to return, from 1 to 100. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It openly states the future-date limitation, the fact that the board is scheduled rather than live, and the outputs returned. It doesn't discuss error conditions or default behavior when date is omitted, but those are minor for a read-style query tool.
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?
Three tight sentences: the main action, the applicable date window, the output fields, and the sibling alternative. Every sentence earns its place and no information is repeated except the deliberate emphasis of the next-7-days coverage.
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 moderately parameterized tool with a rich input schema and an output schema, the description covers purpose, temporal scope, return contents, and the key alternative. Nothing essential to selecting or invoking the tool correctly is missing.
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%, so the schema already documents date format, airport code, airline filter, schedule_type values, and number_of_flights. The description adds no parameter-level meaning beyond emphasizing the future-date window, so the baseline of 3 is appropriate.
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 action and resource: returns the scheduled arrival/departure board for an airport on a future date. It further defines the date window and explicitly routes today's board queries to flight_arrival_departure_schedule, so it is clearly distinguished from the sibling.
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 says this tool covers tomorrow through about 12 months ahead and names flight_arrival_departure_schedule as the tool to use for today's board instead. This gives clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_flight_statusA
Look up one specific flight by its IATA flight number, for the current day or a given date. Returns flight status plus scheduled, estimated and actual times, terminal, gate, baggage belt and delay minutes for both ends, with the operating flight ordered ahead of its codeshares. Use this when the question names a flight number; use flights_with_airline to browse an airline's flights, or historical_flights_by_date for past dates.
| Name | Required | Description | Default |
|---|---|---|---|
| flight_date | No | Optional date in YYYY-MM-DD format. Defaults to the current day. | |
| flight_iata | Yes | Flight IATA number (for example: AA100). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It does this well by detailing what the response contains—scheduled, estimated, and actual times, terminal, gate, baggage belt, delay minutes, and both ends of the flight—and by disclosing that the operating flight is ordered ahead of codeshares. It does not discuss not-found behavior, but that is a minor gap for a lookup tool.
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 three tightly packed sentences: core purpose, return-value summary, and usage guidance with alternatives. It front-loads the most important information and every sentence earns its place without unnecessary wording.
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 two-parameter lookup tool with an output schema, the description is complete. It explains the search key, date behavior, the scope of returned data, the ordering nuance, and when to choose sibling tools instead. Nothing essential for correct invocation is missing.
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%, so the schema already documents both parameters with descriptions and examples. The description adds some useful context around the date default and the IATA number, but it does not significantly deepen parameter meaning beyond what the schema already provides.
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 uses a specific verb and resource: 'Look up one specific flight by its IATA flight number' and clearly scopes the operation to 'the current day or a given date.' It also differentiates from sibling tools by emphasizing a single flight and by listing distinct return data like actual times, gate, baggage belt, and delay minutes.
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 explicitly states when to use this tool ('when the question names a flight number') and names concrete alternatives for related cases: flights_with_airline for browsing an airline's flights and historical_flights_by_date for past dates. This gives an agent clear routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
historical_flights_by_dateA
Return flights that already operated on a past date, with optional airline and route filters. Returns flight date, status, flight number, airline, and both airports with their scheduled times. Requires the Basic plan or higher. Use this for past dates only: use flight_arrival_departure_schedule for today and future_flights_arrival_departure_schedule for later dates.
| Name | Required | Description | Default |
|---|---|---|---|
| arr_iata | No | Optional arrival airport IATA code filter (for example: LAX). | |
| dep_iata | No | Optional departure airport IATA code filter (for example: JFK). | |
| flight_date | Yes | Past date to query, in YYYY-MM-DD format. | |
| airline_iata | No | Optional airline IATA code filter (for example: DL). | |
| number_of_flights | Yes | Maximum number of flights to return, from 1 to 100. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the transparency burden. It discloses the Basic plan requirement, the historical scope, the optional filters, and the data fields returned. It does not discuss edge cases such as invalid dates, empty results, or date-range limits, but the plan requirement and output scope are meaningful behavioral context.
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?
Three concise sentences deliver the core purpose, filter options, return fields, plan requirement, and sibling routing without redundancy. The most important usage constraint 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?
For a historical list tool with a full output schema and sibling tools, the description covers what the tool does, when to use it, what it returns, which plan it requires, and which alternatives to use instead. Nothing essential is missing for an agent to select and invoke it correctly.
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?
The input schema already documents all five parameters with descriptions, and coverage is 100%, so the baseline is 3. The description adds a small amount of context by referring to 'route filters' and listing return fields, but it does not materially go beyond the schema's parameter documentation.
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 uses a specific verb and resource: 'Return flights that already operated on a past date.' It clearly distinguishes this tool from its siblings by emphasizing 'past date only' and naming the alternatives for today and future dates.
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 gives explicit when-to-use guidance: 'Use this for past dates only.' It also names two sibling tools for the other time contexts, making the selection decision explicit and unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_airlinesA
List airlines from the reference catalog, one page at a time, with optional text search. Each record has airline name, IATA and ICAO codes, callsign, operational status, country name and ISO2, alongside a pagination block carrying limit, offset and total. Use search to resolve an airline name to the IATA code the flight tools expect.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of airlines to return per page, from 1 to 100. | |
| offset | No | Zero-based offset for pagination. Combine with limit and the total in the response to page through results. | |
| search | No | Optional text matched against airline name and codes. Autocomplete search requires the Basic plan or higher, as does this endpoint. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description carries the behavioral burden well: it discloses one-page-at-a-time pagination, the pagination block with limit/offset/total, and the presence of operational status. It does not explicitly address rate limits or plan requirements in the description, but the schema already carries the Basic plan note and the operation is inherently read-only.
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 front-loaded with the core purpose and is free of filler. The field-list sentence is useful but partly duplicates what the output schema already documents, keeping it just below a perfect 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 read-only, paged catalog-listing tool with all parameters described in the schema and an output schema available, the description is sufficient. It covers the operation, the return shape, pagination, and the key integration use case for flight tools.
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%, so the baseline is 3, but the description adds meaning beyond the schema by telling the agent that search is the mechanism to resolve a user-supplied airline name to the IATA code expected by flight tools. It also frames limit/offset in terms of the pagination block returned.
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: 'List airlines from the reference catalog,' with pagination and optional search. The 'airlines' scope distinguishes it from sibling catalog tools like list_airports and list_routes, and the record-field list makes the resource concrete.
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?
It provides a clear practical use: 'Use search to resolve an airline name to the IATA code the flight tools expect,' which positions the tool as the reference lookup for flight-related siblings. It does not explicitly name when-not-to-use alternatives, so it misses the top tier.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_airportsA
List airports from the reference catalog, one page at a time, with optional text search. Each record has airport name, IATA and ICAO codes, city IATA code, country name and ISO2, timezone and GMT offset, alongside a pagination block carrying limit, offset and total. Use search to resolve an airport name to the IATA code the flight tools expect.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of airports to return per page, from 1 to 100. | |
| offset | No | Zero-based offset for pagination. Combine with limit and the total in the response to page through results. | |
| search | No | Optional text matched against airport name and codes. Autocomplete search requires the Basic plan or higher, as does this endpoint. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently explains pagination behavior, optional search, and the shape of each record including the pagination block. It does not mention auth or rate limits, but for a read-only catalog listing the disclosed behavior is thorough and accurate.
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 tightly written in three sentences: a clear action statement, a record contents overview, and a practical use-case note. Every sentence contributes meaningful information, and the most important purpose 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?
For a simple, all-optional-parameter list tool with an output schema present, the description covers everything an agent needs: operation, pagination semantics, record fields, search behavior, and the intended downstream use. No critical information appears missing.
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%, so the baseline is 3, but the description adds meaning beyond the schema by explaining how pagination works ('one page at a time', 'pagination block carrying limit, offset and total') and framing 'search' as the mechanism to resolve names to IATA codes for flight tools. This is useful contextual value that the parameter descriptions alone do not fully convey.
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 identifies the operation ('List'), the resource ('airports from the reference catalog'), and key distinguishing features like pagination and optional text search. It also explains each record's contents and the intended use case for resolving airport names to IATA codes, making it easy to differentiate from sibling list tools.
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 gives clear context for when to use this tool: when you need airport reference data or need to resolve an airport name to the IATA code expected by flight tools. It does not name alternatives or state explicit exclusions, but the resource focus and sibling names are sufficiently distinct that no confusion is likely.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_routesA
List scheduled routes, one page at a time, filtered by any combination of airline, departure airport and arrival airport. Each record has airline IATA and ICAO codes, flight number, and departure and arrival airport codes, alongside a pagination block carrying limit, offset and total. This says which routes exist, not whether a flight is operating: use get_flight_status for that. Requires the Basic plan or higher.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of routes to return per page, from 1 to 100. | |
| offset | No | Zero-based offset for pagination. Combine with limit and the total in the response to page through results. | |
| arr_iata | No | Optional arrival airport IATA code filter. | |
| dep_iata | No | Optional departure airport IATA code filter. | |
| airline_iata | No | Optional airline IATA code filter. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden and does so well: it discloses pagination behavior, response shape, filter semantics, and plan requirements. It does not mention sorting or rate limits, but those are minor for a read-only listing operation.
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?
Three densely informative sentences with no filler. The purpose and key scoping (filters, pagination) are front-loaded, followed by response details and a clear alternative, all in an efficient structure.
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?
The description is complete for a filtered, paginated list tool: it covers what it returns, how filters and paging work, the key limitation, and the authentication/plan requirement. The rich input schema and output schema handle the remaining details.
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%, so the baseline is 3. The description adds meaningful value beyond the schema by clarifying that filters can be combined in any combination and that results are returned one page at a time with a pagination block.
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 ('List'), a clear resource ('scheduled routes'), and the available filters. It also explicitly differentiates itself from get_flight_status by clarifying this describes route existence rather than flight operation.
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?
Provides explicit when-to-use context ('filtered by any combination...') and an explicit alternative for the related case ('use get_flight_status for that'). It also discloses the plan prerequisite, which is important for invocation decisions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_taxesA
List aviation taxes from the reference catalog, one page at a time, with optional text search. Each record has tax id, tax name and the associated IATA code, alongside a pagination block carrying limit, offset and total. This is static reference data, not fares or amounts charged on a booking. Requires a paid plan.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of tax records to return per page, from 1 to 100. | |
| offset | No | Zero-based offset for pagination. Combine with limit and the total in the response to page through results. | |
| search | No | Optional text matched against tax name and IATA code. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It reveals the pagination model, record structure (tax id, tax name, IATA code), the static reference data nature, and the paid plan prerequisite. This goes beyond what the schema provides, though it omits details like rate limits or error behavior.
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?
Every sentence earns its place: the first states the core action, the second describes the response shape, and the third clarifies data type and access requirement. It is concise, front-loaded, and free of filler.
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 straightforward list tool with three optional parameters and an output schema, the description is complete. It explains what is returned, pagination semantics, the nature of the data, and the prerequisite paid plan. No critical missing information is apparent for an agent to invoke it correctly.
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 the baseline is 3. The description does echo the search and pagination parameters conceptually, but it does not add meaningful semantic detail beyond what the input schema already documents for limit, offset, and search.
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 ('List'), resource ('aviation taxes from the reference catalog'), and key behaviors (pagination, optional text search). It also distinguishes the tool from fare/booking charge data by clarifying it is static reference data, which separates it from potentially confusing uses and sibling tools.
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 context on when to use the tool: for static reference data, not for fares or amounts charged. It also notes the paid plan requirement. However, it does not explicitly name alternative tools or state when not to use this tool in favor of a sibling, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
random_aircraft_typeA
Return a random sample of aircraft types from the Aviationstack reference catalog. Each record has aircraft_name and iata_code. Records are drawn from a random offset, so repeated calls return different rows. This samples the catalog and cannot look up a specific model: there is no search parameter.
| Name | Required | Description | Default |
|---|---|---|---|
| number_of_aircraft | Yes | Number of random aircraft types to sample, from 1 to 100. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well. It discloses the random-offset mechanism, that repeated calls return different rows, and that the tool only samples without a search parameter. This goes well beyond a generic 'returns random data'.
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?
Three sentences front-load the main purpose, then record fields, then the behavioral caveat. Every sentence earns its place; no redundancy or filler.
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 simple one-parameter sampler, the description covers all essential behaviors: random selection, record fields, non-determinism across calls, and the impossibility of lookup. The presence of an output schema means return-value detail does not need to be restated.
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%: the schema fully describes number_of_aircraft as an integer 1-100 with exclusiveMinimum 0. The description does not add material parameter information beyond confirming this is a sample count, so the baseline of 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 opens with a specific action and resource: 'Return a random sample of aircraft types from the Aviationstack reference catalog.' It also defines the record shape and explicitly states a non-goal: 'cannot look up a specific model,' which distinguishes it from lookup-oriented tools.
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?
It provides clear context: use when you need a random sample, and it explicitly says there is no search parameter, telling the agent when not to use it. However, it does not name a specific alternative tool for lookups, so it stops short of full 5-level guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
random_airplanes_detailed_infoA
Return a random sample of individual airplanes from the reference catalog. Each record has model name and code, series, production line, registration number, owner, age, engine type and count, delivery date and first flight date. Records are drawn from a random offset, so repeated calls return different aircraft. Sampling only: there is no lookup by registration.
| Name | Required | Description | Default |
|---|---|---|---|
| number_of_airplanes | Yes | Number of random airplanes to sample, from 1 to 100. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It transparently explains the random offset mechanism, that repeated calls return different aircraft, and that lookup by registration is not supported. This goes beyond the input schema and gives an agent realistic expectations.
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 three focused sentences: it states the operation, lists the record contents, and then clarifies sampling behavior and a key limitation. It is front-loaded with the core action and contains no filler.
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 one-parameter tool with an output schema, the description provides all essential context: what is returned, how randomness works, and what the tool cannot do. Nothing critical is missing for correct invocation.
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?
The schema has 100% coverage for the single parameter, including range constraints (1 to 100). The description adds only the generic notion of sampling, which is already implied by the tool name and schema. Baseline 3 is appropriate because the schema does the heavy lifting.
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 opens with a specific verb and resource: 'Return a random sample of individual airplanes from the reference catalog.' It clearly distinguishes the tool from sibling random_aircraft_type by emphasizing individual airplane records and listing concrete fields, making the tool's purpose unambiguous.
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 explicitly states 'Sampling only: there is no lookup by registration,' which tells an agent when not to use the tool. It does not name sibling alternatives directly, but the sampling-only caveat provides clear usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
random_cities_detailed_infoA
Return a random sample of cities from the reference catalog. Each record has city name, IATA code, country ISO2, latitude, longitude, timezone, GMT offset and geoname id. Records are drawn from a random offset, so repeated calls return different cities. Sampling only: there is no lookup by city name.
| Name | Required | Description | Default |
|---|---|---|---|
| number_of_cities | Yes | Number of random cities to sample, from 1 to 100. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It usefully reveals that records come from a random offset and that repeated calls return different cities, but it does not specify edge behavior such as what happens if the requested sample size exceeds the catalog.
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 compact and front-loaded, putting the core purpose first and then adding behavior and boundaries. The field-enumeration sentence may partially overlap with the output schema, but it is not padded or verbose.
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 simple one-parameter sampling tool with a complete schema and an output schema, the description provides enough context: purpose, returned record fields, randomness behavior, and the no-lookup boundary. Nothing critical is missing for correct selection and invocation.
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%, and the schema already documents number_of_cities with type, range, and required status. The tool description adds no further parameter-specific meaning beyond the sampling context, so the baseline score of 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: 'Return a random sample of cities from the reference catalog.' The field list and the explicit 'no lookup by city name' boundary make it easy to distinguish from lookup and other random-catalog sibling tools.
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 clearly frames the intended use as sampling and explicitly states a when-not condition: 'there is no lookup by city name.' It does not name specific sibling alternatives, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
random_countries_detailed_infoA
Return a random sample of countries from the reference catalog. Each record has country name, capital, continent, ISO2, ISO3 and numeric ISO codes, FIPS code, currency name and code, phone prefix and population. Records are drawn from a random offset, so repeated calls return different countries. Sampling only: there is no lookup by country name or code.
| Name | Required | Description | Default |
|---|---|---|---|
| number_of_countries | Yes | Number of random countries to sample, from 1 to 100. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses the random-offset mechanism, that repeated calls return different countries, and that the tool only samples rather than supports lookups. This gives an agent an accurate model of the tool's runtime behavior.
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 four sentences, each earning its place: purpose, output fields, randomness behavior, and the sampling-only limitation. It is front-loaded with the core action and avoids unnecessary elaboration or repetition.
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 single-parameter sampling tool with an output schema, the description adequately explains what records contain, how randomness works, and the tool's boundary. Nothing critical for selecting or invoking the tool is missing; an agent can confidently call it based on this definition.
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?
The input schema already provides 100% description coverage for the single parameter, including its range and meaning. The tool description does not add any extra parameter-specific semantics beyond what the schema states, so a baseline score of 3 is appropriate.
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 opens with a specific verb and resource: 'Return a random sample of countries from the reference catalog.' It clearly distinguishes this tool from siblings that target cities, airports, aircraft, or flights, and the explicit 'Sampling only' statement reinforces that it is not a lookup tool.
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 explicitly states when to use the tool (when a random country sample is needed) and when not to use it: 'there is no lookup by country name or code.' This exclusion is clear enough to prevent an agent from calling it for deterministic retrieval, even without naming an alternative sibling.
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.
12 tool updates
v1.8.1- Changed
flight_arrival_departure_schedule2 fields changed- changed
Input schema / properties / number_of_flights / descriptionPrevious value: -"Number of flights to return."New value: +"Maximum number of flights to return, from 1 to 100." - changed
Input schema / properties / schedule_type / descriptionPrevious value: -"Schedule type: arrival or departure."New value: +"Whether to return the arrival board or the departure board. One of: arrival, departure."
- Changed
flights_with_airline1 field changed- changed
Input schema / properties / number_of_flights / descriptionPrevious value: -"Number of flights to return."New value: +"Maximum number of flights to return, from 1 to 100."
- Changed
future_flights_arrival_departure_schedule4 fields changed- changed
Input schema / properties / date / descriptionPrevious value: -"Future date in YYYY-MM-DD format."New value: +"Date to query, in YYYY-MM-DD format. Any date from tomorrow through about 12 months ahead, including the next 7 days." - changed
Input schema / properties / date / examplesPrevious value: -[ - "2026-03-01" -]New value: +[ + "2027-03-01" +] - changed
Input schema / properties / number_of_flights / descriptionPrevious value: -"Number of flights to return."New value: +"Maximum number of flights to return, from 1 to 100." - changed
Input schema / properties / schedule_type / descriptionPrevious value: -"Schedule type: arrival or departure."New value: +"Whether to return the arrival board or the departure board. One of: arrival, departure."
- Changed
historical_flights_by_date2 fields changed- changed
Input schema / properties / flight_date / descriptionPrevious value: -"Date in YYYY-MM-DD format."New value: +"Past date to query, in YYYY-MM-DD format." - changed
Input schema / properties / number_of_flights / descriptionPrevious value: -"Number of flights to return."New value: +"Maximum number of flights to return, from 1 to 100."
- Changed
list_airlines3 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of airlines to return."New value: +"Maximum number of airlines to return per page, from 1 to 100." - changed
Input schema / properties / offset / descriptionPrevious value: -"Offset for pagination."New value: +"Zero-based offset for pagination. Combine with limit and the total in the response to page through results." - changed
Input schema / properties / search / descriptionPrevious value: -"Optional airline search text for autocomplete."New value: +"Optional text matched against airline name and codes. Autocomplete search requires the Basic plan or higher, as does this endpoint."
- Changed
list_airports3 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of airports to return."New value: +"Maximum number of airports to return per page, from 1 to 100." - changed
Input schema / properties / offset / descriptionPrevious value: -"Offset for pagination."New value: +"Zero-based offset for pagination. Combine with limit and the total in the response to page through results." - changed
Input schema / properties / search / descriptionPrevious value: -"Optional airport search text for autocomplete."New value: +"Optional text matched against airport name and codes. Autocomplete search requires the Basic plan or higher, as does this endpoint."
- Changed
list_routes2 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of routes to return."New value: +"Maximum number of routes to return per page, from 1 to 100." - changed
Input schema / properties / offset / descriptionPrevious value: -"Offset for pagination."New value: +"Zero-based offset for pagination. Combine with limit and the total in the response to page through results."
- Changed
list_taxes3 fields changed- changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum number of tax records to return."New value: +"Maximum number of tax records to return per page, from 1 to 100." - changed
Input schema / properties / offset / descriptionPrevious value: -"Offset for pagination."New value: +"Zero-based offset for pagination. Combine with limit and the total in the response to page through results." - changed
Input schema / properties / search / descriptionPrevious value: -"Optional tax search text."New value: +"Optional text matched against tax name and IATA code."
- Changed
random_aircraft_type1 field changed- changed
Input schema / properties / number_of_aircraft / descriptionPrevious value: -"Number of random aircraft types to return."New value: +"Number of random aircraft types to sample, from 1 to 100."
- Changed
random_airplanes_detailed_info1 field changed- changed
Input schema / properties / number_of_airplanes / descriptionPrevious value: -"Number of random airplanes to return."New value: +"Number of random airplanes to sample, from 1 to 100."
- Changed
random_cities_detailed_info1 field changed- changed
Input schema / properties / number_of_cities / descriptionPrevious value: -"Number of random cities to return."New value: +"Number of random cities to sample, from 1 to 100."
- Changed
random_countries_detailed_info1 field changed- changed
Input schema / properties / number_of_countries / descriptionPrevious value: -"Number of random countries to return."New value: +"Number of random countries to sample, from 1 to 100."
13 tool updates
v1.7.0- Changed
flight_arrival_departure_schedule2 fields changed- changed
Input schema / properties / number_of_flights / descriptionPrevious value: -"Number of random flights to return."New value: +"Number of flights to return." - added
Input schema / properties / number_of_flights / maximumAdded value: +100
- Changed
flights_with_airline3 fields changed- added
Input schema / properties / flight_statusAdded value: +{ + "default": "", + "description": "Optional flight status filter. One of: scheduled, active, landed, cancelled, incident, diverted.", + "title": "Flight Status", + "type": "string" +} - changed
Input schema / properties / number_of_flights / descriptionPrevious value: -"Number of random flights to return."New value: +"Number of flights to return." - added
Input schema / properties / number_of_flights / maximumAdded value: +100
- Changed
future_flights_arrival_departure_schedule2 fields changed- changed
Input schema / properties / number_of_flights / descriptionPrevious value: -"Number of random flights to return."New value: +"Number of flights to return." - added
Input schema / properties / number_of_flights / maximumAdded value: +100
- Added
get_flight_status - Changed
historical_flights_by_date2 fields changed- changed
Input schema / properties / number_of_flights / descriptionPrevious value: -"Number of random flights to return."New value: +"Number of flights to return." - added
Input schema / properties / number_of_flights / maximumAdded value: +100
- Changed
list_airlines1 field changed- added
Input schema / properties / limit / maximumAdded value: +100
- Changed
list_airports1 field changed- added
Input schema / properties / limit / maximumAdded value: +100
- Changed
list_routes1 field changed- added
Input schema / properties / limit / maximumAdded value: +100
- Changed
list_taxes1 field changed- added
Input schema / properties / limit / maximumAdded value: +100
- Changed
random_aircraft_type1 field changed- added
Input schema / properties / number_of_aircraft / maximumAdded value: +100
- Changed
random_airplanes_detailed_info1 field changed- added
Input schema / properties / number_of_airplanes / maximumAdded value: +100
- Changed
random_cities_detailed_info1 field changed- added
Input schema / properties / number_of_cities / maximumAdded value: +100
- Changed
random_countries_detailed_info1 field changed- added
Input schema / properties / number_of_countries / maximumAdded value: +100
12 tool updates
v1.6.0- Changed
flight_arrival_departure_schedule11 fields changed- added
Input schema / properties / airline_name / defaultAdded value: +"" - added
Input schema / properties / airline_name / descriptionAdded value: +"Optional airline name filter." - added
Input schema / properties / airport_iata_code / descriptionAdded value: +"Airport IATA code (for example: SFO)." - added
Input schema / properties / airport_iata_code / minLengthAdded value: +1 - added
Input schema / properties / number_of_flights / defaultAdded value: +5 - added
Input schema / properties / number_of_flights / descriptionAdded value: +"Number of random flights to return." - added
Input schema / properties / number_of_flights / exclusiveMinimumAdded value: +0 - added
Input schema / properties / schedule_type / descriptionAdded value: +"Schedule type: arrival or departure." - changed
Input schema / requiredPrevious value: -[ - "airport_iata_code", - "schedule_type", - "airline_name", - "number_of_flights" -]New value: +[ + "airport_iata_code", + "schedule_type" +] - changed
Input schema / titlePrevious value: -"flight_arrival_departure_scheduleArguments"New value: +"flight_arrival_departure_schedule_toolArguments" - changed
Output schema / titlePrevious value: -"flight_arrival_departure_scheduleOutput"New value: +"flight_arrival_departure_schedule_toolOutput"
- Changed
flights_with_airline5 fields changed- added
Input schema / properties / airline_name / descriptionAdded value: +"Airline name to filter flights (for example: Delta Air Lines)." - added
Input schema / properties / number_of_flights / descriptionAdded value: +"Number of random flights to return." - added
Input schema / properties / number_of_flights / exclusiveMinimumAdded value: +0 - changed
Input schema / titlePrevious value: -"flights_with_airlineArguments"New value: +"flights_with_airline_toolArguments" - changed
Output schema / titlePrevious value: -"flights_with_airlineOutput"New value: +"flights_with_airline_toolOutput"
- Changed
future_flights_arrival_departure_schedule14 fields changed- added
Input schema / properties / airline_iata / defaultAdded value: +"" - added
Input schema / properties / airline_iata / descriptionAdded value: +"Optional airline IATA code filter (for example: UA)." - added
Input schema / properties / airport_iata_code / descriptionAdded value: +"Airport IATA code (for example: SFO)." - added
Input schema / properties / airport_iata_code / minLengthAdded value: +1 - added
Input schema / properties / date / defaultAdded value: +"" - added
Input schema / properties / date / descriptionAdded value: +"Future date in YYYY-MM-DD format." - added
Input schema / properties / date / examplesAdded value: +[ + "2026-03-01" +] - added
Input schema / properties / number_of_flights / defaultAdded value: +5 - added
Input schema / properties / number_of_flights / descriptionAdded value: +"Number of random flights to return." - added
Input schema / properties / number_of_flights / exclusiveMinimumAdded value: +0 - added
Input schema / properties / schedule_type / descriptionAdded value: +"Schedule type: arrival or departure." - changed
Input schema / requiredPrevious value: -[ - "airport_iata_code", - "schedule_type", - "airline_iata", - "date", - "number_of_flights" -]New value: +[ + "airport_iata_code", + "schedule_type" +] - changed
Input schema / titlePrevious value: -"future_flights_arrival_departure_scheduleArguments"New value: +"future_flights_arrival_departure_schedule_toolArguments" - changed
Output schema / titlePrevious value: -"future_flights_arrival_departure_scheduleOutput"New value: +"future_flights_arrival_departure_schedule_toolOutput"
- Added
historical_flights_by_date - Added
list_airlines - Added
list_airports - Added
list_routes - Added
list_taxes - Changed
random_aircraft_type4 fields changed- added
Input schema / properties / number_of_aircraft / descriptionAdded value: +"Number of random aircraft types to return." - added
Input schema / properties / number_of_aircraft / exclusiveMinimumAdded value: +0 - changed
Input schema / titlePrevious value: -"random_aircraft_typeArguments"New value: +"random_aircraft_type_toolArguments" - changed
Output schema / titlePrevious value: -"random_aircraft_typeOutput"New value: +"random_aircraft_type_toolOutput"
- Changed
random_airplanes_detailed_info4 fields changed- added
Input schema / properties / number_of_airplanes / descriptionAdded value: +"Number of random airplanes to return." - added
Input schema / properties / number_of_airplanes / exclusiveMinimumAdded value: +0 - changed
Input schema / titlePrevious value: -"random_airplanes_detailed_infoArguments"New value: +"random_airplanes_detailed_info_toolArguments" - changed
Output schema / titlePrevious value: -"random_airplanes_detailed_infoOutput"New value: +"random_airplanes_detailed_info_toolOutput"
- Changed
random_cities_detailed_info4 fields changed- added
Input schema / properties / number_of_cities / descriptionAdded value: +"Number of random cities to return." - added
Input schema / properties / number_of_cities / exclusiveMinimumAdded value: +0 - changed
Input schema / titlePrevious value: -"random_cities_detailed_infoArguments"New value: +"random_cities_detailed_info_toolArguments" - changed
Output schema / titlePrevious value: -"random_cities_detailed_infoOutput"New value: +"random_cities_detailed_info_toolOutput"
- Changed
random_countries_detailed_info4 fields changed- added
Input schema / properties / number_of_countries / descriptionAdded value: +"Number of random countries to return." - added
Input schema / properties / number_of_countries / exclusiveMinimumAdded value: +0 - changed
Input schema / titlePrevious value: -"random_countries_detailed_infoArguments"New value: +"random_countries_detailed_info_toolArguments" - changed
Output schema / titlePrevious value: -"random_countries_detailed_infoOutput"New value: +"random_countries_detailed_info_toolOutput"
7 tool updates
- First observed
flight_arrival_departure_schedule - First observed
flights_with_airline - First observed
future_flights_arrival_departure_schedule - First observed
random_aircraft_type - First observed
random_airplanes_detailed_info - First observed
random_cities_detailed_info - First observed
random_countries_detailed_info
TDQS
Scored across 13 tools
Most tools have clearly distinct purposes, especially the time-scoped flight tools (today, future, past) and the reference list tools. The two random aircraft tools could be confused at a glance, but their descriptions clearly separate aircraft types from individual airplanes.
The tool names mostly follow consistent snake_case patterns: get_ for single lookups, list_ for catalog pages, and random_ for sampling tools. A few names like flights_with_airline and flight_arrival_departure_schedule deviate from the verb_noun pattern, but the overall convention remains readable and predictable.
Thirteen tools is a well-scoped size for a flight data API covering flight status, schedules, and reference data. Each tool has a defined role, and the count is neither bloated nor too thin.
The server covers the core flight workflows well: specific flight status, airline flight lists, today's/future/historical schedules, and route/reference lookups. Minor gaps exist, such as no specific lookup for random catalog entities beyond sampling, but agents can complete most flight-status tasks without dead ends.
Maintenance
Related MCP Connectors
Aviationstack MCP — global flight + airport + airline data
Geo-based flight search MCP server. Find more flights between any two places on earth
Flight search MCP server providing search, pagination, and itinerary details for AI assistants.
FlightAware MCP — wraps FlightAware AeroAPI v4 (aeroapi.flightaware.com)
Related MCP Servers
- AlicenseCqualityCmaintenanceA Model Context Protocol (MCP) server that provides real-time flight tracking and status information using the AviationStack API.35,022 npm7MIT
- AlicenseAqualityDmaintenanceAn MCP server that provides flight search capabilities using the Aviasales API, allowing users to search, filter, and get details on flights and generate booking links.4GPL 3.0
- AlicenseAqualityCmaintenanceMCP server giving AI agents access to real-time aviation data — live flight tracking, airport weather, airline and airport information.103MIT
- AlicenseAqualityAmaintenanceMCP server for FlightAware AeroAPI that enables live flight tracking, airport boards, operator and aircraft lookup, schedule retrieval, and flight alert management via natural language.34722 npm1MIT