https://mcp.airsidelabs.com/mcp ↗
Aviation identity resolution and an AI use-case atlas, with provenance and temporal validity
Airside Labs Aviation Tools is a remote MCP server published at mcp.airsidelabs.com. It has been probed 8 times since 9/12/2026. It answered in 8 of them (100.0%), a near-uninterrupted record. Median response time is 737 ms, a delay an agent will notice. It exposes a broad tool surface of 22 tools. On the protocol side it still runs 2025-11-25 and has not moved to the newer spec.
Can an LLM agent pick the right tool here — names, descriptions and parameter clarity are assessed.
resolve_airport — Parameters `as_of` and `country_hint` have unspecified types.validate_identifiers — Description lacks clear examples of valid input combinations.use_case_landscape — Parameter `group_by` has no explicit enum or value examples.search_use_cases — Description does not clarify supported query formats or limitations.Risk: low
tools/list structure, inputSchema validity, and a functional smoke test — the components of the 0-100 score.
Tools the server advertised in the latest measurement — measured, not catalog-claimed.
resolve_airportWhich aerodrome does this airport code or name refer to on a given date? Accepts an IATA three-letter code, an ICAO four-letter code, an airport name fragment or a city name. Returns the aerodrome with its codes, location, elevation, IANA timezone and type (large, medium, small, heliport or closed). Pass `as_of` whenever the question concerns a past date. Airport codes move between aerodromes: ATH meant Ellinikon until 2001 and Athens International after it; HKG meant Kai Tak until 1998. Without a date these questions get today's answer, which is silently wrong for historical data. `timezone` is always an IANA identifier such as Europe/London, never a UTC offset, because an offset cannot express daylight saving. Do NOT use this for live operational status, runway or stand data, slots,
identifierstringrequiredas_ofcountry_hintresolve_airlineWhich airline does this designator, name or callsign refer to on a date? Accepts an IATA two-character designator, an ICAO three-letter designator, an airline name or a callsign. Returns the operator with both designators, country, operational status and, where an airline ceased, its successor. `as_of` matters more here than for any other tool. IATA two-character designators are heavily reused: SN was Sabena until 2001 and has been Brussels Airlines since 2007, so "SN" without a date is a question with two answers. Where a date falls between two holders the tool returns `unresolved` with both as alternates rather than guessing. ICAO three-letter designators are not recycled the same way and are the safer identifier to carry through a pipeline. `status` is reported as at the date asked a
identifierstringrequiredas_ofresolve_aircraft_typeWhich 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
identifierstringrequiredas_ofresolve_registrationWhich airframe wore this registration on a given date? Accepts a tail number in any common form: VH-OQA, VHOQA, lowercase, padded with whitespace. Returns the aircraft with its country of registry, ICAO type designator, an embedded resolved aircraft type, operator, owner, serial number and Mode-S hex address. A registration is a slot rather than a permanent name: marks are surrendered and reissued. N803AL was one airframe from 1987 to 1993 and a different one, a 787-8, from 2015; N264CP moved to a different Mode-S address in 2015. Pass `as_of` for any historical question. Where the date falls between two holders the tool returns `unresolved`, reports the country from the nationality mark, and offers both airframes as alternates. When the tail is unknown but the nationality mark is recog
registrationstringrequiredas_ofparse_flight_identifierSplit a flight designator into carrier and number, and identify the carrier. Accepts the forms that arrive in real message traffic: TK1979, BAW276, "U2 8341", BA02490, BA2490A. Returns the parsed carrier with its resolved airline, the flight number, any operational suffix, which scheme was used (IATA or ICAO), and both normalised forms. Two things this tool will not do. It will not tell you who operated the flight: a designator names the marketing carrier, and a codeshare is invisible in the string. And it will not invent a carrier for a bare flight number -- pass `context` and it will look for an identifier in that text, but the result is capped at 0.6 confidence and returned as a candidate, because inference is not identification. Pass `date` when parsing historical data: the carrier
textstringrequireddatecontextvalidate_identifiersDo 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
registrationmode_s_hexicao_typeoperatorairlinecallsignflightas_ofreport_unmet_needTell us what you came looking for and could not get from these tools. Call this when you needed something aviation-related that this toolset did not give you. It is not an error channel and it is not a retry: it is how the next version of these tools learns what is missing. A need reported here is read by a person. Use it when: - a tool returned `unresolved` and you believe the thing exists - a tool returned `ambiguous` and nothing available could break the tie - the entity resolved but a field you needed was null or absent - no tool here covers the question at all - a tool answered confidently and the answer looked wrong `gap_kind` must be one of: `unresolved`, `ambiguous`, `missing_field`, `no_tool`, `wrong_answer`, `no_use_case` (the use-case catalogue had nothing on the op
soughtstringrequiredgap_kindstringrequiredtool_triedidentifierdetailuse_case_landscapeHow 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 hazar
group_bystringorg_typesectorroleai_levelhazard_classscreened_onlybooleanlimitintegersearch_use_casesWhich 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
querystringrequiredorg_typesectorroleai_levelhazard_classscreened_onlybooleanlimitintegerget_use_caseThe 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; and the five nearest use cases by text similarity. 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 wr
use_case_idintegerrequiredsimilar_use_casesWhat else in the catalogue is like this use case? Nearest neighbours by meaning. Returns up to 20 use cases closest in embedding space (bge-base cosine over the use-case text), as summaries with a `similarity`. Good for "what else is like the one we picked", for finding the same idea stated for a different role or organisation type, and for spotting near-duplicates before counting them as two. Similarities are compressed into roughly 0.5-0.95: rank within one result, never threshold across the catalogue, and do not read 0.9 as "the same". The neighbours were computed at build time as the top 20 for each use case; an `org_type` or `screened_only` filter narrows within those 20 and does not search further out, so a tight filter can return few or none -- that is honest, not broken. For an o
use_case_idintegerrequiredorg_typescreened_onlybooleanlimitintegerdata_requirementsWhat 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 me
use_case_idqueryroleorg_typesectorscreened_onlybooleanlimitintegerDerived by comparing consecutive probes — changes in era, protocol version, build and reachability.
Add this badge to your README — it updates automatically as measurements change.
[](https://mcpmetrics.io/servers/com-airsidelabs-aviation-tools)<a href="https://mcpmetrics.io/servers/com-airsidelabs-aviation-tools"><img src="https://mcpmetrics.io/badge/com.airsidelabs/aviation-tools/era.svg" alt="mcpmetrics"></a>You are seeing the last 7 days. Sign up for the full history. Which check failed and why is in the dashboard.
Sign up free to seeThe catalog entries whose name and description are closest to this one, found with the same index the search box uses.
Read-only tools for finding where a small business leaks deals, time, and cash.
Lu71 safeguards agentic payments end to end. Your AI agent captures purchase intent before buying, then files chargebacks automatically when merchants fail to deliver. No manual intervention. No phone calls. No forms. For card payments (Visa, Mastercard, Stripe Issuing, Lithic), Lu71 files formal disputes with the card network and tracks resolution in real time. For crypto payments (Ethereum, Solana, Bitcoin, XRP, and 6 more chains), Lu71 verifies recipient addresses against sanctions lists, scam databases, and on chain fraud signals before funds leave. One MCP install gives your agent six tools: capture intent, file disputes, check status, list history, update evidence, and verify crypto addresses. Works with Claude, Codex, ChatGPT, Kiro, VS Code, and 10 more clients. Pay nothing to file. Pay nothing if we lose. 5% only when we recover your money.
Pay-per-call agent tools over x402: site audits, llms.txt generation, wallet watch, catalog.
Free US cleaning cost, time, crew, and chemical-use calculators with visual reports.
An MCP Server that provides identity verification and anti-fraud tools for AI agents via deepidv.
Agent skills from the ProvenSkills Labs store, delivered with updates over one connector.
| Run | Era | Modern | ms | Legacy | ms | Versions |
|---|---|---|---|---|---|---|
| 2026-09-13 06:40:42 | Legacy | 401 | 692 | 200 | 698 | 2025-11-25 |
| 2026-09-13 04:35:29 | Legacy | 401 | 804 | 200 | 803 | 2025-11-25 |
| 2026-09-13 01:33:33 | Legacy | 401 | 751 | 200 | 747 | 2025-11-25 |
| 2026-09-12 23:31:36 | Legacy | 401 | 675 | 200 | 683 | 2025-11-25 |
| 2026-09-12 21:29:15 | Legacy | 401 | 619 | 200 | 625 | 2025-11-25 |
| 2026-09-12 19:27:29 | Legacy | 401 | 1227 | 200 | 1228 | 2025-11-25 |
| 2026-09-12 17:24:09 | Legacy | 401 | 690 | 200 | 684 | 2025-11-25 |
| 2026-09-12 15:21:42 | Legacy | 401 | 741 | 200 | 737 | 2025-11-25 |
Each block is one measurement round. Green: working response. Amber: responded but the server was returning errors (5xx). Red: no response at all.
Each cell is one probe run. Faded cells are incomplete probes — one leg did not answer, so the era is inconclusive.
The two probe legs separately: modern server/discover and legacy initialize.
Comments
Sign in to write a comment
No comments yet. Be the first.