Skip to main content
Glama

Registry changes in a period (RAB changelog) (deprecated name)

jt_movements
Read-onlyIdempotent

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, registrations, company cnpj; default segment executive, or all when registrations or cnpj is set) are applied in the database. The company filter matches the aircraft linked to the CNPJ today plus owner/operator changes whose before or after name is a name the RAB uses for that company, so aircraft that already left it are included; company.rabNamesMatched says how many RAB names matched (0 = only current aircraft). Each row then carries companyMatch: name (the company is one side of that change) or current_aircraft (the aircraft belongs to it today; the row can predate its arrival). The RAB history keeps only the first owner name, so a company that was a minority co-owner of an aircraft that already left can be missed. summary comes first: changes by type (entry, exit, owner_change, operator_change, status_change) and distinct aircraft (serial + model counted once) for the whole filter, all pages; 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.

Input Schema

NameRequiredDescriptionDefault
toNoEnd date, YYYY-MM-DD (inclusive). Default: today.
ufNoRegistered state (UF) of the owner.
cnpjNoOnly changes of this company: 14-digit CNPJ or 8-digit root. Includes aircraft that already left it. CPF is not accepted.
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. Not a registration: a Brazilian registration here (PS-VLY) is moved to registrations and the answer carries notice.
cursorNonextCursor from a previous page.
segmentNoDefault executive; default all when registrations or cnpj is set.
registrationsNoOnly these registrations (with or without hyphen).

Output Schema

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

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / model / description
      Previous value: -"Catalog slug, family slug or free text."New value: +"Catalog slug, family slug or free text. Not a registration: a Brazilian registration here (PS-VLY) is moved to registrations and the answer carries notice."
  2. Changed3 schema fields changed
    • addedInput schema / properties / cnpj
      Added value: +{
      +  "description": "Only changes of this company: 14-digit CNPJ or 8-digit root. Includes aircraft that already left it. CPF is not accepted.",
      +  "maxLength": 18,
      +  "minLength": 8,
      +  "type": "string"
      +}
    • addedInput schema / properties / registrations
      Added value: +{
      +  "description": "Only these registrations (with or without hyphen).",
      +  "items": {
      +    "maxLength": 20,
      +    "minLength": 1,
      +    "type": "string"
      +  },
      +  "maxItems": 25,
      +  "minItems": 1,
      +  "type": "array"
      +}
    • changedInput schema / properties / segment / description
      Previous value: -"Default executive."New value: +"Default executive; default all when registrations or cnpj is set."
  3. Changed1 schema field changed
    • changedInput schema / properties / uf / description
      Previous value: -"Base state (UF)."New value: +"Registered state (UF) of the owner."
  4. Changed1 schema field changed
    • changedOutput schema / properties / _meta / required
      Previous value: -[
      -  "tool",
      -  "tier",
      -  "source",
      -  "asOf",
      -  "gated",
      -  "via"
      -]New value: +[
      +  "tool",
      +  "source",
      +  "asOf",
      +  "gated",
      +  "via"
      +]
  5. Changed8 schema 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"
      +}
  6. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare read-only, idempotent, non-destructive, so the bar is lower, yet the description discloses a lot beyond them: database-side filtering, the companyMatch row semantics, the known blind spot (RAB keeps only the first owner name, so minority co-owners can be missed), sameAirframeAs de-duplication, and the meaning of truncated/found:false. This is exactly the extra context annotations cannot carry.

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

Conciseness4/5

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

The deprecation notice and the core definition are front-loaded, and nearly every sentence carries operative meaning (defaults, match semantics, caveats). It is a single dense block paragraph without sub-structure, which makes the company-filter explanation harder to scan than it needs to be.

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 11 parameters, an output schema present, and rich annotations, the coverage is thorough: pagination, summary ordering, exact total vs truncated, max page size and the segment default are all stated. An agent can call this correctly and interpret the response without opening other sources.

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 meaning the schema does not: the default segment rule (executive, or all when registrations/cnpj is set) and, importantly, what the cnpj filter actually matches (current aircraft plus owner/operator names the RAB uses for that company) with the rabNamesMatched caveat. It does not clarify from/to or rbac beyond the schema, so not a 5.

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 precisely that this is the deprecated alias of jt_registry_changes with identical behaviour, then names the resource (RAB registry changelog) and enumerates the change types. It explicitly rules out the wrong reading ('not airport movements') that the name jt_movements would otherwise invite.

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 the deprecation window (kept until 2026-12-09) and routes the agent to jt_registry_changes, names what does not belong here (airport arrivals/departures), and warns that a registry change is not a sale, pointing to the caveat field. Both when-to-use and when-not are explicit.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources