Skip to main content
Glama

Affine Earth Math Court Remote

atc.assert_4d_deconfliction

Exact 4D separation over declared trajectories in integer-scaled geodetic coordinates: decide whether any two are ever SIMULTANEOUSLY inside the stated separation minima, and return either a separation certificate or the violating pair with the exact interval and magnitude of the incursion. Integer micro-degrees, feet and seconds with rational time parameters; no floating point and no epsilon, so separation exactly equal to the minima is separated and nine cells return the same verdict from the same bytes. The longitude frame is the caller's to state exactly, as an optional rational scale with its reference latitude, so the cos(latitude) approximation is chosen deliberately and on the record rather than done in floating point outside the boundary. Civil FAA/ICAO framing; a traffic-analysis instrument, never a control tool.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
obs_seqNodecimal string; a sealed AirspaceObservationSeal sequence is ONE INSTANT of sky and carries no time base, so supplying it alone returns NOT_MEASURED_OBSERVATION_SET_HAS_NO_TIME_BASE rather than a fabricated verdict. e.g. 1
trajectoriesYesdeclared 4D paths: id plus waypoints as decimal strings, strictly advancing in time. e.g. [{"id":"AAA","waypoints":[{"lat_micro_deg":"0","lon_micro_deg":"-100000","alt_feet":"30000","t_seconds":"0"},{"lat_micro_deg":"0","lon_micro_deg":"100000","alt_feet":"30000","t_seconds":"600"}]}]
lon_scale_denNoOPTIONAL, denominator of the longitude scale as decimal string. RECOMMENDED: six digits or fewer. Cosine to 1e-6 is far below any error that could change a verdict about aircraft, and a six-digit denominator clears every segment-pair time base up to 8589 seconds; a three-digit one clears any time base at all. The hard ceiling is 1000000000, but the binding limit is per-request: 8589934592 divided by the segment pair time base, which is the least common multiple of the two segment durations. Above it the pair returns NOT_MEASURED_SCALED_TIME_BASE_EXCEEDS_EXACT_RANGE naming the exact denominator ceiling that clears at that time base, so the remedy is read off the refusal rather than found by bisection. Reduce the ratio to lowest terms or round it to fewer digits. e.g. 1000000
lon_scale_numNoOPTIONAL exact rational longitude scale, numerator as decimal string. Stands for cos(latitude), which is not rational -- so the caller states the approximation it chose and everything after that choice is exact. The test becomes (dlat*den)^2 + (dlon*num)^2 < (minima*den)^2, entirely in integers; latitude is never scaled. Must satisfy 1 <= num <= den. e.g. 642788
look_ahead_secondsNooptional horizon clipped forward from the earliest declared time, decimal string. e.g. 600
vertical_minima_feetYesREQUIRED decimal string, no default. e.g. 1000
reference_lat_micro_degNoOPTIONAL decimal string, the latitude the scale was computed for. REQUIRED whenever a scale is declared: all three fields travel together and a partial declaration is refused with REFUSED_INCOMPLETE_LONGITUDE_SCALE rather than silently ignored. WHEN ALL THREE ARE ABSENT the predicate decides in the plain declared micro-degree coordinate plane with no correction, reports longitude_scale NOT_DECLARED on the certificate, and says so -- a coordinate statement is never presented as a ground distance. e.g. 50000000
horizontal_minima_micro_degYesREQUIRED decimal string, no default -- a defaulted separation standard is a verdict about a rule the caller never stated. e.g. 5000

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed14 schema fields changed
    • changedInput schema / properties / horizontal_minima_micro_deg / description
      Previous value: -"REQUIRED decimal string, no default -- a defaulted separation standard is a verdict about a rule the caller never stated"New value: +"REQUIRED decimal string, no default -- a defaulted separation standard is a verdict about a rule the caller never stated. e.g. 5000"
    • changedInput schema / properties / lon_scale_den / description
      Previous value: -"OPTIONAL, denominator of the longitude scale as decimal string. RECOMMENDED: six digits or fewer. Cosine to 1e-6 is far below any error that could change a verdict about aircraft, and a six-digit denominator clears every segment-pair time base up to 8589 seconds; a three-digit one clears any time base at all. The hard ceiling is 1000000000, but the binding limit is per-request: 8589934592 divided by the segment pair time base, which is the least common multiple of the two segment durations. Above it the pair returns NOT_MEASURED_SCALED_TIME_BASE_EXCEEDS_EXACT_RANGE naming the exact denominator ceiling that clears at that time base, so the remedy is read off the refusal rather than found by bisection. Reduce the ratio to lowest terms or round it to fewer digits"New value: +"OPTIONAL, denominator of the longitude scale as decimal string. RECOMMENDED: six digits or fewer. Cosine to 1e-6 is far below any error that could change a verdict about aircraft, and a six-digit denominator clears every segment-pair time base up to 8589 seconds; a three-digit one clears any time base at all. The hard ceiling is 1000000000, but the binding limit is per-request: 8589934592 divided by the segment pair time base, which is the least common multiple of the two segment durations. Above it the pair returns NOT_MEASURED_SCALED_TIME_BASE_EXCEEDS_EXACT_RANGE naming the exact denominator ceiling that clears at that time base, so the remedy is read off the refusal rather than found by bisection. Reduce the ratio to lowest terms or round it to fewer digits. e.g. 1000000"
    • changedInput schema / properties / lon_scale_num / description
      Previous value: -"OPTIONAL exact rational longitude scale, numerator as decimal string. Stands for cos(latitude), which is not rational -- so the caller states the approximation it chose and everything after that choice is exact. The test becomes (dlat*den)^2 + (dlon*num)^2 < (minima*den)^2, entirely in integers; latitude is never scaled. Must satisfy 1 <= num <= den"New value: +"OPTIONAL exact rational longitude scale, numerator as decimal string. Stands for cos(latitude), which is not rational -- so the caller states the approximation it chose and everything after that choice is exact. The test becomes (dlat*den)^2 + (dlon*num)^2 < (minima*den)^2, entirely in integers; latitude is never scaled. Must satisfy 1 <= num <= den. e.g. 642788"
    • changedInput schema / properties / look_ahead_seconds / description
      Previous value: -"optional horizon clipped forward from the earliest declared time, decimal string"New value: +"optional horizon clipped forward from the earliest declared time, decimal string. e.g. 600"
    • changedInput schema / properties / obs_seq / description
      Previous value: -"decimal string; a sealed AirspaceObservationSeal sequence is ONE INSTANT of sky and carries no time base, so supplying it alone returns NOT_MEASURED_OBSERVATION_SET_HAS_NO_TIME_BASE rather than a fabricated verdict"New value: +"decimal string; a sealed AirspaceObservationSeal sequence is ONE INSTANT of sky and carries no time base, so supplying it alone returns NOT_MEASURED_OBSERVATION_SET_HAS_NO_TIME_BASE rather than a fabricated verdict. e.g. 1"
    • changedInput schema / properties / reference_lat_micro_deg / description
      Previous value: -"OPTIONAL decimal string, the latitude the scale was computed for. REQUIRED whenever a scale is declared: all three fields travel together and a partial declaration is refused with REFUSED_INCOMPLETE_LONGITUDE_SCALE rather than silently ignored. WHEN ALL THREE ARE ABSENT the predicate decides in the plain declared micro-degree coordinate plane with no correction, reports longitude_scale NOT_DECLARED on the certificate, and says so -- a coordinate statement is never presented as a ground distance"New value: +"OPTIONAL decimal string, the latitude the scale was computed for. REQUIRED whenever a scale is declared: all three fields travel together and a partial declaration is refused with REFUSED_INCOMPLETE_LONGITUDE_SCALE rather than silently ignored. WHEN ALL THREE ARE ABSENT the predicate decides in the plain declared micro-degree coordinate plane with no correction, reports longitude_scale NOT_DECLARED on the certificate, and says so -- a coordinate statement is never presented as a ground distance. e.g. 50000000"
    • changedInput schema / properties / trajectories / description
      Previous value: -"declared 4D paths: id plus waypoints as decimal strings, strictly advancing in time"New value: +"declared 4D paths: id plus waypoints as decimal strings, strictly advancing in time. e.g. [{\"id\":\"AAA\",\"waypoints\":[{\"lat_micro_deg\":\"0\",\"lon_micro_deg\":\"-100000\",\"alt_feet\":\"30000\",\"t_seconds\":\"0\"},{\"lat_micro_deg\":\"0\",\"lon_micro_deg\":\"100000\",\"alt_feet\":\"30000\",\"t_seconds\":\"600\"}]}]"
    • addedInput schema / properties / trajectories / items / properties / id / description
      Added value: +"the aircraft or path id, e.g. AAA"
    • addedInput schema / properties / trajectories / items / properties / waypoints / description
      Added value: +"two or more waypoints strictly advancing in t_seconds, e.g. [{\"lat_micro_deg\":\"0\",\"lon_micro_deg\":\"-100000\",\"alt_feet\":\"30000\",\"t_seconds\":\"0\"},{\"lat_micro_deg\":\"0\",\"lon_micro_deg\":\"100000\",\"alt_feet\":\"30000\",\"t_seconds\":\"600\"}]"
    • changedInput schema / properties / trajectories / items / properties / waypoints / items / properties / alt_feet / description
      Previous value: -"decimal string"New value: +"decimal string, altitude in feet, e.g. 30000"
    • changedInput schema / properties / trajectories / items / properties / waypoints / items / properties / lat_micro_deg / description
      Previous value: -"decimal string"New value: +"decimal string, latitude in micro-degrees, e.g. 0"
    • changedInput schema / properties / trajectories / items / properties / waypoints / items / properties / lon_micro_deg / description
      Previous value: -"decimal string"New value: +"decimal string, longitude in micro-degrees, e.g. -100000"
    • changedInput schema / properties / trajectories / items / properties / waypoints / items / properties / t_seconds / description
      Previous value: -"decimal string"New value: +"decimal string, time in whole seconds, e.g. 600"
    • changedInput schema / properties / vertical_minima_feet / description
      Previous value: -"REQUIRED decimal string, no default"New value: +"REQUIRED decimal string, no default. e.g. 1000"
  2. First observed

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so richly: exact integer arithmetic with no floating point or epsilon, the boundary convention that separation equal to the minima counts as separated, byte-level determinism across 'nine cells', named refusal codes (NOT_MEASURED_SCALED_TIME_BASE_EXCEEDS_EXACT_RANGE, REFUSED_INCOMPLETE_LONGITUDE_SCALE), and the all-or-nothing longitude-scale requirement. This is exactly the behavioral context an agent cannot infer from the schema.

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?

