ourairports-mcp-server
Server Details
Offline global aviation reference: airports, runways, navaids, frequencies from OurAirports.
- 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
Scored across 6 tools
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.
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.
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.
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 toolsourairports_find_airportsFind AirportsARead-onlyIdempotentInspect
Find airports within a radius of a latitude/longitude, ranked nearest-first by great-circle distance, each with its distance (km) and bearing (degrees true) from the query point. The grounding tool for "nearest airport to here" — pair it with a live aviation server to fetch weather or positions for the result. Takes a coordinate only: no geocoding, so resolve place names to lat/lon upstream first (e.g. an OpenStreetMap or Open-Meteo geocode tool). Closed airports are excluded unless include_closed is set. totalCount is the in-radius match count before limit; a capped result says so. OurAirports is community-edited — not authoritative for flight operations.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Restrict to one airport type (e.g. large_airport for major fields only). | |
| limit | No | Maximum airports to return (1–50). Defaults to OURAIRPORTS_DEFAULT_SEARCH_LIMIT (20). | |
| latitude | Yes | Query point latitude in decimal degrees (WGS84), −90 to 90. | |
| longitude | Yes | Query point longitude in decimal degrees (WGS84), −180 to 180. | |
| radius_km | No | Search radius in kilometers (1–500). Defaults to 100. | |
| include_closed | No | Include airports of type "closed". Off by default. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit that was applied. Present only when results were truncated. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of airports returned. Present only when results were truncated. |
| notice | No | Guidance when no airport fell within the radius or results were capped — how to widen or narrow. |
| airports | No | Airports within the radius, nearest-first. |
| truncated | No | Present and true only when more airports matched than were returned. |
| totalCount | No | Airports within the radius that pass the type and include_closed filters, counted before the limit was applied. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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.
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.
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.
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.
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.
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_get_airportGet AirportARead-onlyIdempotentInspect
Fetch the full record for one airport resolved by ANY code — IATA (SEA), ICAO (KSEA), GPS, national/local, or the OurAirports ident — with its runways and radio frequencies inline. The single code param is resolved case-insensitively across all five identifier spaces (priority: ident, then ICAO, IATA, GPS, local). The response always echoes the airport's complete code set and a resolutionNote naming which space matched; when other airports carry the same code, the note names each one (ident, country, code space) and why this airport won, so a wrong resolution is self-correcting — pass the other airport's ident to fetch it. Absent codes are reported as null, never an error. Runway lengths are the full runway surface (displaced thresholds and overruns included), not usable takeoff or landing distance. Closed airports always resolve. OurAirports is community-edited — not authoritative for flight operations.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Any airport code: IATA (SEA), ICAO (KSEA), GPS code, national/local code, or the OurAirports ident. Case-insensitive; surrounding whitespace is ignored. | |
| include | No | Which related records to include inline. Defaults to both. Pass a subset to trim the response. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| airport | No | The resolved airport record. Codes the airport lacks are null. |
| runways | No | Runways for the airport. Empty when the airport has none OR when `runways` was not in `include` — check `included` to tell which. |
| included | No | Which related-record sets this response carries, echoing the effective `include` selection. A relation NOT listed here was omitted by `include` (its array is empty for that reason); a listed relation with an empty array genuinely has no records. |
| frequencies | No | Radio frequencies in MHz. Empty when the airport has none OR when `frequencies` was not in `include` — check `included` to tell which. |
| resolvedVia | No | Which identifier space the code matched: ident, icao_code, iata_code, gps_code, or local_code. |
| resolutionNote | No | How the code resolved: the identifier space that matched and, when other airports carry the same code, why this one won (resolution priority or dataset row order) and each other airport's ident, country, and code space — pass that ident to fetch it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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.
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.
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.
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.
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.
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 CountriesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| country | No | Country code from ourairports_list_countries (e.g. US). Case-insensitive; surrounding whitespace is ignored. Literal empty string is unset; whitespace-only is invalid. | |
| continent | No | Restrict to one continent: AF (Africa), AN (Antarctica), AS (Asia), EU (Europe), NA (North America), OC (Oceania), SA (South America). | |
| include_regions | No | When true, nest each country's ISO 3166-2 regions (with airport counts) under it. Off by default to keep the response compact. |
Output Schema
| Name | Required | Description |
|---|---|---|
| error | No | Present when the call failed. Absent on success. |
| notice | No | Guidance when the country and/or continent filters matched no countries. |
| countries | No | Countries present in the dataset, sorted by name. |
| totalCount | No | Number of countries returned. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations 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.
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.
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.
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.
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.
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 AirportsARead-onlyIdempotentInspect
Search the bundled OurAirports corpus by free-text (name / municipality / keywords) and/or facets (country, region, type). Every query token must match (word order and partial words are handled). Returns ranked airport summaries — operational and larger airports first — each with its full code set and coordinates, ready to chain into ourairports_get_airport. Closed airports are excluded unless include_closed is set. Use ourairports_list_countries for valid country/region codes. For "nearest airport to a coordinate" use ourairports_find_airports instead. OurAirports is community-edited — not authoritative for flight operations.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Restrict to one airport type: large_airport, medium_airport, small_airport, heliport, seaplane_base, balloonport, or closed. | |
| limit | No | Maximum airports to return (1–100). Defaults to OURAIRPORTS_DEFAULT_SEARCH_LIMIT (20). | |
| query | No | Free-text search over airport name, municipality, and keywords. Tokens are AND-matched. Omit to browse purely by facets. | |
| region | No | 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. | |
| country | No | Country code from ourairports_list_countries (e.g. US). Case-insensitive; surrounding whitespace is ignored. Literal empty string is unset; whitespace-only is invalid. | |
| include_closed | No | Include airports of type "closed". Off by default — closed airports pollute the live-flight grounding use case. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit that was applied. Present only when results were truncated. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of airports returned. Present only when results were truncated. |
| notice | No | Guidance when nothing matched or results were capped — how to broaden or narrow. |
| airports | No | Matching airports, ranked best-first. Codes the airport lacks are null. |
| truncated | No | Present and true only when more airports matched than were returned. |
| totalCount | No | Total airports matched before the limit was applied. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
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.
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.
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.
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.
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.
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 RunwaysARead-onlyIdempotentInspect
Search runways across the whole bundled OurAirports corpus by attribute, joined back to their airports — the cross-airport counterpart to ourairports_get_airport (which returns runways for one already-known airport). Filter by airport facets (country, region, type) and runway facets (surface, min_length_ft, min_width_ft, lighted). Returns one flat {airport, runway} row per matching runway, so an airport with three matching runways contributes three rows. surface is a case-insensitive substring match against the raw upstream surface string, not an exact code — the runway surface must CONTAIN your text, so a shorter fragment matches more variants (no controlled vocabulary: "asp" matches ASP, ASPH, and Asphalt). Lengths are the full runway surface, including displaced thresholds and overruns — not usable takeoff or landing distance; each runway also reports its displaced threshold per end. A runway whose length or width is unknown is excluded when the matching min_*ft filter is set — the data can never confirm it meets the threshold. Closed airports and closed runways are both excluded unless their include* flag is set. Use ourairports_list_countries for valid country/region codes. OurAirports is community-edited — not authoritative for flight operations.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Restrict to runways at airports of one type: large_airport, medium_airport, small_airport, heliport, seaplane_base, balloonport, or closed. | |
| limit | No | Maximum runway rows to return (1–100). Defaults to OURAIRPORTS_DEFAULT_SEARCH_LIMIT (20). | |
| region | No | 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. | |
| country | No | Country code from ourairports_list_countries (e.g. US). Case-insensitive; surrounding whitespace is ignored. Literal empty string is unset; whitespace-only is invalid. | |
| lighted | No | Filter by runway lighting: true for lighted runways only, false for unlighted only. Omit to include both. | |
| surface | No | Surface filter — case-insensitive substring match against the raw upstream surface string (free text, no controlled vocabulary; ~654 distinct values). Match the literal text as recorded: "asp" matches ASP/ASPH/Asphalt/ASPH-G, "con" matches CON/Concrete, "turf" or "grs" for grass strips. A shorter fragment matches more variants; there is no enum or reference tool for surfaces. | |
| min_width_ft | No | Minimum runway width in feet (inclusive). Runways with an unknown width are excluded when this is set, never assumed to pass. | |
| min_length_ft | No | Minimum length of the full runway surface in feet (inclusive), matched against lengthFt — which includes displaced thresholds and overruns, so this is not a usable-distance filter. Runways with an unknown length are excluded when this is set, never assumed to pass. | |
| include_closed_runways | No | Include runways flagged closed. Off by default. | |
| include_closed_airports | No | Include runways at airports of type "closed". Off by default. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | The limit that was applied. Present only when results were truncated. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Number of runway rows returned. Present only when results were truncated. |
| notice | No | Guidance when nothing matched or results were capped — how to broaden or narrow. |
| runways | No | Matching runways, each paired with its airport. One row per runway — an airport with N matching runways contributes N rows. |
| truncated | No | Present and true only when more runways matched than were returned. |
| totalCount | No | Total matching runways before the limit was applied. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations 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.
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.
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.
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.
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.
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.
4 tool updates
- Changed
ourairports_find_navaids1 field changed- changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious 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."
- Changed
ourairports_list_countries5 fields changed- added
Input schema / properties / countryAdded 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." +} - changed
Output schema / properties / countries / items / properties / code / descriptionPrevious 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." - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious 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." - added
Output schema / properties / error / properties / data / properties / reason / examplesAdded value: +[ + "unknown_country" +] - changed
Output schema / properties / notice / descriptionPrevious value: -"Guidance when the continent filter matched no countries."New value: +"Guidance when the country and/or continent filters matched no countries."
- Changed
ourairports_search_airports10 fields changed- added
Input schema / properties / country / anyOfAdded value: +[ + { + "const": "", + "type": "string" + }, + { + "description": "Two-letter country code.", + "pattern": "^[A-Za-z]{2}$", + "type": "string" + } +] - changed
Input schema / properties / country / descriptionPrevious 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." - removed
Input schema / properties / country / minLengthRemoved value: -1 - removed
Input schema / properties / country / typeRemoved value: -"string" - added
Input schema / properties / region / anyOfAdded 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" + } +] - changed
Input schema / properties / region / descriptionPrevious 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." - removed
Input schema / properties / region / minLengthRemoved value: -1 - removed
Input schema / properties / region / typeRemoved value: -"string" - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious 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." - added
Output schema / properties / error / properties / data / properties / reason / examplesAdded value: +[ + "unknown_country", + "unknown_region" +]
- Changed
ourairports_search_runways10 fields changed- added
Input schema / properties / country / anyOfAdded value: +[ + { + "const": "", + "type": "string" + }, + { + "description": "Two-letter country code.", + "pattern": "^[A-Za-z]{2}$", + "type": "string" + } +] - changed
Input schema / properties / country / descriptionPrevious 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." - removed
Input schema / properties / country / minLengthRemoved value: -1 - removed
Input schema / properties / country / typeRemoved value: -"string" - added
Input schema / properties / region / anyOfAdded 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" + } +] - changed
Input schema / properties / region / descriptionPrevious 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." - removed
Input schema / properties / region / minLengthRemoved value: -1 - removed
Input schema / properties / region / typeRemoved value: -"string" - changed
Output schema / properties / error / properties / data / properties / reason / descriptionPrevious 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." - added
Output schema / properties / error / properties / data / properties / reason / examplesAdded value: +[ + "unknown_country", + "unknown_region" +]
5 tool updates
- Changed
ourairports_find_airports6 fields changed- changed
Output schema / properties / airports / items / properties / airport / properties / icaoCode / descriptionPrevious value: -"4-letter ICAO code, or null when the airport has none (~85% of fields)."New value: +"4-letter ICAO code, or null when the airport has none (~88% of fields)." - added
Output schema / properties / capAdded value: +{ + "description": "The limit that was applied. Present only when results were truncated.", + "type": "number" +} - changed
Output schema / properties / notice / descriptionPrevious value: -"Guidance when no airport fell within the radius — e.g. widen radius_km."New value: +"Guidance when no airport fell within the radius or results were capped — how to widen or narrow." - added
Output schema / properties / shownAdded value: +{ + "description": "Number of airports returned. Present only when results were truncated.", + "type": "number" +} - changed
Output schema / properties / totalCount / descriptionPrevious value: -"Number of airports returned within the radius."New value: +"Airports within the radius that pass the type and include_closed filters, counted before the limit was applied." - added
Output schema / properties / truncatedAdded value: +{ + "description": "Present and true only when more airports matched than were returned.", + "type": "boolean" +}
- Changed
ourairports_find_navaids16 fields changed- added
Output schema / properties / capAdded value: +{ + "description": "The limit that was applied. Present only when results were truncated.", + "type": "number" +} - changed
Output schema / properties / navaids / items / descriptionPrevious value: -"A navaid with its tuning frequency (kHz and MHz), type, position, and — in coordinate mode — distance and bearing from the query point."New value: +"A navaid with its frequency (kHz, plus MHz where the type has a VHF frequency), type, position, DME pairing, service volume, power, magnetic variation, and — in coordinate mode — distance and bearing from the query point." - changed
Output schema / properties / navaids / items / properties / dmeChannel / descriptionPrevious value: -"DME channel, or null."New value: +"DME channel (e.g. 115X), or null." - added
Output schema / properties / navaids / items / properties / dmeFrequencyKhzAdded value: +{ + "description": "Paired VHF frequency of the DME or TACAN component in kHz (divide by 1000 for MHz), on every type that has one — including NDB-DME, where it differs from frequencyKhz. Null when the navaid has no DME component recorded.", + "type": [ + "number", + "null" + ] +} - changed
Output schema / properties / navaids / items / properties / frequencyKhz / descriptionPrevious value: -"Primary tuning frequency in kHz (VOR 114.5 MHz is stored as 114500 kHz), or null."New value: +"Frequency in kHz as stored upstream for every type. NDB and NDB-DME are tuned on this value directly; VOR and VOR-DME carry their VHF frequency and DME, TACAN, and VORTAC their paired VHF frequency (VOR 114.5 MHz is stored as 114500). Null when unknown." - changed
Output schema / properties / navaids / items / properties / frequencyMhz / descriptionPrevious value: -"Same frequency expressed in MHz for VHF navaids (kHz/1000), or null when unknown."New value: +"frequencyKhz / 1000 for VOR and VOR-DME (the VHF frequency) and for DME, TACAN, and VORTAC (the paired VHF frequency, which for some TACAN channels lies above 118 MHz). Null for NDB and NDB-DME, which are tuned in kHz, and when the frequency is unknown." - added
Output schema / properties / navaids / items / properties / magneticVariationDegAdded value: +{ + "description": "Actual magnetic variation at the navaid site in degrees, positive east. Null when not recorded.", + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / navaids / items / properties / powerAdded value: +{ + "description": "Transmitter power class as recorded upstream: HIGH, MEDIUM, LOW, or UNKNOWN. Null when not recorded.", + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / navaids / items / properties / slavedVariationDegAdded value: +{ + "description": "Magnetic variation built into the radials of a VOR, VOR-DME, VORTAC, or TACAN in degrees, positive east — the reference radials are measured from, which can differ from magneticVariationDeg. Null when not recorded.", + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / navaids / items / properties / usageTypeAdded value: +{ + "description": "Service-volume class as recorded upstream: HI, LO, BOTH, TERMINAL, or RNAV. Null when not recorded.", + "type": [ + "string", + "null" + ] +} - changed
Output schema / properties / navaids / items / requiredPrevious value: -[ - "id", - "ident", - "name", - "type", - "frequencyKhz", - "frequencyMhz", - "latitudeDeg", - "longitudeDeg", - "elevationFt", - "isoCountry", - "dmeChannel", - "associatedAirport", - "distanceKm", - "bearingDeg" -]New value: +[ + "id", + "ident", + "name", + "type", + "frequencyKhz", + "frequencyMhz", + "latitudeDeg", + "longitudeDeg", + "elevationFt", + "isoCountry", + "dmeChannel", + "dmeFrequencyKhz", + "usageType", + "power", + "magneticVariationDeg", + "slavedVariationDeg", + "associatedAirport", + "distanceKm", + "bearingDeg" +] - changed
Output schema / properties / notice / descriptionPrevious value: -"Guidance when no navaids matched (empty radius, or airport found but unserved)."New value: +"Guidance when no navaids matched (empty radius, or airport found but unserved) or results were capped — how to widen or narrow." - added
Output schema / properties / resolutionNoteAdded value: +{ + "description": "Airport mode, present only when airport_code is also a code of other airports: the identifier space that matched, why this airport won, and each other airport's ident, country, and code space.", + "type": "string" +} - added
Output schema / properties / shownAdded value: +{ + "description": "Number of navaids returned. Present only when results were truncated.", + "type": "number" +} - changed
Output schema / properties / totalCount / descriptionPrevious value: -"Number of navaids returned."New value: +"Navaids matched before the limit was applied: in-radius navaids passing the type filter (coordinate mode), or navaids associated with the airport passing the type filter (airport mode)." - added
Output schema / properties / truncatedAdded value: +{ + "description": "Present and true only when more navaids matched than were returned.", + "type": "boolean" +}
- Changed
ourairports_get_airport7 fields changed- changed
Output schema / properties / airport / properties / icaoCode / descriptionPrevious value: -"4-letter ICAO code, or null when the airport has none (~85% of fields)."New value: +"4-letter ICAO code, or null when the airport has none (~88% of fields)." - changed
Output schema / properties / resolutionNote / descriptionPrevious value: -"Human-readable note on how the code resolved, including an ambiguity warning for shared national codes."New value: +"How the code resolved: the identifier space that matched and, when other airports carry the same code, why this one won (resolution priority or dataset row order) and each other airport's ident, country, and code space — pass that ident to fetch it." - changed
Output schema / properties / runways / items / descriptionPrevious value: -"A runway with dimensions, surface, lighting, and end designators/headings."New value: +"A runway with full-surface dimensions, surface, lighting, and per-end designators, headings, and displaced thresholds." - added
Output schema / properties / runways / items / properties / heDisplacedThresholdFtAdded value: +{ + "description": "Length of the displaced threshold at the high end (heIdent) in feet — part of lengthFt. Null when none is recorded.", + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / runways / items / properties / leDisplacedThresholdFtAdded value: +{ + "description": "Length of the displaced threshold at the low end (leIdent) in feet — part of lengthFt. Null when none is recorded.", + "type": [ + "number", + "null" + ] +} - changed
Output schema / properties / runways / items / properties / lengthFt / descriptionPrevious value: -"Runway length in feet, or null when unknown."New value: +"Length of the full runway surface in feet, including displaced thresholds and overrun areas — not the usable takeoff or landing distance. Null when unknown." - changed
Output schema / properties / runways / items / requiredPrevious value: -[ - "id", - "lengthFt", - "widthFt", - "surface", - "lighted", - "closed", - "leIdent", - "leHeadingDegT", - "heIdent", - "heHeadingDegT" -]New value: +[ + "id", + "lengthFt", + "widthFt", + "surface", + "lighted", + "closed", + "leIdent", + "leHeadingDegT", + "leDisplacedThresholdFt", + "heIdent", + "heHeadingDegT", + "heDisplacedThresholdFt" +]
- Changed
ourairports_search_airports1 field changed- changed
Output schema / properties / airports / items / properties / icaoCode / descriptionPrevious value: -"4-letter ICAO code, or null when the airport has none (~85% of fields)."New value: +"4-letter ICAO code, or null when the airport has none (~88% of fields)."
- Changed
ourairports_search_runways7 fields changed- changed
Input schema / properties / min_length_ft / descriptionPrevious value: -"Minimum runway length in feet (inclusive). Runways with an unknown length are excluded when this is set, never assumed to pass."New value: +"Minimum length of the full runway surface in feet (inclusive), matched against lengthFt — which includes displaced thresholds and overruns, so this is not a usable-distance filter. Runways with an unknown length are excluded when this is set, never assumed to pass." - changed
Output schema / properties / runways / items / properties / airport / properties / icaoCode / descriptionPrevious value: -"4-letter ICAO code, or null when the airport has none (~85% of fields)."New value: +"4-letter ICAO code, or null when the airport has none (~88% of fields)." - changed
Output schema / properties / runways / items / properties / runway / descriptionPrevious value: -"The matching runway — dimensions, surface, lighting, end designators, and headings."New value: +"The matching runway — full-surface dimensions, surface, lighting, and per-end designators, headings, and displaced thresholds." - added
Output schema / properties / runways / items / properties / runway / properties / heDisplacedThresholdFtAdded value: +{ + "description": "Length of the displaced threshold at the high end (heIdent) in feet — part of lengthFt. Null when none is recorded.", + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / runways / items / properties / runway / properties / leDisplacedThresholdFtAdded value: +{ + "description": "Length of the displaced threshold at the low end (leIdent) in feet — part of lengthFt. Null when none is recorded.", + "type": [ + "number", + "null" + ] +} - changed
Output schema / properties / runways / items / properties / runway / properties / lengthFt / descriptionPrevious value: -"Runway length in feet, or null when unknown."New value: +"Length of the full runway surface in feet, including displaced thresholds and overrun areas — not the usable takeoff or landing distance. Null when unknown." - changed
Output schema / properties / runways / items / properties / runway / requiredPrevious value: -[ - "id", - "lengthFt", - "widthFt", - "surface", - "lighted", - "closed", - "leIdent", - "leHeadingDegT", - "heIdent", - "heHeadingDegT" -]New value: +[ + "id", + "lengthFt", + "widthFt", + "surface", + "lighted", + "closed", + "leIdent", + "leHeadingDegT", + "leDisplacedThresholdFt", + "heIdent", + "heHeadingDegT", + "heDisplacedThresholdFt" +]
6 tool updates
- Changed
ourairports_find_airports22 fields changed- removed
Output schema / properties / airports / items / properties / airport / properties / continent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / continent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / countryName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / countryName / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / elevationFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / elevationFt / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / gpsCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / gpsCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / iataCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / iataCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / icaoCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / icaoCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / isoCountry / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / isoCountry / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / isoRegion / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / isoRegion / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / localCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / localCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / municipality / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / municipality / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / airport / properties / regionName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / airport / properties / regionName / typeAdded value: +[ + "string", + "null" +]
- Changed
ourairports_find_navaids18 fields changed- removed
Output schema / properties / airportIdent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airportIdent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / navaids / items / properties / associatedAirport / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / navaids / items / properties / associatedAirport / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / navaids / items / properties / bearingDeg / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / navaids / items / properties / bearingDeg / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / navaids / items / properties / distanceKm / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / navaids / items / properties / distanceKm / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / navaids / items / properties / dmeChannel / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / navaids / items / properties / dmeChannel / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / navaids / items / properties / elevationFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / navaids / items / properties / elevationFt / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / navaids / items / properties / frequencyKhz / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / navaids / items / properties / frequencyKhz / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / navaids / items / properties / frequencyMhz / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / navaids / items / properties / frequencyMhz / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / navaids / items / properties / isoCountry / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / navaids / items / properties / isoCountry / typeAdded value: +[ + "string", + "null" +]
- Changed
ourairports_get_airport40 fields changed- removed
Output schema / properties / airport / properties / continent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / continent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / countryName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / countryName / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / elevationFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / elevationFt / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / airport / properties / gpsCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / gpsCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / iataCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / iataCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / icaoCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / icaoCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / isoCountry / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / isoCountry / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / isoRegion / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / isoRegion / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / localCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / localCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / municipality / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / municipality / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airport / properties / regionName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airport / properties / regionName / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / frequencies / items / properties / description / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / frequencies / items / properties / description / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / frequencies / items / properties / frequencyMhz / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / frequencies / items / properties / frequencyMhz / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / runways / items / properties / heHeadingDegT / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / heHeadingDegT / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / runways / items / properties / heIdent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / heIdent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / leHeadingDegT / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / leHeadingDegT / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / runways / items / properties / leIdent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / leIdent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / lengthFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / lengthFt / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / runways / items / properties / surface / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / surface / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / widthFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / widthFt / typeAdded value: +[ + "number", + "null" +]
- Changed
ourairports_list_countries2 fields changed- removed
Output schema / properties / countries / items / properties / continent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / countries / items / properties / continent / typeAdded value: +[ + "string", + "null" +]
- Changed
ourairports_search_airports22 fields changed- removed
Output schema / properties / airports / items / properties / continent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / continent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / countryName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / countryName / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / elevationFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / elevationFt / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / airports / items / properties / gpsCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / gpsCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / iataCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / iataCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / icaoCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / icaoCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / isoCountry / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / isoCountry / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / isoRegion / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / isoRegion / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / localCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / localCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / municipality / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / municipality / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / airports / items / properties / regionName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / airports / items / properties / regionName / typeAdded value: +[ + "string", + "null" +]
- Changed
ourairports_search_runways36 fields changed- removed
Output schema / properties / runways / items / properties / airport / properties / continent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / continent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / countryName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / countryName / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / elevationFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / elevationFt / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / gpsCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / gpsCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / iataCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / iataCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / icaoCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / icaoCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / isoCountry / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / isoCountry / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / isoRegion / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / isoRegion / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / localCode / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / localCode / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / municipality / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / municipality / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / airport / properties / regionName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / airport / properties / regionName / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / runway / properties / heHeadingDegT / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / runway / properties / heHeadingDegT / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / runways / items / properties / runway / properties / heIdent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / runway / properties / heIdent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / runway / properties / leHeadingDegT / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / runway / properties / leHeadingDegT / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / runways / items / properties / runway / properties / leIdent / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / runway / properties / leIdent / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / runway / properties / lengthFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / runway / properties / lengthFt / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / runways / items / properties / runway / properties / surface / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / runway / properties / surface / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / runways / items / properties / runway / properties / widthFt / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / runways / items / properties / runway / properties / widthFt / typeAdded value: +[ + "number", + "null" +]
6 tool updates
- Changed
ourairports_find_airports6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "airports", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode.", + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "airports", - "totalCount" -]
- Changed
ourairports_find_navaids6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "mode", + "airportIdent", + "navaids", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `mode_conflict`: Both coordinate (latitude/longitude) and airport_code were supplied, or neither was. `unknown_code`: airport_code did not match any airport in any identifier space. Other values are possible when a failure originates below the handler.", + "examples": [ + "mode_conflict", + "unknown_code" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "mode", - "airportIdent", - "navaids", - "totalCount" -]
- Changed
ourairports_get_airport6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "airport", + "resolvedVia", + "resolutionNote", + "included", + "runways", + "frequencies" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode. Declared by this tool: `unknown_code`: No airport matched the supplied code in any identifier space (IATA/ICAO/GPS/local/ident). Other values are possible when a failure originates below the handler.", + "examples": [ + "unknown_code" + ], + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "airport", - "resolvedVia", - "resolutionNote", - "included", - "runways", - "frequencies" -]
- Changed
ourairports_list_countries6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "countries", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode.", + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "countries", - "totalCount" -]
- Changed
ourairports_search_airports6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "airports", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode.", + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "airports", - "totalCount" -]
- Changed
ourairports_search_runways6 fields changed- changed
Input schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Input schema / additionalPropertiesAdded value: +false - changed
Output schema / $schemaPrevious value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema" - added
Output schema / anyOfAdded value: +[ + { + "not": { + "required": [ + "error" + ] + }, + "required": [ + "runways", + "totalCount" + ] + }, + { + "required": [ + "error" + ] + } +] - added
Output schema / properties / errorAdded value: +{ + "additionalProperties": {}, + "description": "Present when the call failed. Absent on success.", + "properties": { + "code": { + "description": "JSON-RPC error code for this failure.", + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + "data": { + "additionalProperties": {}, + "properties": { + "reason": { + "description": "Machine-readable failure mode.", + "type": "string" + }, + "recovery": { + "additionalProperties": {}, + "description": "Actionable next step for the caller.", + "properties": { + "hint": { + "type": "string" + } + }, + "required": [ + "hint" + ], + "type": "object" + }, + "retryable": { + "description": "Whether retrying may succeed.", + "type": "boolean" + } + }, + "type": "object" + }, + "message": { + "description": "Human-readable description of what went wrong.", + "type": "string" + } + }, + "required": [ + "code", + "message" + ], + "type": "object" +} - removed
Output schema / requiredRemoved value: -[ - "runways", - "totalCount" -]
1 tool update
- Added
ourairports_search_runways
3 tool updates
- Changed
ourairports_find_navaids2 fields changed- changed
Input schema / properties / airport_code / descriptionPrevious value: -"Airport mode: any airport code (IATA/ICAO/GPS/local/ident); returns the navaids serving that airport. Mutually exclusive with latitude/longitude."New value: +"Airport mode: any airport code (IATA/ICAO/GPS/local/ident); returns the navaids serving that airport. Case-insensitive; surrounding whitespace is ignored. Mutually exclusive with latitude/longitude." - added
Input schema / properties / airport_code / minLengthAdded value: +1
- Changed
ourairports_get_airport5 fields changed- changed
Input schema / properties / code / descriptionPrevious value: -"Any airport code: IATA (SEA), ICAO (KSEA), GPS code, national/local code, or the OurAirports ident. Case-insensitive."New value: +"Any airport code: IATA (SEA), ICAO (KSEA), GPS code, national/local code, or the OurAirports ident. Case-insensitive; surrounding whitespace is ignored." - changed
Output schema / properties / frequencies / descriptionPrevious value: -"Radio frequencies in MHz (empty array when none recorded, or when frequencies were not requested in `include`)."New value: +"Radio frequencies in MHz. Empty when the airport has none OR when `frequencies` was not in `include` — check `included` to tell which." - added
Output schema / properties / includedAdded value: +{ + "description": "Which related-record sets this response carries, echoing the effective `include` selection. A relation NOT listed here was omitted by `include` (its array is empty for that reason); a listed relation with an empty array genuinely has no records.", + "items": { + "enum": [ + "runways", + "frequencies" + ], + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / runways / descriptionPrevious value: -"Runways for the airport (empty array when none recorded, or when runways were not requested in `include`)."New value: +"Runways for the airport. Empty when the airport has none OR when `runways` was not in `include` — check `included` to tell which." - changed
Output schema / requiredPrevious value: -[ - "airport", - "resolvedVia", - "resolutionNote", - "runways", - "frequencies" -]New value: +[ + "airport", + "resolvedVia", + "resolutionNote", + "included", + "runways", + "frequencies" +]
- Changed
ourairports_search_airports4 fields changed- changed
Input schema / properties / country / descriptionPrevious value: -"ISO 3166-1 alpha-2 country code filter (e.g. US). Exact match. Discover codes with ourairports_list_countries."New value: +"ISO 3166-1 alpha-2 country code filter (e.g. US). Exact match, case-insensitive; surrounding whitespace is ignored. Discover codes with ourairports_list_countries." - added
Input schema / properties / country / minLengthAdded value: +1 - changed
Input schema / properties / region / descriptionPrevious value: -"ISO 3166-2 region code filter (e.g. US-WA). Exact match."New value: +"ISO 3166-2 region code filter (e.g. US-WA). Exact match, case-insensitive; surrounding whitespace is ignored." - added
Input schema / properties / region / minLengthAdded value: +1
1 tool update
- Changed
ourairports_find_airports2 fields changed- removed
Input schema / properties / limit / defaultRemoved value: -10 - changed
Input schema / properties / limit / descriptionPrevious value: -"Maximum airports to return (1–50). Defaults to 10."New value: +"Maximum airports to return (1–50). Defaults to OURAIRPORTS_DEFAULT_SEARCH_LIMIT (20)."
5 tool updates
- First observed
ourairports_find_airports - First observed
ourairports_find_navaids - First observed
ourairports_get_airport - First observed
ourairports_list_countries - First observed
ourairports_search_airports
Related MCP Connectors
Offline, keyless lookup of the US civil aircraft registry — decode N-numbers, search records.
Airports, runways and frequencies worldwide, tides, UK road collisions and London transport.
Airports MCP — wraps AirportGap API (free, no auth required), plus a D1 copy of the OurAirports…
Ferry-flight price estimates + aircraft, airport, FAA-registry, route & live-flight data.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables offline lookup and search of the US civil aircraft registry by N-number, owner, type, or state, returning detailed aircraft and ownership information.270 npm3Apache 2.0
- FlicenseNot gradedqualityDmaintenanceProvides tools to search and retrieve detailed information about airports and seaports in Indonesia, including runways, radio frequencies, nearby airports, and port statistics.-
- AlicenseNot gradedqualityBmaintenanceProvides aviation weather data including METAR, TAF, PIREPs, AIRMET/SIGMET, station info, and winds aloft forecasts.33 npmMIT
- AlicenseNot gradedqualityBmaintenanceProvides live US airport operational status and delay data from the FAA, free and without authentication.12 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.