<!-- GENERATED — do not edit by hand. Source: noezis mcp schema / noezis inspect. Regenerate: make docs-reference. -->

Reference — MCP verbs

61 verbs exposed over JSON-RPC 2.0 (stdio). Each verb is callable by any MCP-capable agent. Grouped by capability tier.

Maturity note. The entity-relations verbs (noezis_relations, noezis_entity_neighbors, noezis_path_entities, noezis_chains, noezis_triplets, noezis_explain_chain) rely on an experimental named-entity layer that is de-scoped from retrieval: their reliability depends on entity-extraction quality on your corpus. Document retrieval (noezis_search, the tree, decisions) does not depend on this layer.

Read — inspection (no mutation)

noezis_audit_contradictions

Full graph scan to detect the contradictions between passages and active Decisions. Costly on a large corpus — reserve for periodic audits or after ingesting a whole corpus. Returns the tensions grouped by severity (critical/high/low).

When to use — To audit the contradictions in the whole graph. After ingesting a large corpus to see the detected inconsistencies.

Parameter Type Required Description
include_resolved boolean \ null Include the already-resolved tensions. Default: false.
max_results integer \ null Maximum number of tensions returned. Default: 50.
min_severity number \ null Minimum severity (0.0 = everything). Default: 0.0.

noezis_briefing

[DEPRECATED — use noeziscontext] State-of-the-world summary: recent ADRs, active tensions, hot topics, codifications, paradigms. Kept as a transitional alias; will be removed at V-next. The state-of-world is now a section of noeziscontext (pushed at the start of the turn).

When to use — Do not use anymore for new code — see noezis_context. Alias maintained for compatibility of the deployed hooks/skills.

Parameter Type Required Description
actor string \ null Filtering by actor — if set, only the elements whose actor matches are surfaced (Decisions, OpEvents, Codifications). Format Principal (user:alice, agent:claude-code/sess-A, …).
include_resolved_tensions boolean \ null If true, also surfaces the resolved tensions. Default: false (cf. T48-S08).
max_items_per_section integer \ null Upper bound per section. Server default: 10. Max: 100 (silent clamp on the server side — value observable via BriefingResponse.since_used).
since string \ null Lower temporal window (inclusive). Server default: now() - 7d.

noezis_capabilities

Tool discovery by INTENT (ADR-0005): returns the catalog verbs relevant to a natural-language intent, ranked by overlap (name + description + usewhen), with their inputschema for direct call. Dynamic entry point to the long tail of tools (analogous to ToolSearch) — additive, does not replace tools/list. Pure read.

When to use — When you don't know which Noezis tool covers your need, or to find an uncommon advanced verb without browsing the whole catalog.

Parameter Type Required Description
intent string yes Natural-language intent (e.g. "audit the contradictions", "explore the entity graph"). Tokenized for the matching.
max_results integer \ null Max number of tools returned. Default 8, cap 30.

noezis_compare_registers

Compares two knowledge registers and detects the divergences: same concept, contradictory values between the two registers. Pure read — does not modify the graph. Emits a registers_compared OpEvent for the audit. Typically used to verify that the ADRs and the documentation stay consistent.

When to use — To audit the consistency between two registers (e.g.: architectural decisions vs documentation) before a merge or in a periodic audit.

Parameter Type Required Description
first_register string yes Name of the first register to compare (e.g.: "adr").
include_resolved boolean \ null Include the already-resolved divergences. Default: false.
max_results integer \ null Maximum number of divergences returned. Default: 100.
second_register string yes Name of the second register to compare (e.g.: "doc"). Must be different from the first.
severity_threshold number \ null Only return the divergences with a severity score greater than or equal to this threshold. Value between 0.0 (include everything) and 1.0 (only the direct conflicts). Default: 0.0.

noezis_context

SINGLE entry point for retrieving the project context. In one bounded call: store health, state-of-world (recent decisions/tensions + last handoff), search results on the query, and agentic skills to apply. The context is normally PUSHED automatically at the start of the turn (UserPromptSubmit hook) — only call this tool yourself if that context was not injected (fallback) or to refresh on a new query. Successor of inquire/briefing.

When to use — As a fallback if the context block was not injected at the start of the turn, or to target a new query. Replaces noezisinquire + noezisbriefing.

Parameter Type Required Description
ablation_exclude string \ null Ablation harness (brick D) — component(s) to drop from this single response, comma-separated (decisions,search,skills,handoff, or the sentinel off for the whole envelope). Lets the eval harness sweep every arm against one live daemon. None/absent in normal use. OR-merged with the daemon's NOEZIS_FRONTLOAD_EXCLUDE env (neither shadows the other).
max_tokens integer \ null Token ceiling of the envelope. None → server default (~1500).
query string \ null Prompt / topic of the turn. Absent or empty → no search (pure cold-start, only health + state-of-world). Present → search + skills.
since string \ null Lower bound of the state-of-world window (RFC3339). None → full (cold-start). Provided → delta since this date. It's the caller (hook/CLI) that holds the session marker and passes the last call.

noezis_doc_audit

Audits a documentary scope on TWO axes: (1) the tensions ALREADY persisted in the graph (Pass3 contradictions, stale sections) filtered by path/topic; (2) de novo detection of doc↔code divergences (code_divergences field) — deterministic scan (without LLM) that confronts the symbols claimed by the doctrine (algos/libs/identifiers) with the real code and flags when the doc asserts X "bare" while the code uses a contradictor Y. Pure read — modifies neither the graph nor the files.

When to use — Before modifying doc, or in an anti-drift audit: see the recorded tensions AND the doc↔code gaps detected on the fly (direct filesystem scan, without prior ingestion).

