flightaware-mcp
This server is an MCP interface to FlightAware's AeroAPI v4, letting you track and research flights, airports, airlines, aircraft, schedules, and alerts over stdio.
Track flights: get current/recent/scheduled flights for an ident, search live flights (simple or advanced queries), get flight tracks, positions, routes, history, and rendered map PNGs.
Explore airports: view airport details, flight boards, flight counts, popular routes, nearby airports, delays, weather, and resolve/canonicalize airport codes.
Look up operators & aircraft: retrieve airline/operator details and flight boards, list operators, and find aircraft owners by registration.
Predict & schedule: fetch scheduled flights between dates and run premium Foresight predictive searches.
Manage alerts: list, create, update, delete flight alerts, and get/set the webhook delivery endpoint (mutations require
confirm: true).Check health: verify API key resolution and AeroAPI acceptance via a cached health check.
Provides tools for live flight tracking, airport information, flight schedules, aircraft and operator data, and flight alerts via the FlightAware AeroAPI.
Click on "Install 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., "@flightaware-mcptrack the current position of flight UA123"
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.
flightaware-mcp
MCP server for FlightAware AeroAPI (v4) — live flight tracking and aviation data for Claude. Track flights, read airport boards, look up operators and aircraft, fetch scheduled flights, and manage flight alerts, all over stdio.
Developed and maintained by AI (Claude Code). Use at your own discretion.
Quick start
{
"mcpServers": {
"flightaware": {
"command": "npx",
"args": ["-y", "@chrischall/flightaware-mcp"],
"env": { "AEROAPI_API_KEY": "your-aeroapi-key-here" }
}
}
}Get a key at flightaware.com/aeroapi/portal. The free Personal tier (500 calls/month) is enough to start; AeroAPI bills per query.
Related MCP server: FlightRadar MCP Server
Tools
Area | Tools |
Flights |
|
Airports |
|
Operators / aircraft |
|
Schedules / predictive |
|
Alerts |
|
Health |
|
Alert mutations are confirm-gated: without confirm: true they return a dry-run preview and make no network call.
Configuration
Var | Required | Purpose |
| yes | Your AeroAPI key (sent as the |
| no | Default directory for flight-map PNGs (default: cwd). |
| no | Seconds to cache identical live-data GET responses (default: 15; |
| no | Longer TTL for reference data — airport/operator info, routes, ownership, canonical lookups (default: 3600; |
Development
npm install
npm run build
npm testEvery request rides your own AeroAPI key and counts against your subscription quota. See docs/FLIGHTAWARE-API.md for the pinned endpoint surface.
License
MIT
Available Tools
34 toolsfa_count_flightsARead-only
Count flights matching a query without returning the flights themselves. Returns { count }. Uses the SIMPLIFIED "-key value" syntax (same as fa_search_flights, NOT the structured grammar of fa_search_flights_advanced). Example: -airline UAL -belowAltitude 30000.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Simplified "-key value" search string (same syntax as fa_search_flights), e.g. -airline UAL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that the tool only returns a count, not flights, and explains query syntax. Annotations already indicate readOnly; description adds return type and usage pattern.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus example, front-loaded with purpose, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given tool simplicity (one param, no output schema, readOnly annotations), the description fully covers functionality, syntax, and return value.
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 covers parameter with description, but description provides concrete example and clarifies the syntax is same as fa_search_flights, adding value beyond 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?
Description uses specific verb 'count' and resource 'flights', clearly states it returns a count without returning flights, and distinguishes from search tools by syntax reference.
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 mentions the syntax (simplified -key value) and contrasts with fa_search_flights_advanced, giving guidance on when to use this tool. Could be improved by stating 'when only count needed'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_create_alertA
Create a flight alert on your AeroAPI account. Without confirm:true this returns a dry-run preview of the request and makes NO network call; with confirm:true it creates the alert. Requires a Standard or Premium AeroAPI tier (the free Personal tier returns 401).
| Name | Required | Description | Default |
|---|---|---|---|
| eta | No | Notify on ETA changes | |
| hold | No | Notify on hold | |
| filed | No | Notify when a flight plan is filed | |
| ident | No | Flight ident / designator to watch (e.g. UAL123) | |
| origin | No | Origin airport code filter | |
| arrival | No | Notify on arrival | |
| confirm | No | Must be true to proceed. Without this, the tool returns a preview. | |
| diverted | No | Notify on diversion | |
| end_date | No | ISO-8601 date the alert expires | |
| cancelled | No | Notify on cancellation | |
| departure | No | Notify on departure | |
| max_weekly | No | Cap on notifications per week | |
| start_date | No | ISO-8601 date the alert becomes active | |
| destination | No | Destination airport code filter | |
| aircraft_type | No | ICAO aircraft type filter (e.g. B738) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate a non-read-only, mutable operation. The description adds critical behavioral details: the dry-run preview when confirm is false, the actual creation when true, and the tier restriction. This goes beyond the schema and annotations, though it doesn't describe rate limits or error states, which would be nice.
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 two sentences long, with the main action stated first. Every word adds value: the verb, the resource, the confirm behavior, and the tier requirement. No fluff, perfectly 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 tool with 15 parameters and no output schema, the description covers the core workflow and a critical authorization note. However, it does not describe the preview format or what the API returns on successful creation. It also lacks details on default behaviors (e.g., what happens if no filters are set). Adequate but could be more complete given the complexity.
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 describes all 15 parameters. The description adds value only for the confirm parameter by explaining the dry-run behavior. For other parameters, the description adds no extra meaning beyond the schema descriptions. Hence a baseline 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 states the exact action: 'Create a flight alert on your AeroAPI account.' It clearly differentiates from sibling tools like fa_update_alert and fa_delete_alert by focusing on creation. Additionally, it explains the dry-run mode, making the tool's core function unmistakable.
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 explains the confirm parameter's role (dry-run vs. actual creation) and warns about the required AeroAPI tier. It provides clear context on when to use each mode. Though it doesn't mention alternatives (e.g., updating versus creating), the sibling list makes that implicit, so the guidance is strong but not perfect.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_delete_alertAIdempotent
Delete a flight alert by id. Without confirm:true this returns a dry-run preview and makes NO network call; with confirm:true it deletes the alert. Requires a Standard or Premium AeroAPI tier (the free Personal tier returns 401).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Alert id to delete | |
| confirm | No | Must be true to proceed. Without this, the tool returns a preview. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (idempotent, non-read-only), the description discloses the dry-run behavior (no network call without confirm:true) and tier requirement, providing critical behavioral context that annotations alone do not cover.
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 concise sentences, front-loaded with the core purpose. Every sentence contributes essential information without redundancy or fluff.
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 the tool's core functionality, dry-run mode, and tier requirements. Without an output schema, it could detail what the preview returns, but overall it is sufficiently complete for a delete operation with conditional behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description reinforces confirm behavior but adds little new meaning beyond what the schema already provides, meeting the baseline for high 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 clearly states 'Delete a flight alert by id,' specifying the verb (delete) and resource (flight alert by id). Among siblings, there are create, update, get, and list alerts, making this tool's delete function distinct and 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 explains the confirm parameter's role in triggering a dry-run vs actual deletion, and specifies the required AeroAPI tier (Standard or Premium) with a 401 error for free tier. It gives clear context for using the tool but does not explicitly compare to siblings like fa_create_alert or fa_update_alert.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_foresight_searchARead-only
Predictive flight search via AeroAPI Foresight (Boolean query language, like fa_search_flights_advanced, but predicted data). NOTE: Foresight is a premium tier — expect a 402/403 unless your subscription includes it.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Boolean query expression | |
| cursor | No | Opaque paging cursor from a previous response's links.next | |
| max_pages | No | Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds valuable context about the premium tier subscription leading to 402/403 errors, which is a critical behavioral trait not covered by annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first explains purpose and comparison, second warns about premium tier. Very concise, front-loaded, and every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers purpose, differentiation, and a key limitation. It lacks details on pagination and return format, but given no output schema and the simplicity of the tool, it is sufficiently complete for an agent.
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?
With 100% schema description coverage, the schema already explains all parameters. The description adds minimal extra meaning, only referencing the query language similarity to fa_search_flights_advanced. Baseline 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 clearly states the tool performs a predictive flight search using a Boolean query language, directly comparing it to the sibling tool fa_search_flights_advanced and distinguishing it by focusing on predicted data.
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 implies usage for predictive data via comparison to fa_search_flights_advanced and warns about premium tier requirements, but does not explicitly state when to use this tool over alternatives or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_aircraft_ownerARead-only
Get the registered owner of an aircraft by tail number / registration (e.g. N12345).
| Name | Required | Description | Default |
|---|---|---|---|
| ident | Yes | Aircraft registration / tail number (e.g. N12345) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description does not need to restate them. It adds no additional behavioral context (e.g., data freshness, rate limits), but does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that conveys the essential information without any unnecessary words. It is appropriately front-loaded and concise.
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 tool with one parameter, no output schema, and read-only semantics, the description is fully complete. It provides all necessary information for an agent to use the tool 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%, and the description includes the same example 'N12345' as the schema. Beyond echoing the parameter's purpose, it adds no new semantic value, meeting the baseline expectation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get'), the resource ('registered owner of an aircraft'), and the input method ('by tail number / registration'), with a concrete example. It effectively distinguishes itself from sibling tools like fa_get_operator.
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 no guidance on when to use this tool versus alternatives. With many sibling tools for different lookups, the absence of usage context or exclusions leaves the agent without direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_airportARead-only
Get details for an airport by code (ICAO like KJFK, IATA like JFK, or LID).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Airport code (ICAO/IATA/LID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint (true) and openWorldHint (true), so the description's job is lighter. It adds the code formats, but does not disclose additional behaviors like data freshness or return structure. Adequate for a simple read 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?
Single, front-loaded sentence that is concise and includes all necessary information. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 required parameter, no output schema, and clear annotations), the description is complete. It tells the agent exactly what to input and what 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 coverage is 100% with a regex pattern, but the description adds semantic meaning by specifying 'airport code (ICAO/IATA/LID)' with examples (KJFK, JFK), which helps the agent understand the parameter's intent beyond the pattern.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'airport details', and the input format (ICAO, IATA, or LID codes). It distinguishes from sibling tools like fa_list_airports and fa_get_airport_delays.
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 specifies when to use (when you need airport details by code) and accepts multiple code formats. However, it does not explicitly state when not to use or provide alternatives, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_airport_delaysARead-only
Get current airport delays — all delayed airports, or just one when id is given.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Airport code to scope to a single airport (omit for all delays) | |
| cursor | No | Opaque paging cursor from a previous response's links.next | |
| max_pages | No | Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description's value is limited. It adds the behavioral trait 'current' implying real-time data, but does not disclose other traits like latency, rate limits, or response size. It does not contradict annotations.
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 highly concise at one sentence with a clear front-loaded purpose, no redundancy, and efficient use of words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and the tool's three parameters (including pagination), the description is insufficiently complete. It does not explain the return format, cursor usage, or max_pages behavior, leaving the agent underinformed 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 coverage is 100% with all parameters described, so baseline is 3. The description adds extra value by explicitly highlighting the key 'id' parameter usage ('when `id` is given'), though it omits mention of 'cursor' and 'max_pages'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves 'current airport delays' and distinguishes two modes: all delays or a single airport when 'id' is provided. This specificity differentiates it from sibling tools like fa_get_airport (general info) or fa_get_airport_weather.
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 offers a basic usage condition ('or just one when `id` is given') but provides no explicit guidance on when not to use this tool or alternatives among the many sibling tools. The usage context is implied but not fully articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_airport_flight_countsARead-only
Get current flight counts at an airport: { departed, enroute, scheduled_arrivals, scheduled_departures }.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Airport code (ICAO/IATA/LID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds the specific fields returned, which is useful but does not discuss behavioral traits like data freshness or authorization needs. No contradiction.
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?
One sentence, concise, lists the return fields. No wasted words. Front-loaded purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given a simple parameter and no output schema, the description fully explains what the tool returns in a structured format. Annotations cover safety. Complete for an agent to use 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 coverage is 100%, with the parameter 'id' described as 'Airport code (ICAO/IATA/LID)'. The description does not add extra meaning beyond the schema, 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?
The description clearly states the verb 'Get', the resource 'flight counts at an airport', and lists the specific fields returned: departed, enroute, scheduled_arrivals, scheduled_departures. This distinguishes it from siblings like fa_get_airport_flights (detailed flights) or fa_get_airport (airport info).
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 implies usage for aggregate counts vs. detailed flight data, but does not explicitly state when to use this tool over alternatives or when not to. It's clear enough for an agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_airport_flightsARead-only
Get a flight board for an airport: all flights, or just arrivals/departures/scheduled_arrivals/scheduled_departures.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Airport code (ICAO/IATA/LID) | |
| end | No | ISO-8601 end of the time window | |
| type | No | Restrict to airline or GA traffic | |
| board | No | Which board to fetch (default: all) | all |
| start | No | ISO-8601 start of the time window | |
| cursor | No | Opaque paging cursor from a previous response's links.next | |
| max_pages | No | Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds no behavioral details beyond the parameter descriptions, such as data freshness or pagination behavior, which are partially covered by parameters. No contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the purpose. Every word earns its place.
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?
With 7 parameters and no output schema, the description could be more complete about return values (e.g., listing flight details). However, parameter descriptions cover time window and pagination, making it adequate for a read-only list tool.
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 each parameter is already documented. The description adds minimal value beyond what the schema provides, e.g., explaining the board enum which is also in 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?
The description clearly states the verb 'Get' and resource 'flight board for an airport', and lists specific board types. This distinguishes it from sibling tools like fa_get_airport_flight_counts and fa_get_flights.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on what boards can be fetched but does not explicitly mention when to use this tool versus alternatives, nor any when-not-to scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_airport_routesBRead-only
Get the most popular routes (with aircraft types, counts, and filed altitudes) flown between an origin and destination airport.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Origin airport code (ICAO/IATA/LID) | |
| cursor | No | Opaque paging cursor from a previous response's links.next | |
| max_pages | No | Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page. | |
| destination | Yes | Destination airport code (ICAO/IATA/LID) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and data volatility. The description adds that routes include aircraft types, counts, and altitudes, but omits paging behavior, response size limits, or data freshness.
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?
Single sentence with no redundancy. However, it could be slightly expanded to include key return elements without becoming 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?
The tool has 4 parameters, paging (cursor, max_pages), and no output schema. The description does not explain how paging works, what the response structure is, or how many routes are returned. This is insufficient for an agent to use correctly without additional inference.
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 description adds no extra parameter meaning beyond what the schema already provides. Baseline 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 clearly states the tool gets popular routes with aircraft types, counts, and filed altitudes between an origin and destination. It distinguishes from siblings like fa_get_airport_flights or fa_get_flight_route, though not explicitly.
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?
No guidance on when to use this vs alternatives. Does not mention when not to use, prerequisites, or context where another tool might be better.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_airport_weatherARead-only
Get weather for an airport: current METAR observations, or the TAF forecast.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Airport code (ICAO/IATA/LID) | |
| cursor | No | Opaque paging cursor from a previous response's links.next | |
| report | No | observations (METAR) or forecast (TAF) | observations |
| max_pages | No | Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. The description adds only that it fetches weather, which aligns but does not disclose additional behaviors like pagination (cursor, max_pages) or response format. With annotations present, the bar is higher for adding context; the description adds minimal behavioral insight.
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?
One sentence, zero waste. Efficiently captures the tool's purpose without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description fails to clarify the response structure or pagination behavior. It mentions data types but lacks completeness for a 4-parameter tool. Adequate but has clear gaps.
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%, with each parameter documented. The description adds little beyond the schema; it only reiterates the report enum values ('observations' vs 'forecast'). Baseline is 3 for high coverage, and no substantial extra meaning is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets weather for an airport, specifying both current METAR observations and TAF forecast. It uses specific verbs and resources ('Get weather', 'METAR', 'TAF'), and distinguishes from sibling tools like fa_get_airport and fa_get_airport_delays.
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?
No explicit guidance on when to use this tool versus alternatives. While the description implies it is for weather data, it does not mention when to choose observations vs forecast, or when to use sibling tools like fa_get_airport_delays.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_alertARead-only
Get a single configured flight alert by its id. Requires a Standard or Premium AeroAPI tier (the free Personal tier returns 401).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Alert id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, and the description adds tier-based behavior (401 for free tier) as extra context. No side effects or other behaviors need disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first states purpose, second adds crucial precondition. No unnecessary words, and the key information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool is simple with one parameter, no output schema, and annotations clear. Description covers purpose and a key behavioral constraint (tier requirement), making it complete for the agent to use 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 coverage is 100% with the parameter 'id' having a description 'Alert id'. Description does not add any additional meaning beyond what the schema provides, so 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?
Description clearly states 'Get a single configured flight alert by its id', specifying verb, resource, and retrieval method. This distinguishes it from sibling tools like fa_list_alerts (list all) and fa_create_alert (create).
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 states tier requirement and the 401 error for free tier, providing a key precondition. While it does not explicitly list when-to-use vs alternatives, the specificity implies use when you have an alert id and want details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_alerts_endpointARead-only
Get the current delivery (webhook) endpoint configured for your AeroAPI alerts. Requires a Standard or Premium AeroAPI tier (the free Personal tier returns 401).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true. Description adds valuable behavioral context: the tier requirement and the 401 error for free tier. This goes beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. Front-loaded with verb and resource. Every sentence provides actionable information.
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?
No output schema is provided, and the description does not specify the return format (e.g., URL string in JSON). For a simple read tool, this is a minor gap. Annotations are rich, but return format would improve completeness.
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?
Input schema has zero parameters with 100% coverage, so description adds no parameter info. Baseline score of 4 applies for no-param tools.
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?
Description clearly states it retrieves the current delivery endpoint for AeroAPI alerts, distinguishing it from sibling tools like fa_set_alerts_endpoint (which sets) and fa_get_alert (which gets a specific alert). Verb 'Get' and resource 'delivery endpoint' are specific.
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?
Description specifies when to use (to get endpoint) and includes a condition (requires Standard/Premium tier, free tier returns 401). However, it does not explicitly contrast with sibling tools like fa_set_alerts_endpoint for setting the endpoint, but the context is sufficient for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_flight_historyARead-only
Get historical flights for an ident (designator, registration, or fa_flight_id) beyond the recent window covered by fa_get_flights. NOTE: historical data requires a Standard or Premium AeroAPI tier — the free Personal tier returns 401.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ISO-8601 end of the time window | |
| ident | Yes | Flight designator, registration, or fa_flight_id | |
| start | No | ISO-8601 start of the time window | |
| cursor | No | Opaque paging cursor from a previous response's links.next | |
| max_pages | No | Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page. | |
| ident_type | No | Disambiguate how `ident` is interpreted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, openWorldHint), the description adds critical context about API tier requirements and the scope of data (historical beyond recent window). Does not cover pagination but annotations already signal safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: first defines the core action, second provides a crucial usage note. No wasted words, highly efficient.
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?
Covers purpose, scope distinction, and tier requirement. With 6 parameters and no output schema, the description is sufficient but could briefly mention pagination or cursor usage to be more complete.
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 not add parameter-specific meaning beyond what the schema already provides; it only reiterates the ident types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'historical flights', and explicitly distinguishes itself from the sibling tool fa_get_flights by noting it covers data 'beyond the recent window'.
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 guidance on when to use (for historical data beyond recent window) and when not (requires Standard or Premium tier, otherwise returns 401). Implicitly suggests using fa_get_flights for recent flights.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_flight_mapARead-only
Get a rendered map image (PNG) of a flight by fa_flight_id. Writes the PNG to disk (default: $AEROAPI_OUTPUT_DIR or cwd) and returns the path, or returns it inline as base64 when inline:true.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | fa_flight_id of the flight | |
| width | No | Image width in pixels | |
| height | No | Image height in pixels | |
| inline | No | Return the PNG inline as base64 instead of writing to disk | |
| output_dir | No | Directory to write the PNG to (default: $AEROAPI_OUTPUT_DIR or cwd) | |
| show_data_block | No | Overlay the flight data block on the map |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint and openWorldHint. The description adds important behavioral context: writes PNG to disk with configurable directory, or returns inline base64. It does not contradict annotations since the write is client-side.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences efficiently convey output, behavior, and default directory. Could be slightly more concise, but no wasted words.
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?
No output schema, but description explains return format (path or base64) and mentions PNG. It lacks error handling details but is adequate for a straightforward image retrieval tool with 6 parameters.
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 covers all 6 parameters with descriptions. The description adds value by explaining the output type (PNG), return mechanism (path or base64), and default output directory logic, complementing 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?
The description clearly states it retrieves a rendered map image (PNG) for a flight using fa_flight_id. This specific verb-resource combo distinguishes it from sibling tools like fa_get_flight_position or fa_get_flight_route.
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 explains output modes (disk vs inline base64) but does not explicitly state when to use this tool over alternatives like fa_get_flight_track for raw data. Usage context is implied but not exclusionary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_flight_positionARead-only
Get the most recent reported position for an in-air flight by fa_flight_id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | fa_flight_id of the flight |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate safe read-only behavior (readOnlyHint: true). The description adds that it returns the 'most recent reported position' for in-air flights, but does not mention behavior when flight is not airborne or no position is available. With strong annotations, the description adds moderate value.
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?
Single sentence, no wasted words. Front-loaded with the essential purpose.
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 read-only tool with one parameter and no output schema, the description is sufficient. It could mention the return format, but annotations compensate for safety.
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 covers 100% of parameters, explaining that 'id' is the fa_flight_id. The description repeats this, adding no new meaning but consistently using the same terminology.
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 specifies the verb 'Get' and the resource 'most recent reported position for an in-air flight by fa_flight_id', clearly differentiating it from siblings like fa_get_flight_track, fa_get_flight_history, etc.
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 implies when to use (current position of an in-air flight) but does not explicitly state when not to use or provide alternatives. However, the purpose is clear enough for an agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_flight_routeARead-only
Get the decoded route (fixes/waypoints) for a specific flight by fa_flight_id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | fa_flight_id of the flight |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and openWorldHint. The description adds that the route is 'decoded', implying processed data, but does not disclose other behavioral traits like data source, update frequency, or limitations. Minimal additional transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no fluff. It front-loads the action and resource, making it efficient for an AI agent to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter tool and annotations covering safety, the description is mostly complete. However, it lacks explanation of the return format or what 'decoded route' entails, which could be useful for an agent comparing with other 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?
Input schema has 100% description coverage for the single parameter 'id', which is already described as 'fa_flight_id of the flight'. The description repeats this without adding new semantics, so baseline 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 clearly states the verb 'Get', the resource 'decoded route (fixes/waypoints)', and the key parameter 'fa_flight_id'. It distinguishes from sibling tools that focus on alerts, searches, or other flight aspects.
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 implies usage when a flight ID is available but does not provide explicit guidance on when to use this tool versus siblings like fa_get_flight_track or fa_get_flight_history. No exclusion criteria or alternative suggestions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_flightsARead-only
Get flights for an ident — a flight designator (e.g. UAL123, AAL100), aircraft registration (e.g. N12345), or fa_flight_id. Returns recent, current, and scheduled flights for that ident.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | ISO-8601 end of the time window | |
| ident | Yes | Flight designator, registration, or fa_flight_id | |
| start | No | ISO-8601 start of the time window | |
| cursor | No | Opaque paging cursor from a previous response's links.next | |
| max_pages | No | Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page. | |
| ident_type | No | Disambiguate how `ident` is interpreted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Description adds 'Returns recent, current, and scheduled flights' beyond annotations (readOnlyHint, openWorldHint). Does not contradict annotations. However, missing details on pagination and rate limits.
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?
Single sentence, front-loaded with purpose, no extraneous 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?
Description covers core function but is vague on return format and optional time-window parameters; given no output schema, more detail would be helpful.
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 parameter coverage is 100%, so baseline is 3. Description adds value by elaborating on 'ident' types, but repeats some schema-provided information.
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?
Description clearly states 'Get flights for an ident' and explains valid ident types (designator, registration, fa_flight_id), distinguishing it from sibling tools like fa_get_flight_history or fa_get_flight_position.
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?
No guidance on when to use this tool versus alternatives; lacks context about exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_flight_trackARead-only
Get the position track (breadcrumb log) for a specific flight by fa_flight_id.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | fa_flight_id of the flight | |
| include_estimated_positions | No | Include estimated positions where actual data is missing |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint. Description adds 'breadcrumb log' implying a sequence, but does not disclose limits, pagination, or behavior when data is missing. No contradictions.
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?
Single sentence, no wasted words, front-loaded with purpose. Highly concise and structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given schema coverage and annotations, description is adequate but lacks usage guidance and details about return format. Minimal but not insufficient.
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%, descriptions already present for both parameters. Description does not add further meaning beyond what schema provides. Baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'position track (breadcrumb log)', and the identifier 'fa_flight_id'. It distinguishes from siblings like fa_get_flight_position and fa_get_flight_route.
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?
No guidance on when to use this tool versus alternatives like fa_get_flight_position or fa_get_flight_route. Siblings are listed but no exclusions or context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_nearby_airportsARead-only
Find airports near a latitude/longitude within a radius (statute miles).
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque paging cursor from a previous response's links.next | |
| radius | Yes | Search radius in statute miles | |
| latitude | Yes | Latitude in decimal degrees | |
| only_iap | No | Only airports with a published instrument approach | |
| longitude | Yes | Longitude in decimal degrees | |
| max_pages | No | Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description does not need to repeat those. However, the description adds no further behavioral details such as paging behavior, rate limits, or that the radius is in statute miles (already in schema). No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded and contains no filler. Every word is necessary to convey the core purpose.
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 tool has moderate complexity with 6 parameters and no output schema. The description adequately explains the basic operation, but it omits mention of paging (cursor parameter) and the max_pages limitation, which are relevant for a complete understanding.
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?
All 6 parameters have descriptions in the input schema (100% coverage), so the description does not need to add parameter-level detail. It provides a high-level context but no additional meaning beyond what the schema already offers.
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 specifies the verb 'Find', the resource 'airports', and the key constraints: near a latitude/longitude and within a radius in statute miles. This clearly differentiates it from sibling tools like fa_get_airport, fa_list_airports, and fa_resolve_airport.
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 implies usage when needing airports near a location, but it does not explicitly state when to use this tool versus alternatives (e.g., fa_list_airports for listing all airports or fa_get_airport for a specific airport). No guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_operatorARead-only
Get details for an operator (airline) by code (ICAO like UAL, or IATA like UA).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Operator code (ICAO/IATA) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. Description adds value by specifying acceptable code formats (ICAO/IATA with examples), which is beyond the annotations.
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?
Single sentence, no wasted words, front-loaded with action verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the single parameter, annotations, and sibling tools, the description is sufficient for an agent to select and invoke the tool correctly. No output schema, but purpose is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description of the id parameter. Description adds examples (UAL, UA), providing extra clarity without redundancy.
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 ('Get details') and resource ('operator'), and distinguishes from siblings like fa_list_operators and fa_get_operator_flights by focusing on a single operator by code.
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 states when to use (get details by code) and implies when not to (if you need list or flights, use siblings). No explicit exclusions but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_operator_flightsARead-only
Get a flight board for an operator (airline): all flights, or arrivals/departures/enroute/scheduled.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Operator code (ICAO/IATA) | |
| board | No | Which board to fetch (default: all) | all |
| cursor | No | Opaque paging cursor from a previous response's links.next | |
| max_pages | No | Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true. Description adds context about board types but does not mention billing (max_pages capped at 20), pagination, or any rate limits. With annotations covering safety, a 3 is appropriate.
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?
Single sentence, front-loaded with key information. No superfluous words.
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?
Adequately describes purpose and board types. Missing mention of pagination (cursor) and billing implications (max_pages cap) which are in schema but not in description. For a tool with 4 params and no output schema, it is mostly complete.
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 baseline is 3. The description lists board values but adds no new meaning beyond the schema. No elaboration on cursor or max_pages parameters.
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?
Description clearly states verb ('Get'), resource ('flight board for an operator'), and scope ('all flights, or arrivals/departures/enroute/scheduled'). Distinguishes from sibling tools like fa_get_operator (which gets operator details) and fa_get_flights (which likely gets flights without operator filter).
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?
No explicit when-to-use or when-not-to-use guidance. While the resource name implies use for operator-specific flight boards, there are many flight-related siblings (fa_get_flights, fa_search_flights, etc.) and no comparison or exclusion of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_get_scheduled_flightsARead-only
Get airline-scheduled flights between two dates (YYYY-MM-DD), optionally filtered by origin, destination, airline, or flight number.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque paging cursor from a previous response's links.next | |
| origin | No | Filter by origin airport code | |
| airline | No | Filter by operator (airline) code | |
| date_end | Yes | End date, YYYY-MM-DD | |
| max_pages | No | Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page. | |
| date_start | Yes | Start date, YYYY-MM-DD | |
| destination | No | Filter by destination airport code | |
| flight_number | No | Filter by flight number | |
| include_codeshares | No | Include codeshare duplicates |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and open world behavior. The description adds date range and filter context, but does not mention pagination behavior, cost implications (capped pages), or data freshness, slightly beyond annotations.
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?
Single clear sentence with no superfluous words, effectively front-loaded with key action and scope.
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 tool with 9 parameters and no output schema, the description lacks details on pagination (cursor, max_pages), return structure, or usage prerequisites, leaving significant gaps for proper 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 coverage is 100%, so parameters are well documented in the schema. The description adds no new parameter semantics beyond listing some filter fields, meeting baseline expectations.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it retrieves airline-scheduled flights between two dates with optional filters, using specific verb 'Get' and resource 'scheduled flights', and distinguishes from many sibling tools that handle other flight data like tracks or history.
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 implies usage for scheduled flight lookups in a date range, but does not explicitly differentiate from similar tools like fa_get_flights or fa_search_flights, nor provides 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.
fa_healthcheckVerify credentials and upstream reachabilityARead-onlyIdempotent
Resolves the credential the way real tools do, then makes one authenticated request to aeroapi.flightaware.com. Reports which source supplied the credential, whether aeroapi.flightaware.com accepted it, the round-trip time, and a plain-English hint distinguishing 'no credential' from 'credential rejected' from 'a aeroapi.flightaware.com-side problem'. Call this when a real tool fails and you want to know which hop broke. Read-only; never returns the credential itself.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true. The description adds valuable behavioral context: it resolves credentials the same way real tools do, makes exactly one authenticated request, and reports source, acceptance, round-trip time, and a plain-English hint distinguishing failure modes. It also explicitly states 'never returns the credential itself', which is a safety-relevant behavioral trait beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph but well structured: it starts with the core action, then enumerates outputs, then gives the usage trigger, and ends with a read-only and security note. Every sentence earns its place, no fluff, and the essential information is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter diagnostic tool, the description fully covers what the tool does, what it reports, when to use it, and confirms its safety (read-only, no credential leak). No output schema exists, but the description explicitly lists the output elements (source, acceptance, RTT, hint). 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 tool has zero parameters, and schema coverage is 100% (vacuously). The description adds meaning by clarifying that no parameters are needed and that the tool works autonomously. This is a baseline of 4 for 0 params, and the description indeed confirms the parameterless nature without relying on 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?
The description uses a specific verb 'Resolves' and 'makes one authenticated request', clearly identifying the resource (aeroapi.flightaware.com) and the overall purpose (credential and reachability verification). It distinguishes itself from sibling tools which are all flight/airport data operations. The title 'Verify credentials and upstream reachability' accurately summarizes the purpose.
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 states 'Call this when a real tool fails and you want to know which hop broke.' This provides a clear scenario for usage and differentiates from other tools that fetch flight data. No alternative tool is needed, but the guidance is direct. It also mentions what it does not do ('never returns the credential itself'), helping avoid misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_list_airportsARead-only
List airports known to AeroAPI (paged). Use the cursor to page through.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque paging cursor from a previous response's links.next | |
| max_pages | No | Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint and openWorldHint. Description adds the paging behavior and cursor usage, but does not reveal additional behavioral traits such as rate limits, data freshness, or response structure. This is adequate given the simple read-only nature.
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 short sentences, front-loaded with purpose. Every word is functional with no redundancy. Excellent conciseness.
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?
Description covers the core purpose and paging, but omits what data is returned (e.g., airport codes, names) since no output schema exists. For a simple list tool, this is minimally adequate but could be improved with a brief note on response content.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with detailed descriptions for both cursor and max_pages (including billing context). The description only adds 'Use the cursor to page through', which does not surpass the schema's own semantics. 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?
Description clearly states 'List airports known to AeroAPI' with verb 'List' and specific resource 'airports'. It distinguishes from sibling fa_get_airport by implying a collection rather than a single item. The mention of paging clarifies the scope.
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?
Description lacks explicit guidance on when to use this tool vs alternatives like fa_get_airport (for single airport). It only provides paging instructions ('Use the cursor to page through'), but no context on selection criteria or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_list_alertsARead-only
List the flight alerts configured on your AeroAPI account. Requires a Standard or Premium AeroAPI tier (the free Personal tier returns 401).
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque paging cursor from a previous response's links.next | |
| max_pages | No | Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses tier dependency and implied read-only nature. Annotations already indicate readOnlyHint and openWorldHint. No contradictions, and adds value beyond annotations.
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?
Single sentence, no wasted words. Essential information is front-loaded and clear.
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?
Adequate for a simple list tool with good schema coverage. Missing details about empty results or response format, but not critical given the lack of output schema.
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 description adds no extra meaning. Baseline 3 is appropriate; the description does not elaborate on parameter formats or defaults beyond what schema 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?
Clearly states it lists flight alerts configured on the account. The verb 'list' and resource 'flight alerts' are specific. Distinguished from sibling tools like fa_create_alert and fa_get_alert.
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?
Specifies tier requirements (Standard or Premium) and that free tier returns 401. Provides clear usage context, though it does not explicitly contrast with other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_list_operatorsARead-only
List operators (airlines) known to AeroAPI (paged). Use the cursor to page through.
| Name | Required | Description | Default |
|---|---|---|---|
| cursor | No | Opaque paging cursor from a previous response's links.next | |
| max_pages | No | Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, indicating safe, read-only behavior. The description adds paging context but no additional behavioral disclosures beyond what annotations provide.
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?
Extremely concise: two short sentences that directly convey the tool's purpose and key usage (paging with cursor). No wasted words.
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 list tool with two optional parameters and no required fields, the description is adequate. It mentions paging but does not specify the return format; however, given the lack of output schema, this is acceptable.
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?
Input schema has 100% description coverage: both 'cursor' and 'max_pages' are well-documented in the schema. The tool description does not add extra semantic value 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?
The description clearly states it lists operators (airlines) known to AeroAPI, with paging support. It distinguishes itself from sibling tools like fa_get_operator (single operator) and fa_get_operator_flights (flights for an operator).
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 guidance on paging (cursor usage) and indicates the tool is for listing all operators. While it doesn't explicitly exclude other contexts, the purpose is clear enough for an agent to decide when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_resolve_airportARead-only
Resolve an airport code to its canonical AeroAPI identifier (and equivalents). NOTE: requires a Standard or Premium AeroAPI tier — the free Personal tier returns 401.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Airport code (ICAO/IATA/LID) to canonicalize | |
| id_type | No | Disambiguate how `id` is interpreted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint and openWorldHint. The description adds behavior about the free tier returning 401, which is beyond annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action, and the note is concise. No wasted words.
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?
Without an output schema, the description hints at return values but does not fully describe the response. The tier requirement is included, but more detail on output would improve completeness for this simple tool.
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 description adds minor context (e.g., output includes equivalents). This is sufficient but not exceptional 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?
The description clearly states the verb 'resolve' and the resource 'airport code to canonical AeroAPI identifier', distinguishing it from sibling tools like fa_get_airport or fa_list_airports.
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 notes the AeroAPI tier requirement (Standard or Premium), informing when to use and when not. It does not mention specific alternatives among siblings, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_resolve_flightARead-only
Resolve a flight ident (designator/registration) to its canonical form and any alternate idents. NOTE: requires a Standard or Premium AeroAPI tier — the free Personal tier returns 401.
| Name | Required | Description | Default |
|---|---|---|---|
| ident | Yes | Flight designator or registration to canonicalize | |
| ident_type | No | Disambiguate how `ident` is interpreted |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint and openWorldHint. The description adds the tier requirement and explains the output (canonical form, alternate idents), providing useful behavioral context beyond annotations.
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 concise sentences: first states the core action and output, second gives critical usage note. No wasted words.
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 lookup tool with no output schema, the description adequately covers what it does, the output, and a key prerequisite (tier requirement). Complete and helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description reiterates the purpose of 'ident' but adds little beyond the schema. The mention of 'designator/registration' aligns with the enum but is not novel.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool resolves a flight ident to canonical form and alternate idents, which is specific and distinct from sibling tools like fa_resolve_airport.
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 notes the required AeroAPI tier (Standard/Premium) and that free tier returns 401, guiding when to use. Does not mention alternatives, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_search_flight_positionsARead-only
Search live flight POSITIONS using the structured "{operator key value}" query language (same grammar as fa_search_flights_advanced — NOT the simplified "-key value" syntax). Returns position points rather than flight summaries. Example: {match ident UAL*} {> alt 300}.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Structured "{operator key value}" query, e.g. {match ident UAL*} {> alt 300} | |
| cursor | No | Opaque paging cursor from a previous response's links.next | |
| max_pages | No | Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint and openWorldHint; description adds that returns position points rather than flight summaries, and explains paging via cursor and max_pages cap due to billing, providing additional 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?
Two concise sentences: first covers purpose and usage, second clarifies return type and gives example. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 3 parameters (1 required) and no output schema, description explains return type and paging. Missing details on position point structure, but sufficient for agent understanding.
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 baseline is 3. Description adds value by explaining the query language and example for 'query', and billing context for 'max_pages' cap, exceeding basic schema info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches flight positions using a structured query language, and distinguishes itself from the sibling tool fa_search_flights_advanced by specifying the grammar and return type.
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 explicitly describes the query language format, contrasts with the simplified syntax of another tool, and provides an example, giving clear when-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_search_flightsARead-only
Search airborne flights using AeroAPI's simplified query syntax — a single string of "-key value" pairs. Keys: -prefix -type -idents -identOrReg -airline -destination -origin -originOrDestination -aboveAltitude -belowAltitude -aboveGroundspeed -belowGroundspeed -latlong "MINLAT MINLON MAXLAT MAXLON" -filter {ga|airline}. Example: -airline UAL -belowAltitude 30000
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Simplified "-key value" search string (max 1000 bytes) | |
| cursor | No | Opaque paging cursor from a previous response's links.next | |
| max_pages | No | Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations 'readOnlyHint: true' and 'openWorldHint: true' are present. The description adds context about billing (capped at 20 pages) and query string limits (1000 bytes), going beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph that concisely explains the tool's purpose, syntax, and example. Every sentence adds value, with no unnecessary words.
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?
While there is no output schema, the description covers pagination via cursor and max_pages. It lacks details on response structure, but given the tool's simplicity and the presence of sibling tools for more detailed flight data, this is acceptable.
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 covers all parameters with descriptions (100% coverage). The description adds significant meaning by explaining the query syntax, listing valid keys, and providing an example. It also clarifies the billing implication for max_pages.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search airborne flights using AeroAPI's simplified query syntax', specifying both the resource and method. It distinguishes itself from the sibling 'fa_search_flights_advanced' by emphasizing the simplified syntax.
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 explains the query syntax and provides an example, making it clear when to use this tool for simple queries. However, it does not explicitly state when not to use it (e.g., for complex queries, use the advanced version).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_search_flights_advancedARead-only
Search flights using AeroAPI's full structured query language (more expressive than fa_search_flights). The query is a space-separated list of {operator key value} predicates, e.g. "{match ident UAL*} {> alt 300} {= dest KLAX}". Operators: true/false/null/notnull/=/!=/</>/<=/>=, match/notmatch (case-insensitive wildcards), range (two values), in/orig_or_dest/aircraftType/ident/ident_or_reg ({a b c} value lists), airline (1=airline, 0=GA). Common keys: ident, orig, dest (ICAO codes), aircraftType, alt (hundreds of ft), prefix, lifeguard, cancelled, arrived.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Structured "{operator key value}" query, e.g. {match ident UAL*} {> alt 300} | |
| cursor | No | Opaque paging cursor from a previous response's links.next | |
| max_pages | No | Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it as read-only and open-world. The description adds substantial behavioral details: query language syntax, paging via cursor and max_pages with a billing cap, and operator explanations. No contradictions.
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 dense yet efficient, covering many details in one paragraph. It could benefit from more structured formatting (e.g., bullet lists) but is still clear and concise.
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 thoroughly explains query usage and paging but omits the return format or response structure. Since there is no output schema, this gap reduces completeness for an agent needing to process results.
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%, but the description greatly enhances understanding of the complex 'query' parameter with detailed syntax, operators, keys, and an example. This adds significant value 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?
The description clearly states the tool searches flights using a structured query language, explicitly distinguishing it from fa_search_flights as more expressive. The verb 'Search' and resource 'flights' are specific, and the example solidifies the purpose.
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 indicates this tool is for advanced querying compared to fa_search_flights, providing an example and listing operators and keys. However, it lacks explicit guidance on when not to use it or detailed alternatives, slightly reducing clarity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fa_set_alerts_endpointAIdempotent
Set the delivery (webhook) endpoint AeroAPI POSTs alert notifications to. Without confirm:true this returns a dry-run preview and makes NO network call; with confirm:true it applies the change. Requires a Standard or Premium AeroAPI tier (the free Personal tier returns 401).
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | HTTPS URL AeroAPI will POST alert payloads to | |
| format | No | Delivery payload format | |
| confirm | No | Must be true to proceed. Without this, the tool returns a preview. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=false, idempotentHint=true, and openWorldHint=true. The description enriches this by detailing the dry-run vs. apply behavior, absence of network call without confirm, and auth restriction (401 on free tier). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences: the first front-loads the core action, the second adds critical behavioral details. No superfluous words. Perfectly structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description still mentions return behavior (dry-run preview). Auth requirement is covered. With idempotentHint and openWorldHint from annotations, the description provides sufficient context for an agent to use the tool 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 coverage is 100%, so baseline is 3. The description adds value by explaining the url parameter's role (AeroAPI POSTs to it) and the confirm parameter's necessity for actual change. The format parameter's options are covered by the schema, but description adds context on delivery payload format. Marginal but useful enhancement.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sets the webhook endpoint for alert notifications, distinguishing it from siblings like fa_get_alerts_endpoint (retrieves) and fa_create_alert (creates alerts). The verb 'set' and resource 'delivery endpoint' are specific and 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 explains the dry-run behavior without confirm:true (returns preview, no network call) and the requirement of confirm:true to apply the change. It also notes the tier requirement (Standard/Premium, free Personal returns 401). This provides 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.
fa_update_alertAIdempotent
Update an existing flight alert (replaces its configuration). Without confirm:true this returns a dry-run preview and makes NO network call; with confirm:true it applies the update. Requires a Standard or Premium AeroAPI tier (the free Personal tier returns 401).
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Alert id to update | |
| eta | No | Notify on ETA changes | |
| hold | No | Notify on hold | |
| filed | No | Notify when a flight plan is filed | |
| ident | No | Flight ident / designator to watch (e.g. UAL123) | |
| origin | No | Origin airport code filter | |
| arrival | No | Notify on arrival | |
| confirm | No | Must be true to proceed. Without this, the tool returns a preview. | |
| diverted | No | Notify on diversion | |
| end_date | No | ISO-8601 date the alert expires | |
| cancelled | No | Notify on cancellation | |
| departure | No | Notify on departure | |
| max_weekly | No | Cap on notifications per week | |
| start_date | No | ISO-8601 date the alert becomes active | |
| destination | No | Destination airport code filter | |
| aircraft_type | No | ICAO aircraft type filter (e.g. B738) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false, idempotentHint=true, openWorldHint=true. The description adds transparency by explaining that the tool replaces the entire configuration, requires confirm to execute (otherwise dry-run), and requires a paid tier. No contradiction with annotations.
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 two sentences with no wasted words. It front-loads the main purpose and then adds crucial usage details (confirm, tier). Every sentence provides necessary information.
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?
With 16 parameters (all described in schema) and no output schema, the description covers the essential behavioral context (dry-run, auth). It does not describe the return value, but given the schema richness, it is largely complete.
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 has 100% description coverage for all 16 parameters. The description adds value by explaining the confirm parameter's role (dry-run vs. apply) and that the update replaces the configuration. This clarifies the semantics 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?
The description clearly states 'Update an existing flight alert (replaces its configuration).' The verb 'update' and resource 'flight alert' are specific. This distinguishes it from sibling tools like fa_create_alert and fa_delete_alert.
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 explains the dry-run behavior when confirm:true is absent and the actual update when present. It also mentions the required AeroAPI tier (Standard or Premium, not free Personal). It does not explicitly contrast with alternatives, but the context is clear.
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. Dates show when Glama detected each change.
1 tool update
v0.4.0- Added
fa_healthcheck
16 tool updates
v0.3.2- Changed
fa_foresight_search2 fields changed- changed
Input schema / properties / max_pages / descriptionPrevious value: -"Max pages to fetch (AeroAPI default: 1)"New value: +"Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page." - changed
Input schema / properties / max_pages / maximumPrevious value: -9007199254740991New value: +20
- Changed
fa_get_airport_delays2 fields changed- changed
Input schema / properties / max_pages / descriptionPrevious value: -"Max pages to fetch (AeroAPI default: 1)"New value: +"Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page." - changed
Input schema / properties / max_pages / maximumPrevious value: -9007199254740991New value: +20
- Changed
fa_get_airport_flights2 fields changed- changed
Input schema / properties / max_pages / descriptionPrevious value: -"Max pages to fetch (AeroAPI default: 1)"New value: +"Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page." - changed
Input schema / properties / max_pages / maximumPrevious value: -9007199254740991New value: +20
- Changed
fa_get_airport_routes2 fields changed- changed
Input schema / properties / max_pages / descriptionPrevious value: -"Max pages to fetch (AeroAPI default: 1)"New value: +"Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page." - changed
Input schema / properties / max_pages / maximumPrevious value: -9007199254740991New value: +20
- Changed
fa_get_airport_weather2 fields changed- changed
Input schema / properties / max_pages / descriptionPrevious value: -"Max pages to fetch (AeroAPI default: 1)"New value: +"Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page." - changed
Input schema / properties / max_pages / maximumPrevious value: -9007199254740991New value: +20
- Changed
fa_get_flight_history2 fields changed- changed
Input schema / properties / max_pages / descriptionPrevious value: -"Max pages to fetch (AeroAPI default: 1)"New value: +"Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page." - changed
Input schema / properties / max_pages / maximumPrevious value: -9007199254740991New value: +20
- Changed
fa_get_flights2 fields changed- changed
Input schema / properties / max_pages / descriptionPrevious value: -"Max pages to fetch (AeroAPI default: 1)"New value: +"Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page." - changed
Input schema / properties / max_pages / maximumPrevious value: -9007199254740991New value: +20
- Changed
fa_get_nearby_airports2 fields changed- changed
Input schema / properties / max_pages / descriptionPrevious value: -"Max pages to fetch (AeroAPI default: 1)"New value: +"Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page." - changed
Input schema / properties / max_pages / maximumPrevious value: -9007199254740991New value: +20
- Changed
fa_get_operator_flights2 fields changed- changed
Input schema / properties / max_pages / descriptionPrevious value: -"Max pages to fetch (AeroAPI default: 1)"New value: +"Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page." - changed
Input schema / properties / max_pages / maximumPrevious value: -9007199254740991New value: +20
- Changed
fa_get_scheduled_flights2 fields changed- changed
Input schema / properties / max_pages / descriptionPrevious value: -"Max pages to fetch (AeroAPI default: 1)"New value: +"Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page." - changed
Input schema / properties / max_pages / maximumPrevious value: -9007199254740991New value: +20
- Changed
fa_list_airports2 fields changed- changed
Input schema / properties / max_pages / descriptionPrevious value: -"Max pages to fetch (AeroAPI default: 1)"New value: +"Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page." - changed
Input schema / properties / max_pages / maximumPrevious value: -9007199254740991New value: +20
- Changed
fa_list_alerts2 fields changed- changed
Input schema / properties / max_pages / descriptionPrevious value: -"Max pages to fetch (AeroAPI default: 1)"New value: +"Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page." - changed
Input schema / properties / max_pages / maximumPrevious value: -9007199254740991New value: +20
- Changed
fa_list_operators2 fields changed- changed
Input schema / properties / max_pages / descriptionPrevious value: -"Max pages to fetch (AeroAPI default: 1)"New value: +"Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page." - changed
Input schema / properties / max_pages / maximumPrevious value: -9007199254740991New value: +20
- Changed
fa_search_flight_positions2 fields changed- changed
Input schema / properties / max_pages / descriptionPrevious value: -"Max pages to fetch (AeroAPI default: 1)"New value: +"Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page." - changed
Input schema / properties / max_pages / maximumPrevious value: -9007199254740991New value: +20
- Changed
fa_search_flights2 fields changed- changed
Input schema / properties / max_pages / descriptionPrevious value: -"Max pages to fetch (AeroAPI default: 1)"New value: +"Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page." - changed
Input schema / properties / max_pages / maximumPrevious value: -9007199254740991New value: +20
- Changed
fa_search_flights_advanced2 fields changed- changed
Input schema / properties / max_pages / descriptionPrevious value: -"Max pages to fetch (AeroAPI default: 1)"New value: +"Max pages to fetch, 1-20 (AeroAPI default: 1). Capped at 20 since AeroAPI bills per page." - changed
Input schema / properties / max_pages / maximumPrevious value: -9007199254740991New value: +20
7 tool updates
v0.2.0- Added
fa_count_flights - Added
fa_get_airport_flight_counts - Added
fa_get_airport_routes - Added
fa_resolve_airport - Added
fa_resolve_flight - Added
fa_search_flight_positions - Changed
fa_search_flights_advanced1 field changed- changed
Input schema / properties / query / descriptionPrevious value: -"Boolean query expression"New value: +"Structured \"{operator key value}\" query, e.g. {match ident UAL*} {> alt 300}"
27 tool updates
v0.1.0- First observed
fa_create_alert - First observed
fa_delete_alert - First observed
fa_foresight_search - First observed
fa_get_aircraft_owner - First observed
fa_get_airport - First observed
fa_get_airport_delays - First observed
fa_get_airport_flights - First observed
fa_get_airport_weather - First observed
fa_get_alert - First observed
fa_get_alerts_endpoint - First observed
fa_get_flight_history - First observed
fa_get_flight_map - First observed
fa_get_flight_position - First observed
fa_get_flight_route - First observed
fa_get_flight_track - First observed
fa_get_flights - First observed
fa_get_nearby_airports - First observed
fa_get_operator - First observed
fa_get_operator_flights - First observed
fa_get_scheduled_flights - First observed
fa_list_airports - First observed
fa_list_alerts - First observed
fa_list_operators - First observed
fa_search_flights - First observed
fa_search_flights_advanced - First observed
fa_set_alerts_endpoint - First observed
fa_update_alert
TDQS
Every tool targets a distinct resource and action, with clear prefixes (fa_<resource>_<action>) and descriptions that differentiate similar-sounding tools like the three search variants.
The vast majority follow a consistent verb_noun pattern in snake_case, but a few like fa_foresight_search (noun_verb) and fa_search_flights_advanced (adjective suffix) deviate slightly.
33 tools is on the higher side but justified by the breadth of the flight tracking domain; each tool serves a specific purpose without significant redundancy.
The tool surface comprehensively covers flight tracking: search, current/historical flights, tracks, routes, maps, airports, operators, alerts, and ancillary features like aircraft ownership and scheduled flights.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Flight search MCP server providing search, pagination, and itinerary details for AI assistants.
Geo-based flight search MCP server. Find more flights between any two places on earth
Flights MCP — wraps OpenSky Network API (free, no auth required)
Hosted MCP server for Xweather weather data: conditions, forecasts, alerts, and more.
1
Related MCP Servers
- AlicenseBqualityBmaintenanceA Claude Desktop MCP server that helps you track flights in real-time using Flightradar24 data. Perfect for aviation enthusiasts, travel planners, or anyone curious about flights overhead!22247MIT
- AlicenseCqualityDmaintenanceA Model Context Protocol (MCP) server that provides real-time flight tracking and status information using the AviationStack API.34,8607MIT
- AlicenseNot gradedqualityCmaintenanceProvides comprehensive flight tracking capabilities using the OpenSky Network API, enabling real-time flight data, geographic searches, historical data, and airport operations through MCP tools.MIT
- FlicenseNot gradedqualityDmaintenanceMCP server for flight schedule finding via Skyscanner API. Enables querying flight quotes and schedules using natural language.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/chrischall/flightaware-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server