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
99.9% over 64 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.5/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct resource or access mode: spatial airport lookup (find_airports) vs. text/facet search (search_airports), full single-airport record (get_airport), cross-airport runway search (search_runways), navaid lookup (find_navaids), and filter-code reference (list_countries). Descriptions actively disambiguate the closest pairs, e.g. search_airports explicitly redirects coordinate queries to find_airports, and search_runways is framed as the cross-airport counterpart to get_airport.

Naming Consistency5/5

All six tools share the ourairports_ prefix and a clean verb_noun snake_case pattern (find_airports, find_navaids, get_airport, list_countries, search_airports, search_runways). Verb choices are semantically meaningful and consistent across the set.

Tool Count5/5

Six tools is well within the healthy 3-15 range and each earns its place, covering the core entities (airports, runways, navaids, countries/regions) without redundant or filler operations.

Completeness4/5

The read-only OurAirports surface is largely covered: airports (get/search/spatial), runways (inline and cross-airport search), navaids (spatial/relational), and country/region codes. Minor gaps remain, such as no direct lookup of a navaid by its ident/code and no cross-airport frequency search analogous to search_runways, but these are workable around.

Available Tools

6 tools
ourairports_find_airportsFind AirportsA
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.7/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: it discloses that closed airports are excluded unless include_closed is set, that totalCount is the pre-limit in-radius count and a capped result is flagged, and that OurAirports data is community-edited and not authoritative for flight operations. The provenance/accuracy caveat is exactly the kind of context annotations cannot carry.

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?

Four tightly packed sentences, front-loaded with the capability, then workflow, then prerequisites, then data caveats. Every sentence carries distinct information — no restatement of the name or title, no filler.

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?

Covers everything an agent needs: what the tool does, what it requires upstream, what it excludes by default, and how to read the capped-result and totalCount signals. An output schema exists, so not explaining raw return shapes is appropriate, yet it still annotates the two response fields most likely to be misread.

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 description coverage is 100%, so the baseline is 3; the description earns an extra point by clarifying semantics the schema states only structurally — that include_closed governs whether 'closed' type records appear, and that limit interacts with totalCount to produce a capped result set. It adds no syntax or unit nuance beyond what the schema already documents for latitude/longitude/radius_km.

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 and resource — find airports within a radius of a lat/lon — plus the ordering (nearest-first by great-circle distance) and returned attributes (distance in km, bearing in degrees true). This is precise enough to separate it from ourairports_search_airports and ourairports_get_airport without opening either schema.

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?

Gives explicit context ('the grounding tool for "nearest airport to here"'), the complementary workflow (pair with a live aviation server for weather/positions), and an explicit when-not: it takes a coordinate only, so place names must be geocoded upstream via OSM or Open-Meteo. The gap is that it never contrasts with the sibling ourairports_search_airports, leaving a residual routing ambiguity between the two airport lookups.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ourairports_find_navaidsFind NavaidsA
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

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/safe, but the description adds substantial behavior: nearest-first ranking with distance and bearing, totalCount semantics with capping, empty-list-vs-error for airport mode, and resolutionNote disambiguation. It is only slightly short of full behavioral disclosure (e.g. no explicit auth or rate-limit notes).

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?

Front-loads the two modes in the first sentence and keeps every clause informative. However, a large block of frequency-field semantics explains output values even though an output schema exists, which is slightly redundant for this tool's description.

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 six-parameter, mode-switching search tool, the description covers input modes, ranking, error conditions, disambiguation, and a data-authority caveat. Everything an agent needs to call it correctly is present, and the output schema carries return structure.

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?

With 100% schema coverage the baseline is 3, but the description clarifies cross-parameter behavior the schema can't fully convey: mode exclusivity consequences, radius_km being ignored in airport mode, and the meaning behind frequency/data fields. This is meaningful added meaning beyond per-field descriptions.

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 and resource (find navigation aids) and enumerates the exact navaid types covered. It also distinguishes itself from sibling airport/runway tools by framing the two query modes, so an agent can pick it without opening the schema.

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

Usage Guidelines5/5

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

Explicitly names the two entry paths (spatial via latitude+longitude with optional radius_km, relational via airport_code) and states the selection rule: exactly one mode, both or neither is a validation error. Airport-mode edge cases (empty list vs error) are also covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ourairports_get_airportGet AirportA
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.1/5.0
Behavior5/5

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

