Skip to main content
Glama

Server Details

Brazilian business aviation: registry, owner, flights, base, market, maintenance and sale signals.

Ownership verified
Status
Healthy
Uptime
79.1% over 42 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A3.9/5.0

Scored across 41 tools

Disambiguation4/5

Most tools have clearly distinct scopes (aircraft profile, fleet search, global fleet search, market listings, watch management), and the descriptions provide strong disambiguation. The main confusion is the deprecated jt_movements duplicating jt_registry_changes, plus overlapping statistical tools like jt_fleet_stats/jt_operators_stats/global_fleet_stats that require careful reading.

Naming Consistency4/5

All names use a consistent jt_ prefix and snake_case, which is predictable. Minor deviations exist in verb placement and descriptor style (e.g., jt_compute_tco vs jt_aircraft_lookup vs jt_watch_set), but nothing chaotic or confusing.

Tool Count2/5

41 tools is heavy for any single server and exceeds the typical 3-15 well-scoped range. While the domain is broad, many specialized stats/signal/watch variants could likely be consolidated, and one tool is explicitly deprecated.

Completeness5/5

The surface covers registry lookups, fleet search, owner/operator profiling, market listings, pricing, flight activity, airport traffic, cross-registry matching, and a full watch lifecycle (add/set/remove/list/rules). No obvious CRUD or lifecycle gaps remain for the stated aircraft intelligence domain.

Available Tools

41 tools
jt_aircraft_baseWhere an aircraft actually sleepsA
Read-onlyIdempotent
Inspect

Overnight ranking of one registration over N days (default 365): aerodromes where the aircraft slept: nights = midnights elapsed between each arrival and the next departure from the same aerodrome (an ongoing stay counts up to now, ongoing=true), overnightEvents = stays that crossed at least one midnight, plus share and last arrival, side by side with the inferred hub (hubIcao), the owner city at the Receita and baseUf (the registered state of the owner in the RAB, which is not a base). inferredBase is the top of the ranking and confidence (high/medium/low/none) depends on how many nights were tracked. Answers "where is this aircraft based" honestly: these facts can disagree.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoWindow in days. Default 365.
registrationYesBrazilian registration (PP-LMH).

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A3.8/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description goes well beyond them: it defines how nights are counted (midnights between arrival and next departure), how ongoing stays are handled, what overnightEvents means, how confidence is derived, and the caveat that baseUf is the RAB owner state, not a base. This is unusually rich behavioral context.

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

Conciseness3/5

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

The purpose is front-loaded, but the body is a long, clause-chained sentence with heavy in-line definitions of return fields, some of which duplicate what the output schema already conveys. It is information-dense but at the cost of readability and structure.

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

Completeness4/5

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

Given a fairly complex analytical tool with an output schema present, the description is complete enough to call correctly and to interpret the 'base' concept's ambiguity. It over-explains return semantics the output schema would carry, but nothing essential for correct invocation 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%, so both parameters (registration and days) are fully documented in the schema, including the default 365 and the 30-730 range. The description restates the window/default but adds no syntax or format detail beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

The description names a specific verb+resource combination ('Overnight ranking of one registration over N days') and clarifies the output concept (aerodromes where the aircraft slept, inferredBase). It is distinguishable from siblings like jt_aircraft_flights and jt_aircraft_history, though the density of jargon requires careful reading.

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

Usage Guidelines3/5

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

It implicitly frames the tool around answering 'where is this aircraft based' and warns that the facts can disagree, which hints at when the result is appropriate. However, it never explicitly names an alternative sibling or states when NOT to use this tool, leaving routing to inference.

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

jt_aircraft_flightsFlight history of an aircraftA
Read-onlyIdempotent
Inspect

Tracked flights of one Brazilian registration in a period (default last 90 days, max 365): departure, arrival, arrivalConfidence (landed, last_seen, reported, inferred, unknown), duration, plus coverage (status never_seen/active/lost, first and last tracked flight, flights on record). Newest first, max 200 per call, paginate with nextCursor. Coverage is partial and a third of flights end at strips without ground coverage (see the caveat).

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date YYYY-MM-DD (default: today).
fromNoStart date YYYY-MM-DD (default: 90 days ago).
limitNoDefault 50.
cursorNonextCursor from a previous page.
registrationYesBrazilian registration (PR-TBL).

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description goes well beyond them: newest-first ordering, 200-per-call cap with nextCursor paging, partial coverage with a status model (never_seen/active/lost), arrivalConfidence values, and the caveat that roughly a third of flights end at strips without ground coverage. That is exactly the behavioral context an agent needs to interpret results.

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?

A single dense paragraph that front-loads the resource and period before enumerating return fields, confidence values, coverage states and paging. Every clause carries information, though the parenthetical lists make it slightly heavy to scan.

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

Completeness4/5

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

With an output schema present, return values need not be re-explained, yet the description still supplies the coverage caveat and confidence vocabulary. The only soft spot is the dangling 'see the caveat' reference, which points at guidance that is only partially spelled out in the description itself.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description adds meaning the schema does not carry: the default and maximum window length (default 90 days, max 365) is stated in prose only, and it clarifies cursor pagination intent. Date and limit syntax remain schema-owned.

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

Purpose4/5

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

States a specific verb and resource: tracked flights of one Brazilian registration within a period, with the fields returned (departure, arrival, arrivalConfidence, duration). The scope 'one Brazilian registration' is precise, but no sibling tool is named to anchor the contrast with jt_aircraft_history or jt_movements.

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

Usage Guidelines3/5

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

The intended use (flight history for a single aircraft) is implied by the description and the Italian-registration scope, but there is no explicit when-to-use guidance or when-not condition relative to jt_aircraft_history, jt_movements, or jt_ground_events. The agent must infer the selection.

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

jt_aircraft_historyBrazilian aircraft history (JetFax)A
Read-onlyIdempotent
Inspect

Ownership/operator timeline of a Brazilian-registered aircraft by tail (matricula), the foreign origin when it was imported, and published accidents/incidents (CENIPA/NTSB/ASN). timeline[] is one item per RAB monthly snapshot where the owner and/or operator SET changed (first item is always change=first_seen, the earliest snapshot on record, not an event); dates are the photo where the change was first observed, not the exact day. foreignOrigin is only filled when the RAB recorded a previous foreign mark; country is only set (US) when an FAA deregistration record matches the mark by N-number AND serial number together (N-number alone is reused by the FAA across decades and is not proof by itself). Natural-person names may appear (public RAB data); no personal document (CPF) is ever returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
registrationYesBrazilian registration, with or without hyphen, any case (PR-TBL, prtbl, PT-XYZ).

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.2/5.0
Behavior5/5

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

Annotations already cover read-only/idempotent/non-destructive, and the description adds substantial extra behavior: timeline items represent owner/operator changes with change=first_seen semantics, dates are observation dates not event dates, foreignOrigin is only filled on recorded foreign marks, and country=US requires an FAA match on N-number AND serial together. This is exactly the kind of nuance an agent cannot get from the schema or annotations.

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

Conciseness4/5

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

Front-loaded with the core purpose, then dense qualification clauses that each carry real meaning (timeline semantics, FAA match rule, CPF exclusion). It is long and somewhat run-on, but nearly every sentence earns its place.

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

Completeness5/5

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

An output schema exists, so return shapes need not be spelled out, yet the description still explains the tricky semantics of timeline[], foreignOrigin, and country that the schema likely cannot convey. Combined with full annotation coverage and a 100%-documented parameter, nothing needed to call this tool correctly 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% and the single parameter already documents hyphen/case tolerance in detail. The description adds only the term 'matricula' as a synonym for the tail, which is marginal beyond the schema. Baseline 3 applies.

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 names the precise resource and scope: an ownership/operator timeline for a Brazilian-registered tail, plus foreign origin and published accidents/incidents. This is clearly distinguishable from siblings like jt_aircraft_base (static data) or jt_registry_changes (no accident/origin narrative). An agent can pick this tool without opening the schema.

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

Usage Guidelines3/5

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

Usage is implied by the content described (history/timeline queries for a Brazilian tail), but the description never states when to prefer this over jt_aircraft_base, jt_registry_changes, or jt_cross_registry, nor any exclusions. It's adequate but leaves routing to inference.

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

jt_aircraft_lookupBrazilian aircraft by registrationA
Read-onlyIdempotent
Inspect

Full profile of a Brazilian-registered aircraft by its registration mark (matricula: PR-XXX, PT-XXX, PP-XXX, PS-XXX): RAB status, model, year, owner set (names + CNPJs + Receita Federal record with city, CNAE, size, contact and company partners/QSA), operator, owner state (base.uf), lien (gravame), airworthiness (CVA/CA validity), flight activity (ADS-B/FR24), market presence (listings) and a published value reference by vintage (confidence = vintage or model_range). The RAB has no aircraft base: base.uf is the registered state of the owner; the owner city is in owner.rfb.municipio.

ParametersJSON Schema
NameRequiredDescriptionDefault
detailNocompact (default): QSA limited to decision makers (qsaTotal tells the full count) and operator.rfb collapsed when it is the same company as the owner. full: everything.
registrationYesBrazilian registration, with or without hyphen, any case (PR-TBL, prtbl, PT-XYZ).

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotent, destructive=false and openWorld=false, so safety is covered. The description adds genuine domain context beyond that: it explains what 'base.uf' actually means (registered state of the owner, not an aircraft base) and where the owner city lives, which prevents a real misinterpretation.

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

Conciseness3/5

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

Purpose is front-loaded, but the body is a single sprawling sentence enumerating many returned fields that the output schema already covers. It is dense rather than wasteful, yet part of the enumeration is redundant given a structured output schema.

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

Completeness4/5

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

With an output schema present the return-field list is optional, and annotations carry the safety profile, so the description only needs to add the domain caveat it does provide. Nearly complete; only explicit sibling routing would push it higher.

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%, documenting both 'registration' (format, case, hyphen) and 'detail' (compact vs full behavior). The description repeats registration prefixes but adds no parameter semantics beyond the schema, so baseline 3 applies. The field enumeration describes return values, not inputs.

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

Purpose5/5

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

States a specific verb and resource ('Full profile of a Brazilian-registered aircraft by its registration mark') and immediately distinguishes itself from the US sibling jt_us_aircraft_lookup by scoping to Brazilian registrations with example prefixes. An agent can pick this over the batch or US variant without opening a schema.

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

Usage Guidelines3/5

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

The lookup-by-registration usage is implied clearly, but there is no explicit when-to-use/when-not guidance and no mention of near siblings like jt_aircraft_lookup_batch or jt_us_aircraft_lookup. Adequate but leaves routing to inference.

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

jt_aircraft_lookup_batchBrazilian aircraft by registration, in batchA
Read-onlyIdempotent
Inspect

Same profile as jt_aircraft_lookup for up to 25 registrations in one call (compact detail by default). Each item is found:true with the profile, or found:false with the reason. Debits one lookup per registration from the daily quota.

ParametersJSON Schema
NameRequiredDescriptionDefault
detailNoDefault compact.
registrationsYesBrazilian registrations, with or without hyphen, any case. Invalid items come back as found:false with error invalid_registration; duplicates (PR-TBL and prtbl) count once.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds genuinely non-obvious behavior on top: partial-failure semantics ('found:true with the profile, or found:false with the reason') and quota cost ('Debits one lookup per registration from the daily quota'). Quota consumption is exactly the kind of side effect annotations cannot express.

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?

Three sentences, zero filler, and the highest-value facts (sibling equivalence, batch limit, quota cost) are front-loaded. Nothing needs to be read twice.

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

Completeness5/5

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

