Skip to main content
Glama

faa-aircraft-registry-mcp-server

Server Details

Offline, keyless lookup of the US civil aircraft registry — decode N-numbers, search records.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
cyanheads/faa-aircraft-registry-mcp-server
GitHub Stars
2
Server Listing
@cyanheads/faa-aircraft-registry-mcp-server

TDQS

A4.7/5.0
Disambiguation5/5

Each tool has a clear and distinct purpose: faa_get_aircraft_type decodes a code to specs, faa_search_aircraft_types discovers codes by name; faa_lookup_registration gets full details for active N-numbers, faa_get_registration_status handles inactive or unreserved ones; faa_search_registrations searches by criteria. Descriptions explicitly clarify overlaps, so agents can reliably choose the right tool.

Naming Consistency5/5

All tools follow a uniform 'faa_verb_noun' pattern with consistent verb choices (get, lookup, search). The naming is predictable and makes the toolset easy to navigate.

Tool Count5/5

Five tools is ideal for a focused registry server. Each tool provides a necessary function (search, decode, status check, full lookup) without redundancy, covering the core workflow in a lean set.

Completeness5/5

The toolset covers all key operations for a read-only aircraft registry: searching registrations and aircraft types, looking up full records, and checking registration status across all files. There are no obvious gaps for the intended use case.

Available Tools

5 tools
faa_get_aircraft_typefaa-aircraft-registry-mcp-server: get aircraft typeA
Read-onlyIdempotent
Inspect

Decode a 7-character FAA manufacturer/model/series code to aircraft specifications — manufacturer, model, aircraft category, aircraft type, engine type, number of engines, number of seats, weight class, cruise speed, and type-certificate data sheet/holder. Use faa_search_aircraft_types first to discover a code by manufacturer or model name.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesManufacturer/model/series code (e.g. "2072714") — 6–7 uppercase alphanumeric characters, usually 7. Discover codes via faa_search_aircraft_types.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoThe 7-char manufacturer/model/series code.
errorNoPresent when the call failed. Absent on success.
modelNoAircraft model name.
categoryNoAircraft category (Land, Sea, Amphibian) as code + label.
engineTypeNoEngine type as code + label.
weightClassNoWeight class as the literal FAA string (e.g. "CLASS 1").
aircraftTypeNoAircraft type as code + label.
manufacturerNoAircraft manufacturer name.
numberOfSeatsNoNumber of seats; may be blank on the reference record.
cruiseSpeedMphNoCruise speed in mph; often blank (permissible field).
numberOfEnginesNoNumber of engines; may be blank on the reference record.
builderCertificationNoBuilder certification (Type Certificated, Not Type Certificated, Light Sport) as code + label.
typeCertificateDataSheetNoType-certificate data sheet identifier.
typeCertificateDataHolderNoType-certificate data holder.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is covered. The description adds behavioral context by listing the specific output fields (cruise speed, type-certificate data sheet, etc.), which helps the agent anticipate the return value. It does not contradict annotations and provides useful detail beyond them, though it could mention error handling for invalid codes, which is a minor gap.

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

Conciseness5/5

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

The description is a single sentence that front-loads the action, then lists outputs, and ends with usage guidance. Every phrase earns its place: the action, the output fields, and the pointer to the sibling tool. There is zero waste and no repetition of schema content beyond what is necessary for context.

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

Completeness5/5

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

Given the low complexity (1 parameter, no nested objects) and the presence of an output schema (which explains return values), the description is thorough. It covers the purpose, the exact parameter format, and the workflow for obtaining a code. Nothing critical is missing for an agent to call this tool successfully.

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

Parameters3/5

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

The schema description covers 100% of the parameter 'code', including its format (6–7 uppercase alphanumeric characters, usually 7) and an example. The description repeats this information almost verbatim without adding new meaning. Since the schema already carries the load, a baseline 3 is appropriate. The slight inconsistency of calling it '7-character' in the description while schema says 6–7 is minor and does not significantly affect understanding.

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

