Skip to main content
Glama

Server Details

Offline global aviation reference — airports, runways, navaids, frequencies from OurAirports.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
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

A4.6/5.0

Scored across 6 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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 tools
ourairports_find_airportsourairports-mcp-serverA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoRestrict to one airport type (e.g. large_airport for major fields only).
limitNoMaximum airports to return (1–50). Defaults to OURAIRPORTS_DEFAULT_SEARCH_LIMIT (20).
latitudeYesQuery point latitude in decimal degrees (WGS84), −90 to 90.
longitudeYesQuery point longitude in decimal degrees (WGS84), −180 to 180.
radius_kmNoSearch radius in kilometers (1–500). Defaults to 100.
include_closedNoInclude airports of type "closed". Off by default.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit that was applied. Present only when results were truncated.
errorNoPresent when the call failed. Absent on success.
shownNoNumber of airports returned. Present only when results were truncated.
noticeNoGuidance when no airport fell within the radius or results were capped — how to widen or narrow.
airportsNoAirports within the radius, nearest-first.
truncatedNoPresent and true only when more airports matched than were returned.
totalCountNoAirports within the radius that pass the type and include_closed filters, counted before the limit was applied.

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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_find_navaidsourairports-mcp-serverA
Read-onlyIdempotent
Inspect

Find navigation aids (VOR, VOR-DME, DME, NDB, NDB-DME, TACAN, VORTAC) two ways: spatially, by passing latitude+longitude (with an optional radius_km); or relationally, by passing airport_code to get the navaids that serve that airport. Supply exactly one mode — both or neither is a validation error. Coordinate mode ranks nearest-first with distance (km) and bearing (degrees true). frequencyKhz is the stored value for every navaid type (a VOR on 114.5 MHz reads 114500); frequencyMhz carries the VHF frequency of a VOR or VOR-DME and the paired VHF frequency of a DME, TACAN, or VORTAC, and is null for NDB and NDB-DME, which are tuned in kHz. Each navaid also carries its DME paired frequency, usage class, power, and actual and slaved magnetic variation. totalCount is the match count before limit; a capped result says so. Airport mode returns an empty list (not an error) when the airport exists but has no associated navaids; an unknown airport_code is an error. When airport_code is also a code of other airports, a resolutionNote says which airport it resolved to and names the others by ident — pass that ident to query one of them. OurAirports is community-edited — not authoritative for flight operations.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoRestrict to one navaid type: NDB, VOR-DME, VORTAC, TACAN, VOR, DME, or NDB-DME.
limitNoMaximum navaids to return (1–50). Defaults to OURAIRPORTS_DEFAULT_SEARCH_LIMIT (20).
latitudeNoCoordinate mode: query point latitude (−90 to 90). Provide with longitude; mutually exclusive with airport_code.
longitudeNoCoordinate mode: query point longitude (−180 to 180). Provide with latitude.
radius_kmNoCoordinate mode: search radius in kilometers (1–500). Defaults to 100. Ignored in airport mode.
airport_codeNoAirport 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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit that was applied. Present only when results were truncated.
modeNoWhich query mode was used.
errorNoPresent when the call failed. Absent on success.
shownNoNumber of navaids returned. Present only when results were truncated.
noticeNoGuidance when no navaids matched (empty radius, or airport found but unserved) or results were capped — how to widen or narrow.
navaidsNoMatching navaids. Nearest-first in coordinate mode; in airport-association order in airport mode.
truncatedNoPresent and true only when more navaids matched than were returned.
totalCountNoNavaids 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).
airportIdentNoIn airport mode, the resolved airport ident the navaids were matched against; null in coordinate mode.
resolutionNoteNoAirport 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.

TDQS

