ourairports-mcp-server
Server Details
Offline global aviation reference — airports, runways, navaids, frequencies from OurAirports.
- Status
- Healthy
- Uptime
- 100.0% over 44 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cyanheads/ourairports-mcp-server
- GitHub Stars
- 1
- Server Listing
- ourairports-mcp-server
TDQS
Scored across 6 tools
Each tool targets a distinct resource/query pattern: spatial airport lookup, navaid lookup (spatial or by airport), single-airport by code, country listing, airport text/facet search, and runway attribute search. Even the two 'search' tools are clearly separated by resource type, and the descriptions explicitly cross-reference when to use which.
All tools share the 'ourairports_' prefix followed by a verb_noun pattern (find_airports, find_navaids, get_airport, list_countries, search_airports, search_runways). The verbs are distinct and match the operation type, making the toolset pattern predictable and scannable.
Six tools is well within the ideal 3–15 range for a focused aviation dataset server. The count matches the apparent scope without bloat or thinness—each tool earns its place covering a distinct query need.
The server covers the primary query patterns for the OurAirports dataset: getting, searching, and finding airports, searching runways, finding navaids, and listing countries for filtering. Minor gaps remain—there is no direct lookup of a navaid by its identifier, nor a standalone region search—but agents can work around these via existing tools.
Available Tools
6 toolsourairports_find_airportsourairports-mcp-serverARead-onlyIdempotentInspect
Find airports within a radius of a latitude/longitude, ranked nearest-first by great-circle distance, each with its distance (km) and bearing (degrees true) from the query point. The grounding tool for "nearest airport to here" — pair it with a live aviation server to fetch weather or positions for the result. Takes a coordinate only: no geocoding, so resolve place names to lat/lon upstream first (e.g. an OpenStreetMap or Open-Meteo geocode tool). Closed airports are excluded unless include_closed is set. totalCount is the in-radius match count before limit; a capped result says so. OurAirports is community-edited — not authoritative for flight operations.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Restrict to one airport type (e.g. large_airport for major fields only). | |
| limit | No | Maximum airports to return (1–50). Defaults to OURAIRPORTS_DEFAULT_SEARCH_LIMIT (20). | |
| latitude | Yes | Query point latitude in decimal degrees (WGS84), −90 to 90. | |
| longitude | Yes | Query point longitude in decimal degrees (WGS84), −180 to 180. | |
| radius_km | No | Search radius in kilometers (1–500). Defaults to 100. | |
| include_closed | No | Include airports of type "closed". Off by default. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit that was applied. Present only when results were truncated. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of airports returned. Present only when results were truncated. |
| notice | No | Guidance when no airport fell within the radius or results were capped — how to widen or narrow. |
| airports | No | Airports within the radius, nearest-first. |
| truncated | No | Present and true only when more airports matched than were returned. |
| totalCount | No | Airports within the radius that pass the type and include_closed filters, counted before the limit was applied. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, but the description goes well beyond: it discloses the output fields (distance km, bearing degrees true), the default exclusion of closed airports, the meaning of totalCount before limit, the fact that a capped result says so, and the community-edited nature of the data source. This is extensive behavioral disclosure that materially helps an agent reason about consequences, especially the non-authoritative caveat.
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 about 120 words, which is longer than typical but every sentence earns its place: purpose, ranking, output, usage suggestion, no-geocoding caveat, closed-airport default, totalCount semantics, and data-quality warning. It is front-loaded with the core function and then adds contextual detail. Slightly verbose but not bloated; the structure is logical and scannable. A 4 reflects good but not perfectly lean writing.
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 six parameters, an output schema, and annotations, the description covers all critical aspects an agent needs: the query model (radius around a point), output content (distance, bearing), edge cases (closed airports, capped results, totalCount), external dependencies (no geocoding), and data reliability (community-edited). Nothing essential is missing, and it even anticipates the need to combine with other tools. This is complete for the tool's 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 covers 100% of parameters with descriptions, so the baseline is 3. The description adds value by clarifying that the tool takes a coordinate only and does not geocode, implicitly telling the agent that latitude/longitude must be in WGS84 decimal degrees (already in schema) and that place names must be resolved upstream. It also explains the default for limit via env var and the include_closed behavior. These additions go beyond mere restatement, earning a 4.
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–resource pair: 'Find airports within a radius of a latitude/longitude, ranked nearest-first by great-circle distance'. It clearly states the core behavior and distinguishes itself from siblings like search_airports or get_airport by focusing on radius-based proximity search with distance and bearing output. The phrasing leaves no ambiguity about what the tool does.
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 gives actionable usage context: it calls itself 'the grounding tool for nearest airport to here' and advises pairing with a live aviation server for weather/positions, and resolving place names upstream via geocoding tools. While it does not explicitly say 'use this instead of search_airports', the radius-vs-search distinction is implicit. The closed-airport exclusion and totalCount semantics further guide correct invocation. Missing an explicit when-not-to-use, but the guidance is strong overall.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ourairports_get_airportourairports-mcp-serverARead-onlyIdempotentInspect
Fetch the full record for one airport resolved by ANY code — IATA (SEA), ICAO (KSEA), GPS, national/local, or the OurAirports ident — with its runways and radio frequencies inline. The single code param is resolved case-insensitively across all five identifier spaces (priority: ident, then ICAO, IATA, GPS, local). The response always echoes the airport's complete code set and a resolutionNote naming which space matched; when other airports carry the same code, the note names each one (ident, country, code space) and why this airport won, so a wrong resolution is self-correcting — pass the other airport's ident to fetch it. Absent codes are reported as null, never an error. Runway lengths are the full runway surface (displaced thresholds and overruns included), not usable takeoff or landing distance. Closed airports always resolve. OurAirports is community-edited — not authoritative for flight operations.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Any airport code: IATA (SEA), ICAO (KSEA), GPS code, national/local code, or the OurAirports ident. Case-insensitive; surrounding whitespace is ignored. | |
| include | No | Which related records to include inline. Defaults to both. Pass a subset to trim the response. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| airport | No | The resolved airport record. Codes the airport lacks are null. |
| runways | No | Runways for the airport. Empty when the airport has none OR when `runways` was not in `include` — check `included` to tell which. |
| included | No | Which related-record sets this response carries, echoing the effective `include` selection. A relation NOT listed here was omitted by `include` (its array is empty for that reason); a listed relation with an empty array genuinely has no records. |
| frequencies | No | Radio frequencies in MHz. Empty when the airport has none OR when `frequencies` was not in `include` — check `included` to tell which. |
| resolvedVia | No | Which identifier space the code matched: ident, icao_code, iata_code, gps_code, or local_code. |
| resolutionNote | No | How the code resolved: the identifier space that matched and, when other airports carry the same code, why this one won (resolution priority or dataset row order) and each other airport's ident, country, and code space — pass that ident to fetch it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses resolution priority, case-insensitive matching, null-on-absent behavior rather than errors, runway length semantics, closed-airport resolution, and the community-edited reliability caveat. This is substantial behavioral context that annotations alone would not 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?
Although longer than average, every sentence carries distinct operational value: resolution scope, priority, self-correcting notes, null behavior, runway measurement caveats, and data quality. The description is front-loaded with the primary purpose and then layers essential caveats 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?
Given the output schema exists, return-value details do not need repeating. The description covers ambiguous resolutions, error semantics, runway interpretation, closed airports, and authority limitations, so an agent has enough context to call the tool correctly and interpret unusual 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%, so the baseline is 3. The description adds real meaning beyond the schema by explaining code resolution priority, the resolutionNote self-correction mechanism, and null handling for absent codes. The include parameter is adequately covered by both schema and the inline/trim prose, but the extra semantic value is mostly for the code parameter.
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 names a specific verb and resource ('Fetch the full record for one airport') and scopes it precisely with 'resolved by ANY code'. It also distinguishes itself from search/find siblings by emphasizing exact single-record resolution across identifier spaces and inline runways/frequencies.
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 gives clear context: use this when you have any airport code and want a single resolved record with related data. It does not explicitly name sibling alternatives or state when to prefer search/find, but the exact-code-resolution framing makes the intended use unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ourairports_list_countriesourairports-mcp-serverARead-onlyIdempotentInspect
List the countries present in the bundled OurAirports dataset with their ISO 3166-1 alpha-2 codes and airport counts. This is the lookup table for valid country (and, with include_regions, region) filter values used by ourairports_search_airports. Optionally restrict to a continent or nest each country's regions. Counts exclude closed airports.
| Name | Required | Description | Default |
|---|---|---|---|
| continent | No | Restrict to one continent: AF (Africa), AN (Antarctica), AS (Asia), EU (Europe), NA (North America), OC (Oceania), SA (South America). | |
| include_regions | No | When true, nest each country's ISO 3166-2 regions (with airport counts) under it. Off by default to keep the response compact. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| notice | No | Guidance when the continent filter matched no countries. |
| countries | No | Countries present in the dataset, sorted by name. |
| totalCount | No | Number of countries returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds valuable behavioral details beyond annotations: counts exclude closed airports, the data is from a bundled dataset, and include_regions defaults to false to keep output compact. These specifics deepen transparency without contradicting 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 three sentences with no wasted words. The primary purpose is front-loaded, and the usage pointer to ourairports_search_airports appears early. Behavioral notes are compact and placed after the main purpose, preserving clear structure.
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 only two optional parameters and an output schema, so the description does not need to explain return values. It covers the core purpose, when to use it, and relevant behavioral nuances (closed-airport exclusion, default behavior). Everything an agent needs to understand before invoking the tool is present.
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 both parameters (continent, include_regions) are already well-documented in the schema. The description repeats the existence of these parameters and adds a small rationale for the default of include_regions (compact response). This adds marginal value but does not substantially extend the schema's meaning, so 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 a specific verb (List), a clear resource (countries in the bundled OurAirports dataset), and specific output details (ISO codes, airport counts). It also distinguishes itself from siblings by identifying the tool as the lookup table for valid country/region filter values used by ourairports_search_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 clearly conveys when to use this tool: to obtain valid country (and optionally region) filter values for ourairports_search_airports. It also mentions optional continent restriction and region nesting, which defines use cases. It does not explicitly list when-not-to-use or name alternative sibling tools, but the guidance is clear enough without them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ourairports_search_airportsourairports-mcp-serverARead-onlyIdempotentInspect
Search the bundled OurAirports corpus by free-text (name / municipality / keywords) and/or facets (country, region, type). Every query token must match (word order and partial words are handled). Returns ranked airport summaries — operational and larger airports first — each with its full code set and coordinates, ready to chain into ourairports_get_airport. Closed airports are excluded unless include_closed is set. Use ourairports_list_countries for valid country/region codes. For "nearest airport to a coordinate" use ourairports_find_airports instead. OurAirports is community-edited — not authoritative for flight operations.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Restrict to one airport type: large_airport, medium_airport, small_airport, heliport, seaplane_base, balloonport, or closed. | |
| limit | No | Maximum airports to return (1–100). Defaults to OURAIRPORTS_DEFAULT_SEARCH_LIMIT (20). | |
| query | No | Free-text search over airport name, municipality, and keywords. Tokens are AND-matched. Omit to browse purely by facets. | |
| region | No | ISO 3166-2 region code filter (e.g. US-WA). Exact match, case-insensitive; surrounding whitespace is ignored. | |
| country | No | ISO 3166-1 alpha-2 country code filter (e.g. US). Exact match, case-insensitive; surrounding whitespace is ignored. Discover codes with ourairports_list_countries. | |
| include_closed | No | Include airports of type "closed". Off by default — closed airports pollute the live-flight grounding use case. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit that was applied. Present only when results were truncated. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of airports returned. Present only when results were truncated. |
| notice | No | Guidance when nothing matched or results were capped — how to broaden or narrow. |
| airports | No | Matching airports, ranked best-first. Codes the airport lacks are null. |
| truncated | No | Present and true only when more airports matched than were returned. |
| totalCount | No | Total airports matched before the limit was applied. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnlyHint, idempotentHint), it discloses token matching semantics, exclusion of closed airports by default, ranking behavior, and a data-quality caveat ('community-edited — not authoritative'). No contradiction with annotations; adds substantial 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?
Three well-structured sentences: purpose first, then matching behavior and ranking, then usage guidance and caveat. Every sentence adds value; no filler or 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?
With a full parameter schema and output schema present, the description covers usage boundaries, alternative tools, data caveats, and exclusion logic. Nothing an agent needs to call it correctly is missing.
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 each parameter already has a clear description. The description reinforces query token behavior and the rationale for include_closed, but adds little parameter-specific meaning beyond the schema, so 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 ('Search') and resource ('bundled OurAirports corpus'), and clarifies scope (free-text and/or facets). It names the sibling it is not ('use ourairports_find_airports for nearest coordinate') and shows chaining to get_airport, so an agent can distinguish it clearly.
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 when to use the tool, gives a concrete alternative for a different use case (nearest airport), advises using list_countries for valid codes, and notes the include_closed exception. This is complete routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ourairports_search_runwaysourairports-mcp-serverARead-onlyIdempotentInspect
Search runways across the whole bundled OurAirports corpus by attribute, joined back to their airports — the cross-airport counterpart to ourairports_get_airport (which returns runways for one already-known airport). Filter by airport facets (country, region, type) and runway facets (surface, min_length_ft, min_width_ft, lighted). Returns one flat {airport, runway} row per matching runway, so an airport with three matching runways contributes three rows. surface is a case-insensitive substring match against the raw upstream surface string, not an exact code — the runway surface must CONTAIN your text, so a shorter fragment matches more variants (no controlled vocabulary: "asp" matches ASP, ASPH, and Asphalt). Lengths are the full runway surface, including displaced thresholds and overruns — not usable takeoff or landing distance; each runway also reports its displaced threshold per end. A runway whose length or width is unknown is excluded when the matching min_*ft filter is set — the data can never confirm it meets the threshold. Closed airports and closed runways are both excluded unless their include* flag is set. Use ourairports_list_countries for valid country/region codes. OurAirports is community-edited — not authoritative for flight operations.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Restrict to runways at airports of one type: large_airport, medium_airport, small_airport, heliport, seaplane_base, balloonport, or closed. | |
| limit | No | Maximum runway rows to return (1–100). Defaults to OURAIRPORTS_DEFAULT_SEARCH_LIMIT (20). | |
| region | No | ISO 3166-2 region code filter (e.g. US-WA). Exact match, case-insensitive; surrounding whitespace is ignored. | |
| country | No | ISO 3166-1 alpha-2 country code filter (e.g. US). Exact match, case-insensitive; surrounding whitespace is ignored. Discover codes with ourairports_list_countries. | |
| lighted | No | Filter by runway lighting: true for lighted runways only, false for unlighted only. Omit to include both. | |
| surface | No | Surface filter — case-insensitive substring match against the raw upstream surface string (free text, no controlled vocabulary; ~654 distinct values). Match the literal text as recorded: "asp" matches ASP/ASPH/Asphalt/ASPH-G, "con" matches CON/Concrete, "turf" or "grs" for grass strips. A shorter fragment matches more variants; there is no enum or reference tool for surfaces. | |
| min_width_ft | No | Minimum runway width in feet (inclusive). Runways with an unknown width are excluded when this is set, never assumed to pass. | |
| min_length_ft | No | Minimum length of the full runway surface in feet (inclusive), matched against lengthFt — which includes displaced thresholds and overruns, so this is not a usable-distance filter. Runways with an unknown length are excluded when this is set, never assumed to pass. | |
| include_closed_runways | No | Include runways flagged closed. Off by default. | |
| include_closed_airports | No | Include runways at airports of type "closed". Off by default. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit that was applied. Present only when results were truncated. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of runway rows returned. Present only when results were truncated. |
| notice | No | Guidance when nothing matched or results were capped — how to broaden or narrow. |
| runways | No | Matching runways, each paired with its airport. One row per runway — an airport with N matching runways contributes N rows. |
| truncated | No | Present and true only when more runways matched than were returned. |
| totalCount | No | Total matching runways before the limit was applied. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only, idempotent, closed-world behavior, and the description adds rich context beyond them: it explains that surface is a case-insensitive substring match with examples ('asp' matches ASP/ASPH/Asphalt), that length includes displaced thresholds/overruns and is not usable distance, that unknown lengths/widths cause exclusion when min filters are set, and that closed airports/runways are excluded unless flags are set. It also discloses the flat row structure (one row per matching runway). These are critical operational details not present in 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 long but every sentence carries essential information. It is front-loaded with the core purpose, then differentiates from a sibling, then explains filtering capabilities, output format, and specific field semantics. There is no redundancy; the structure guides the agent from high-level intent to low-level constraints in a logical flow. Given the tool's complexity (10 parameters, many nuances), this length is justified and well-organized.
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 presence of an output schema (context signal) and comprehensive parameter descriptions in both schema and tool description, nothing crucial is missing. The description covers the scope, filtering options, exclusions, return-shape behavior, and caveats about data quality ('community-edited — not authoritative'). The agent has all the information needed to correctly invoke the tool and interpret 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% (every parameter has a schema description), but the tool description goes well beyond that. For example, it clarifies that 'surface' is a free-text substring match and gives concrete match examples; it explains that min_length_ft is not a usable-distance filter and that unknown values are excluded; it details the limit default and behavior. This adds operational meaning that the schema alone does not provide, so it fully compensates and exceeds the baseline.
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: 'Search runways across the whole bundled OurAirports corpus by attribute, joined back to their airports.' It clearly differentiates from ourairports_get_airport by calling itself 'the cross-airport counterpart' that searches across all airports, whereas the sibling returns runways for one known airport. Scope, resource, and differentiation are all explicit.
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?
Usage is guided precisely: the description names the sibling alternative (ourairports_get_airport) and states when this tool is appropriate (searching across the corpus) versus when the sibling is used (one already-known airport). It also points the agent to ourairports_list_countries for valid country/region codes, giving concrete next steps for correct invocation.
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.
5 tool updates
- Changed
ourairports_find_airports6 fields changed- changed
Output schema / properties / airports / items / properties / airport / properties / icaoCode / descriptionPrevious value: -"4-letter ICAO code, or null when the airport has none (~85% of fields)."New value: +"4-letter ICAO code, or null when the airport has none (~88% of fields)." - added
Output schema / properties / capAdded value: +{ + "description": "The limit that was applied. Present only when results were truncated.", + "type": "number" +} - changed
Output schema / properties / notice / descriptionPrevious value: -"Guidance when no airport fell within the radius — e.g. widen radius_km."New value: +"Guidance when no airport fell within the radius or results were capped — how to widen or narrow." - added
Output schema / properties / shownAdded value: +{ + "description": "Number of airports returned. Present only when results were truncated.", + "type": "number" +} - changed
Output schema / properties / totalCount / descriptionPrevious value: -"Number of airports returned within the radius."New value: +"Airports within the radius that pass the type and include_closed filters, counted before the limit was applied." - added
Output schema / properties / truncatedAdded value: +{ + "description": "Present and true only when more airports matched than were returned.", + "type": "boolean" +}
- Changed
ourairports_find_navaids16 fields changed- added
Output schema / properties / capAdded value: +{ + "description": "The limit that was applied. Present only when results were truncated.", + "type": "number" +} - changed
Output schema / properties / navaids / items / descriptionPrevious value: -"A navaid with its tuning frequency (kHz and MHz), type, position, and — in coordinate mode — distance and bearing from the query point."New value: +"A navaid with its frequency (kHz, plus MHz where the type has a VHF frequency), type, position, DME pairing, service volume, power, magnetic variation, and — in coordinate mode — distance and bearing from the query point." - changed
Output schema / properties / navaids / items / properties / dmeChannel / descriptionPrevious value: -"DME channel, or null."New value: +"DME channel (e.g. 115X), or null." - added
Output schema / properties / navaids / items / properties / dmeFrequencyKhzAdded value: +{ + "description": "Paired VHF frequency of the DME or TACAN component in kHz (divide by 1000 for MHz), on every type that has one — including NDB-DME, where it differs from frequencyKhz. Null when the navaid has no DME component recorded.", + "type": [ + "number", + "null" + ] +} - changed
Output schema / properties / navaids / items / properties / frequencyKhz / descriptionPrevious value: -"Primary tuning frequency in kHz (VOR 114.5 MHz is stored as 114500 kHz), or null."New value: +"Frequency in kHz as stored upstream for every type. NDB and NDB-DME are tuned on this value directly; VOR and VOR-DME carry their VHF frequency and DME, TACAN, and VORTAC their paired VHF frequency (VOR 114.5 MHz is stored as 114500). Null when unknown." - changed
Output schema / properties / navaids / items / properties / frequencyMhz / descriptionPrevious value: -"Same frequency expressed in MHz for VHF navaids (kHz/1000), or null when unknown."New value: +"frequencyKhz / 1000 for VOR and VOR-DME (the VHF frequency) and for DME, TACAN, and VORTAC (the paired VHF frequency, which for some TACAN channels lies above 118 MHz). Null for NDB and NDB-DME, which are tuned in kHz, and when the frequency is unknown." - added
Output schema / properties / navaids / items / properties / magneticVariationDegAdded value: +{ + "description": "Actual magnetic variation at the navaid site in degrees, positive east. Null when not recorded.", + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / navaids / items / properties / powerAdded value: +{ + "description": "Transmitter power class as recorded upstream: HIGH, MEDIUM, LOW, or UNKNOWN. Null when not recorded.", + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / navaids / items / properties / slavedVariationDegAdded value: +{ + "description": "Magnetic variation built into the radials of a VOR, VOR-DME, VORTAC, or TACAN in degrees, positive east — the reference radials are measured from, which can differ from magneticVariationDeg. Null when not recorded.", + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / navaids / items / properties / usageTypeAdded value: +{ + "description": "Service-volume class as recorded upstream: HI, LO, BOTH, TERMINAL, or RNAV. Null when not recorded.", + "type": [ + "string", + "null" + ] +} - changed
Output schema / properties / navaids / items / requiredPrevious value: -[ - "id", - "ident", - "name", - "type", - "frequencyKhz", - "frequencyMhz", - "latitudeDeg", - "longitudeDeg", - "elevationFt", - "isoCountry", - "dmeChannel", - "associatedAirport", - "distanceKm", - "bearingDeg" -]New value: +[ + "id", + "ident", + "name", + "type", + "frequencyKhz", + "frequencyMhz", + "latitudeDeg", + "longitudeDeg", + "elevationFt", + "isoCountry", + "dmeChannel", + "dmeFrequencyKhz", + "usageType", + "power", + "magneticVariationDeg", + "slavedVariationDeg", + "associatedAirport", + "distanceKm", + "bearingDeg" +] - changed
Output schema / properties / notice / descriptionPrevious value: -"Guidance when no navaids matched (empty radius, or airport found but unserved)."New value: +"Guidance when no navaids matched (empty radius, or airport found but unserved) or results were capped — how to widen or narrow." - added
Output schema / properties / resolutionNoteAdded value: +{ + "description": "Airport mode, present only when airport_code is also a code of other airports: the identifier space that matched, why this airport won, and each other airport's ident, country, and code space.", + "type": "string" +} - added
Output schema / properties / shownAdded value: +{ + "description": "Number of navaids returned. Present only when results were truncated.", + "type": "number" +} - changed
Output schema / properties / totalCount / descriptionPrevious value: -"Number of navaids returned."New value: +"Navaids matched before the limit was applied: in-radius navaids passing the type filter (coordinate mode), or navaids associated with the airport passing the type filter (airport mode)." - added
Output schema / properties / truncatedAdded value: +{ + "description": "Present and true only when more navaids matched than were returned.", + "type": "boolean" +}
- Changed
ourairports_get_airport7 fields changed- changed
Output schema / properties / airport / properties / icaoCode / descriptionPrevious value: -"4-letter ICAO code, or null when the airport has none (~85% of fields)."New value: +"4-letter ICAO code, or null when the airport has none (~88% of fields)." - changed
Output schema / properties / resolutionNote / descriptionPrevious value: -"Human-readable note on how the code resolved, including an ambiguity warning for shared national codes."New value: +"How the code resolved: the identifier space that matched and, when other airports carry the same code, why this one won (resolution priority or dataset row order) and each other airport's ident, country, and code space — pass that ident to fetch it." - changed
Output schema / properties / runways / items / descriptionPrevious value: -"A runway with dimensions, surface, lighting, and end designators/headings."New value: +"A runway with full-surface dimensions, surface, lighting, and per-end designators, headings, and displaced thresholds." - added
Output schema / properties / runways / items / properties / heDisplacedThresholdFtAdded value: +{ + "description": "Length of the displaced threshold at the high end (heIdent) in feet — part of lengthFt. Null when none is recorded.", + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / runways / items / properties / leDisplacedThresholdFtAdded value: +{ + "description": "Length of the displaced threshold at the low end (leIdent) in feet — part of lengthFt. Null when none is recorded.", + "type": [ + "number", + "null" + ] +} - changed
Output schema / properties / runways / items / properties / lengthFt / descriptionPrevious value: -"Runway length in feet, or null when unknown."New value: +"Length of the full runway surface in feet, including displaced thresholds and overrun areas — not the usable takeoff or landing distance. Null when unknown." - changed
Output schema / properties / runways / items / requiredPrevious value: -[ - "id", - "lengthFt", - "widthFt", - "surface", - "lighted", - "closed", - "leIdent", - "leHeadingDegT", - "heIdent", - "heHeadingDegT" -]New value: +[ + "id", + "lengthFt", + "widthFt", + "surface", + "lighted", + "closed", + "leIdent", + "leHeadingDegT", + "leDisplacedThresholdFt", + "heIdent", + "heHeadingDegT", + "heDisplacedThresholdFt" +]
- Changed
ourairports_search_airports1 field changed- changed
Output schema / properties / airports / items / properties / icaoCode / descriptionPrevious value: -"4-letter ICAO code, or null when the airport has none (~85% of fields)."New value: +"4-letter ICAO code, or null when the airport has none (~88% of fields)."
- Changed
ourairports_search_runways7 fields changed- changed
Input schema / properties / min_length_ft / descriptionPrevious value: -"Minimum runway length in feet (inclusive). Runways with an unknown length are excluded when this is set, never assumed to pass."New value: +"Minimum length of the full runway surface in feet (inclusive), matched against lengthFt — which includes displaced thresholds and overruns, so this is not a usable-distance filter. Runways with an unknown length are excluded when this is set, never assumed to pass." - changed
Output schema / properties / runways / items / properties / airport / properties / icaoCode / descriptionPrevious value: -"4-letter ICAO code, or null when the airport has none (~85% of fields)."New value: +"4-letter ICAO code, or null when the airport has none (~88% of fields)." - changed
Output schema / properties / runways / items / properties / runway / descriptionPrevious value: -"The matching runway — dimensions, surface, lighting, end designators, and headings."New value: +"The matching runway — full-surface dimensions, surface, lighting, and per-end designators, headings, and displaced thresholds." - added
Output schema / properties / runways / items / properties / runway / properties / heDisplacedThresholdFtAdded value: +{ + "description": "Length of the displaced threshold at the high end (heIdent) in feet — part of lengthFt. Null when none is recorded.", + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / runways / items / properties / runway / properties / leDisplacedThresholdFtAdded value: +{ + "description": "Length of the displaced threshold at the low end (leIdent) in feet — part of lengthFt. Null when none is recorded.", + "type": [ + "number", + "null" + ] +} - changed
Output schema / properties / runways / items / properties / runway / properties / lengthFt / descriptionPrevious value: -"Runway length in feet, or null when unknown."New value: +"Length of the full runway surface in feet, including displaced thresholds and overrun areas — not the usable takeoff or landing distance. Null when unknown." - changed
Output schema / properties / runways / items / properties / runway / requiredPrevious value: -[ - "id", - "lengthFt", - "widthFt", - "surface", - "lighted", - "closed", - "leIdent", - "leHeadingDegT", - "heIdent", - "heHeadingDegT" -]New value: +[ + "id", + "lengthFt", + "widthFt", + "surface", + "lighted", + "closed", + "leIdent", + "leHeadingDegT", + "leDisplacedThresholdFt", + "heIdent", + "heHeadingDegT", + "heDisplacedThresholdFt" +]
6 tool updates
- Changed
ourairports_find_airports22 fields changed- removed
Output schema / properties / airports / items / properties / airport / properties / continent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / continent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / countryName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / countryName / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / elevationFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / elevationFt / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / gpsCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / gpsCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / iataCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / iataCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / icaoCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / icaoCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / isoCountry / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / isoCountry / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / isoRegion / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / isoRegion / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / localCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / localCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / municipality / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / municipality / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / regionName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / regionName / typeAdded value: +[ + "string", + "null" +]
- Changed
ourairports_find_navaids18 fields changed- removed
Output schema / properties / airportIdent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airportIdent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / navaids / items / properties / associatedAirport / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / navaids / items / properties / associatedAirport / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / navaids / items / properties / bearingDeg / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / navaids / items / properties / bearingDeg / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / navaids / items / properties / distanceKm / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / navaids / items / properties / distanceKm / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / navaids / items / properties / dmeChannel / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / navaids / items / properties / dmeChannel / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / navaids / items / properties / elevationFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / navaids / items / properties / elevationFt / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / navaids / items / properties / frequencyKhz / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / navaids / items / properties / frequencyKhz / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / navaids / items / properties / frequencyMhz / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / navaids / items / properties / frequencyMhz / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / navaids / items / properties / isoCountry / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / navaids / items / properties / isoCountry / typeAdded value: +[ + "string", + "null" +]
- Changed
ourairports_get_airport40 fields changed- removed
Output schema / properties / airport / properties / continent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / continent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / countryName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / countryName / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / elevationFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / elevationFt / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / airport / properties / gpsCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / gpsCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / iataCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / iataCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / icaoCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / icaoCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / isoCountry / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / isoCountry / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / isoRegion / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / isoRegion / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / localCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / localCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / municipality / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / municipality / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / regionName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / regionName / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / frequencies / items / properties / description / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / frequencies / items / properties / description / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / frequencies / items / properties / frequencyMhz / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / frequencies / items / properties / frequencyMhz / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / runways / items / properties / heHeadingDegT / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / heHeadingDegT / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / runways / items / properties / heIdent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / heIdent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / leHeadingDegT / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / leHeadingDegT / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / runways / items / properties / leIdent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / leIdent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / lengthFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / lengthFt / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / runways / items / properties / surface / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / surface / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / widthFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / widthFt / typeAdded value: +[ + "number", + "null" +]
- Changed
ourairports_list_countries2 fields changed- removed
Output schema / properties / countries / items / properties / continent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / countries / items / properties / continent / typeAdded value: +[ + "string", + "null" +]
- Changed
ourairports_search_airports22 fields changed- removed
Output schema / properties / airports / items / properties / continent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / continent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / countryName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / countryName / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / elevationFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / elevationFt / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / airports / items / properties / gpsCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / gpsCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / iataCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / iataCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / icaoCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / icaoCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / isoCountry / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / isoCountry / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / isoRegion / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / isoRegion / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / localCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / localCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / municipality / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / municipality / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / regionName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / regionName / typeAdded value: +[ + "string", + "null" +]
- Changed
ourairports_search_runways36 fields changed- removed
Output schema / properties / runways / items / properties / airport / properties / continent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / continent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / countryName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / countryName / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / elevationFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / elevationFt / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / gpsCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / gpsCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / iataCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / iataCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / icaoCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / icaoCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / isoCountry / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / isoCountry / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / isoRegion / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / isoRegion / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / localCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / localCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / municipality / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / municipality / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / regionName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / regionName / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / runway / properties / heHeadingDegT / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / runway / properties / heHeadingDegT / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / runways / items / properties / runway / properties / heIdent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / runway / properties / heIdent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / runway / properties / leHeadingDegT / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / runway / properties / leHeadingDegT / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / runways / items / properties / runway / properties / leIdent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / runway / properties / leIdent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / runway / properties / lengthFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / runway / properties / lengthFt / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / runways / items / properties / runway / properties / surface / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / runway / properties / surface / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / runway / properties / widthFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / runway / properties / widthFt / typeAdded value: +[ + "number", + "null" +]
6 tool updates
- Changed
ourairports_find_airports6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "airports", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode.", + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "airports", - "totalCount" -]
- Changed
ourairports_find_navaids6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "mode", + "airportIdent", + "navaids", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `mode_conflict`: Both coordinate (latitude/longitude) and airport_code were supplied, or neither was. `unknown_code`: airport_code did not match any airport in any identifier space. Other values are possible when a failure originates below the handler.", + "examples": [ + "mode_conflict", + "unknown_code" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "mode", - "airportIdent", - "navaids", - "totalCount" -]
- Changed
ourairports_get_airport6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "airport", + "resolvedVia", + "resolutionNote", + "included", + "runways", + "frequencies" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `unknown_code`: No airport matched the supplied code in any identifier space (IATA/ICAO/GPS/local/ident). Other values are possible when a failure originates below the handler.", + "examples": [ + "unknown_code" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "airport", - "resolvedVia", - "resolutionNote", - "included", - "runways", - "frequencies" -]
- Changed
ourairports_list_countries6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "countries", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode.", + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "countries", - "totalCount" -]
- Changed
ourairports_search_airports6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "airports", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode.", + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "airports", - "totalCount" -]
- Changed
ourairports_search_runways6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "runways", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode.", + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "runways", - "totalCount" -]
1 tool update
- Added
ourairports_search_runways
3 tool updates
- Changed
ourairports_find_navaids2 fields changed- changed
Input schema / properties / airport_code / descriptionPrevious value: -"Airport mode: any airport code (IATA/ICAO/GPS/local/ident); returns the navaids serving that airport. Mutually exclusive with latitude/longitude."New value: +"Airport mode: any airport code (IATA/ICAO/GPS/local/ident); returns the navaids serving that airport. Case-insensitive; surrounding whitespace is ignored. Mutually exclusive with latitude/longitude." - added
Input schema / properties / airport_code / minLengthAdded value: +1
- Changed
ourairports_get_airport5 fields changed- changed
Input schema / properties / code / descriptionPrevious value: -"Any airport code: IATA (SEA), ICAO (KSEA), GPS code, national/local code, or the OurAirports ident. Case-insensitive."New value: +"Any airport code: IATA (SEA), ICAO (KSEA), GPS code, national/local code, or the OurAirports ident. Case-insensitive; surrounding whitespace is ignored." - changed
Output schema / properties / frequencies / descriptionPrevious value: -"Radio frequencies in MHz (empty array when none recorded, or when frequencies were not requested in `include`)."New value: +"Radio frequencies in MHz. Empty when the airport has none OR when `frequencies` was not in `include` — check `included` to tell which." - added
Output schema / properties / includedAdded value: +{ + "description": "Which related-record sets this response carries, echoing the effective `include` selection. A relation NOT listed here was omitted by `include` (its array is empty for that reason); a listed relation with an empty array genuinely has no records.", + "items": { + "enum": [ + "runways", + "frequencies" + ], + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / runways / descriptionPrevious value: -"Runways for the airport (empty array when none recorded, or when runways were not requested in `include`)."New value: +"Runways for the airport. Empty when the airport has none OR when `runways` was not in `include` — check `included` to tell which." - changed
Output schema / requiredPrevious value: -[ - "airport", - "resolvedVia", - "resolutionNote", - "runways", - "frequencies" -]New value: +[ + "airport", + "resolvedVia", + "resolutionNote", + "included", + "runways", + "frequencies" +]
- Changed
ourairports_search_airports4 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code filter (e.g. US). Exact match. Discover codes with ourairports_list_countries."New value: +"ISO 3166-1 alpha-2 country code filter (e.g. US). Exact match, case-insensitive; surrounding whitespace is ignored. Discover codes with ourairports_list_countries." - added
Input schema / properties / country / minLengthAdded value: +1 - changed
Input schema / properties / region / descriptionPrevious value: -"ISO 3166-2 region code filter (e.g. US-WA). Exact match."New value: +"ISO 3166-2 region code filter (e.g. US-WA). Exact match, case-insensitive; surrounding whitespace is ignored." - added
Input schema / properties / region / minLengthAdded value: +1
1 tool update
- Changed
ourairports_find_airports2 fields changed- removed
Input schema / properties / limit / defaultRemoved value: -10 - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum airports to return (1–50). Defaults to 10."New value: +"Maximum airports to return (1–50). Defaults to OURAIRPORTS_DEFAULT_SEARCH_LIMIT (20)."
5 tool updates
- First observed
ourairports_find_airports - First observed
ourairports_find_navaids - First observed
ourairports_get_airport - First observed
ourairports_list_countries - First observed
ourairports_search_airports
Related MCP Connectors
Offline, keyless lookup of the US civil aircraft registry — decode N-numbers, search records.
Airports MCP — wraps AirportGap API (free, no auth required)
Ferry-flight price estimates + aircraft, airport, FAA-registry, route & live-flight data.
Live flight departures and airport information
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables offline lookup and search of the US civil aircraft registry by N-number, owner, type, or state, returning detailed aircraft and ownership information.263 npm2Apache 2.0
- FlicenseNot gradedqualityDmaintenanceProvides tools to search and retrieve detailed information about airports and seaports in Indonesia, including runways, radio frequencies, nearby airports, and port statistics.-
- AlicenseNot gradedqualityBmaintenanceProvides aviation weather data including METAR, TAF, PIREPs, AIRMET/SIGMET, station info, and winds aloft forecasts.140 npmMIT
- AlicenseNot gradedqualityCmaintenanceProvides live ADS-B aircraft positions and enables searching by registration, ICAO hex, or callsign, viewing nearby traffic sorted by distance, finding the closest aircraft, filtering by type or military status, and looking up airport information.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.