Purpose5/5

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

The description opens with a specific verb ('Decode') and a resource (a 7-character FAA manufacturer/model/series code), then enumerates the exact output fields (manufacturer, model, category, engine type, etc.). It clearly distinguishes this from sibling tools like faa_search_aircraft_types, which is for discovering codes, and faa_get_registration_status, which is about registration, not aircraft specs.

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

Usage Guidelines5/5

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

The description explicitly instructs the agent to 'Use faa_search_aircraft_types first to discover a code by manufacturer or model name.' This provides a clear precondition for when to use this tool versus the alternative, guiding the agent through the correct workflow. No exclusions are needed because the use case is self-evident from the sibling tools.

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

faa_get_registration_statusfaa-aircraft-registry-mcp-server: get registration statusA
Read-onlyIdempotent
Inspect

Resolve whether a US civil aircraft N-number is active, deregistered, reserved, or unknown, including the available registration and airworthiness status. Use this rather than faa_lookup_registration when a number may be inactive. A number that was never issued returns recordType "unknown" — a valid, informative answer, not an error. Accepts "N12345" or "12345".

ParametersJSON Schema
NameRequiredDescriptionDefault
nNumberYesUS registration N-number to resolve. Accepts "N12345" or "12345" (leading N optional). Shape: 1–5 characters — a leading digit 1–9, then digits, optionally ending in 1–2 letters (I and O are unused).

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
statusNoRegistration/cancellation status as code + label (active and deregistered records).
nNumberNoNormalized N-number without the leading "N".
purgeDateNoScheduled purge date, YYYY-MM-DD (reserved records).
cancelDateNoCancellation date, YYYY-MM-DD (deregistered records).
recordTypeNoResolved registration state: active, deregistered, reserved, or unknown.
reserveDateNoDate the number was reserved, YYYY-MM-DD (reserved records).
modeSCodeHexNoMode S code in hex / ICAO 24-bit address (deregistered records).
serialNumberNoManufacturer serial number (deregistered records).
certIssueDateNoCertificate issue date, YYYY-MM-DD (active records).
expirationDateNoRegistration expiration date, YYYY-MM-DD (active records).
nNumberDisplayNoN-number with the leading "N" for display.
typeReservationNoType of reservation as code + label (reserved records).
nNumberForChangeNoThe N-number this reservation changes to/from (reserved records).
airworthinessDateNoAirworthiness certificate date, YYYY-MM-DD (active records).
airworthinessClassNoAirworthiness classification as code + label (active records).
expirationNoticeDateNoDate an expiration notice was sent, YYYY-MM-DD (reserved records).
manufacturerModelCodeNo7-char manufacturer/model/series code (deregistered records).

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, covering safety. The description adds the important behavioral clarification that an unissued number returns recordType 'unknown' as a valid answer, not an error, which goes beyond the structured annotations. This adds genuine context for interpreting responses.

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

Conciseness5/5

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

The description is three sentences with no redundant wording. It front-loads the core purpose, then provides usage guidance, and finally clarifies input format. Every sentence earns its place, making it extremely concise yet informative.

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

Completeness5/5

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

The tool is a single-parameter resolver and the description covers the input format, the semantic output categories, the 'unknown' handling, and the distinction from its primary sibling. With an output schema present and annotations for idempotence, nothing an agent needs to correctly invoke and interpret this tool is missing.

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

Parameters3/5

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

Schema coverage is 100% for the single nNumber parameter, which already includes format details (leading N optional, character shape). The description reinforces this ('Accepts "N12345" or "12345"') but adds no new semantics beyond the schema's own description, so a baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool's verb ('Resolve') and resource ('US civil aircraft N-number'), and specifies the possible outcomes: active, deregistered, reserved, or unknown. It also explicitly contrasts with the sibling tool 'faa_lookup_registration' when a number may be inactive, making differentiation unambiguous.

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

