Memory & Knowledge

Store decisions, learnings, and facts that persist across sessions and agents.

Knowledge Atoms

An atom is the atomic unit of knowledge in Momental. Every atom has a type that encodes its epistemic role:

This typing matters for search: momental_node_search({ query: "auth decisions", nodeType: "DECISION" }) returns only decisions, not all mentions of auth.

Creating Atoms

momental_node_create

Creates a knowledge atom. Pass status: "ACTIVE" to make it immediately searchable. The default status is DRAFT, which is excluded from all search results until published.

ParameterTypeRequiredDescription
statementstringYesThe knowledge claim - one clear sentence
nodeTypestringYesDATA, LEARNING, DECISION, or PRINCIPLE
voiceTypestringNoDECIDED, PROPOSED, KNOWN, BELIEVED, ASSUMED, OBSERVED, or RECEIVED
statusstringNoDRAFT (default) or ACTIVE (immediately searchable)
sourceQuotestringNoSupporting context, evidence, or reasoning (plain prose only)
domainstringNoTopic area (e.g., "engineering", "product", "sales")
tagsstring[]NoKeyword tags for filtering
treeNodeIdstring (UUID)NoLink to a strategy node (task, EPIC, etc.)
// Save a learning from a failed experiment
await momental_node_create({
  statement: "Our Redis cache hit rate drops below 20% when TTL is under 60 seconds",
  nodeType: "LEARNING",
  status: "ACTIVE",
  domain: "engineering",
  sourceQuote: "Measured during load testing at 2,000 RPS. Keys evicted too fast to be useful.",
  tags: ["redis", "caching", "performance"]
});

// Record a decision with full rationale
await momental_node_create({
  statement: "We use edge caching (Cloudflare) for public API responses, not Redis",
  nodeType: "DECISION",
  status: "ACTIVE",
  domain: "infrastructure",
  sourceQuote: "Redis adds operational complexity for a small team. Cloudflare cache achieves the same latency goals for our public endpoints without a stateful dependency."
});

Searching Knowledge

momental_node_search

Searches atoms using semantic similarity. Returns atoms ranked by relevance to your query. Excludes DRAFT atoms by default - only searches ACTIVE atoms.

ParameterTypeRequiredDescription
querystringYesNatural language search query
nodeTypestringNoFilter by atom type: DATA, LEARNING, DECISION, or PRINCIPLE
statusstringNoFilter by status (default: ACTIVE only)
limitnumberNoMax results (default: 10, max: 100)
includestring[]NoAdditional data: ['relationships'] or ['relationships', 'conflicts']
// Find all decisions about authentication
const decisions = await momental_node_search({
  query: "authentication and authorization decisions",
  nodeType: "DECISION",
  limit: 5
});

// Find learnings related to performance
const learnings = await momental_node_search({
  query: "what have we learned about API latency and caching",
  nodeType: "LEARNING",
  domain: "engineering"
});

momental_browse_knowledge

Browse atoms without a search query - useful for reviewing recent additions or scanning a domain.

ParameterTypeRequiredDescription
atomTypestringNoFilter by atom type: DATA, LEARNING, DECISION, or PRINCIPLE
domainstringNoFilter by domain (partial match)
timeRangestringNotoday, this_week, last_week, this_month, last_30_days, etc.
voiceSourcestringNoFilter by origin: SELF_TEAM, SELF_LEADERSHIP, COMPETITOR, CUSTOMER, or MARKET
sincestringNoISO 8601 date - return atoms created after this date
limitnumberNoMax results (default: 20)

Linking Atoms

momental_node_link

Creates a directed relationship between two atoms. This is how you build a knowledge graph - not just isolated facts, but connected understanding.

ParameterTypeRequiredDescription
sourceNodeIdstring (UUID)YesSource atom ID
targetNodeIdstring (UUID)YesTarget atom ID
linkTypestringYesDERIVES_FROM, SUPPORTS, CONTRADICTS, SUPERSEDES, or LINKED_TO
reasonstringNoOptional reason for the link
upsertbooleanNoIf true, succeed silently if link already exists (default: false)

Persistent Agent Memory

momental_remember

Saves an observation to the agent's persistent memory. Use for corrections and preferences that should apply to every future session. Two tiers:

ParameterTypeRequiredDescription
contentstringYesThe observation to store
typestringNocorrection, preference, fact, or insight

momental_recall

Retrieves persistent agent memory. Returns pinned observations (always), plus active memories ranked by recency and relevance. Call at session start alongside momental_whoami.

momental_context

Session-start primer. Returns all pinned observations unconditionally - corrections and preferences your agent should always follow. No parameters.

Document Ingestion

Use the document tools to bulk-ingest knowledge from existing text - design docs, meeting notes, post-mortems, API specs. Momental extracts atoms automatically (~1–2 minutes per document).

momental_document_add

Submit a document for extraction. Returns a documentId to check status.

ParameterTypeRequiredDescription
contentstringYesThe document text (markdown, plain text, or HTML)
titlestringNoDocument title for identification
domainstringNoDomain to assign to extracted atoms

momental_document_publish

Promotes extracted atoms from DRAFT to ACTIVE, making them searchable. After calling momental_document_add and waiting for extraction, call this to publish.

ParameterTypeRequiredDescription
documentIdstring (UUID)YesThe document ID from momental_document_add
// Ingest a post-mortem document
const { documentId } = await momental_document_add({
  title: "Auth outage post-mortem 2026-03-15",
  content: postMortemText,
  domain: "engineering"
});

// Wait for extraction (~1-2 minutes), then check
const status = await momental_document_status({ documentId });
console.log(status.atomCount); // How many atoms were extracted

// Publish when ready
await momental_document_publish({ documentId });
// Extracted atoms are now searchable by all agents

Quick Reference

ToolWhat it does
momental_node_createCreate a knowledge atom (DATA/LEARNING/DECISION/PRINCIPLE)
momental_node_searchSemantic search across all active atoms
momental_browse_knowledgeBrowse atoms by type, domain, or recency
momental_node_readRead a single atom's full details and relationships
momental_node_updateUpdate statement, description, tags, or status
momental_node_linkCreate a relationship between two atoms
momental_node_link_batchCreate up to 50 relationships in one call
momental_node_listList atoms (bypasses embedding index - guaranteed complete)
momental_statsGet counts, bond coverage, and orphan count
momental_rememberPersist a correction or preference across sessions
momental_recallRetrieve persistent agent memory
momental_contextGet all pinned memory (call at session start)
momental_document_addSubmit a document for atom extraction
momental_document_statusCheck extraction progress
momental_document_publishPublish extracted atoms (DRAFT → ACTIVE)
momental_document_listList all uploaded documents