Engrammic
Reference

Tools Reference

All MCP tools with examples

Overview

Storage Tools

Store information to memory

remember · learn · update

Retrieval Tools

Get information from memory

recall · trace

Management Tools

Manage your knowledge

forget · tick

Coordination Tools

Multi-agent and metacognition

agents · introspect · conflicts · resolve_conflict

Quick Decision Guide

I want to...Use this tool
Store a preference or observationremember
Store a fact with evidencelearn
Update an existing factupdate
Search my memoryrecall
Understand why I believe Xtrace
Remove somethingforget
Acknowledge a markertick
See other agentsagents
Check knowledge healthintrospect
See contradictionsconflicts

Storage Tools

remember

Store an observation without evidence. Writes a Memory node.

Scenario: User mentions a preference.

User: "I always use pnpm, not npm" Agent: [calls remember]

{
  "content": "User prefers pnpm over npm",
  "tags": ["preferences", "tooling"]
}

Parameters:

NameTypeRequiredDescription
contentstringYesWhat to remember
tagsstring[]NoCategorization tags
decaystringNoephemeral | standard | durable | permanent
supersedesstringNoNode ID this replaces
memory_typestringNoobservation | reflection | event | document
aboutstring[]NoNode IDs this memory is about (creates ABOUT edges)

Returns: { "node_id": "mem_abc123" }

Reflections (memory_type="reflection") don't decay and require about to link to referenced nodes.


learn

Store a claim with evidence. Writes a Knowledge-layer Claim node.

Scenario: Agent learns a project fact from documentation.

User: "Check the README for the build process" Agent: [reads README, calls learn]

{
  "claim": "Project uses esbuild for bundling",
  "source": "document",
  "evidence": ["file://README.md"],
  "confidence": 0.95
}

Parameters:

NameTypeRequiredDescription
claimstringYesThe fact being asserted
sourcestringYesdocument | user | external | agent
evidencestring[]YesURIs or node:<uuid> references
confidencefloatNo0.0-1.0, defaults to 0.8
tagsstring[]NoCategorization tags
source_tierstringNoauthoritative | validated | community | unknown
supersedesstringNoNode ID this claim replaces

Returns: { "node_id": "know_abc123", "evidence_status": "valid" }

learn validates evidence URLs. Private, auth-gated, and file:// URLs will fail validation. For codebase facts, use remember.


update

Supersede existing knowledge with new information.

Scenario: A fact has changed.

Agent: [reads updated config, calls update]

{
  "target": "know_abc123",
  "content": "Project now uses Vite for bundling",
  "evidence": ["https://docs.project.com/build"]
}

Parameters:

NameTypeRequiredDescription
contentstringYesNew claim text
evidencestring[]YesURIs for the new claim
targetstringNo*Node ID to supersede (skips search)
querystringNo*Semantic search to find the node
confidencefloatNo0.0-1.0, defaults to 0.8
source_tierstringNoQuality tier hint

*One of target or query is required.

Returns:

  • Success: { "status": "updated", "node_id": "new_uuid", "superseded_id": "old_uuid" }
  • Ambiguous: { "status": "ambiguous", "candidates": [...] } if query matches multiple nodes
  • Not found: { "status": "not_found" } — use learn() instead

Use learn for new knowledge, update for replacing existing. update only works on Claim nodes.


Retrieval Tools

recall

Search or fetch knowledge. Call this at the start of any task and before storing anything (to supersede, not duplicate).

Scenario: Agent needs to know user preferences.

{
  "query": "user preferences for package managers"
}

Parameters:

NameTypeRequiredDescription
querystringNo*Semantic search. Use "*" to list all
node_idsstring[]No*Direct fetch by ID
depthintNoGraph traversal depth (0-3)
layersstring[]NoFilter: memory | knowledge | wisdom
top_kintNoMax results (default 10)
min_thresholdfloatNoRelevance cutoff 0.0-1.0
include_withheldboolNoShow low-confidence nodes
fusion_modeboolNoRun semantic+graph with RRF fusion
since / untilstringNoTemporal filter (requires fusion_mode)
tagsstring[]NoFilter to nodes with ALL specified tags
agent_idstringNoFilter to nodes by this agent
exclude_agentsstring[]NoExclude nodes by these agents
include_conflictsboolNoReturn contradicting nodes