Usage Guidelines5/5

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

The description provides explicit guidance: 'Use this rather than faa_lookup_registration when a number may be inactive.' This names the alternative and the exact condition for selection, leaving no ambiguity for the agent.

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

faa_lookup_registrationfaa-aircraft-registry-mcp-server: lookup registrationA
Read-onlyIdempotent
Inspect

Decode one US civil aircraft N-number to its full registration record — aircraft make/model, engine, year manufactured, airworthiness, registration status, Mode S (ICAO 24-bit) code, and registered owner (when owner-PII redaction is off). Accepts "N12345" or "12345" (the leading N is optional). Returns ownerRedacted: true when owner details were withheld. A number that is known but inactive (deregistered or reserved) is not found here — use faa_get_registration_status for its current state.

ParametersJSON Schema
NameRequiredDescriptionDefault
nNumberYesUS registration N-number to decode. Accepts "N12345" or "12345" (leading N optional). Shape: 1–5 characters — a leading digit 1–9, then digits, optionally ending in 1–2 letters (I and O are unused).

Output Schema

ParametersJSON Schema
NameRequiredDescription
makeNoAircraft manufacturer name.
errorNoPresent when the call failed. Absent on success.
modelNoAircraft model name.
ownerNoRegistrant name/address; present only when redaction is off.
regionNoRegistrant's FAA region as code + label.
statusNoRegistration status (e.g. Valid registration) as code + label.
nNumberNoNormalized N-number without the leading "N" (the registry storage form).
kitModelNoKit model (amateur-built aircraft); often blank.
uniqueIdNoFAA unique aircraft identifier.
engineMakeNoEngine manufacturer name.
engineTypeNoEngine type (e.g. Reciprocating, Turbo-fan) as code + label.
engineModelNoEngine model name.
aircraftTypeNoAircraft type (e.g. Fixed-wing single-engine) as code + label.
modeSCodeHexNoMode S code in hex — the ICAO 24-bit address used to key live flight-tracking data.
serialNumberNoManufacturer serial number.
certIssueDateNoCertificate issue date (YYYY-MM-DD).
ownerRedactedNoTrue when owner name/address were withheld from this payload by the redaction gate.
expirationDateNoRegistration expiration date (YYYY-MM-DD).
lastActionDateNoDate of the last registration action (YYYY-MM-DD).
modeSCodeOctalNoMode S transponder code in octal.
nNumberDisplayNoN-number in conventional display form, with the leading "N".
fractionalOwnerNoTrue when the aircraft is under fractional ownership.
kitManufacturerNoKit manufacturer (amateur-built aircraft); often blank.
yearManufacturedNoYear the aircraft was manufactured; often blank (permissible field).
airworthinessDateNoAirworthiness certificate date (YYYY-MM-DD).
airworthinessClassNoAirworthiness classification (Standard, Experimental, …) from CERTIFICATION char 1, as code + label.
approvedOperationsRawNoRaw FAA approved-operations sub-code string; interpretation varies by airworthiness class.
manufacturerModelCodeNo7-char manufacturer/model/series code.
engineManufacturerModelCodeNo5-char engine manufacturer/model code.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds owner redaction behavior (ownerRedacted flag) and the limitation that inactive numbers are not found, which are not covered by annotations. It does not contradict annotations; it enriches the safety and outcome picture beyond the structured hints.

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

Conciseness4/5

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

Two sentences, each earning its place: the first states the primary function and output fields; the second covers input nuance and the alternative tool. It is slightly dense but well-organized and not bloated. The key action is front-loaded.

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

Completeness5/5

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

Given a single parameter, an existing output schema, and read-only/idempotent annotations, the description covers the output fields, owner redaction, input variations, and the limitation of inactive numbers with a pointer to the correct sibling. Nothing essential is missing for an agent to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100% and includes the same guidance about the optional leading N and accepted formats. The description repeats this rather than adding new parameter-specific meaning (e.g., examples or edge cases). Baseline 3 is appropriate when the schema already documents the parameter thoroughly.

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