With an output schema present, return values need not be described, yet the tool still discloses partial-failure shape and quota debit. Combined with the batch limit and sibling anchoring, an agent has everything needed to call 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%, so the schema already documents both parameters including detail defaults, max 25 items, hyphen/case tolerance, invalid-item handling and duplicate collapse. The description only restates 'compact detail by default', adding no meaning beyond the schema; baseline 3 applies.

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

Purpose5/5

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

States the specific resource (aircraft profiles) and the batch scope ('up to 25 registrations in one call'), and explicitly anchors itself to the sibling jt_aircraft_lookup ('same profile as'). An agent can distinguish it from both the single-lookup tool and unrelated siblings immediately.

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

Usage Guidelines4/5

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

Names the reference sibling and the batching condition ('up to 25 registrations in one call'), which implies when this is preferable to jt_aircraft_lookup. It leaves the when-not-to-use (e.g. single registration, or needing more than 25) to inference rather than stating it outright.

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

jt_airport_lookupAirport lookupA
Read-onlyIdempotent
Inspect

Find an airport by ICAO code, IATA code, city or name (Brazil first): coordinates, elevation, runway length and type. Ranking: exact code > exact city or name > scheduled service / public use > large > medium > small > heliport > has runway on record > has ICAO; rankingReason explains the top pick and alternatives[] lists the rest. Many small strips have no ICAO or runway length on record.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesICAO (SBRJ) ou texto (Santos Dumont, Rio de Janeiro, SDU).

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds valuable context beyond that: the ranking priority, the meaning of rankingReason and alternatives[], and a caveat that many small strips lack ICAO or runway length.

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

Conciseness4/5

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

Front-loaded with the core purpose, followed by ranking details and a data-quality caveat. The three sentences are dense but each carries useful information; the ranking list is long but directly relevant to result interpretation.

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

Completeness4/5

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

Given the single required parameter, rich annotations, and an output schema, the description is mostly complete: it explains query forms, ranking behavior, output fields, and data limitations. The main gap is the absence of usage guidance relative to sibling tools.

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 already documents the query parameter with examples. The description adds some meaning by naming IATA and city/name as valid query types and noting Brazil-first ranking, but does not add syntax or format constraints beyond the schema.

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

Purpose4/5

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

States a specific verb (Find) and resource (airport), lists input types (ICAO/IATA/city/name) and returned fields (coordinates, elevation, runway length/type). It is clear what the tool does, but does not explicitly differentiate itself from siblings such as jt_airport_traffic or jt_runway_check.

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

Usage Guidelines2/5

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

No when-to-use guidance or alternatives are provided. The ranking and Brazil-first note describe behavior rather than usage context, leaving the agent to infer when this tool is preferable to sibling airport-related tools.

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

jt_airport_trafficAircraft that used an airportA
Read-onlyIdempotent
Inspect

Which aircraft arrived at or departed from an airport (ICAO) in a period, from tracked flights (ADS-B/FR24) kept by Jet Tracker: arrivals, departures, arrivalsInferred, nights slept there (nights = midnights elapsed between arrival and the next departure, ongoing stays count up to now; overnightEvents = number of stays that crossed at least one midnight), relation (based = hub or 4+ nights, recurring = 3+ movements, occasional), first and last seen, whether the airport is the aircraft inferred hub, plus model, owner set and RAB status. Default period: last 90 days; max 365. Ordered by nights then activity. Max 100 per call, paginate with nextCursor. Coverage is partial (see the caveat). It answers "who flies to my region", not "who is registered in my city".

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date YYYY-MM-DD (default: today).
fromNoStart date YYYY-MM-DD (default: 90 days ago).
icaoYesAirport ICAO code, 4 letters/digits (SNBR, SBBR, SBKP). City names are not accepted.
limitNoDefault 25.
cursorNonextCursor from a previous page.
segmentNoDefault executive.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds genuinely useful behavior beyond that: ordering (nights then activity), a 100-per-call cap with nextCursor pagination, and an explicit partial-coverage caveat. The 'see the caveat' reference is vague since the caveat itself is not included, which keeps this from a 5.

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

Conciseness4/5

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

Front-loads the core answer ('Which aircraft arrived at or departed...') before the metric definitions. It is a dense block with several parenthetical clauses, but nearly every clause carries real semantic information (nights, overnightEvents, relation thresholds) that an agent needs.

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

Completeness4/5

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

For a read-only analytical tool with a full output schema, the description is close to complete: it covers defaults, limits, ordering, pagination and the derived fields. The only gap is the reference to an unexplained 'caveat' about partial coverage, which the agent cannot resolve from the definition alone.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description explains derived semantics not in the schema: what 'nights', 'overnightEvents', and 'relation' (based/recurring/occasional) mean, plus the period defaults and cap. It does not clarify the segment enum, but the added derived-field definitions push it above baseline.

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

Purpose5/5

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

States a precise verb+resource: aircraft that arrived at or departed from a given ICAO airport within a period, drawn from ADS-B/FR24 tracked flights. It explicitly demarcates scope ('who flies to my region', not 'who is registered in my city'), so an agent can separate it from registry-oriented siblings like jt_aircraft_lookup or jt_us_aircraft_lookup.

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

Usage Guidelines4/5

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

Gives clear context (arrivals/departures analysis for an airport, default 90 days, max 365) and a scope exclusion that routes the agent away from registration-based tools. It stops short of naming an explicit alternative sibling or stating when-not to use it in favour of, e.g., jt_movements.

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

jt_compute_tcoTotal cost of ownership (comparator)A
Read-onlyIdempotent
Inspect

Total cost of ownership across FIVE operating models (own, fractional, charter, jetcard, invest + charter) for a model with a full cost profile, given hours per year, horizon and opportunity rate: average annual and hourly cost, undiscounted horizon total, NPV and the year-by-year cashflows of every scenario (sign convention: outflows negative), plus assumptions (variable per hour and fixed per year from the SAME canonical cost engine as jt_model_specs, costModelVersion, fractional hours included). Accepts the catalog slug or any alias (phenom-300, embraer-phenom-300e, hawker 400xp); comparadorProfiles in jt_model_search lists the five profiles. Values in USD; Brazilian opportunity rate (CDI/Selic) by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesModelo com calculadora completa: slug de catálogo (phenom-100, embraer-phenom-300, beechcraft-hawker-400xp, leonardo-aw109-power, airbus-h125), slug do perfil (embraer-phenom-100, leonardo-aw109), alias, família ou nome. A resposta diz em model qual perfil foi usado.
horizonYearsNoHorizonte da comparação em anos: 1, 3, 5 ou 10. Default 5.
hoursPerYearYesHoras voadas por ano (10-600, limite do comparador).
opportunityRatePctNoTaxa de oportunidade do capital (CDI/Selic). Default 12% BR 2026.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already declare read-only/idempotent/no-destruction, and the description adds substantial context beyond them: the exact output set (annual and hourly averages, horizon total, NPV, year-by-year cashflows), the sign convention (outflows negative), the assumptions block, the costModelVersion, and the default Brazilian opportunity rate. This is rich disclosure for a pure-read comparator.

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

Conciseness3/5

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

Purpose is front-loaded, but the entire specification is crammed into one run-on sentence of roughly 130 words mixing inputs, outputs, assumptions, aliasing and currency. Every clause is informative, yet the structure makes it hard to parse, so conciseness is only adequate.

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 four-parameter, read-only comparator with an output schema, the description covers everything an agent needs: valid input domain, prerequisite cost profile, alias acceptance, currency and default rate, output contents and sign convention, plus cross-references to the sibling tools that supply profiles and specs.

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

Parameters4/5

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

Schema coverage is 100%, so 3 is the baseline, but the description adds real meaning: it confirms alias tolerance with concrete examples (phenom-300, embraer-phenom-300e, hawker 400xp) and notes that the response reports which profile was actually used via its model field. The hours/horizon/rate semantics themselves are already fully covered by the schema.

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

Purpose5/5

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

States a specific verb+resource (compute total cost of ownership) and pinpoints the exact scope: five operating models on a model with a full cost profile. It distinguishes itself from siblings by naming jt_model_specs as the shared cost engine and jt_model_search as the source of comparadorProfiles, so an agent can place it precisely in the toolset.

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

Usage Guidelines4/5

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

Gives a clear prerequisite — the model must have a full cost profile — and routes the agent to jt_model_search (comparadorProfiles) to discover the five valid profiles. It never states when NOT to use it or contrasts it with jt_trip_cost, so the guidance is contextual rather than exclusionary.

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

jt_cross_registrySame airframe in other registriesA
Read-onlyIdempotent
Inspect

Given a registration (Brazilian PR-/PT-, US N-number, or CA/AU/NZ/MX) or a serial number, find the same airframe in the other registries Jet Tracker indexes (Brazil, USA, Canada, Australia, New Zealand, Mexico), matched by serial + compatible manufacturer/model. Traces an aircraft moving between countries. Serial numbers repeat across models (see the caveat).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesRegistration mark or serial number (MSN).

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), but the description adds real behavioral value beyond them: the match algorithm (serial + compatible manufacturer/model) and the caveat that serial numbers repeat across models, which warns the agent about false positives.

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 dense sentences, front-loaded with purpose and inputs. The trailing '(see the caveat)' is slightly awkward since no separate caveat section exists, but the substance is tight and earns its place.

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

Completeness5/5

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

For a single-parameter, read-only lookup with a 100%-covered schema and an output schema, the description supplies everything the agent needs: accepted inputs, matching logic, target registries, and a false-positive caveat. Nothing material is missing.

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

Parameters4/5

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

Schema coverage is 100% and there is only one parameter, so the baseline would be 3. The description goes beyond the schema by enumerating accepted input formats (Brazilian PR-/PT-, US N-number, CA/AU/NZ/MX registrations, or a serial), which usefully clarifies what a valid 'query' looks like.

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

Purpose5/5

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

States a specific verb+resource (find the same airframe across registries) and scopes it to the exact registry set Jet Tracker indexes. The 'traces an aircraft moving between countries' phrase plus the matching rule (serial + compatible manufacturer/model) distinguishes it clearly from siblings like jt_aircraft_lookup and jt_registry_changes.

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

Usage Guidelines4/5

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

Clearly conveys when this tool is the right one: when you have a registration or serial and want the counterpart airframe in another registry. It does not explicitly name alternatives such as jt_aircraft_lookup for single-registry lookups, but the context is unambiguous.

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

jt_fleet_statsBrazilian fleet stats for a modelA
Read-onlyIdempotent
Inspect

Brazilian fleet of a catalog model (slug or alias, whole family; model.matchedBy says how it resolved) from the RAB. Two separate rulers: registryTotal (= total) counts REGISTRATIONS in every status, cancelled included (history); alive counts the LIVE fleet (operational + mark reservation + suspended) and is the headline. airframes and aliveAirframes deduplicate by serial (physical aircraft). byRbac is the split over the REGISTRY universe and byRbacAlive over the LIVE universe. Also as_of (RAB snapshot date), source.url (page where a human checks the records) and scope (the exact cut). Live count, not a survey.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesSlug do modelo.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial context beyond that: the two counting universes (registry vs live), what each includes and excludes (cancelled registrations; operational + mark reservation + suspended), serial-level dedup, the as_of snapshot date, and the source URL for verification.

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

Conciseness4/5

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

Front-loaded with the headline metric and efficient, but the long parenthetical run-ons and stacked clauses take effort to parse; a small amount of restructuring would improve it without losing content.

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

Completeness4/5

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

With an output schema present, return fields need not be explained, yet the description still labels the key metrics, which makes the response interpretable. The remaining gap is the absent routing guidance against the sibling stats/search tools.

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

Parameters4/5

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

Schema coverage is 100% (the slug description is minimal), and the description adds real meaning: the slug may be an alias, resolves to a whole family, and model.matchedBy reports how resolution happened. That goes beyond the schema's bare 'Slug do modelo.'

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

Purpose4/5

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