Parameter Type Required Description
max_results integer \ null Maximum number of results. Default: 30.
min_severity number \ null Minimum severity (0.0–1.0). Default: 0.3.
scope string yes Audit scope: file path, directory, or free topic. Use "*" for the whole documentary graph.
since string \ null Only return the tensions after this date (ISO 8601).

noezis_doc_briefing

Briefing focused on the documentation: recent modifications, active tensions, potentially stale sections. Extension of noezis_briefing for the doc-maintenance agents. Pure read.

When to use — At the start of a doc-maintenance session — to quickly see what moved, what is in tension, and what could be stale.

Parameter Type Required Description
actor string \ null Filter by actor.
include_stale boolean \ null If true, include the docs not updated for > 30 days.
scope string \ null Optional scope: path, directory, or topic.
since string \ null Temporal window (default: 7 days). ISO 8601.

noezis_doctor

Health report of the Noezis server: version, embedder mode, node counters (ready/indexing/failed), latest ingestion failures. Call at the start of a session to diagnose the store's state.

When to use — To diagnose the server's state, detect nodes stuck in INDEXING, or see the latest documents rejected by validation pipeline.

No parameters.

noezis_entities

Searches named entities in the graph by text/concept. Returns the entities whose name (raw or canonical) or kind contains the query. Sorted by decreasing confidence.

When to use — To find an entity (person, org, tech, product…) in the graph. Returns the EntityNodes with LID, canonical_name, kind, confidence.

Parameter Type Required Description
max_results integer \ null Max number of results (default: 20).
min_confidence number \ null Minimum confidence (default: 0.5).
query string yes Text query (name, alias, concept).

noezis_explain_chain

Explains a chain of relations between entities with active tensions, aggregated confidence and sources: returns the path + the tensions on the chain + the total weighted confidence. Note: relies on the experimental entity-relations layer (de-scoped from retrieval) — reliability depends on entity-extraction quality.

When to use — After noezispathentities to get the full explanation of a path: tensions, sources, confidence. Usage: multi-hop reasoning.

Parameter Type Required Description
from_lid string yes LID of the start entity.
include_tensions boolean Include the active tensions on the path. Default: true.
max_hops integer \ null Maximum number of hops (default: 4).
to_lid string yes LID of the end entity.

noezis_gaps_report

Report of what the graph CANNOT answer (KL-1): distinct no_match search queries (with count and last occurrence), orphan entities (mentioned in passages but participating in zero typed relation), and Q5 routing misses (native search without noezissearch). Optional filters: since (default now − 14 days), maxmisses, max_entities (default 20, cap 50). Pure read — pull-only, never pushed.

When to use — To decide what to document next: the questions the graph keeps failing to answer and the concepts mentioned everywhere but defined nowhere. The MISS side of the usage telemetry.

Parameter Type Required Description
max_entities integer \ null Max orphan entities returned. Default 20, cap 50.
max_misses integer \ null Max distinct miss queries returned. Default 20, cap 50.
since string \ null Inclusive lower bound on the telemetry events. Default: now − 14 days.

noezis_get_paradigms

Returns all the active paradigms for a (subject, predicate): each paradigm = an active Decision of a distinct actor. Lets you see which actors have different views on the same subject without it being a contradiction — it's paradigm coexistence (T75 V2.5).

When to use — To inspect the coexisting paradigms on a subject. E.g.: user:alice says auth=OAuth2, agent:claude says auth=JWT → two paradigms, no conflict.

Parameter Type Required Description
predicate string yes Predicate (e.g.: "uses").
subject string yes Subject of the decision (e.g.: "auth_backend").

noezis_graph_report

Structural report of the graph: over-connected topics, communities, entropy ratio, suggested entry points, plus an entity_health audit (duplicates, type conflicts, garbage — the entity-layer doctor). Mode scope: "recent" (+ since_hours) returns only the recent activity — ideal for cold start. Mode scope: "full" (default) — full report.

When to use — At the start of a session (scope: "recent", since_hours: 24) to see what changed, or once at startup (scope: "full") to map the whole graph.

Parameter Type Required Description
scope string \ null Report scope. "full" (default) — full graph report. "recent" — adds a recent_activity section with the OpEvents of the last since_hours hours (default 24h). Useful for a session's cold start: check what changed without re-reading the full report.
since_hours integer \ null Temporal window for the "recent" mode (hours, default 24). Ignored if scope != "recent".

noezis_inquire

[DEPRECATED — use noeziscontext] Consults the Noezis graph on a topic and returns the context (results, tensions, paradigms). Kept as a transitional alias; will be removed at V-next. Prefer noeziscontext (store health + state-of-world + search + skills in one bounded call).

When to use — Do not use anymore for new code — see noezis_context. Alias maintained for compatibility of the deployed hooks/configs.

Parameter Type Required Description
min_score number \ null Floor score for the results (default: 0.70).
scope array \ null Scope-restriction LIDs (optional) — searches only in these nodes and their descendants.
suggested_queries array \ null Queries suggested by the agent for this topic.
topic string yes Subject of the next answer — used to target the search.

noezis_inquire_skip

Explicitly declares that no graph knowledge is relevant for this answer turn. Audit-grade traceability. To use only for the out-of-graph-scope queries (e.g.: 'what time is it?', pure computation). Never use to avoid a search on a documented subject.

When to use — When the question has nothing to do with the indexed documents. Provide an explicit reason.

Parameter Type Required Description
reason string yes Explicit reason why the graph is not consulted.

noezis_list_tensions

Lists the graph's tensions with AND filters (since/until, register, status, minseverity). Severity derived from the kind (Direct=1.0, Structural=0.7, Inferential=0.4). Sorted severity DESC, tie-break edgeid lex DESC. Deterministic pagination via max_results (default 50, hard cap 200). Pure read.

When to use — To audit the active or resolved tensions of a register / a period, or sort by severity the conflicts to handle in priority.