*At least one of query or node_ids should be provided.

Returns: Array of matching nodes with content and metadata. A withheld count is reported when low-confidence nodes are hidden.

Temporal filtering: Requires fusion_mode=true. Accepts relative ("7d", "1w") or ISO datetime.

{"query": "auth changes", "fusion_mode": true, "since": "7d"}

trace

Trace the provenance of a belief back to its sources.

Scenario: User asks why agent thinks something.

User: "Why do you think I prefer functional programming?"

{
  "node_id": "bel_abc123",
  "direction": "up"
}

Parameters:

NameTypeRequiredDescription
node_idstringYesNode to trace
directionstringNoup (sources) or down (dependents)
max_depthintNoMax traversal depth (default 5)
edge_typesstring[]NoFilter: DERIVED_FROM, PROMOTED_FROM, SYNTHESIZED_FROM, REFERENCES

Returns: Provenance chain with confidence at each step, plus root_sources (up) or leaf_nodes (down).


Management Tools

forget

Request deletion of a node. Enters tombstone state before permanent deletion.

Scenario: User requests data deletion.

{
  "node_id": "mem_abc123",
  "reason": "User requested deletion"
}

Parameters:

NameTypeRequiredDescription
node_idstringYesNode to forget
reasonstringNoAudit trail reason
cascadeboolNoAlso tombstone downstream references

Returns: { "status": "tombstoned", "node_id": "...", "cascade_count": 3 }

Deletion is not instant. The node enters a cancel window before permanent removal.


tick

Lightweight engagement check. Use when you have seen a marker but choose not to act on it, or to signal active engagement.

Scenario: Agent notices an engagement marker but the current task is unrelated.

{
  "about_hint": ["node_123", "node_456"],
  "engagement_type": "viewed"
}

Parameters:

NameTypeRequiredDescription
about_hintstring[]NoNode IDs to scope check and update access time
engagement_typestringNoviewed (+0.5 heat), used (+1.0), confirmed (+2.0)
session_idstringNoSession ID for continuity

Returns: { "status": "ok", "markers": [...], "nudges": [...] }


Coordination Tools

agents

List agents registered in the silo.

{}

Parameters:

NameTypeRequiredDescription
silo_idstringNoSilo UUID (defaults to org's primary)

Returns:

{
  "agents": [
    {
      "agent_id": "uuid",
      "role": "assistant",
      "first_seen": "2024-01-01T00:00:00Z",
      "last_seen": "2024-01-15T00:00:00Z",
      "node_count": 42,
      "trust_score": 0.85
    }
  ]
}

introspect

Query metacognitive state of the knowledge graph.

Parameters:

NameTypeRequiredDescription
query_typestringYesvolatility | gaps | provenance | contributions
node_idstringNoRequired for provenance
agent_idstringNoFor contributions (defaults to self)
min_thresholdintNoMin chain length or ask count
limitintNoMax results (default 10)

Query types:

  • volatility: Topics with high supersession churn (unstable knowledge)
  • gaps: Frequently-asked but unanswered queries
  • provenance: Which agents contributed to a belief
  • contributions: Agent contribution stats
{"query_type": "gaps", "min_threshold": 3}

conflicts

List contradictions between nodes.

{
  "status": "unresolved",
  "limit": 10
}

Parameters:

NameTypeRequiredDescription
statusstringNoFilter by resolution status (default: unresolved)
agent_idstringNoFilter to conflicts involving this agent
limitintNoMax results (default 50)

Returns: Array of conflicts with both node contents and agent attributions.


dismiss_conflict

Mark a conflict as not-a-real-conflict.

{
  "conflict_id": "uuid",
  "reason": "Different contexts, not actually contradictory"
}

escalate_conflict

Flag a conflict for human review.

{
  "conflict_id": "uuid",
  "message": "Need domain expert to verify"
}

resolve_conflict

Pick a winner and optionally supersede the loser.

{
  "conflict_id": "uuid",
  "winner_id": "node_uuid",
  "supersede": true
}

Parameters:

NameTypeRequiredDescription
conflict_idstringYesConflict edge ID
winner_idstringYesNode ID of authoritative node
supersedeboolNoMark loser as superseded (default true)

Related Pages

Other pages in the docs that reference this one:

On this page