It states a specific verb+resource: Brazilian fleet counts for a catalog model drawn from the RAB, with named metrics (registryTotal, alive, airframes). The 'Brazilian' qualifier implicitly separates it from jt_global_fleet_stats, but the sibling is never named, so differentiation requires inference.

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

Usage Guidelines3/5

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

Usage is only implied: it returns a count for a model, so an agent can guess it is the aggregate-stat call versus jt_fleet_search or jt_aircraft_lookup. It never states when to prefer this over jt_global_fleet_stats, nor any prerequisite about resolving a slug first.

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

jt_fractional_fitFractional program fit scoreA
Read-onlyIdempotent
Inspect

Score 0-100 of how well one registration fits a fractional/shared-ownership program, as a transparent sum of public-record evidence: owner role (natural person or personal holding), owner fleet size (a single-aircraft owner is a stronger fit), aircraft age, tracked utilization in the last 365 days, owner state (Southeast/South demand pool) and model category (light jet, vlj, midsize or turboprop). Each contributing fact is in evidence[] with its weight; coverage[] says which inputs existed. It is a heuristic fit, not an appraisal or an offer.

ParametersJSON Schema
NameRequiredDescriptionDefault
registrationYesBrazilian registration (PR-TBL).

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so safety is covered. The description adds meaningful context beyond that: the score is a transparent weighted sum, contributing facts appear in evidence[] with weights, coverage[] reveals which inputs existed, and the result is explicitly heuristic rather than authoritative.

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?

The purpose and score range are front-loaded, and the inventory of scoring factors is compressed into one clause. It is dense but nearly every element (evidence[], coverage[], the heuristic disclaimer) carries information an agent would otherwise have to guess.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, yet the description still clarifies the shape of evidence[] and coverage[], which helps interpretation. Combined with the annotations covering safety, an agent has enough to invoke and read the tool 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?

Only one parameter and schema description coverage is 100%, so the schema carries the parameter burden (including the Brazilian registration format). The description adds only that one registration is scored, which is inherent in the purpose statement, so the baseline 3 is appropriate.

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

Purpose4/5

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

States a specific verb and resource: a 0-100 fit score for one registration against a fractional/shared-ownership program, and enumerates the scoring inputs. It is clearly a per-registration scoring tool, distinct from market-level siblings like jt_fractional_market, though no sibling is named explicitly.

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

Usage Guidelines3/5

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

Usage is implied by the scoring factors (owner role, fleet size, age, utilization, state, model category) but there is no explicit when-to-use guidance or routing to an alternative such as jt_fractional_market. The negative framing ('not an appraisal or an offer') narrows interpretation but does not tell the agent when to pick this tool.

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

jt_fractional_marketFractional / shared-ownership market (RBAC 91K)A
Read-onlyIdempotent
Inspect

Brazilian RBAC 91K shared/fractional ownership program: ANAC-certified administrators (EA, Especificação Administrativa) cross-referenced with their LIVE RAB fleet by CNPJ root, plus monitored non-certified operators (e.g. Flapper, no EA on file). Views: operators (roster: brand, legal name, CNPJ roots, EA revision/date, initial certification, authorized models, key people, owner states of the fleet (baseUfs), live fleet totals, certified/monitored flag), aircraft (live 91K fleet, one row per physical aircraft, paginated), models (fleet_by_model aggregated across operators, no double count for a co-operated tail), timeline (EA revision changelog + delisting events, all operators merged, newest first), bases (operator x owner state counts; the RAB has no aircraft base). Filter any view to one operator with operator (slug, brand, legal name or CNPJ/root). EA (Especificação Administrativa) data is the ANAC administrative specification for shared/fractional ownership programs (RBAC 91K), from published SEI documents: it authorizes MODELS, not tails. Fleet counts and the aircraft view are the RAB cross-referenced by the operator CNPJ root (getFractionalView), not the EA text. "monitored" operators (e.g. Flapper) run a shared-use program with no ANAC EA on file: they are never certified, and carry certified:false.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoOne of operators, aircraft, models, timeline, bases. Default operators.
limitNoaircraft view only. Default 25.
cursorNoaircraft view only. nextCursor from a previous page.
operatorNoRestrict to one operator: slug (aliar), brand or legal name, or CNPJ / 8-digit root.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotent/non-destructive/openWorld=false, so the safety profile is covered. The description adds real provenance context beyond that: EA authorizes MODELS not tails, fleet counts come from the RAB cross-referenced by CNPJ root (getFractionalView), and 'monitored' operators are never certified. That's meaningful behavioral context, though it doesn't cover pagination or provenance caveats for the timeline view.

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?

The scope and view inventory are front-loaded, which is right for a multi-view tool of this complexity. It is dense but largely earns its length; there is some redundancy in the trailing sentences repeating what EA is and that counts come from the RAB, which could be tightened.

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?

An output schema exists, so return formatting needn't be described. Given the multi-view complexity, the description supplies the view inventory, filter semantics, and data-provenance caveats (EA vs RAB, monitored vs certified) an agent needs to call it correctly, leaving no material gap.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3. The description goes further by explaining the semantics behind each view value (what 'models' aggregates vs 'bases' counts) and clarifying that `operator` accepts slug, brand, legal name, or CNPJ/root, which adds interpretive value over the terse schema entries.

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

Purpose5/5

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

States a specific resource (Brazilian RBAC 91K fractional/shared-ownership market data) and enumerates the five views with their exact contents (operators roster, per-aircraft fleet, model aggregates, timeline changelog, base counts). This is specific enough that an agent can distinguish it from jt_fleet_search, jt_operator_profile, and jt_market_listings without opening any schema.

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

Usage Guidelines3/5

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

The description explains what each view returns and that `operator` restricts any view to a single operator, which implies usage. However, it never states when to choose this tool over the many related siblings (jt_fleet_search, jt_operator_profile, jt_operators_stats) or any when-not condition, so the routing guidance is left to inference.

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

jt_global_fleet_statsGlobal factory deliveries (GAMA)A
Read-onlyIdempotent
Inspect

Worldwide general aviation factory shipments from the GAMA Shipment Report (2005 to the current quarter): view "industry" (jets, turboprops, pistons, turbine helicopters and billings by year), "regions" (business jets by region), "oems" (by manufacturer) or "models" (by model group, filter by oem or query). Deliveries, not fleet in service; current year is partial.

ParametersJSON Schema
NameRequiredDescriptionDefault
oemNoManufacturer filter (embraer, textron, bombardier, gulfstream, dassault, pilatus...).
topNoMax rows for oems/models. Default 15.
kindNoFor models view. Default jet.
viewYesindustry = shipments and billings by aircraft type; regions = by world region; oems = ranking by manufacturer; models = ranking by model (use kind, oem, query).
queryNoModel text filter for the models view (phenom, citation, g650).
sinceNoFirst year to include. Default: last 10 years.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely useful data context the annotations cannot supply: the source report, the historical window beginning 2005, and the important caveat that the current year is partial. It stops short of explaining pagination or default row behavior beyond what the schema states.

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?

A single dense sentence whose clauses all carry information: source, scope, enumeration of views, and the two disambiguating caveats. It is front-loaded correctly, though the nested parenthetical list makes it slightly harder to scan than a short lead plus bullets would be.

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

Completeness4/5

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

An output schema exists, so return values need no prose, and the description covers source, coverage window, view semantics, and the partial-year caveat. What is missing is only marginal: nothing about row limits or how the views rank/report, which the schema partly covers via top.

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

Parameters4/5

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

Schema description coverage is 100%, so the baseline is 3, but the description goes further by mapping parameters to the view that consumes them (oems/models for top and oem, kind and query for models). That cross-parameter relationship is not captured in the flat schema and materially helps correct invocation.

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

Purpose5/5

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

States a specific resource (worldwide general aviation factory shipments), the source (GAMA Shipment Report), the time span (2005 to current quarter), and the four selectable views. It also pre-empts confusion with the sibling fleet tools by stating 'Deliveries, not fleet in service,' so an agent can separate it from jt_fleet_stats or jt_global_fleet_search without opening a schema.

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

Usage Guidelines4/5

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

The description enumerates what each view returns and which filters apply to which view ('models' uses oem or query), giving clear selection context. It also implicitly excludes fleet-in-service questions. However, it never explicitly names a sibling tool to prefer for those alternative questions, so routing is inferred rather than spelled out.

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

jt_ground_eventsLong stays on the groundA
Read-onlyIdempotent
Inspect

Stays of 7+ days (minDays) at an airport without a following tracked departure, for one registration or for one airport (at least one is required). Each event says the airport, arrival, departure (null and ongoing=true if still there), days, whether it is the aircraft hub (atHub), and coverageGap=true when the next departure was seen from a different airport (the aircraft moved unseen: not a real stay). Useful to see where an aircraft spends long periods away from home (often a maintenance shop) and which aircraft are parked at a given airport. Default period: last 90 days; max 365. Max 100 per call. Tracked flights only (see the caveat).

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date YYYY-MM-DD (default: today).
fromNoStart date YYYY-MM-DD (default: 90 days ago).
icaoNoOne airport (ICAO): aircraft that stayed there minDays or more.
atHubNotrue = only stays at the aircraft inferred hub (home parking); false = only stays AWAY from hub (maintenance prospecting: use false). Omit for both.
limitNoDefault 25.
cursorNonextCursor from a previous page.
minDaysNoMinimum stay in days. Default 7.
ongoingNotrue = only stays still in progress (aircraft is there now, as far as tracking sees); false = only finished stays. Omit for both.
segmentNoDefault executive for an airport, all for a registration.
registrationNoOne Brazilian registration (PR-CON).

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/non-destructive, so the bar is lower; the description adds real behavioral context beyond them: tracked-flights-only scope, default 90-day window, 365-day max, 100-per-call cap, cursor paging, and the meaning of coverageGap=true and departure=null/ongoing=true. The dangling 'see the caveat' reference adds no information.

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?

Dense but front-loaded: the core definition leads, then event fields, then use cases, then limits. Every sentence carries information, though the paragraph is long enough that a reader must work through it to reach the operational constraints.

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

Completeness4/5

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

With annotations, a full input schema, and an existing output schema, the description supplies what's needed: the at-least-one-param rule, defaults, caps, and the coverageGap caveat semantics. The unexplained 'see the caveat' pointer is the only loose end.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, but the description adds meaning the schema cannot express: it surfaces that at least one of registration or icao is required (the schema lists zero required params) and restates the default period and record cap. It doesn't clarify the segment default switch beyond what the schema says.

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 states a precise verb+resource: stays of 7+ days at an airport without a following tracked departure, scoped to one registration or one airport. It also enumerates what each event contains (airport, arrival, departure, days, atHub, coverageGap), making it clearly distinguishable from siblings like jt_movements or jt_maintenance_signal.

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

Usage Guidelines4/5

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

It names concrete use cases ('where an aircraft spends long periods away from home (often a maintenance shop)' and 'which aircraft are parked at a given airport') and states the cardinality constraint that at least one of registration/icao is required. It does not, however, point to an alternative sibling when the agent wants a different view (e.g. maintenance-specific signals).

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

jt_import_signalsAircraft being imported into BrazilA
Read-onlyIdempotent
Inspect

Brazilian mark reservations (reserva de marca) that appeared in the RAB in a period AND whose airframe exists in a foreign registry (FAA N-number or CA/AU/NZ/MX), matched by serial number + compatible model. One signal per physical AIRFRAME: when the same serial got several reservations (a broker reserving PS-XXX, PS-YYY and PR-ZZZ for one Learjet), registrations[] lists them all and airframeCount is distinct from registrationCount. This is the import signal: an aircraft entering Brazil, useful for brokers, lenders and insurers. Max 60 per call; scans up to 200 reservations per page, paginate with nextCursor. It is a signal, not a completed transfer (see the caveat).

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date, YYYY-MM-DD. Default: today.
fromYesStart date, YYYY-MM-DD.
limitNoDefault 20.
cursorNonextCursor from a previous page.
includeUnmatchedNoAlso return reservations with no foreign twin found (default false).

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.1/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/openWorld=false, and the description still adds real operational context: the one-signal-per-airframe de-duplication rule, that registrations[] aggregates multiple reservations and airframeCount differs from registrationCount, the 60-row cap, and the 200-reservation scan per page with nextCursor pagination. That is exactly the behavioral detail annotations cannot convey.

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?

A single dense paragraph, front-loaded with the matching definition before the operational limits and the broker example. Every clause carries information, though the parenthetical PS-XXX/PS-YYY/PR-ZZZ example and the dangling 'see the caveat' reference cost it a point.

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 5-parameter, output-schema-backed signal tool this covers what matters: what qualifies as a hit, how hits are de-duplicated, result caps and pagination, and the semantic boundary between a reservation signal and a completed transfer. Nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the binding baseline is 3; the description rises above it by explaining pagination mechanics ('Max 60 per call; scans up to 200 reservations per page, paginate with nextCursor') and the aggregation semantics that explain why one result row can cover several registrations. It does not address includeUnmatched, but the schema already documents that flag.

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

Purpose4/5

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

The description states a precise resource and the exact join rule: Brazilian mark reservations in the RAB whose airframe matches a foreign registry entry (FAA N-number or CA/AU/NZ/MX) by serial + compatible model, and labels the output 'the import signal'. It does not, however, name or distinguish itself from near-neighbours such as jt_cross_registry or jt_registry_changes in a 40-tool sibling set, which keeps it short of a 5.

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

Usage Guidelines3/5

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

Usage is only implied. The target audience is named ('useful for brokers, lenders and insurers') and a caveat is gestured at ('It is a signal, not a completed transfer'), but there is no explicit when-to-use vs. when-to-use-an-alternative guidance and the referenced caveat is never actually stated. An agent can infer the use case but gets no routing rules.

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

jt_maintenance_signalMaintenance signals of an aircraftA
Read-onlyIdempotent
Inspect

Composes what is known about one registration into maintenance signals: CVA/CA validity (RAB), stays of 5+ days away from hub at aerodromes with a certified shop (RBAC 145, ANAC list), idle days, heavy or falling tracked utilization, coverage status and owner status. Each signal has a kind, a severity and the facts behind it. It never estimates an inspection due date or airframe hours: those are not in the data. The signals are hints to prioritise outreach, not facts about the aircraft.

ParametersJSON Schema
NameRequiredDescriptionDefault
registrationYesBrazilian registration (PR-TBL).

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), yet the description adds substantial behavioral context beyond them: it explicitly disclaims what it will NOT do ('never estimates an inspection due date or airframe hours: those are not in the data') and characterizes each signal's structure and epistemic status (kind, severity, underlying facts; hints rather than facts). This is exactly the honesty about limitations that annotations cannot carry.

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

Conciseness4/5

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

Three sentences, front-loaded with the composition of signals, then limitations, then framing. The middle enumeration is dense but each clause maps to a real signal; the closing caveat earns its place. Minor verbosity from the parenthetical domain references, but no filler.

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

Completeness5/5

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

With an output schema present, return-value detail is unnecessary, and the description still covers signal composition, structure, and the critical data-limitation caveats. For a single-parameter, read-only analysis tool, an agent has everything needed to invoke it and interpret results 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?

There is a single parameter with 100% schema description coverage, including the Brazilian format example and length bounds, so the schema already carries the parameter semantics. The description adds nothing about the registration argument, leaving the baseline 3 appropriate.

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

Purpose4/5

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

The description opens with a precise verb+resource ('Composes what is known about one registration into maintenance signals') and enumerates the concrete signals produced (CVA/CA validity, RBAC 145 shop stays, idle days, utilization trends, coverage/owner status), so the agent knows exactly what comes back. It is clearly distinct from siblings like jt_aircraft_base or jt_aircraft_history by domain, though it never names an alternative explicitly.

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

Usage Guidelines3/5

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

It frames the output's intended use ('hints to prioritise outreach, not facts about the aircraft'), which implies when the tool is useful. However, it does not state when to prefer it over siblings such as jt_aircraft_history or jt_aircraft_base, nor any exclusions, so the routing guidance is only implied.

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

jt_market_listingsMarket listings for a model
Read-onlyIdempotent
Inspect

For-sale listings of a catalog model (slug or alias, whole family) tracked by Jet Tracker: total and active count, priceStats (n, min, median, max) over active priced listings, and a sample with portal, listing URL, country/region, first and last seen and effectiveStatus (active, stale = not re-seen for 30+ days, expired = 60+ days). Listings the source portal marks as sale suspended are NOT active: they are left out of activeCount, priceStats and the sample and reported in suspendedCount (the seller withdrew the offer; it is not a sale). Prices as advertised by portals, not appraisals. Optional spec_filters (engine_program, no_damage_history, wifi, max_engine_hours, avionics, year_min) filter by the listing spec sheet, i.e. what the seller DECLARED in the ad, not verified by Jet Tracker: the result gains spec_matches (matching listings, cheapest first) plus withSpecsCount, the number of listings of the model that carry a spec sheet. A criterion only matches when the ad states it, so an empty spec_matches with a low withSpecsCount means unknown, not none.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesSlug do modelo (ex: embraer-phenom-300).
spec_filtersNoFiltros pela FICHA TÉCNICA do anúncio (o que o anunciante declarou). Opcional. Quando presente, a resposta ganha `spec_matches` com os anúncios que afirmam os critérios; anúncio que não informa fica de fora, então leia `withSpecsCount` antes de dizer "não há nenhum".

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo
jt_model_specsModel specs and operating costA
Read-onlyIdempotent
Inspect

Technical specs of a catalog model (slug, family slug, slug with or without manufacturer prefix, or name; model.matchedBy says how it was resolved) plus the canonical operating cost engine: variable cost per hour, fixed cost per year, total per hour at 400 h/year, acquisition curve, with costModelVersion. Same numbers as the Jet Tracker model page and as jt_compute_tco assumptions.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesSlug do catálogo (ex: embraer-phenom-300, cessna-citation-cj3).

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered. The description adds genuinely useful behavior: it explains that matchedBy reports how the slug was resolved, exposes costModelVersion, and pins the cost figures to the Jet Tracker model page and jt_compute_tco assumptions.

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?

One dense sentence but front-loaded with the primary resource and outputs, followed by the cost detail and consistency claim. Every clause carries information, though the packing is heavy enough that a reader must parse carefully.

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

Completeness4/5

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

With an output schema present, return shapes need not be enumerated, and the description still names the key distinguishing fields (matchedBy, costModelVersion). It is complete enough to call correctly; the only gap is the missing routing guidance relative to jt_model_search and jt_compute_tco.

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% (baseline 3), and the description goes beyond the schema by stating that the slug accepts a slug, family slug, slug with or without manufacturer prefix, or a name—an important input-flexibility detail the schema does not convey.

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

Purpose4/5

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

States a specific resource (technical specs of a catalog model) plus the bundled operating-cost outputs (variable cost/hour, fixed cost/year, total at 400 h/yr, acquisition curve). An agent can tell it apart from jt_model_search and jt_compute_tco, though it never explicitly contrasts itself with those siblings—it only claims numeric consistency with them.

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

Usage Guidelines3/5

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

Usage is implied by the content (need specs and canonical cost numbers for one model), and the mention that the numbers match jt_compute_tco assumptions hints at the relationship. However there is no explicit when-to-use / when-not guidance, no statement of when to prefer jt_model_search or jt_compute_tco instead.

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

jt_movementsRegistry changes in a period (RAB changelog) (deprecated name)
Read-onlyIdempotent
Inspect

DEPRECATED name of jt_registry_changes (same behaviour, kept until 2026-12-09). Changes in the Brazilian REGISTRY (RAB) between two dates, not airport movements: entry (new registration), exit (cancelled), owner_change, operator_change, status_change. Read from the RAB changelog kept by Jet Tracker since 2026-02-03. Filters (type, model, owner state uf, RBAC, segment; default executive) are applied in the database: total is the exact count for the filter in the period, found:false means zero in the whole period, and truncated only means there are more pages (nextCursor). Max 200 per call. Each row carries sameAirframeAs (other live registrations of the same serial + model: three reservations for one airframe are one aircraft, count once). A registry change is NOT a sale (see the caveat field). Aircraft arriving at or leaving an airport are not registry changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date, YYYY-MM-DD (inclusive). Default: today.
ufNoRegistered state (UF) of the owner.
fromYesStart date, YYYY-MM-DD (inclusive).
rbacNo91 private, 91k shared/fractional, 135 air taxi, 121 airline, 137 agricultural.
typeNoOnly one kind of change: entry (new registration), exit (cancelled), owner_change, operator_change or status_change.
limitNoDefault 50.
modelNoCatalog slug, family slug or free text.
cursorNonextCursor from a previous page.
segmentNoDefault executive.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo
jt_operator_profileBrazilian operator profileA
Read-onlyIdempotent
Inspect

The company-side profile behind a Brazilian operator/owner group, the same cut as the public /operadores page: legal entities (CNPJ roots, role, Receita Federal status), dominant RBAC, the RBAC-91K shared-ownership program when the group runs one (EA revision, authorized models), fleet aggregates (total, operational, top models, owner states in baseUfs, capped at 100 tails with fleetTruncated when the group is bigger), decision-maker names from the public QSA (no CPF, ever), a minimal vulnerability read (CVA expiring within 90 days, tails idle 90+ tracked days, liens/gravame count) and whether the group also runs an RBAC 145 maintenance shop. query accepts a brand/URL slug (as in /operadores/), a commercial or legal name, or a CNPJ (14 digits) or its 8-digit root. A brand spanning several CNPJs (e.g. a cooperative plus its holding) is returned as ONE group. found:false means no group matched the text (spelling or a CNPJ root can differ).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesOperator slug, brand/company name, or CNPJ (14 digits) / its 8-digit root.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.2/5.0
Behavior5/5

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

Annotations only declare the safety profile (readOnly, idempotent, non-destructive), while the description adds substantial behavior an agent cannot get elsewhere: the 100-tail cap with fleetTruncated, the 90-day CVA/idle-day vulnerability window, the explicit no-CPF guarantee, and that a brand spanning multiple CNPJs collapses into ONE group. It also explains the found:false outcome, which is critical for interpreting misses.

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

Conciseness3/5

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

The purpose is front-loaded, but the bulk is one ~150-word run-on sentence with nested parentheticals, and much of it re-enumerates return fields that an output schema already documents. It is dense rather than padded, yet the structure is heavy to parse and partly duplicates structured data.

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

Completeness4/5

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

For a complex Brazilian registry tool, the definition covers identifier handling, group aggregation, truncation, privacy limits and the not-found case, and safety is already carried by annotations with return shape by the output schema. Remaining gaps (e.g. what 'dominant RBAC' entails beyond the output schema) are minor.

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 for the single query parameter is already 100%, so the baseline is 3. The description still adds value by restating and expanding the accepted formats (brand/URL slug as in /operadores/<slug>, 14-digit CNPJ vs 8-digit root) and by clarifying that a spelling or CNPJ-root mismatch yields found:false.

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?

Names a precise verb+resource (company-side profile behind a Brazilian operator/owner group) and maps it to the public /operadores page, then enumerates exactly what the payload contains, which cleanly separates it from siblings like jt_owner_group, jt_operators_stats and jt_company_search. An agent can tell what it returns without opening the schema.

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

Usage Guidelines3/5

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