Purpose5/5

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

The description clearly states the verb 'Decode' with the resource 'US civil aircraft N-number' and enumerates the returned fields (make/model, engine, airworthiness, status, Mode S, owner). It explicitly differentiates from sibling faa_get_registration_status by noting that inactive numbers are not found here. This is specific and not a tautology.

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

Usage Guidelines5/5

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

The description explicitly names faa_get_registration_status as the alternative for inactive numbers, providing a clear when-not-to-use condition. It also clarifies the optional leading N in the input format, which guides correct invocation. This is direct and leaves little to inference.

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

faa_search_aircraft_typesfaa-aircraft-registry-mcp-server: search aircraft typesA
Read-onlyIdempotent
Inspect

Search FAA aircraft types by manufacturer/model name, aircraft type code, or category code to discover 7-character manufacturer/model/series codes and browse specifications. Use this before faa_get_aircraft_type to find a code by name. At least one filter is required. Every response reports totalCount (all matches, not just this page); when more remain, it returns nextOffset — pass it back as offset to page forward.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return (1–200, default 25).
queryNoManufacturer and/or model name to match (full-text).
offsetNoZero-based index of the first result to return — pass the nextOffset from a previous response, with identical filters, to page forward (default 0).
categoryNoAircraft category code to match exactly (1 Land, 2 Sea, 3 Amphibian).
aircraftTypeNoAircraft type code to match exactly (e.g. "6" for rotorcraft).

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit that was applied (present only when truncated is set).
errorNoPresent when the call failed. Absent on success.
shownNoNumber of results on this page (present only when truncated is set).
noticeNoGuidance when no aircraft types matched, or when more matches remain.
truncatedNoPresent and true only when matches remain beyond this page.
nextOffsetNoOffset to request the next page; absent when this page reached the end of the matches.
totalCountNoTotal aircraft types matching the filters, across all pages. Always present.
aircraftTypesNoMatching aircraft-reference summaries for this page (up to limit).

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, covering safety and idempotency. The description adds valuable behavioral context beyond annotations: 'Every response reports totalCount (all matches, not just this page); when more remain, it returns nextOffset — pass it back as offset to page forward.' This explains pagination semantics and the totalCount meaning, which are not derivable from annotations or schema. No contradictions with annotations.

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

Conciseness5/5

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

Four sentences, each essential: purpose and outcome, sibling routing, filter requirement, and pagination behavior. The main purpose is front-loaded, followed by usage guidance and behavioral details. No filler or repetition of schema information. It is appropriately compact for the content it conveys.

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

Completeness5/5

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

The description covers what the tool does, when to use it (before faa_get_aircraft_type), what inputs are acceptable (at least one filter, listed types), and the output semantics (totalCount, nextOffset, pagination). With an output schema present, return-value details are already structured, so the description doesn't need to restate them. The combination of annotations, schema, and description leaves no critical gap for an agent to call this correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so baseline is 3. The description adds meaning by mapping the search dimensions: 'by manufacturer/model name, aircraft type code, or category code' corresponds to query, aircraftType, and category. It also adds the critical constraint 'At least one filter is required,' which is not present in the schema (no required fields). This user-facing requirement goes beyond the schema's per-field descriptions, so a 4 is appropriate.

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

Purpose5/5

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

Description clearly states the tool's purpose: 'Search FAA aircraft types by manufacturer/model name, aircraft type code, or category code to discover 7-character manufacturer/model/series codes and browse specifications.' It names the specific resource (FAA aircraft types) and the output (codes, specifications). It also distinguishes from sibling faa_get_aircraft_type by explicitly positioning this as the search-before-retrieve step, so an agent can tell them apart without opening schemas.

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

Usage Guidelines5/5

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