A5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, but the description adds substantial behavioral context: nearest-first ranking with distance and bearing, frequency unit semantics for each navaid type, totalCount/capping behavior, empty-list-vs-error distinction, and resolutionNote for ambiguous codes. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and modes, then flows into field semantics and edge cases. Each sentence adds necessary information about result interpretation or validation; there is no filler. It is long but appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Combined with the output schema and annotations, the description covers selection criteria, result semantics, error conditions, and data caveats (community-edited). It leaves little for an agent to infer, making it complete for correct invocation and interpretation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although the schema has 100% parameter description coverage, the description adds value by clarifying the mutually exclusive mode relationship, the default radius, case-insensitive/whitespace behavior for airport_code, and the ambiguity resolution behavior, which the schema alone doesn't convey.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Find navigation aids' and enumerates the exact navaid types (VOR, VOR-DME, DME, NDB, etc.), making the resource specific. It also distinguishes the two call modes (spatial vs. relational), which sets it apart from sibling tools that handle airports, runways, or countries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states the two modes and the exclusion rule: 'Supply exactly one mode — both or neither is a validation error.' It also describes when to use each mode (coordinates or airport_code) and explains special cases like unknown airport_code error and ambiguity resolution, giving clear guidance on correct usage.

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-serverA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesAny airport code: IATA (SEA), ICAO (KSEA), GPS code, national/local code, or the OurAirports ident. Case-insensitive; surrounding whitespace is ignored.
includeNoWhich related records to include inline. Defaults to both. Pass a subset to trim the response.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
airportNoThe resolved airport record. Codes the airport lacks are null.
runwaysNoRunways for the airport. Empty when the airport has none OR when `runways` was not in `include` — check `included` to tell which.
includedNoWhich 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.
frequenciesNoRadio frequencies in MHz. Empty when the airport has none OR when `frequencies` was not in `include` — check `included` to tell which.
resolvedViaNoWhich identifier space the code matched: ident, icao_code, iata_code, gps_code, or local_code.
resolutionNoteNoHow 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

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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-serverA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
continentNoRestrict to one continent: AF (Africa), AN (Antarctica), AS (Asia), EU (Europe), NA (North America), OC (Oceania), SA (South America).
include_regionsNoWhen true, nest each country's ISO 3166-2 regions (with airport counts) under it. Off by default to keep the response compact.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
noticeNoGuidance when the continent filter matched no countries.
countriesNoCountries present in the dataset, sorted by name.
totalCountNoNumber of countries returned.

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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-serverA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoRestrict to one airport type: large_airport, medium_airport, small_airport, heliport, seaplane_base, balloonport, or closed.
limitNoMaximum airports to return (1–100). Defaults to OURAIRPORTS_DEFAULT_SEARCH_LIMIT (20).
queryNoFree-text search over airport name, municipality, and keywords. Tokens are AND-matched. Omit to browse purely by facets.
regionNoISO 3166-2 region code filter (e.g. US-WA). Exact match, case-insensitive; surrounding whitespace is ignored.
countryNoISO 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_closedNoInclude airports of type "closed". Off by default — closed airports pollute the live-flight grounding use case.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit that was applied. Present only when results were truncated.
errorNoPresent when the call failed. Absent on success.
shownNoNumber of airports returned. Present only when results were truncated.
noticeNoGuidance when nothing matched or results were capped — how to broaden or narrow.
airportsNoMatching airports, ranked best-first. Codes the airport lacks are null.
truncatedNoPresent and true only when more airports matched than were returned.
totalCountNoTotal airports matched before the limit was applied.

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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-serverA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoRestrict to runways at airports of one type: large_airport, medium_airport, small_airport, heliport, seaplane_base, balloonport, or closed.
limitNoMaximum runway rows to return (1–100). Defaults to OURAIRPORTS_DEFAULT_SEARCH_LIMIT (20).
regionNoISO 3166-2 region code filter (e.g. US-WA). Exact match, case-insensitive; surrounding whitespace is ignored.
countryNoISO 3166-1 alpha-2 country code filter (e.g. US). Exact match, case-insensitive; surrounding whitespace is ignored. Discover codes with ourairports_list_countries.
lightedNoFilter by runway lighting: true for lighted runways only, false for unlighted only. Omit to include both.
surfaceNoSurface 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_ftNoMinimum runway width in feet (inclusive). Runways with an unknown width are excluded when this is set, never assumed to pass.
min_length_ftNoMinimum 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_runwaysNoInclude runways flagged closed. Off by default.
include_closed_airportsNoInclude runways at airports of type "closed". Off by default.

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit that was applied. Present only when results were truncated.
errorNoPresent when the call failed. Absent on success.
shownNoNumber of runway rows returned. Present only when results were truncated.
noticeNoGuidance when nothing matched or results were capped — how to broaden or narrow.
runwaysNoMatching runways, each paired with its airport. One row per runway — an airport with N matching runways contributes N rows.
truncatedNoPresent and true only when more runways matched than were returned.
totalCountNoTotal matching runways before the limit was applied.

