Skip to main content
Glama

Perseus Vault

为AI代理提供持久、加密的记忆。一个Rust二进制文件,一个文件,无需云服务。

构建与测试 许可证: MIT 发布 Glama MCP 市场 LangGraph CrewAI AutoGen

已发布在 官方 MCP 注册表 · Glama · mcpservers.org · Lulu MCPs · Docker (GHCR)

为你的代理提供跨会话持久化的记忆,让它们不再重复推导已经学到的知识,也不再重复过去的错误。混合召回(BM25 + 密集 + RRF)、双时态历史记录,以及静态 AES-256-GCM 加密,以 168 个规范的 MCP 工具 形式暴露,可与任何主机配合使用。旧的 mimir_*/mneme_* 别名已在 2026-27 主要版本中移除,不单独计数。在 LongMemEval 官方测试工具上达到 73.8%(对比 Zep 63.8%,Mem0 49.0%)。 一个二进制文件。一个文件。无需 Docker。无需 Postgres。无需云服务。 本地优先,可离线部署,MIT 许可证。

一行安装

curl -sSf https://raw.githubusercontent.com/Perseus-Computing-LLC/perseus-vault/main/scripts/install.sh | sh

就这样。Perseus Vault 已安装到 ~/.local/bin/perseus-vault。启动它:

perseus-vault serve --db ~/.perseus-vault/data/perseus-vault.db

默认安装会自动启用加密。 首次运行会创建 ~/.perseus-vault/secret.key,权限仅限所有者,并生成一个加密数据库的 canary 文件。请备份该密钥:它无法恢复。显式的 --encryption-key 路径仍然支持,现有的明文数据库会保留以便通过 perseus-vault init --rekey 迁移。使用 doctor 检查实际的磁盘状态。

macOS 注意(Apple Silicon)。 新构建或复制的二进制文件在首次运行时会被操作系统二进制策略 SIGKILL(输出 Killed: 9,无其他输出)——即使没有隔离属性。一行安装程序和 bootstrap.sh 从源码构建安装程序会为你临时代码签名 Perseus Vault。如果你自己构建二进制文件,请在每次重新构建后签名一次:

cargo build --release
cp target/release/perseus-vault ~/.local/bin/perseus-vault
codesign --force --sign - ~/.local/bin/perseus-vault   # required on Apple Silicon; fixes "Killed: 9"

--force 会重新签名已签名的二进制文件(每次重新构建后需要);该步骤在 Intel macOS 上无害,在 Linux/Windows 上不需要。

然后通过一条命令将你的 MCP 客户端——以及完整的召回/捕获循环——连接起来:

perseus-vault install-client --hooks --rules

这会自动检测 Claude Code / Codex / Cursor(传递 --client <name> 用于 claude-desktop、hermes、windsurf、vscode、zed 或 generic;--all-detected 会连接所有检测到的客户端),将 MCP 服务器注册合并到客户端的配置中而不破坏任何内容(会先写入 .bak-perseus 备份),将所有客户端指向一个共享的记忆数据库,注册会话生命周期钩子(SessionStart 时注入召回,会话结束时进行清理——参见 docs/lifecycle-hooks.md 契约),并将记忆使用规则追加到 CLAUDE.md/AGENTS.md。重新运行是无害的;添加 --dry-run 可以预览它将触及的所有文件。

或者手动连接任何 MCP 主机(Claude Desktop、Cursor、Hermes Agent、Perseus 等):

{
  "mcpServers": {
    "perseus-vault": {
      "command": "perseus-vault",
      "args": ["serve", "--db", "~/.perseus-vault/data/perseus-vault.db"]
    }
  }
}

Related MCP server: GroundMemory

为代理:通过 MCP 连接

当主要消费者是代理时,接口是 MCP——代理通过其 MCP 客户端采用 Vault,除了运行服务器本身外,无需每台机器安装 CLI:

# 1. Run the server (one line)
perseus-vault serve --db ~/.perseus-vault/data/perseus-vault.db &

# 2. Register it in the agent's MCP client config
#    { "mcpServers": { "perseus-vault": {
#        "command": "perseus-vault",
#        "args": ["serve", "--db", "~/.perseus-vault/data/perseus-vault.db"] } } }

# 3. Verify the agent-facing surface
perseus-vault doctor

perseus-vault install-client --hooks --rules 通过一条命令为 Claude Code / Codex / Cursor / Hermes 连接整个召回/捕获循环。关于面向代理的能力映射——哪个工具负责哪个工作,以及规划边界模式——请参见 docs/integration/agent-adoption.md。

30 秒快速入门

# Start Perseus Vault
perseus-vault serve --db memory.db &
sleep 1

# Remember a fact (via MCP JSON-RPC on stdio)
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"perseus_vault_remember","arguments":{"category":"demo","key":"hello","body_json":"{\"text\":\"Hello from Perseus Vault!\"}"}}}' | perseus-vault serve --db memory.db

# Search for it
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"perseus_vault_recall","arguments":{"query":"Hello"}}}' | perseus-vault serve --db memory.db

记忆模型与操作边界

Perseus Vault 保持三个层面清晰分离:

  • 隐式工作上下文 是主机的当前提示、对话记录以及客户端选择注入的任何上下文块。它是临时的,归主机所有;仅仅因为 Vault 返回了它,它不会被持久化。

  • 显式持久记忆 是通过显式的 perseus_vault_remember、perseus_vault_capture、write 或 capture 操作写入的。Vault 服务器拥有 SQLite 记录、历史、日志、衰减、归档和清理生命周期。

  • 派生投影 包括合并或合成的记录以及导出的 Markdown。它们带有来源信息,但不能替代持久的源记录,可能需要单独清理。

perseus-vault prepare 和 perseus_vault_context 读取持久记录以生成一个有限的、与任务相关的活动工作上下文。这是一个滚动快照,不是后台写入,也不承诺客户端会保留它:当任务变化时刷新它,并且不要将提示文本视为持久记忆,除非显式的 capture/write 操作成功。以召回为主的输出有预算限制(默认 1500 字符,大窗口主机为 6000,或显式的 max_context_chars);always_on 集合上限为五个。参见 保留与上下文语义。

生命周期钩子和客户端安装程序是可选的编排。它们请求服务器拥有的召回、捕获、维护和刷新工作;它们不会成为第二个存储或改变保留策略。如果服务器或钩子不可用,继续任务而不注入记忆,并标明降级状态。主机集成可以有显式配置的本地回退,但该回退必须标记为仅本地,并且不能呈现为持久的 Vault 召回;失败的显式写入绝不能报告为已持久化。关于升级/恢复步骤,请使用 升级与迁移手册。

与每个 MCP 客户端兼容

Perseus Vault 是一个标准的 MCP stdio 服务器——相同的 perseus-vault serve 命令在任何地方都能工作。运行 perseus-vault doctor 验证你的安装,并在本地打印此矩阵。

客户端

状态

配置

Claude Desktop

✅

claude_desktop_config.json

Claude Code / Hermes

✅

.mcp.json / config.yaml

Cursor

✅

.cursor/mcp.json

Windsurf

✅

mcp_config.json

VS Code + Continue.dev

✅

config.json

Zed

✅

settings.json

Codex CLI

✅

~/.codex/config.toml

每个客户端的复制粘贴配置片段:docs/clients/。

然后将 召回 → 工作 → 捕获 → 合并 循环连接到客户端的会话事件(Claude Code、Codex 和 Cursor 的 SessionStart/Stop 钩子,以及可移植的 AGENTS.md 回退):docs/lifecycle-hooks.md。

与记忆清洗器(CoalWash)和运行时输出压缩器(Noisegate)组合,实现端到端的上下文预算控制:docs/integration/context-budget-stack.md。

审计 Vault 记住了什么、来自哪里、以及由谁授权:docs/evidence-chain-guidance.md——证据链、写入时来源标签,以及持久记忆的持续认证。

记忆库(每个客户端隔离,一个配置文件)

代理使用相同剧本运行 50 个客户端?不要复制配置文件——为每个项目指定记忆库,并保持一个 Hermes 配置文件、一个 Vault 和一个共享技能库:

# .hermes.md
memory_bank: acme-seo            # name → deterministic workspace hash
memory_bank_workspace: <64-hex>  # optional explicit workspace override

Hermes 记忆提供者(hermes plugins install Perseus-Computing-LLC/hermes-plugin-perseus-vault)在每个会话中解析一次库,并将每个 Vault 读写操作——预取召回、perseus_recall / perseus_remember / perseus_forget、会话结束捕获——限定到专用工作空间。库名称确定性地映射(sha256("memory-bank:" + name)),因此指向相同名称的每个实例都寻址到相同的工作空间,无需维护注册表。工作空间在服务器上是第一类对象:限定范围的维护、库之间的去重隔离,以及每个工作空间的权限清单。发现机制镜像 Hermes 项目上下文规则(最近的 .hermes.md 获胜,以 git 根为边界);没有指令的上下文文件意味着没有库——配置的工作空间保持有效。

为什么选择 Perseus Vault

Perseus Vault 是唯一同时具备 MCP 原生、本地优先、零依赖且代理优先的记忆引擎。

LongMemEval QA(官方测试工具)

在 LongMemEval 的官方测试工具上测量的召回质量,而非自制脚本:

记忆引擎

QA 准确率

Perseus Vault

73.8%

Zep

63.8%(已发布)

Mem0

49.0%(已发布)

longmemeval_s(500 个问题),gpt-4o-2024-08-06 回答器 + LongMemEval 官方评判器;竞争对手数字为其已发布值。Perseus Vault 的 73.8% 是 3 次运行的平均值;使用官方 CoT 时为 79.0%。方法论与内容哈希(sha256)结果 →

LOCOMO(mem0 自己的测试工具)

在 mem0 自己的 LOCOMO 测试工具上测量(我们的分支),而非我们的——类别 1–4,1540 个问题,top-200,gpt-5 回答器 + 评判器:

引擎

总体

单一

时间

多

开放域

Perseus Vault 2.20.2

87.9%

89.1

92.2

85.1

70.8

Mem0 Platform Starter

82.2%

85.0

82.9

78.0

67.7

Zep Cloud Flex

33.8%

36.9

6.9

50.0

49.0

类别 5 对抗性(446 个问题):Perseus 63.5,Mem0 55.6,Zep 49.8。我们对 Mem0 的测量值比其已发布文件低 9.4 个百分点(评判器/平台漂移——已披露)。完整排行榜 →

双时态时间旅行(三轴)

我们最强的结构性差异化——完整的 SQL:2011 双时态历史(事务时间 和 有效时间)——在可重现、完全离线的测试集上测量。它驱动实际发布的二进制文件通过 MCP stdio,处理单轴竞争对手会出错(追溯性修正、前瞻性未来日期事实、乱序到达、信念与真相分歧、封闭时段)的困难情况:

Axis

Question it answers

Checks

Pass

valid-time (valid_at)

"what was true in the world at T"

10

10

transaction-time (as_of)

"what did we believe at T"

1

1

bi-temporal (bitemporal)

"as of belief at T, what was true at V"

2

2

Total

13

13 (100%)

用一条命令重现(无需 API 密钥、无需网络、无需 LLM):

cargo build --release
python benchmark/temporal/gauntlet.py --bin target/release/perseus-vault

PASS/FAIL 判决是确定性的(墙上时钟时间戳会变化,但判决结果不会),因此正确的构建会重新运行到相同的 signature_sha256。已提交的 gauntlet_report.json 是参考。 方法论与数据集 →

对比矩阵

Perseus Vault

Mem0

Letta

Zep

部署方式

单一二进制

云服务 + 自托管

Docker/Postgres

Docker/Neo4j

依赖

无(嵌入式 SQLite)

Python + 向量数据库

Postgres + Python

Neo4j + Go(Graphiti)

MCP 原生

✅ 157 个规范工具

❌ 非 MCP 原生

❌ 非 MCP 原生

❌ 非 MCP 原生

离线/本地

✅ 完全本地

依赖云

需要 Docker

需要 Docker

加密

AES-256-GCM ✅

❌

❌

❌

混合搜索

BM25 + 稠密检索 + RRF

仅向量检索

仅向量检索

向量 + 图

实体生命周期

衰减 + 提升 + 归档

❌

❌

❌

实体图

链接 + 遍历

❌

❌

✅

日志审计追踪

✅ 不可变

❌

❌

❌

状态管理

✅ 键值 + TTL

❌

❌

❌

MCP 工具

103 个规范

5

8

0

许可证

MIT

Apache 2.0

Apache 2.0

Apache 2.0

完整对比:Perseus Vault vs Mem0 → vs Letta → vs Zep →

压力测试:10 万个实体

Perseus Vault 可在普通硬件上处理生产工作负载。以下数据来自已提交的构件 benchmark/scale/report.json:通过 MCP stdio 驱动的真实发布二进制文件(每个语料库大小一个持久进程),AMD64 16 核,Windows 11,每次写入在发送下一条之前持久化。

指标

10K

100K

写入吞吐量,持续(MCP stdio)

479 文档/秒

40 文档/秒

混合召回 p50

19.03 毫秒

79.73 毫秒

FTS5 召回 p50

3.14 毫秒

15.67 毫秒

完整百分位数、as_of 点查询、时间点召回和冷启动数据均在 benchmark/scale/ 中。

自行运行:python benchmark/scale/run.py

大规模召回精度:关键词失效,混合检索保持

速度只是入场券——对智能体记忆而言真正重要的问题是正确的记忆是否真正浮现? 基于不同内容的语料库(第一方,可重现;参见 benchmark/lambda/)测量 recall@k 按模式:

100,000 个实体(1×H100,nomic-embed-text 在 Ollama 上):

recall@k

关键词(BM25/FTS5)

稠密检索

混合检索(RRF)

@1

0.003

0.680

0.785

@5

0.015

0.859

1.000

@10

0.029

0.899

1.000

在 10 万个实体下,混合检索在 @5 时达到完美 1.000,而关键词检索仅命中约 1.5% 的时间——这产生了约 66 倍的差距。而且这个差距随着规模扩大而拉大:在 1 万个实体时,关键词 recall@5 为 0.008,而混合检索已经是 1.000;当智能体积累历史时,纯关键词记忆会悄然退化,而混合检索(BM25 + 稠密检索 + 倒数排名融合)则不会。这是 Perseus Vault 混合检索的核心论点。

同台竞技,相同机器,相同语料库,完全本地化(1×H100,Ollama — 每个系统使用完全相同的事实集、查询和子串判断器):