The accepted query forms (slug, commercial/legal name, CNPJ or 8-digit root) strongly imply this is the identifier-based lookup, and the found:false note gives a failure condition. However, there is no explicit when-to-use/when-not statement and no sibling is named as the alternative for adjacent questions (e.g. individual owner fleets), so guidance stays implicit.

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

jt_operators_statsOperator statistics for a modelA
Read-onlyIdempotent
Inspect

AGGREGATED operator statistics of a model in Brazil: distinct operators (by CNPJ root), RBAC 91 vs 135 split, concentration by state, average fleet age, plus as_of (RAB snapshot date), source.url and scope (only mark reservations or tails classified as RBAC 91/135). This aggregate never names operators; jt_fleet_search and jt_owner_fleet do return names (their own access rules apply).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesSlug do modelo.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/non-destructive/closed-world, so the description's added value is real: it discloses that this aggregate never names operators (a privacy constraint), defines the RBAC 91/135 scope filter, and describes as_of and source.url. It stops short of discussing caching, pagination, or freshness beyond the snapshot date.

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, front-loaded with what the aggregate contains, then the name-vs-aggregate contrast and alternative tools. Dense but each clause carries information; only the parenthetical scope definition is slightly cluttered.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, yet the description still usefully names key fields. Combined with the scope definition, the no-names behavior, and the sibling routing, an agent has enough to call this correctly; only explicit prerequisites or error behavior are absent.

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?

There is only one parameter (slug) and the schema documents it at 100% coverage with length constraints, so the schema carries the burden. The description implies the slug identifies the model, but adds no format or lookup guidance beyond that, matching the baseline for fully-covered schemas.

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

Purpose5/5

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

States a specific verb (aggregated statistics) and resource (operators of a model, in Brazil), and enumerates the exact dimensions returned (distinct operators by CNPJ root, RBAC 91/135 split, concentration by state, average fleet age). This clearly separates it from sibling stats tools like jt_fleet_stats or jt_operator_profile.

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

Usage Guidelines4/5

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

It explicitly names the alternatives jt_fleet_search and jt_owner_fleet and states the condition that distinguishes them: those tools return operator names, this one never does. That is a clear routing signal, though there is no explicit 'use this when' phrasing or stated exclusions beyond that contrast.

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

jt_owner_fleetFleet by CNPJ (company)A
Read-onlyIdempotent
Inspect

Aircraft in the Brazilian registry linked to a company CNPJ, matched by the 8-digit company root (a branch does not hide the parent company aircraft). Each item says the role (owner = belongs to it, operator = only operates it), status, segment, lien and co-owners. An empty list is a valid answer ("no aircraft" is information).

ParametersJSON Schema
NameRequiredDescriptionDefault
cnpjYesCNPJ with 14 digits (with or without punctuation) or the 8-digit root. CPF (personal id) is not accepted.
segmentNoOptional cut: executive (business jets, turboprops, executive helicopters), geral (agricultural/training), comercial (airliners), militar.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so safety is covered. The description adds real behavioral context beyond that: the role semantics (owner vs operator), the fields returned (status, segment, lien, co-owners), and the important caveat that an empty list is a legitimate answer.

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?

Three tight sentences, front-loaded with the resource and matching rule, then item contents, then the empty-result caveat. Every sentence carries information; only the parenthetical could be trimmed, but it is genuinely clarifying.

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

Completeness4/5

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

With an output schema present, return values need not be detailed, yet the description still summarizes the item shape (role, status, segment, lien, co-owners). Combined with the matching rule and empty-result note, an agent has enough to call and interpret it correctly; explicit sibling routing is the only missing piece.

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

Parameters4/5

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

Schema coverage is 100%, which sets a baseline of 3. The description earns above that by explaining how the cnpj parameter actually behaves (matched on the 8-digit root, so a branch does not exclude the parent company's aircraft), a matching nuance the schema does not state.

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

Purpose5/5

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

States a specific verb+resource: aircraft in the Brazilian registry linked to a company CNPJ. It further disambiguates from siblings by defining the matching rule (8-digit company root) and the scope (branch does not hide parent company aircraft), which clearly separates it from jt_fleet_search and jt_global_fleet_search.

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

Usage Guidelines3/5

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

Usage is implied by the CNPJ-based scoping and the note that an empty list is valid, which helps the agent interpret a null result. However, it never explicitly names when to prefer this over jt_fleet_search, jt_fleet_stats, or jt_owner_group, leaving alternatives to inference.

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

jt_owner_groupCompanies linked to an owner (economic group)A
Read-onlyIdempotent
Inspect

Companies related to a CNPJ (or to the owner of a registration) that own or operate live Brazilian aircraft, with why they are linked (basis: same_root, seed_partner_company, seed_is_partner, shared_partner, same_email, same_phone, same_address, same_name_prefix), a confidence per member (high = same root, partner link or shared partner; medium = shared e-mail, or phone + address; low = only a shared address or phone, which at an airport, hangar or accounting office links unrelated companies), the shared partner names (public QSA), the Receita record, the owner role and the aircraft of each member. aircraftTotal counts every member; aircraftTotalConfident excludes low-confidence members. The RAB splits a group into many CNPJs (SPEs, farms, holdings, family companies); this gives the whole set in one call so one conversation covers all of them. Max 50 members. Links are hints from public records, not a legal structure (see the caveat).

ParametersJSON Schema
NameRequiredDescriptionDefault
cnpjNoCNPJ (14 digits) or 8-digit root of the seed company.
limitNoDefault 25 members.
registrationNoAlternatively, a registration: the group of its first owner CNPJ.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already cover safety (readOnly, idempotent, openWorld=false, non-destructive), and the description goes well beyond them: the 50-member cap, the meaning of each confidence tier, the aircraftTotal vs aircraftTotalConfident distinction, and a caveat that links are public-record hints rather than a legal structure.

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

Conciseness3/5

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

Front-loaded with the resource and scope, but the long inline enumerations of basis types and confidence rules re-explain return values that the output schema already carries, bloating what could be a tighter description.

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

Completeness5/5

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

For a complex economic-group tool with an output schema, the description supplies everything else an agent needs: member cap, confidence semantics, counter definitions, and the legal-structure caveat that sets expectations for interpreting results.

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%, so cnpj, registration and limit are already documented; the description adds only the framing that the CNPJ may be a 14-digit number or 8-digit root and the registration resolves to the first owner. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific resource (companies linked to a CNPJ/owner forming an economic group) with the exact basis types returned, so an agent can tell this apart from jt_owner_fleet or jt_company_search without opening a schema.

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

Usage Guidelines4/5

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

Explains the rationale for using this tool ('The RAB splits a group into many CNPJs... this gives the whole set in one call'), which tells the agent when this tool beats repeated single-company calls. It stops short of explicit when-not-to-use or naming a sibling alternative.

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

jt_price_historyCurated price curve for a modelA
Read-onlyIdempotent
Inspect

Curated pre-owned price curve of a catalog model (by slug): current median/min/max, history by year and 5-year residual, with research date. found=false means there is no curated curve for this model.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesSlug do modelo.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, closed-world, non-destructive behavior, so the bar is low. The description adds real value beyond them by disclosing that the data is 'curated' rather than live, that it includes a research date, and that a missing curve is signaled with found=false rather than an error.

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 dense sentences with zero filler; the resource and key are front-loaded before the return contents and the found=false caveat. The packed list of returned fields is slightly heavy but each clause earns its place.

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

Completeness4/5

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

With an output schema present, return values need not be re-explained, and annotations cover the safety profile; the description still adds the found=false semantics and data provenance. The only gap is how an agent obtains a valid slug or when to prefer this over the sibling listing/spec tools.

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% with a single parameter, so the schema already documents 'slug'. The description only restates '(by slug)' and adds no format, casing, or sourcing detail (e.g., that the slug comes from jt_model_search), which is the baseline 3 case.

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

Purpose4/5

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

The description names a specific resource (curated pre-owned price curve for a catalog model, keyed by slug) and enumerates exactly what it returns: median/min/max, history by year, 5-year residual, research date. It is clearly distinct from sibling tools like jt_market_listings and jt_model_specs, though it never explicitly contrasts itself with them.

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

Usage Guidelines2/5

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

There is no explicit when-to-use statement and no routing guidance versus alternatives such as jt_market_listings (live asking prices) or jt_model_specs. The 'found=false means no curated curve' note is a result condition, not usage guidance.

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

jt_registry_changesRegistry changes in a period (RAB changelog)A
Read-onlyIdempotent
Inspect

Changes in the Brazilian REGISTRY (RAB) between two dates, not airport movements: entry (new registration), exit (cancelled), owner_change, operator_change, status_change. Read from the RAB changelog kept by Jet Tracker since 2026-02-03. Filters (type, model, owner state uf, RBAC, segment; default executive) are applied in the database: total is the exact count for the filter in the period, found:false means zero in the whole period, and truncated only means there are more pages (nextCursor). Max 200 per call. Each row carries sameAirframeAs (other live registrations of the same serial + model: three reservations for one airframe are one aircraft, count once). A registry change is NOT a sale (see the caveat field). Aircraft arriving at or leaving an airport are not registry changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date, YYYY-MM-DD (inclusive). Default: today.
ufNoRegistered state (UF) of the owner.
fromYesStart date, YYYY-MM-DD (inclusive).
rbacNo91 private, 91k shared/fractional, 135 air taxi, 121 airline, 137 agricultural.
typeNoOnly one kind of change: entry (new registration), exit (cancelled), owner_change, operator_change or status_change.
limitNoDefault 50.
modelNoCatalog slug, family slug or free text.
cursorNonextCursor from a previous page.
segmentNoDefault executive.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), but the description goes well beyond them: the data source's start date (2026-02-03), that filters run in the database, that 'found:false' means zero across the whole period, that 'truncated' means more pages via nextCursor, the 200-row cap, and the sameAirframeAs de-duplication rule. This is exactly the operational context annotations cannot express.

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?

Information-dense with no filler sentences, and the core scope ('registry changes, not movements') is front-loaded. It is a long single block that could be split for scanability, but every clause carries a distinct constraint.

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

Completeness5/5

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

With an output schema present, the description need not explain return values, and it still supplies the pagination model, count semantics, de-duplication caveat, and the sale-versus-registry distinction. Nothing an agent needs to call or interpret this tool correctly 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 description coverage is 100%, so the schema already documents every parameter including the enum meanings and the default executive segment. The description restates the filter set and default without adding syntax or format beyond the schema; 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?

States a specific verb and resource ('Changes in the Brazilian REGISTRY (RAB) between two dates') and immediately enumerates the resource scope (entry/exit/owner_change/operator_change/status_change). It explicitly distinguishes itself from siblings by declaring it is 'not airport movements', which an agent can use to separate it from jt_movements without opening any schema.

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

Usage Guidelines5/5

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

Gives explicit exclusions that route the agent to alternatives: 'not airport movements' and 'A registry change is NOT a sale (see the caveat field)'. Combined with the enumerated change types and the note that filters default to executive, the agent knows both when to use this and when to reach for a different tool.

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

jt_runway_checkRunway feasibility for a modelA
Read-onlyIdempotent
Inspect

Can this model operate at this airport? Compares the model takeoff/landing distances with the runway of the airport (ICAO, city or name). verdict is the overall answer: ok, marginal, insufficient, unknown, or conditional (fits a private RBAC 91 flight but NOT an RBAC 135 air-taxi operation with the 60% landing factor). verdictByRegime gives private, taxi135Dry and taxi135Wet separately.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesModelo: slug do catálogo (ex: phenom-300), slug com fabricante (embraer-phenom-300) ou o nome ("Phenom 300"). A resposta diz em modelSlug qual modelo foi usado.
airportQueryYesICAO ou cidade/nome do aeroporto.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safe-read profile (readOnly, idempotent, non-destructive). The description adds genuinely non-obvious behavior: the RBAC 91 vs RBAC 135 60% landing-factor distinction and the split verdictByRegime. It stops short of disclosing input-matching behavior or error/unknown states.

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