Parameter Type Required Description
max_results integer \ null Maximum number of tensions returned. Server default: 50. Hard cap: 200 (silent clamp, consistent T47-B01). 0 → typed error invalid_max_results.
min_severity number \ null Filter by minimum severity, bounded [0, 1]. Severity derived from the kind (A1 proxy). Default: 0.0 (all severities). NaN / Inf / out of bounds → typed error invalid_severity.
register string \ null Filter by knowledge register (e.g.: "adr", "doc", "personal_schedule"). snake_case format. Unknown register → silent empty list.
since string \ null Inclusive lower bound on detected_at. Default: none.
status string \ null Filter by resolution state. Values: "open", "resolved", "all". Server default: "open" (active snapshot, not the history). Strict case, no CSV tolerance; value outside the enum → typed error invalid_status.
until string \ null Inclusive upper bound on detected_at. Default: none. since > until → typed error invalid_range.

noezis_list_watched

Lists the currently watched folders. Use to audit the watcher's state.

When to use — To audit the list of folders currently watched by the watcher.

No parameters.

noezis_node_summary

Returns a node's metadata from its identifier. By default, only the short summary is exposed (Document/passage); Decisions expose their full triple. Pass include_content: true to get the content — the FULL TEXT of the Document/passage, including when the source file is gone.

When to use — To read a node whose LID you have (from noezissearch or a navigation). Add includecontent: true for the full text.

Parameter Type Required Description
include_content boolean If true, adds the content field to the returned node — the full text (Document/passage/UserProfile). Indispensable to re-read an ingested document whose source file is gone. Default false to keep responses compact; the Decisions already expose their full triple without this flag.
lid string yes Unique node identifier (64 hex characters). Obtained via noezis_search, noezis_children, noezis_parent, or any other navigation tool that returns a lid field.

noezis_op

Inspects a single event of the op-mem journal (OpEvent) from its hex 64 LID. Returns the full event: action, actor, targetlid, detailed metadata (BTreeMap), timestamp, contenthash. Typed refusal if the LID points to another kind (not_an_op_event). Pure read, no generation.

When to use — When you have already seen an OpEvent LID in another response (summary, history) and you want the full detail of a specific event.

Parameter Type Required Description
lid string yes Hex 64-char LID of the OpEvent to inspect.

noezis_op_history

Paginated search in the op-mem journal (OpEvent). Optional AND filters: actor (exact Principal), action (open catalog), targetlid (hex 64), since/until (inclusive-inclusive). Sorted DESC by timestamp, tie-break hex LID DESC. Hard cap 200 events per call (silent clamp). The response exposes `totalmatched, truncated, maxresultsused` for the audit. Pure read.

When to use — To audit the action trace (ingest, decided, toolinvoked) of an agent, or detect MCP catalog usage patterns via `action = 'toolinvoked'`.

Parameter Type Required Description
action string \ null Exact filter on the OpAction string (open catalog, strict snakecase). E.g.: `toolinvoked, ingested, decided`.
actor string \ null Exact filter on Principal::as_str() (e.g.: user:alice, agent:claude-code/sess-A). Invalid value → typed error invalid_actor.
include_metadata boolean Include each event's full metadata map in the response (audit / failure-classification use cases — e.g. tool_invoked carries success, latency_ms, outcome_kind). Default false (light summaries). Avoids one noezis_op detail call per event.
max_results integer \ null Maximum number of events returned. Server default: 50. Hard cap: 200 (silent clamp). 0 → error invalid_max_results.
session_id string \ null Exact filter on the session_id injected into the metadata of the tool_invoked OpEvents (key "session_id"). Format: "mcp-<timestamp_µs>". Obtained via noezis_briefing or inspected in a previous OpEvent. Allows reconstructing the complete history of a session without parsing the transcript.
since string \ null Inclusive lower bound on timestamp. Default: none.
target_lid string \ null Exact filter on the target_lid (hex 64). Events with target_lid = None are excluded when this filter is set.
until string \ null Inclusive upper bound on timestamp. Default: none. since > until → error invalid_range.

noezis_pending_decisions

Returns the decisions awaiting validation: assertions blocked by conflict detection (kind: decision_blocked) and suggested non-asserted decisions (kind: decision_suggested). Lets the agent catch the weak signals detected but not committed in session. Pure read, sorted DESC by timestamp.

When to use — At the start or end of a session to check whether decisions were blocked or remain to be validated. Complement to noezis_briefing.

Parameter Type Required Description
actor string \ null Optional filter by actor.
max_results integer \ null Maximum number of results. Default: 50.

noezis_prefs_list

Lists the behavioural preferences stored for this workspace. Preferences are inferred from friction signals and govern how the agent should respond (tone, format, process). Filter by lifecycle: candidate | active | pinned | dormant.

When to use — To inspect what the workspace has learned about your working style, or before deciding whether to pin/drop a preference.

Parameter Type Required Description
lifecycle string \ null Filter by lifecycle: candidate, active, pinned, dormant. Omit for all lifecycles.

noezis_propose_decision

Dry-run of a Decision: simulates noezisassertdecision without committing. Returns the potential conflicts (conflict detection) and the coexisting paradigms BEFORE laying the decision. Use to check before asserting, especially if you are unsure whether a contradictory decision exists.

When to use — Before noezisassertdecision, to preview the conflicts. Returns would_conflict=true/false without mutating the graph.

Parameter Type Required Description
actor string yes Proposing actor.
predicate string yes Predicate.
rationale string yes Rationale (mandatory even in dry-run).
subject string yes Subject of the decision to propose.
value string yes Value.

noezis_read_sub_tree

Extraction of a 'semantic bubble' around a topic: searches the topic, then BFS-expands up to a token budget. Returns a complete focused context — ideal to quickly load the context on a concept before reasoning on it. By default each node only exposes its summary; pass includecontent: true for the FULL TEXT (re-read a document/handoff by topic without its LID) — then increase maxtokens, the content counts toward the budget.