Provides explicit usage guidance: 'Use this before faa_get_aircraft_type to find a code by name.' This names the alternative and the condition that selects this tool. It also states the required precondition 'At least one filter is required' and explains pagination usage for continuing results. No ambiguity remains about when to call this versus siblings.

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

faa_search_registrationsfaa-aircraft-registry-mcp-server: search registrationsA
Read-onlyIdempotent
Inspect

Search active US civil aircraft registrations by owner name, make/model, state, aircraft type, or Mode S (hex) code. Returns decoded summaries with N-numbers to drill into via faa_lookup_registration. At least one filter is required. Owner-name search is unavailable when this deployment redacts owner PII — search by make/model, state, aircraft type, or Mode S code instead. Every response reports totalCount (all matches, not just this page); when more remain, it returns nextOffset — pass it back as offset to page forward.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of results to return (1–200, default 25).
stateNoTwo-letter state/territory abbreviation (exact match).
offsetNoZero-based index of the first result to return — pass the nextOffset from a previous response, with identical filters, to page forward (default 0).
makeModelNoAircraft make and/or model to match (full-text).
modeSCodeNoMode S code in hex to match exactly (ICAO 24-bit address).
ownerNameNoRegistrant name to match (full-text). Rejected when owner-PII redaction is on.
aircraftTypeNoAircraft type code to match exactly (e.g. "4" for fixed-wing single-engine).

Output Schema

ParametersJSON Schema
NameRequiredDescription
capNoThe limit that was applied (present only when truncated is set).
errorNoPresent when the call failed. Absent on success.
shownNoNumber of results on this page (present only when truncated is set).
noticeNoGuidance when no registrations matched, or when more matches remain.
truncatedNoPresent and true only when matches remain beyond this page.
nextOffsetNoOffset to request the next page; absent when this page reached the end of the matches.
totalCountNoTotal registrations matching the filters, across all pages. Always present.
registrationsNoMatching registration summaries for this page (up to limit).

TDQS

A5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, but the description adds crucial behavioral details beyond those: the requirement for at least one filter, the owner-PII redaction condition, and the pagination mechanism (totalCount, nextOffset, offset). These are non-obvious behaviors that would otherwise be unknown. No contradiction with annotations exists.

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

Conciseness5/5

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

The description is three sentences with zero filler. It leads with the core purpose, then covers the required-filter constraint and the redaction caveat, and finishes with pagination behavior. Every sentence contributes essential information, and the structure is logical — purpose first, then constraints, then continuation mechanics.

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

Completeness5/5

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

For a tool with 7 optional parameters, an output schema, and a pagination design, the description covers all critical operational aspects: search fields, output format, mandatory-filter condition, deployment-specific redaction, and pagination flow. It even names the follow-up tool (faa_lookup_registration). There is no missing information an agent would need to invoke it correctly, especially given the annotations already cover read-only idempotency.

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

Parameters5/5

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

Schema coverage is 100% with individual parameter descriptions, providing a baseline of 3. The description adds meaningful context on top: it clarifies that at least one filter is required (a cross-parameter constraint not in the JSON Schema, since no property is marked required), and it explains how offset relates to pagination via nextOffset. It also reinforces the ownerName rejection condition, tying the parameter to the deployment context. This goes beyond mere parameter listing.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Search active US civil aircraft registrations' and lists the searchable fields. It clearly distinguishes itself from the sibling tools by mentioning the drill-in step to faa_lookup_registration, establishing it as the search entry point rather than a lookup. The output expectation ('decoded summaries with N-numbers') is also stated, leaving no ambiguity about the tool's role.

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

Usage Guidelines5/5

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

