Late-arriving aircraft cause 43% of all SFO departure delay minutes, but no departure board tells you where your aircraft is coming from. BTS on-time data carries a tail number per leg, so the rotation can be reconstructed offline.
One tool layer, two execution paths. In MCP mode the chat route hands Anthropic the URL of our own /api/mcp endpoint; Anthropic connects to it and runs the entire tool loop server-side, so there is no loop code in the request path. In local mode the same definitions are passed as ordinary tools and executed in-process. Append ?tools=local or ?tools=mcp to compare them. Any other MCP client can call the same endpoint.
Every number the agent reports is computed in lib/baserates.ts. The model resolves messy phrasing, decides which tools to call, and explains the result — it never does the statistics. Nothing in the hot path requires heavy reasoning, so a small model is sufficient.
Adjustments compose as odds ratios, so they are multiplicative and order-independent, and each one is returned with its own sample size and plain-language explanation. The breakdown shown under each answer lists them.
resolve_airportcity name → IATAget_route_historyfull record for one destinationlist_inbound_originsrotation risk by inbound originget_sfo_conditionslive ceiling, TAF, FAA programsget_destination_weatherconditions at the far endassess_departure_riskthe main computationlookup_flight_rotationone flight number's own aircraft rotationcompare_departure_optionsrank days and hoursget_sfo_delay_contexthourly profile + propagation curveBase rates: US DOT BTS Reporting Carrier On-Time Performance (public domain), 2025-06 to 2026-05. Live conditions: aviationweather.gov and the FAA NAS status feed.