系统

召回精度

p50 延迟

备注

Perseus Vault(混合检索)

1.00

35.6 毫秒

单个自包含二进制,进程内

Letta(归档 / pgvector)

1.00

135.5 毫秒

服务器 + Postgres/pgvector

Mem0(向量)

0.60

37.9 毫秒

Python + 向量数据库

Zep(Graphiti 时间点知识图谱)

0.20

49.7 毫秒

服务器 + Neo4j;由本地模型提取图

每个竞品均在同一台机器上启动并运行,针对相同的本地 Ollama(qwen2.5:14b-instruct + nomic-embed-text)——无云服务,无编造数据。Letta 以 letta/letta 服务器运行(捆绑 Postgres/pgvector),在 1.00 上与 Perseus Vault 持平。Zep 的自托管社区版服务器已弃用,其 zep_python 记忆 API 现仅为 Zep 云服务独有,因此我们测量了 Zep 的实际 OSS 引擎——Graphiti 时间点知识图谱(基于 Neo4j)——实体/边提取和嵌入均在相同的本地 Ollama 上完成。其 0.20 分反映了使用本地模型构建知识图谱的真实成本(结构化提取有损失:从 6 个事实中提取 5 个实体 / 2 条边)——而非使用前沿模型的 Zep 云服务。完整构件和方法论:benchmark/lambda/results/competitors.json。

冷启动:一台裸 GPU 机器在 3.3 秒内获得其首个基于 grounding 的 RAG 答案(模型暂存在磁盘上)。

可重现: benchmark/lambda/scale_bench.py 和 competitors_bench.py。

部署在 GPU 主机(vLLM 在 MI300X/H100 上)上的模型服务器旁?查看 AMD MI300X 部署参考 — 包括实测的共驻机数字以及 /dev/shm、PID-1 和版本固定等在实际中会破坏这些堆栈的陷阱。

框架集成

即用型适配器,使 Perseus Vault 成为流行 AI 智能体框架的默认记忆后端:

框架

集成

类型

LangGraph

PerseusVaultStore

BaseStore 实现

CrewAI

PerseusVaultMemoryTool

智能体工具

AutoGen

PerseusVaultMemory

Memory 实现

每个适配器:

  • 通过 MCP stdio 子进程连接(持久会话)

  • 将框架的记忆接口映射到 Perseus Vault 工具

  • 附带 README 快速入门指南(5 分钟即可运行)

  • 具有通过模拟 MCP 传输的通过测试

任何兼容 MCP 的框架均可直接使用 Perseus Vault。请参阅 MCP 客户端和框架集成 获取完整列表。

150 个规范 MCP 工具

规范产品和工具名称。 Perseus Vault 是产品名称,集成使用规范的 perseus_vault_* 工具(例如,perseus_vault_remember)。历史遗留的 mimir_* / mneme_* / plutus_* 名称已在 2026-27 主要版本中移除——规范名称是唯一的接口。 计数是源注册表中独特规范工具的数量。兼容性别名可调用但不单独计数。 历史遗留的 perseus_vault_* 和 perseus_vault_* 名称仍然完全可调用——每个前缀都会分发到相同的处理程序——但它们在 tools/list 中不再被公告。这使公告清单保持每个工具一个名称,而不是将其翻三倍(3 倍别名膨胀),因此连接的客户端无需在每次请求时重新加载三倍的模板有效载荷。要恢复公告所有三个前缀的历史行为,请设置 PERSEUS_VAULT_TOOL_ALIASES=all(历史遗留环境变量 PERSEUS_VAULT_TOOL_ALIASES 同样生效;PERSEUS_VAULT_ 优先级更高)。

客户端兼容性 (#633)。 那些依据公告列表进行门控的客户端——它们在调用前检查 tools/list 并跳过未看到的工具——会静默地跳过针对 2.x 保险库的历史遗留 perseus_vault_* 调用,尽管调用本身会成功。已知情况:perseus CLI ≤ 1.0.22 硬编码了 perseus_vault_recall 并降级为空的仅本地召回。从任一侧修复:将 CLI 升级到 ≥ 1.0.23(调用规范名称,具有动态回退),或者在保险库上设置 PERSEUS_VAULT_TOOL_ALIASES=all 作为旧客户端仍在部署时的桥梁。

工具范围(公告层级,#1051)

默认情况下,tools/list 公告每一个规范工具。设置 PERSEUS_VAULT_TOOL_SCOPE 以为令牌和注意力受限的智能体客户端缩小公告面:

设置

公告面

计数

full(默认)

所有工具

150

ops

智能体面 + 操作整理、维护、治理、导出

140

agent

日常记忆 + 协调面(回忆 / 记住 / 上下文 / 交接 / 状态,加上智能体端的 AAR 调用)

48

范围仅用于公告:隐藏的工具仍然可以通过 tools/call 完全调用,并且授权保持与工作空间绑定和权限清单一致。层级分类是一个 1:1 的侧表(src/mcp.rs 中的 TOOL_SCOPES),由 scripts/registry_metadata_check.py 在 CI 中强制实施——每个新工具都必须分类。admin 层级工具(migrate、purge、erase、vault_import、authority_set / authority_revoke / authority_set_signed)永远不会出现在有范围限制的列表中。

实体 CRUD

工具

描述

perseus_vault_remember

存储/更新实体。通过(类别,键)实现幂等性;内容变更会将先前版本快照保存到历史记录中。

perseus_vault_recall

使用 FTS5/密集/混合模式、过滤器、词干扩展进行搜索。查询契约(#562):query="" 是匹配所有枚举(“列出所有”路径);"*" 和其他通配符是字面 FTS5 术语,不是 glob — "*" 不匹配任何内容。

perseus_vault_scan

确定性分页枚举一个类别或整个存储(#562):不可变的 id ASC 键集页面,带有 next_cursor/has_more 契约,因此导出/同步/重置调用者可以恰好遍历每个实体一次。只读 — 无检索计数/衰减副作用,无偏移量上限。

perseus_vault_hygiene

只读启动内存卫生报告(#675):按“可操作性”(具体锚点 — 问题键、#引用、路径、URL、决策 — 与模糊/仅日期/简短相比)对活跃记忆进行评分,并列出最差的违规者及其原因,用于归档/合并整理。

perseus_vault_recall_layer

从特定的仿生层(世界、情节、语义)中召回。

perseus_vault_recall_when

主动即时召回:显示其 recall_when 触发器匹配的实体。

perseus_vault_get_entity

通过 ID 获取一个实体,包含完整的 body_json。

perseus_vault_as_of

事务时间旅行:在过去某个时刻被认为是事实(类别+键)的版本。

perseus_vault_valid_at

有效时间查找:根据当前知识,在某个时刻在世界上实际为真的版本(SQL:2011 APPLICATION_TIME)。

perseus_vault_bitemporal

完整的双轴双时态查询:“截至事务时间 T,我们相信在有效时间 V 什么是真的” — 精确的矩形单元格。

perseus_vault_history

列出事实(类别+键)的已取代版本,最新的在前 — 分页(limit 默认 20,加上 offset);total 报告完整轨迹大小(与 perseus_vault_as_of 配套)。

perseus_vault_forget

软删除(archived=1)。

搜索与 RAG

工具

描述

perseus_vault_ask

RAG:召回上下文,查询 LLM,返回带有来源的基于事实的答案。

perseus_vault_embed

通过捆绑模型、Ollama 或兼容 OpenAI 的端点生成密集向量。

perseus_vault_semantic_search

仅密集语义搜索快捷方式 — 按含义查找实体,仅按嵌入相似度排序(无关键词回退)。

perseus_vault_context

用于会话注入的预格式化 markdown 块。默认优先召回:传递 query(当前任务/消息),仅注入主题相关的实体,并限制在每个模型的预算内;旧的无条件转储需要 mode: "always_inject"。

perseus_vault_ingest

触发连接器同步(GitHub、文件监视器);未更改的内容通过包含重放跳过(#1050)。

perseus_vault_span_audit

提取损失网络(#1048):保留提取器遗漏的句子作为残余跨度,逐字记录并附带来源。

perseus_vault_report_refusal

提取损失网络(#1048):拒绝作为信号 — 重新评分跨度与查询,返回重试负载,标记有损单元。

perseus_vault_report_success

提取损失网络(#1048):确认重试 — 附加一个临时查询键,以便相同的重复查询作为首次通过。

perseus_vault_ingest_file

本地提取文档文本(始终支持纯文本/markdown;使用 multimodal 功能支持 DOCX/PDF)并将其存储为可召回实体。

perseus_vault_extract

本地、确定性、基于规则的知识提取(事实/偏好/时间事件/情节)来自文本或存储的实体。只读。

perseus_vault_capture

选择加入的会话内捕获(#520):在问题解决时,将转录/洞察负载(文本、markdown 或 JSONL)提炼为持久实体(根本原因/陷阱/决策/模式/收获)。默认使用本地基于规则的提炼器,可选 llm: true 并优雅降级;近重复合并保持开启,加上每次调用上限(防洪水)。也是一个 CLI 动词:perseus-vault capture。

perseus_vault_memories

兼容 Anthropic 记忆工具的文件接口(view/create/str_replace/insert/delete/rename 在 /memories 下),由 vault 实体支持。

📖 docs/retrieval-modes.md — 每种检索模式的枚举参考(keyword · dense · hybrid · graph · GraphRAG · proactive recall_when · temporal as_of):机制、使用时机、调用方式和示例。

工具

描述

perseus_vault_link

在实体之间创建带类型的关系链接。

perseus_vault_unlink

移除实体链接。

perseus_vault_traverse

遍历实体链接图,深度可配置。

perseus_vault_communities

在链接图上进行 GraphRAG 社区检测(确定性标签传播或贪心模块度 "louvain";纯 Rust,离线)。

perseus_vault_community_summary

单个社区的抽取式(可选 LLM 打磨)摘要,以实体形式物化,包含指向成员的 evidence_for 链接。

perseus_vault_global_recall

GraphRAG 全局搜索:广度遍历社区摘要,然后深入最佳社区的成员——跨集群的整体答案。

perseus_vault_graph_drift

只读的图/实体/索引/收据漂移报告(#869):未认证的、孤立的、已归档/过期目标的、跨工作空间的边,过时的社区成员身份,FTS 漂移,指向缺失实体的日志引用。

perseus_vault_graph_attest

将起始端实体 ID 作为证据锚点标记到遗留边上,使其能够被图召回臂使用(#869);试运行预览,已记录日志。

日志

工具

描述

perseus_vault_journal

添加带有参与者归属的结构化事件。

perseus_vault_check_failure_pattern

既视感防护:在重试之前,根据之前记录的失败(日志+失败/陷阱实体)检查一个动作。只读。

perseus_vault_timeline

按时间范围查询日志,支持过滤器。

状态

工具

描述

perseus_vault_state_set

设置键值状态,带有可选的 TTL。

perseus_vault_state_get

获取状态值。如果过期则返回 null。

perseus_vault_state_delete

删除状态条目。

perseus_vault_state_list

列出状态键,可选按前缀过滤。

生命周期

工具

描述

perseus_vault_decay

重新计算艾宾浩斯衰减分数(批量 1000 实体事务)。

perseus_vault_prune

按类别、衰减阈值或年龄批量归档。

perseus_vault_purge

永久删除已归档实体并执行 VACUUM。具有破坏性。

perseus_vault_expire

基于时间的生命周期清扫:实体在其主体 expires_at 之后转换为 status='expired'(保留内容,支持试运行)。

perseus_vault_redact

内容编辑:将工作空间范围实体的主体擦除为仅哈希标记,删除历史记录和 FTS 文本,保留元数据(允许重新引入)。需要显式提供 workspace_hash。

perseus_vault_erase

跨所有衍生层(FTS、历史、社区、链接、日志)物理擦除工作空间范围实体,并永久禁止重新引入。需要显式提供 workspace_hash;支持试运行。

perseus_vault_cohere

自治一致性梳理步骤——提升、衰减、链接、归档。

perseus_vault_autocohere

完整的原子梳理:一次完成 cohere → decay → compact(支持试运行)。

perseus_vault_compact

归档低于衰减阈值的实体。

perseus_vault_reindex

从实体表重建 FTS5 搜索索引。

perseus_vault_consolidate

将某个类别中重叠/重复的实体合并为持久的、证据可追踪的观察结果(perseus_vault_conflicts 的镜像)。

perseus_vault_dream

休眠时间 LLM 整合:通过配置的 LLM 反思相关情景记忆的聚类,并写回持久的语义洞察,与每个源建立来源链接。幂等(证据集哈希)、矛盾感知、有界;需要 --llm-endpoint。

质量

工具

描述

perseus_vault_score

分配质量分数(0.0-1.0)。

perseus_vault_conflicts

通过三元组相似度检测冲突实体;选择 resolve=true 会将确定性较低的一方失效到历史中(可逆,默认试运行)。

perseus_vault_correct

用于从错误中学习的有结构纠正捕获。

perseus_vault_supersede

将新事实标记为取代旧事实(将旧实体设置为 deprecated)。

perseus_vault_follow

记录一个实体是被实际 FOLLOWED(关注)还是 MISSED(错过)——这个关注率有效性信号同时影响衰减评分和结果加权召回排名(#681)。

关键件(策略规则)

工具

描述

perseus_vault_keystone_set

编写一个 Keystone——一种在上下文压缩中幸存(#683)的强制性策略规则。范围限定(租户/舰队/代理),按权重排序,每次变更都进行加密链式处理;编写受信任等级限制。

perseus_vault_keystone_get

获取某个作用域的合并 Keystones,按权重(最高优先)然后作用域特异性排序——它是会话开始时确定性的、与召回对应的部分。渲染器将其注入所有其他上下文之前。

perseus_vault_agent

在多代理注册表(#684)中注册/更新或查找代理:身份 + 信任等级(0-3)+ 舰队。信任等级限制敏感操作(例如,编写 keystones 需要等级 ≥ 2),并驱动召回时的可见性强制。

保险库与联邦

工具

描述

perseus_vault_vault_export

将实体导出为带有 YAML 前置元数据的 .md 文件。

perseus_vault_vault_import

从 .md 仓库目录导入(幂等操作)。

perseus_vault_federate

在工作区之间复制实体。这是一个本地导出/工作区重命名/重新导入(基于文件,无网络对等节点);Windows 安全默认路径在 #704 中跟踪。

perseus_vault_share

将一个实体(按类别+键)共享到另一个工作区,保留内容。

perseus_vault_workspace_list

列出所有不同的实体类别。

指标与运维

工具

描述

perseus_vault_stats

所有表的完整数据库统计信息。

perseus_vault_health

服务器和数据库健康检查。

perseus_vault_bench

性能基准跟踪。

perseus_vault_maintenance

数据库维护:去重、孤立检测、VACUUM、FTS5 重建索引(支持试运行)。

perseus_vault_synthesize

LLM 会话综合——从记录中提取经验教训。

perseus_vault_migrate

将 v0.1.x 数据库迁移到当前架构。

按任务分类的工具(智能体速查表)

不是类别列表——而是任务列表。根据智能体尝试执行的操作选择对应行:

任务

工具

记住一个持久的事实/决策/修正

remember、capture、journal、correct

在规划前回忆

recall、recall_batch、recall_when、context、ask

重构开发叙事(意图轨迹、下一步工作)

handoff_pack(使用 include_intent_trail / include_next_work)、delegation_brief、timeline、traverse

决策:替代与权威

supersede、history、authority_get、action_receipt_get、keystone_get

询问“我们当时相信什么?”

as_of、valid_at、bitemporal、history

纠正记录/揭示矛盾

correct、supersede、conflicts、reject_value

在压缩中存活的策略

keystone_get、keystone_set

运维、信任与范围

health、stats、agent、workspace_status、doctor(CLI)

CLI

# Server
perseus-vault serve --db /data/perseus-vault.db
perseus-vault serve --web --port 8767 --encryption-key ~/.perseus-vault/secret.key
perseus-vault serve --llm-endpoint http://localhost:11434/api/generate --llm-model llama3
perseus-vault serve --transport sse --port 8787 --mcp-token my-secret-token

# Maintenance (operate directly on DB, no server needed)
perseus-vault stats          --db /data/perseus-vault.db
perseus-vault forget         --db /data/perseus-vault.db --category decision --key stale-choice --reason "superseded"
perseus-vault prune          --db /data/perseus-vault.db --category junk --min-decay 0.1 --dry-run
perseus-vault purge          --db /data/perseus-vault.db --dry-run
perseus-vault decay          --db /data/perseus-vault.db
perseus-vault reindex        --db /data/perseus-vault.db
perseus-vault vault-export   --db /data/perseus-vault.db --vault-dir ./export/
perseus-vault vault-import   --db /data/perseus-vault.db --vault-dir ./export/
perseus-vault obsidian-sync  ~/obsidian-vault/Perseus Vault/          # one-shot export to an Obsidian vault
perseus-vault obsidian-sync  ~/obsidian-vault/Perseus Vault/ --watch  # continuous sync on every memory change

# Key management
perseus-vault keygen --key-file ~/.perseus-vault/secret.key

# #918: read-only TUI inspector (retrieval telemetry, claim cards, entity
# state, decay, bi-temporal history). Never writes; repairs go through the
# governed MCP tools. Requires the default `tui` feature.
perseus-vault inspect --db /data/perseus-vault.db --key-file ~/.perseus-vault/secret.key

无需重启会话的实时更新

perseus-vault serve 会检测自身二进制文件在会话期间是否被替换(正常的 cargo build / 重新安装流程),并拒绝从过时的进程映像提供结果——每个工具都会返回一个明确的错误,而不是降级为空结果(#858、#1045)。两种恢复路径,均在同一 stdio 连接上(无需客户端重启):

  • 显式: 调用 perseus_vault_handoff_restart {"confirm": true}——进程热切换到新二进制文件,会话无缝继续,MCP 会话状态(初始化 + 智能体身份)得以保留。

  • 自动(选择加入): 使用 PERSEUS_VAULT_AUTO_HANDOFF=1 启动服务器,切换在下次工具调用时透明进行,由新二进制文件直接响应。

在 macOS/Linux 上,切换是真正的 exec(相同 PID,相同管道)。Windows 会锁定正在运行的可执行文件,因此无法在会话期间进行替换;请在会话边界进行更新。完整协议和本地开发工作流:docs/specs/live-update-handoff.md。

手动数据库编辑。 上述维护命令和正常的 MCP 写入路径会自动保持 FTS5 索引同步。使用 sqlite3 直接编辑 entities 表(手动 DELETE/UPDATE)会绕过该同步,并可能留下孤立的索引行——对已消失内容的“幽灵”召回命中。进行任何直接 SQL 编辑后,运行 perseus-vault maintain --db <path>(或 perseus-vault reindex)以协调 FTS 索引。

标志

标志

描述

--db

SQLite 数据库路径(默认:~/.perseus-vault/data/perseus-vault.db)

--web

启动 Web 仪表板

--port

仪表板端口(默认:8767)

--web-bind

仪表板绑定地址(默认:127.0.0.1)

--transport

MCP 传输:stdio(默认)、sse 或 http

--mcp-token

SSE/HTTP 传输认证的 Bearer 令牌

--encryption-key

AES-256-GCM 密钥文件路径

--llm-endpoint

用于 perseus_vault_ask 和嵌入的 LLM API 端点

--llm-model

LLM 模型名称(默认:llama3)

--llm-api-key

LLM 端点的 API 密钥(OpenAI、Azure 等)

--embedding-endpoint

兼容 OpenAI 的嵌入端点

--connectors-config

connectors.yaml 的路径

数据库位置

规范数据库路径为:

~/.perseus-vault/data/perseus-vault.db

在脚本、MCP 主机配置和 cron/采集任务中始终传递 --db(或设置 $PERSEUS_VAULT_DB_PATH),以便每次调用都指向同一文件。当两者均未设置时,Perseus Vault 按以下顺序解析默认路径,并使用第一个已存在的路径(以便升级者和旧版单用户安装被识别,而不是静默地以空状态启动):

  1. ~/.perseus-vault/data/perseus-vault.db — 规范(当前名称)

  2. ~/.perseus-vault/data/perseus-vault.db — 重命名前

  3. ~/.perseus-vault/data/perseus-vault.db — 重命名前

  4. ~/perseus-vault.db — 旧版单用户安装位置

如果都不存在,则创建 ~/.perseus-vault/data/perseus-vault.db。如果存在多个且您未传递 --db/$PERSEUS_VAULT_DB_PATH,Perseus Vault 会在 stderr 上打印警告,指明所选文件及其忽略的其他文件,从而使多数据库的歧义状态可见而非静默。显式设置 --db 或 $PERSEUS_VAULT_DB_PATH 始终优先并抑制该警告。

Obsidian 中的 AI 记忆

Perseus Vault 是您 AI 智能体的长期记忆——同时它也是您的第二大脑。您的智能体记住的每个实体都会导出为带有 YAML 前置元数据的纯 Markdown 笔记,因此您 AI 的记忆成为您已在使用的工具中可导航的个人知识库:Obsidian、Logseq 或 Notion。

# Export your entire memory to an Obsidian vault as linked Markdown notes
perseus-vault obsidian-sync ~/obsidian-vault/Perseus Vault/

# Keep it live — re-export automatically on every memory change
perseus-vault obsidian-sync ~/obsidian-vault/Perseus Vault/ --watch

在 Obsidian 中打开仓库,您将获得智能体知识的图谱。

WikiLink 反向链接。 当一个实体链接到另一个实体时(通过 perseus_vault_link 或 depends_on / implements / references 关系),导出的笔记会获得一个 ## Links 部分,其中包含在 Obsidian 图谱视图中原生解析的 [[WikiLink]] 反向链接:

---
id: cli-de8dfb8364b6
category: architecture
key: api
type: insight
decay_score: 0.5000
---

{"content":"axum service"}

## Links

- [[cli-99756b494c7d|database]] (depends_on)

链接按实体 ID 解析(笔记写为 <id>.md),因此它们永远不会中断,Obsidian 会显示人类可读的 key 作为链接标签。打开图谱视图,您的智能体的架构、决策和见解将变为可点击的知识地图。

--watch 按间隔轮询 Perseus Vault 廉价、确定的状态摘要,仅在内存实际更改时重新导出。它自然能捕获每次 perseus_vault_remember 写入,无需文件系统监视器依赖,也无需与服务器耦合。使用 PERSEUS_VAULT_SYNC_INTERVAL_SECS 调整间隔(默认:2 秒)。

其他 PKM 工具

工具

方法

Obsidian

perseus-vault obsidian-sync <vault>——WikiLinks 在图谱视图中开箱即用地解析。

Logseq

将 obsidian-sync 指向您的 Logseq 图谱目录。Logseq 读取相同的 [[WikiLink]] 语法和 Markdown 前置元数据。

Notion

运行 perseus-vault vault-export,然后使用 Notion 的 导入 → Markdown & CSV 导入笔记。

与纯云端的“第二大脑”工具不同,Perseus Vault 100% 本地运行,使用 Rust 编写,使用 AES-256-GCM 进行静态加密,并应用衰减评分,使过时的记忆逐渐淡出——您的知识库始终属于您并保持新鲜。

功能

语义搜索(默认开启)

  • 捆绑的内嵌嵌入 — 一个量化的 all-MiniLM-L6-v2 模型(384 维)被编译到二进制文件中,因此密集/语义搜索可以零配置和零网络工作:无需 Ollama,无需 API 密钥,无需模型下载。这是默认构建(bundled-embeddings 特性)。

  • 写入时自动嵌入 (#271) — perseus_vault_remember 在写入每个新实体(或内容发生变化的实体)时同步地使用捆绑模型进行嵌入。单实体嵌入是确定性的,并采用 LRU 缓存,因此成本低廉且不会增加后台任务。嵌入失败不致命(记录到 stderr);写入始终成功。

  • 混合是默认的召回模式 (#271) — 当存在嵌入时,perseus_vault_recall(query=...) 不带 mode 标志会自动选择混合(密集 + 关键词通过 RRF 融合),并在没有嵌入时透明地回退到 fts5 关键词搜索。无需手动执行 perseus_vault_embed 步骤,无需记住任何标志。

  • perseus_vault_semantic_search(query, limit) — 一个单工具快捷方式,用于纯密集的、基于含义的搜索(无关键词回退),当您只想“查找类似内容”时使用。

  • 可选的外部嵌入器 — 要使用 Ollama 或任何兼容 OpenAI 的 /v1/embeddings 端点替代捆绑模型,请设置 --llm-endpoint(以及必要的 --embedding-endpoint / --llm-api-key)。这完全是可选的;默认使用捆绑模型。

  • 通过 cargo build --no-default-features 构建一个没有捆绑嵌入的精简二进制文件 — 召回将默认为关键词搜索,除非配置了远程嵌入器。

混合搜索内部机制

  • FTS5 关键词搜索,带有 LIKE 回退和波特词干扩展

  • 密集向量搜索,通过存储嵌入的余弦相似度

  • 倒数排名融合 (RRF) — 结合关键词和向量结果

  • 查询扩展 — 自动词干变体以扩大召回范围

记忆生命周期

Perseus Vault 使用三个仿生层来模拟记忆,灵感来自人类记忆路径:

  • 世界(核心):缓慢衰减的、关于环境的全局事实。

  • 情景(缓冲区):快速衰减的、特定会话的交互历史。

  • 语义(工作):中等衰减的、通用知识和已学概念。

您可以使用 perseus_vault_recall_layer 工具或通过指定 perseus_vault_remember 中的 layer 参数直接与这些层交互。

  • 艾宾浩斯遗忘曲线 — 记忆会自然衰减,除非被检索(访问时刷新)

  • 层提升 — 基于访问频率,缓冲区 → 工作 → 核心

  • 自动归档 — 过期实体自动归档;清除以永久删除并执行 VACUUM

  • 始终在线实体 — 固定身份关键记忆以进行会话注入(在召回优先模式下硬性上限;优先使用 recall_when 触发器)

  • 前瞻查询提示 (#919) — 每个实体可选的 1-3 个自然语言表述(perseus_vault_remember 上的 hints),这些提示与正文一起被索引到 FTS5 中,弥合了普通语言查询和存储措辞之间的词汇差距。默认关闭(PERSEUS_VAULT_HINTS_ENABLED=1);禁用时被拒绝。请参阅 docs/specs/prospective-query-hints.md。

召回优先上下文注入

存储库是查询层 — 它检索当前轮次所需的少数事实,而不是向主机提供一个固定的文本块来塞入每个系统提示。perseus_vault_context 和 perseus-vault prepare 默认使用召回优先模式:

  • 相关性门控 — 传递 query(当前任务/消息),只有其 recall_when 触发器或索引内容匹配的实体才会被注入。没有查询,就没有主题注入:该块是一个紧凑的检索指针,在不相关的存储库写入之间保持字节稳定(对前缀缓存友好)。

  • 每个模型的召回预算 — 输出被限制为一个从主机模型解析的字符预算:默认/精简配置文件 1500 字符;大窗口("opus")配置文件 6000 字符;max_context_chars 覆盖两者。

  • 上限的始终在线 — always_on: true 仍然适用于身份关键事实,但召回优先集有硬性上限(前 5 个),溢出时会发出警告,引导您使用 recall_when 触发器。

  • 旧版选择加入 — 旧的、无条件的前 N 个转储仍然可以通过 mode: "always_inject"(prepare 的 --legacy-context)使用,除非您传递预算,否则不加限制。

perseus-vault prepare --task "deploying the payments service" --model claude-sonnet-4-6
perseus-vault prepare --task "..." --max-context-chars 800     # explicit budget
perseus-vault prepare --task "..." --legacy-context            # old dump, opt-in

RAG 与嵌入

  • perseus_vault_ask — 通过任何 LLM(Ollama、OpenAI 等)对存储的记忆进行自然语言问答

  • perseus_vault_embed — 通过 Ollama 或兼容 OpenAI 的 /v1/embeddings 生成并存储密集向量

  • 支持单实体和批量类别嵌入

加密

  • AES-256-GCM 对实体 body_json 进行透明加密

  • 新安装默认启用 — 标准密钥在首次写入时自动生成于 ~/.perseus-vault/secret.key

  • --encryption-key 标志用于显式密钥;perseus-vault keygen 用于自定义密钥生成

  • 现有的明文数据库在 init --rekey 迁移路径下会安全关闭(或显式设置 PERSEUS_VAULT_ALLOW_PLAINTEXT=1)

  • FTS5 索引保持明文以支持搜索

网页仪表盘

  • 内置 Axum HTTP 服务器(perseus-vault serve --web --port 8767)

  • 深色主题仪表盘,包含搜索、实体表、vis.js 图形、时间线

  • 默认绑定:127.0.0.1(使用 --web-bind 0.0.0.0 暴露)

  • 独立的 SQLite 连接,采用 WAL 模式以支持并发读取

外部连接器

  • GitHub 问题连接器 — 按仓库摄取问题/PR,具有速率限制感知

  • 文件监视器 — 扫描目录中的 .md/.txt/.json 文件,并使用内容哈希去重

  • 基于 YAML 的连接器配置,通过 --connectors-config

多传输

  • stdio(默认)— 零配置,适用于任何 MCP 主机

  • SSE — 服务器发送事件,用于基于 HTTP 的 MCP 客户端

  • HTTP — REST 风格的 MCP 端点

  • Bearer 令牌认证 — 用于 SSE/HTTP 传输

Perseus 集成

Perseus Vault 是 Perseus 的默认记忆后端:

perseus_vault:
  enabled: true
  transport: "stdio"
  command: ["perseus-vault", "serve", "--db", "~/.perseus-vault/data/perseus-vault.db"]
  timeout_s: 30.0
  merge_strategy: "local_first"
  fallback_to_local: true
  context_categories: ["decision", "architecture", "convention"]
  context_limit: 10

政府与联邦采购

Perseus Vault 从一开始就为政府部署而构建。

能力

状态

许可证

MIT — 无版权,无 GPL/AGPL

SBOM

已发布 — NTIA 最小元素

离线环境

完全离线 — 默认无遥测、无 API 调用、无网络

静态加密

主体上的 AES-256-GCM,新安装默认启用

审计追踪

带有监管链的不可变日志

供应链

SLSA 认证正在进行中

对于联邦买家: 请参阅 docs/federal-buyers.md 了解采购信息、合规状态和部署模型(离线环境、本地部署、机密环境)。

Perseus Computing LLC 是一家美国独资的小企业。SAM.gov 注册正在进行中。 NAICS:541715、541511、541512。

隐私政策

Perseus Vault 是一个本地优先的 MCP 服务器 — 它完全在您的机器上运行。

数据收集

  • 无数据收集。 Perseus Vault 不收集、传输或回传任何用户数据、使用统计或遥测信息。

  • 所有数据保留在您的本地 SQLite 数据库文件中。

数据使用与存储

  • 所有记忆实体、日志条目和状态都存储在您通过 --db 指定的路径的本地 SQLite 数据库中。

  • 可选的 AES-256-GCM 静态加密 可用 — 启用后,实体主体在存储前会被加密。

  • 不会与 Perseus Computing LLC 或任何第三方共享数据。

第三方共享

  • 无。 Perseus Vault 默认完全离线。没有 API 调用、没有云服务、没有外部网络请求。

  • 可选的密集向量嵌入功能使用本地编译的模型 — 不调用外部嵌入 API。

数据保留

  • 您通过四种不同的生命周期操作控制保留(请参阅 docs/specs/data-boundaries-retention-lifecycle.md):软删除(perseus_vault_forget,内容可恢复)、过期(perseus_vault_expire,基于时间的 status='expired',内容保留)、编辑(perseus_vault_redact,内容被清除为仅哈希,元数据保留)和物理擦除(perseus_vault_erase,从所有派生层中移除,并永久抑制重新摄取)。perseus_vault_purge 从归档行中回收空间。

  • 不执行自动的异地备份。

联系方式

发布验证

发布二进制文件通过 GitHub Actions 从标记的提交构建。每个发布提供:

工件

描述

验证

perseus-vault-<target>.tar.gz

完整构建(捆绑嵌入,glibc)

附带 .sha256 文件的 SHA-256 校验和

perseus-vault-lite-<target>.tar.gz

精简构建(--no-default-features,musl/静态)

附带 .sha256 文件的 SHA-256 校验和

SLSA 来源证明

Sigstore 签名的构建来源

gh attestation verify <archive> --repo Perseus-Computing-LLC/perseus-vault

验证发布二进制文件

# 1. Verify SHA-256 checksum
sha256sum -c perseus-vault-lite-x86_64-unknown-linux-musl.tar.gz.sha256

# 2. Verify SLSA build provenance (requires gh CLI + OIDC session)
gh attestation verify perseus-vault-lite-x86_64-unknown-linux-musl.tar.gz \
  --repo Perseus-Computing-LLC/perseus-vault

# 3. Confirm the binary identity
./perseus-vault --version
# Should show both the release version AND the git commit hash, e.g.:
#   perseus-vault 2.20.2 (v2.20.2-0-gabcdef1)

# 4. Confirm the doctor reports the same identity
./perseus-vault doctor --db /tmp/test.db | head -1
#   perseus-vault doctor — v2.20.2 (v2.20.2-0-gabcdef1)

从源码可重现构建

# The exact same binary (bit-for-bit) requires matching:
#   - Rust toolchain version (see rust-toolchain.toml)
#   - Locked dependencies: `cargo build --locked`
#   - Build flags: `--release` for release builds

cargo build --locked --release
./target/release/perseus-vault --version

许可证

MIT — 请参阅 LICENSE。

Available Tools

43 tools
mimir_askA
Read-only

Ask a natural language question and get a grounded answer from stored memories via RAG. Internally recalls top-k entities, assembles context, and queries the configured LLM (Ollama) for an answer with cited sources. Requires --llm-endpoint to be set.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesNatural language question to answer from stored memories
top_kNoNumber of top entities to use as context (max 20)

Output Schema

ParametersJSON Schema
NameRequiredDescription
answerNoGrounded answer with cited sources
sourcesNoCited source entities used in the answer

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond the readOnlyHint and destructiveHint annotations by detailing the internal process: recalling top-k entities, assembling context, and querying the configured LLM (Ollama) for an answer with cited sources. It also discloses the dependency on the '--llm-endpoint' configuration, which is critical for the tool's operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two short sentences. The first sentence clearly states the primary function, and the second adds important internal details and a requirement. No extraneous words; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 2 parameters, full schema coverage, and an output schema (indicated by context), the description covers the key aspects: purpose, internal process (RAG, top-k, LLM), and a configuration requirement. It lacks explicit mention of which memories are queried (e.g., current workspace) but remains sufficiently complete for an agent to correctly invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides full descriptions for both parameters ('query' and 'top_k'), achieving 100% schema coverage. The description mentions 'Internally recalls top-k entities' which adds marginal context to the 'top_k' parameter but does not significantly enhance understanding beyond the schema. Given high schema coverage, the description adequately complements but does not surpass the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: ask a natural language question and get a grounded answer from stored memories via RAG. It uses a specific verb ('ask') and resource ('stored memories'), and the wording distinguishes it from sibling tools like 'mimir_recall' or 'mimir_synthesize' by emphasizing the natural language Q&A nature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions a prerequisite ('Requires --llm-endpoint to be set') but does not provide explicit guidance on when to use this tool versus alternatives (e.g., mimir_recall for raw retrieval, mimir_synthesize for generation without memories). The usage context is somewhat implied through the tool's purpose, but lacking explicit when-not-to-use or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_as_ofA
Read-only

Bi-temporal time-travel: return the version of a fact (category + key) that Mimir believed at a given past instant. When a fact is overwritten, the prior version is kept in history; this returns whichever version was live at as_of_unix_ms. Use to answer 'what did we believe about X back then?' or to audit how a fact changed. Returns found=false if the fact had not been recorded yet at that time.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesEntity key within the category
categoryYesEntity category
as_of_unix_msYesTransaction-time instant (unix ms) to travel to

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
keyNo
foundNoFalse if the fact had not been recorded by as_of_unix_ms
statusNo
categoryNo
body_jsonNoThe fact's content as it was at as_of_unix_ms
entity_typeNo
as_of_unix_msNo

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. The description adds valuable context about history retention ('when a fact is overwritten, the prior version is kept') and the return behavior ('Returns found=false if not recorded yet'). This goes beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four concise sentences, each adding value: purpose, history explanation, use cases, return behavior. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema (not shown but indicated), the description covers purpose, behavior, and return field ('found'). It lacks mention of error conditions but is sufficiently complete for a time-travel query tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description mentions 'category + key' and 'as_of_unix_ms' but uses similar wording as the schema. It does not add significant new meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verb ('return the version of a fact') and resource ('category + key') and distinguishes from siblings by highlighting time-travel and history. It also gives concrete use cases like 'what did we believe about X back then?'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use to answer...' providing clear context for when to use this tool. It does not explicitly exclude alternatives but implies that for current versions other tools would be used. This is sufficient for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_autocohereA
Destructive

Run a full atomic grooming pass: cohere (promote, link, archive), then decay (recalculate Ebbinghaus decay), then compact (archive below threshold). Returns a summary report. Use dry_run=true to preview without changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, preview changes without writing

Output Schema

ParametersJSON Schema
NameRequiredDescription
dry_runNo
decay_updatesNoEntities whose decay score was updated
links_createdNoAuto-links created during cohere
archived_entitiesNoEntities archived (cohere + compact)
promoted_entitiesNoEntities promoted during cohere
db_size_delta_bytesNoChange in SQLite file size in bytes
compact_archived_countNoEntities archived during compact step

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true, and the description elaborates on the specific operations (promote, link, archive, recalculate decay) and the atomicity of the pass. It provides behavior beyond annotations, though it could detail what gets archived or destroyed more precisely.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences: the first states the action and steps, the second provides the dry_run option. No wasted words, front-loaded with purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the composite nature of the tool and the presence of an output schema, the description adequately covers the operation, steps, atomicity, and dry_run feature. It provides sufficient context for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers the single dry_run parameter (100% coverage). The description reinforces its purpose but adds little new meaning beyond the schema's description. Baseline score applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool runs a full atomic grooming pass consisting of cohere, decay, and compact steps, and returns a summary report. This distinguishes it from sibling tools that operate individually (e.g., mimir_cohere, mimir_decay, mimir_compact).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It mentions using dry_run=true to preview without changes, offering conditional guidance. However, it does not explicitly state when to use this composite tool versus running the individual steps separately, leaving some ambiguity for the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_benchA
Destructive

Record a performance benchmark data point. Tracks task metrics (turns taken, tokens used, success) alongside whether memory recall was used — enabling measurement of Mimir's impact on agent performance. Aggregate with mimir_recall to analyze trends.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags for categorization
session_idNoSession identifier for traceability
tokens_usedYesTotal tokens consumed by the task
turns_takenYesNumber of conversation turns the task took
recall_countNoHow many times memory was recalled during this task
task_successNoWhether the task completed successfully
task_descriptionYesDescription of the task being measured
memory_recall_usedYesWhether memory recall (mimir_recall) was used during this task

Output Schema

ParametersJSON Schema
NameRequiredDescription
entity_idNoCreated benchmark entity ID
created_at_unix_msNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description states that the tool records a data point, which aligns with the destructiveHint annotation (modifying state). No contradictions; the annotation handles the behavioral trait, and the description adds the context of what is recorded. However, it does not disclose additional side effects like persistence or idempotency, which is acceptable given annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences (40 words), front-loaded with the action verb 'Record', and contains no redundant information. Every sentence adds value: the first states the primary purpose, the second explains the metrics and relation to mimir_recall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 8 parameters (4 required) and an output schema (not shown), the description covers the core purpose and the relationship to sibling tools. It mentions the metrics being tracked but does not elaborate on the output schema or optional parameters like tags and session_id, which are adequately documented in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds collective meaning by mentioning the key metrics (turns, tokens, success, memory recall) but does not provide new details beyond what the schema offers. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Record' and clearly identifies the resource as a 'performance benchmark data point'. It lists the tracked metrics (turns, tokens, success, memory recall) and explicitly distinguishes from sibling mimir_recall by noting aggregation for trend analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for recording benchmark data to measure Mimir's impact and directs users to aggregate with mimir_recall for analysis. While it does not list exclusions or alternatives beyond mimir_recall, the context is sufficient for an agent to decide when to invoke this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_cohereA
Destructive

Run an autonomous coherence grooming pass over the memory. Promotes buffer entities to working layer, applies decay, auto-links related entities, and archives stale ones below the decay threshold. Use dry_run=true to preview without making changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, count what would be done without making changes
max_linksNoMaximum auto-links to create (default 20, max 100)
archive_thresholdNoDecay score below which entities are auto-archived (default 0.05)
promote_thresholdNoRetrieval count threshold for buffer to working promotion (default 3)

Output Schema

ParametersJSON Schema
NameRequiredDescription
linkedNoNumber of auto-links created
decayedNoNumber of entities whose decay score was reduced
dry_runNo
archivedNoNumber of entities archived due to low decay
promotedNoNumber of entities promoted from buffer to working
entities_examinedNoTotal non-archived entities examined
completed_at_unix_msNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool modifies memory (promotions, decay, auto-links, archives), which aligns with the 'destructiveHint: true' annotation. It adds context beyond the annotation by specifying what changes occur, though it could mention potential side-effects more explicitly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: the first clearly defines purpose and actions, the second adds a practical tip. No extraneous information, highly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema and 100% schema description coverage, the description adequately covers the tool's behavior, parameters, and usage. It lacks nothing essential for an autonomous grooming pass.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all 4 parameters with descriptions (100% coverage). The description adds only a minor hint about dry_run. Baseline 3 is appropriate since the schema already provides adequate parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Run an autonomous coherence grooming pass over the memory.' It lists specific actions (promotes buffer entities, applies decay, auto-links, archives) that distinguish it from siblings like mimir_compact, mimir_decay, or mimir_prune.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a clear usage hint: 'Use dry_run=true to preview without making changes.' It implies the tool is for grooming memory but does not explicitly compare to alternatives or state when not to use it. This is sufficient but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_compactA
Destructive

Archive entities whose decay score has fallen below a threshold. Supports dry-run mode to preview without making changes. Run periodically or threshold-triggered to keep the database focused on active, high-value memories.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, report what would be archived without making changes
min_decayNoDecay threshold — entities with decay score below this are archived

Output Schema

ParametersJSON Schema
NameRequiredDescription
dry_runNoWhether this was a dry run
entities_archivedNoNumber of entities actually archived (0 in dry-run mode)
entities_examinedNoNumber of entities checked
completed_at_unix_msNoCompletion timestamp

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description confirms destructive behavior via 'archive', aligning with the destructiveHint annotation. It adds the dry-run behavioral trait but does not disclose what archiving entails (e.g., reversibility, data loss). More transparency about consequences would improve this score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states purpose and dry-run support, second suggests usage pattern. No redundant words or fluff; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of output schema (not shown but indicated), the description covers the core action and usage pattern adequately. It could detail consequences of archiving (e.g., recoverability), but overall it is sufficiently complete for a tool with well-documented parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with clear explanations for both parameters ('dry_run' and 'min_decay'). The tool description does not add new meaning beyond reiterating the decay threshold and dry-run mode, so value is marginal.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Archive' and the resource 'entities whose decay score has fallen below a threshold'. It specifies the dry-run mode and mentions periodic/threshold-triggered usage, distinguishing it from sibling tools like mimir_prune or mimir_purge.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises to run 'periodically or threshold-triggered' and mentions dry-run mode for previewing. It does not explicitly state when not to use this tool or list alternatives, but the given context is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_conflictsA

Detect conflicting entities in the same category — pairs with low trigram similarity in their body_json. Flags potential contradictions, duplicate-but-divergent entries, and stale-overwritten facts. Read-only by default. Opt in with resolve=true to actively invalidate the lower-certainty side of clear conflicts (superseding it into history, reversible + time-travelable via mimir_as_of); that path defaults to dry_run=true so you preview first, and never resolves pairs whose certainties are within certainty_margin.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of conflicts to return / resolve
offsetNoNumber of entities to skip for pagination
dry_runNoWhen resolve=true, only report what would be invalidated unless set false
resolveNoOpt-in: invalidate the lower-certainty side of clear conflicts instead of only reporting them
categoryYesCategory to scan for conflictsgeneral
thresholdNoSimilarity threshold — pairs below this are flagged as conflicts
certainty_marginNoMinimum certainty gap to auto-resolve; closer pairs are skipped as ambiguous

Output Schema

ParametersJSON Schema
NameRequiredDescription
conflictsNoConflict pairs with similarity scores (detection mode)
invalidationsNoWinner/loser pairs invalidated or previewed (resolve mode)

TDQS

A3.8/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Contradiction: description claims 'Read-only by default' but annotations set readOnlyHint=false, indicating the tool may cause side effects. This inconsistency undermines transparency. Otherwise, description explains behavior well.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with main purpose upfront, then details on resolve mode. A bit lengthy but each sentence adds value. Could be slightly more concise, but still effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Comprehensive for a complex tool with 7 parameters and output schema. Covers both detection and resolution, safety mechanisms, and parameter behavior. No gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 7 parameters have descriptions in schema (100% coverage). Description adds value by explaining how parameters interact (e.g., dry_run with resolve, certainty_margin for ambiguity) and the trigram similarity context for threshold.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool detects conflicting entities in the same category using trigram similarity on body_json. It distinguishes itself by offering both read-only detection and optional conflict resolution, specifying the exact purpose and key actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear usage context: read-only by default, opt-in with resolve=true, dry_run preview, and certainty_margin to avoid ambiguous resolutions. Could explicitly state when not to use, but still strong guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_contextA
Read-only

Return a pre-formatted markdown context block of the most important entities for session injection. The downstream system (Perseus) uses this to pre-load AI agent context with relevant memories before work begins.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of entities to include in the context block
categoriesNoCategories to include. Empty array = all categories.

Output Schema

ParametersJSON Schema
NameRequiredDescription
markdownNoMarkdown-formatted context block with entity details
total_charsNoCharacter count of the markdown content

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. The description adds behavioral context by specifying the output is pre-formatted markdown and the downstream use case. It does not contradict annotations and provides useful information beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loaded with the core purpose, and every word adds value. No fluff or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of a full input schema (100% coverage), an output schema, and readOnlyHint annotation, the description is sufficient. It explains the output format and use case, but could optionally include details about the structure of the markdown or how 'most important entities' are determined.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for both parameters (limit and categories). The description does not add additional meaning beyond what the schema already provides, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool returns a pre-formatted markdown context block of important entities for session injection, naming the downstream system Perseus. It is specific about the verb (return) and resource (context block), and the purpose is distinct from sibling tools like mimir_recall.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for pre-loading AI agent context before work begins (session injection). However, it does not explicitly state when to avoid using this tool or mention alternatives among the many sibling mimir tools. The guidance is adequate but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_correctA
Destructive

Capture a user correction to the agent. Stores what went wrong, what the user said, and the lesson learned — as both a 'correction' entity and a journal entry. Use this every time the user corrects your approach. Enables the self-improving feedback loop: the agent learns from mistakes across sessions.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags for categorization
categoryNoEntity category (default: 'correction')correction
session_idNoSession identifier for traceability
visibilityNoVisibility: 'private', 'workspace', or 'public'workspace
task_contextYesWhat task was being attempted when the correction occurred
wrong_approachYesWhat the agent did that was wrong (the mistaken approach)
user_correctionYesWhat the user said to correct the agent (the right way)

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyNo
categoryNo
entity_idNoCreated correction entity ID
journal_idNoCreated journal entry ID
created_at_unix_msNo

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations give destructiveHint: true, which the description aligns with by stating it stores entities. The description adds value beyond annotations by explaining the dual storage (correction entity and journal entry) and the self-improving feedback loop across sessions. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences, front-loading the purpose and usage. Every sentence is informative and necessary: first sentence defines the action and storage, second covers when to use and the learning benefit. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 7 parameters and an output schema (not shown), the description covers the main action, usage, and outcome. It could mention side effects or prerequisites, but the core functionality is well explained for an AI agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so parameters are well documented. The description reinforces the key parameters (wrong_approach, user_correction, task_context) by naming them in prose, adding context that they capture what went wrong and what the user said.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Capture' and the resource 'user correction'. It distinguishes from siblings like mimir_remember and mimir_journal by specifying it stores corrections, not general facts. The phrase 'Use this every time the user corrects your approach' reinforces the specific purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says when to use the tool: 'every time the user corrects your approach'. It does not explicitly list alternatives or when not to use, but the context implies other tools for other purposes, making it clear enough for an AI agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_decayA
Destructive

Recalculate Ebbinghaus decay scores for all entities based on time since last access. Auto-archives entities that have fully decayed (score < 0.05). Run periodically to keep memory fresh — decayed entities surface less often in recall results.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
auto_archivedNoEntities auto-archived because decay fell below 0.05
entities_checkedNoTotal entities evaluated
entities_updatedNoEntities whose decay score changed
completed_at_unix_msNoCompletion timestamp

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral detail beyond the destructiveHint annotation by explaining auto-archiving of low-score entities and the effect on recall results. There is no contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences efficiently front-load the main action and then provide usage and consequence. Every sentence is valuable, with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, clear destructive side effect) and the existence of an output schema, the description covers all necessary aspects: what it does, when to use it, and behavioral outcomes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters and 100% schema coverage, the description's baseline is 4. It adds no parameter information because none is needed, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it recalculates Ebbinghaus decay scores and auto-archives fully decayed entities, specifying both the verb and resource. This distinguishes it from sibling tools like mimir_forget or mimir_purge by its specific decay recalculation purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description advises running periodically to keep memory fresh, providing clear usage context. However, it does not explicitly exclude use cases or compare alternatives among siblings, so guidance is good but not exhaustive.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_embedA
Destructive

Generate and store dense vector embeddings for entities via Ollama /api/embed. Supports single entity (category+key) or batch mode (batch_category). Requires --llm-endpoint to be set.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoEntity key for single mode
textNoText to embed (omit to use entity body_json)
categoryNoEntity category for single mode
batch_limitNoMax entities in batch mode
batch_categoryNoEmbed all entities in this category lacking embeddings

Output Schema

ParametersJSON Schema
NameRequiredDescription
embeddedNoNumber of entities embedded
dimensionsNoVector dimensions

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true, so the description's addition of 'Generate and store' and the dependency on Ollama adds some context. But it doesn't detail what gets overwritten or the exact side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences that front-load the purpose and then detail modes and requirements. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 5 optional parameters and an output schema, the description covers operation modes and prerequisites. It doesn't describe return values, but the output schema likely handles that. It's mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the description adds minimal value beyond the overview of modes. It reiterates the mode logic but doesn't enhance parameter understanding significantly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it generates and stores dense vector embeddings for entities, distinguishes between single and batch modes, and mentions the Ollama endpoint. This differentiates it from sibling tools like mimir_recall or mimir_remember.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains when to use single mode (category+key) vs batch mode (batch_category) and notes the requirement for --llm-endpoint. However, it lacks explicit exclusions or alternatives, so it's not a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_extractA
Read-only

Extract structured knowledge — facts, preferences, temporal events, episodes — from raw text or a stored entity, using a fully local, deterministic rule-based extractor (no cloud LLM, no embedding/API call, no network). Read-only: never writes to the store. Provide text, or category + key to extract from a stored entity.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoKey of a stored entity to extract from (requires category).
textNoRaw text to extract from. If omitted, category + key of a stored entity are used.
categoryNoCategory of a stored entity to extract from (requires key).
strategyNoExtractor strategy: 'rule_based' (local heuristics) or 'none' (no-op).rule_based

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsNoExtracted items, each an object with `kind` and `text`.
totalNoNumber of items extracted
strategyNoExtractor strategy used

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint=true), description adds 'never writes to the store' and details on deterministic, local, no-network operation. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences, front-loaded with main purpose. No redundant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given output schema exists, description covers inputs, usage, and behavioral traits sufficiently. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage 100%, description adds clarification on usage of `text` vs `category`+`key` and explains `strategy` enum values (local heuristics vs no-op). Adds meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb 'extract' and resource 'structured knowledge' from raw text or stored entity. Distinguishes from siblings by specifying local, deterministic rule-based extractor. No tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains usage options: provide `text` or `category`+`key` directly. Does not explicitly list when not to use or alternatives, but clear context is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_federateA
Destructive

Federate entities from one workspace to another. Exports entities scoped to from_workspace, remaps their workspace_hash to to_workspace, and imports them — effectively copying or moving knowledge between workspaces. Use this for cross-agent or cross-project knowledge sharing without manual file transfer.

ParametersJSON Schema
NameRequiredDescriptionDefault
vault_dirNoTemporary vault directory for the intermediate .md export files/tmp/mimir-federate
to_workspaceYesTarget workspace hash to import entities into
from_workspaceYesSource workspace hash to export entities from

Output Schema

ParametersJSON Schema
NameRequiredDescription
exportedNoNumber of entities exported from the source workspace
importedNoNumber of entities imported into the target workspace
remappedNoNumber of entities whose workspace_hash was remapped
import_errorsNoAny errors encountered during import

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide destructiveHint: true, so description doesn't need to repeat that, but the description says 'copying or moving' without clarifying whether source entities are preserved. No mention of authorization or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences: purpose, mechanism, use case. Front-loaded with action verb. No unnecessary words. Efficient and readable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists and parameter coverage is high. However, the tool involves data transfer and potential destructiveness; the description should clarify what happens to source entities and handling of duplicates. Lacks these details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with good parameter descriptions. The tool description reiterates the purpose of each parameter without adding new details beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it federates entities between workspaces via export, remap, import. It distinguishes from manual file transfer but does not explicitly name sibling tools like mimir_vault_export/import or mimir_share, though the usage hint helps.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this for cross-agent or cross-project knowledge sharing without manual file transfer', indicating when to use. Lacks explicit when-not-to-use or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_forgetA
Destructive

Soft-delete an entity by setting archived=1. The entity is hidden from queries but recoverable. Use this to clean up stale or incorrect facts without permanent data loss.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesEntity key to archive
reasonNoReason for archiving, logged for audit trail
categoryYesEntity category to archive

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyNoEntity key
foundNoWhether the entity was found and archived
categoryNoEntity category

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, the description adds that it is a soft-delete (recoverable) and that the entity becomes hidden from queries. This provides useful behavioral context that annotations alone do not convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the key action and effect. Every sentence adds value: the first explains what it does, the second when to use it. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, presence of an output schema, and full schema parameter descriptions, the description adequately covers purpose, behavior, and usage context. It is sufficient for an agent to select and invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already includes descriptions for all three parameters. The description adds no additional meaning beyond what the schema provides, meeting the baseline for this score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('soft-delete an entity'), the mechanism ('setting archived=1'), and the effect ('hidden from queries but recoverable'). It implies a contrast with permanent deletion tools like purging, distinguishing its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use it to 'clean up stale or incorrect facts without permanent data loss,' providing clear context. It does not, however, mention when not to use it or list alternative sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_get_entityA
Read-only

Get an entity by ID with its full body_json content. Use after mimir_recall with preview_cap to read the complete body of a truncated result. The drill-down footer embedded in preview-capped results references this tool with the entity ID to use.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEntity ID to retrieve (from recall result id field or preview cap footer)

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
keyNo
layerNo
statusNo
categoryNo
always_onNo
body_jsonNoFull entity body content
certaintyNo
decay_scoreNo
entity_typeNo
retrieval_countNo

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description aligns with the readOnlyHint annotation by stating 'Get an entity'. It adds behavioral context that the tool retrieves full body_json content, which is beyond what the annotation provides. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each providing essential information: purpose, usage recommendation, and parameter source. It is efficient with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, output schema present), the description fully covers purpose, usage context, and parameter explanation. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema coverage is 100%, so baseline is 3. The description adds extra context by explaining that the ID comes from a recall result or preview cap footer, which goes beyond the schema description alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get an entity by ID with its full body_json content', using a specific verb and resource, and distinguishes it from the sibling tool mimir_recall which returns preview-capped results.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use after mimir_recall with preview_cap to read the complete body of a truncated result', providing clear context for when to use this tool, though it does not explicitly mention when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_healthA
Read-only

Check whether the Mimir server and its SQLite database are healthy. Returns a simple healthy/unhealthy status. Use this for health checks and monitoring, not for detailed stats (use mimir_stats).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
statusNoServer health status

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. Description adds that it checks server and DB, and returns simple status, which is useful context but doesn't go beyond what's expected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words, front-loaded with purpose and usage guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Fully covers what the tool does, when to use it, and what it returns. Output schema exists, so no need to detail return structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters; baseline 4 applies as description doesn't need to add parameter info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states verb (check), resource (Mimir server and its SQLite database), and output (healthy/unhealthy). Distinguishes from sibling mimir_stats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says to use for health checks and monitoring, and not for detailed stats, naming the alternative tool mimir_stats.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_ingestA
Destructive

Sync external data connectors (GitHub issues, file watcher) into Mimir. Call with no arguments to run all enabled connectors, or specify a connector name to run only that one. Use dry_run=true to preview without storing.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoPreview documents without storing them
connectorNoSpecific connector to run (omit for all enabled)

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorsNoError messages from connectors that failed
dry_runNoWhether this was a dry run
ingestedNoNumber of documents ingested (or would be ingested in dry run)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide destructiveHint: true, indicating mutation. The description adds context about preview mode (dry_run) and connector selection, but does not detail potential side effects like overwriting or merging behavior, which would be useful. Overall, it adds some value beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise (two sentences), front-loads the main purpose, and avoids any unnecessary words or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations and output schema present, the description adequately covers the tool's purpose, invocation patterns, and preview capability. It does not explain the exact behavior of syncing (e.g., upsert vs replace), but that is likely implied by the tool's name and common patterns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description reiterates the dry_run and connector usage but does not add significant new semantic information beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool syncs external data connectors (GitHub issues, file watcher) into Mimir, distinguishing it from many sibling tools that are about querying, managing, or modifying Mimir data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to call with no arguments (run all enabled connectors) and when to specify a connector, and mentions dry_run for preview. It does not explicitly discuss when not to use it or alternatives, but the context is sufficient for an AI agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_ingest_fileA
Destructive

Ingest a document file into memory by extracting its text LOCALLY (no cloud, no network). Plaintext/markdown/structured-text work in any build; DOCX and PDF require a binary built with --features multimodal (otherwise a clear error is returned). The extracted text is stored as a normal entity (recallable via mimir_recall). category defaults to 'document', key defaults to the file name.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoEntity key (default: the file name)
pathYesPath to the document file to ingest
tagsNoOptional tags
categoryNoEntity category (default 'document')

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoStored entity id
keyNo
charsNoCharacters of text extracted
actionNocreated or updated
categoryNo

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behaviors beyond the destructiveHint annotation: it is local-only ('no cloud, no network'), describes format support (plaintext/markdown/structured-text work always, DOCX/PDF require a feature flag), and explains that extracted text is stored as a normal entity recallable via mimir_recall. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact (three sentences) and front-loaded with the core action. Every sentence adds essential information: what it does, where it runs, format quirks, defaults, and recall mechanism. No redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (format-dependent behavior, local processing, default values), the description covers all necessary aspects: processing location, format support with fallback, default values, and integration with recall. The presence of an output schema is noted but not required for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds valuable defaults: key defaults to file name, category defaults to 'document'. This enriches the schema-defined parameters. The description also implies that path is the primary parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool ingests a document file into memory by extracting text locally. It specifies the verb 'Ingest', the resource 'document file', and the scope (local extraction, no cloud/network). It distinguishes from siblings like mimir_ingest (general ingest) by focusing on file-based ingestion with local text extraction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear guidance on when to use the tool (ingesting document files) and mentions limitations (DOCX/PDF require --features multimodal, otherwise error). It does not explicitly list when not to use, but the context is sufficient. It implies an alternative (mimir_recall for retrieval) but does not contrast with other ingest tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_journalA
Destructive

Append a structured decision/observation log entry. Uses evaluated/acted/forward pattern: what was considered, what was done, and what happens next. Essential for audit trails and timeline reconstruction.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyNoRelated entity key for linking
actedNoWhat action was taken and why
forwardNoWhat the plan is going forward
agent_idNoAgent identity (v1.2.0). Records which agent created this journal event.
categoryNoRelated entity category for linking
entity_idNoRelated entity ID for linking
evaluatedNoWhat was evaluated: options considered, context, constraints
event_typeNoEvent type: 'decision', 'observation', 'action', 'error'decision

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoJournal event ID
event_typeNoEvent type recorded
created_at_unix_msNoCreation timestamp in unix milliseconds

TDQS

A4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint: true, suggesting the tool may have destructive side effects, but the description only says 'Append,' which implies additive behavior. No explanation of why it's destructive, what gets destroyed, or other behavioral traits beyond the annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: the first states the purpose, the second explains the pattern. No superfluous content. Front-loaded with the core action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema (not shown but present), the description does not need to explain return values. Parameter count is 8, all described in schema and enriched by pattern explanation. The description is complete for a logging tool with clear audit trail purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with descriptions for all 8 parameters. The description adds value by explaining the 'evaluated/acted/forward' pattern, which provides context for how parameters like 'evaluated', 'acted', and 'forward' relate to each other, enriching the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Append a structured decision/observation log entry.' It uses specific verbs ('append', 'log') and names the resource ('decision/observation log entry'). Sibling tools like mimir_recall and mimir_context are differentiated by this logging focus.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description mentions 'essential for audit trails and timeline reconstruction' but does not explicitly state when to use this tool versus alternatives (e.g., mimir_recall for retrieval, mimir_context for context). No exclusions or alternative suggestions are provided, leaving ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_maintenanceA
Destructive

Database maintenance operations: deduplicate entities with identical (category, key), detect orphan journal entries and links, vacuum (reclaim disk space), reindex FTS5. Set dry_run=true to preview. Use 'all' to run everything.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoRun all maintenance operations (dedup, orphans, vacuum, reindex)
dedupNoFind duplicate (category, key) entities and archive the oldest
vacuumNoRun SQLite VACUUM to reclaim disk space
dry_runNoIf true, preview changes without writing
orphansNoDetect journal entries and links pointing to non-existent entities
reindexNoRebuild the FTS5 search index from entities table

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorsNoErrors encountered during maintenance
dry_runNo
dedup_archivedNoNumber of duplicate entities archived
orphan_links_foundNoOrphan links detected
reindex_rows_affectedNoRows reindexed into FTS5
vacuum_reclaimed_bytesNoDisk space reclaimed by VACUUM
orphan_journal_entries_foundNoOrphan journal entries detected

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that deduplication archives the oldest entity, vacuum reclaims disk space, and reindex rebuilds FTS5. It also mentions dry_run for preview. This adds detail beyond the 'destructiveHint' annotation, though it does not specify whether orphan detection deletes or only lists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences. The first immediately states the tool's purpose and lists operations, the second gives actionable usage tips. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a maintenance tool with 6 boolean parameters and an output schema, the description covers the key operations and gives usage hints. It doesn't mention prerequisites or safety notes, but the destructiveHint annotation and dry_run option partially address that. Overall, it is sufficient for basic use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, each parameter already has a description. The description adds value by showing how to combine parameters (dry_run with all) and the general usage pattern, providing context beyond the schema's individual definitions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly lists the specific maintenance operations (deduplicate, detect orphans, vacuum, reindex) and states it covers database maintenance. This clearly distinguishes it from sibling tools like mimir_ask or mimir_compact by its domain and actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives basic usage tips (dry_run=true to preview, use 'all' to run everything) but does not explain when to prefer this tool over individual siblings like mimir_prune or mimir_reindex. There is no explicit when-not or alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_migrateA
Destructive

Migrate a v0.1.x Mimir database to the current v0.5.0 schema. Reads the old database, converts memories to the entity model, and merges into the current database. Use this once per legacy database during upgrade.

ParametersJSON Schema
NameRequiredDescriptionDefault
from_pathYesAbsolute path to the v0.1.x SQLite database file to migrate

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorsNoAny errors encountered during migration
entities_createdNoNew entities created from old memories
entities_updatedNoExisting entities updated during merge
total_old_memoriesNoNumber of memories found in the old database
completed_at_unix_msNoCompletion timestamp

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explains the process (reads old DB, converts, merges) adding behavioral context beyond the destructiveHint annotation, confirming it modifies the current database.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences front-load the main action without any extraneous words, every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description covers purpose, process, and usage comprehensively for a one-time migration tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage and only one parameter fully described in the schema, the description adds no additional parameter meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool migrates a v0.1.x Mimir database to v0.5.0 schema, distinguishing it from siblings that perform other operations like ask or forget.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use this once per legacy database during upgrade' provides explicit when-to-use context, but no exclusions or alternatives are mentioned, which is acceptable given the one-time migration nature.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_pruneA
Destructive

Bulk archive entities by category, decay threshold, or age. Use dry_run=true to preview without archiving. Useful for cleaning stale or low-quality memories.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax entities to prune (0 = unlimited)
dry_runNoPreview without archiving
categoryNoArchive entities in this category
min_decayNoArchive entities with decay_score below this threshold
older_than_daysNoArchive entities older than this many days

Output Schema

ParametersJSON Schema
NameRequiredDescription
reasonNo
dry_runNo
archivedNo
examinedNo

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide destructiveHint=true; description adds that dry_run allows preview and mentions cleaning purpose, but does not detail what 'archive' entails (e.g., reversibility, side effects) or how entities are affected beyond filtering criteria.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences: first states action and criteria, second provides a tip and use case. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 5 parameters, destructive behavior, and an output schema, the description covers core action and a preview tip but omits behavioral details (e.g., what 'archive' means, error handling, or output format). Output schema exists, so return values need not be explained, but other gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% coverage with descriptions for all parameters. Description adds context for dry_run and relates cleaning to decay/age, but this is minimal beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it bulk archives entities by category, decay threshold, or age, with the verb 'archive' and resource 'entities'. It hints at cleaning stale memories but does not explicitly distinguish from siblings like mimir_forget or mimir_purge.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides guidance to use dry_run=true for preview and states it's useful for cleaning stale memories, but lacks explicit when-not-to-use or alternative sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_purgeA
Destructive

Permanently delete all archived entities and run VACUUM to reclaim disk space. This is the only operation that actually removes entities — prune/forget only soft-archive. Archived entities are DELETED and NOT RECOVERABLE. Supports dry_run=true to preview first.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNoIf true, report what would be deleted without making changes

Output Schema

ParametersJSON Schema
NameRequiredDescription
dry_runNoWhether this was a dry run
bytes_freedNoBytes reclaimed after VACUUM (0 in dry-run mode)
entities_deletedNoNumber of archived entities permanently deleted
completed_at_unix_msNoCompletion timestamp

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, the description explicitly states that archived entities are deleted and NOT RECOVERABLE, and that VACUUM is performed. This adds crucial behavioral context not captured by annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences convey the core action, context, sibling differentiation, and parameter hint. No wasted words; front-loaded with the primary function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema covers return values, the description fully addresses what the tool does, side effects (irreversibility), comparison to siblings, and parameter usage. Complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and the description adds value by explaining that dry_run=true allows preview without changes, which clarifies the parameter's purpose beyond its schema description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: permanently delete archived entities and run VACUUM. It distinguishes from sibling tools (prune/forget) by specifying that it is the only operation that actually removes entities.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains that this tool is for permanent deletion versus soft-archive from prune/forget, and mentions dry_run preview. It does not explicitly state prerequisites or when not to use, but the contrast with siblings provides sufficient guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_recallA
Read-only

Search entities with FTS5 keyword search. Words are OR'd together. Returns entities sorted by relevance with expanded content/summary fields at top level. Use this to find previously stored facts, decisions, or architecture notes. When encryption is enabled, body_json is decrypted transparently.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoSearch mode: 'fts5' (keyword), 'dense' (vector), or 'hybrid' (fused via RRF)fts5
typeNoFilter by entity type, e.g. 'insight' or 'reference'
limitNoMaximum number of results to return (max 1000)
queryYesSearch query — words are OR'd together for broad recall
offsetNoNumber of results to skip for pagination
agent_idNoAgent identity filter (v1.2.0). When set, only entities with a matching agent_id are returned. Omit for no agent filtering.
categoryNoFilter by category, e.g. 'decision' or 'architecture'
expansionNoConfiguration for FTS5 query expansion using Porter stemming
min_decayNoMinimum decay score threshold 0.0–1.0 — higher values return fresher results
topic_pathNoFilter by topic path prefix, e.g. 'architecture/'
preview_capNoIf set, truncate body_json at N chars and append drill-down footer. Use mimir_get_entity to read full body.
trust_weightNoAdditive boost for provenance/trust (default 0.15, on by default) — verified sources rank above unverified AI drafts on the same topic. Verified entities get the full boost; unverified ones are scaled by certainty. Set 0 to disable. Never penalizes.
content_weightNoAdditive boost for content witness — rewards entities whose body text literally contains query terms. Damped by body length. Never penalizes.
workspace_hashNoWorkspace scope filter (v1.2.0). When set, only entities with a matching workspace_hash are returned. Omit for no workspace filtering.
include_archivedNoInclude archived (soft-deleted) entities in results
diversity_halvingNoPer-keyword diversity quota factor (1.0=disabled). Each distinct matched keyword gets ceil(N x halving^n) slots — first keyword N, second N/2, etc.
recency_half_life_secsNoTime-aware ranking for mode='hybrid' (default off). When set, each fused result's score is multiplied by 0.5^(age / this), where age is seconds since the memory was created — so a memory this many seconds old keeps half its weight and recent context outranks older but similar hits. Omit for relevance-only ranking.

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsNoMatching entities with expanded body_json fields at top level
totalNoNumber of results returned
variantsNoNumber of query variants used when expansion is enabled

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true; description adds valuable behavioral details: OR'ing of words, relevance sorting, expanded fields, and transparent decryption of body_json, which is beyond what annotations offer.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with key information, no fluff. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite a complex tool with 17 parameters and output schema, the description omits mention of search modes (fts5, dense, hybrid) and filtering capabilities, leaving gaps for a complete understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with each parameter already described; the tool description adds no extra meaning beyond the schema, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it searches entities with FTS5 keyword search, but does not explicitly differentiate from sibling tools that may offer alternative search methods like vector or hybrid.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides use cases (find facts, decisions, architecture notes) but lacks explicit guidance on when not to use or when alternatives like mimir_recall_when might be better.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_recall_whenA
Read-only

Search entities whose recall_when triggers match a given context. Use this for proactive just-in-time memory injection — before writing code, before plans, at session start. Pass the current task description as context and get back memories that declared they should be recalled in similar situations.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum entities to return (default 10, max 100)
contextYesThe current task or context description to match against recall_when triggers

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsNo
totalNo
contextNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so the safety profile is clear. The description adds behavioral context (proactive, context-matching) but does not detail edge cases (e.g., no match behavior, performance). With annotations covering the main safety aspect, a score of 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The first sentence defines the function, the second gives concrete usage scenarios. Front-loads key information efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the moderate complexity (2 params, output schema present), the description covers purpose, usage, and context. With output schema, return details are not needed. Some might expect a note on default limit, but schema covers that. Score 4 reflects slight gap in explaining the 'recall_when trigger' concept.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so both parameters are documented. The description adds minimal extra meaning beyond the schema: it reinforces that 'context' is the task description to match triggers. This is marginal improvement, hence baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches entities based on recall_when triggers matching a given context. It uses specific verb and resource ('Search entities whose recall_when triggers match') and distinguishes from sibling tools like mimir_recall by focusing on trigger-based recall.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use: 'for proactive just-in-time memory injection — before writing code, before plans, at session start.' It implies usage context but does not explicitly mention when not to use or name alternatives like mimir_recall.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_reindexA
Destructive

Rebuild the FTS5 search index from the entities table. Repairs index drift — e.g. after a direct SQLite write, an interrupted archive, or a legacy database written before the atomic prune/forget fixes — so archived entities stop surfacing in recall/search. Returns the number of entities reindexed.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
reindexedNoNumber of non-archived entities indexed into FTS5

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint=true. The description adds the return value (number reindexed) and specific triggers, but does not disclose other behavioral traits like potential locking, idempotency, or performance impact, which would be helpful.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The first sentence states the action, the second provides context and return. Efficiently front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with destructive hint and output schema, the description covers purpose, triggers, and return. Could mention whether it is safe to run repeatedly, but overall sufficient given low complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so no parameter documentation is needed. Baseline is 4 for zero-parameter tools, and the description does not need to add parameter info.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool rebuilds the FTS5 search index, with specific triggers like direct SQLite writes or interrupted archives. It distinguishes from siblings by focusing on index drift repair for recall/search, though it could explicitly contrast with other maintenance tools like mimir_compact.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists when to use the tool (after direct SQLite write, interrupted archive, legacy database). It does not provide when-not-to-use or alternatives, but the context is sufficiently clear for the intended use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_rememberA
Destructive

Store or update an entity by (category, key). Idempotent — call as often as you want, same key returns an update. Optional always_on=true injects entity into every mimir_context. Optional certainty (0.0-1.0) is used by mimir_conflicts for typed-entity conflict detection. Use this for saving facts, decisions, architecture notes, and conventions. When encryption is enabled, body_json is encrypted at rest with AES-256-GCM.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesUnique key within the category, e.g. 'use-postgres-16' or 'deployment-strategy'
tagsNoTags for categorization and cross-referencing
typeNoEntity type: 'insight', 'architecture', 'decision', 'reference', 'convention'insight
statusNoEntity status: 'active', 'draft', 'deprecated'active
agent_idNoAgent identity (v1.2.0). Tracks which agent wrote this entity. Used for agent attribution and context filtering.
categoryYesEntity category: 'decision', 'architecture', 'convention', 'insight', or custom
body_jsonYesJSON object with the entity body — store content, summary, and any custom fields here
importanceNoInitial importance 0.0–1.0 — sets the starting decay score
topic_pathNoHierarchical topic path, e.g. 'architecture/database/postgres'
workspace_hashNoWorkspace scope identifier (v1.2.0). Empty = global. Entities with a workspace_hash are invisible to recall queries scoped to a different workspace.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNoEntity ID, e.g. 'mem-a1b2c3d4e5f6'
keyNoEntity key
actionNo'created' for new entities, 'updated' for existing ones
categoryNoEntity category

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral details beyond the annotations: idempotency, encryption at rest (AES-256-GCM) when enabled, and the effect of always_on=true injecting into mimir_context. This complements the destructiveHint annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, consisting of four clear sentences. It front-loads the core function and immediately follows with key behaviors and use cases. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (10 parameters, 3 required), the description covers essential aspects: idempotency, encryption, always_on, certainty usage, and appropriate use cases. An output schema exists, so return values need not be described. It could mention behavior on conflict or error, but overall it is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the schema already documents all parameters. The description adds context for key parameters (e.g., key as unique within category, body_json as JSON object) and explains the purpose of optional fields like always_on and certainty. It does not cover every parameter in detail but provides meaningful usage guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Store or update an entity by (category, key)' and lists specific use cases such as saving facts, decisions, architecture notes, and conventions. This distinguishes it from sibling retrieval or deletion tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly mentions when to use the tool ('for saving facts, decisions, architecture notes, and conventions') and describes optional parameters like always_on and certainty. However, it does not explicitly state when not to use it or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_scoreA
Destructive

Assign a quality score (0.0–1.0) to an entity. Verified entities with high scores resist decay and rank higher in recall results. Use this to mark entities as accurate, verified, or deprecated.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesEntity key to score
scoreYesQuality score 0.0–1.0. 1.0 = verified, 0.5 = neutral, 0.0 = low quality
categoryYesEntity category to score

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyNoEntity key
foundNoWhether the entity was found
scoreNoQuality score assigned
categoryNoEntity category

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate destructiveHint=true. The description adds that high scores resist decay and rank higher, but lacks details on idempotency, reversibility, or required permissions. The behavioral context is sufficient but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loaded with the action and followed by consequences. Every sentence adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple scoring tool, the description covers purpose, effect, and usage. It does not explain the output format, but an output schema exists. It could mention prerequisites or error cases, but overall it is fairly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%. The description does not add new meaning beyond what the schema provides for the three parameters. The baseline of 3 is appropriate as the schema already documents parameters clearly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Assign', the resource 'entity', and the score range 0.0-1.0. It explains the effect on decay and recall ranking, and lists usage scenarios (mark as accurate, verified, deprecated). This distinguishes it well from the many sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides context on when to use the tool (to assign quality scores and mark entities) and hints at the consequences. However, it does not explicitly state when not to use it or compare to alternatives, which would further improve clarity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_shareA
Destructive

Share an entity to another workspace. Copies the entity (by category + key) from its current workspace into the target workspace, preserving content and metadata while generating a new ID. The original entity is unchanged. Use this for controlled cross-workspace knowledge transfer.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesEntity key to share
categoryYesEntity category to share
to_workspaceYesTarget workspace hash to copy the entity into

Output Schema

ParametersJSON Schema
NameRequiredDescription
actionNo'created' or 'updated'
shared_idNoID of the new shared copy
to_workspaceNoTarget workspace the entity was copied to
from_workspaceNoSource workspace the entity was copied from

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description states the original entity is unchanged, but the destructiveHint annotation is true. The description does not clarify if the tool can overwrite an existing entity in the target workspace or if it always creates a new one. Additionally, it does not mention permission requirements or other side effects, leaving some behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, each serving a clear purpose: stating the action, detailing the effect, and providing usage guidance. No extraneous words, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (3 required params, no enums, output schema present), the description covers the core behavior well. However, it lacks details on source workspace determination, error handling for non-existent entities, and potential overwrite behavior. The presence of an output schema likely covers return values, so the description is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema covers all three parameters with descriptions, achieving 100% coverage. The description adds context that the source workspace is implied (not a parameter), which is a minor addition. Baseline 3 is appropriate as the schema already provides adequate information.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool copies an entity from its current workspace to another workspace, preserving content and metadata while generating a new ID. It distinguishes this from sibling tools like mimir_migrate or mimir_ingest by specifying the copy action and cross-workspace transfer.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Use this for controlled cross-workspace knowledge transfer,' providing clear guidance on when to use the tool. It does not mention alternatives or when not to use it, but the context is sufficient for the primary use case.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_state_deleteA
Destructive

Delete a state entry by key. Permanent removal — unlike mimir_forget which is a soft-delete. Use this to clean up expired or unused state entries.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesState key to permanently delete

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyNoKey that was deleted
foundNoWhether the key existed and was deleted

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, indicating the tool is destructive. The description adds that deletion is permanent and contrasts with soft-delete, providing useful context beyond the annotation. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, each serving a distinct purpose: first states the action, second adds usage guidance and sibling differentiation. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter tool with an output schema (present), the description adequately covers purpose, usage, and behavioral nuance. It is complete for the agent to correctly select and invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already describes the key parameter as 'State key to permanently delete'. The description mentions 'by key' but does not add substantial meaning beyond the schema, meeting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool deletes a state entry by key, using a specific verb and resource. It distinguishes from the sibling tool mimir_forget, which is a soft-delete, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use: 'Use this to clean up expired or unused state entries.' Also clarifies when not to use by contrasting with mimir_forget, providing clear context for decision-making.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_state_getA
Read-only

Get a state value by key. Returns null if the key has expired or doesn't exist. Use this instead of mimir_recall for transient session state that doesn't need FTS5 search.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesState key to retrieve

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyNoState key requested
foundNoWhether the key exists and hasn't expired
valueNoJSON value if found
created_at_unix_msNoCreation timestamp
expires_at_unix_msNoExpiration timestamp if TTL was set

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true. The description adds behavioral detail beyond annotations by stating 'Returns null if the key has expired or doesn't exist,' which informs the agent about return behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. The description is front-loaded with the action, then provides return behavior and usage guidance, all in a compact form.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 parameter, output schema exists), the description covers purpose, null handling, and when to use, which is adequate. A minor gap is no mention of expiration behavior details, but overall sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents the 'key' parameter. The description does not add extra meaning beyond what is in the schema, meeting the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get a state value by key' with a specific verb and resource. It distinguishes itself from the sibling tool mimir_recall by mentioning transient session state and FTS5 search, ensuring no ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit guidance is provided: 'Use this instead of mimir_recall for transient session state that doesn't need FTS5 search.' This clearly tells the agent when to use this tool over alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_state_listA
Read-only

List all state keys, optionally filtered by a key prefix. Use this to discover what state entries exist without knowing exact keys ahead of time.

ParametersJSON Schema
NameRequiredDescriptionDefault
prefixNoOnly return keys that start with this prefix

Output Schema

ParametersJSON Schema
NameRequiredDescription
keysNoMatching state keys
totalNoNumber of keys returned

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, so description adds value by specifying the listing behavior and prefix filtering, but could mention potential limits or pagination.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences: first defines action, second provides use case. No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given presence of an output schema and single optional parameter, description is mostly complete; could explicitly state that it returns a list of keys.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a documented prefix parameter; description restates the parameter briefly but adds no new details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it lists all state keys with optional prefix filtering, distinguishing it from sibling tools like mimir_state_get, mimir_state_set, and mimir_state_delete.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear context about when to use (discover state entries without exact keys) but does not explicitly mention when not to use or contrast with alternatives like mimir_state_get.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_state_setA
Destructive

Set a key-value state entry with optional TTL for auto-expiration. Use this for session state, temporary flags, or configuration values that should expire after a set time.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesState key — unique identifier for this state entry
value_jsonYesJSON value to store
ttl_secondsNoTime-to-live in seconds. Entry auto-expires and returns null after this duration. Omit for permanent state.

Output Schema

ParametersJSON Schema
NameRequiredDescription
keyNoState key set
ttl_secondsNoTTL that was set, if any
expires_at_unix_msNoExpiration timestamp in unix milliseconds, if TTL was set

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations mark destructiveHint=true. Description adds TTL auto-expiration and permanent state option. Does not explicitly mention overwriting behavior, but that is implied by 'Set' and output schema may cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff. First sentence states function, second gives usage context. Perfectly compact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple setter with 3 parameters. Covers purpose, use cases, and TTL behavior. Output schema likely handles return values. Missing explicit overwriting note, but not critical.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%. Description reinforces TTL parameter purpose and connects to use cases, adding marginal semantic value beyond schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Set a key-value state entry' with a specific verb and resource. It distinguishes itself from sibling state tools (get, delete, list) by focusing on creation/update with optional TTL.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit use cases: session state, temporary flags, configuration values with TTL. Does not specify when not to use or contrast with alternatives like mimir_remember, but the context is clear enough for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_statsA
Read-only

Return comprehensive database statistics: entity counts by category, type, and decay layer; journal event count; state entry count; database file size; and date range of stored data.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
by_typeNoEntity counts grouped by type
by_layerNoEntity counts grouped by decay layer (buffer/working/core)
by_categoryNoEntity counts grouped by category
newest_unix_msNoNewest entity creation timestamp
oldest_unix_msNoOldest entity creation timestamp
total_entitiesNoTotal entities in the database
db_file_size_bytesNoDatabase file size on disk in bytes
total_state_entriesNoTotal state entries (including expired)
total_journal_eventsNoTotal journal events recorded

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, which is consistent with the description. The description adds value by detailing exactly what statistics are returned, which goes beyond the annotation's simple read-only indication. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently enumerates all returned statistics without redundancy. It is front-loaded with the main verb and resource, and every phrase adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema exists (as per context signals), the description is complete. It covers all aspects of the output, and the agent can rely on the output schema for detailed structuring.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters, so the description doesn't need to explain parameters. However, it compensates by describing the output, which is useful for an agent. Baseline for 0 params is 4, and this description meets that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses specific verbs ('Return') and clearly lists the types of statistics (entity counts by category, type, decay layer; journal count; state count; file size; date range). It distinguishes itself from sibling tools like 'mimir_health' which likely focuses on system status, whereas this focuses on database content statistics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly states its purpose (obtaining comprehensive stats), and given there are no parameters or configuration, the use case is clear. It doesn't explicitly state when not to use, but the context of sibling tools provides differentiation. A score of 4 is appropriate as it's clear but lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_supersedeA
Destructive

Create a 'supersedes' relationship from a new fact to an old one, setting the old entity's status to 'deprecated'. Use this when a newer entity makes an older one obsolete.

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNoReason for superseding (recorded in archive_reason)
to_keyYesKey of the NEW entity that supersedes
from_keyYesKey of the OLD entity being superseded
to_categoryYesCategory of the NEW entity that supersedes
relationshipNoLink relationship type (default: 'supersedes')supersedes
from_categoryYesCategory of the OLD entity being superseded

Output Schema

ParametersJSON Schema
NameRequiredDescription
relationshipNo
to_entity_idNoID of the new (superseding) entity
to_entity_keyNo
from_entity_idNoID of the old (superseded) entity
status_updatedNoNew status of the old entity (always 'deprecated')
from_entity_keyNo
to_entity_categoryNo
from_entity_categoryNo

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only indicate destructiveHint=true, but the description adds that the old entity's status becomes 'deprecated', which is valuable behavioral context. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. Purpose and usage are front-loaded, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description doesn't need to explain return values. It completely covers purpose, effect, and usage for this focused tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline 3. The description does not add extra meaning beyond the schema; the schema already describes each parameter clearly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it creates a 'supersedes' relationship from new to old fact and sets old entity to 'deprecated'. The verb 'Create' and resource 'supersedes relationship' are specific, distinguishing it from generic linking tools like mimir_link.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this when a newer entity makes an older one obsolete.' Provides clear context for when to use. No exclusions or alternatives mentioned, but the sibling tools list includes many others, so this is adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_synthesizeA
Destructive

LLM-driven session synthesis. Reviews a session transcript and extracts structured lessons: what worked (success), what failed (failure), what was corrected (correction), what was abandoned (dead_end), and key decisions made (decision). Each lesson becomes an entity linked to a synthesis journal entry. Requires --llm-endpoint to be configured. This is the Perplexity-Brain-style overnight synthesis loop for agent self-improvement.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoTags applied to all synthesized entities
session_idNoSession identifier for traceability
visibilityNoVisibility for synthesized entitiesworkspace
session_contentYesFull session transcript to synthesize lessons from

Output Schema

ParametersJSON Schema
NameRequiredDescription
dry_runNo
lessonsNoExtracted lessons with type, summary, evidence, and confidence
journal_idNo
entities_createdNoNumber of lesson entities created
completed_at_unix_msNo

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true. The description adds that the tool creates entities linked to a journal entry, implying state mutation. But it does not detail the extent of destruction (e.g., whether prior entities are overwritten) or other side effects beyond creation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (4 sentences) and front-loads the core purpose. Every sentence adds value: describing the action, the output structure, a prerequisite, and the broader goal. No redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (4 params, output schema exists), the description covers the synthesis process and prerequisite. It does not need to explain return values due to output schema. Minor gap: no mention of error conditions or performance implications.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with each parameter having a description. The description adds minimal extra meaning beyond listing the lesson types and mention of tags/session_id/visibility in context, but does not significantly enhance parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs 'session synthesis' and extracts specific structured lessons (success, failure, correction, dead_end, decision). It distinguishes itself from sibling tools like mimir_ask or mimir_ingest by focusing on post-session analysis and entity creation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It mentions the prerequisite 'Requires --llm-endpoint to be configured' and positions the tool as an 'overnight synthesis loop for agent self-improvement', implying a use case. However, it lacks explicit when-not-to-use or alternatives, leaving interpretation open.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_timelineA
Read-only

Query journal events by time range with optional filters for event type, category, or entity. Use this to reconstruct the decision history and understand what happened when.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of events to return (max 1000)
to_msNoEnd time boundary in unix milliseconds
offsetNoNumber of events to skip for pagination
from_msNoStart time boundary in unix milliseconds
categoryNoFilter by related entity category
entity_idNoFilter by related entity ID
event_typeNoFilter by event type: 'decision', 'observation', 'action', 'error'

Output Schema

ParametersJSON Schema
NameRequiredDescription
itemsNoJournal events matching the query
totalNoNumber of events returned

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, and the description's 'Query' aligns with that. The description adds context about reconstructing history but does not disclose additional behavioral traits like rate limits or data retention. With annotations present, the description provides marginal extra value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences that efficiently convey the tool's purpose and recommended use. No superfluous information; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (7 optional parameters with defaults) and the availability of an output schema, the description covers the core use case. It does not mention pagination or time format details, but the schema handles those. Slight lack of completeness in explaining how filters combine.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description summarizes optional filtering by event type, category, or entity but does not add deeper semantics or syntax details beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Query' and resource 'journal events' with time range and optional filters. It provides a specific use case ('reconstruct decision history') but does not explicitly differentiate from sibling tools like mimir_journal or mimir_recall.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description suggests using the tool to reconstruct decision history, implying a usage context. However, it does not specify when not to use it or mention alternative tools for related queries, leaving room for ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_traverseA
Read-only

Walk the entity link graph starting from a given entity up to a configurable depth. Returns a chain of linked entities — useful for exploring dependencies, decision trees, and relationship graphs built via mimir_link.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesStarting entity key
categoryYesStarting entity category
max_depthNoMaximum traversal depth from the starting entity
max_nodesNoMaximum total nodes to traverse before stopping

Output Schema

ParametersJSON Schema
NameRequiredDescription
entityYesRoot entity with its links
traversedYesLinked entities traversed from root

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, indicating no side effects. The description adds that the tool walks the graph to a configurable depth and returns a chain of linked entities, which provides additional behavioral context beyond the annotation. It also mentions stopping conditions (max_depth, max_nodes). No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and result. Every sentence adds value: first sentence describes what the tool does, second gives use cases. No redundancy or unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters and an output schema exists, the description adequately covers the input (starting entity, configurable limits) and purpose (exploring graphs). It omits details about output format but that's acceptable since an output schema is present. Missing explicit mention of dependency on mimir_link, but it's implied in 'relationship graphs built via mimir_link.'

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema has 100% coverage with descriptions for all 4 parameters. The overall description adds little beyond the schema: it restates that the traversal starts from a given entity and is configurable. Baseline is 3 due to high schema coverage; the description does not significantly enhance parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Walk the entity link graph') and resource ('starting from a given entity'), clearly distinguishing it from siblings like mimir_link (which creates links) and mimir_get_entity (which retrieves a single entity). It also mentions the configurable depth and return type, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states the tool is 'useful for exploring dependencies, decision trees, and relationship graphs,' which gives clear context for when to use it. However, it does not explicitly mention when not to use it or direct alternatives, such as using mimir_get_entity for a single node or mimir_link for building the graph first.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_vault_exportA
Destructive

Export all non-archived entities to .md files with YAML frontmatter in a vault directory. Files are human-readable, git-trackable, and Obsidian-compatible. Use this for backup, transfer between workspaces, or offline review.

ParametersJSON Schema
NameRequiredDescriptionDefault
vault_dirNoDirectory path to write .md files. Created if it doesn't exist. Use ~ for home directory.~/.mimir/vault

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorsNoAny errors encountered during export
vault_dirNoAbsolute path to the vault directory
files_createdNoNumber of new .md files created
files_updatedNoNumber of existing .md files updated
completed_at_unix_msNoCompletion timestamp

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint: true, and the description adds that files are human-readable, git-trackable, and Obsidian-compatible, which complements the annotation. However, it does not clarify whether exporting overwrites existing files, which would be useful for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences, front-loaded with the main action and output format. Every word adds value, with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple single-parameter interface and the presence of an output schema, the description covers the tool's purpose, output format, use cases, and parameter details adequately. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter vault_dir is fully described in the schema with default and path handling. The tool description adds context about writing to the vault directory, reinforcing its purpose beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool exports non-archived entities to .md files with YAML frontmatter, specifying a concrete verb and resource. It differentiates from siblings like mimir_vault_import.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly lists use cases ('backup, transfer between workspaces, or offline review'), providing clear usage context. It does not mention when not to use or alternatives, but the purpose is specific enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_vault_importA
Destructive

Import .md files from a vault directory into the database. Reads YAML frontmatter for metadata and markdown body for content. Idempotent — re-running on the same vault won't duplicate entities. Pair with mimir_vault_export for transfer.

ParametersJSON Schema
NameRequiredDescriptionDefault
vault_dirNoDirectory path to read .md files from. Use ~ for home directory.~/.mimir/vault

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorsNoAny errors encountered during import
vault_dirNoAbsolute path of the vault directory read
files_createdNoNumber of new entities created from files
files_updatedNoNumber of existing entities updated
completed_at_unix_msNoCompletion timestamp

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark the tool as destructive (destructiveHint: true). The description adds important behavioral context: idempotency (re-running doesn't duplicate) and the specific processing of frontmatter and body. This goes beyond the annotation and provides reassurance and clarity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise: two sentences, no wasted words. It front-loads the purpose and adds essential details in the second sentence. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, clear operation), the description covers purpose, idempotency, pairing, and what is read. An output schema exists (not shown but present), so return values are covered elsewhere. It is complete enough for the agent to use effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with a clear description for the only parameter 'vault_dir'. The tool description does not add additional parameter-specific details beyond the schema. Since schema coverage is high, the baseline is 3, and the description does not need to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: importing .md files from a vault directory into the database. It specifies the file type (.md), what it reads (YAML frontmatter and markdown body), and distinguishes itself from the sibling mimir_vault_export by naming it. The verb is specific and the resource is well-defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly mentions idempotency, telling the agent it is safe to re-run. It also pairs the tool with mimir_vault_export for transfer, providing a usage context. However, it does not explicitly state when not to use this tool or list alternatives among the many siblings, but the pairing note is helpful.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mimir_workspace_listA
Read-only

List all distinct entity categories present in the database. Use this to discover what knowledge domains exist before querying with mimir_recall or mimir_context.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
totalNoNumber of categories
categoriesNoAll distinct categories in the database

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, so the description adds value by specifying the scope (distinct entity categories) and usage context. However, it does not disclose any additional behavioral traits (e.g., speed, permissions, or result format).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences: first states the action, second provides usage guidance. No wasted words, perfectly front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no params, read-only), the description fully covers its purpose and usage context. Output schema exists, so no need to describe return values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so the description has no burden. The mention of 'distinct entity categories' clarifies the scope beyond the schema, meeting the baseline for 0 parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists distinct entity categories (specific verb+resource) and explains its role in discovering knowledge domains, distinguishing it from siblings like mimir_recall and mimir_context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises using this tool before querying with mimir_recall or mimir_context, providing clear context. No when-not or alternatives listed, but for a simple discovery tool it's sufficient.

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.

  1. 1 tool updatev2.5.0
    • Changedmimir_conflicts6 fields changed
      • addedInput schema / properties / certainty_margin
        Added value: +{
        +  "default": 0.2,
        +  "description": "Minimum certainty gap to auto-resolve; closer pairs are skipped as ambiguous",
        +  "type": "number"
        +}
      • addedInput schema / properties / dry_run
        Added value: +{
        +  "default": true,
        +  "description": "When resolve=true, only report what would be invalidated unless set false",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / limit / description
        Previous value: -"Maximum number of conflicts to return"New value: +"Maximum number of conflicts to return / resolve"
      • addedInput schema / properties / resolve
        Added value: +{
        +  "default": false,
        +  "description": "Opt-in: invalidate the lower-certainty side of clear conflicts instead of only reporting them",
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / conflicts / description
        Previous value: -"Conflict pairs with similarity scores"New value: +"Conflict pairs with similarity scores (detection mode)"
      • addedOutput schema / properties / invalidations
        Added value: +{
        +  "description": "Winner/loser pairs invalidated or previewed (resolve mode)",
        +  "items": {
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
  2. 2 tool updatesv2.4.0
    • Addedmimir_as_of
    • Addedmimir_ingest_file
  3. 2 tool updatesv2.2.1
    • Addedmimir_extract
    • Changedmimir_recall1 field changed
      • addedInput schema / properties / recency_half_life_secs
        Added value: +{
        +  "description": "Time-aware ranking for mode='hybrid' (default off). When set, each fused result's score is multiplied by 0.5^(age / this), where age is seconds since the memory was created — so a memory this many seconds old keeps half its weight and recent context outranks older but similar hits. Omit for relevance-only ranking.",
        +  "minimum": 0,
        +  "type": "number"
        +}
  4. 40 tool updatesv0.1.0
    • First observedmimir_ask
    • First observedmimir_autocohere
    • First observedmimir_bench
    • First observedmimir_cohere
    • First observedmimir_compact
    • First observedmimir_conflicts
    • First observedmimir_context
    • First observedmimir_correct
    • First observedmimir_decay
    • First observedmimir_embed
    • First observedmimir_federate
    • First observedmimir_forget
    • First observedmimir_get_entity
    • First observedmimir_health
    • First observedmimir_ingest
    • First observedmimir_journal
    • First observedmimir_link
    • First observedmimir_maintenance
    • First observedmimir_migrate
    • First observedmimir_prune
    • First observedmimir_purge
    • First observedmimir_recall
    • First observedmimir_recall_when
    • First observedmimir_reindex
    • First observedmimir_remember
    • First observedmimir_score
    • First observedmimir_share
    • First observedmimir_state_delete
    • First observedmimir_state_get
    • First observedmimir_state_list
    • First observedmimir_state_set
    • First observedmimir_stats
    • First observedmimir_supersede
    • First observedmimir_synthesize
    • First observedmimir_timeline
    • First observedmimir_traverse
    • First observedmimir_unlink
    • First observedmimir_vault_export
    • First observedmimir_vault_import
    • First observedmimir_workspace_list

TDQS

A3.8/5.0

Scored across 43 tools

Disambiguation3/5

Many tools have clearly distinct purposes (e.g., mimir_remember vs mimir_state_set), but there are clustered groups with fuzzy boundaries: prune/compact/decay/cohere/autocohere all perform overlapping maintenance, share/federate both transfer between workspaces, and recall/ask/recall_when all retrieve memories. The detailed descriptions help, but an agent could easily misselect among these sets.

Naming Consistency4/5

All tools share the mimir_ prefix and use snake_case, which creates a strong sense of predictability. Most are verb-first (remember, recall, ingest, traverse) or verb_noun (state_get, vault_export, workspace_list), with only a few noun-only names (context, stats, health) as minor deviations. Overall naming is consistent and readable.

Tool Count2/5

43 tools is well above the 25+ threshold and feels bloated for a memory server, even one that spans storage, retrieval, graph, state, maintenance, import/export, and LLM features. The scope is broad, but many tools could be consolidated (e.g., compaction/grooming operations, sharing/federation), so the count is excessive for the apparent domain.

Completeness5/5

The tool set covers the full memory lifecycle: create/update (remember, state_set, journal), read/search (recall, get_entity, ask, timeline), soft-delete (forget, prune), hard-delete (purge), graph relations (link, unlink, traverse, supersede), import/export (vault_import/export), sync (ingest), maintenance, health, and even feedback loops (correct, synthesize, bench). No obvious dead ends or missing operations for the stated purpose.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Self-hosted MCP-native agent memory server. Gives AI agents persistent, decay-weighted memory via 83 MCP tools — no cloud, full control. RocksDB+HNSW backend. Works with Claude Code, Cursor, and any MCP-compatible agent.
    14
    8
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP-native, local-first memory server that gives AI agents persistent, structured memory across sessions and tools, enabling them to maintain identity and context without reconfiguration.
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Persistent memory for AI coding agents. Enables agents to save and recall decisions, patterns, bugs, and context across sessions via an MCP server with local SQLite storage.
    19 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    MCP server providing persistent AI memory with four-tier retrieval (SQLite FTS5, graph, vector, LLM agent) to give AI assistants structured, long-term memory without RAG.
    1
    Apache 2.0