The description explicitly states a hard requirement ('At least one filter is required') and provides conditional guidance for when owner-name search is unavailable ('search by make/model, state, aircraft type, or Mode S code instead'). It also gives precise pagination instructions, telling the agent to pass nextOffset back as offset. This is actionable, context-specific guidance that distinguishes when and how to use the tool.

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. Dates show when Glama detected each change.

  1. 5 tool updates
    • Changedfaa_get_aircraft_type6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "code"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The code is well-formed but does not identify a known aircraft type. `invalid_code`: The input is not a structurally valid code (expected 6–7 uppercase alphanumeric characters). Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "not_found",
        +            "invalid_code"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "code"
        -]
    • Changedfaa_get_registration_status7 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "recordType",
        +      "nNumber",
        +      "nNumberDisplay"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `invalid_n_number`: The input is not a structurally valid N-number (after the optional leading \"N\": 1–5 characters, a leading digit 1–9, then digits, optionally 1–2 trailing letters; I and O are unused). Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "invalid_n_number"
        +          ],
        +          "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"
        +}
      • changedOutput schema / properties / recordType / description
        Previous value: -"Which file the number resolved in: active (MASTER), deregistered (DEREG), reserved (RESERVED), or unknown (none)."New value: +"Resolved registration state: active, deregistered, reserved, or unknown."
      • removedOutput schema / required
        Removed value: -[
        -  "recordType",
        -  "nNumber",
        -  "nNumberDisplay"
        -]
    • Changedfaa_lookup_registration12 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "nNumber",
        +      "nNumberDisplay",
        +      "fractionalOwner",
        +      "ownerRedacted"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • changedOutput schema / properties / engineMake / description
        Previous value: -"Engine manufacturer name, resolved from the reference table."New value: +"Engine manufacturer name."
      • changedOutput schema / properties / engineManufacturerModelCode / description
        Previous value: -"5-char engine manufacturer/model code (join key into the engine reference table)."New value: +"5-char engine manufacturer/model code."
      • changedOutput schema / properties / engineModel / description
        Previous value: -"Engine model name, resolved from the reference table."New value: +"Engine model name."
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `not_found`: The N-number is well-formed but has no active registration. `invalid_n_number`: The input is not a structurally valid N-number (after the optional leading \"N\": 1–5 characters, a leading digit 1–9, then digits, optionally 1–2 trailing letters; I and O are unused). Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "not_found",
        +            "invalid_n_number"
        +          ],
        +          "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"
        +}
      • changedOutput schema / properties / make / description
        Previous value: -"Aircraft manufacturer name, resolved from the reference table."New value: +"Aircraft manufacturer name."
      • changedOutput schema / properties / manufacturerModelCode / description
        Previous value: -"7-char manufacturer/model/series code (join key into the aircraft reference table)."New value: +"7-char manufacturer/model/series code."
      • changedOutput schema / properties / model / description
        Previous value: -"Aircraft model name, resolved from the reference table."New value: +"Aircraft model name."
      • removedOutput schema / required
        Removed value: -[
        -  "nNumber",
        -  "nNumberDisplay",
        -  "fractionalOwner",
        -  "ownerRedacted"
        -]
    • Changedfaa_search_aircraft_types6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "aircraftTypes",
        +      "totalCount"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `no_filters`: No search filter was supplied. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "no_filters"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "aircraftTypes",
        -  "totalCount"
        -]
    • Changedfaa_search_registrations6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "registrations",
        +      "totalCount"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `owner_search_disabled`: ownerName was supplied while owner-PII redaction is enabled on this deployment. `no_filters`: No search filter was supplied. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "owner_search_disabled",
        +            "no_filters"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "registrations",
        -  "totalCount"
        -]
  2. 3 tool updates
    • Changedfaa_get_aircraft_type1 field changed
      • changedInput schema / properties / code / description
        Previous value: -"7-character manufacturer/model/series code (e.g. \"2072714\"). Discover codes via faa_search_aircraft_types."New value: +"Manufacturer/model/series code (e.g. \"2072714\") — 6–7 uppercase alphanumeric characters, usually 7. Discover codes via faa_search_aircraft_types."
    • Changedfaa_get_registration_status1 field changed
      • changedInput schema / properties / nNumber / description
        Previous value: -"US registration N-number to resolve. Accepts \"N12345\" or \"12345\"; the leading N is optional."New value: +"US registration N-number to resolve. Accepts \"N12345\" or \"12345\" (leading N optional). Shape: 1–5 characters — a leading digit 1–9, then digits, optionally ending in 1–2 letters (I and O are unused)."
    • Changedfaa_lookup_registration1 field changed
      • changedInput schema / properties / nNumber / description
        Previous value: -"US registration N-number to decode. Accepts \"N12345\" or \"12345\"; the leading N is optional."New value: +"US registration N-number to decode. Accepts \"N12345\" or \"12345\" (leading N optional). Shape: 1–5 characters — a leading digit 1–9, then digits, optionally ending in 1–2 letters (I and O are unused)."
  3. 2 tool updates
    • Changedfaa_search_aircraft_types9 fields changed
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Zero-based index of the first result to return — pass the nextOffset from a previous response, with identical filters, to page forward (default 0).",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedOutput schema / properties / aircraftTypes / description
        Previous value: -"Matching aircraft-reference summaries (up to limit)."New value: +"Matching aircraft-reference summaries for this page (up to limit)."
      • changedOutput schema / properties / cap / description
        Previous value: -"The limit that was applied (present only when capped)."New value: +"The limit that was applied (present only when truncated is set)."
      • addedOutput schema / properties / nextOffset
        Added value: +{
        +  "description": "Offset to request the next page; absent when this page reached the end of the matches.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / notice / description
        Previous value: -"Guidance when no aircraft types matched the supplied filters."New value: +"Guidance when no aircraft types matched, or when more matches remain."
      • changedOutput schema / properties / shown / description
        Previous value: -"Number of results returned (present only when capped)."New value: +"Number of results on this page (present only when truncated is set)."
      • addedOutput schema / properties / totalCount
        Added value: +{
        +  "description": "Total aircraft types matching the filters, across all pages. Always present.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / truncated / description
        Previous value: -"Present and true only when the result set was capped at the limit — more matches exist."New value: +"Present and true only when matches remain beyond this page."
      • changedOutput schema / required
        Previous value: -[
        -  "aircraftTypes"
        -]New value: +[
        +  "aircraftTypes",
        +  "totalCount"
        +]
    • Changedfaa_search_registrations9 fields changed
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Zero-based index of the first result to return — pass the nextOffset from a previous response, with identical filters, to page forward (default 0).",
        +  "maximum": 9007199254740991,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • changedOutput schema / properties / cap / description
        Previous value: -"The limit that was applied (present only when capped)."New value: +"The limit that was applied (present only when truncated is set)."
      • addedOutput schema / properties / nextOffset
        Added value: +{
        +  "description": "Offset to request the next page; absent when this page reached the end of the matches.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / notice / description
        Previous value: -"Guidance when no registrations matched the supplied filters."New value: +"Guidance when no registrations matched, or when more matches remain."
      • changedOutput schema / properties / registrations / description
        Previous value: -"Matching registration summaries (up to limit)."New value: +"Matching registration summaries for this page (up to limit)."
      • changedOutput schema / properties / shown / description
        Previous value: -"Number of results returned (present only when capped)."New value: +"Number of results on this page (present only when truncated is set)."
      • addedOutput schema / properties / totalCount
        Added value: +{
        +  "description": "Total registrations matching the filters, across all pages. Always present.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / truncated / description
        Previous value: -"Present and true only when the result set was capped at the limit — more matches exist."New value: +"Present and true only when matches remain beyond this page."
      • changedOutput schema / required
        Previous value: -[
        -  "registrations"
        -]New value: +[
        +  "registrations",
        +  "totalCount"
        +]
  4. 5 tool updates
    • First observedfaa_get_aircraft_type
    • First observedfaa_get_registration_status
    • First observedfaa_lookup_registration
    • First observedfaa_search_aircraft_types
    • First observedfaa_search_registrations

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.