faa-traffic-delays-mcp-server
Server Details
Track FAA ground stops, delay programs, airport delays, the operations plan, and ATCSCC advisories.
- Status
- Healthy
- Uptime
- 99.8% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cyanheads/faa-traffic-delays-mcp-server
- GitHub Stars
- 1
- Server Listing
- faa-traffic-delays-mcp-server
TDQS
Scored across 6 tools
Each tool targets a distinct resource and granularity: single advisory text (get_advisory) vs date-indexed advisory list (list_advisories), national event list (list_active_events) vs one-airport detail (get_airport_status), plus the operations plan and a vocabulary decoder. Descriptions explicitly cross-reference each other to clarify boundaries (e.g. 'Use faa_delays_get_airport_status for the full detail of one airport'), leaving no real misselection risk.
All six tools follow an identical faa_delays_<verb>_<noun> pattern with clean snake_case (get_advisory, get_airport_status, get_operations_plan, list_active_events, list_advisories, list_reference). Verbatim consistency across the entire set.
Six tools is well-scoped for a read-only FAA data domain, with three getters and three listers each earning a distinct place. Nothing feels padded or thin.
The surface covers the full lifecycle of the read-only domain: national events, per-airport status, advisories, operations plans, plus a reference decoder. Minor possible gaps (e.g. historical/archived event queries beyond per-date advisories) are workable around, and create/update operations are appropriately absent for this data source.
Available Tools
6 toolsfaa_delays_get_advisoryGet ATCSCC AdvisoryARead-onlyIdempotentInspect
Get the full text of one ATCSCC advisory by its number and UTC date. faa_delays_list_advisories lists the advisories issued on a date with their numbers, and the advisory reference that faa_delays_list_active_events and faa_delays_get_airport_status return on program rows and faa_delays_get_operations_plan returns for the plan names one directly. Advisory text carries what the status feed omits: program rate by hour, delay assignment mode, scope, comments, and the operations plan's active constraints and runway closures. Advisory numbers restart at 1 each UTC day, and older advisories remain available.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | UTC date the advisory was issued, YYYY-MM-DD: date from the same faa_delays_list_advisories row or advisory reference. MM/DD/YYYY, as advisory titles print it, and M/D/YYYY are also accepted. | |
| advisory_number | Yes | ATCSCC advisory number, 1–999: number from a faa_delays_list_advisories row, or advisory.number from an advisory reference on faa_delays_list_active_events, faa_delays_get_airport_status, or faa_delays_get_operations_plan. The printed forms "ADVZY 082" and "082" are also accepted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The character ceiling applied; present only when the text was cut. |
| url | No | Server-built advisory URL this tool read; it also opens in a browser. |
| date | No | The advisory UTC date read, YYYY-MM-DD. |
| text | No | Full advisory text (FAA-authored), cut at 50,000 characters when longer; truncated then reports the cut. |
| error | No | Present when the call failed. Absent on success. |
| found | No | Whether the FAA advisories database holds this advisory number on this UTC date. |
| shown | No | Characters of advisory text returned; present only when the text was cut. |
| title | No | Advisory title line as the FAA prints it (FAA-authored), e.g. ATCSCC ADVZY 082 DCC 09/29/2026 OPERATIONS PLAN. |
| notice | No | Guidance on a cut advisory text; present only when the text was cut. |
| sentAt | No | When the advisory was signed, as the FAA prints it: YY/MM/DD HH:MM in UTC. |
| subject | No | Advisory subject parsed from the title (CDM GROUND DELAY PROGRAM, OPERATIONS PLAN); absent when the title has another form. |
| guidance | No | Present when found is false: where to get a valid advisory number and date. |
| truncated | No | True when the advisory text was cut at the 50,000-character ceiling; absent otherwise. |
| totalChars | No | Full length of the advisory text in characters; present only when the text was cut. |
| effectiveTime | No | Effective period as the FAA prints it, DDHHMM-DDHHMM in UTC. |
| advisoryNumber | No | The advisory number read. |
| controlElement | No | Airport/ARTCC pair or facility the advisory concerns, parsed from the title (SEA/ZSE, DCC); absent when the title has another form. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, idempotent, openWorld), so the description's job is to add beyond them — and it does: advisory numbers restart at 1 each UTC day (a real keying pitfall), older advisories remain available, and the payload contains program rate by hour, delay assignment mode, scope, comments, and plan constraints/runway closures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core action, then sourcing, then what the returned text adds. No filler; every clause carries routing or content 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 an output schema present, return-value detail is unnecessary, and for a 2-param read tool the description fully covers invocation: input provenance, numbering/date semantics, data retention, and value over the status endpoints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already documents accepted alternate formats (MM/DD/YYYY, 'ADVZY 082', '082'). The description adds only the pairing 'by its number and UTC date', so the schema does the heavy lifting and the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with its identifying keys: 'Get the full text of one ATCSCC advisory by its number and UTC date.' It is immediately distinguishable from the list/status siblings it names, so an agent can route correctly without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says where the required inputs come from (rows from faa_delays_list_advisories; advisory references returned by list_active_events, get_airport_status, and get_operations_plan) and when this tool is needed over the status feeds ('what the status feed omits'). That is when-to-use plus alternatives, with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faa_delays_get_airport_statusGet FAA Airport StatusARead-onlyIdempotentInspect
Get the current FAA traffic management status for one or more US airports: a headline status, every active event (ground stop, Ground Delay Program with its delay profile, arrival or departure delay, closure, deicing) with reason and times, and the runway configuration and airport arrival rate. Every row carries the airport's ARTCC, and its coordinates come from the feed when the airport is listed (absent when the feed omits them) and from the NASR directory otherwise; both place a departure airport against a program's includedFacilities and departureScopeNm. Airports are FAA 3-character identifiers (SEA, ORD, JFK) or their ICAO codes (KSEA, PHNL); a code that names no US airport is rejected. The FAA feed lists only airports with an active event, so a known airport absent from it returns status no_active_events, and runway configuration is available only for listed airports.
| Name | Required | Description | Default |
|---|---|---|---|
| airports | Yes | 1–100 submitted US airport codes, each a 3-character FAA location identifier (SEA, ORD, 0S9) or its ICAO code (KSEA, PHNL, TJSJ), case-insensitive; a comma-separated string is also accepted. Validates every code, deduplicates FAA/ICAO equivalents, and processes the first 25 distinct airports with the canonical remainder returned as omittedAirports. City and airport names are not accepted. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Maximum distinct airports processed: 25. |
| error | No | Present when the call failed. Absent on success. |
| notice | No | Guidance on quiet results, stale delay entries, or partial data. |
| airports | No | One row per processed airport, in first-seen request order, up to 25 distinct FAA identifiers. |
| fetchedAt | No | When this server fetched the snapshot from the FAA (UTC ISO); with the 60 s cache it can trail the call by up to a minute. |
| processedCount | No | Distinct airports processed in this response. |
| omittedAirports | No | Canonical FAA identifiers left after the first 25 distinct airports, in first-seen order; empty when all were processed. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/openWorld/idempotent, and the description adds substantial behavior beyond them: coordinate provenance (feed vs. NASR directory fallback), ARTCC on every row, inclusion of includedFacilities/departureScopeNm semantics, rejection of unknown codes, and the fact that runway configuration exists only for feed-listed airports. This is rich, non-redundant 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?
It is front-loaded: purpose first, then per-airport specifics, then identifier rules, then feed limitations. Every sentence carries operational weight for an agent deciding whether and how to call the tool.
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 annotations covering the safety profile and an output schema present, the description still supplies the missing context an agent needs - code validation/rejection, the no_active_events outcome, and the coordinate-source fallback. Nothing required to call it correctly is absent.
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% and the schema already documents accepted formats, trimming/uppercasing, dedup of FAA/ICAO equivalents, and the 25-airport processing cap. The description restates the code formats and rejection rule without adding new parameter-level meaning, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Get the current FAA traffic management status for one or more US airports') and enumerates exactly what the response contains (headline status, active events, runway config, arrival rate). An agent can immediately distinguish this from the sibling list/advisory tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly frames when this tool applies (per-airport status including events and runway config) and gives decisive edge-case behavior: unknown non-US codes are rejected and known airports absent from the feed return no_active_events. It does not, however, explicitly contrast with siblings like faa_delays_list_active_events, so the routing guidance stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faa_delays_get_operations_planGet FAA Operations PlanARead-onlyIdempotentInspect
Get the FAA Command Center's current operations plan: terminal programs (possible ground stops and delay programs by airport) and en-route initiatives (route closures, severe-weather avoidance plans) expected later in the day, each with its planned UTC time and stated likelihood, plus current ATCSCC announcements. The advisory reference opens the full plan text with faa_delays_get_advisory, including active constraints and runway closures this summary omits.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| notice | No | Guidance on an empty plan, a missing advisory link, or partial data. |
| advisory | No | Reference to the ATCSCC advisory behind this item, absent when the FAA feed links none. For the full text, call faa_delays_get_advisory with number as advisory_number and date as date. |
| fetchedAt | No | When this server fetched the operations plan from the FAA (UTC ISO); with the 60 s cache it can trail the call by up to a minute. |
| announcements | No | Current ATCSCC announcements; [] when there are none, absent when that FAA list could not be read. |
| enRoutePlanned | No | En-route initiatives the FAA expects later today: route closures, severe-weather avoidance plans (SWAP), and coded departure routes (CDRs), in plan order. |
| terminalPlanned | No | Terminal programs the FAA expects later today: possible ground stops and delay programs by airport, in plan order. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds genuinely useful behavioral context beyond that: this is a forward-looking summary ('expected later in the day') and it explicitly discloses that it omits active constraints and runway closures available elsewhere.
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 what is returned and followed by the escalation path to the advisory. The first sentence is a dense run-on list, but each item earns its place by telling the agent what fields to expect.
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?
An output schema exists, so return-value documentation is not strictly required, yet the description still scopes the response (summary vs. full advisory text). Combined with the annotations, an agent has enough to call this correctly; the only shortfall is absent guidance against the other four siblings.
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 takes zero parameters, so the baseline of 4 applies. The description correctly implies a no-argument call by describing a global snapshot rather than anything filterable, and adds no misleading parameter 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?
States a specific verb and resource ('Get the FAA Command Center's current operations plan') and enumerates the contents: terminal programs, en-route initiatives, UTC times, likelihood, and ATCSCC announcements. It explicitly distinguishes itself from faa_delays_get_advisory by describing itself as a summary that the advisory expands upon.
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?
Names the alternative sibling (faa_delays_get_advisory) and the condition that selects it: when the full plan text, active constraints, or runway closures are needed rather than this summary. It gives no guidance versus the other siblings (get_airport_status, list_advisories), so routing is clear but incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faa_delays_list_active_eventsList Active FAA Delay EventsARead-onlyIdempotentInspect
List every active FAA traffic management event across the National Airspace System in one call: ground stops, Ground Delay Programs, Airspace Flow Programs, arrival and departure delays, airport closures, closure NOTAMs, and deicing. Rows are sorted by severity (closures, ground stops, then GDPs and then AFPs each by average delay, arrival/departure delays by band maximum, closure NOTAMs, deicing) and carry the reason, delay figures, times, and an advisory reference for faa_delays_get_advisory. Use faa_delays_get_airport_status for the full detail of one airport, including its GDP delay profile and runway configuration.
| Name | Required | Description | Default |
|---|---|---|---|
| event_types | No | Only these event types: ground_stop, ground_delay_program, airspace_flow_program, arrival_delay, departure_delay, airport_closure, closure_notam, deicing. Also accepts gs, gdp, afp, spelled-out names such as "departure delay", and a comma-separated string; case-insensitive. Omit for every type. countsByType always covers the whole feed. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| shown | No | Events returned after the event_types filter. |
| events | No | Active events matching event_types, sorted by severity. |
| notice | No | Guidance on empty or partial results, stale delay entries, and how to get the missing data. |
| fetchedAt | No | When this server fetched the airport events from the FAA (UTC ISO); with the 60 s cache it can trail the call by up to a minute. |
| enRouteFeed | No | Whether Airspace Flow Programs were read: ok, unavailable (the en-route feed failed), or format_changed (it returned a format this server does not read). |
| totalActive | No | Every active event read, before the event_types filter; excludes AFPs when the en-route feed could not be read. |
| countsByType | No | Active events per type across the whole feed, counted before the event_types filter so types the filter excluded stay visible. airspace_flow_program is absent when the en-route feed could not be read. |
| appliedEventTypes | No | The event_types filter as the server normalized it, or every type when omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description goes beyond that by disclosing the exact sort order (closures, ground stops, GDPs and AFPs by average delay, delays by band maximum, NOTAMs, deicing) and the payload each row carries (reason, delay figures, times, advisory reference), which materially shapes how an agent reads the result. It says nothing about rate limits or freshness/caching of the feed.
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, with the scope-and-content statement front-loaded ahead of the sibling routing. The long parenthetical sort-order enumeration is dense but does real work for result interpretation; there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it still covers scope, ordering and onward navigation. Schema coverage, annotations and output schema together leave no gap an agent needs to call this 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 single optional event_types parameter is fully documented there, including aliases, comma-separated strings, case-insensitivity, and the note that countsByType always covers the whole feed. The prose adds no additional meaning about the filter, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with explicit scope ("every active FAA traffic management event across the National Airspace System") and enumerates the eight event classes it returns. It is unmistakably distinct from siblings that fetch a single airport, an advisory, or the operations plan.
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?
Names the alternative for a concrete case: "Use faa_delays_get_airport_status for the full detail of one airport, including its GDP delay profile and runway configuration." It also routes the agent onward to faa_delays_get_advisory via the advisory reference carried in each row, so the when-to-use-this-vs-that decision is spelled out rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faa_delays_list_advisoriesList ATCSCC AdvisoriesARead-onlyIdempotentInspect
List the ATCSCC advisories issued on one UTC date, newest first, from the FAA advisories database's per-date index: ground stops and delay programs as issued, proposed, revised, and canceled, required reroutes, flow constrained areas, operations plans, and CDM compression advisories, including those no longer active and those on past dates, which the NAS Status feed does not carry. Each row gives the advisory number, control element, subject, any further title lines (a reroute's name, constrained area, and valid period), and send time; its number and date open the full text with faa_delays_get_advisory. Narrow by categories, control_element (an airport, its ICAO code, an ARTCC, or DCC for national advisories), or query (literal case-insensitive subject/details text, such as an FCA name); filters combine before limit and offset paging.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | UTC date to list, YYYY-MM-DD; MM/DD/YYYY and M/D/YYYY are also accepted. Omit for today (UTC). No later than tomorrow (UTC); past dates remain available. | |
| limit | No | Advisories per page, 1–200. | |
| query | No | Literal case-insensitive substring of subject or any details line, such as FCA005; combined with categories and control_element before paging. Omit to match every title. | |
| offset | No | Matching advisories to skip, for paging: nextOffset from the previous page. | |
| categories | No | Only advisories the FAA files under these categories: ground_stop, ground_delay_program, airspace_flow_program, ctop, route, other (flow constrained areas and operations plans file under other). Also accepts gs, gdp, afp, spelled-out names such as "ground stop", and a comma-separated string; case-insensitive. Omit for every advisory, including CDM compression advisories, which the FAA files under no category. | |
| control_element | No | Only advisories whose control element is this facility or lists it as a part: an airport by FAA identifier (ORD) or ICAO code (KORD), an ARTCC (ZAU), a pair (ORD/ZAU or KORD/ZAU), or DCC for national advisories such as reroutes and the operations plan. Case-insensitive. Airports named only in a subject or details do not match. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit applied; present only when more advisories remain. |
| date | No | The UTC date read, YYYY-MM-DD; today (UTC) when date was omitted. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Advisories on this page; present only when more remain. |
| notice | No | Guidance on an empty date, a filter that matched nothing, an offset past the end, more pages, and index rows that could not be read. |
| truncated | No | True when matching advisories remain past this page; absent otherwise. |
| advisories | No | Advisories issued on date that match categories, control_element, and query, newest first: up to limit of them, starting at offset. |
| nextOffset | No | offset of the next page; present while matching advisories remain past this one. |
| totalCount | No | Advisories on date that match categories, control_element, and query, before paging. |
| appliedQuery | No | Trimmed text query matched against subjects and details; absent when unset. |
| appliedCategories | No | The categories filter as the server normalized it; absent when omitted, which reads every advisory, uncategorized ones included. |
| appliedControlElement | No | The control_element filter as the server matched it: uppercased, each ICAO airport code in it mapped to its FAA identifier (KORD → ORD, KORD/ZAU → ORD/ZAU); absent when omitted. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, so safety profile is covered. The description adds genuine behavioral context: newest-first ordering, inclusion of inactive/past advisories, and the exact row contents (advisory number, control element, subject, title lines, send time). It omits rate limits or pagination edge behavior, but the added context is meaningful.
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?
Front-loads the core action and scope in the first clause, and every sentence carries information. However, it is a very dense, comma-heavy run-on that could be split for easier scanning, slightly reducing readability.
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 filtered, paginated list tool with a 100%-covered schema, output schema, and full annotations, nothing essential is missing. The description even explains row fields and the cross-reference to the full-text tool, exceeding what the structured fields require.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter in depth, including enum synonyms and the DCC/ICAO forms. The description largely restates these; its only real addition is that filters combine before limit/offset paging. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (ATCSCC advisories) with explicit scope: advisories issued on one UTC date, newest first, from the per-date index. The enumeration of advisory kinds (ground stops, reroutes, flow constrained areas, operations plans, CDM compression) and the 'NAS Status feed does not carry' clause let an agent distinguish it from siblings without opening the schema.
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?
Gives clear context for use — it covers historic/inactive advisories and per-date index entries the NAS Status feed lacks — and routes the agent to the sibling faa_delays_get_advisory to open full text. It does not explicitly state when not to use it versus list_active_events or get_operations_plan, so it stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
faa_delays_list_referenceList FAA Delay Reference DataARead-onlyIdempotentInspect
Decode the vocabulary the other faa_delays tools return: event types and their fields, traffic-management terms (AAR, EDCT, FCA, GDP, SWAP), ARTCC center codes, the FAA pacing airports with time zones, and accepted identifier formats.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | What to decode: event_types (event types and their key fields), terms (traffic-management abbreviations), artccs (ARTCC center codes and names), pacing_airports (the FAA pacing airports with time zones, read live), or identifiers (accepted airport-code, advisory, and time formats). Case-insensitive; spaces and hyphens read as underscores. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| terms | No | Present for topic terms, alphabetical. |
| topic | No | The topic this result decodes. |
| artccs | No | Present for topic artccs, by code: the 25 US ARTCCs, including the New York and Oakland oceanic centers, plus Anchorage Oceanic, Guam, Auckland Oceanic, Toronto, and Vancouver, the other facilities NASR names as an airport's ARTCC. Every artcc faa_delays_get_airport_status returns is listed. |
| notice | No | Unreadable pacing-airport rows omitted from this snapshot. |
| fetchedAt | No | Present for topic pacing_airports: when this server fetched the list from the FAA (UTC ISO). |
| eventTypes | No | Present for topic event_types, in severity order. |
| identifiers | No | Present for topic identifiers. |
| pacingAirports | No | Present for topic pacing_airports: the FAA pacing airports, read live and cached 6 h. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safe/idempotent profile is covered. The description adds that pacing_airports data is 'read live', hinting at freshness behavior, but that detail is largely duplicated in the schema and no other behavioral traits (caching, response size, rate limits) are disclosed.
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?
A single front-loaded sentence that leads with the high-value framing ('decode the vocabulary the other faa_delays tools return'). It is tightly written, though the enumerated topic list partially duplicates the schema's enum, making it slightly longer than strictly necessary.
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?
An output schema exists, so return values need not be explained, and the enum fully specifies the input. For a single-enum reference-lookup tool the description is nearly complete; only minor behavioral detail (freshness/scope of the 'read live' data) is left implicit.
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 single `topic` enum is documented in full detail with per-value meanings. The description's topic list mirrors the enum without adding syntax or format guidance beyond it, so the schema does the heavy lifting and baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Decode the vocabulary') and names the exact resource: reference data for event types, terms, ARTCC codes, pacing airports, and identifier formats. It explicitly distinguishes itself from the sibling tools by describing itself as the decoder for what 'the other faa_delays tools return'.
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 framing 'decode the vocabulary the other faa_delays tools return' clearly signals when an agent should reach for this tool: when it needs to interpret opaque codes from the sibling tools. It stops short of stating exclusions or naming a specific alternative, so it is clear context rather than explicit routing.
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.
3 tool updates
- Changed
faa_delays_get_airport_status9 fields changed- changed
Input schema / properties / airports / descriptionPrevious value: -"1–25 US airports, each a 3-character FAA location identifier (SEA, ORD, 0S9) or its ICAO code (KSEA, PHNL, TJSJ), case-insensitive; a comma-separated string is also accepted. City and airport names are not accepted."New value: +"1–100 submitted US airport codes, each a 3-character FAA location identifier (SEA, ORD, 0S9) or its ICAO code (KSEA, PHNL, TJSJ), case-insensitive; a comma-separated string is also accepted. Validates every code, deduplicates FAA/ICAO equivalents, and processes the first 25 distinct airports with the canonical remainder returned as omittedAirports. City and airport names are not accepted." - changed
Input schema / properties / airports / maxItemsPrevious value: -25New value: +100 - changed
Output schema / anyOfPrevious value: -[ - { - "not": { - "required": [ - "error" - ] - }, - "required": [ - "fetchedAt", - "airports" - ] - }, - { - "required": [ - "error" - ] - } -]New value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "fetchedAt", + "airports", + "cap", + "processedCount", + "omittedAirports" + ] + }, + { + "required": [ + "error" + ] + } +] - changed
Output schema / properties / airports / descriptionPrevious value: -"One row per requested airport, in request order, duplicates dropped."New value: +"One row per processed airport, in first-seen request order, up to 25 distinct FAA identifiers." - added
Output schema / properties / airports / items / properties / reportedTimezoneAdded value: +{ + "description": "Original FAA time zone when a verified correction was applied.", + "type": "string" +} - changed
Output schema / properties / airports / items / properties / timezone / descriptionPrevious value: -"IANA-style time zone the FAA assigns to a pacing airport (US/Pacific)."New value: +"Effective IANA time zone; PHX reported as US/Mountain is corrected to America/Phoenix." - added
Output schema / properties / capAdded value: +{ + "description": "Maximum distinct airports processed: 25.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +} - added
Output schema / properties / omittedAirportsAdded value: +{ + "description": "Canonical FAA identifiers left after the first 25 distinct airports, in first-seen order; empty when all were processed.", + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / processedCountAdded value: +{ + "description": "Distinct airports processed in this response.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" +}
- Changed
faa_delays_list_advisories4 fields changed- added
Input schema / properties / queryAdded value: +{ + "description": "Literal case-insensitive substring of subject or any details line, such as FCA005; combined with categories and control_element before paging. Omit to match every title.", + "type": "string" +} - changed
Output schema / properties / advisories / descriptionPrevious value: -"Advisories issued on date that match categories and control_element, newest first: up to limit of them, starting at offset."New value: +"Advisories issued on date that match categories, control_element, and query, newest first: up to limit of them, starting at offset." - added
Output schema / properties / appliedQueryAdded value: +{ + "description": "Trimmed text query matched against subjects and details; absent when unset.", + "type": "string" +} - changed
Output schema / properties / totalCount / descriptionPrevious value: -"Advisories on date that match categories and control_element, before paging."New value: +"Advisories on date that match categories, control_element, and query, before paging."
- Changed
faa_delays_list_reference3 fields changed- added
Output schema / properties / noticeAdded value: +{ + "description": "Unreadable pacing-airport rows omitted from this snapshot.", + "type": "string" +} - added
Output schema / properties / pacingAirports / items / properties / reportedTimezoneAdded value: +{ + "description": "Original FAA time zone when a verified correction was applied.", + "type": "string" +} - changed
Output schema / properties / pacingAirports / items / properties / timezone / descriptionPrevious value: -"IANA-style time zone the FAA assigns (US/Pacific); FAA-supplied text."New value: +"Effective IANA time zone; PHX reported as US/Mountain is corrected to America/Phoenix."
6 tool updates
- First observed
faa_delays_get_advisory - First observed
faa_delays_get_airport_status - First observed
faa_delays_get_operations_plan - First observed
faa_delays_list_active_events - First observed
faa_delays_list_advisories - First observed
faa_delays_list_reference
Related MCP Connectors
Live US airport ground stops, delay programs, delays and closures from the FAA NAS Status feed.
Airport METAR/TAF weather and FAA delays by airport code. $0.003/call via x402.
FAA Delays MCP — live US airport operational status (FAA, free, no auth).
Airport security wait times, forecasts, FAA delays, EES border queues and baggage stats.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides live US airport operational status and delay data from the FAA, free and without authentication.12 npmMIT
- AlicenseNot gradedqualityBmaintenanceProvides aviation weather data including METAR, TAF, PIREPs, AIRMET/SIGMET, station info, and winds aloft forecasts.33 npmMIT
- FlicenseNot gradedqualityCmaintenanceEnables querying aviation weather, FAA TFRs, NWS alerts, flight tracking, and Amtrak train status using public APIs. No API keys or private infrastructure required.-
- AlicenseNot gradedqualityCmaintenanceProvides real-time flight status, airport weather, delays, cheap flight deals, and TSA wait times without requiring an API key.7 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.