Purpose and determinism guarantees are front-loaded in the opening sentence, and almost every sentence adds a distinct constraint. The single dense paragraph is long and packs several concepts (coordinate frame, refusal semantics, tool status) without visual breaks, which slightly taxes scanning, but there is little outright waste.

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 an 8-parameter, no-output-schema tool, the description covers the coordinate frame, the required/optional split, refusal behavior, boundary semantics, and describes what the two return shapes contain (certificate vs violating pair with interval and magnitude). An agent has enough to call it correctly and interpret the result.

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 prose adds real meaning beyond the fields: it explains why the minima have no default ('a defaulted separation standard is a verdict about a rule the caller never stated'), how the rational longitude scale stands in for cos(latitude), and that all three scale fields must travel together. The rationale and refusal semantics go beyond the schema text.

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 first sentence names a specific verb (decide/assert) and resource (4D separation over declared trajectories), states the exact decision made (whether any two are ever simultaneously inside the minima) and the two possible outputs (certificate or violating pair with interval and magnitude). No sibling tool overlaps this domain, so the identity is unambiguous.

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 clearly frames the tool as a traffic-analysis instrument and explicitly excludes control use ('never a control tool'), and it tells the caller that supplying only obs_seq yields NOT_MEASURED_OBSERVATION_SET_HAS_NO_TIME_BASE rather than a verdict. It does not spell out preconditions or an explicit when-to-use/when-not checklist against alternatives, but no meaningful alternative exists in this toolset.

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