TDQS

A5/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness5/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

  1. 5 tool updates
    • Changedourairports_find_airports6 fields changed
      • changedOutput schema / properties / airports / items / properties / airport / properties / icaoCode / description
        Previous 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)."
      • addedOutput schema / properties / cap
        Added value: +{
        +  "description": "The limit that was applied. Present only when results were truncated.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / notice / description
        Previous 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."
      • addedOutput schema / properties / shown
        Added value: +{
        +  "description": "Number of airports returned. Present only when results were truncated.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / totalCount / description
        Previous 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."
      • addedOutput schema / properties / truncated
        Added value: +{
        +  "description": "Present and true only when more airports matched than were returned.",
        +  "type": "boolean"
        +}
    • Changedourairports_find_navaids16 fields changed
      • addedOutput schema / properties / cap
        Added value: +{
        +  "description": "The limit that was applied. Present only when results were truncated.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / navaids / items / description
        Previous 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."
      • changedOutput schema / properties / navaids / items / properties / dmeChannel / description
        Previous value: -"DME channel, or null."New value: +"DME channel (e.g. 115X), or null."
      • addedOutput schema / properties / navaids / items / properties / dmeFrequencyKhz
        Added 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"
        +  ]
        +}
      • changedOutput schema / properties / navaids / items / properties / frequencyKhz / description
        Previous 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."
      • changedOutput schema / properties / navaids / items / properties / frequencyMhz / description
        Previous 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."
      • addedOutput schema / properties / navaids / items / properties / magneticVariationDeg
        Added value: +{
        +  "description": "Actual magnetic variation at the navaid site in degrees, positive east. Null when not recorded.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / navaids / items / properties / power
        Added value: +{
        +  "description": "Transmitter power class as recorded upstream: HIGH, MEDIUM, LOW, or UNKNOWN. Null when not recorded.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / navaids / items / properties / slavedVariationDeg
        Added 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"
        +  ]
        +}
      • addedOutput schema / properties / navaids / items / properties / usageType
        Added value: +{
        +  "description": "Service-volume class as recorded upstream: HI, LO, BOTH, TERMINAL, or RNAV. Null when not recorded.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / navaids / items / required
        Previous 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"
        +]
      • changedOutput schema / properties / notice / description
        Previous 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."
      • addedOutput schema / properties / resolutionNote
        Added 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"
        +}
      • addedOutput schema / properties / shown
        Added value: +{
        +  "description": "Number of navaids returned. Present only when results were truncated.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / totalCount / description
        Previous 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)."
      • addedOutput schema / properties / truncated
        Added value: +{
        +  "description": "Present and true only when more navaids matched than were returned.",
        +  "type": "boolean"
        +}
    • Changedourairports_get_airport7 fields changed
      • changedOutput schema / properties / airport / properties / icaoCode / description
        Previous 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)."
      • changedOutput schema / properties / resolutionNote / description
        Previous 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."
      • changedOutput schema / properties / runways / items / description
        Previous 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."
      • addedOutput schema / properties / runways / items / properties / heDisplacedThresholdFt
        Added 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"
        +  ]
        +}
      • addedOutput schema / properties / runways / items / properties / leDisplacedThresholdFt
        Added 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"
        +  ]
        +}
      • changedOutput schema / properties / runways / items / properties / lengthFt / description
        Previous 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."
      • changedOutput schema / properties / runways / items / required
        Previous 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"
        +]
    • Changedourairports_search_airports1 field changed
      • changedOutput schema / properties / airports / items / properties / icaoCode / description
        Previous 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)."
    • Changedourairports_search_runways7 fields changed
      • changedInput schema / properties / min_length_ft / description
        Previous 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."
      • changedOutput schema / properties / runways / items / properties / airport / properties / icaoCode / description
        Previous 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)."
      • changedOutput schema / properties / runways / items / properties / runway / description
        Previous 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."
      • addedOutput schema / properties / runways / items / properties / runway / properties / heDisplacedThresholdFt
        Added 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"
        +  ]
        +}
      • addedOutput schema / properties / runways / items / properties / runway / properties / leDisplacedThresholdFt
        Added 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"
        +  ]
        +}
      • changedOutput schema / properties / runways / items / properties / runway / properties / lengthFt / description
        Previous 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."
      • changedOutput schema / properties / runways / items / properties / runway / required
        Previous 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"
        +]
  2. 6 tool updates
    • Changedourairports_find_airports22 fields changed
      • removedOutput schema / properties / airports / items / properties / airport / properties / continent / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / airport / properties / continent / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / airport / properties / countryName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / airport / properties / countryName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / airport / properties / elevationFt / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / airport / properties / elevationFt / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / airport / properties / gpsCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / airport / properties / gpsCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / airport / properties / iataCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / airport / properties / iataCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / airport / properties / icaoCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / airport / properties / icaoCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / airport / properties / isoCountry / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / airport / properties / isoCountry / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / airport / properties / isoRegion / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / airport / properties / isoRegion / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / airport / properties / localCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / airport / properties / localCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / airport / properties / municipality / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / airport / properties / municipality / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / airport / properties / regionName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / airport / properties / regionName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedourairports_find_navaids18 fields changed
      • removedOutput schema / properties / airportIdent / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airportIdent / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / navaids / items / properties / associatedAirport / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / navaids / items / properties / associatedAirport / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / navaids / items / properties / bearingDeg / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / navaids / items / properties / bearingDeg / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / navaids / items / properties / distanceKm / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / navaids / items / properties / distanceKm / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / navaids / items / properties / dmeChannel / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / navaids / items / properties / dmeChannel / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / navaids / items / properties / elevationFt / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / navaids / items / properties / elevationFt / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / navaids / items / properties / frequencyKhz / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / navaids / items / properties / frequencyKhz / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / navaids / items / properties / frequencyMhz / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / navaids / items / properties / frequencyMhz / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / navaids / items / properties / isoCountry / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / navaids / items / properties / isoCountry / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedourairports_get_airport40 fields changed
      • removedOutput schema / properties / airport / properties / continent / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airport / properties / continent / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airport / properties / countryName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airport / properties / countryName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airport / properties / elevationFt / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airport / properties / elevationFt / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / airport / properties / gpsCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airport / properties / gpsCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airport / properties / iataCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airport / properties / iataCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airport / properties / icaoCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airport / properties / icaoCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airport / properties / isoCountry / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airport / properties / isoCountry / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airport / properties / isoRegion / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airport / properties / isoRegion / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airport / properties / localCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airport / properties / localCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airport / properties / municipality / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airport / properties / municipality / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airport / properties / regionName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airport / properties / regionName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / frequencies / items / properties / description / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / frequencies / items / properties / description / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / frequencies / items / properties / frequencyMhz / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / frequencies / items / properties / frequencyMhz / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / heHeadingDegT / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / heHeadingDegT / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / heIdent / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / heIdent / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / leHeadingDegT / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / leHeadingDegT / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / leIdent / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / leIdent / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / lengthFt / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / lengthFt / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / surface / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / surface / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / widthFt / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / widthFt / type
        Added value: +[
        +  "number",
        +  "null"
        +]
    • Changedourairports_list_countries2 fields changed
      • removedOutput schema / properties / countries / items / properties / continent / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / countries / items / properties / continent / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedourairports_search_airports22 fields changed
      • removedOutput schema / properties / airports / items / properties / continent / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / continent / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / countryName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / countryName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / elevationFt / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / elevationFt / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / gpsCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / gpsCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / iataCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / iataCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / icaoCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / icaoCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / isoCountry / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / isoCountry / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / isoRegion / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / isoRegion / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / localCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / localCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / municipality / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / municipality / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / airports / items / properties / regionName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / airports / items / properties / regionName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changedourairports_search_runways36 fields changed
      • removedOutput schema / properties / runways / items / properties / airport / properties / continent / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / airport / properties / continent / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / airport / properties / countryName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / airport / properties / countryName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / airport / properties / elevationFt / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / airport / properties / elevationFt / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / airport / properties / gpsCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / airport / properties / gpsCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / airport / properties / iataCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / airport / properties / iataCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / airport / properties / icaoCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / airport / properties / icaoCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / airport / properties / isoCountry / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / airport / properties / isoCountry / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / airport / properties / isoRegion / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / airport / properties / isoRegion / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / airport / properties / localCode / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / airport / properties / localCode / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / airport / properties / municipality / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / airport / properties / municipality / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / airport / properties / regionName / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / airport / properties / regionName / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / runway / properties / heHeadingDegT / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / runway / properties / heHeadingDegT / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / runway / properties / heIdent / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / runway / properties / heIdent / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / runway / properties / leHeadingDegT / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / runway / properties / leHeadingDegT / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / runway / properties / leIdent / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / runway / properties / leIdent / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / runway / properties / lengthFt / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / runway / properties / lengthFt / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / runway / properties / surface / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / runway / properties / surface / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / runways / items / properties / runway / properties / widthFt / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / runways / items / properties / runway / properties / widthFt / type
        Added value: +[
        +  "number",
        +  "null"
        +]
  3. 6 tool updates
    • Changedourairports_find_airports6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "airports",
        +      "totalCount"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added 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"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "airports",
        -  "totalCount"
        -]
    • Changedourairports_find_navaids6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "mode",
        +      "airportIdent",
        +      "navaids",
        +      "totalCount"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added 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"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "mode",
        -  "airportIdent",
        -  "navaids",
        -  "totalCount"
        -]
    • Changedourairports_get_airport6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "airport",
        +      "resolvedVia",
        +      "resolutionNote",
        +      "included",
        +      "runways",
        +      "frequencies"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added 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"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "airport",
        -  "resolvedVia",
        -  "resolutionNote",
        -  "included",
        -  "runways",
        -  "frequencies"
        -]
    • Changedourairports_list_countries6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "countries",
        +      "totalCount"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added 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"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "countries",
        -  "totalCount"
        -]
    • Changedourairports_search_airports6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "airports",
        +      "totalCount"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added 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"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "airports",
        -  "totalCount"
        -]
    • Changedourairports_search_runways6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "runways",
        +      "totalCount"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added 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"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "runways",
        -  "totalCount"
        -]
  4. 1 tool update
    • Addedourairports_search_runways
  5. 3 tool updates
    • Changedourairports_find_navaids2 fields changed
      • changedInput schema / properties / airport_code / description
        Previous 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."
      • addedInput schema / properties / airport_code / minLength
        Added value: +1
    • Changedourairports_get_airport5 fields changed
      • changedInput schema / properties / code / description
        Previous 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."
      • changedOutput schema / properties / frequencies / description
        Previous 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."
      • addedOutput schema / properties / included
        Added 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"
        +}
      • changedOutput schema / properties / runways / description
        Previous 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."
      • changedOutput schema / required
        Previous value: -[
        -  "airport",
        -  "resolvedVia",
        -  "resolutionNote",
        -  "runways",
        -  "frequencies"
        -]New value: +[
        +  "airport",
        +  "resolvedVia",
        +  "resolutionNote",
        +  "included",
        +  "runways",
        +  "frequencies"
        +]
    • Changedourairports_search_airports4 fields changed
      • changedInput schema / properties / country / description
        Previous 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."
      • addedInput schema / properties / country / minLength
        Added value: +1
      • changedInput schema / properties / region / description
        Previous 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."
      • addedInput schema / properties / region / minLength
        Added value: +1
  6. 1 tool update
    • Changedourairports_find_airports2 fields changed
      • removedInput schema / properties / limit / default
        Removed value: -10
      • changedInput schema / properties / limit / description
        Previous 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)."
  7. 5 tool updates
    • First observedourairports_find_airports
    • First observedourairports_find_navaids
    • First observedourairports_get_airport
    • First observedourairports_list_countries
    • First observedourairports_search_airports

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.