MCP Server exposing the FlightAware AeroAPI via the Model Context Protocol.
Three tools with clear action verbs and basic schemas. All tools have descriptions (10-194 chars) and input parameters with type and description. However, output schemas are undocumented, LLMs cannot predict response structure. Parameter descriptions lack format constraints (e.g., flight number format, registration pattern). No error handling guidance. Missing idempotency hints for read-only operations. Tool composition is sound (each does one thing), but descriptions could be more LLM-optimized per the 50-200 char baseline.
Return useful links for a given Aircraft Registration
Return an ICAO Flight Number from an IATA or ICAO Flight Number, ex: AS602 → ASA602 or ASA602 → ASA602
Returns a list of flights for a given ICAO or IATA Flight Number from the FlightAware API.
Output schemas undocumented. LLMs cannot predict response structure (fields, types, pagination). search_flights returns JSON but no schema visible; iata_to_icao returns string or error but structure unclear; aircraft_data_links returns links but format unknown.
Parameter descriptions lack format constraints. 'ICAO or IATA Flight Number' example given but no regex/pattern. 'Aircraft Registration Number' example given but no validation rules. LLMs cannot infer valid formats and may pass invalid values.
No error handling guidance. search_flights checks for 'status' field and logs errors, but LLM receives raw JSON with no recovery hint. iata_to_icao returns 'Unable to convert' but no guidance on what to try next (e.g., 'Try search_flights with the original number').
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Tool descriptions do not declare read-only semantics. All three tools are safe to retry (no side effects), but descriptions lack explicit idempotency hints. LLMs may hesitate to retry on transient failures.
search_flights may return large result sets (all flights matching an ident). No pagination parameters (limit, offset, cursor) visible. Description does not state result limit. Large responses waste tokens and risk context window exhaustion.