Skip to main content
Eight tools, split by what they touch: memories, conflicts, and the graph vocabulary. The descriptions the calling agent sees are written so it knows when to reach for each one; this page is the human-readable version, with the flows between tools spelled out.

save_memory

Save a durable memory the user owns. memloom dedupes automatically and flags contradictions instead of overwriting. The response says what happened: saved, merged into an existing memory, or saved WITH a conflict id that the user should resolve. A conflict response is the start of the conflict flow below.

recall_memory

Recall memories AND ingested context documents by meaning, ranked by hybrid retrieval (semantic, exact keyword, entity). Exact identifiers like file paths, config keys, or error codes make excellent queries. Each result carries a title, the passage, when it was saved, a similarity score, provenance for document chunks (file, section, PDF page), and an id. Only active memories are returned; superseded versions never appear. Very long passages are truncated at 8k characters with a marker naming the escape hatch:

read_passage

The full text of one recall result, by the id shown with it. Exists for exactly one flow: a recall result ended with the truncation marker and the answer may be in the cut part. Works for memories and document chunks alike. A markdown chunk is a whole heading section (up to 16k characters), so the tail of a big section is always reachable even though recall injects at most 8k.

memory_history

Show how a memory changed over time: its full version chain, newest first, with the current version and every superseded one. Read-only: editing memories is a human action in the viewer or CLI.

list_conflicts

List pending memory conflicts: contradictions the user has not resolved yet. No parameters. Each entry shows the conflict id, the new memory, and the existing memories it clashes with.

resolve_conflict

Resolve a conflict the way the user decided. The agent relays the choice; it should not decide on its own. Every resolution is reversible. The full conflict flow: save_memory reports “CONTRADICTS an existing memory” with a conflict id, list_conflicts shows what clashes, the user picks an action, and resolve_conflict applies it.

set_schema_entry_status

Enable or disable a graph schema entry (an entity type or predicate). A disabled entry stops being used by future extraction, but entities already extracted under it stay in the graph.

delete_schema_entry

Permanently remove a DISABLED user-defined vocabulary entry from the graph schema. Two guard rails, and the response explains any refusal instead of erroring: built-in entries can only be disabled, never deleted, and an active entry must be disabled first with set_schema_entry_status. Entities already extracted under the deleted type stay in the graph.