memory-as-history
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MEMORY_AS_HISTORY_DB | No | Sets the database path. Default is ~/.memory-as-history/memory.db, created automatically. | ~/.memory-as-history/memory.db |
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 | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| rememberA | Store a new working memory. Working memories are ordinary recollections that have not yet gone through consolidation — they can still be recalled, but they compete on recency, not on declared importance. Optional event_at records a known occurrence time with timezone, separately from capture time; leave unknown dates null. session_id scopes one session, and session_position is its unique nonnegative integer turn position. Optional material_type separates document/utterance/observation/summary from provenance tiers. origin_id identifies a shared original across reposts; leave it null if unknown. capture_context states the known collection scope, such as "published meeting summary only". None of these establish truth.
Set
|
| flag_sensitiveA | Retroactively mark an existing memory as security-sensitive (identity /
permissions / standing-instruction content). Unsupported anchors/canon are
removed and dependent narratives invalidated atomically. Once flagged, |
| promoteA | Consolidate a working memory into long-term memory. This is a
deliberate, auditable act — not a similarity/importance score threshold.
|
| pinA | Mark a memory as an anchor: a 'site of memory' that is always surfaced
on recall and never competes with ordinary memories on recency or
relevance. The memory must already be consolidated (call If the memory is flagged |
| unpinA | Remove anchor status, preserving the memory and auditing the outcome.
Supply a meaningful reason. Omitted/None reasons remain compatible with
old clients and are explicitly marked as missing in the audit log.
Already-unpinned/unknown IDs are audited as unpin_noop. |
| corroborateA | Record that an independent additional source corroborates this memory.
An 'archive' (single-source, raw) memory is automatically upgraded to
'testimony' only after a distinct source corroborates the recorded origin.
Unknown/blank origins require two distinct corroborating sources. Source
labels are trimmed, case-sensitive identifiers supplied by the caller;
repeated turns from one speaker or copies of a document are one source.
Every record is audited, including duplicates. Has no upgrade effect on
'interpretation'-tier memories — use |
| provenanceA | Inspect recorded sources and the independent-corroboration gate. Read-only: historical testimony is preserved, with a warning if recorded support is insufficient. Source labels do not authenticate real-world independence; use stable identifiers backed by actual evidence. |
| due_for_consolidationA | Consolidation queue: working-tier memories not yet promoted, oldest-first. Call this at session end (or start) — a fixed, ceremonial moment — and promote what has proven durable, rather than relying on in-conversation judgment alone (which is measurably unreliable). Suggested flow: recall the queue, evaluate each item's lasting importance, promote the durable ones with a reason, let the rest stay working-tier (they are not lost — they remain recallable). |
| forgetA | Deliberately forget a memory. Not a hard delete: content is retained
as a tombstone but disappears from |
| restoreA | Reverse a forgetting decision. Always possible, since forgetting is
a tombstone, not a delete. |
| narrateA | Submit the current narrative synthesis: a coherent account of who the
user is / where the relationship stands, composed from the discrete
memories returned by scope defaults to global; each scope has an independent version chain. perspective states viewpoint/criteria; coverage states known material limits. claim_ids must reference usable adopted judgments; link_ids must reference active relationships. Their material is checked too. Changes invalidate this account; a relationship asserts an interpretation, not proven causality. Call this periodically (e.g. every several sessions, or when enough new
memories have accumulated that the old narrative feels stale) rather
than on every turn — narrating too often defeats the purpose of having
a stable story. The previous narrative is not deleted, only marked
superseded, so the narrative itself has a history. |
| current_narrativeA | Inspect the latest stored narrative, including stale text, or null if none exists. Check review_status and source_issues before using the account as current evidence. Default recall withholds stale narrative text. |
| recallA | Recall memories within a shared limit: anchors first (always in full,
even above the limit), then distinct active canon memories, then ordinary
memories. Query ranks ordinary memories by lexical relevance; without
a query, consolidated memories come first, then working, newest first.
Also returns
|
| searchA | Find paraphrased evidence with an optional local multilingual encoder. mode='semantic' uses cosine similarity; 'hybrid' combines semantic and lexical ranks. Preserves recall's anchor/canon priorities, global limit, frame filter, forgetting and narrative-review rules. Ranking cannot promote evidence. Requires the semantic extra and explicit model download beforehand; search itself never downloads models or uses hosted inference. |
| audit_logB | Return the full audit trail — every promote/pin/corroborate/review action, with its reason and timestamp. Every accountable decision about what became history, and why. |
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 15 tools
Every tool has a clearly distinct purpose: storage (remember), consolidation (promote), anchoring (pin/unpin), forgetting (forget/restore), retrieval (recall/search), narrative (narrate/current_narrative), evidence (corroborate/provenance), audit (audit_log), and queue (due_for_consolidation). No two tools overlap in function; even recall and search are differentiated by semantic mode.
All tool names follow a consistent lowercase snake_case pattern, using descriptive verbs or verb-noun pairs (e.g., flag_sensitive, current_narrative, due_for_consolidation). The style is uniform and predictable, with no camelCase or mixed conventions.
15 tools is well-scoped for a memory management system covering lifecycle, evidence, narrative, and audit. Each tool serves a distinct function, and the count feels justified given the domain's complexity without being excessive.
The toolset has significant gaps: several tools referenced in descriptions are missing from the server (review(), mark_conflict(), list_anchors(), review_narrative()). There is also no update/edit operation for existing memories, and the lack of these referenced tools could cause agent failures when following the documented workflows.