Aero reference stack — FastMCP flight (FlightAware AeroAPI) + BigQuery tools, LangGraph / Ollama friendly
Server has 7 tools with mostly complete schemas and descriptions. Naming follows verb_noun pattern (get_, list_). Descriptions are present and reasonably detailed (100-300 chars typical). However, several parameters lack descriptions or have minimal guidance. Output schemas are not explicitly documented. Error handling is minimal, no recovery guidance or actionable error messages visible in tool definitions. Tool composition is sound (single responsibility), but parameter validation rules and constraints are underspecified.
Flights that have recently arrived: GET /airports/{id}/flights/arrivals (ordered by actual_on descending; default window last 24h per AeroAPI). Same optional filters as the combined board endpoint.
Flights that have recently departed (not diverted): GET /airports/{id}/flights/departures (ordered by actual_off descending; optional start/end compare to actual_off). Same optional filters as the combined board endpoint.
Summary counts by status: GET /airports/{id}/flights/counts (departed, enroute, scheduled_arrivals, scheduled_departures — see AeroAPI docs for semantics). No query parameters; path id only. Prefer ICAO for airport_id.
All recent and upcoming flights at an airport: GET /airports/{id}/flights. Returns arrivals, departures, scheduled_arrivals, scheduled_departures, links, num_pages. Optional: airline (e.g. UAL) XOR category (Airline | General_Aviation); start/end ISO8601; max_pages 1–50; cursor for pagination. Prefer ICAO for airport_id.
Look up one airport by code (matches airport_code, code_iata, or code_icao, case-insensitive).
Output schemas not documented. Tools return complex objects (arrivals, departures, links, num_pages) but no schema definition visible for LLM to plan downstream calls or extract fields.
Parameter descriptions lack constraint details. 'max_pages' accepts 1-50 but description does not state range. 'airport_code' accepts max 32 chars but constraint is buried in description text, not formalized. LLMs cannot reliably parse informal constraints.
No error handling guidance. Tools do not document what happens on invalid airport_id, network timeout, or API rate limit. LLM has no recovery path if a call fails.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | <=2025-11-25 | v2 |
~200 chars of static ICAO/name hints for demos (not the catalog). Call with no arguments. For real rows use get_demo_airport.
List rows from the demo airports table (AeroAPI-style catalog).
Pagination not fully specified. 'cursor' parameter exists but no documentation of cursor format, how to detect end-of-results, or whether cursor is opaque. LLM cannot reliably paginate.
Mutually exclusive parameters not documented. 'airline' XOR 'category', description mentions this but does not state what happens if both are provided. LLM may pass both, causing ambiguous behavior.