{"serverId":"mcp-registry/io.github.lbailey94/whitemagic-mcp","tools":[{"name":"chohan.settle","fixed":{"name":"chohan_settle","description":"[Experimental / Simulation] Classify a payload or proof string into Cho (丁 / even / pass) or Han (半 / odd / anomaly). Advisory string/parity classification only; does not independently verify execution proofs or perform on-chain escrow.","inputSchema":{"type":"object","required":["payload"],"properties":{"bid":{"type":"integer","description":"Advisory stake label in micro-USDC (default: 10000; not escrowed)"},"proof":{"type":"string","description":"Optional proof label or invariant note"},"payload":{"type":"string","description":"Claim, evaluation payload, or state representation to adjudicate"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Cho-Han Binary Classification (Experimental Advisory)"},"changes":[{"kind":"name","detail":"Renamed \"chohan.settle\" → \"chohan_settle\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":187,"tokensAfter":187},{"name":"decision.deliberate","fixed":{"name":"decision_deliberate","description":"Deliberate over ambiguous candidate options using local grammar-constrained SLM inference (100% schema guarantee, no hallucination) and emit a signed deliberation receipt. (READ-ONLY: mutations refused)","inputSchema":{"type":"object","required":["intent","candidates"],"properties":{"intent":{"type":"string","description":"User request or state description"},"candidates":{"type":["array","object"],"description":"Allowed candidate action names, objects, or map"},"emit_receipt":{"type":"boolean","description":"Write signed deliberation receipt to <store>/receipts (default true)"}},"additionalProperties":false},"title":"System 1.5 Local Deliberator (Grammar-Constrained SLM)"},"changes":[{"kind":"name","detail":"Renamed \"decision.deliberate\" → \"decision_deliberate\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":184,"tokensAfter":184},{"name":"decision.outcome","fixed":{"name":"decision_outcome","description":"Sign and journal the outcome of a dispatched decision/shortlist receipt (success, failure, corrected) for the learning loop. (READ-ONLY: mutations refused)","inputSchema":{"type":"object","required":["receipt_path","outcome"],"properties":{"note":{"type":"string","description":"Free-form note"},"outcome":{"enum":["success","failure","corrected","unknown"],"type":"string","description":"Observed outcome"},"tenant_id":{"type":"string"},"session_id":{"type":"string"},"receipt_path":{"type":"string","description":"Path to the subject receipt JSON under <store>/receipts"},"corrected_route":{"type":"string","description":"Correct route when the outcome is 'corrected'"}},"additionalProperties":false},"title":"Record Decision Outcome"},"changes":[{"kind":"name","detail":"Renamed \"decision.outcome\" → \"decision_outcome\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":207,"tokensAfter":207},{"name":"decision.shortlist","fixed":{"name":"decision_shortlist","description":"Rank candidate routes/actions for a state with the local static-embedding retrieval organ (no network, no model forward pass) and emit a signed shortlist receipt. (READ-ONLY: mutations refused)","inputSchema":{"type":"object","required":["state"],"properties":{"k":{"type":"integer","description":"Shortlist size (default 5)"},"state":{"type":["string","object"],"description":"State to retrieve candidates for (text or JSON)"},"routes":{"type":"object","description":"Candidate set: {name: description} or {name: [utterances...]}; multi-utterance routes score by best match"},"cascade":{"type":"boolean","description":"If ambiguous, cascade to System 1.5 Deliberator (default true)"},"tenant_id":{"type":"string","description":"Tenant id for the shortlist receipt (default: local)"},"session_id":{"type":"string","description":"Session id for the shortlist receipt"},"task_class":{"type":"string","description":"Task class (e.g. route_dispatch)"},"catalog_path":{"type":"string","description":"Path to a JSON file with {name: description}; used when `routes` is absent"},"emit_receipt":{"type":"boolean","description":"Write a signed shortlist receipt to <store>/receipts (default true)"},"margin_threshold":{"type":"number","description":"Below this top1-top2 margin the gate is 'ambiguous' (default 0.02)"}},"additionalProperties":false},"title":"System 0.5 Route Shortlist (Static Embeddings)"},"changes":[{"kind":"name","detail":"Renamed \"decision.shortlist\" → \"decision_shortlist\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":385,"tokensAfter":385},{"name":"galaxy.create","fixed":{"name":"galaxy_create","description":"Establish a new sovereign galaxy namespace with an initial genesis beacon. (READ-ONLY: mutations refused)","inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","description":"Galaxy name (lowercase, no colons/spaces)"},"description":{"type":"string","description":"Optional description of the galaxy's purpose"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Create Galaxy"},"changes":[{"kind":"name","detail":"Renamed \"galaxy.create\" → \"galaxy_create\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":117,"tokensAfter":117},{"name":"galaxy.fork","fixed":{"name":"galaxy_fork","description":"Fork an existing galaxy partition into a new sovereign galaxy branch (e.g. 'guide' -> 'project-alpha'). (READ-ONLY: mutations refused)","inputSchema":{"type":"object","required":["source","target"],"properties":{"source":{"type":"string","description":"Source galaxy name to fork from (e.g. 'guide')"},"target":{"type":"string","description":"Target galaxy name to establish (e.g. 'project-alpha')"}},"additionalProperties":false},"title":"Fork Galaxy"},"changes":[{"kind":"name","detail":"Renamed \"galaxy.fork\" → \"galaxy_fork\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":130,"tokensAfter":130},{"name":"galaxy.list","fixed":{"name":"galaxy_list","description":"List all active sovereign memory galaxies, their record counts, sample tags, and starter guide status.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List Galaxies"},"changes":[{"kind":"name","detail":"Renamed \"galaxy.list\" → \"galaxy_list\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":61,"tokensAfter":61},{"name":"gnosis.explain","fixed":{"name":"gnosis_explain","description":"Explain internal architectural invariants, memory schemas, or routing logic.","inputSchema":{"type":"object","properties":{"concept":{"type":"string","description":"Concept to explain"},"is_spawn":{"type":"boolean","description":"Claim: the invocation spawns a process"},"is_write":{"type":"boolean","description":"Claim: the invocation writes"},"args_hash":{"type":"string","description":"Hash of the arguments under evaluation"},"tool_name":{"type":"string","description":"Tool name to explain"},"is_network":{"type":"boolean","description":"Claim: the invocation uses the network"},"has_purpose":{"type":"boolean","description":"Claim: the invocation carries a purpose"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Gnosis Explain"},"changes":[{"kind":"name","detail":"Renamed \"gnosis.explain\" → \"gnosis_explain\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":207,"tokensAfter":207},{"name":"gnosis.status","fixed":{"name":"gnosis_status","description":"System epistemics, self-model calibration, and invariant health status.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Gnosis Self-Model Status"},"changes":[{"kind":"name","detail":"Renamed \"gnosis.status\" → \"gnosis_status\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":53,"tokensAfter":53},{"name":"legion.summon","fixed":{"name":"legion_summon","description":"[Experimental / Simulation] Run a deterministic Rayon stack-codon cohort simulation across CPU cores. Evaluates N candidate codon variants across four archetypes (Adversarial, Refactor, Speculative Replay, Horizon Stress) and classifies heuristic outcomes via Cho-Han (丁半). Scores and token-budget deltas are modeled estimates, not measured LLM execution.","inputSchema":{"type":"object","required":["edict"],"properties":{"peer":{"type":"string","description":"Optional remote peer address (e.g. '152.53.195.47:7369') for cross-node Gap Junction Wire Protocol 7369 handoff"},"edict":{"type":"string","description":"Imperial edict codon or Taoist hand seal sequence to dispatch across the shadow clone legion (e.g. '⟪ 通 · 照 · 合 · 證 ⟫', '三家归元印')"},"clones":{"type":"integer","maximum":128,"minimum":1,"description":"Number of volatile shadow clones to summon (default: 32, max: 128)"},"archetype":{"type":"string","description":"Optional cohort archetype focus ('AdversarialRedTeam', 'RefactorEvolution', 'SpeculativeReplay', 'HorizonStress', or 'all')"}},"additionalProperties":false},"title":"Summon GAS Shadow Clone Legion (Experimental Simulation)"},"changes":[{"kind":"name","detail":"Renamed \"legion.summon\" → \"legion_summon\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":313,"tokensAfter":313},{"name":"mandala.evaluate","fixed":{"name":"mandala_evaluate","description":"Execute a candidate mutation in an ephemeral Landlock sandboxed Kekkai and notarize with Spec 0.5 receipt. (READ-ONLY: mutations refused)","inputSchema":{"type":"object","required":["candidate_id"],"properties":{"command":{"type":"string","description":"Optional command to execute within ephemeral sandbox"},"candidate_id":{"type":"string","description":"Unique identifier for the mutation candidate"},"mutation_kind":{"enum":["vanguard","heavy","noop"],"type":"string","description":"Mutation category"}},"additionalProperties":false},"title":"Mandala Confinement Evaluation"},"changes":[{"kind":"name","detail":"Renamed \"mandala.evaluate\" → \"mandala_evaluate\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":161,"tokensAfter":161},{"name":"mandala.status","fixed":{"name":"mandala_status","description":"Status of the Mandala microsecond Landlock sandbox, ABI level, POSIX rlimit bounds, and capability ledger.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Mandala Kekkai Sandbox Status"},"changes":[{"kind":"name","detail":"Renamed \"mandala.status\" → \"mandala_status\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":63,"tokensAfter":63},{"name":"mandala.triage","fixed":{"name":"mandala_triage","description":"Non-autoregressive System 1 JEV/Layla triage gate (<30 ns) to classify tasks and predict marginal utility and confinement tier.","inputSchema":{"type":"object","properties":{"cost":{"type":"number","description":"Compute / token cost [0.0, 1.0]"},"risk":{"type":"number","description":"Risk factor [0.0, 1.0]"},"inquiry":{"type":"string","description":"Task or inquiry description to triage"},"utility":{"type":"number","description":"Expected marginal utility threshold (default: 0.8)"},"variance":{"type":"number","description":"Epistemic variance [0.0, 1.0]"}},"additionalProperties":false},"title":"Mandala JEV Triage Gate"},"changes":[{"kind":"name","detail":"Renamed \"mandala.triage\" → \"mandala_triage\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":177,"tokensAfter":177},{"name":"memory.aggregate","fixed":{"name":"memory_aggregate","description":"Aggregate over the matched record set: numeric fields (importance, created_at, epoch) support count/sum/avg/min/max; categorical fields (source, domain, class, status, galaxy) support count only. Unsupported field/op is refused.","inputSchema":{"type":"object","properties":{"op":{"enum":["count","sum","avg","min","max"],"type":"string","description":"Aggregation operator"},"field":{"type":"string","description":"Numeric: importance | created_at | epoch. Categorical (count only): source | domain | class | status | galaxy"},"limit":{"type":"integer","minimum":1,"description":"Maximum candidates considered (default 50; must be >= 1)"},"query":{"type":"string","description":"Full-text query selecting the memories to aggregate over"},"metric":{"enum":["count","session_count","session_span"],"type":"string","description":"Alternative metric over matched records: count | session_count | session_span"}},"additionalProperties":false},"title":"Aggregate Memories"},"changes":[{"kind":"name","detail":"Renamed \"memory.aggregate\" → \"memory_aggregate\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":273,"tokensAfter":273},{"name":"memory.associations","fixed":{"name":"memory_associations","description":"Traverse associative graph neighbours of a memory over hub-penalized multi-hop spreading activation.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"description":"Source memory UUID or numeric record_id","type":"string"},"hops":{"type":"integer","maximum":3,"minimum":1,"description":"Spreading activation depth in hops (1 to 3, default: 1)"},"decay":{"type":"number","maximum":1,"minimum":0.01,"description":"Per-hop spreading activation decay factor (default: 0.75)"},"limit":{"type":"integer","description":"Maximum neighbours to return (default: 10)"},"direction":{"type":"string","description":"Direction: from | to | both (default: both)"}},"additionalProperties":false},"title":"Associative Graph Neighbours"},"changes":[{"kind":"name","detail":"Renamed \"memory.associations\" → \"memory_associations\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: id. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":203,"tokensAfter":207},{"name":"memory.batch_read","fixed":{"name":"memory_batch_read","description":"Read multiple memories by their UUID or numeric record IDs in a single call.","inputSchema":{"type":"object","required":["ids"],"properties":{"ids":{"type":"array","description":"List of memory IDs (UUIDs or integers) to read"},"galaxy":{"type":"string","description":"Galaxy (default: codex)"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Batch Read Memories"},"changes":[{"kind":"name","detail":"Renamed \"memory.batch_read\" → \"memory_batch_read\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":103,"tokensAfter":103},{"name":"memory.count","fixed":{"name":"memory_count","description":"Count memories matching optional filters without returning full payload content.","inputSchema":{"type":"object","properties":{"galaxy":{"type":"string","description":"Galaxy to count, or 'all' (default)"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Count Memories"},"changes":[{"kind":"name","detail":"Renamed \"memory.count\" → \"memory_count\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":77,"tokensAfter":77},{"name":"memory.create","fixed":{"name":"memory_create","description":"Store a new memory in the holographic substrate with bijective UUID, 6D projection, and galaxy routing. (READ-ONLY: mutations refused)","inputSchema":{"type":"object","required":["content"],"properties":{"tags":{"type":"array","items":{"type":"string"},"description":"Optional categorization tags"},"title":{"type":"string","description":"Optional human-readable title (envelope v2)"},"topic":{"type":"string","description":"Optional topic or domain label"},"galaxy":{"type":"string","description":"Target memory galaxy: codex, active, audit, sessions (default: codex)"},"source":{"type":"string","description":"Epistemic attribution (default: 'agent:mcp')"},"content":{"type":"string","description":"Memory text content to record"},"event_time":{"type":"string","description":"Optional event time: when the recorded event actually happened, as RFC 3339"},"importance":{"type":"number","description":"Subjective salience/importance score (0.0 to 1.0)"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Store Memory"},"changes":[{"kind":"name","detail":"Renamed \"memory.create\" → \"memory_create\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":285,"tokensAfter":285},{"name":"memory.filter","fixed":{"name":"memory_filter","description":"Filter memories by metadata (tags, minimum importance, recency).","inputSchema":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"string"},"description":"Required tags"},"limit":{"type":"integer","description":"Maximum results"},"query":{"type":"string","description":"Filter: every whitespace-separated term must appear"},"galaxy":{"type":"string","description":"Galaxy to filter (default codex)"},"offset":{"type":"integer","description":"Skip this many matching entries before returning (default 0)"},"exclude_tags":{"type":"array","items":{"type":"string"},"description":"Filter: drop memories carrying any of these tags"},"created_after":{"type":"string","description":"Filter: only memories created at or after this RFC 3339 timestamp"},"created_before":{"type":"string","description":"Filter: only memories created at or before this RFC 3339 timestamp"},"max_importance":{"type":"number","description":"Filter: maximum importance (0-1)"},"min_importance":{"type":"number","description":"Minimum importance [0.0, 1.0]"}},"additionalProperties":false},"title":"Filter Memories"},"changes":[{"kind":"name","detail":"Renamed \"memory.filter\" → \"memory_filter\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":311,"tokensAfter":311},{"name":"memory.hybrid_recall","fixed":{"name":"memory_hybrid_recall","description":"Compatibility alias of memory.search with BM25 + dense vector fusion.","inputSchema":{"type":"object","required":["query"],"properties":{"limit":{"type":"integer","description":"Maximum results (default: 10)"},"query":{"type":"string","description":"Search query terms"},"since":{"type":"string","description":"Inclusive lower time bound: RFC3339 or epoch seconds"},"until":{"type":"string","description":"Inclusive upper time bound: RFC3339 or epoch seconds"},"galaxy":{"type":"string","description":"Galaxy filter (default: all)"},"min_score":{"type":"number","description":"Absolute BM25 score floor"},"min_trust":{"type":"number","description":"Minimum source_trust (0-1)"},"time_basis":{"type":"string","description":"Time basis for since/until: 'recorded' or 'event'"},"include_cold":{"type":"boolean","description":"Opt-in unranked cold recovery"},"min_importance":{"type":"number","description":"Minimum memory importance (0-1)"},"cold_scan_limit":{"type":"integer","description":"Maximum cold records to scan when include_cold is set (default 2048)"},"min_score_ratio":{"type":"number","description":"Relative floor: reject hits below this fraction of the top score"}},"additionalProperties":false},"title":"Hybrid Recall"},"changes":[{"kind":"name","detail":"Renamed \"memory.hybrid_recall\" → \"memory_hybrid_recall\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":349,"tokensAfter":349},{"name":"memory.ingest","fixed":{"name":"memory_ingest","description":"Ingest inline items (items / items_jsonl / text) or a JSONL/text file (source) via the batch-create path; returns real counts and refuses malformed input. (READ-ONLY: mutations refused)","inputSchema":{"type":"object","properties":{"text":{"type":"string","description":"Single plain-text memory to ingest"},"items":{"type":"array","description":"Array of items: strings, or objects {content, source?, kind?, tags?, importance?}"},"limit":{"type":"integer","description":"Maximum items to ingest"},"galaxy":{"type":"string","description":"Galaxy for items without an explicit source (default: codex)"},"redact":{"type":"boolean","default":true,"description":"Scrub credential-shaped tokens before storage (default true)."},"source":{"type":"string","description":"Optional path to a JSONL or text file (same line rules as items_jsonl)"},"dry_run":{"type":"boolean","description":"Report without writing (default: true)"},"items_jsonl":{"type":"string","description":"Newline-delimited JSONL items, or plain non-empty text lines"}},"additionalProperties":false},"title":"Ingest Memories"},"changes":[{"kind":"name","detail":"Renamed \"memory.ingest\" → \"memory_ingest\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":306,"tokensAfter":306},{"name":"memory.list","fixed":{"name":"memory_list","description":"List memories with pagination (limit, offset) and galaxy filtering.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","description":"Maximum number of memories to return (default: 20)"},"galaxy":{"type":"string","description":"Galaxy to list, or omit for all galaxies"},"offset":{"type":"integer","description":"Pagination offset (default: 0)"},"exclude_tags":{"type":"array","items":{"type":"string"},"description":"Drop memories carrying any of these tags"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List Memories"},"changes":[{"kind":"name","detail":"Renamed \"memory.list\" → \"memory_list\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":153,"tokensAfter":153},{"name":"memory.pin","fixed":{"name":"memory_pin","description":"Durably pin a critical memory against decay, sweep compaction, and forgetting, or release it with pinned=false. (READ-ONLY: mutations refused)","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"description":"Memory UUID or numeric record ID to pin","type":"string"},"galaxy":{"type":"string","description":"Optional galaxy this record must belong to (mismatch is refused)"},"pinned":{"type":"boolean","description":"true (default) = protect; false = release"}},"additionalProperties":false},"title":"Pin Memory"},"changes":[{"kind":"name","detail":"Renamed \"memory.pin\" → \"memory_pin\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: id. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":148,"tokensAfter":152},{"name":"memory.query","fixed":{"name":"memory_query","description":"Structured query over memories with filters, ordering, and field projections.","inputSchema":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"string"},"description":"Filter: memories with all of these tags"},"limit":{"type":"integer","description":"Maximum results (default: 10)"},"query":{"type":"string","description":"Text query string"},"galaxy":{"type":"string","description":"Galaxy to query (default codex)"},"created_after":{"type":"string","description":"Filter: only memories created at or after this RFC 3339 timestamp"},"created_before":{"type":"string","description":"Filter: only memories created at or before this RFC 3339 timestamp"},"max_importance":{"type":"number","description":"Filter: maximum importance (0-1)"},"min_importance":{"type":"number","description":"Filter: minimum importance (0-1)"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Query Memories"},"changes":[{"kind":"name","detail":"Renamed \"memory.query\" → \"memory_query\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":253,"tokensAfter":253},{"name":"memory.read","fixed":{"name":"memory_read","description":"Retrieve a specific memory by its numeric record ID or UUID string.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"description":"Unique identifier of the memory (UUID or numeric record_id)","type":"string"},"galaxy":{"type":"string","description":"Optional galaxy filter"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Read Memory"},"changes":[{"kind":"name","detail":"Renamed \"memory.read\" → \"memory_read\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: id. Change to number/boolean/array where that's what you accept.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":97,"tokensAfter":102},{"name":"memory.revisions","fixed":{"name":"memory_revisions","description":"List the durable revision chain of a memory, or verify it by recomputing content hashes and chain links.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"description":"Memory UUID or record_id to inspect","type":"string"},"action":{"enum":["list","verify"],"type":"string","description":"Action: 'list' (default) or 'verify'"}},"additionalProperties":false},"title":"Memory Revisions"},"changes":[{"kind":"name","detail":"Renamed \"memory.revisions\" → \"memory_revisions\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: id. Change to number/boolean/array where that's what you accept.","verify":true}],"tokensBefore":113,"tokensAfter":118},{"name":"memory.search","fixed":{"name":"memory_search","description":"Search memories: hybrid BM25 + vector fusion with deterministic sub-millisecond retrieval.","inputSchema":{"type":"object","required":["query"],"properties":{"limit":{"type":"integer","description":"Maximum number of memories to return (default: 10)"},"query":{"type":"string","description":"Search query or natural language question"},"since":{"type":"string","description":"Inclusive lower time bound: RFC3339 or epoch seconds"},"until":{"type":"string","description":"Inclusive upper time bound: RFC3339 or epoch seconds"},"galaxy":{"type":"string","description":"Galaxy to search in, or 'all' for cross-galaxy discovery"},"min_score":{"type":"number","description":"Absolute BM25 score floor"},"min_trust":{"type":"number","description":"Minimum source_trust (0-1)"},"historical":{"type":"boolean","description":"Include superseded or archived records (default: false)"},"time_basis":{"type":"string","description":"Time basis for since/until: 'recorded' or 'event'"},"include_cold":{"type":"boolean","description":"Opt-in unranked cold recovery"},"min_importance":{"type":"number","description":"Minimum memory importance (0-1)"},"cold_scan_limit":{"type":"integer","description":"Maximum cold records to scan when include_cold is set (default 2048)"},"min_score_ratio":{"type":"number","description":"Relative floor: reject hits below this fraction of the top score"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Search Memories"},"changes":[{"kind":"name","detail":"Renamed \"memory.search\" → \"memory_search\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":402,"tokensAfter":402},{"name":"memory.search_batch","fixed":{"name":"memory_search_batch","description":"Execute multiple memory search queries concurrently with sub-millisecond retrieval.","inputSchema":{"type":"object","required":["queries"],"properties":{"limit":{"type":"integer","description":"Maximum results per query (default: 5)"},"queries":{"type":"array","items":{"type":"string"},"description":"Array of query strings"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Batch Search Memories"},"changes":[{"kind":"name","detail":"Renamed \"memory.search_batch\" → \"memory_search_batch\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":112,"tokensAfter":112},{"name":"memory.stats","fixed":{"name":"memory_stats","description":"Substrate statistics: epoch, total records, relations, postings, and crash-consistency invariants.","inputSchema":{"type":"object","properties":{"galaxy":{"type":"string","description":"Galaxy to summarize (optional; default codex)"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Memory Substrate Statistics"},"changes":[{"kind":"name","detail":"Renamed \"memory.stats\" → \"memory_stats\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":85,"tokensAfter":85},{"name":"memory.tags","fixed":{"name":"memory_tags","description":"List the tag vocabulary with usage counts.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","description":"Maximum tags to return (default: 50)"},"galaxy":{"type":"string","description":"Galaxy whose tags to list (optional; default codex)"}},"additionalProperties":false},"title":"Memory Tags Vocabulary"},"changes":[{"kind":"name","detail":"Renamed \"memory.tags\" → \"memory_tags\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":93,"tokensAfter":93},{"name":"memory.update","fixed":{"name":"memory_update","description":"Update an existing memory by writing a superseding record (or consolidating into an existing record) and a durable revision entry (prior/new content hashes, timestamp, reason). (READ-ONLY: mutations refused)","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"description":"Memory UUID or numeric record_id to update","type":"string"},"reason":{"type":"string","description":"Optional reason recorded in the revision entry"},"content":{"type":"string","description":"New content for the superseding record (or existing target content when consolidating)"},"superseded_by_id":{"description":"Optional existing memory UUID or numeric record_id that supersedes this record","type":"string"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true},"title":"Update Memory"},"changes":[{"kind":"name","detail":"Renamed \"memory.update\" → \"memory_update\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"schema","detail":"Added \"type\":\"string\" to untyped parameters: id, superseded_by_id. Change to number/boolean/array where that's what you accept.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":207,"tokensAfter":216},{"name":"receipts.emit","fixed":{"name":"receipts_emit","description":"Emit a signed continuity receipt: kind 'session' signs a digest of the last `limit` session-log turns; kind 'state_transition' signs a store-state snapshot chained to the prior emitted receipt. 'task' receipts are not supported.","inputSchema":{"type":"object","required":["kind"],"properties":{"out":{"type":"string","description":"Optional file path to additionally write the receipt JSON"},"kind":{"enum":["session","state_transition"],"type":"string","description":"Receipt kind"},"limit":{"type":"integer","minimum":1,"description":"Maximum turns covered (session kind; default 200)"},"session_id":{"type":"string","description":"Optional session filter for kind 'session'"}},"additionalProperties":false},"title":"Emit Continuity Receipt"},"changes":[{"kind":"name","detail":"Renamed \"receipts.emit\" → \"receipts_emit\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":209,"tokensAfter":209},{"name":"receipts.verify","fixed":{"name":"receipts_verify","description":"Verify one supported WhiteMagic receipt profile (including emitted session/state_transition continuity receipts) against the existing local gate key. This is not a general Continuity Receipt bundle verifier.","inputSchema":{"type":"object","required":["bundle"],"properties":{"bundle":{"type":"object","description":"One supported signed WhiteMagic profile receipt object"}},"additionalProperties":false},"title":"Verify WhiteMagic Profile Receipt"},"changes":[{"kind":"name","detail":"Renamed \"receipts.verify\" → \"receipts_verify\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":124,"tokensAfter":124},{"name":"service.request_eval_key","fixed":{"name":"service_request_eval_key","description":"Instantly mint a free evaluation API key in-band — no HTTP detour required. The key grants 50 calls/day per lane plus limited write-beta access and is issued anonymously (one per client IP per UTC day, global daily issuance cap). Pass the returned token as 'Authorization: Bearer <key>' on subsequent calls.","inputSchema":{"type":"object","required":[],"properties":{"ref":{"type":"string","description":"Optional referral/channel tag for issuance attribution (max 64 chars, sanitized)."},"agent_id":{"type":"string","description":"Optional agent identifier for issuance attribution (max 64 chars, sanitized)."}},"additionalProperties":false},"annotations":{"title":"Request Evaluation Key","readOnlyHint":false,"openWorldHint":false,"idempotentHint":false,"destructiveHint":false},"title":"Request Evaluation Key"},"changes":[{"kind":"name","detail":"Renamed \"service.request_eval_key\" → \"service_request_eval_key\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":193,"tokensAfter":193},{"name":"session.checkpoint","fixed":{"name":"session_checkpoint","description":"Save a structured checkpoint (summary, git state, next queue, open flags, track/lease metadata) for lossless handoffs. (READ-ONLY: mutations refused)","inputSchema":{"type":"object","properties":{"track":{"type":"string","description":"Optional track slug persisted with the checkpoint"},"branch":{"type":"string","description":"Branch name persisted with the checkpoint"},"commit":{"type":"string","description":"Commit hash persisted with the checkpoint"},"summary":{"type":"string","description":"High-density summary of decisions, state, and findings"},"lease_id":{"type":"string","description":"Claimed scope lease_id that remains held at this handoff"},"next_queue":{"type":"array","items":{"type":"string"},"description":"Ordered next steps"},"open_flags":{"type":"array","items":{"type":"string"},"description":"Open flags, blockers, or warnings"},"session_id":{"type":"string","description":"Target session ID"},"crystallize":{"type":"boolean","description":"Optional: crystallize converged session decisions into a linked codex memory record (default false)"},"tests_green":{"type":"boolean","description":"Whether the test suite was green at checkpoint time."}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"Session Checkpoint"},"changes":[{"kind":"name","detail":"Renamed \"session.checkpoint\" → \"session_checkpoint\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":347,"tokensAfter":347},{"name":"session.continuity","fixed":{"name":"session_continuity","description":"Recall where the previous session left off: recent turns, salient anchors, unresolved DiAML arcs, related track crystals, checkpoints, and open queues.","inputSchema":{"type":"object","properties":{"n":{"type":"integer","description":"Number of recent turns to recall (default: 5)"},"since":{"type":"string","description":"Time-range floor: epoch seconds, RFC 3339, or YYYY-MM-DD"},"track":{"type":"string","description":"Optional track slug to surface prior crystallized codex memories and select the latest prior session on this track"},"until":{"type":"string","description":"Time-range ceiling: epoch seconds, RFC 3339, or YYYY-MM-DD"},"session_id":{"type":"string","description":"Target session (default: most recent)"},"token_budget":{"type":"integer","description":"Optional cap for compact agent_context.text: UTF-8 byte cap is token_budget × 4; estimated_tokens is a byte-based heuristic, not tokenizer-guaranteed. Zero produces empty context."},"max_content_bytes":{"type":"integer","description":"Per-turn content cap in bytes (default 8192)"},"current_session_id":{"type":"string","description":"Session to exclude (optional)"},"max_response_bytes":{"type":"integer","description":"Turns budget in bytes (default 49152)"},"include_briefing_text":{"type":"boolean","description":"Include the ready-to-inject briefing.text block"}},"additionalProperties":false},"title":"Session Continuity"},"changes":[{"kind":"name","detail":"Renamed \"session.continuity\" → \"session_continuity\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":394,"tokensAfter":394},{"name":"session.digest","fixed":{"name":"session_digest","description":"Compose a digest from typed session-log turns and the latest checkpoint (markdown text plus JSON, with optional codex crystallization).","inputSchema":{"type":"object","properties":{"n":{"type":"integer","minimum":1,"description":"Maximum turns to include (default 20)"},"session_id":{"type":"string","description":"Target session (default: most recent lane)"},"crystallize":{"type":"boolean","description":"Optional: crystallize converged session decisions into a linked codex memory record (default false)"}},"additionalProperties":false},"title":"Session Digest"},"changes":[{"kind":"name","detail":"Renamed \"session.digest\" → \"session_digest\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":162,"tokensAfter":162},{"name":"session.list","fixed":{"name":"session_list","description":"List session lanes with turn count, last timestamp, latest preview, start-marker flag, and checkpoint presence.","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","minimum":1,"description":"Maximum lanes to return (default 50)"},"session_id":{"type":"string","description":"Filter to one session lane"}},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List Sessions"},"changes":[{"kind":"name","detail":"Renamed \"session.list\" → \"session_list\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":110,"tokensAfter":110},{"name":"session.recall","fixed":{"name":"session_recall","description":"Recall specific interactions and turns within a targeted session (optional content query and limit).","inputSchema":{"type":"object","properties":{"limit":{"type":"integer","description":"Maximum turns to return (default 50)"},"query":{"type":"string","description":"Case-insensitive content substring filter"},"session_id":{"type":"string","description":"Session ID"}},"additionalProperties":false},"title":"Recall Session Content"},"changes":[{"kind":"name","detail":"Renamed \"session.recall\" → \"session_recall\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":123,"tokensAfter":123},{"name":"session.record","fixed":{"name":"session_record","description":"Record a session turn (decision, breakthrough, summary) for compounding continuity. (READ-ONLY: mutations refused)","inputSchema":{"type":"object","required":["content"],"properties":{"role":{"enum":["user","ai"],"type":"string","description":"Who produced the turn"},"track":{"type":"string","description":"Optional track slug"},"content":{"type":"string","description":"Turn content to persist"},"resolves":{"type":"string","description":"DiAML turn id of an earlier question, proposal, or hypothesis this turn resolves"},"qualifier":{"enum":["verified","hypothesis","speculative","conditional"],"type":"string","description":"Epistemic qualifier for this turn"},"turn_type":{"type":"string","description":"Turn type (e.g. 'decision', 'milestone', 'observation', 'question', 'proposal', 'hypothesis')"},"importance":{"type":"number","description":"0.0 to 1.0 salience"},"session_id":{"type":"string","description":"Target session ID"},"supersedes":{"type":"string","description":"Memory id of an earlier turn this record replaces"}},"additionalProperties":false},"title":"Record Session Turn"},"changes":[{"kind":"name","detail":"Renamed \"session.record\" → \"session_record\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":307,"tokensAfter":307},{"name":"session.replay","fixed":{"name":"session_replay","description":"Replay the chronological trajectory of a session: 'full' returns all turns, 'selective' filters by min_importance/turn_types, 'progressive' keeps the most recent turns within token_budget, and 'hybrid' combines earlier high-salience anchor turns (up to 30% of token_budget) with the most recent turns.","inputSchema":{"type":"object","properties":{"n":{"type":"integer","minimum":1,"description":"Maximum turns (default 50)"},"mode":{"enum":["full","selective","progressive","hybrid"],"type":"string","description":"Replay mode (default full)"},"since":{"type":"string","description":"Time-range floor: epoch seconds, RFC 3339, or YYYY-MM-DD"},"track":{"type":"string","description":"Optional track slug to select the most recent prior session on this track"},"until":{"type":"string","description":"Time-range ceiling: epoch seconds, RFC 3339, or YYYY-MM-DD"},"session_id":{"type":"string","description":"Session ID"},"turn_types":{"type":"array","items":{"type":"string"},"description":"Selective/hybrid mode: turn types to keep"},"token_budget":{"type":"integer","description":"Progressive/hybrid mode token budget (default 2000)"},"min_importance":{"type":"number","description":"Selective/hybrid mode floor (default 0.7)"},"current_session_id":{"type":"string","description":"Optional active session ID to exclude when selecting a prior session automatically"},"include_superseded":{"type":"boolean","description":"Also return turns replaced via supersedes (default false)."}},"additionalProperties":false},"title":"Replay Session"},"changes":[{"kind":"name","detail":"Renamed \"session.replay\" → \"session_replay\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":432,"tokensAfter":432},{"name":"session.start","fixed":{"name":"session_start","description":"Start or resume an agent session for persistent continuity across tool invocations.","inputSchema":{"type":"object","properties":{"user":{"type":"string","description":"User identifier (default: 'default')"},"title":{"type":"string","description":"Session title"}},"additionalProperties":false},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false},"title":"Start Session"},"changes":[{"kind":"name","detail":"Renamed \"session.start\" → \"session_start\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":93,"tokensAfter":93},{"name":"sutra.canon","fixed":{"name":"sutra_canon","description":"Inspect the canonical 12-glyph logoglyphic Sutra canon, alchemical dual-mappings, Taoist hand seals (印诀), and bound Action Skeletons.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"title":"Sutra Canon"},"changes":[{"kind":"name","detail":"Renamed \"sutra.canon\" → \"sutra_canon\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":70,"tokensAfter":70},{"name":"sutra.cast","fixed":{"name":"sutra_cast","description":"Evaluate and dispatch a zero-allocation Taoist Hand Seal / Sutra Codon (e.g. '觀 證 行', 'Kek-01-Seal'). Validates preconditions, computes Kekkai sandbox boundaries, and executes bound Action Skeleton cycles or transmits swarm mudra packet to P2P peer. (READ-ONLY: mutations refused)","inputSchema":{"type":"object","required":["codon"],"properties":{"peer":{"type":"string","description":"Target peer address (e.g. '152.53.195.47:7369') for remote Swarm Mudra Handoff via Wire Protocol 7369"},"codon":{"type":"string","description":"Logoglyphic Sutra codon or Taoist hand seal sequence (e.g. '觀 證 行', 'Kek-01-Seal', '根 界 息')"},"track":{"type":"string","description":"Optional track slug for the recorded Sutra turn"},"strict":{"type":"boolean","description":"Fails closed if preconditions (read-only, landlock, mesh net) are unsatisfied"},"dry_run":{"type":"boolean","description":"Alias for !execute; if true, only validates preconditions and returns deterministic plan"},"execute":{"type":"boolean","description":"Whether to execute the bound Action Skeleton against the substrate (default: false / dry-run)"},"resolves":{"type":"string","description":"Optional DiAML turn ID resolved by this Sutra execution (defaults to latest open arc when omitted)"},"session_id":{"type":"string","description":"Optional session ID to record the executed Sutra DiAML turn into"}},"additionalProperties":false},"title":"Dispatch Sutra / Taoist Mudra"},"changes":[{"kind":"name","detail":"Renamed \"sutra.cast\" → \"sutra_cast\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":399,"tokensAfter":399},{"name":"sutra.compile","fixed":{"name":"sutra_compile","description":"Compile high-level natural language intent into an optimal compound Sutra codon and Taoist Mudra formula using static Model2Vec embeddings or lexical centroids.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"High-level natural language intent or task description to compile into a Sutra codon"}},"additionalProperties":false},"title":"Compile Intent to Sutra"},"changes":[{"kind":"name","detail":"Renamed \"sutra.compile\" → \"sutra_compile\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":119,"tokensAfter":119},{"name":"sutra.hexagram","fixed":{"name":"sutra_hexagram","description":"Inspect or mutate one of the 64 King Wen I Ching Hexagram Macro-Actions. Returns King Wen number, binary symbol, trigrams, Wu Xing element, default codon, nuclear inner, complement (反), reverse (覆), and dynamic line mutation transformations.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","description":"Hexagram name, pinyin, King Wen number (1-64), or Unicode symbol (e.g. '既济', 'Qian', '1', '䷾')"},"mutate_line":{"type":"integer","maximum":6,"minimum":1,"description":"Optional line number (1 to 6, bottom to top) to mutate (flip yin/yang) and compute resulting hexagram and codon"}},"additionalProperties":false},"title":"I Ching Hexagram Macro-Action"},"changes":[{"kind":"name","detail":"Renamed \"sutra.hexagram\" → \"sutra_hexagram\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":195,"tokensAfter":195},{"name":"sutra.list","fixed":{"name":"sutra_list","description":"List all recognized canonical compound Taoist Mudras (印诀式), their formulaic compositions, preconditions, and primary execution skeletons.","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"annotations":{"readOnlyHint":true},"title":"List Canonical Mudras"},"changes":[{"kind":"name","detail":"Renamed \"sutra.list\" → \"sutra_list\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true},{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":70,"tokensAfter":70},{"name":"sutra.route","fixed":{"name":"sutra_route","description":"Route an inquiry or task intent through the Catuṣkoṭi K3 dialectical cognitive router. Employs Kleene 3-valued logic to resolve dialectical tensions (competing action vectors like execute vs dry-run) and matches 64-hexagram macro-actions, returning System 0/1/2 triage tier, resting potential, plasticity, and bound Action Skeleton.","inputSchema":{"type":"object","required":["inquiry"],"properties":{"inquiry":{"type":"string","description":"Task description, inquiry, or hexagram name to route"},"utility":{"type":"number","maximum":1,"minimum":0,"description":"Expected marginal utility threshold (default: 0.8)"}},"additionalProperties":false},"title":"Catuṣkoṭi Dialectical Cognitive Router"},"changes":[{"kind":"name","detail":"Renamed \"sutra.route\" → \"sutra_route\" (letters, digits, _ and - only; max 64). Keep the old name as an alias for a release if clients already call it.","verify":true}],"tokensBefore":191,"tokensAfter":191}],"toolsChanged":48,"tokensSaved":0,"todo":[{"tool":"decision_outcome","params":["tenant_id","session_id"]}],"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."}