airport_runways
Airport runways
What runways does this aerodrome publish in its state AIP, with what dimensions,
surface, bearings, thresholds and declared distances, and for which AIRAC cycle?
Returns every runway the state's export lists for the aerodrome: designator, length
and width, surface and PCN, the runway strip, and per direction the threshold
coordinates, true and magnetic bearing, the approach slope indicator (PAPI or VASIS
type, slope and MEHT) and the four declared distances TORA, TODA, ASDA and LDA. Every
length is `{"m": ...}`; where the publisher states feet it is
`{"m": ..., "published": {"value": ..., "uom": "FT"}}` and the published figure is the
one to quote. `as_of` is the cycle the figures are true for and `provenance` names the
export.
Read `declared_distances` and `from_intersections` as two different things. The
top-level figures are the FULL-LENGTH declared distances. `from_intersections` lists
the reduced distances available to a departure that starts at a taxiway intersection:
Paris CDG 09R publishes a TORA of 4200 m at full length and 2962 m from D6, and both
are true. Quoting an intersection figure as "the" TORA understates the runway; quoting
the full length for an intersection departure overstates it. LDA is measured from a
different datum and may be shorter than TORA at full length while longer from an
intersection; that is the publisher's figure, not an error. `remarks` carry the
publisher's own qualifications (PPR, reduced distances) and must travel with the number.
`identifier` is an ICAO location indicator, an IATA code or an aerodrome name; a name or
IATA code is resolved to its ICAO code first and the answer says so in its first note.
Coverage is by state export: France and its overseas territories (SIA AIXM export,
Licence Ouverte, every aerodrome) and the United States (FAA NASR 28-day airport files,
public domain, the aerodromes with an ICAO location indicator). FAA runway-end
coordinates are the displaced threshold where there is one, else the physical end, and
the FAA publishes no intersection-qualified distances. `not_covered` means the aerodrome is outside the
exports held, not that it has no runways; `coverage` in that answer says what is held,
and report_unmet_need records which aerodrome was wanted. An aerodrome that resolves
with zero runways is a heliport, a water aerodrome or a publisher gap, and the note
says which.
Do NOT use this for the runway in use, closures, NOTAMs, work in progress, or anything
that changes inside a cycle: it is the published infrastructure for a cycle, accurate to
that publication and not live. Do not convert units silently: the elevation and MEHT
carry a `uom`, and a length stated in feet carries the published figure beside the
metre conversion, because the exports mix feet and metres.
Read only
Idempotent
Input schema
{'type': 'object', 'title': 'airport_runwaysArguments', 'required': ['identifier'], 'properties': {'identifier': {'type': 'string', 'title': 'Identifier'}}}
data_requirements
Data requirements
What data does this use case, role or organisation type need, and how fresh?
Three modes. With `use_case_id`: that use case's requirements verbatim --
title, normalised title_family, description, nominal update rate,
normalised cadence class and the kind of source system. With `query`:
REVERSE lineage -- full-text search over requirement titles and
descriptions (the inputs, not the use-case text), returning the use cases
that CONSUME data matching the query. Ask `query="taxi-out time"` to get
everything downstream of a better taxi-out estimate: each consumer with
the requirement titles that matched, the total count, and the requirement
families involved. This is the "if we improved this prediction/feed, what
would benefit" question; combine with trace_data_lineage to see which
standard messages carry the input. With neither: an aggregate profile for
a scope (`role`, `org_type`, `sector`, any combination): the most common
requirement titles with the typical cadence and source for each, a
`family_mix` that collapses the titles into ~29 canonical requirement
families, plus the overall cadence mix. The aggregate is the "what data,
how fresh, from whom" content for a data strategy, a feed inventory or a
gap analysis, and is safe to quote as counts.
For counting DISTINCT feeds, use `family_mix`, not raw titles: the corpus
carries ~8,000 title spellings for far fewer real feed kinds ("Weather
Data", "Weather and Environmental Data" and "Environmental Conditions"
are one family), so raw-title counts overstate a feed inventory roughly
2-3x. Each family_mix row shows how many raw titles it absorbed; ~24% of
requirements stay family `other` (genuinely heterogeneous).
Cadence classes, coarsest to finest: annual, quarterly, monthly, weekly,
daily, hourly, sub_hourly, near_real_time, real_time, event (on each
occurrence), static, unknown. They normalise 1,300 spellings of update
rate in the corpus ("every 15 minutes" and "4/hour" both land in
sub_hourly). 152 requirements keep `unknown` because the text was not an
update rate at all.
Do NOT read a requirement as a statement about any real organisation's
systems or data availability; it is what the use case needs in principle.
Mapping needs to an actual feed inventory is your work, not the tool's.
Every response carries `provenance`: `corpus` is Airside Labs' proprietary catalogue (use it in your analysis; do not redistribute it as a dataset), `derived` is Airside Labs' assessment over it, `framework:easa` is public regulatory text you may quote with its cp_ref page, `knowledge` is authored message-type knowledge and `knowledge:workflow` is authored operational sequence structure, and `data_story` is a measured, dated finding from data Airside Labs holds (its own ADS-B receiver, FAA flight-plan and BTS traffic feeds) attached to the use cases it illustrates, and `scenario` is one real day reconstructed from those feeds with a traceable timeline. The EASA level and hazard on a use case are a title-level screen with a confidence, not a certification finding; a workflow is not an operating procedure; a data story is not live and not a statistic about the industry -- read its `applies_when` before quoting it.
Read only
Idempotent
Input schema
{'type': 'object', 'title': 'data_requirementsArguments', 'properties': {'role': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Role', 'default': None}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 25}, 'query': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Query', 'default': None}, 'sector': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Sector', 'default': None}, 'org_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Org Type', 'default': None}, 'use_case_id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Use Case Id', 'default': None}, 'screened_only': {'type': 'boolean', 'title': 'Screened Only', 'default': False}}}
get_use_case
Get use case
The full record for one use case, by id from a search or landscape result.
Returns the use-case text; the role that owns it with its description; the
organisation type (canonical and as the corpus names it); every data
requirement -- title, description, nominal update rate with a normalised
cadence class (real_time … annual), and the kind of system it typically
comes from; the EASA screen (AI level, hazard class, confidence, rationale)
with the framework rows it points at, page-cited; keywords; up to three
`data_stories`; and the five nearest use cases by text similarity.
A data story is what this use case's data does when you actually touch it:
a measured finding from Airside Labs' own receiver, the FAA flight-plan
feed, BTS traffic data or the served entity registry -- a fill rate, a
reused identifier, an ambiguous timestamp, the reach of one sensor. Each
carries `claim` (the finding, with its scope in the sentence),
`implication` (what to do about it), `identifiers` (exact ids to test
with), `evidence` (a small table), `sources` with editions and windows,
`caveats` and `not_to_be_read_as`. Put the claim in the requirements
section, the identifiers in the test plan, and cite the source and window.
A use case with no data stories is undecorated, not unillustratable.
Use this for the few worked examples an argument actually needs, chosen
with search_use_cases, use_case_landscape or similar_use_cases first.
Calls are counted against your key's daily allowance, so walking the
catalogue record by record is the wrong tool: use the aggregates.
The data requirements are what this use case *needs*, stated generically
("airport operational database", "ADS-B feed"), not what any particular
airport has. A requirement with cadence_class `unknown` had an update rate
the normaliser could not read; the raw `update_rate` is still there.
Do NOT treat the EASA screen as a determination: it is a title-level
assessment by Airside Labs with a confidence, made to sort a portfolio,
and a real classification needs a ConOps. Cite the framework rows by their
cp_ref if you quote them. Do NOT generalise a data story past its
`applies_when`: one receiver, three US airports and one data edition are
a witness, not a survey.
Every response carries `provenance`: `corpus` is Airside Labs' proprietary catalogue (use it in your analysis; do not redistribute it as a dataset), `derived` is Airside Labs' assessment over it, `framework:easa` is public regulatory text you may quote with its cp_ref page, `knowledge` is authored message-type knowledge and `knowledge:workflow` is authored operational sequence structure, and `data_story` is a measured, dated finding from data Airside Labs holds (its own ADS-B receiver, FAA flight-plan and BTS traffic feeds) attached to the use cases it illustrates, and `scenario` is one real day reconstructed from those feeds with a traceable timeline. The EASA level and hazard on a use case are a title-level screen with a confidence, not a certification finding; a workflow is not an operating procedure; a data story is not live and not a statistic about the industry -- read its `applies_when` before quoting it.
Read only
Idempotent
Input schema
{'type': 'object', 'title': 'get_use_caseArguments', 'required': ['use_case_id'], 'properties': {'use_case_id': {'type': 'integer', 'title': 'Use Case Id'}}}
resolve_aircraft_type
Resolve aircraft type
Which aircraft type does this designator or marketing name refer to?
Accepts an ICAO type designator (A21N) or a marketing name people actually
say ("A321neo", "Dash 8-400", "777-300ER", "Q400"). Returns the ICAO
designator, manufacturer, model, engine count and type, aircraft class, and
the ICAO wake turbulence category.
A name that identifies a family rather than a variant -- "Dreamliner",
"777X", "A330neo" -- returns `ambiguous` with the variants as alternates
and a confidence in the 0.4-0.69 band. That is the correct answer to an
imprecise question; do not collapse it to the first alternate.
`wtc` (wake turbulence category) is stated for almost every type, from FAA
Order JO 7360.1K, and is cited like any other field. Where it is null the
document leaves it blank -- do NOT fill it in from your own knowledge if the
caller needs it for separation or charging, say it is unavailable.
IATA aircraft type codes are NOT held -- the three-character form used in
schedules and booking systems, "77W" or "32N". IATA's list is licensed and
is not reproduced here, so those return `unresolved` with a note saying so.
If you are working from schedule data, convert to the ICAO designator
before calling (B77W, A20N); if you cannot, report the mapping as
unavailable rather than guessing it.
`capacity`, where present, carries what a network or fleet planner needs
from the TYPE: `seats_max_certified` (the type certificate's maximum),
`seats_typical` (the band the manufacturer publishes, with the cabin
configuration it assumes), `range_nm` (maximum range at typical payload,
a band where variants share a designator) and `mtow_kg`. Every value was
read from a type certificate data sheet or the manufacturer's own page and
confirmed by a second check; each is cited. The exact seat count of any
airframe is the operator's configuration and is NOT held -- do not present
the typical band as a particular aircraft's layout. For US markets,
frequency, seats flown and load factor by route and type ARE held -- use
route_capacity and airport_fleet_mix (BTS T-100, about three months in
arrears). Yield is not held anywhere: supply it to build a revenue model.
`capacity` is null where no confirmed record exists yet, and a
null field inside it means the value was researched but not confirmed, and
the notes say so.
Do NOT use this to determine what type operated a particular flight; use
resolve_registration for a specific airframe.
Reading `confidence`: 1.0 means an exact unique match on an unambiguous identifier for the as_of date. 0.7-0.99 means a unique match reached through normalisation, an alias or a historical record. 0.4-0.69 means the best of several plausible candidates and `alternates` is populated -- prefer asking the user over picking one. Below 0.4 is speculative: do not act on it.
`status` is resolved, ambiguous or unresolved. An unresolved answer is a real result, not an error: it means this dataset cannot identify the thing, and inventing one would be worse. Every field in `best` has a citation in `provenance`. When the thing exists and this dataset could not identify it, report_unmet_need with gap_kind `unresolved` is how that gap gets prioritised -- report it, then tell the user you could not find it.
Read only
Idempotent
Input schema
{'type': 'object', 'title': 'resolve_aircraft_typeArguments', 'required': ['identifier'], 'properties': {'as_of': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'As Of', 'default': None}, 'identifier': {'type': 'string', 'title': 'Identifier'}}}
search_use_cases
Search use cases
Which aviation AI use cases match this text? Find candidates by keyword.
Full-text search (BM25, stemmed) over 6,500 use cases spanning airports,
airlines, ANSPs, ground handlers, regulators, manufacturers and more, each
attached to a role and an organisation type. Returns summaries only --
id, short text, role, organisation type, EASA screen -- capped at 25.
Use get_use_case for the full record with its data requirements.
Search concrete operational nouns ("stand allocation", "baggage
misconnect", "de-icing", "turnaround"), not capability labels ("shared
operational picture", "digital transformation"): the corpus vocabulary is
operational, and abstract phrases match little. Terms are OR-ed and ranked,
so a multi-word query returns the best partial matches; `score` is
relative within one query and means nothing across queries.
Filters AND together. `org_type` is one of the 16 canonical types
(see use_case_landscape group_by=org_type). `screened_only=True` keeps the
~1,900 use cases that carry an EASA AI-level/hazard screen; `ai_level`
(0, 1A, 1B, 2A, 2B, 3A, 3B) and `hazard_class` (H1-H5) imply it.
Each result carries `data_stories`, the number of measured findings attached to
that use case (see get_use_case); prefer a decorated record when two read
alike, because it comes with evidence you can put in front of a reviewer.
Do NOT use this to establish whether an organisation actually runs such a
system, what vendor sells it, or whether it is certified: the catalogue
describes plausible, well-formed use cases for a role, and says nothing
about adoption. An empty result is an answer -- the catalogue has nothing
on that phrasing -- and report_unmet_need with gap_kind `no_use_case` is
how to say the gap mattered.
Every response carries `provenance`: `corpus` is Airside Labs' proprietary catalogue (use it in your analysis; do not redistribute it as a dataset), `derived` is Airside Labs' assessment over it, `framework:easa` is public regulatory text you may quote with its cp_ref page, `knowledge` is authored message-type knowledge and `knowledge:workflow` is authored operational sequence structure, and `data_story` is a measured, dated finding from data Airside Labs holds (its own ADS-B receiver, FAA flight-plan and BTS traffic feeds) attached to the use cases it illustrates, and `scenario` is one real day reconstructed from those feeds with a traceable timeline. The EASA level and hazard on a use case are a title-level screen with a confidence, not a certification finding; a workflow is not an operating procedure; a data story is not live and not a statistic about the industry -- read its `applies_when` before quoting it.
Read only
Idempotent
Input schema
{'type': 'object', 'title': 'search_use_casesArguments', 'required': ['query'], 'properties': {'role': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Role', 'default': None}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 10}, 'query': {'type': 'string', 'title': 'Query'}, 'sector': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Sector', 'default': None}, 'ai_level': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Ai Level', 'default': None}, 'org_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Org Type', 'default': None}, 'hazard_class': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Hazard Class', 'default': None}, 'screened_only': {'type': 'boolean', 'title': 'Screened Only', 'default': False}}}
trace_data_lineage
Trace data lineage
Which standard operational messages would evidence this data need?
The lineage spine is use case -> data requirement -> requirement family ->
standard message type -> data elements. Four modes. With `use_case_id`:
that use case's requirements grouped by family, each family with the
standard messages that evidence it (relevance primary/supporting, cadence,
element count) -- plus `requirements_without_standard_messages`, the needs
no standard message covers, which is the honest feed-gap statement. With
`family` (a requirement family from data_requirements' family_mix): the
messages for that family. With `message_id` (e.g. MVT, LDM, BSM, DPI,
METAR): the message definition, its data elements as shapes (time, count,
weight, identifier, status), the families it serves, and `data_stories` --
what Airside Labs measured about that message type in real feeds (fill
rates, identifier traps), each with its window and source. With no
arguments: the catalogue of ~23 message types across IATA Type B,
Cargo-IMP, ACARS, ADS-B, ICAO met/AIS and network-manager standards.
Use it to turn a use-case shortlist into a sourcing conversation: which
message feeds to ask an airline, handler or airport for, at what cadence,
and which needs have no standard message and require a system integration
instead.
Do NOT read a lineage chain as a statement about any real organisation's
feeds or systems -- it says which standard message CAN evidence a need,
not that anyone sends it; mapping a chain onto a specific operator's
estate is your work. Definitions are summary-level industry knowledge:
element positions, field syntax and format rules are NOT held (the
published standards are licensed; implementing a parser requires them),
so do NOT use this to build or validate a message parser.
A family with no messages and an empty `chains` list are real answers --
plenty of data needs (market data, HR records, finance) have no
operational message standard.
Every response carries `provenance`: `corpus` is Airside Labs' proprietary catalogue (use it in your analysis; do not redistribute it as a dataset), `derived` is Airside Labs' assessment over it, `framework:easa` is public regulatory text you may quote with its cp_ref page, `knowledge` is authored message-type knowledge and `knowledge:workflow` is authored operational sequence structure, and `data_story` is a measured, dated finding from data Airside Labs holds (its own ADS-B receiver, FAA flight-plan and BTS traffic feeds) attached to the use cases it illustrates, and `scenario` is one real day reconstructed from those feeds with a traceable timeline. The EASA level and hazard on a use case are a title-level screen with a confidence, not a certification finding; a workflow is not an operating procedure; a data story is not live and not a statistic about the industry -- read its `applies_when` before quoting it.
Read only
Idempotent
Input schema
{'type': 'object', 'title': 'trace_data_lineageArguments', 'properties': {'family': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Family', 'default': None}, 'message_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Message Id', 'default': None}, 'use_case_id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Use Case Id', 'default': None}}}
trace_workflow
Trace operational workflow
What happens before and after this use case, and who hands off to whom?
The catalogue is otherwise flat -- role, use case, data requirement -- with
no edges. This is the edges: named operational sequences with their steps in
order, the role at each step, the `gate` that must hold before the next one
may start, and what passes between roles at each handoff (headset, radio,
hand signal, system, visual, document, verbal, formal correspondence).
Three modes. With `use_case_id`: every workflow that places that use case,
its position, and the steps immediately `preceded_by` and `followed_by` it
with what transfers. That is the real operational dependency -- distinct
from `similar_use_cases`, which is text similarity, and from
`data_requirements(query=...)`, which infers a relationship from two use
cases sharing a feed. A gate is a dependency; a shared feed is a
correlation. With `workflow_id`: the whole sequence end to end. With
`phase` (arrival, turnaround, departure, abnormal, oversight,
certification, crew qualification, planning, mission) or nothing: the
catalogue of workflows with their step and handoff counts.
Use it to answer "if this prediction improved, what downstream step benefits
and who would have to act on it", to see which roles a change touches, and
to find the abnormal branches -- communication failure, coupling break-off,
spillage, a ramp finding serious enough to stop the aircraft -- which are
sequences in their own right and where the costly failures live. Some
sequences cross an organisation: a finding travels from an authority to an
operator and back, and those edges carry the channel `formal
correspondence`.
Coverage is ground handling, regulatory oversight and certification, crew
qualification and rostering, and specialised missions -- not the whole
catalogue. A use case with an empty `placed_in` is outside the covered
sequences, which is a statement about coverage and not about the use case,
and some are unplaced because they are standing monitoring states rather
than sequences. A step whose `role_in_catalogue` is false is a real
participant the catalogue holds no use cases for -- the flight deck on a
turnaround, the officer who signs a certificate -- not a data error. The
sequences are Airside Labs' derived structure: they say how this work is
ordered in the industry, NOT that any particular operator runs it this way,
and they are not an operating procedure. Do NOT use one as a checklist to
work to; the authority for that is the operator's own manual.
Every response carries `provenance`: `corpus` is Airside Labs' proprietary catalogue (use it in your analysis; do not redistribute it as a dataset), `derived` is Airside Labs' assessment over it, `framework:easa` is public regulatory text you may quote with its cp_ref page, `knowledge` is authored message-type knowledge and `knowledge:workflow` is authored operational sequence structure, and `data_story` is a measured, dated finding from data Airside Labs holds (its own ADS-B receiver, FAA flight-plan and BTS traffic feeds) attached to the use cases it illustrates, and `scenario` is one real day reconstructed from those feeds with a traceable timeline. The EASA level and hazard on a use case are a title-level screen with a confidence, not a certification finding; a workflow is not an operating procedure; a data story is not live and not a statistic about the industry -- read its `applies_when` before quoting it.
Read only
Idempotent
Input schema
{'type': 'object', 'title': 'trace_workflowArguments', 'properties': {'phase': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Phase', 'default': None}, 'use_case_id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Use Case Id', 'default': None}, 'workflow_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Workflow Id', 'default': None}}}
use_case_landscape
Use-case landscape
How many use cases are there, sliced one way? Counts you can quote.
`group_by` is one of org_type (16 canonical organisation types: Airport,
Airline, Air Navigation Service Provider, Ground Handling, Regulator /
Authority, Aerospace Manufacturing, MRO / Maintenance …), sector, role
(500+ roles), ai_level, hazard_class, or cadence_class (counts data
requirements rather than use cases). Filters AND together and apply
before grouping, so group_by=role with org_type=Airport lists airport
roles by how many use cases each carries. Also returns the total in scope
and how many of those carry an EASA screen.
This is the tool to call first: it tells you what the catalogue covers
before you search it, and the exact spellings that the filters accept.
Grouping the whole catalogue by ai_level or hazard_class shows a large
null bucket -- only the ~1,900 airport-operations use cases were screened;
pass screened_only=True to see the screened distribution alone.
Counts describe the catalogue, not the industry: a type with many use
cases is a type the corpus describes in detail, not one that adopts more
AI. Do NOT present a count as market evidence.
Every response carries `provenance`: `corpus` is Airside Labs' proprietary catalogue (use it in your analysis; do not redistribute it as a dataset), `derived` is Airside Labs' assessment over it, `framework:easa` is public regulatory text you may quote with its cp_ref page, `knowledge` is authored message-type knowledge and `knowledge:workflow` is authored operational sequence structure, and `data_story` is a measured, dated finding from data Airside Labs holds (its own ADS-B receiver, FAA flight-plan and BTS traffic feeds) attached to the use cases it illustrates, and `scenario` is one real day reconstructed from those feeds with a traceable timeline. The EASA level and hazard on a use case are a title-level screen with a confidence, not a certification finding; a workflow is not an operating procedure; a data story is not live and not a statistic about the industry -- read its `applies_when` before quoting it.
Read only
Idempotent
Input schema
{'type': 'object', 'title': 'use_case_landscapeArguments', 'properties': {'role': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Role', 'default': None}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 30}, 'sector': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Sector', 'default': None}, 'ai_level': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Ai Level', 'default': None}, 'group_by': {'type': 'string', 'title': 'Group By', 'default': 'org_type'}, 'org_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Org Type', 'default': None}, 'hazard_class': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Hazard Class', 'default': None}, 'screened_only': {'type': 'boolean', 'title': 'Screened Only', 'default': False}}}
validate_identifiers
Validate identifiers
Do these aviation identifiers describe the same thing on this date?
Give any combination of a registration (tail number), a Mode-S 24-bit
address, an ICAO type designator, an operator name, an airline designator
(IATA or ICAO), a callsign and a flight designator, plus `as_of`. Each
pair that can be checked is checked, and every check comes back with a
verdict -- `consistent`, `contradicted` or `unverifiable` -- the detail,
and the rule that decided it. `contradictions` lists the failures on
their own so an agent can act on them without reading everything.
The top-level verdict is `consistent` ONLY when every check verified.
When some checks passed but others could not be checked it is
`consistent_where_checkable` -- a different answer, because an absent
record silences exactly the checks that would catch a false claim about
that airframe. `unverifiable_count` says how many checks were silent;
treat anything above zero as partial coverage, not a pass.
Use it before acting on identifiers assembled from more than one message:
a movement message's registration against a surveillance track's address,
a schedule's flight number against the operating airline, a type in a
load message against the airframe's record. One contradiction is a
contradiction; the top-level `verdict` never averages it away against
the checks that passed.
What the rules are: the registration record on the date (address, type,
operator); a *previous* holder of a re-issued mark is named as such rather
than reported as a mismatch; the FAA allocation arithmetic for N-numbers
(an address decodes to exactly one N-number, so a wrong pairing is provable
without any second source); a military or government airframe is said,
not judged; the airline's callsign against its record and the FAA
contractions order; the carrier inside the flight designator against the
airline given; and whether the type designator exists at all.
`unverifiable` means this dataset cannot say -- there is no record, or the
record lacks the field -- and is a different answer from `consistent`. Do
NOT read it as a pass. It does not check hex-to-country for non-US
addresses, performance plausibility (range, block time) or anything live,
and it does not resolve identifiers you did not give it: call the
resolve_* tools for that. Pass `as_of` for any historical question; marks
and designators are reused and an undated check is silently wrong for
past data.
Read only
Idempotent
Input schema
{'type': 'object', 'title': 'validate_identifiersArguments', 'properties': {'as_of': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'As Of', 'default': None}, 'flight': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Flight', 'default': None}, 'airline': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Airline', 'default': None}, 'callsign': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Callsign', 'default': None}, 'operator': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Operator', 'default': None}, 'icao_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Icao Type', 'default': None}, 'mode_s_hex': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Mode S Hex', 'default': None}, 'registration': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Registration', 'default': None}}}
Changed
airport_fleet_mix
Oct. 1, 2026, 2:52 a.m.
Changed
route_capacity
Oct. 1, 2026, 2:52 a.m.
Added
airport_runways
Oct. 1, 2026, 2:52 a.m.
Added
airframe_flights
Oct. 1, 2026, 2:52 a.m.
Added
airport_fleet_mix
Sept. 21, 2026, 2:59 a.m.
Added
route_capacity
Sept. 21, 2026, 2:59 a.m.
Added
get_scenario
Sept. 21, 2026, 2:59 a.m.
Added
scenarios
Sept. 21, 2026, 2:59 a.m.
Changed
easa_ai_framework
Sept. 21, 2026, 2:59 a.m.
Changed
trace_workflow
Sept. 21, 2026, 2:59 a.m.
Changed
trace_data_lineage
Sept. 21, 2026, 2:59 a.m.
Changed
data_requirements
Sept. 21, 2026, 2:59 a.m.
Changed
similar_use_cases
Sept. 21, 2026, 2:59 a.m.
Changed
get_use_case
Sept. 21, 2026, 2:59 a.m.
Changed
search_use_cases
Sept. 21, 2026, 2:59 a.m.
Changed
use_case_landscape
Sept. 21, 2026, 2:59 a.m.
Added
flight_airframes
Sept. 21, 2026, 2:59 a.m.
Added
feedback_status
Sept. 17, 2026, 12:33 p.m.
Added
submit_suggestion
Sept. 17, 2026, 12:33 p.m.
Added
airport_size_band
Sept. 17, 2026, 12:33 p.m.
Added
airport_connectivity
Sept. 17, 2026, 12:33 p.m.
Added
airport_operations_status
Sept. 17, 2026, 12:33 p.m.
Added
airport_operator
Sept. 17, 2026, 12:33 p.m.
Added
airport_network_integration
Sept. 17, 2026, 12:33 p.m.
Added
easa_ai_framework
Sept. 17, 2026, 12:33 p.m.
Added
trace_workflow
Sept. 17, 2026, 12:33 p.m.
Added
trace_data_lineage
Sept. 17, 2026, 12:33 p.m.
Added
data_requirements
Sept. 17, 2026, 12:33 p.m.
Added
similar_use_cases
Sept. 17, 2026, 12:33 p.m.
Added
get_use_case
Sept. 17, 2026, 12:33 p.m.