When to use — To load a dense context on a subject before reasoning. Provides more context than noezissearch alone. includecontent: true to read the full text and not just the summaries.

Parameter Type Required Description
include_content boolean \ null If true, each returned node carries its content (full text) instead of just the truncated summary — useful to re-read documents by topic without knowing their LID. The content counts toward the max_tokens budget (increase it accordingly). Default: false.
max_depth integer \ null Max expansion depth. Default: 3.
max_tokens integer \ null Maximum estimated token budget. Default: 4000.
topic string yes Start topic or LID.

noezis_report

On-demand thematic auto-documentation: assembles a human-readable Markdown report about a topic from what the graph already knows — decisions, knowledge passages, entities and contradictions on that topic. Deterministic (no LLM at read time); regenerable; thematic (unlike the chronological handoffs). Pure read.

When to use — To produce a readable synthesis of everything Noezis knows about a subject (knowledge-maintenance, briefing a human, onboarding a topic) — not a navigation, a finished document.

Parameter Type Required Description
max_chunks integer \ null Max knowledge passages to surface. Server default: 15.
min_score number \ null Floor score on the topic search in [0, 1]. Server default: 0.55.
polish boolean \ null Opt-in narrative polish via the boundary LLM (no-op if none configured; also enabled by NOEZIS_REPORT_POLISH=1). Default: deterministic only.
topic string yes Topic to document (free text, semantically searched in the graph).

noezis_review_queue

Signal-driven review queue (KL-2): (1) non-decision knowledge (insight/preference/method/analysis) whose review window has elapsed (existing Pending lifecycle); (2) permanent decisions flagged by RECENT signals — a newer decision asserted on the same subject inside the window, or recurrent no_match searches mentioning the subject. Never age-based (a decision is superseded, not expired). Pure read.

When to use — To re-validate knowledge: what awaits review and which standing decisions show recent activity suggesting they may be outdated. The front-load shows terse counts; this verb gives the detail.

Parameter Type Required Description
max_results integer \ null Max flagged decisions returned. Default 10, cap 50.
since string \ null Inclusive lower bound for the signals. Default: now − 14 days.

noezis_search

Semantic search in the Noezis knowledge graph. Returns 3-5 results with lid, score and summary directly included (include_text: true by default — no need for a second call to noezisnodesummary). Set include_text: false for a minimal payload. Prefer this tool over any other for documentary questions.

When to use — To find relevant documents from a natural-language question. Returns the text directly — no extra call needed to read the content.

Parameter Type Required Description
community_id integer \ null R6 (search-ux) — restrict results to the members of a topic clustering community (id read from noezis_graph_report, deterministic per snapshot). Applies to the SEMANTIC leg only. None → no restriction.
explain boolean Include matched_on in each result — indicates on which surface the node was selected ("semantic" for tree navigation nodes, "metadata" for non-geometric V2 nodes). Default: false. Useful to diagnose why a result appeared.
include_text boolean Include the text summary (summary) in each result. Default: true — avoids a second call to noezis_node_summary. Set to false if only the LID is needed (minimal payload).
max_hops integer \ null Maximum tree navigation depth (server default: 3-4 depending on config).
max_results integer \ null Maximum number of nodes returned (post-tree navigation truncation).
min_score number \ null Floor score (inclusive) applied after tree navigation — f32 in [0, 1]. Enables adaptive exploration: broad with 0.3, targeted with 0.85.
mode string \ null Search leg(s): "semantic" (default — tree navigation on embeddings), "lexical" (BM25 on the passages + decisions text — exact tokens, symbols, identifiers; does not touch the embedder), or "hybrid" (both in parallel — sections by signal + corroborated by vote, never a combined score). Raw BM25 scores, incommensurable with the cosine scores (decision lexical_index_b_fusion_arbitration).
path_prefix string \ null R5 (search-ux) — restrict results to nodes whose provenance document's source_path starts with this prefix (e.g. "DOCS/", "crates/noezis-mcp"). Applies to the SEMANTIC leg only — the lexical leg is unaffected. None → no restriction.
query string yes Natural-language question — re-encoded on the server side, never returned as-is.
scope object Scope. Default: both (local + cloud in dual-track).
simulations integer \ null Number of tree navigation simulations (server default: ~100).
timeout_ms integer \ null Timeout in milliseconds for the full tree navigation call. If exceeded, returns a JSON-RPC error kind: "timeout". Default: no timeout (usual behavior). Recommended: 5000 ms for the agents with a real-time constraint.

noezis_since

Event cursor: everything that changed since an instant T — finished async jobs (ingest/recluster, done/failed), asserted decisions (including by other agents), detected tensions. Returns new_cursor to re-pass on the next call. Pure read, bounded.

When to use — At the start of a turn to catch up on what happened since the previous turn (job launched async, decision by another agent), without polling verb by verb.

Parameter Type Required Description
max_items integer \ null Item ceiling per section. Server default: 20, cap 100.
since string yes RFC 3339 cursor (typically the new_cursor of the previous call).

noezis_status

Store indexation status: percentage of ready nodes, counters by state (ready/pending/indexing/failed), breakdown by node type, embedder mode. Call at the start of a session to check whether the corpus is well indexed before running searches.

When to use — Before a search, to check that documents are indexed (indexationpct > 0). Distinct from noezisdoctor (health/errors). With job_id: tracks an async ingestion job.

Parameter Type Required Description
job_id string \ null R-MCP-07 — identifier of an async job (obtained via noezis_ingest(async: true) or noezis_recluster(async: true)). If provided, the call targets this job.

noezis_task_list

Lists Task nodes in the work ledger, optionally filtered by scope and/or status (open, claimed, in_progress, done, blocked).

