Enhanced Knowledge Graph Memory Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MEMORY_FILE_PATH | No | Path to the memory storage JSONL file (default: memory.jsonl in the server directory) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| create_entitiesB | Create multiple new entities in the knowledge graph. Supports v1.6 freshness (ttl/confidence), v1.8 project scoping, and η.4.4 bitemporal validity (validFrom/validUntil/observationMeta). |
| delete_entitiesC | Delete multiple entities from the knowledge graph |
| read_graphB | Read the entire knowledge graph |
| open_nodesC | Open specific nodes by their names |
| list_projectsA | List all distinct project IDs in the knowledge graph. Returns sorted array of projectId values, excluding global/unscoped entities. |
| get_entity_versionsA | Get the latest version of an entity. If the entity has been superseded by newer versions (via contradiction detection), returns the most recent one. |
| get_version_chainA | Get all versions of an entity in its version chain. Returns versions sorted by version number ascending. Works from any entity in the chain (resolves to root automatically). |
| create_relationsC | Create multiple new relations between entities in the knowledge graph. Relations should be in active voice |
| delete_relationsC | Delete multiple relations from the knowledge graph |
| invalidate_relationA | Mark a relation as no longer valid. Sets the validUntil timestamp on the matching active relation. Use for temporal facts that have ended (e.g., "Kai no longer works on Orion"). |
| query_as_ofA | Query relations valid at a specific point in time. Returns only relations where validFrom <= date AND (validUntil is undefined OR validUntil >= date). Time-travel query for temporal knowledge graphs. |
| timelineB | Get chronological relation history for an entity. Returns ALL relations (current and expired) sorted by validFrom ascending. Shows the full story of an entity over time. |
| add_observationsC | Add new observations to existing entities in the knowledge graph |
| delete_observationsC | Delete specific observations from entities |
| normalize_observationsC | Normalize entity observations by resolving pronouns and anchoring relative dates. Improves search matching quality. |
| search_nodesC | Search for nodes in the knowledge graph based on query string, with optional tag and importance filtering |
| search_by_date_rangeB | Search entities within a date range, with optional filtering by entity type and tags. At least one of startDate or endDate should be provided. |
| search_nodes_rankedC | Perform TF-IDF ranked search |
| boolean_searchC | Perform boolean search with AND, OR, NOT operators |
| fuzzy_searchC | Perform fuzzy search with typo tolerance |
| get_search_suggestionsC | Get search suggestions for a query |
| search_autoB | Automatically select and execute the best search method based on query characteristics and graph size. Returns results along with the selected method and reasoning. |
| forget_memoryA | Forget (delete) observations matching the given content. Tries exact match first; falls back to semantic search at 0.85 similarity threshold if available. Supports dryRun to preview what would be deleted. |
| hybrid_searchA | Search using combined semantic, lexical, and metadata signals. Provides better recall than single-signal search by fusing multiple relevance signals. v3 additive options: graphWeight adds a graph-connectivity (PageRank) channel, expandNeighbors appends one-hop neighbors of top results, explain annotates results with evidence paths from query anchors, lookFor ranks expansion neighbors by a free-text connection description. |
| analyze_queryA | Analyze a search query to extract entities, temporal references, question type, and complexity. Useful for understanding query structure before searching. |
| smart_searchC | Intelligent search with automatic query planning and reflection-based refinement. Iteratively improves results until adequate. |
| save_searchC | Save a search query for later reuse |
| execute_saved_searchC | Execute a previously saved search by name |
| list_saved_searchesB | List all saved searches |
| delete_saved_searchC | Delete a saved search |
| update_saved_searchC | Update a saved search |
| add_tagsC | Add tags to an entity |
| remove_tagsC | Remove tags from an entity |
| set_importanceC | Set the importance score of an entity (0-10) |
| add_tags_to_multiple_entitiesC | Add the same tags to multiple entities at once |
| replace_tagC | Replace a tag with a new tag across all entities |
| merge_tagsC | Merge two tags into a target tag across all entities |
| add_tag_aliasC | Add a tag alias (synonym mapping) |
| list_tag_aliasesB | List all tag aliases |
| remove_tag_aliasC | Remove a tag alias |
| get_aliases_for_tagC | Get all aliases for a canonical tag |
| resolve_tagC | Resolve a tag to its canonical form |
| set_entity_parentB | Set the parent of an entity for hierarchical organization |
| get_childrenC | Get all child entities of an entity |
| get_parentC | Get the parent entity of an entity |
| get_ancestorsC | Get all ancestor entities of an entity |
| get_descendantsC | Get all descendant entities of an entity |
| get_subtreeC | Get entity and all its descendants as a subgraph |
| get_root_entitiesB | Get all root entities (entities without parents) |
| get_entity_depthC | Get the depth of an entity in the hierarchy |
| move_entityC | Move an entity to a new parent |
| get_graph_statsC | Get statistics about the knowledge graph |
| validate_graphB | Validate the knowledge graph for integrity issues |
| find_duplicatesC | Find potential duplicate entities based on similarity |
| merge_entitiesC | Merge multiple entities into one |
| compress_graphC | Compress the graph by merging similar entities |
| archive_entitiesC | Archive old or low-importance entities |
| find_shortest_pathC | Find the shortest path between two entities in the knowledge graph |
| find_all_pathsC | Find all paths between two entities up to a maximum depth |
| get_connected_componentsB | Find all connected components in the knowledge graph |
| get_centralityC | Calculate centrality metrics for entities in the graph |
| import_graphC | Import knowledge graph from various formats |
| export_graphA | Export knowledge graph in various formats with optional brotli compression and streaming for large graphs. Supports W3C Linked Data formats (turtle, rdf-xml, json-ld) added in η.5.4. |
| ingestA | Ingest pre-normalized conversation data into the knowledge graph. Chunks messages by exchange pairs (user+assistant), creates entities with verbatim observations. Format-agnostic: normalize chat exports before calling. |
| semantic_searchC | Search for entities using semantic similarity. Requires embedding provider to be configured via MEMORY_EMBEDDING_PROVIDER. |
| find_similar_entitiesC | Find entities similar to a given entity using semantic similarity. Requires embedding provider. |
| index_embeddingsA | Index all entities for semantic search. Call this after adding entities to enable semantic search. Requires embedding provider. |
| register_refA | Register a stable alias (ref) pointing to an entity name in the RefIndex for O(1) lookups |
| resolve_refB | Resolve a stable alias (ref) to its entity name via the RefIndex |
| deregister_refB | Remove a stable alias (ref) from the RefIndex |
| list_refsA | List all registered refs in the RefIndex, optionally filtered by entity name |
| create_artifactB | Create an artifact entity (tool output, code snippet, API response, etc.) with a stable auto-generated ref |
| get_artifactB | Retrieve an artifact entity by its stable ref or entity name |
| list_artifactsB | List all artifact entities, with optional filtering by tool name, type, or date |
| search_by_timeB | Search entities using a natural language time expression (e.g. "last week", "yesterday", "in January") |
| configure_distillationA | Configure the distillation pipeline policy (default, noop, or none) that filters memories before context formatting |
| check_freshnessB | Calculate the freshness score (0–1) for a specific entity based on its TTL and confidence |
| get_stale_entitiesB | Return all entities whose freshness score is below a threshold |
| get_expired_entitiesB | Return all entities that have passed their TTL expiry |
| refresh_entityB | Reset freshness for an entity by updating its creation timestamp to now and resetting confidence to 1.0 |
| freshness_reportB | Generate a freshness report across all entities showing fresh, stale, and expired counts |
| query_natural_languageC | Decompose a natural language query into a structured search plan and return matching entities |
| set_governance_policyA | Set the active governance policy controlling which write operations (create, update, delete) are permitted for future requests |
| audit_queryB | Query the audit log for operations matching filter criteria (operation type, agent ID, entity name, date range) |
| audit_historyA | Get the full audit history for a specific entity in chronological order |
| rollback_operationA | Reverse a specific committed operation using its audit entry ID (restores entity to before-snapshot) |
| set_agent_roleB | Apply a built-in role profile (researcher, planner, executor, reviewer, coordinator) to adjust salience weights and context budgets |
| list_role_profilesA | List all built-in role profiles with their salience weight and context budget configurations |
| enable_entropy_filterB | Enable or disable the Shannon entropy gate that drops low-information memories during consolidation |
| compute_entropyB | Compute the Shannon entropy of a text string (in bits per character) |
| start_consolidationB | Start the background consolidation scheduler that periodically deduplicates and merges memories |
| stop_consolidationA | Stop the background consolidation scheduler |
| run_consolidation_nowA | Run a consolidation cycle on demand, independently of the scheduled interval |
| format_with_salience_budgetB | Format memories for LLM prompt consumption with proportional token allocation based on salience scores |
| synthesize_collaborative_contextA | Synthesize context by traversing the graph neighbourhood from a seed entity and merging high-salience neighbors across agents |
| distill_failureB | Distill lessons from a failed session by tracing the causal chain and extracting actionable insights |
| end_sessionA | End a session and trigger failure distillation if the session outcome was a failure |
| get_profileB | Get the user profile. Returns static facts (long-lived preferences) and dynamic facts (recent session context). Profiles are scoped by projectId. |
| update_profileA | Add a fact to the user profile. Static facts are long-lived (preferences, role, tools). Dynamic facts are recent (current project, active work). |
| diary_writeA | Write a timestamped diary entry for a specialist agent. Each agent gets its own persistent diary (entity: diary-{agentId}). Use for code review findings, architecture decisions, ops incidents, etc. |
| diary_readA | Read recent diary entries for a specialist agent. Returns entries in reverse chronological order. Optionally filter by topic. |
| analyze_cognitive_loadB | Analyze the cognitive load of a set of entities: token density, redundancy ratio, diversity score, and composite load score |
| adaptive_reduce_memoriesB | Adaptively reduce a set of memories until their cognitive load falls below the configured threshold by removing low-salience redundant memories |
| dream_startA | Start the DreamEngine background memory maintenance. Runs 8 phases (temporal anchoring, freshness sweep, entropy pruning, consolidation, compression, entity enrichment, pattern promotion, graph hygiene) on a configurable interval. |
| dream_stopA | Stop the DreamEngine background process. |
| dream_run_nowA | Run a single dream cycle immediately. Returns detailed per-phase results. |
| set_project_scopeA | Set the active project scope for this server session. New entities passed without an explicit projectId may be auto-stamped with this value by scope-aware handlers; pass an empty string to clear the scope. Returns { projectId } where projectId is the new active scope (null when cleared). |
| get_project_scopeA | Returns the active project scope for this server session (set via set_project_scope). Returns { projectId } where projectId is null when no scope is active. |
| session_startA | Start a new agent session via AgentMemoryManager. Tracks session lifecycle, enables working memory, and supports session chaining. Returns a SessionEntity with id and timestamps. |
| session_endA | End an agent session via AgentMemoryManager with summary generation and working memory promotion. Unlike end_session (which handles failure distillation on graph entities), this manages the full agent session lifecycle. |
| session_checkpointA | Create a checkpoint snapshot of the current session state for later restore |
| session_restoreC | Restore a session from a previously created checkpoint |
| add_working_memoryA | Create a TTL-based short-term working memory entry scoped to a session. Working memories auto-expire and can be promoted to long-term storage. |
| promote_working_memoryC | Promote a working memory entry to long-term episodic or semantic storage |
| confirm_memoryA | Boost a memory's confidence score without resetting its timestamp. Unlike refresh_entity (which resets to 1.0), this incrementally increases confidence. |
| clear_expired_memoriesA | Remove all working memories that have exceeded their TTL. Complements get_expired_entities (which lists but does not delete). |
| wake_upA | Initialize a 4-layer memory stack context (~600 tokens). L0 loads profile identity, L1 loads top entities by importance. Returns a compact boot context for LLM consumption. |
| auto_link_observationsA | Detect entity mentions in observation text and suggest cross-reference relations. Unlike normalize_observations (which resolves pronouns/dates), this finds entity name mentions. |
| extract_factsB | Extract structured facts from observation text using rule-based extraction |
| detect_contradictionsB | Find conflicting observations within an entity using semantic similarity |
| consolidate_sessionA | Run the full ConsolidationPipeline on a session: promote working memory, merge duplicates, summarize, and extract patterns. Unlike run_consolidation_now (which runs the dedup scheduler), this is a comprehensive session-scoped pipeline. |
| detect_patternsB | Detect recurring token-based patterns across observations of a given entity type |
| summarize_entityA | Auto-summarize redundant observations within a single entity. Unlike compress_graph (which merges similar entities), this condenses observations within one entity. |
| priority_dedupA | Smart priority-based deduplication that keeps the highest-scored entity per duplicate group (importance > recency > observation count > tags) |
| compress_contextA | Compress text using n-gram abbreviation with a legend for token-efficient context loading. Unlike format_with_salience_budget (which allocates token budget), this does text-level compression. |
| run_decay_cycleA | Run a single pass of time-based importance decay across all agent memories. Returns count of decayed and forgotten memories. |
| get_decayed_memoriesA | List memories whose importance has fallen below a threshold due to time-based decay. Unlike get_stale_entities (which uses freshness timestamps), this uses decay engine importance calculations. |
| forget_weak_memoriesA | Bulk-delete memories that fell below a decay threshold. Unlike forget_memory (content match) or archive_entities (criteria-based move), this uses decay-based importance scoring. |
| reinforce_memoryA | Boost a memory's decay resistance by increasing confirmation count and/or confidence. Unlike refresh_entity (timestamp reset) or set_importance (static score), this modulates the decay model. |
| score_salienceA | Calculate 5-component relevance score for an entity: baseImportance, recencyBoost, frequencyBoost, contextRelevance, noveltyBoost. Use with format_with_salience_budget to score then format. |
| register_agentA | Register an agent for multi-agent operations with identity metadata. Unlike set_agent_role (which applies a role profile), this registers agent identity with type, trust level, and capabilities. |
| search_cross_agentA | Search across agent memories with trust-weighted scoring and visibility filtering |
| set_memory_visibilityA | Set the visibility of a memory entity for multi-agent access control. Auto-promotes plain entities to AgentEntity (stamps agentId/memoryType/etc.) instead of failing silently. Supports η.5.5.b extensions: allowedRoles (role gate), visibleFrom/visibleUntil (time-window gate). |
| get_visible_memoriesA | Get all memories visible to a specific agent based on visibility rules and trust levels |
| resolve_agent_conflictB | Resolve a conflict between two agent memories using a specified strategy |
| visualize_graphA | Generate a self-contained interactive HTML page with a D3.js force-directed graph visualization. Nodes are colored by type and sized by importance. |
| split_transcriptB | Split concatenated multi-session transcripts into per-session chunks via delimiter detection. Preprocessing step before ingest. |
| estimate_query_costA | Estimate execution cost (time, tokens) for all available search methods on a given query. Unlike analyze_query (which extracts entities/complexity), this predicts per-method performance. |
| get_context_profileA | Get a ContextWindowManager profile configuration (salience weights, retrieval strategy). Unlike get_profile (user profile facts), this returns context-aware retrieval settings. |
| invalidate_entityA | η.4.4 — Mark an entity as no longer valid by setting validUntil. Idempotent. Does not delete the entity — entity_as_of still returns it for past asOf timestamps. Orthogonal to v1.8 supersession. |
| entity_as_ofA | η.4.4 — Time-travel query for an entity. Returns the entity at a given point in time, or null if it was already invalidated then. An entity is valid at asOf when validFrom <= asOf AND (validUntil is undefined OR validUntil >= asOf). |
| entity_timelineB | η.4.4 — Get all temporal versions of an entity in chronological order (by validFrom asc, with unbounded entities last). Returns the v1.8 supersession chain when one exists. |
| invalidate_observationA | η.4.4 — Mark a specific observation on an entity as no longer valid. Creates a parallel observationMeta[] entry if absent. Throws if observation not found on entity. |
| observations_as_ofA | η.4.4 — Get observations valid at a given point in time. Observations with no observationMeta entry are treated as unbounded (always-valid). |
| update_entityB | η.5.5.c — Update an entity with optional optimistic concurrency control. Pass expectedVersion to assert the live entity is at that version; throws VersionConflictError on mismatch. Omit for legacy last-write-wins. OCC-guarded writes auto-increment version. |
| rbac_assign_roleA | η.6.1 — Grant a role to an agent. Roles: reader (read), writer (read+write), admin (read+write+delete), owner (all four). Optional resourceType narrows to one type; optional scope narrows to a name prefix; optional validUntil expires the grant. |
| rbac_revoke_roleA | η.6.1 — Remove a specific role assignment. Matching is by agentId + role + resourceType (exact, including undefined). |
| rbac_check_permissionB | η.6.1 — Check whether an agent can perform an action on a resource type. Falls back to defaultRole=reader for agents with no assignments. |
| rbac_list_assignmentsB | η.6.1 — List role assignments for an agent (active or all). |
| add_procedureA | 3B.4 — Persist a new procedural memory (executable how-to sequence). Steps are ordered (1-indexed) with optional fallback chains. Auto-generates id when omitted. Distinct from semantic facts and episodic events. |
| get_procedureC | 3B.4 — Load a procedure by id. |
| match_procedureB | 3B.4 — Token-overlap match a context description against stored procedures. Returns ranked matches with Jaccard-like scores. |
| refine_procedureB | 3B.4 — Apply caller feedback after a procedure execution. Increments executionCount and updates successRate via EWMA (α=0.2). |
| get_procedure_stepA | 3B.4 — Load a specific step from a procedure by 1-indexed order, OR get the next step relative to currentOrder. |
| adaptive_retrieveA | 3B.5 — Run iterative query-rewriting retrieval. Up to maxRounds of (search → score coverage → rewrite). Stops early when coverage ≥ minCoverage or no expansion tokens. Pure symbolic — no LLM provider required. |
| find_causesA | 3B.6 — Find causal chains ending at the named effect. Searches paths from candidate causes via causal relation types (causes/enables/prevents/precedes/correlates). Sorted by score = product of per-edge causalStrength. |
| find_effectsB | 3B.6 — Find causal chains starting at the named cause and reaching any candidate effect. Symmetric counterpart to find_causes. |
| counterfactual_queryA | 3B.6 — "What if we remove edge (removeFrom → removeTo)? Is predict still reachable from seed?" Returns chains from seed to predict that DO NOT use the removed edge. Pure: does not mutate the graph. |
| detect_causal_cyclesC | 3B.6 — Detect cycles in the causal subgraph rooted at seed. CAVEAT: treats prevents as a directed edge, not as logical negation — prevents+enables triangles ARE flagged. |
| get_world_stateA | 3B.7 — Capture a fresh snapshot of the live graph: entitiesByName + takenAt timestamp + size. Capped at maxSnapshotSize (default 1000); over-cap prefers high-importance entities. |
| validate_fact_against_worldB | 3B.7 — Validate a candidate observation against a target entity. Delegates to MemoryValidator.validateConsistency. Returns null if no validator is wired. |
| predict_outcomeC | 3B.7 — Predict downstream effects of an action by walking the causal subgraph. Delegates to CausalReasoner.findEffects. |
| record_tool_outcomeA | v2.1.0 — Record a single tool-call outcome directly via ToolAffordanceManager (bypasses ToolCallObserver). Creates the record on first call; appends to rolling window on subsequent. Throws "conflict" on concurrent writer mismatch. |
| get_tool_affordance_statsC | v2.1.0 — Flat rolling stats for a tool: success_rate, total_calls, common_failure_modes, avg_duration_ms. |
| suggest_toolA | v2.1.0 — Suggest tools matching a task hint, ranked by successRate × recency factor (1.0 at ≤1d, linearly decays to 0.1 at ≥30d). |
| list_tool_affordancesC | v2.1.0 — All recorded ToolAffordanceRecords. |
| remove_tool_affordanceC | v2.1.0 — Drop a tool-affordance record by toolName. |
| observe_tool_startA | v2.1.0 — Begin observing a tool call. Returns a callId the caller threads through observe_tool_complete / observe_tool_error / observe_tool_partial / observe_tool_cancel. Emits toolCall:start on the observer EventEmitter. |
| observe_tool_completeA | v2.1.0 — Record successful completion. Computes durationMs from observe_tool_start. No-op on unknown callId. |
| observe_tool_errorA | v2.1.0 — Record failure with an error message. No-op on unknown callId. |
| observe_tool_partialB | v2.1.0 — Record a partial result (tool returned a usable but incomplete result). No-op on unknown callId. |
| observe_tool_cancelA | v2.1.0 — Drop an in-flight observation without recording (e.g. user cancelled). No-op on unknown callId. |
| tool_observer_in_flight_countA | v2.1.0 — Diagnostic: number of in-flight (started but not yet completed) tool-call observations. |
| add_heuristicC | v2.1.0 — Register a new condition→action heuristic. Storage-backed; default confidence 0.5. Pass an explicit content-addressed id (e.g. h_<sha256(condition|action)>) for caller-managed idempotency. |
| get_heuristicC | v2.1.0 — Sync lookup by HeuristicId. |
| list_heuristicsC | v2.1.0 — All registered heuristics. |
| heuristic_countB | v2.1.0 — Count of stored heuristics. |
| match_heuristicsA | v2.1.0 — Find heuristics whose condition matches input via Jaccard token-overlap × confidence; sorted descending, then by priority. |
| reinforce_heuristicC | v2.1.0 — Record a successful application: bumps support; raises confidence asymptotically (new = old + (1-old)*0.1). OCC-protected — surfaces "conflict" when concurrent writer collides. |
| record_heuristic_contradictionC | v2.1.0 — Record a counter-example: bumps contradictions; lowers confidence (new = old - old*0.2). OCC-protected. |
| detect_heuristic_conflictsA | v2.1.0 — Pair-wise overlap/contradiction detection across stored heuristics. Surfaces overlap (same condition tokens, different actions) and contradiction (opposing actions on overlapping conditions; negation prefixes such as "do not" / "never" / "avoid"). |
| remove_heuristicC | v2.1.0 — Drop a heuristic by id. |
| clear_heuristicsA | v2.1.0 — Drop every heuristic (across all entities of type "heuristic"). |
| upsert_project_contextB | v2.1.0 — Merge structured project knowledge into the ProjectContextRecord for |
| get_project_contextC | v2.1.0 — Sync lookup of the ProjectContextRecord for projectId. |
| append_project_factB | v2.1.0 — Append one fact to a project context (auto-creates the record on first call; dedups). |
| append_project_conventionC | v2.1.0 — Append one convention to a project context (auto-creates; dedups). |
| append_project_commandB | v2.1.0 — Append a documented project command (dedup by name). |
| append_project_glossary_termC | v2.1.0 — Append a glossary term (dedup by term). |
| remove_project_factC | v2.1.0 — Remove a single fact. Returns true if found. |
| remove_project_conventionC | v2.1.0 — Remove a single convention. Returns true if found. |
| remove_project_commandC | v2.1.0 — Remove a command by name. Returns true if found. |
| remove_project_glossary_termC | v2.1.0 — Remove a glossary entry by term. Returns true if found. |
| clear_project_contextB | v2.1.0 — Wipe the four arrays (facts/conventions/commands/glossary) for projectId; keeps the entity. |
| format_project_context_for_llmA | v2.1.0 — Render the ProjectContextRecord as a prose summary suitable for the wakeUp L0 layer or a system prompt. Honors budgetChars with ellipsis truncation. |
| propose_decisionB | v2.1.0 — Propose a new architecture-decision-record (ADR-equivalent). Creates a "proposed" DecisionRecord. Default importance 8. |
| accept_decisionB | v2.1.0 — Transition a proposed decision to accepted. Returns one of: accepted | already-accepted | not-found | illegal-transition | conflict | vanished-mid-update. |
| reject_decisionA | v2.1.0 — Transition a proposed decision to rejected with a reason. Returns rejected | already-rejected | not-found | illegal-transition | conflict | vanished-mid-update. |
| supersede_decisionA | v2.1.0 — Mark an accepted decision as superseded by another. illegal-transition when target is not accepted. not-found when target or replacement is missing. |
| find_decisions_by_contextB | v2.1.0 — Substring search across context, decision, and consequences fields. |
| get_decision_chainA | v2.1.0 — Walk the supersedes link backward from the supplied id to the original proposal. Returns chain oldest-first; cycle-protected. |
| list_decisionsB | v2.1.0 — List decisions, optionally filtered by status / sourceSessionId / sourceProjectId. |
| get_decisionA | v2.1.0 — Sync lookup by DecisionId. |
| export_decision_as_adr_markdownA | v2.1.0 — Render a stored decision as ADR-format markdown (# title, Status, Context, Decision, Consequences bullet list, Alternatives bullet list, optional Supersedes link). |
| parse_adr_markdownA | v2.1.0 — Parse a hand-written or previously-exported ADR markdown into a DecisionInput shape (static; no persistence). Returns null when required Context or Decision sections are missing. |
| add_exclusion_ruleA | v2.1.0 — Add a content-pattern exclusion rule (do_not_remember). Hard-deletes existing matches (per |
| list_exclusion_rulesB | v2.1.0 — Return every registered ExclusionRule. |
| remove_exclusion_ruleA | v2.1.0 — Drop an exclusion rule by id. Does NOT restore previously deleted memories — the contract is "user said forget". |
| check_exclusionA | v2.1.0 — Check whether content would be blocked by any active forward-blocking rule. Returns {blocked, ruleId?, reason?}. Past-only rules are skipped. |
| find_matching_memories_for_ruleA | v2.1.0 — Dry-run preview: return entities whose observations would match the candidate exclusion pattern. Does NOT persist the rule. |
| find_duplicate_observationsA | v2.1.0 — Find verbatim duplicate observation strings across distinct entities (SHA-256 exact tier). Complementary to MemoryEngine.checkDuplicate (turn-level) and CompressionManager.findDuplicates (whole-entity). Report-only. |
| find_jaccard_duplicate_observationsB | v2.1.0 — Find near-duplicate observation strings across distinct entities via token-Jaccard similarity with union-find grouping. More expensive than the exact tier (O(o²)); opt-in for higher recall. |
| spell_suggestA | v2.1.0 — Suggest close matches for a (potentially misspelled) query over the vocabulary of entity names + tag values. Two-stage: bigram-Jaccard pre-filter (NGramIndex) + Levenshtein re-rank. |
| spell_rebuild_vocabularyA | v2.1.0 — Force a rebuild of the SpellChecker vocabulary + n-gram index. Call after bulk entity churn; the lazy cache is otherwise correct for low-churn graphs. |
| spell_vocabulary_sizeA | v2.1.0 — Return the count of unique terms in the SpellChecker vocabulary (entity names + tag values by default). Mostly diagnostic. |
| diagA | v12.5.0 — Runtime + storage diagnostic snapshot: node version, platform, storage path/type/size, entity + relation counts, ISO timestamp. Good first call when something feels off. |
| healthA | v12.5.0 — Fast integrity checks: storage:loadGraph, entities:distinct-names, relations:no-orphans, hierarchy:no-cycles-no-missing-parents. Returns per-check duration; ok=false when any check fails. |
| check_graphA | v12.5.0 — Detect orphan relations (from/to references a missing entity), missing parents (entity.parentId references a missing entity), and hierarchy cycles. Reports findings. With apply=true, deletes orphan relations and clears missing parentIds; cycles are always reported but never auto-repaired (no safe default for which edge to break). |
| reindexA | v12.5.0 — Rebuild search-side indexes that may have drifted (TF-IDF/BM25 ranked + spell-checker vocabulary). Pass ranked=false or spell=false to scope. Returns per-target ok flag + durationMs. |
| cache_statsA | v12.5.0 — Per-tier snapshot of the global search caches (basic / ranked / boolean / fuzzy) showing hits / misses / size / hitRate. Process-local — every fresh server process starts at zero. |
| cache_clearA | v12.5.0 — Bust all four global search caches. Idempotent; safe after manual graph edits to drop stale results. |
| graph_sizeA | v12.5.0 — Graph + storage footprint: entity / relation / observation counts, distinct tag count, avg observations per entity, on-disk byte size + JSONL line count. |
| inspect_entityA | v12.5.0 — Verbose snapshot of one entity: observations (resolved via ObservationManager so the column-store sidecar is consulted), outgoing + incoming relations, tags, importance, timestamps, parentId, immediate children, full ancestors. Errors when entity not found. |
| hierarchy_treeA | v12.5.0 — Hierarchy tree as nested JSON. With an explicit root, returns just that subtree; without, returns all root entities. Useful for visualising parent/child structure. |
| entity_neighborsA | v12.5.0 — Incoming + outgoing relations for one entity, plus in/out degree counts. Lighter than inspect_entity when you only need the graph-topology view. |
| record_eventA | Record an n-ary event: the action becomes a first-class event hub entity with role-typed relations (actor_of/targeted/occurred_in/participant_in). Missing endpoints auto-create as concept stubs. Optional flowKey groups events into a named flow. |
| get_eventA | Load one recorded event by its entity name, joining the event hub with its role-typed relation endpoints (actor, target, context, participants). |
| query_eventsA | Query recorded events by any combination of actor, target, action, flowKey, and inclusive time range. Results are chronologically ordered (occurredAt, falling back to createdAt). Uses relation/type indexes — never a full-graph scan. |
| get_event_flowA | All events sharing a flow key (flow: tag), chronologically ordered — the full timeline of a named flow (e.g. a release, an incident). |
| who_did_whatA | Convenience join answering "who did what (to target / in context / within time range)?" over recorded events. Returns actor + action + event tuples; events without a resolvable actor are omitted. |
| ingest_dialogueB | Distill raw dialogue turns into the Cue–Tag–Content associative memory graph (MRAgent-style "memory is reconstructed, not retrieved"). Episodic/semantic/topic layers are also persisted into the live knowledge graph. Multiple calls accumulate. |
| reconstruct_memoryA | Answer a query via active multi-step traversal of the reconstructive (Cue–Tag–Content) memory graph. Returns accumulated evidence, the step-by-step trajectory, and whether the loop stopped early on a satisfied condition vs. budget. |
| reconstructive_memory_statsA | Size statistics of the reconstructive (Cue–Tag–Content) memory graph: cue / tag / content node counts and edge counts. |
| analyze_relation_duplicatesA | Dry-run the three-tier relation janitor: tier 1 finds trivial relationType spelling variants (WorksAt/works-at/works_at) and redundant bidirectional mirrors; tier 2 (when an embedding provider is configured) finds semantically equivalent same-pair relations. Report-only — never mutates the graph. |
| consolidate_relationsA | Run relation-duplicate analysis and — when apply=true — merge tier 1+2 duplicate groups (delete variants, create the canonical survivor with summed confirmationCount). apply=false (default) is identical to analyze_relation_duplicates. |
| create_reflectionA | Persist an agent reflection — a generalized lesson distilled from experience, backed by evidence entities. Deduplicated by evidence hash; scoped to session, project, or global. |
| list_reflectionsA | List stored agent reflections, filterable by scope, source session/project, and minimum generalization confidence. Archived reflections are excluded unless includeArchived is set. |
| get_relevant_reflectionsA | Reflections relevant to a session: matches by sourceSessionId, plus evidence overlap with the supplied session entity names. Use at session start to surface applicable past lessons. |
| archive_reflectionA | Archive a reflection by id so it no longer appears in default listings or relevance matches (soft delete — the record is retained). |
| save_reconstructive_memoryA | Serialize the in-memory Cue–Tag–Content reconstructive graph to a JSON sidecar next to the storage file (-reconstructive.json). The CTC graph is process-local; save before shutdown to survive restarts. |
| load_reconstructive_memoryA | Restore the Cue–Tag–Content reconstructive graph from the -reconstructive.json sidecar written by save_reconstructive_memory, replacing the current in-memory graph. Errors if no sidecar exists. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 241 tools
With 241 tools, many serve overlapping or very similar purposes (e.g., 10+ search methods, multiple consolidation/decay/dream tools). While individual descriptions are detailed, the sheer volume makes it difficult for an agent to reliably select the correct tool without deep study.
The vast majority of tools follow a consistent verb_noun (snake_case) pattern. However, a few outliers like 'health', 'diag', 'reindex', and 'cache_stats' break this pattern, slightly reducing consistency.
241 tools is far beyond what is reasonable for an MCP server. Even for a complex knowledge graph system, this overwhelming number forces agents to navigate an excessively large tool surface, causing confusion and inefficiency.
The tool set is extraordinarily comprehensive, covering CRUD for entities, relations, and observations; multiple search paradigms; graph analysis; temporal queries; RBAC; decisions; procedures; causal reasoning; events; reflections; and more. No obvious gaps in the intended functionality.