Conciseness4/5

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

Front-loads the core question, then compresses distance comparison, verdict values, and regime breakdown into a short block. Slightly dense with output-enum detail, but no filler sentences.

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

Completeness4/5

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

The tool has an output schema, so the description is not obligated to explain return values, yet it usefully explains what verdict values mean. For a two-param, read-only feasibility check, the agent has everything needed to invoke and interpret it.

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%, so both slug and airportQuery are already documented in the schema, including the ICAO/city/name acceptance. The description restates that airportQuery can be 'ICAO, city or name' but adds no format or matching guidance beyond the schema.

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 precise question ('Can this model operate at this airport?') and then states the actual operation: comparing model takeoff/landing distances against the airport runway. No sibling tool in the list performs runway feasibility, so the agent can route here unambiguously.

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

Usage Guidelines4/5

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

The stated question frames the use case clearly, and the verdict enumeration tells the agent what situation this tool resolves (private vs air-taxi feasibility). It does not name an alternative or a when-not condition, so it falls short of the top band.

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

jt_sale_propensitySale propensity scoreA
Read-onlyIdempotent
Inspect

Score 0-100 of how likely one registration is to reach the market, built as a transparent sum of public-record evidence: idle days (tracked flights), CVA/CA status, owner change recency (registry history), active or stale market listing, owner role (a financeira/creditor selling collateral is a stronger signal), aircraft age and, when the internal predictor has scored this tail, its probability. Each contributing fact is in evidence[] with its weight; coverage[] says which inputs existed. It is not a prediction of sale: it ranks who to contact first.

ParametersJSON Schema
NameRequiredDescriptionDefault
registrationYesBrazilian registration (PR-TBL).

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the burden is lower; the description goes further by disclosing the scoring model's inputs, the evidence[]/coverage[] output structure, and the conditional nature of the internal predictor. It does not state latency, rate limits, or behavior when data is missing beyond coverage[], keeping it shy of a 5.

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?

Single dense paragraph that front-loads the definition, then enumerates contributing signals, then closes with the crucial scope caveat. It is on the long side and the middle signal list could be trimmed, but every clause carries information.

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

Completeness4/5

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

With an output schema present, return values need not be explained, yet the description usefully explains what the score means and how evidence[]/coverage[] should be read. It is complete enough to invoke correctly; only explicit sibling routing 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?

Only one parameter, and the schema already documents it at 100% coverage including the Brazilian registration format and length bounds. The description adds no syntax or format detail beyond the schema, so the baseline of 3 applies.

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

Purpose4/5

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

States a specific verb+resource ('Score 0-100 of how likely one registration is to reach the market') and then explicitly bounds the claim ('It is not a prediction of sale: it ranks who to contact first'). The siblings contain no direct duplicate, so the lack of a named alternative is a minor gap rather than a confusion risk.

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

Usage Guidelines3/5

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

Usage is only implied — the closing sentence ('ranks who to contact first') hints at lead-prioritization use, but there is no explicit when-to-use, when-not-to-use, or pointer to a sibling such as jt_aircraft_lookup or jt_owner_profile for raw facts. An agent can infer intent but must reason about it.

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

jt_statusData freshness, access and quotaA
Read-onlyIdempotent
Inspect

Health of the Jet Tracker data behind the tools: last sync of each source (RAB/ANAC registry, Receita Federal records, FAA registry, tracked flights, market listings, GAMA report, RBAC 91K programs) with lag in hours, tracking coverage, the tools this key can call, and the daily quota used, remaining and resetAt (UTC).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so safety is covered; the description adds genuine context by disclosing that callable tools are scoped to the API key and that quota has used/remaining/resetAt in UTC. It does not state whether calls are counted against quota or any auth/permission requirements beyond the key, leaving a small gap.

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

Conciseness4/5

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

A single sentence, front-loaded with the core purpose ("Health of the Jet Tracker data behind the tools"). The long parenthetical list of sources is dense but ordered and scannable; slightly more than needed given the enumeration is also implied by the output schema.

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

Completeness4/5

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

With an output schema present, the description need not explain return values, and it correctly focuses on scope and the identity of the data sources. The only shortfall is the absence of usage guidance (when to call it relative to other tools), which a status tool would benefit from.

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?

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to clarify beyond what is already implied. No parameter meaning is missing because none exist.

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

Purpose5/5

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

States a specific verb+resource: reports the health/freshness of the Jet Tracker dataset behind the tools. It enumerates the concrete payload (per-source last sync and lag, coverage, callable tools, quota) so an agent can immediately distinguish this meta/status tool from the 39 data-querying siblings.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer it should be called to check freshness or remaining quota before/around data calls, but the description never says when to use it versus alternatives or any precondition. No exclusions or alternatives are named.

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

jt_trip_costTrip cost between two airportsA
Read-onlyIdempotent
Inspect

Cost of a trip origin to destination (ICAO codes or city names) for a model with a full cost profile, across charter, fractional and owned (variable cost only) models, with distance and block time. Same aliases as jt_compute_tco. Origin equal to destination returns error degenerate_route.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesModelo com calculadora completa (mesmos aliases do compute_tco).
destIcaoYesDestino: ICAO ou cidade/nome.
roundTripNotrue = ida e volta (default); false = só ida.
originIcaoYesOrigem: ICAO (SBSP) ou cidade/nome (Congonhas, São Paulo).

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish the safe read/idempotent profile, and the description adds real behavioral detail beyond them: the cost basis distinction (owned models yield variable cost only), the inclusion of distance and block time in the result, and the degenerate_route error when origin equals destination. It does not cover casing/normalization of city names or rate/unit behavior, keeping it from a 5.

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 compact sentences with the core purpose front-loaded and the error condition placed at the end where it belongs. The middle clause listing the three model categories makes it slightly dense but every phrase carries information.

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

Completeness4/5

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

With an output schema present, the description needn't explain return shape, yet it still names the key outputs; parameters and annotations are covered. For a 4-parameter read tool this is nearly complete, with only the cross-tool selection guidance and parameter-format details 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 description coverage is 100%, so the schema already documents all four parameters, and the description largely restates them (ICAO or city names, full cost profile model). It adds marginal value — the 'variable cost only' caveat for owned models — but does not explain the roundTrip default or naming/alias semantics beyond what the schema shows. Baseline 3.

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

Purpose4/5

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

The description states a specific verb and resource — 'cost of a trip origin to destination' — and enumerates the model categories (charter, fractional, owned) plus the returned metrics (distance, block time). It is clearly distinguishable from generic lookup siblings. It stops short of a 5 because the sibling relationship is only implied via the alias reference to jt_compute_tco rather than an explicit contrast of scope.

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

Usage Guidelines3/5

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

Usage is implied by the wording (compute a route cost for a model with a full cost profile) and the error precondition 'origin equal to destination returns error degenerate_route' is a useful guard. However, there is no explicit guidance on when to choose this over jt_compute_tco or jt_fractional_fit, which share cost-profile territory.

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

jt_us_aircraft_lookupUS aircraft by N-number
Read-onlyIdempotent
Inspect

US-registered aircraft (FAA registry) by N-number: status (here "reserve" is FAA code R, registration pending, never a mark reservation; see statusNote), model, year, airworthiness date, registrant type, registrant city/state (base.city / base.state: the FAA registrant address, not a hangar), ICAO24 hex, plus the Jet Tracker link to Brazil: the same airframe (serial + compatible model) found in the Brazilian registry (a PR-/PT- mark reservation means the aircraft is likely being imported into Brazil). Individuals are not named.

ParametersJSON Schema
NameRequiredDescriptionDefault
registrationYesN-number, with or without the N (N123AB, 123AB).

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo
jt_watch_addAdd watched registrationsA
Idempotent
Inspect

Add registration(s) to this account's watch list WITHOUT touching the rest (unlike jt_watch_set, which replaces the whole list). Invalid registrations come back in invalid[]; already-watched ones come back in alreadyWatched[]. Max 500 watched registrations total. Requires a Jet Tracker account connection (OAuth or an account key), not a system key.

ParametersJSON Schema
NameRequiredDescriptionDefault
registrationsYesBrazilian registrations to add, with or without hyphen, any case.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.4/5.0
Behavior4/5

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

Goes well beyond the annotations by disclosing partial-success semantics (invalid[] and alreadyWatched[] arrays), the 500-registration capacity ceiling, and the auth requirement (OAuth or account key, not a system key). The additive behavior is consistent with destructiveHint=false and idempotentHint=true, so there is no annotation contradiction. It stops short of describing ordering or exactly how many succeed per call.

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

Conciseness4/5

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

Front-loads the core semantic (additive, unlike jt_watch_set) and then layers failure modes, capacity, and auth in three compact clauses with no filler. The heavy parenthetical and dense punctuation make it slightly harder to scan than an ideal definition, but every sentence earns its place.

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

Completeness5/5

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

Covers the sibling distinction, the mutation's additive scope, auth prerequisites, capacity limits, and partial-failure outcomes, even though an output schema exists to document the return arrays. Nothing an agent needs in order to call this correctly 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% and the single parameter's format notes (hyphen-optional, any case) live in the schema already. The description only reinforces the parameter indirectly via the 500-item cap, which mirrors maxItems. Baseline 3 is appropriate when the schema carries the parameter detail.

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

Purpose5/5

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

States a specific verb and resource ("add registration(s) to this account's watch list") and immediately distinguishes itself from jt_watch_set, the sibling that replaces the whole list. An agent can route between the two without opening either schema.

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

Usage Guidelines5/5

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

Explicitly names the alternative (jt_watch_set) and the condition that selects this tool over it: additive vs. whole-list replacement. It also states the account-connection prerequisite, so preconditions are covered rather than left to inference.

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

jt_watch_listWatched registrationsA
Read-onlyIdempotent
Inspect

Registrations this account watches: the webhook delivers a change (owner, operator, status, owner state, lien) only for tails in this list. Requires a Jet Tracker account connection (OAuth or an account key), not a system key.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: the auth requirement (OAuth or account key, explicitly not a system key) and the fact that this list gates which registrations trigger webhook changes. Return format is not described, but the output schema exists.

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, front-loaded with the identity of the resource and followed by the auth constraint; no filler. It is slightly dense (the parenthetical field list is compressed) but every clause carries information.

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 no-parameter, read-only list tool with an output schema and full annotation coverage, the description supplies everything else an agent needs: what the list contains, why it matters (webhook gating), and the non-obvious connection requirement. Nothing material is missing.

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

Parameters4/5

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

The tool takes zero parameters, so the schema imposes no semantic burden and the baseline is 4. Nothing in the description is needed to clarify inputs, and nothing contradicts the empty object schema.

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

Purpose4/5

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

The description states precisely what the tool returns ('Registrations this account watches') and explains the role of the list in the webhook flow, which is more than a restatement of the name. It does not, however, explicitly distinguish itself from the near-name sibling jt_watch_rules_list, leaving an agent to infer that 'rules' and 'watched registrations' are different collections.

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

Usage Guidelines3/5

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

Usage is implied through the webhook explanation ('the webhook delivers a change ... only for tails in this list') plus a clear connection prerequisite, so an agent understands the context in which this list matters. But there is no explicit when-to-use/when-not statement and no routing to siblings such as jt_watch_rules_list or jt_watch_add/jt_watch_remove for modifying the list.

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

jt_watch_removeRemove watched registrationsA
DestructiveIdempotent
Inspect

Remove registration(s) from this account's watch list WITHOUT touching the rest. Invalid registrations come back in invalid[]. Requires a Jet Tracker account connection (OAuth or an account key), not a system key.

