Labsco
MCP SERVER

Keep an agent's accumulated notes in a store that dedupes new facts against old ones before writing them, searches by meaning as well as keyword, and links what it holds into a graph.

Agent MemoryVerified
Summary
The argument about whether a fact is already known happens in the store, not in your prompt.

Most memory servers give you a write tool and leave deduplication to whoever is calling it. Here each incoming fact is classified against what is already there before it lands, supersession detection goes back over the store to find notes that have quietly replaced each other, and the duplicate finder surfaces the pairs that slipped through.

What it is

A memory store for agents, kept in SQLite on your machine with optional sync to S3, R2 or Cloudflare D1: typed writes, hybrid search, document fragmentation and a cross-reference graph over everything stored.

What you get
  • Typed writes rather than one flat note stream: plain memories, TODOs with a priority, issues with a severity and an affected component, and section headers that stay out of the graph and out of duplicate detection
  • Fact absorption that looks before it writes — each new fact is matched against similar memories and classified as duplicate, update, contradiction, related or new, with related facts consolidated into one richer memory
  • Markdown documents stored as a root memory plus typed fragments — claims, plan items, references, risks, section chunks — each searchable on its own while the document stays retrievable whole, by key and version
  • Semantic search over embeddings and a hybrid search that fuses keyword and vector hits with Reciprocal Rank Fusion, both returning previews by default so full content is fetched only when asked for
  • An explicit graph: automatic cross-references, typed links such as references, implements, supersedes and extends, cluster detection, and duplicate pairs surfaced by similarity
  • Upkeep tools for a store that has been running a while — supersession detection, tag allowlist validation, tag hierarchies, merges, importance boosts, JSON export and import, and an interactive HTML knowledge graph
  • A topic digest that returns search hits, supersession lineage, related ids and matching TODO and issue memories together, with the source ids always included
  • An integrity check that reports which memories have broken embeddings, and rebuild tools for the embeddings and the cross-reference graph
Requirements

Python with uv. The database is a local SQLite file by default, and MEMORA_STORAGE_URI points it at S3, R2 or D1 instead, with optional encryption and compression before upload. Embeddings are the part to get right: the default backend is OpenAI, so it wants a key, with sentence-transformers and TF-IDF as the local alternatives. Set MEMORA_EMBEDDING_STRICT=1 — without it a broken embedding endpoint keeps answering while every vector quietly becomes a keyword bag, which is how one store degraded 756 memories before anyone noticed. Deduplication and chat can call an LLM to make their judgement. The rebuild tools carry a cooldown between runs, so this is a store you curate on a schedule rather than reindex on a whim. MIT.

Setup effort

One command plus a key — pip install memora-mcp, then supply credentials