When to use — To see pending or active tasks in a given workspace. Also surfaced automatically via open_tasks in the front-load context.

Parameter Type Required Description
scope string \ null Filter by scope (exact match). Omit for all scopes.
status string \ null Filter by status (open, claimed, in_progress, done, blocked).

noezis_tools_summary

Aggregates the MCP catalog usage: for each tool, from the tool_invoked OpEvents, computes invocationcount, latencyp50ms, latencyp99ms, successrate and lastinvokedat. Optional filters: since/until (timestamp), session_id. Sorted by count DESC (tie-break name). Hard cap 200 tools (clamp). Pure read — no mutation.

When to use — To audit which tools are actually used, how often, with which latencies/success rates — detect the little-adopted or slow tools. Aggregated complement of noezis_op_history(action='tool_invoked').

Parameter Type Required Description
max_results integer \ null Max number of distinct tools returned. Default 50, cap 200, 0 → error.
session_id string \ null Exact filter on the session_id of the tool_invoked OpEvents.
since string \ null Inclusive lower bound on timestamp. Default: none.
until string \ null Inclusive upper bound on timestamp. since > untilinvalid_range.

noezis_triplets

Returns all SPO triplets (Subject-Predicate-Object) in the graph. Optional filters: predicate label (e.g. "uses"), subject/object name substring, minimum confidence. Sorted by decreasing confidence.

When to use — To query all relations of a given type across the graph (e.g. all 'uses' relations, all relations touching a given tech). Complement to noezis_relations (per-entity) with global scope.

Parameter Type Required Description
limit integer \ null Maximum number of results (default: 100).
min_confidence number \ null Minimum confidence per triplet (default: 0.0).
object_query string \ null Substring match on the object entity name (optional).
predicate string \ null Filter by predicate label, e.g. "uses", "owned_by" (case-insensitive, optional).
subject_query string \ null Substring match on the subject entity name (optional).

Navigation — graph traversal

noezis_chains

All N-hop chains from an entity. Optional predicate filter. Depth filtering mandatory for depth > 2 (combinatorial explosion guard).

When to use — To explore all the N-hop connections from an entity, with or without a predicate filter.

Parameter Type Required Description
depth integer \ null Maximum depth (default: 2, max: 4).
lid string yes LID of the start entity. Accepts entity_lid as an alias (same agent-guess tolerance as noezis_relations).
max_chains integer \ null Max number of chains (default: 20).
min_confidence number \ null Minimum confidence per edge (default: 0.4).
predicate_filter integer \ null Filter by predicate_id. Mandatory if depth > 2.

noezis_children

Lists ALL the structural children of a node (exhaustive, not sampled). Use when you want to explore the full decomposition of a document or aggregate.

When to use — To go one level down in the hierarchy from a known LID.

Parameter Type Required Description
lid string yes Unique node identifier (64 hex characters). Obtained via noezis_search, noezis_children, noezis_parent, or any other navigation tool that returns a lid field.

noezis_community

All members of the topic clustering community containing the node. Use for an exhaustive panorama of a detected theme.

When to use — To get an exhaustive panorama of a thematic zone of the graph.

Parameter Type Required Description
lid string yes Unique node identifier (64 hex characters). Obtained via noezis_search, noezis_children, noezis_parent, or any other navigation tool that returns a lid field.

noezis_entity_neighbors

Returns the 1-hop neighboring entities via the typed relations. For each neighbor: the entity + the relation (predicate, confidence). Use after noezis_entities to explore the relations graph.

When to use — To explore the entities directly linked to a known entity.

Parameter Type Required Description
lid string yes Unique node identifier (64 hex characters). Obtained via noezis_search, noezis_children, noezis_parent, or any other navigation tool that returns a lid field.

noezis_explore_tree

Unified topological navigation: returns in one call the parent, the structural children, and the siblings (topic clustering neighbors) of a node. Replaces 2-3 separate calls (noezisparent + noezischildren + noezis_siblings). Ideal to quickly explore the neighborhood of a known LID.

When to use — To explore the immediate neighborhood of a known node in a single call. More efficient than 3 separate parent/children/siblings calls.

Parameter Type Required Description
depth integer \ null Maximum depth (1 = parent + children + immediate siblings). Default: 1. Max: 3.
include_siblings boolean Include the node's siblings (topic clustering neighbors). Default: true.
lid string yes Root LID of the exploration.

noezis_parent

Returns the direct structural parent of a node, or null for a root. Use to go up the hierarchy one level at a time.

When to use — To go up one level and get the enclosing context of a node.

Parameter Type Required Description
lid string yes Unique node identifier (64 hex characters). Obtained via noezis_search, noezis_children, noezis_parent, or any other navigation tool that returns a lid field.

noezis_path_between

A* path between two LIDs in the graph. Returns null if disconnected or max_hops reached. Use to explain how two documents are linked.

When to use — To explain how two nodes (known LIDs) are linked in the graph.

Parameter Type Required Description
from_lid string yes LID of the start node (64 hex characters) — obtained via noezis_search or a navigation tool.
max_hops integer \ null Maximum number of hops allowed. Recommended server default.
to_lid string yes LID of the end node (64 hex characters) — obtained via noezis_search or a navigation tool.

noezis_path_entities

A* path between two entities in the relations graph. Returns the shortest relation path (by weighted confidence). Note: the entity-relations layer is experimental and de-scoped from retrieval — result reliability depends on entity-extraction quality on your corpus.

When to use — To find how two entities are connected. E.g.: TechCorp → uses → Neo4j → has_flaw → CVE-XYZ.

Parameter Type Required Description
from_lid string yes LID of the start entity.
max_hops integer \ null Maximum number of hops (default: 4).
min_confidence number \ null Minimum confidence per edge (default: 0.3).
predicate_filter integer \ null Filter by predicate_id (u64, optional).
to_lid string yes LID of the end entity.

