memorygraph
MemoryGraph
你的智能体找到了一条相关记忆。MemoryGraph 会告诉它这条记忆是否仍然为真。
MemoryGraph 是一个面向 AI 智能体信念的本地优先证据与修订层。它保留 源观测,将声明表示为时间图,并解释某条声明为何是当前的、历史的或存在争议的。
MVP 状态
确定性 MVP 正在运行。权威架构从
00-architecture-index.md 开始;已实现的内核涵盖:
不可变的源观测。
带精确证据跨度的类型化实体节点和原子声明边。
双时态的当前与历史信念查询。
显式的确认、矛盾和原子取代。
recall、history和explain命令。严格的 bank 隔离和仅追加的变更事件日志。
一个与提供商无关的 dream 提案验证器,带有证据、水印、声明版本、 幂等性、置信度、挑战者和审查门。
持久的 dream 运行、任务、提案、审查项、租约、事件水印和原子 提案提交。
一个确定性元数据提供商,在不将源数据发送到外部模型的情况下完成整个 dream 周期。
MemoryRotBench 夹具、基线、检索评分和引擎集成。
混合 FTS/向量召回,带有无依赖的本地基线和可替换的嵌入器。
检索时对不受信任的指令类内容的隔离。
可崩溃恢复的 Dream 工作进程,带有租约、心跳续约、重试和可重放恢复。
一个兼容 OpenAI 的结构化输出提供商,只能提出候选提案。
一个五工具 STDIO MCP 服务器:
recall、record、explain、correct和forget。用户批准的 Codex JSONL 摄取和项目范围的 Codex 安装器。
一个确定性的、兼容 Obsidian 的 Markdown 审查投影。
一流的程序性情节,用于有界复用成功和失败的编码尝试。
可复现的无记忆、Markdown、BM25、扁平上下文和外部/Graphify 基准适配器。
跨平台 CI、包验证和可操作的
doctor诊断。
真实引擎目前通过全部 12 个公共 MemoryRotBench 查询和全部七个生产 混沌契约。在此检查点,仓库测试套件有 196 个通过的测试。在第一个 带指纹的公共矩阵中,最强的简单基线通过 7/12,而 MemoryGraph 通过 12/12。
Related MCP server: korely
快速开始
uv sync
uv run memorygraph init --database /tmp/memorygraph.db
uv run memorygraph doctor --database /tmp/memorygraph.db
uv run memorygraph bank create personal:founder --database /tmp/memorygraph.db
uv run memorygraph dogfood bootstrap --database /tmp/memorygraph.db
uv run memorygraph predicate define works_at \
--bank personal:founder --cardinality one --volatility volatile \
--database /tmp/memorygraph.db记录证据,然后将其转化为声明:
OBSERVATION_ID=$(uv run memorygraph observe "Abrar works at Acme." \
--bank personal:founder --source-key event:acme \
--database /tmp/memorygraph.db)
CLAIM_ID=$(uv run memorygraph claim assert Abrar works_at Acme \
--bank personal:founder --observation "$OBSERVATION_ID" \
--database /tmp/memorygraph.db)Python API 还暴露了 confirm_claim、contradict_claim、supersede_claim、
recall、history 和 explain,供嵌入式应用使用。
记录一次编码尝试,以便未来的智能体可以复用成功的策略——或避免已知 失败——而不假装它普遍适用:
memorygraph record-attempt "Run migrations before starting the worker" \
--bank project:my-app --source-key attempt:migrate-worker \
--task "start durable worker" --outcome success \
--applicability-json '{"database":"sqlite"}'运行 dream 周期
嵌入式提供商从 metadata.memorygraph 读取类型化候选,提出图
变更,验证证据和时间前提,然后在一个事务中提交符合条件的提案。
模型提供商实现相同的仅候选协议,并且永远不会获得直接的数据库写入路径。
PYTHONPATH=src:. uv run python examples/run_dream_cycle.py \
--database /tmp/memorygraph-dream.db
uv run memorygraph dream status RUN_ID \
--bank personal:founder --database /tmp/memorygraph-dream.db
uv run memorygraph dream reviews \
--bank personal:founder --database /tmp/memorygraph-dream.db
uv run memorygraph dream rollback RUN_ID \
--bank personal:founder --database /tmp/memorygraph-dream.db对于 CLI 摄取,使用 observe --metadata-file FILE.json 传递候选信封,然后
运行 memorygraph dream run --bank BANK。--mode dry_run 验证并持久化提案,但
不消耗观测或更改声明。
对于持久执行,排队工作并单独运行工作进程:
uv run memorygraph dream queue \
--bank personal:founder --database /tmp/memorygraph-dream.db
uv run memorygraph dream worker \
--bank personal:founder --database /tmp/memorygraph-dream.db要使用兼容 OpenAI 的 Responses 端点,请设置配置的密钥变量,并将 模型传递给队列和工作进程。提供商输出被解析为严格的结构化数据,并且仍然 通过相同的确定性证据和提交门。
export OPENAI_API_KEY=...
uv run memorygraph dream queue --bank personal:founder \
--provider-model YOUR_MODEL --database /tmp/memorygraph-dream.db
uv run memorygraph dream worker --bank personal:founder \
--provider-model YOUR_MODEL --database /tmp/memorygraph-dream.db连接 Codex
安装包,初始化项目 bank,并添加项目范围的 MCP 配置:
uv run memorygraph init
uv run memorygraph bank create project:my-app
uv run memorygraph install-codex --project .
uv run memorygraph probe-codex --project .安装器在 .codex/config.toml 中创建或修复 [mcp_servers.memorygraph] 块,
将其指向当前 Python 环境的 memorygraph.mcp STDIO 模块,并配置 Codex
以提示写入。它不会修改全局 Codex 配置。五个 MCP 操作
需要显式的 bank 范围。
probe-codex 验证项目配置并演练真实的 MCP 子进程生命周期。使用
--project-database 如果你希望探针命中配置的项目数据库而不是
临时的一次性探针数据库。
导入会话内容是选择加入的。每个 JSONL 记录必须携带 bank、session_id、turn_id、
role、content 和 approved;默认情况下跳过未批准的记录:
memorygraph ingest-codex approved-session.jsonlDogfood Alpha
官方离线六臂夹具矩阵是:
PYTHONPATH=src:. uv run python examples/run_dogfood_fixture_matrix.py对于真实项目,首先引导操作契约:
uv run memorygraph dogfood bootstrap \
--database .memorygraph/memory.db \
--bank project:my-app \
--workspace my-app夹具矩阵运行这些臂:
no_memorymarkdownmemorygraph_graph_onlymemorygraph_gated_dreammemorygraph_always_dreamgraphify_compatible
它衡量任务通过/失败、有用召回精度、禁止或过时召回泄漏、重复
错误、延迟、令牌估计、工具调用、重试、估计成本字段和 Dream 审查
负载。结果写入 benchmarks/reports/dogfood-offline-mvp.json 和仅追加的
账本 benchmarks/reports/dogfood-offline-mvp.jsonl。
任务通过/失败遵循查询期望;Dream 审查积压仍然是一个单独的、可见的成本。
当前离线夹具结果于 2026-08-22:
memorygraph_always_dream:3/3memorygraph_graph_only:1/3memorygraph_gated_dream:1/3graphify_compatible:1/3markdown:1/3,带有禁止片段泄漏
graphify_compatible 是一个协议适配器,允许外部检索器在相同的
清单、时间界限和评分契约下竞争。这并不是声称此仓库
已经完成了实时的 Graphify 比较。
在 Obsidian 中进行人工审查
生成一个包含当前声明、精确来源、关系和 Dream 审查队列的 Markdown 库:
memorygraph project-obsidian --bank project:my-app \
--output .memorygraph/obsidianMarkdown 是一次性的,由清单管理。SQLite 观测和仅追加事件保持 权威;对生成笔记的编辑永远不会静默地改变记忆。
Dogfood Beta
Beta 在确定性 Alpha 矩阵之上添加了一个实时的、仓库拥有的证据循环。开始 通过引导项目 bank、安装项目范围的 MCP 配置并探测 配置的项目数据库:
memorygraph dogfood bootstrap --database .memorygraph/memory.db \
--bank project:memorygraph --workspace agent-memory-research
memorygraph install-codex --project .
memorygraph probe-codex --project . --project-database --configured-only真实会话仪器化是显式的且仅追加的;MemoryGraph 从不抓取私有 Codex
历史。使用 memorygraph dogfood capture 记录批准的 recall、attempt 和 task 事件,然后运行 make dogfood-live。报告跟踪成功任务、有用召回精度、
禁止召回、重复错误、延迟、令牌、工具调用和重试。完整的操作
契约和事件模式在 13-dogfood-beta.md 中。
运行加速的 Beta 门,无需等待五个有机项目:
make dogfood-beta这运行五个隔离的、时间分离的工作流,针对无记忆、Markdown 和 MemoryGraph,
然后将现有的公共检索和生产混沌套件组合成一个带指纹的通过/失败
报告,位于 benchmarks/reports/dogfood-beta.json。这是加速的确定性
证据,而不是声称有五个持续用户。
为什么用图?
图给智能体提供了可组合的结构:实体是节点,声明如
Abrar --works_at--> Stripe 是类型化边。MemoryGraph 不将边视为永恒
真理。每个声明版本都携带有效时间、系统时间、生命周期、来源和精确
源证据。这就是有用的记忆图和过时事实存储之间的区别。
开发
uv sync --extra dev
uv run pytest
uv run ruff check .
PYTHONPATH=src:. python examples/run_memoryrotbench_memorygraph.py
PYTHONPATH=src:. python examples/run_memoryrotbench_chaos_memorygraph.py
python examples/run_memoryrotbench_baseline_matrix.py
PYTHONPATH=src:. uv run python examples/run_dogfood_fixture_matrix.py预期结果:12/12 公共检索案例和 7/7 生产混沌案例。
矩阵将不可变的、语料库和评估器带指纹的记录追加到
benchmarks/reports/public-baseline-matrix.jsonl。提供 --graphify-command 以运行外部
Graphify 适配器,针对完全相同的可见语料库和评分契约。
下一个产品层
下一个门仍然是现实世界的证明:实时的模型支持的 dogfood 会话、真实的 Graphify 头对头比较,以及设计伙伴在实际编码工作中的使用。全管道删除 残留被审计和报告;任何无法在不重写历史的情况下安全擦除的身份残留 都会被公开而不是隐藏。dream 验证器仍然是每个提供商和工作进程 必须通过的安全腰带。
根据 Apache-2.0 许可。
Available Tools
5 toolscorrectCorrect claimBDestructive
Supersede or retract a current claim with auditable evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| bank | Yes | Bank slug or UUID. | |
| object | No | ||
| excerpt | No | ||
| claim_id | Yes | ||
| known_at | No | ||
| valid_to | No | ||
| operation | Yes | ||
| rationale | No | ||
| workspace | No | Optional workspace label stored on observations. | |
| valid_from | No | ||
| object_kind | No | ||
| object_type | No | ||
| effective_at | No | ||
| observation_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, which covers the mutation aspect. The description adds 'with auditable evidence,' implying that actions are logged or supported by evidence—information not present in annotations. However, it does not elaborate on the nature of the audit trail or what happens to the superseded/retracted claim, so the added value is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, compact sentence conveys the core purpose without wasted words. The action and key qualifier are front-loaded, making it easy to scan. No redundant phrases or unnecessary detail are present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with 14 parameters, a one-line description is severely insufficient. It omits operational context (e.g., what constitutes a 'current claim', how to specify the target, acceptable evidence types, return behavior, or error conditions). Combined with no output schema and low parameter coverage, the description leaves critical gaps that will impede correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With only 14% schema description coverage and 14 parameters, the description carries the burden of explaining key parameters. It does not elaborate on claim_id, operation, rationale, valid_from, valid_to, or other fields. The phrase 'auditable evidence' hints at rationale/excerpt but does not map to any parameter, leaving the agent without semantic guidance for required inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Supersede or retract') and the resource ('a current claim'), and includes the qualifier 'with auditable evidence' that signals a specific audit-trail behavior. It implicitly distinguishes itself from siblings like record (creating new claims) and forget (possibly deletion) by focusing on correction of existing claims.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given on when to use this tool versus alternatives. The description implies correction of existing claims but does not state conditions, prerequisites, or contrast with siblings. An agent must infer usage from the operation names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explainExplain claimBRead-onlyIdempotent
Show a claim's lifecycle, relations, and exact supporting evidence.
| Name | Required | Description | Default |
|---|---|---|---|
| bank | Yes | Bank slug or UUID. | |
| claim_id | Yes | ||
| workspace | No | Optional workspace label stored on observations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds context about the kind of information returned (lifecycle stages, relations, evidence granularity), which goes beyond bare annotations. However, it doesn't describe output format, pagination, or any side effects beyond what annotations imply, so it adds moderate value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. It efficiently conveys the core purpose without redundancy, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description doesn't explain the return structure or how the 'explain' information is presented (e.g., nested JSON, human-readable text). It also doesn't mention any constraints like required permissions or workspace handling. For a tool that likely returns complex claim details, this is a notable gap, though the basic purpose is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%: 'bank' and 'workspace' have descriptions, but 'claim_id' does not. The tool description doesn't clarify any parameters further, especially the undocumented claim_id. It adds no meaning beyond what the schema already provides, leaving the unidentified parameter ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'show' and the resource 'claim' with specific aspects: lifecycle, relations, and exact supporting evidence. This distinguishes it from siblings like recall (retrieve), record (create), correct (modify), and forget (delete) by focusing on detailed visualization rather than simple retrieval or mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, nor any conditions for exclusion. It doesn't mention whether it's preferred for debugging, auditing, or investigating claim states, leaving the agent to infer from the name and siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forgetForget observationADestructiveIdempotent
Privacy-delete one source observation and propagate direct retractions.
| Name | Required | Description | Default |
|---|---|---|---|
| bank | Yes | Bank slug or UUID. | |
| workspace | No | Optional workspace label stored on observations. | |
| observation_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, and the description adds value by explaining the 'privacy-delete' nature (implying data sanitization) and the propagation of retractions. This goes beyond the bare annotation flags and gives a clearer picture of side effects, though it doesn't detail the propagation mechanism itself.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the core action ('Privacy-delete') and immediately follows with the key side-effect. There is zero fluff; every word carries functional meaning, making it an exemplary concise definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple deletion tool with 3 parameters and no output schema, the description covers the essential action and side effects. It does not mention return values, error handling, or prerequisites, but given the low complexity and annotations covering idempotency and destructiveness, it is adequately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, meaning two of three parameters have descriptions in the schema. The tool description does not add any semantic detail about parameters (e.g., what 'bank' or 'observation_id' specifically mean in this context). Since coverage is not high (>80%) but not low (<50%), the baseline 3 applies, and the description makes no attempt to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Privacy-delete') and resource ('one source observation') and adds a distinguishing side-effect ('propagate direct retractions'). This clearly sets it apart from siblings like 'record' or 'explain', making the tool's purpose instantly recognizable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given for when to use this tool versus alternatives. It does not mention conditions, exclusions, or scenarios where a different sibling (e.g., 'correct') would be more appropriate. The usage context is entirely left to the agent to infer.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recallRecall memoryCRead-onlyIdempotent
Retrieve bounded source observations relevant to the current task.
| Name | Required | Description | Default |
|---|---|---|---|
| bank | Yes | Bank slug or UUID. | |
| as_of | No | ||
| limit | No | ||
| query | Yes | ||
| workspace | No | Optional workspace label stored on observations. | |
| max_tokens | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description need not repeat that. It adds the concepts of 'bounded' and relevance to the current task, which are minor behavioral cues, but it does not disclose retrieval mechanism, result format, or error handling. The added value is modest.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words and the primary action is front-loaded. It is efficient, though its brevity may contribute to the lack of parameter and usage clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 6 parameters (2 required), low schema coverage, and no output schema, the description is insufficient. It does not explain how to construct the query, what 'limit' or 'max_tokens' control, or what the response contains. An agent would need to consult other sources to call this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33% (only bank and workspace have descriptions). The tool description neither explains the remaining parameters (query, as_of, limit, max_tokens) nor provides any parameter-level guidance. The phrase 'bounded source observations' hints at limits but does not map to specific parameters, failing to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Retrieve') and a resource ('bounded source observations'), which distinguishes it from sibling tools like 'record' and 'forget'. However, it does not explicitly mention the 'bank' parameter or clarify the meaning of 'bounded', leaving some ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'explain' or 'correct'. The only contextual hint is 'relevant to the current task', which is vague and does not explain prerequisites, exclusions, or when to prefer recall over other memory operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recordRecord observationBIdempotent
Store one user-approved raw observation without inferring claims. Set kind to attempt to record procedural memory; content is the strategy and metadata must include task_key and outcome, with optional failure, applicability, and environment.
| Name | Required | Description | Default |
|---|---|---|---|
| bank | Yes | Bank slug or UUID. | |
| kind | No | ||
| content | Yes | ||
| actor_id | No | ||
| metadata | No | ||
| workspace | No | Optional workspace label stored on observations. | |
| actor_type | No | ||
| source_key | Yes | ||
| observed_at | No | ||
| sensitivity | No | ||
| trust_class | No | ||
| effective_at | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=false, idempotentHint=true, and destructiveHint=false. The description adds context about user approval and non-inference of claims, which are beyond the annotations. But it doesn't disclose other behaviors like error handling, rate limits, or side effects beyond the basic write operation, so it adds some value but not a lot.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with zero fluff. It front-loads the core purpose, then gives a focused, actionable instruction for the most complex parameter combination. Every word earns its place, and the layout makes it easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 12 parameters, nested objects, and no output schema, the description is insufficient. It only addresses the 'attempt' kind and does not cover other potential uses or explain most parameters. There is no mention of return values, error cases, or examples. While annotations cover idempotency and destruction, the description leaves too much to inference for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 17%, so the description carries considerable burden. It clarifies kind, content, and metadata specifically for the 'attempt' case, which is valuable. However, it leaves the majority of the 12 parameters (e.g., actor_id, actor_type, sensitivity, trust_class) unexplained, and provides no general semantics for other kinds. It partially compensates for the low coverage but not fully.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Store') and resource ('raw observation'), with a qualifier ('user-approved') and a constraint ('without inferring claims'). It is unambiguous, though it doesn't explicitly distinguish from sibling tools like 'explain' or 'recall', which prevents a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance for a specific scenario (setting kind to 'attempt') and outlines required metadata fields. However, it lacks any guidance on when this tool should be used compared to siblings, no exclusions or alternatives are mentioned, so it's partially helpful but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
correct - First observed
explain - First observed
forget - First observed
recall - First observed
record
TDQS
Scored across 5 tools
Each tool targets a distinct operation: explain (query graph), recall (retrieve observations), record (store), correct (update claims), forget (delete). No overlapping purposes, and descriptions clearly separate them.
All tool names are single lowercase verbs, creating a uniform and predictable pattern. This consistency makes it easy to infer the action each tool performs.
Five tools is well-scoped for a memory graph server, covering core operations without redundancy. Each tool addresses a necessary part of the memory lifecycle.
The set covers record, recall, correct, forget, and explain, which covers full CRUD-like operations on claims and observations. Minor gaps like explicit listing or bulk operations exist but are not critical for core usage.
Maintenance
Related MCP Connectors
Evidence-grounded, graph-connected, correctable memory for agents.
Long-term memory for AI agents: bitemporal fact ledger, contradiction detection, explainability.
Long-term memory for AI agents: learns what is true about each person and answers with sources.
Memory for AI agents that knows what is still true. Typed bi-temporal facts, EU-hosted.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI agents to maintain long-term, cross-session memory by extracting facts, reconciling state conflicts, and retrieving relevant memories via vector search.4MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to store and retrieve typed facts with bi-temporal validity, supersede outdated information, and query what was true as of any past date.MIT
- AlicenseNot gradedqualityAmaintenanceProvides AI agents a shared long-term memory layer with evidence-backed, auditable claims, enabling persistent, explainable, and conflict-aware recall across sessions.99 PyPI7MIT
- AlicenseNot gradedqualityBmaintenanceProvides AI agents with long-term memory that tracks temporal validity and corrections, enabling context-aware retrieval of past facts via MCP tools.MIT