{"serverId":"mcp-registry/earth.affine/math-court","tools":[{"name":"atc.assert_4d_deconfliction","fixed":{"name":"atc_assert_4d_deconfliction","description":"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 ","inputSchema":{"type":"object","required":["trajectories","horizontal_minima_micro_deg","vertical_minima_feet"],"properties":{"obs_seq":{"type":"string","description":"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"},"trajectories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"the aircraft or path id, e.g. AAA"},"waypoints":{"type":"array","items":{"type":"object","properties":{"alt_feet":{"type":"string","description":"decimal string, altitude in feet, e.g. 30000"},"t_seconds":{"type":"string","description":"decimal string, time in whole seconds, e.g. 600"},"lat_micro_deg":{"type":"string","description":"decimal string, latitude in micro-degrees, e.g. 0"},"lon_micro_deg":{"type":"string","description":"decimal string, longitude in micro-degrees, e.g. -100000"}}},"description":"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\"}]"}}},"description":"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\"}]}]"},"lon_scale_den":{"type":"string","description":"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"},"lon_scale_num":{"type":"string","description":"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"},"look_ahead_seconds":{"type":"string","description":"optional horizon clipped forward from the earliest declared time, decimal string. e.g. 600"},"vertical_minima_feet":{"type":"string","description":"REQUIRED decimal string, no default. e.g. 1000"},"reference_lat_micro_deg":{"type":"string","description":"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"},"horizontal_minima_micro_deg":{"type":"string","description":"REQUIRED decimal string, no default -- a defaulted separation standard is a verdict about a rule the caller never stated. e.g. 5000"}}}},"changes":[{"kind":"name","detail":"Renamed \"atc.assert_4d_deconfliction\" → \"atc_assert_4d_deconfliction\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":1235,"tokensAfter":1235},{"name":"execute_2local_hamiltonian","fixed":{"name":"execute_2local_hamiltonian","description":"QMA 2-local Hamiltonian, sealed as exact rational Jordan exclusions on the UUM-8D torus: given ZZ terms and a presented computational configuration, return the exact energy energy_num/energy_den of that configuration (z = 1-2s per site; each term adds jnum/jden * z_i * z_j). constraints are i,j,jnum,jden;... (sites i,j with coupling jnum/jden), config is s0,s1,... bits. The verdict is graded against the one energy QMACourtLaw holds a seal for: -1/1, constraints 0,1,1,1 with config 0,1 (fixture2L","inputSchema":{"type":"object","required":[],"properties":{"config":{"type":"string","description":"computational bits s0,s1,... each 0 or 1, one per site, e.g. 0,1"},"constraints":{"type":"string","description":"ZZ terms i,j,jnum,jden;... e.g. 0,1,1,1 (sites 0 and 1, coupling 1/1)"},"jordanBondExclusions":{"type":"string","description":"alias of constraints. e.g. 0,1,1,1"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":260,"tokensAfter":260},{"name":"execute_artifact_crucible","fixed":{"name":"execute_artifact_crucible","description":"Ingest an ARTIFACT INGESTION BRIEF plus the artifact an agent generated for it; evaluate it against the laws the brief declares; seal and return the artifact ONLY on the top rung. THE BRIEF TEMPLATE is https://affine.earth/language-game/court-client.brief.txt: four bracketed sections, [LANGUAGE GAME DEFINITION] with Purpose, Win Condition (Exit) and Losing Moves; [STRUCTURAL GOAL] with Manifold Target, Input Coordinates and Execution Lock; [PAYLOAD SHAPE] with Target Architecture, File Structure","inputSchema":{"type":"object","required":["brief","artifact"],"properties":{"brief":{"type":"string","description":"The complete ARTIFACT INGESTION BRIEF: four sections ([LANGUAGE GAME DEFINITION], [STRUCTURAL GOAL], [PAYLOAD SHAPE], [WASM MEMBRANE INTEGRATION]) with every field filled. The blank template is refused as REFUSED_UNFILLED_PLACEHOLDER. e.g. the served template https://affine.earth/language-game/court-client.brief.txt with every field filled"},"artifact":{"type":"string","description":"The source the agent generated to satisfy the brief. Generation is the caller's half; the crucible compiles, evaluates and seals. e.g. the source text of one file, or the base64 of a compiled wasm module such as AGFzbQEAAAABBQFgAAF/ (which reaches rung 7)"},"target_architecture":{"enum":["Swift 6.4 ~Copyable","AArch64 SIMD Assembler","ESP32 Xtensa Bare-Metal","Rust no_std wasm32"],"type":"string","description":"OPTIONAL and redundant: the brief's [PAYLOAD SHAPE] is the single home for this value. Supplied only for callers using the original schema; a value that contradicts the brief is REFUSED_ARCHITECTURE_CONFLICT rather than silently overriding it. e.g. Rust no_std wasm32 - the enum member that equals the served template's 'Target Architecture:' line verbatim; 'wasm32' alone is REFUSED_ARCHITECTURE_CONFLICT. Omit the field to let the brief carry it"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":535,"tokensAfter":535},{"name":"execute_exact_permanent","fixed":{"name":"execute_exact_permanent","description":"#P exact integer permanent, n≤3, computed by the direct expansion and checked against Ryser's formula. matrix is a decimal-string grid, rows split by | and cells by commas. Returns energy_num = the permanent, energy_den = 1; verdict is WIN when it equals 6 - QMACourtLaw.fixturePermanent, the all-ones 3x3 matrix - and MISS for every other permanent, with detail per=P_want_6; if the two expansions disagree the answer is MISS naming both. n>3 is REFUSED_INSTANCE_BOUND. Floats refused (REFUSED_FLOAT","inputSchema":{"type":"object","required":[],"properties":{"matrix":{"type":"string","description":"rows | cells , integer entries. e.g. 1,1,1|1,1,1|1,1,1"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":198,"tokensAfter":198},{"name":"execute_transition","fixed":{"name":"execute_transition","description":"Certified membrane: Rational S4/C4 lanes -> SCF boundary -> annihilate raw context -> NATS geometry-only turn -> Aristotelian projection. IDEMPOTENT: this membrane is stateless and keeps no record of a signature, so replaying an identical request is admitted and returns the identical receipt_hash rather than being refused as a replay. Safe to retry on a timeout; it is not a second transition.","inputSchema":{"type":"object","required":["entity_id","intent","client_signature"],"properties":{"intent":{"type":"string","description":"the transition verb, one of the enum values, e.g. INGEST"},"economics":{"type":"object","description":"Optional I_PF economics object: executor hash + impact matrix (Rational weights), keys executor_btc_address_hash and context_class, e.g. {\"executor_btc_address_hash\":\"0123456789abcdef0123456789abcdef\",\"context_class\":\"default\"}"},"entity_id":{"type":"string","description":"wallet_geo entityID hex. e.g. 0123456789abcdef0123456789abcdef"},"bond_status":{"type":"string","description":"the bond state the caller reports for itself, recorded with the turn; e.g. BONDED. Omitted -> UNKNOWN"},"c4_constraints":{"type":"array","items":{"type":"string"},"description":"Rational lanes as num/den strings. e.g. [\"1/1\",\"0/1\",\"2/3\",\"1/4\"]"},"s4_coordinates":{"type":"array","items":{"type":"string"},"description":"Rational lanes as num/den strings. e.g. [\"1/2\",\"3/4\",\"0/1\",\"5/1\"]"},"user_vqbit_hash":{"type":"string","description":"Exactly 32 lowercase hex, or OMIT it and the cell derives sha256(entity_id|scf_hex)[0:16]. A stated value that is not 32 hex is REFUSED rather than replaced - the cell will not verify your signature against an identity you did not state. e.g. 0123456789abcdef0123456789abcdef"},"client_signature":{"type":"string","description":"sha256(INTENT|scf_hex|user_vqbit_hash|genesis_epoch) first 16 bytes as 32 lowercase hex; or the game seal sha256(INTENT|scf_hex|user_vqbit_hash); or an ML-DSA-87 IDENTITY_BIND package. scf_hex is NOT an input and is NOT a sha256: the cell derives it with SpatialChordalFingerprint (15 integer lattice ratios folded FNV-1a-128) over the NORMALISED lanes. Mirror that algorithm to sign on the first call - /language-game/scf.js is the reference port - or send any 32-hex signature once and re-sign over the scf_hex the refusal returns. genesis_epoch is 2026-01-27T00:00:00Z. e.g. 0123456789abcdef0123456789abcdef"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":688,"tokensAfter":688},{"name":"membrane_health","fixed":{"name":"membrane_health","description":"Stateless membrane identity (mode, genesis epoch, subjects) plus cell listen facts.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":49,"tokensAfter":49},{"name":"twin.robotics.evaluate_exact_ik","fixed":{"name":"twin_robotics_evaluate_exact_ik","description":"Exact integer FORWARD pose of a fixed seven-piece avatar rig - it takes no target pose and derives no joint values from one; that solver is not built here. The rig is the head and its eyes: piece ids 0-6 are head, left eye globe, right eye globe, left upper lid, left lower lid, right upper lid, right lower lid. Post the piece_id to report; pieces is OPTIONAL - rows (piece_id, parent_id, origin_*_milli, rotation_milli_deg, extent_milli as decimal strings) that override the built-in rest chain by ","inputSchema":{"type":"object","required":["piece_id"],"properties":{"pieces":{"type":"array","items":{"type":"object","properties":{"piece_id":{"type":"string","description":"decimal string, one of the seven declared ids 0..6 (0 head, 1 eye_globe_l, 2 eye_globe_r, 3 lid_upper_l, 4 lid_lower_l, 5 lid_upper_r, 6 lid_lower_r), e.g. 3"},"parent_id":{"type":"string","description":"decimal string, the id of the parent piece, e.g. 0 (the head)"},"extent_milli":{"type":"string","description":"decimal string, extent in millimetres, e.g. 12"},"origin_x_milli":{"type":"string","description":"decimal string, origin X in millimetres, e.g. 0"},"origin_y_milli":{"type":"string","description":"decimal string, origin Y in millimetres, e.g. 0"},"origin_z_milli":{"type":"string","description":"decimal string, origin Z in millimetres, e.g. 0"},"rotation_milli_deg":{"type":"string","description":"decimal string, rotation in milli-degrees, e.g. 15000 for 15 degrees"}}},"description":"declared PieceFrame rows as decimal strings. e.g. [{\"piece_id\":\"3\",\"rotation_milli_deg\":\"15000\"}]"},"piece_id":{"type":"string","description":"decimal string, the piece to solve for. e.g. 3"},"relative_to_head":{"type":"boolean","description":"state the pose relative to the head (camera-free) rather than the anchor. e.g. true"}}}},"changes":[{"kind":"name","detail":"Renamed \"twin.robotics.evaluate_exact_ik\" → \"twin_robotics_evaluate_exact_ik\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":522,"tokensAfter":522},{"name":"umc_status","fixed":{"name":"umc_status","description":"Read-only: the Universal Manifold Controller tip, the KV buckets it seals to (UMC_LONG_PLAY, C4_STATES, JORDAN_BONDS), the four Long Play domains, the NATS subjects it publishes on (gaiaftcl.umc.state.> and gaiaftcl.agent.state.>) and the documented MCP tool surface. Takes no arguments, advances nothing, and is safe to call at any rate. Use it to discover what umc_direct and umc_resume will act on.","inputSchema":{"type":"object","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":136,"tokensAfter":136},{"name":"verify_quantum_counting","fixed":{"name":"verify_quantum_counting","description":"QC-015 Quantum counting: certify that count equals the number of 1s in the presented oracle string. oracle is a 0/1 string of length 2..8 (the marked entries are the 1s), count is the claimed number as a decimal string. WIN when equal, MISS naming the true count. A presented witness is verified; nothing is counted by amplitude. Floats refused.","inputSchema":{"type":"object","required":["count","oracle"],"properties":{"count":{"type":"string","description":"claimed number of 1s, decimal. e.g. 1"},"oracle":{"type":"string","description":"0/1 string, length 2..8, e.g. 0001"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":176,"tokensAfter":176},{"name":"weather.convective_containment","fixed":{"name":"weather_convective_containment","description":"Exact containment of a declared track against convective cell boundaries, including NON-CONVEX footprints: decide whether the track stays outside every declared cell within that cell's altitude layer, and on a breach name the breaching segment, the cell, how the breach happens and the exact parameter along the segment where it does. Exact integer crossing number over micro-degree vertices, with the optional standoff decided by comparing squared distances — no square root, no floating point, no e","inputSchema":{"type":"object","required":["track_micro_deg","cells"],"properties":{"cells":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"the cell id, e.g. SQUARE"},"top_feet":{"type":"string","description":"decimal string, cell top altitude in feet, e.g. 40000"},"vertices":{"type":"array","items":{"type":"object","properties":{"lat_micro_deg":{"type":"string","description":"decimal string, vertex latitude in micro-degrees, e.g. 30000"},"lon_micro_deg":{"type":"string","description":"decimal string, vertex longitude in micro-degrees, e.g. 30000"}}},"description":"three or more polygon vertices in micro-degrees, e.g. [{\"lat_micro_deg\":\"0\",\"lon_micro_deg\":\"0\"},{\"lat_micro_deg\":\"0\",\"lon_micro_deg\":\"30000\"},{\"lat_micro_deg\":\"30000\",\"lon_micro_deg\":\"30000\"},{\"lat_micro_deg\":\"30000\",\"lon_micro_deg\":\"0\"}]"},"base_feet":{"type":"string","description":"decimal string, cell base altitude in feet, e.g. 0"}}},"description":"declared convective cells: id, vertices, and layer as decimal strings. Declaring none returns NOT_MEASURED_NO_CONVECTIVE_CELLS_DECLARED, never CONTAINED. e.g. [{\"id\":\"SQUARE\",\"base_feet\":\"0\",\"top_feet\":\"40000\",\"vertices\":[{\"lat_micro_deg\":\"0\",\"lon_micro_deg\":\"0\"},{\"lat_micro_deg\":\"0\",\"lon_micro_deg\":\"30000\"},{\"lat_micro_deg\":\"30000\",\"lon_micro_deg\":\"30000\"},{\"lat_micro_deg\":\"30000\",\"lon_micro_deg\":\"0\"}]}]"},"track_micro_deg":{"type":"array","items":{"type":"object","properties":{"alt_feet":{"type":"string","description":"decimal string, altitude in feet, e.g. 30000"},"lat_micro_deg":{"type":"string","description":"decimal string, latitude in micro-degrees, e.g. 50000"},"lon_micro_deg":{"type":"string","description":"decimal string, longitude in micro-degrees, e.g. 50000"}}},"description":"lat_micro_deg,lon_micro_deg,alt_feet points as decimal strings; two or more, since this names a breaching SEGMENT. e.g. [{\"lat_micro_deg\":\"50000\",\"lon_micro_deg\":\"50000\",\"alt_feet\":\"30000\"},{\"lat_micro_deg\":\"50000\",\"lon_micro_deg\":\"80000\",\"alt_feet\":\"30000\"}]"},"margin_micro_deg":{"type":"string","description":"optional standoff as decimal string in the same declared units; strict, so exactly this far away is contained. e.g. 1000"}}}},"changes":[{"kind":"name","detail":"Renamed \"weather.convective_containment\" → \"weather_convective_containment\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":798,"tokensAfter":798}],"toolsChanged":10,"tokensSaved":0,"todo":[],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}