noezis_relations

Returns an entity's typed relations — outgoing, incoming, or bidirectional. Optional filter by predicate_id.

When to use — To see all of an entity's relations (who uses it, what it is linked to, what it affects).

Parameter Type Required Description
direction string \ null Direction: "outgoing", "incoming", or "both". Default: "both".
lid string yes LID of the entity. Accepts entity_lid as an alias — measured 2026-06-09: agents naturally guess entity_lid for an entity verb (2 of the 3 noezis_relations failures were exactly that).
predicate_id integer \ null Filter by predicate_id (u64, optional).

noezis_siblings

Neighbors of the node in its topic clustering community (semantic proximity). Use to discover thematically close documents without re-running a search.

When to use — To discover a node's immediate thematic neighbors (without a new search).

Parameter Type Required Description
lid string yes Unique node identifier (64 hex characters). Obtained via noezis_search, noezis_children, noezis_parent, or any other navigation tool that returns a lid field.

Write — mutations

noezis_assert_decision

Records a durable decision (ADR) in the graph. Blocks and returns a conflict if a contradictory decision already exists on the same subject — the agent must decide before continuing. Idempotent: re-asserting an identical decision returns kind: "duplicate".

When to use — To trace a durable architectural decision. Reserved for structuring choices that must be remembered across sessions.

Parameter Type Required Description
actor string \ null Actor identifier — validated via Principal::new. If absent, default = MCP session principal (agent:mcp/<session_id>) — reduces friction ("missing actor" failures measured via noezis_tools_summary).
kind string \ null Semantic kind of this node. - "decision" (default) — strict conflict detection block, permanent ADR. - "insight" — technical analysis; conflict detection warn-only, reviewed after 2 sessions. - "preference" — workspace/user working preference; reviewed after 3 sessions. - "method" — validated approach or workflow; reviewed after 4 sessions. - "analysis" — exploratory design (no conflict detection); reviewed after 2 sessions. Non-decision kinds enter a Pending review lifecycle and are surfaced by session-review for confirmation or purge.
predicate string yes Predicate (e.g.: "uses"). Non-empty, ≤ 128 characters.
rationale string yes Explicit rationale — never auto-generated (T39 anti-pattern). Non-empty after trim, ≤ 65536 characters.
review_after_sessions integer \ null Override the default review window (sessions). None = use kind default.
subject string yes Subject of the decision (e.g.: "auth_backend"). Non-empty, ≤ 256 characters.
value string yes Value (e.g.: "OAuth2"). Non-empty, ≤ 4096 characters.

noezis_capture_decision

Normalizes a statement into a triple (subject, predicate, value) and asserts it directly. Two modes: (1) arrow — statement = 'store_backend → surrealdb'; (2) explicit — provide subject + value (the statement serves as rationale). dry_run: true returns the normalized triple without commit. Non-blocking on contradiction: returns kind: "blocked" with the conflicting LID. Idempotent.

When to use — When the agent wants to capture a decision from a natural-language sentence or an arrow format, without manually building the SPV triple.

Parameter Type Required Description
actor string \ null Actor identifier. If absent, default = MCP session principal (agent:mcp/<session_id>) — reduces friction ("missing actor" failures measured via noezis_tools_summary).
dry_run boolean true → returns the normalized triple without asserting it. Default: false.
idempotency_key string \ null R-MCP-12 (generalized, redesign 2026-06-06) — idempotency key: a retry after timeout replays the cached result (the underlying assert is already deduplicated by the conflict detection pre-check, but the replay avoids a misleading duplicate).
predicate string \ null Predicate. Default: "is".
rationale string \ null Explicit rationale. If absent, statement is used.
statement string yes Natural-language text or "subject → value". Serves as rationale if subject and value are provided explicitly.
subject string \ null Explicit subject (snake_case). If absent, extracted from the statement.
value string \ null Explicit value. If absent, extracted from the statement.

noezis_codify_corpus

Applies the batch codification on a set of already-indexed documents (without re-ingesting them). Three perimeters: explicit list, thematic community, or documents ingested since a date. Use dry_run: true to simulate without modifying the graph.

When to use — After adding or modifying a knowledge register, to update the codifications on the existing documents.

Parameter Type Required Description
actor string \ null Optional Principal — MCP default agent:mcp-anonymous.
dry_run boolean \ null If true, pure simulation (no mutation, no OpEvent). Server default: false.
force_recodify boolean \ null If true, overwrites the existing codifications for (chunk_source, register, slot) and cascade-purges the linked Tensions (INV_N11 preserved). Server default: false.
idempotency_key string \ null R-MCP-12 — explicit idempotency key (replays the cached result).
max_documents integer \ null Server ceiling (default 1000, hard cap 10000, 0 rejected as invalid_max_documents).
scope object yes Codification perimeter — oneOf with 3 tagged variants (`kind = "documents" "community" "since"`).
timeout_ms integer \ null Timeout in milliseconds for this operation (can be long on a large corpus). Default: no timeout. Recommended: 30000 ms for corpora > 500 documents.

noezis_consolidate_knowledge

Merges or links nodes identified as similar/redundant. 'merge' strategy: creates a new aggregated node with the merged summary. 'link' strategy: lays Inferred edges between the nodes (less destructive). Emits an OpEvent for traceability. Use sparingly.

When to use — After detecting duplicated or overly fragmented nodes. Prefer 'link' if unsure — 'merge' is irreversible.

Parameter Type Required Description
actor string \ null Actor. Default: agent:mcp-anonymous.
dry_run boolean R-MCP-04 — true → preview { dry_run: true, would_affect, affected_lids } without consolidating nor emitting an OpEvent. Default: false.
idempotency_key string \ null R-MCP-12 — explicit idempotency key (replays the cached result).
lids array yes LIDs of the nodes to consolidate.
rationale string yes Justification of the consolidation.
strategy string yes Strategy: "merge" (summary fusion) or "link" (Inferred edge).

noezis_doc_update

Updates a section or a documentation file on disk, re-ingests the file into the graph, and emits a doc_updated OpEvent for traceability. Can target a specific H2/H3 section or the whole file. Composed: write + ingest + OpEvent in a single atomic operation.

When to use — To update a doc file (.md, .rs, etc.) and trace why this change was made. Use before proposing a direct edit so the graph stays in sync with the repo.

Parameter Type Required Description
actor string \ null Actor. Default: agent:noezis.
content string yes New Markdown content for the section (or the whole file).
dry_run boolean R-MCP-04 — true → preview { dry_run: true, would_affect } without writing the file, re-ingesting nor emitting an OpEvent. Default: false.
evidence_lids array \ null LIDs of the nodes that justify this change (optional).
idempotency_key string \ null R-MCP-12 — explicit idempotency key (replays the cached result).
path string yes Absolute path of the file to modify.
rationale string yes Justification of the modification — why this change.
section string \ null Title of the H2/H3 section to replace. null = replace the whole file.

noezis_ingest

Ingests a document into the graph. Source: exactly ONE of the fields text, path or url. The deterministic validation pipeline pipeline validates 5/5 or rolls back. Use to memorize a text, a local file or (V2) a URL.

When to use — To add a new document (text or local file) to the graph, after checking for absence.

Parameter Type Required Description
async boolean R-MCP-07 — launches the ingestion in a background task and returns immediately { job_id, status: "indexing" }. Track via noezis_status(job_id). Default: true (ingestion is heavy — Pass3 + SLM relations — and must not hold the JSON-RPC connection; decision ingest_async_default_mcp). Pass async: false for a synchronous commit that directly returns the LID + the outcome.
dry_run boolean R-MCP-04 — true → does not mutate the store: returns a preview { dry_run: true, would_affect, estimated } (size, source). No OpEvent emitted. Default: false.
idempotency_key string \ null R-MCP-12 — explicit idempotency key. If provided and already seen, the cached result is replayed (idempotent_replay: true) without re-ingesting. Complements the deduplication by content hash.
path string \ null Path on the local filesystem.
summary string \ null Explicit summary — otherwise generated by the pipeline.
text string \ null Raw UTF-8 text.
url string \ null HTTP(S) URL — reserved for V2, currently triggers an Unsupported error.

noezis_ingest_batch

Ingests up to 50 documents in a single MCP call. Each item is identical to an individual noezis_ingest call (text or path). The items are processed in parallel on the server side. Indispensable to bootstrap a corpus without multiplying round-trips.

When to use — To ingest N texts or files in a single tool call. Use when you have a list of documents to index (N > 1).

Parameter Type Required Description
idempotency_key string \ null R-MCP-12 (generalized, redesign 2026-06-06) — idempotency key at the whole-batch level: if already seen, replays the cached result without re-ingesting any item. Complements the dedup by content hash.
items array yes List of items to ingest. Each item must provide exactly one of the fields text or path. Maximum 50 items per call.

noezis_prefs_drop

Drops a preference (moves it to Dormant). The preference is preserved for audit but is no longer injected at front-load.

When to use — When the user wants to remove a preference that was inferred incorrectly.

Parameter Type Required Description
pref_id string yes Full hex LID of the preference to drop.

noezis_prefs_pin

Pins a preference — prevents the autonomous loop from reverting it to Dormant. Use for preferences you explicitly want to lock in.

When to use — When the user explicitly wants to lock in a preference that was promoted automatically.

Parameter Type Required Description
pref_id string yes Full hex LID of the preference to pin.

noezis_purge_node

PERMANENTLY deletes a node from the graph by its LID (+ its child passages if it is a Document; the edges are cascaded). Emits a purged OpEvent. Refuses the protected founding documents (CLAUDE.md, CONTEXT.md, ROADMAP.md, etc.). Usage: clean up a test pollution or an erroneous node. Irreversible — no dry-run.

When to use — To remove a parasitic node (test transcript, erroneous doc) without re-indexing the whole store or stopping the daemon.

Parameter Type Required Description
idempotency_key string \ null R-MCP-12 (generalized, redesign 2026-06-06) — idempotency key: a retry after timeout replays the cached result instead of failing as unknown_lid on an already-purged node.
lid string yes Hex LID (64 chars) of the node to delete. If it is a Document, its structural child passages are deleted too (edge cascade included).

noezis_recluster

Rebuilds the store's hierarchical tree: clusters all the Ready passages by topic clustering and materializes multi-level AggregateNodes (topic centers = mean of the children), with inter-aggregate Proximity edges and community summaries (SLM naming if the model is present, otherwise a deterministic label). GLOBAL and idempotent pass: first purges the aggregates of the previous run. Costly — to launch after a large ingestion, not on each addition. ASYNC by default: returns { jobid, status } immediately; track via noezisstatus({ job_id }).

When to use — After a substantial ingestion, to (re)build the hierarchical navigation tree over the whole store.

Parameter Type Required Description
async boolean R-MCP-07 (generalized, redesign 2026-06-06) — launches the recluster in a background task and returns immediately { job_id, status: "indexing" }. Track via noezis_status(job_id). Default: true — recluster is the longest verb of the catalog (full topic clustering + network SLM naming) and exceeds the MCP client timeouts on a large store. Pass async: false for a synchronous call that directly returns the counters (aggregates_created, levels, …).

noezis_resolve_tension