ParametersJSON Schema
NameRequiredDescriptionDefault
registrationsYesBrazilian registrations to remove, with or without hyphen, any case.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so safety is covered. The description adds genuinely new behavior: partial-failure semantics ('Invalid registrations come back in invalid[]') and the auth requirement (account connection via OAuth/account key, not a system key).

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?

Three short sentences, front-loaded with the action and its scoping guarantee, then the failure-mode note, then the prerequisite. No sentence is redundant.

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

Completeness5/5

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

With annotations covering safety/idempotency, an output schema covering returns, and 100% parameter coverage, the description supplies exactly the missing pieces: auth requirements, non-clobbering scope, and partial-failure handling. Nothing an agent needs to call it correctly is absent.

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% for the single parameter, including format and min/max constraints, so the schema carries the load. The description adds no format or syntax detail beyond it, making the baseline 3 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?

States a specific verb and resource ('Remove registration(s) from this account's watch list') and scopes it precisely with 'WITHOUT touching the rest', which distinguishes it from whole-list siblings like jt_watch_set and jt_watch_add.

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

Usage Guidelines4/5

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

The 'WITHOUT touching the rest' clause implicitly tells the agent to prefer this over a set/replace operation when removing a subset, and the auth sentence establishes the connection prerequisite. It stops short of naming jt_watch_set or jt_watch_remove_rule as the explicit alternative.

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

jt_watch_rule_addAdd a watch-by-profile ruleA
Idempotent
Inspect

Create a watch rule by profile: every field is optional and null means "no filter on this"; at least one of modelFamily/uf/category/rbac should be set or the rule watches the whole live fleet. eventTypes picks which business events this rule delivers (registry.changed, airworthiness.cva_expiring, airworthiness.cva_expired, flight.ground_stay, program.ea_revised). dryRun=true only returns preview.count (how many live registrations match right now) without saving. Requires a Jet Tracker account connection (OAuth or an account key), not a system key.

ParametersJSON Schema
NameRequiredDescriptionDefault
ufNoRegistered state (UF) of the owner in the RAB, e.g. SP. Not where the aircraft is based.
rbacNo91, 91k, 135, 121 or 137.
labelNoFree label for the account to recognize the rule.
dryRunNotrue: only preview, does not save.
categoryNoFine category (light, midsize...) or group (jet, turboprop, helicopter, piston).
eventTypesYesWhich business events this rule delivers.
modelFamilyNoCatalog family slug (e.g. phenom-300).

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.3/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=true, and the description adds genuinely new behavior: what happens when all filters are null (whole live fleet), what dryRun does ('only returns preview.count ... without saving'), the exact deliverable events, and a real auth constraint (account connection, not a system key). This is substantive disclosure beyond the structured fields.

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?

A single dense paragraph that is front-loaded with the purpose, then filter semantics, dryRun behavior, and the auth prerequisite, with no filler sentences. It is slightly packed with semicolon-separated clauses, which costs it the top mark but nothing is wasted.

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?

An output schema exists, so return values need not be detailed, yet the description still explains the one meaningful response mode (dryRun returning preview.count). Combined with the null-filter behavior, event list, and auth requirement, an agent has everything needed to invoke it correctly.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds cross-parameter semantics the schema cannot express: every field is optional, null means no filter, and at least one of the four filter fields should be set. It also enumerates the valid eventTypes inline. The per-parameter descriptions already carry the field-level meaning, so it is not a full 5.

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

Purpose4/5

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

States a specific verb and resource ('Create a watch rule by profile') and its scope (profile-based rather than aircraft-based), which implicitly separates it from jt_watch_add. However, no sibling is named, so an agent must infer the distinction from the 'by profile' phrasing rather than being told.

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

Usage Guidelines4/5

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

Gives clear operating context: at least one of modelFamily/uf/category/rbac should be set or the rule watches the whole live fleet, and it explicitly notes the account-connection prerequisite ('OAuth or an account key, not a system key'). It does not explicitly route between this and jt_watch_add / jt_watch_set, so it stops short of the top score.

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

jt_watch_rule_removeRemove a watch-by-profile ruleA
DestructiveIdempotent
Inspect

Delete a watch-by-profile rule by id (ids come from jt_watch_rules_list). Does not touch explicit registrations from jt_watch_set/jt_watch_add. Requires a Jet Tracker account connection (OAuth or an account key), not a system key.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesRule id, from jt_watch_rules_list.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, readOnlyHint=false and idempotentHint=true, so the safety profile is covered structurally. The description adds real value beyond that: the mutation is narrow (profile rules only, not explicit registrations) and requires an account connection/OAuth rather than a system key, which is an auth constraint annotations cannot express.

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?

Three short sentences, front-loaded with the core action and scope, then the non-effect, then the auth requirement. No filler or restatement of the title.

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?

An output schema exists, so return values need no explanation. The description covers the action, the id source, the scope boundary versus sibling watch tools, and the auth requirement — everything needed to call this destructive one-param tool 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 the single id parameter is documented in the schema, so the description's mention that ids come from jt_watch_rules_list largely duplicates the schema text. Baseline 3 is appropriate when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb and resource ('Delete a watch-by-profile rule by id') and immediately scopes it against the neighboring concepts (explicit registrations from jt_watch_set/jt_watch_add). An agent can distinguish this from jt_watch_remove and jt_watch_rule_add without opening any schema.

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

Usage Guidelines5/5

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

Tells the agent where the required id comes from (jt_watch_rules_list) and explicitly what this tool does NOT affect (explicit registrations), which is the key routing distinction among several watch-related siblings. The auth prerequisite is stated as a condition on use.

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

jt_watch_rules_listWatch rules of this accountA
Read-onlyIdempotent
Inspect

Rules this account uses to watch aircraft BY PROFILE (model family, owner state, category, RBAC classification) instead of one registration at a time: every live tail matching a rule is watched, including ones registered after the rule was created. Adds to (never replaces) the explicit list from jt_watch_list. Max 50 rules. Requires a Jet Tracker account connection (OAuth or an account key), not a system key.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds real behavior beyond them: the additive (never replacing) semantics relative to jt_watch_list, the 50-rule cap, retroactive matching of tails registered after rule creation, and the auth requirement (account OAuth/key, not a system key). Those are exactly the operational facts an agent cannot infer from 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?

One dense but well-ordered sentence that front-loads the core definition, then layers scope distinctions, cardinality limit, and auth prerequisite. Every clause carries information an agent would otherwise have to guess.

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

Completeness5/5

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

With an output schema present (so return values need no explanation), zero parameters, and annotations covering safety, the description supplies the remaining essentials: what a rule matches, the 50-rule ceiling, the additive relationship to the explicit watch list, and the required credential type. Nothing needed to call it correctly is missing.

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

Parameters4/5

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

The tool takes zero parameters and the schema is empty, so there is nothing for the description to disambiguate — the baseline of 4 applies. The description correctly implies the account scope comes from the connection rather than an argument.

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

Purpose5/5

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

States a specific verb and resource ('rules this account uses to watch aircraft BY PROFILE') and immediately enumerates the profile dimensions (model family, owner state, category, RBAC classification). It explicitly contrasts the scope with 'one registration at a time', which cleanly separates it from the sibling jt_watch_list.

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

Usage Guidelines4/5

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

Explains that this complements rather than replaces jt_watch_list ('Adds to (never replaces) the explicit list from jt_watch_list'), which is exactly the routing information an agent needs. It also states the connection prerequisite. It stops short of saying when the tool should not be used or pointing to jt_watch_rule_add for rule creation.

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

jt_watch_setReplace watched registrationsA
DestructiveIdempotent
Inspect

Replace the whole watch list of this account (idempotent: sending the same list twice changes nothing). Watched aircraft feed the account webhook with registry.changed plus business events: airworthiness.cva_expiring (30 and 7 days), airworthiness.cva_expired and flight.ground_stay. Invalid registrations are returned in invalid[] and the rest is saved. Max 500. Requires a Jet Tracker account connection (OAuth or an account key), not a system key.

ParametersJSON Schema
NameRequiredDescriptionDefault
registrationsYesFull list of Brazilian registrations to watch.

Output Schema

ParametersJSON Schema
NameRequiredDescription
codeNoMachine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).
_metaNo
errorNo
foundNo
gatedNo
requestIdNo
retryableNo
quota_exceededNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructive=true and idempotent=true; the description reinforces replace semantics and adds non-annotation context: OAuth/account-key auth requirement, the 500 cap, partial-failure behavior (invalid[] returned, rest saved), and the downstream webhook event catalogue. It does not detail reversibility or rate limits, but that is a minor gap against an otherwise rich disclosure.

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?

Information-dense and front-loaded with the core replace semantics, then auth/limits/errors. It is a single very long sentence-chain, which slightly hurts scanability, but every clause carries real content.

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

Completeness5/5

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

With an output schema and full annotations present, the description only needs to supply the operational extras — auth mode, cap, partial-failure handling, webhook consequences — and it does all of them. Nothing an agent needs to invoke this destructive bulk-set correctly 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% and the single parameter is fully documented in the schema, so the baseline is 3. The description adds the 500-item ceiling and the fate of invalid entries, which is behavior rather than new per-parameter syntax, so it does not exceed the baseline.

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

Purpose5/5

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