Annotations only cover the read-only/idempotent/closed-world profile, and the description adds substantial behavior beyond them: resolution priority order, the echoed code set and resolutionNote, ambiguous-code self-correction, null-for-absent-codes instead of errors, closed airports always resolving, and an explicit community-edited authority disclaimer.

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?

Front-loaded with the core purpose and then dense with distinct, non-redundant facts; nearly every clause carries new information. It runs long, but the runway-length caveat and null-handling sentences each earn their place.

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 single-record lookup with an output schema already present, the description supplies everything an agent needs: identifier spaces, resolution rules, ambiguity handling, null semantics, and an authority caveat. Nothing material is missing.

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 baseline is 3, but the description adds real meaning beyond the schema by specifying the resolution priority (ident, then ICAO, IATA, GPS, local) and confirming case-insensitive, whitespace-tolerant matching and that runways/frequencies come inline.

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

Purpose4/5

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

States a specific verb ('Fetch the full record') and resource ('one airport') and enumerates the five identifier spaces it resolves, which cleanly separates it from the plural find/search siblings by implication. It stops short of naming any sibling explicitly, so it is clear but not fully differentiated.

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

Usage Guidelines3/5

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

Usage is implied: fetch this when you already hold an airport code. The ambiguity-recovery guidance ('pass the other airport's ident to fetch it') is a genuine usage hint, but the description never names alternatives like search_airports or find_airports or states when NOT to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ourairports_list_countriesList CountriesA
Read-onlyIdempotent
Inspect

List countries and valid country/region filter codes for ourairports_search_airports and ourairports_search_runways, with airport counts excluding closed airports. Restrict to country for one country's regions; country and continent combine as AND. include_regions without a scope returns the entire region table, so prefer country for a one-country lookup. Unscoped and continent-only requests remain available.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNoCountry code from ourairports_list_countries (e.g. US). Case-insensitive; surrounding whitespace is ignored. Literal empty string is unset; whitespace-only is invalid.
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 country and/or continent filters matched no countries.
countriesNoCountries present in the dataset, sorted by name.
totalCountNoNumber of countries returned.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnly, idempotent, closed-world), and the description adds meaningful behavior: counts exclude closed airports, country+continent combine as AND, and the whole-table pitfall for unscoped include_regions. It stops short of describing response shape, but the output schema covers that.

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?

Front-loads purpose, then packs filtering semantics and the include_regions caveat into three tight sentences with no filler. Dense but every sentence carries actionable information.

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

Completeness4/5

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

With an output schema handling return values and annotations covering safety, the description supplies the remaining decision-relevant context (AND semantics, closed-airport exclusion, scope pitfall). Adequate and nearly complete for a 3-param lookup tool.

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 baseline would be 3, but the description adds semantics not in the schema: country and continent combine as AND, and include_regions without a scope returns the entire region table. That meaningfully extends the parameter documentation.

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?

Opens with a specific verb+resource ('List countries and valid country/region filter codes') and names the two sibling tools these codes feed. An agent can immediately tell this is a lookup tool for filter codes rather than an airport/runway search.

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?

Gives explicit routing rules: restrict to country for a single country's regions, prefer country for a one-country lookup, and notes include_regions without scope dumps the whole region table. It also states that unscoped and continent-only requests are still valid, covering both when-to-use and when-not.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ourairports_search_airportsSearch AirportsA
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.
regionNoRegion code from ourairports_list_countries with include_regions (e.g. US-WA or KS-U-A). Case-insensitive; surrounding whitespace is ignored. Literal empty string is unset; whitespace-only is invalid.
countryNoCountry code from ourairports_list_countries (e.g. US). Case-insensitive; surrounding whitespace is ignored. Literal empty string is unset; whitespace-only is invalid.
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.9/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, idempotent, closed-world), and the description adds real behavioral context beyond them: AND-token matching, ranking that favors operational and larger airports, the closed-airport default, and a data-provenance caveat that OurAirports is community-edited and not authoritative for flight ops.

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?

Front-loads the search model (free-text and/or facets), then returns, then exclusions, then routing, then the provenance caveat. Each sentence conveys a distinct constraint or disambiguation with no filler.

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 an output schema present, return-value detail is unnecessary, yet the description still summarizes what comes back (ranked summaries with code sets and coordinates, chainable into get_airport). Combined with the routing notes and caveat, an agent has everything needed to invoke it correctly.

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, but the description adds matching semantics the schema only partly covers — word order is handled and partial words match, and facets can be combined or used alone to browse. It stops short of documenting defaults or limit behavior, which the schema already carries.

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 (airports) plus the matching modes (free-text tokens and facets). It explicitly distinguishes itself from siblings — find_airports for nearest-coordinate queries and list_countries for code lookup — so an agent can route without opening another schema.

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?

Gives explicit when-to-use and when-not-to-use guidance: closed airports are excluded unless include_closed is set, country/region codes must come from ourairports_list_countries, and nearest-airport queries belong to ourairports_find_airports. Alternatives are named with the condition that selects them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

ourairports_search_runwaysSearch RunwaysA
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).
regionNoRegion code from ourairports_list_countries with include_regions (e.g. US-WA or KS-U-A). Case-insensitive; surrounding whitespace is ignored. Literal empty string is unset; whitespace-only is invalid.
countryNoCountry code from ourairports_list_countries (e.g. US). Case-insensitive; surrounding whitespace is ignored. Literal empty string is unset; whitespace-only is invalid.
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

A4.6/5.0
Behavior4/5

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

Annotations cover the safe-read profile (readOnly, idempotent, closed-world), so the description's value is in the extra semantics it supplies: one flat {airport, runway} row per matching runway, substring-match surface behavior, full-surface length definition including displaced thresholds/overruns, and 'unknown excludes when min_*_ft is set' rules. It does not discuss pagination/truncation beyond the limit parameter, which is the only notable gap.

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?

Front-loaded correctly — identity and sibling relationship precede all filter semantics — and every sentence carries substantive information. It is one very dense paragraph, so the caveats (length semantics, unknown-value exclusion, closed-entity defaults) are harder to scan than if they were broken out, but there is little waste.

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 10 optional parameters, an output schema, and full annotation coverage, this description supplies exactly what structured fields cannot: result row cardinality, filter-combination behavior, exclusion semantics for unknown values, and a data-authority caveat. Nothing needed 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.

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 and the schema already carries the per-parameter text. The description adds cross-cutting meaning the schema can't: that surface is a CONTAIN a fragment match with no controlled vocabulary (with 'asp' matching ASP/ASPH/Asphalt), that length is not usable distance, and how the include_closed_* flags interact with default exclusion.

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 and resource (search runways across the bundled corpus) plus the exact scope of the join (back to their airports). It explicitly contrasts itself with the sibling ourairports_get_airport, so an agent can pick between them without opening a schema.

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

Usage Guidelines5/5

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

Names the alternative (ourairports_get_airport) and the condition that selects it — single already-known airport vs. cross-airport attribute search. It also routes the agent to ourairports_list_countries for valid country/region codes, giving a concrete prerequisite.

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. 4 tool updates
    • Changedourairports_find_navaids1 field changed
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"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."New value: +"Machine-readable failure mode. Declared by this tool: `mode_conflict`: Coordinates are incomplete, both coordinate and airport modes were supplied, or neither mode was supplied. `unknown_code`: airport_code did not match any airport in any identifier space. Other values are possible when a failure originates below the handler."
    • Changedourairports_list_countries5 fields changed
      • addedInput schema / properties / country
        Added value: +{
        +  "anyOf": [
        +    {
        +      "const": "",
        +      "type": "string"
        +    },
        +    {
        +      "description": "Two-letter country code.",
        +      "pattern": "^[A-Za-z]{2}$",
        +      "type": "string"
        +    }
        +  ],
        +  "description": "Country code from ourairports_list_countries (e.g. US). Case-insensitive; surrounding whitespace is ignored. Literal empty string is unset; whitespace-only is invalid."
        +}
      • changedOutput schema / properties / countries / items / properties / code / description
        Previous value: -"ISO 3166-1 alpha-2 country code (the value to pass as `country` to ourairports_search_airports)."New value: +"Country code to pass as country to ourairports_search_airports or ourairports_search_runways."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode."New value: +"Machine-readable failure mode. Declared by this tool: `unknown_country`: The country code is absent from the bundled country table. Other values are possible when a failure originates below the handler."
      • addedOutput schema / properties / error / properties / data / properties / reason / examples
        Added value: +[
        +  "unknown_country"
        +]
      • changedOutput schema / properties / notice / description
        Previous value: -"Guidance when the continent filter matched no countries."New value: +"Guidance when the country and/or continent filters matched no countries."
    • Changedourairports_search_airports10 fields changed
      • addedInput schema / properties / country / anyOf
        Added value: +[
        +  {
        +    "const": "",
        +    "type": "string"
        +  },
        +  {
        +    "description": "Two-letter country code.",
        +    "pattern": "^[A-Za-z]{2}$",
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / country / description
        Previous 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."New value: +"Country code from ourairports_list_countries (e.g. US). Case-insensitive; surrounding whitespace is ignored. Literal empty string is unset; whitespace-only is invalid."
      • removedInput schema / properties / country / minLength
        Removed value: -1
      • removedInput schema / properties / country / type
        Removed value: -"string"
      • addedInput schema / properties / region / anyOf
        Added value: +[
        +  {
        +    "const": "",
        +    "type": "string"
        +  },
        +  {
        +    "description": "Region code with one or two segments.",
        +    "pattern": "^[A-Za-z]{2}(-[A-Za-z0-9]{1,3}){1,2}$",
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / region / description
        Previous value: -"ISO 3166-2 region code filter (e.g. US-WA). Exact match, case-insensitive; surrounding whitespace is ignored."New value: +"Region code from ourairports_list_countries with include_regions (e.g. US-WA or KS-U-A). Case-insensitive; surrounding whitespace is ignored. Literal empty string is unset; whitespace-only is invalid."
      • removedInput schema / properties / region / minLength
        Removed value: -1
      • removedInput schema / properties / region / type
        Removed value: -"string"
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode."New value: +"Machine-readable failure mode. Declared by this tool: `unknown_country`: The country code is absent from the bundled country table. `unknown_region`: The region code is absent from the bundled region table. Other values are possible when a failure originates below the handler."
      • addedOutput schema / properties / error / properties / data / properties / reason / examples
        Added value: +[
        +  "unknown_country",
        +  "unknown_region"
        +]
    • Changedourairports_search_runways10 fields changed
      • addedInput schema / properties / country / anyOf
        Added value: +[
        +  {
        +    "const": "",
        +    "type": "string"
        +  },
        +  {
        +    "description": "Two-letter country code.",
        +    "pattern": "^[A-Za-z]{2}$",
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / country / description
        Previous 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."New value: +"Country code from ourairports_list_countries (e.g. US). Case-insensitive; surrounding whitespace is ignored. Literal empty string is unset; whitespace-only is invalid."
      • removedInput schema / properties / country / minLength
        Removed value: -1
      • removedInput schema / properties / country / type
        Removed value: -"string"
      • addedInput schema / properties / region / anyOf
        Added value: +[
        +  {
        +    "const": "",
        +    "type": "string"
        +  },
        +  {
        +    "description": "Region code with one or two segments.",
        +    "pattern": "^[A-Za-z]{2}(-[A-Za-z0-9]{1,3}){1,2}$",
        +    "type": "string"
        +  }
        +]
      • changedInput schema / properties / region / description
        Previous value: -"ISO 3166-2 region code filter (e.g. US-WA). Exact match, case-insensitive; surrounding whitespace is ignored."New value: +"Region code from ourairports_list_countries with include_regions (e.g. US-WA or KS-U-A). Case-insensitive; surrounding whitespace is ignored. Literal empty string is unset; whitespace-only is invalid."
      • removedInput schema / properties / region / minLength
        Removed value: -1
      • removedInput schema / properties / region / type
        Removed value: -"string"
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode."New value: +"Machine-readable failure mode. Declared by this tool: `unknown_country`: The country code is absent from the bundled country table. `unknown_region`: The region code is absent from the bundled region table. Other values are possible when a failure originates below the handler."
      • addedOutput schema / properties / error / properties / data / properties / reason / examples
        Added value: +[
        +  "unknown_country",
        +  "unknown_region"
        +]
  2. 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"
        +]
  3. 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"
        +]
  4. 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"
        -]
  5. 1 tool update
    • Addedourairports_search_runways
  6. 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
  7. 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)."
  8. 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.