Resolves a detected tension (EdgeKind::Tension) with a mandatory rationale and a canonical resolution code: accepteda | acceptedb | merged | deferred | invalidated. Mutates the resolution None → Some() and emits an idempotent TENSIONRESOLVED OpEvent. Idempotent: a second call with an identical (tensionlid, resolutioncode) returns kind: "already_resolved" without a new OpEvent. If the tension is already resolved with another code → kind: "conflicting_resolution" (JSON-RPC success, typed business refusal). Typed errors in INVALIDPARAMS: invalidlid, unknowntension, notatension, invalidresolutioncode, emptyrationale, invalid_actor.

When to use — To close an active tension after human review — typically after listing the tensions via noezislisttensions.

Parameter Type Required Description
actor string \ null Principal identifier. Default agent:mcp-anonymous if omitted.
dry_run boolean R-MCP-04 — true → preview { dry_run: true, would_affect } without mutating the tension's resolution nor emitting an OpEvent. Default: false.
idempotency_key string \ null R-MCP-12 — explicit idempotency key (replays the cached result).
rationale string yes Human justification — never auto-generated.
resolution_code string yes Resolution code (closed catalog, strict case).
tension_lid string yes Hex (64) LID of the tension to resolve.

noezis_retract_decision

Retracts a decision: sets it to the reversible Retracted state with a mandatory reason, withdrawing it from every live surface (front-load, search, review queue, contradiction audit). Unlike supersede, no replacement is needed. The audit is preserved (the node survives until store gc); the retracted key no longer blocks a fresh assertion. Idempotent on an already-retracted decision.

When to use — To cancel a mistaken or obsolete ADR that has NO replacement (wrong repo/subject, abandoned choice). If a newer decision replaces it, use noezis_supersede instead. Always provide an explicit reason (never auto-generated).

Parameter Type Required Description
actor string yes Who performs this action. Format: user:alice or agent:claude-code/session-xyz.
decision_lid string yes LID of the decision to retract. Obtained via noezis_search, noezis_briefing or the front-load. The decision is set to the reversible Retracted state and withdrawn from every live surface; it no longer blocks a fresh assertion on its (subject, predicate).
dry_run boolean R-MCP-04 — true → preview without changing the decision's state nor emitting an OpEvent. Default: false.
idempotency_key string \ null R-MCP-12 — explicit idempotency key (replays the cached result).
reason string yes Why this decision is retracted — never generated automatically, always written by the human or the responsible agent. Mandatory (audit).

noezis_subscribe_node

Subscribes to the STALE/UPDATED events of a LID. The server will then emit notifications/noezis/stale JSON-RPC notifications. Use to stay notified that an indexed document changed.

When to use — To be notified when a given node becomes stale or is updated.

Parameter Type Required Description
lid string yes LID to watch (hex 64).

noezis_supersede

Marks a decision as superseded (replaced) by another. Creates the deprecation link and traces the event in the journal. Idempotent. Refuses if the decision to deprecate is already replaced by a third one — then returns the conflict for arbitration.

When to use — To retract an existing ADR in favor of a more recent decision. Always provide an explicit justification (never auto-generated).

Parameter Type Required Description
actor string yes Who performs this action. Format: user:alice or agent:claude-code/session-xyz.
deprecated_decision_lid string yes LID of the decision to deprecate (the old one). Obtained via noezis_search or noezis_briefing.
dry_run boolean R-MCP-04 — true → preview { dry_run: true, would_create, affected_lids } without laying the SUPERSEDED_BY link nor emitting an OpEvent. Default: false.
idempotency_key string \ null R-MCP-12 — explicit idempotency key (replays the cached result).
rationale string yes Why this decision replaces the old one — never generated automatically, always written by the human or the responsible agent.
replacement_decision_lid string yes LID of the decision that replaces it (the new one). Must exist in the graph and be different from deprecated_decision_lid.

noezis_task_claim

Atomically claims an open Task (compare-and-set). Sets status to 'claimed' and records holder + optional TTL. Returns claimed=false if the task was already taken.

When to use — Before starting work on a task, to prevent two agents from working on the same item concurrently.

Parameter Type Required Description
actor string \ null Actor claiming the task. Defaults to "agent".
task_id string yes Full hex LID of the task to claim.
ttl_sec integer \ null Lease duration in seconds (default 3600).

noezis_task_create

Creates a new Task node in the shared work ledger (A2). Tasks represent units of work shared across sessions and agents. Scope = logical workspace (e.g. repo name, branch, or session id).

When to use — To record a new task or work item that spans sessions or needs to be picked up by another agent.

Parameter Type Required Description
notes string \ null Optional free-form notes.
scope string yes Logical scope — e.g. branch name, feature area, session id.
title string yes Short title (≤ 160 chars).

noezis_task_update

Updates the status (and optionally notes) of a Task. Valid transitions: open → claimed → in_progress → done | blocked.

When to use — To mark a task as in_progress, done, or blocked after claiming it.

Parameter Type Required Description
notes string \ null Optional notes to append.
status string yes New status: in_progress, done, blocked, or open (unclaim).
task_id string yes Full hex LID of the task to update.

noezis_watch_folder

Main entry point to initialize or sync a repo. Call with the repo's root path to (1) immediately ingest all the existing files in a batch and (2) watch for future modifications via incremental SUPERSEDEDBY re-ingestion. This is the first call to make in a not-yet-indexed repo — a single call suffices, no need to ingest the files one by one. ASYNC by default: returns { jobid, status } immediately; track via noezisstatus({ jobid }).

When to use — To initialize a repo's index (first call) or resynchronize after an interruption. Prefer this tool over noezis_ingest repeated on each file.

Parameter Type Required Description
async boolean R-MCP-07 — true → the folder's initial ingest runs in a background task; returns immediately { job_id, status: "indexing" }. Default: true (aligned on ingest/recluster, redesign 2026-06-06: the initial ingest of a folder is by construction heavier than a single ingest). Pass async: false for a synchronous call.
idempotency_key string \ null R-MCP-12 — explicit idempotency key (replays the cached result).
path string yes Absolute path of a folder (recursive).