States a specific verb (Replace) and resource (the account's whole watch list), with the scope word 'whole' making it clearly distinct from the additive jt_watch_add and subtractive jt_watch_remove siblings. An agent can route correctly without opening any schema.

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

Usage Guidelines4/5

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

Implies the right context (bulk-set semantics vs. incremental add/remove) and explicitly states the required account connection and that a system key will not work. It does not name an alternative tool or a when-not-to-use case, so it stops short of full routing guidance.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedjt_global_fleet_search1 field changed
      • changedInput schema / properties / status / description
        Previous value: -"Default: operational + reserve."New value: +"Default: operational + reserve. In US rows, reserve is FAA status code R (registration pending), not a mark reservation."
  2. 1 tool update
    • Changedjt_market_listings1 field changed
      • addedInput schema / properties / spec_filters
        Added value: +{
        +  "description": "Filtros pela FICHA TÉCNICA do anúncio (o que o anunciante declarou). Opcional. Quando presente, a resposta ganha `spec_matches` com os anúncios que afirmam os critérios; anúncio que não informa fica de fora, então leia `withSpecsCount` antes de dizer \"não há nenhum\".",
        +  "properties": {
        +    "avionics": {
        +      "description": "Trecho da suíte de aviônicos (ex: \"G1000\", \"Pro Line 21\").",
        +      "maxLength": 40,
        +      "minLength": 2,
        +      "type": "string"
        +    },
        +    "engine_program": {
        +      "description": "true = só anúncio que declara motor em programa (JSSI, ESP, MSP, TAP...).",
        +      "type": "boolean"
        +    },
        +    "max_engine_hours": {
        +      "description": "Teto de horas do motor mais rodado (desde a revisão geral quando informado, senão desde novo).",
        +      "exclusiveMinimum": 0,
        +      "maximum": 30000,
        +      "type": "integer"
        +    },
        +    "no_damage_history": {
        +      "description": "true = só anúncio que declara não ter histórico de dano.",
        +      "type": "boolean"
        +    },
        +    "wifi": {
        +      "description": "true = só anúncio que declara conectividade de cabine.",
        +      "type": "boolean"
        +    },
        +    "year_min": {
        +      "description": "Ano de fabricação mínimo.",
        +      "maximum": 2100,
        +      "minimum": 1950,
        +      "type": "integer"
        +    }
        +  },
        +  "type": "object"
        +}
  3. 4 tool updates
    • Changedjt_fleet_search1 field changed
      • changedInput schema / properties / uf / description
        Previous value: -"Base state (UF), e.g. SP, MG, PR."New value: +"Registered state (UF) of the owner, e.g. SP, MG, PR. Not where the aircraft is based: the RAB has no base."
    • Changedjt_movements1 field changed
      • changedInput schema / properties / uf / description
        Previous value: -"Base state (UF)."New value: +"Registered state (UF) of the owner."
    • Changedjt_registry_changes1 field changed
      • changedInput schema / properties / uf / description
        Previous value: -"Base state (UF)."New value: +"Registered state (UF) of the owner."
    • Changedjt_watch_rule_add1 field changed
      • changedInput schema / properties / uf / description
        Previous value: -"Base state (RAB base_uf), e.g. SP."New value: +"Registered state (UF) of the owner in the RAB, e.g. SP. Not where the aircraft is based."
  4. 1 tool update
    • Changedjt_fleet_search1 field changed
      • changedInput schema / properties / cva / description
        Previous value: -"CVA (airworthiness certificate) window: expired, expiring (within cvaDays, default 90), valid, unknown (RAB has no date)."New value: +"CVA window: expired, expiring (within cvaDays, default 90), valid, unknown (RAB has no date). CVA = Certificado de Verificação de Aeronavegabilidade, the airworthiness verification certificate (not the CA, Certificado de Aeronavegabilidade)."
  5. 41 tool updates
    • Changedjt_aircraft_base1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_aircraft_flights1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_aircraft_history1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_aircraft_lookup1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_aircraft_lookup_batch1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_airport_lookup1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_airport_traffic1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_company_search2 fields changed
      • changedInput schema / properties / includeGroup / description
        Previous value: -"Economic group of the top candidate (default true; needs the jt_owner_group plan)."New value: +"Economic group of the top candidate (default true; needs access to jt_owner_group)."
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_compute_tco1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_cross_registry1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_fleet_search1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_fleet_stats1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_fractional_fit1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_fractional_market1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_global_fleet_search1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_global_fleet_stats1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_ground_events1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_import_signals1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_maintenance_signal1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_market_listings1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_model_search1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_model_specs1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_movements1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_operator_profile1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_operators_stats1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_owner_fleet1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_owner_group1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_price_history1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_registry_changes1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_runway_check1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_sale_propensity1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_status1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_trip_cost1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_us_aircraft_lookup1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_watch_add1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_watch_list1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_watch_remove1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_watch_rule_add1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_watch_rule_remove1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_watch_rules_list1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
    • Changedjt_watch_set1 field changed
      • changedOutput schema / properties / _meta / required
        Previous value: -[
        -  "tool",
        -  "tier",
        -  "source",
        -  "asOf",
        -  "gated",
        -  "via"
        -]New value: +[
        +  "tool",
        +  "source",
        +  "asOf",
        +  "gated",
        +  "via"
        +]
  6. 1 tool update
    • Changedjt_airport_traffic1 field changed
      • changedInput schema / properties / icao / description
        Previous value: -"Airport ICAO code (SNBR, SBBR, SBKP). Use jt_airport_lookup to resolve a city or name first."New value: +"Airport ICAO code, 4 letters/digits (SNBR, SBBR, SBKP). City names are not accepted."
  7. 10 tool updates
    • Addedjt_aircraft_history
    • Addedjt_fractional_fit
    • Addedjt_fractional_market
    • Addedjt_operator_profile
    • Addedjt_sale_propensity
    • Addedjt_watch_add
    • Addedjt_watch_remove
    • Addedjt_watch_rule_add
    • Addedjt_watch_rule_remove
    • Addedjt_watch_rules_list
  8. 31 tool updates
    • Changedjt_aircraft_base8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_aircraft_flights8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_aircraft_lookup8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_aircraft_lookup_batch11 fields changed
      • changedInput schema / properties / registrations / description
        Previous value: -"Brazilian registrations, with or without hyphen."New value: +"Brazilian registrations, with or without hyphen, any case. Invalid items come back as found:false with error invalid_registration; duplicates (PR-TBL and prtbl) count once."
      • changedInput schema / properties / registrations / items / maxLength
        Previous value: -7New value: +20
      • changedInput schema / properties / registrations / items / minLength
        Previous value: -5New value: +1
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_airport_lookup8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_airport_traffic8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_company_search8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_compute_tco12 fields changed
      • changedInput schema / properties / slug / description
        Previous value: -"Slug de modelo com calculadora completa: embraer-phenom-100, embraer-phenom-300, beechcraft-hawker-400xp, leonardo-aw109 ou airbus-h125."New value: +"Modelo com calculadora completa: slug de catálogo (phenom-100, embraer-phenom-300, beechcraft-hawker-400xp, leonardo-aw109-power, airbus-h125), slug do perfil (embraer-phenom-100, leonardo-aw109), alias, família ou nome. A resposta diz em model qual perfil foi usado."
      • removedInput schema / properties / slug / enum
        Removed value: -[
        -  "embraer-phenom-100",
        -  "embraer-phenom-300",
        -  "beechcraft-hawker-400xp",
        -  "leonardo-aw109",
        -  "airbus-h125"
        -]
      • addedInput schema / properties / slug / maxLength
        Added value: +80
      • addedInput schema / properties / slug / minLength
        Added value: +2
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_cross_registry8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_fleet_search11 fields changed
      • changedInput schema / properties / model / description
        Previous value: -"Catalog slug (embraer-phenom-300), family slug or free text (\"citation\", \"king air\")."New value: +"Catalog slug (embraer-phenom-300), family slug, slug with or without manufacturer prefix, ICAO type code (BE40) or free text (\"citation\", \"king air\"). Free text matches whole words: \"hawker 400\" does not match Hawker 4000."
      • changedInput schema / properties / rbac / description
        Previous value: -"91, 91k (shared/fractional), 135 (air taxi), 121 (airline), 137 (agricultural)."New value: +"91, 91k (shared/fractional: ANAC CF_OPERACIONAL 91K or aircraft operated by a certified RBAC 91K program, see program field), 135 (air taxi), 121 (airline), 137 (agricultural)."
      • addedInput schema / properties / scope
        Added value: +{
        +  "description": "family (default): a model resolves to its whole family (Hawker 400XP = Beechjet 400 family, same total from any alias). variant: only the exact variant matched.",
        +  "enum": [
        +    "family",
        +    "variant"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_fleet_stats8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_global_fleet_search9 fields changed
      • addedInput schema / properties / includeUnknownYear
        Added value: +{
        +  "description": "Include rows with unknown year even when yearFrom/yearTo is set (default false: unknownYear counts what the year filter left out). Each row carries year.confidence: registry, inferred or unknown.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_global_fleet_stats8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_ground_events10 fields changed
      • addedInput schema / properties / atHub
        Added value: +{
        +  "description": "true = only stays at the aircraft inferred hub (home parking); false = only stays AWAY from hub (maintenance prospecting: use false). Omit for both.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / ongoing
        Added value: +{
        +  "description": "true = only stays still in progress (aircraft is there now, as far as tracking sees); false = only finished stays. Omit for both.",
        +  "type": "boolean"
        +}
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_import_signals9 fields changed
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "nextCursor from a previous page.",
        +  "maxLength": 64,
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_maintenance_signal8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_market_listings8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_model_search9 fields changed
      • addedInput schema / properties / offset
        Added value: +{
        +  "default": 0,
        +  "description": "Paginação: pule N modelos (nextOffset da página anterior).",
        +  "maximum": 500,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_model_specs8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_movements8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_operators_stats8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_owner_fleet8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_owner_group8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_price_history8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_registry_changes8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_runway_check8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Addedjt_status
    • Changedjt_trip_cost12 fields changed
      • changedInput schema / properties / slug / description
        Previous value: -"Slug de modelo com calculadora completa: embraer-phenom-100, embraer-phenom-300, beechcraft-hawker-400xp, leonardo-aw109 ou airbus-h125."New value: +"Modelo com calculadora completa (mesmos aliases do compute_tco)."
      • removedInput schema / properties / slug / enum
        Removed value: -[
        -  "embraer-phenom-100",
        -  "embraer-phenom-300",
        -  "beechcraft-hawker-400xp",
        -  "leonardo-aw109",
        -  "airbus-h125"
        -]
      • addedInput schema / properties / slug / maxLength
        Added value: +80
      • addedInput schema / properties / slug / minLength
        Added value: +2
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_us_aircraft_lookup8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_watch_list8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
    • Changedjt_watch_set8 fields changed
      • addedOutput schema / properties / _meta / properties / asOf / description
        Added value: +"Alias of sourceUpdatedAt (kept for compatibility)."
      • addedOutput schema / properties / _meta / properties / generatedAt
        Added value: +{
        +  "description": "When this response was produced (ISO 8601).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / _meta / properties / observedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last event actually observed in the data returned (last flight, last arrival, last listing sighting)."
        +}
      • addedOutput schema / properties / _meta / properties / sourceUpdatedAt
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Last sync of the underlying source (RAB snapshot, registry import, listing scan). Never in the future."
        +}
      • addedOutput schema / properties / _meta / properties / validUntil
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Expiry of the fact returned, when it has one (CVA validity, period end)."
        +}
      • addedOutput schema / properties / code
        Added value: +{
        +  "description": "Machine-readable error code (INTERNAL, TIMEOUT, INVALID_ARGUMENT, NOT_FOUND, TOOL_FAILED, ACCOUNT_KEY_REQUIRED).",
        +  "type": "string"
        +}
      • addedOutput schema / properties / requestId
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / retryable
        Added value: +{
        +  "type": "boolean"
        +}
  9. 1 tool update
    • Addedjt_company_search
  10. 1 tool update
    • Addedjt_global_fleet_search
  11. 1 tool update
    • Changedjt_runway_check1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"Slug do modelo (ex: embraer-phenom-300). Use search_aircraft_catalog se não souber."New value: +"Modelo: slug do catálogo (ex: phenom-300), slug com fabricante (embraer-phenom-300) ou o nome (\"Phenom 300\"). A resposta diz em modelSlug qual modelo foi usado."
  12. 28 tool updates
    • First observedjt_aircraft_base
    • First observedjt_aircraft_flights
    • First observedjt_aircraft_lookup
    • First observedjt_aircraft_lookup_batch
    • First observedjt_airport_lookup
    • First observedjt_airport_traffic
    • First observedjt_compute_tco
    • First observedjt_cross_registry
    • First observedjt_fleet_search
    • First observedjt_fleet_stats
    • First observedjt_global_fleet_stats
    • First observedjt_ground_events
    • First observedjt_import_signals
    • First observedjt_maintenance_signal
    • First observedjt_market_listings
    • First observedjt_model_search
    • First observedjt_model_specs
    • First observedjt_movements
    • First observedjt_operators_stats
    • First observedjt_owner_fleet
    • First observedjt_owner_group
    • First observedjt_price_history
    • First observedjt_registry_changes
    • First observedjt_runway_check
    • First observedjt_trip_cost
    • First observedjt_us_aircraft_lookup
    • First observedjt_watch_list
    • First observedjt_watch_set

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables lookup and validation of Brazilian companies by CNPJ, returning registration status, address, CNAE activities, Simples Nacional/MEI status, and partners from monthly Receita Federal open data, plus validation of numeric or alphanumeric CNPJ check digits and search of active companies by activity and municipality.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables LLM clients to investigate Brazilian companies by CNPJ or name, mapping corporate relationships and gathering structured, source-attributed public evidence from official registries, news, social profiles, judicial proceedings, and PEP checks.
    6
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables querying Brazilian company records from open Receita Federal data without a local database, covering CNPJ lookups, partners, corporate networks, addresses, filters, and DJEN legal notices. It uses public APIs and remote Parquet files to support partial reads and caching.
    AGPL 3.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables searching and analyzing Brazilian sanctions across multiple registers (CNEP, CEIS, CEPIM, CEAF, Leniency Agreements) via CNPJ/CPF or name for leniency agreements, with tools for status checks, sanctioning authorities, location info, and comprehensive reports.
    1
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources