Skip to main content
Glama

Perseus Vault

AI 에이전트를 위한 영구적이고 암호화된 메모리. 하나의 Rust 바이너리, 하나의 파일, 클라우드 없음.

Build and Test License: MIT Release Glama MCP Marketplace LangGraph CrewAI AutoGen

게시처 Official MCP Registry · Glama · mcpservers.org · Lulu MCPs · Docker (GHCR)

에이전트에게 세션이 끝나도 유지되는 메모리를 제공하여, 이미 학습한 내용을 다시 유추하거나 과거 실수를 반복하지 않도록 하세요. 하이브리드 검색(BM25 + dense + 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와 암호화된 데이터베이스 카나리가 생성됩니다. 해당 키를 백업하세요: 복구가 불가능합니다. 명시적인 --encryption-key 경로는 계속 지원되며, 기존 일반 텍스트 데이터베이스는 perseus-vault init --rekey를 사용한 마이그레이션을 위해 보존됩니다. doctor를 사용하여 실제 디스크 상태를 확인하세요.

macOS 참고 사항 (Apple Silicon). 새로 빌드되거나 복사된 바이너리는 격리 속성이 없더라도 OS 바이너리 정책에 의해 첫 번째 실행 시 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는 영구 레코드를 읽어 제한된 작업 관련 활성 작업 컨텍스트를 생성합니다. 이는 롤링 스냅샷이며, 백그라운드 쓰기나 클라이언트가 이를 유지하겠다는 약속이 아닙니다. 작업이 변경되면 새로고침하고, 명시적인 캡처/쓰기 작업이 성공하지 않는 한 프롬프트 텍스트를 영구 메모리로 취급하지 마십시오. 검색 우선 출력은 예산이 할당됩니다(기본 1500자, 대형 창 호스트의 경우 6000자, 또는 명시적인 max_context_chars). always_on 세트는 최대 5개로 제한됩니다. 보존 및 컨텍스트 의미론을 참조하세요.

수명 주기 훅과 클라이언트 설치 프로그램은 선택적 오케스트레이션입니다. 이들은 서버 소유의 검색, 캡처, 유지 관리 및 새로고침 작업을 요청합니다. 두 번째 저장소가 되거나 보존 정책을 변경하지 않습니다. 서버나 훅을 사용할 수 없는 경우, 주입된 메모리 없이 작업을 계속하고 성능 저하 상태를 표시합니다. 호스트 통합에는 명시적으로 구성된 로컬 폴백이 있을 수 있지만, 해당 폴백은 로컬 전용으로 표시되어야 하며 영구 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, 1,540개 질문, 상위 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포인트 낮습니다(판정자/플랫폼 드리프트 — 공개됨). 전체 리더보드 →

이중 시간 여행 (3축)

저희의 가장 강력한 구조적 차별점 — 완전한 SQL:2011 이중 시간 기록(트랜잭션 시간 및 유효 시간) — 재현 가능하고 완전히 오프라인인 시험에서 측정되었습니다. 실제 출시된 바이너리를 MCP stdio를 통해 구동하여 단일 축 경쟁사가 틀리는 어려운 사례(소급 수정, 사전 미래 날짜 사실, 순서 외 도착, 신념 대 진실 발산, 마감된 기간)를 처리합니다.

축

질문에 대한 답변

검사 수

통과 수

유효 시간 (valid_at)

"세계에서 T 시점에 무엇이 사실이었는가"

10

10

트랜잭션 시간 (as_of)

"T 시점에 우리는 무엇을 믿었는가"

1

1

이중 시간 (bitemporal)

"V 시점에 사실이었던 것을 T 시점의 믿음으로 보면"

2

2

합계

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 + 벡터 DB

Postgres + Python

Neo4j + Go (Graphiti)

MCP 네이티브

✅ 157개의 정식 도구

❌ MCP 네이티브 아님

❌ MCP 네이티브 아님

❌ MCP 네이티브 아님

오프라인/로컬

✅ 완전 로컬

클라우드 의존

Docker 필요

Docker 필요

암호화

AES-256-GCM ✅

❌

❌

❌

하이브리드 검색

BM25 + Dense + 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 →

스트레스 테스트: 100K 엔티티

Perseus Vault는 적당한 하드웨어에서 프로덕션 워크로드를 처리합니다. 아래 수치는 커밋된 아티팩트 benchmark/scale/report.json에서 가져온 것입니다: 실제 릴리스 바이너리가 MCP stdio를 통해 구동됨 (코퍼스 크기당 하나의 영구 프로세스), AMD64 16코어, Windows 11, 모든 쓰기는 다음 쓰기가 전송되기 전에 내구성이 확보됩니다.

메트릭

10K

100K

쓰기 처리량, 지속 (MCP stdio)

479 docs/s

40 docs/s

하이브리드 재현율 p50

19.03 ms

79.73 ms

FTS5 재현율 p50

3.14 ms

15.67 ms

전체 백분위수, as_of 포인트 조회, 시간적 재현율, 콜드 스타트 수치는 benchmark/scale/에 있습니다.

직접 실행: python benchmark/scale/run.py

규모에 따른 재현율 정확도: 키워드 붕괴, 하이브리드 유지

속도는 기본입니다 — 에이전트 메모리에서 중요한 질문은 *올바른 메모리가 실제로 표면화되는가?*입니다. 고유 콘텐츠 코퍼스(자체 개발, 재현 가능; benchmark/lambda/ 참조)에서 모드별 recall@k를 측정했습니다:

100,000개 엔티티 (1×H100, nomic-embed-text on 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

100K 엔티티에서 하이브리드 재현율은 @5에서 완벽한 반면 키워드 검색은 약 1.5%의 시간만 성공합니다 — 약 66배 차이입니다. 그리고 규모에 따라 더 벌어집니다: 10K 엔티티에서 키워드 재현율 @5는 0.008이었지만 하이브리드는 이미 1.000이었습니다. 키워드 전용 메모리는 에이전트가 기록을 축적함에 따라 조용히 성능이 저하되지만, 하이브리드(BM25 + 밀집 + 상호 순위 융합)는 그렇지 않습니다. 이것이 Perseus Vault의 하이브리드 검색의 핵심 주장입니다.

동일 박스, 동일 코퍼스, 모두 완전 로컬에서 일대일 비교 (1×H100, Ollama — 모든 시스템에 대해 동일한 사실 집합, 쿼리 및 부분 문자열 판정기):

시스템

재현율 정확도

p50 지연 시간

참고 사항

Perseus Vault (하이브리드)

1.00

35.6 ms

단일 자체 포함 바이너리, 프로세스 내

Letta (아카이브 / pgvector)

1.00

135.5 ms

서버 + Postgres/pgvector

Mem0 (벡터)

0.60

37.9 ms

Python + 벡터 DB

Zep (Graphiti 시간적 KG)

0.20

49.7 ms

서버 + Neo4j; 로컬 모델로 추출된 그래프

모든 경쟁사는 동일한 박스에서 동일한 로컬 Ollama(qwen2.5:14b-instruct + nomic-embed-text)에 대해 설정 및 실행되었습니다 — 클라우드 없음, 조작된 수치 없음. Letta는 letta/letta 서버(번들 Postgres/pgvector)로 실행되었으며 Perseus Vault와 1.00으로 일치했습니다. Zep의 자체 호스팅 Community Edition 서버는 더 이상 사용되지 않으며 zep_python 메모리 API는 이제 Zep Cloud 전용이므로, 동일한 로컬 Ollama에서 엔티티/에지 추출 및 임베딩을 사용하여 Zep의 실제 OSS 엔진인 Neo4j의 Graphiti 시간적 KG를 측정했습니다. 0.20은 로컬 모델로 지식 그래프를 구축하는 정직한 비용을 반영합니다(구조화된 추출은 손실이 있음: 6개 사실에서 5개 엔티티/2개 에지) — 프론티어 모델을 사용하는 Zep Cloud가 아닙니다. 전체 아티팩트 + 방법론: benchmark/lambda/results/competitors.json.

콜드 스타트: 베어 GPU 박스는 3.3초 만에 첫 번째 근거 기반 RAG 답변에 도달합니다 (모델은 디스크에 스테이징됨).

재현: benchmark/lambda/scale_bench.py 및 competitors_bench.py.

GPU 호스트(vLLM on MI300X/H100)의 모델 서버 옆에 배포하시나요? AMD MI300X 배포 참조를 참조하세요 — 측정된 공동 상주 수치와 실제로 이러한 스택을 손상시키는 /dev/shm, PID-1 및 버전 고정 문제가 포함되어 있습니다.

프레임워크 통합

인기 있는 AI 에이전트 프레임워크의 기본 메모리 백엔드로 Perseus Vault를 만드는 즉시 사용 가능한 어댑터:

프레임워크

통합

유형

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

일상적인 메모리 + 조정 표면 (recall / remember / context / handoffs / state, 에이전트 측 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 계약 사용으로 export/sync/reset 호출자가 각 엔티티를 정확히 한 번씩 순회 가능. 읽기 전용 — 검색 횟수/감소 부작용 없음, 오프셋 제한 없음.

perseus_vault_hygiene

읽기 전용 시작 메모리 위생 보고서(#675): 활성 메모리를 "실행 가능성"(구체적 앵커 — 이슈 키, #참조, 경로, URL, 결정 — vs 모호/날짜만/짧은)으로 점수화하고, 아카이브/통합 큐레이션을 위해 최악의 항목과 이유를 나열.

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

완전한 2축 이중 시간 쿼리: "트랜잭션 시간 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

세션 주입용 사전 서식이 지정된 마크다운 블록. 기본적으로 검색 우선: 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

로컬에서 문서 텍스트 추출(항상 일반 텍스트/마크다운; multimodal 기능 사용 시 DOCX/PDF) 및 검색 가능한 엔티티로 저장.

perseus_vault_extract

텍스트 또는 저장된 엔티티로부터 로컬, 결정적, 규칙 기반 지식 추출(사실 / 선호 / 시간적 이벤트 / 에피소드). 읽기 전용.

perseus_vault_capture

옵트인 세션 내 캡처(#520): 문제 해결 시점에 전사/인사이트 페이로드(텍스트, 마크다운 또는 JSONL)를 지속적 엔티티(근본 원인 / 함정 / 결정 / 패턴 / 시사점)로 증류. 기본적으로 로컬 규칙 기반 증류기, 선택적 llm: true 및 우아한 대체; 유사 중복 병합 유지 및 호출당 제한(홍수 방지). 또한 CLI 명령어: perseus-vault capture.

perseus_vault_memories

Anthropic 메모리 도구 호환 파일 인터페이스(/memories 아래 view/create/str_replace/insert/delete/rename), 볼트 엔티티로 지원됨.

📖 docs/retrieval-modes.md — 모든 검색 모드(키워드 · 밀집 · 하이브리드 · 그래프 · GraphRAG · 사전 예방적 recall_when · 시간적 as_of)에 대한 하나의 열거형 참조: 메커니즘, 사용 시기, 호출 및 예제.

그래프

Tool

Description

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

from-side 엔터티 ID를 레거시 엣지의 증거 앵커로 스탬프하여 그래프 리콜 암이 서비스할 수 있도록 합니다 (#869); 드라이런 미리보기, 저널링됨.

Journal

Tool

Description

perseus_vault_journal

행위자 귀속이 있는 구조화된 이벤트를 추가합니다.

perseus_vault_check_failure_pattern

데자뷰 가드: 재시도 전에 이전에 기록된 실패(저널 + 실패/함정 엔터티)에 대해 작업을 확인합니다. 읽기 전용.

perseus_vault_timeline

필터가 있는 시간 범위로 저널을 조회합니다.

State

Tool

Description

perseus_vault_state_set

선택적 TTL로 키-값 상태를 설정합니다.

perseus_vault_state_get

상태 값을 가져옵니다. 만료된 경우 null을 반환합니다.

perseus_vault_state_delete

상태 항목을 삭제합니다.

perseus_vault_state_list

접두사로 선택적으로 필터링된 상태 키를 나열합니다.

Lifecycle

Tool

Description

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가 필요합니다.

Quality

Tool

Description

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).

Keystones (policy rules)

Tool

Description

perseus_vault_keystone_set

키스톤(Keystone)을 작성합니다 — 컨텍스트 압축에서도 유지되는 필수 정책 규칙입니다 (#683). 범위(테넌트/플릿/에이전트), 가중치 순위, 모든 변이에 암호화 체인; 작성은 신뢰 계층으로 제한됩니다.

perseus_vault_keystone_get

범위에 대해 병합된 키스톤을 가져옵니다. 가중치(가장 높은 순) 다음 범위 특이성 순으로 정렬됩니다 — 리콜에 대한 결정적 세션 시작 대응물입니다. 렌더러는 이를 다른 모든 컨텍스트보다 먼저 주입합니다.

perseus_vault_agent

다중 에이전트 레지스트리에서 에이전트를 등록/업데이트하거나 조회합니다 (#684): ID + 신뢰 계층(0-3) + 플릿. 신뢰 계층은 민감한 작업(예: 키스톤 작성에는 계층 ≥ 2 필요)을 제한하고 리콜 시 가시성 강제를 구동합니다.

Vault & Federation

도구

설명

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

모든 테이블에 대한 전체 DB 통계.

perseus_vault_health

서버 및 DB 상태 확인.

perseus_vault_bench

성능 벤치마크 추적.

perseus_vault_maintenance

DB 유지보수: 중복 제거, 고아 탐지, VACUUM, FTS5 재인덱싱 (dry-run 지원).

perseus_vault_synthesize

LLM 세션 종합 — 대화록에서 교훈 추출.

perseus_vault_migrate

v0.1.x DB를 현재 스키마로 마이그레이션.

작업별 도구 (에이전트 치트 시트)

카테고리 목록이 아닌 작업 목록입니다. 에이전트가 수행하려는 작업에 해당하는 행을 선택하세요:

작업

도구

내구성 있는 사실/결정/수정 기억

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 세션 상태(초기화 + 에이전트 ID)가 유지됩니다.

  • 자동 (옵트인): PERSEUS_VAULT_AUTO_HANDOFF=1로 서버를 시작하면 다음 도구 호출 시 투명하게 스왑이 이루어지며, 새 바이너리가 직접 응답합니다.

macOS/Linux에서 스왑은 진정한 exec입니다 (동일 PID, 동일 파이프). Windows는 실행 중인 실행 파일을 잠그므로 세션 중간 교체가 불가능합니다. 업데이트는 세션 경계를 넘어 수행하세요. 전체 계약 및 로컬 개발 워크플로우: docs/specs/live-update-handoff.md.

수동 DB 편집. 위의 유지보수 동사와 일반적인 MCP 쓰기 경로는 FTS5 인덱스를 자동으로 동기화합니다. sqlite3로 entities 테이블을 직접 편집(수동 DELETE/UPDATE)하면 해당 동기화를 우회하고 고아 인덱스 행이 남을 수 있습니다. 이미 사라진 콘텐츠에 대한 "유령" 회상 결과입니다. 직접 SQL 편집 후에는 perseus-vault maintain --db <경로> (또는 perseus-vault reindex)를 실행하여 FTS 인덱스를 조정하세요.

플래그

플래그

설명

--db

SQLite 데이터베이스 경로 (기본값: ~/.perseus-vault/data/perseus-vault.db)

--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 <볼트> — WikiLink가 그래프 뷰에서 기본적으로 해석됩니다.

Logseq

obsidian-sync를 Logseq 그래프 디렉토리로 지정하세요. Logseq는 동일한 [[WikiLink]] 구문과 Markdown 프론트매터를 읽습니다.

Notion

perseus-vault vault-export를 실행한 후 Notion의 Import → 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) — mode 플래그 없이 perseus_vault_recall(query=...)을 호출하면 임베딩이 존재할 때 자동으로 하이브리드(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 대체 및 Porter 형태소 분석 확장 포함

  • 밀집 벡터 검색 — 저장된 임베딩에 대한 코사인 유사도 기반

  • 상호 순위 융합(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 트리거를 사용하도록 안내하는 경고가 발생합니다.

  • 레거시 옵트인 — 예산을 전달하지 않는 한, mode: "always_inject"(prepare의 경우 --legacy-context)를 사용하면 이전의 무조건적인 상위-N 덤프를 계속 사용할 수 있습니다.

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 등)을 통해 저장된 기억에 대한 자연어 Q&A

  • perseus_vault_embed — Ollama 또는 OpenAI 호환 /v1/embeddings를 통해 밀집 벡터 생성 및 저장

  • 단일 엔티티 및 배치 카테고리 임베딩 지원

암호화

  • 엔티티 body_json에 대한 AES-256-GCM 투명 암호화

  • 새 설치 시 기본 활성화 — 첫 번째 쓰기 시 ~/.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 사용)

  • 동시 읽기를 위한 WAL 모드의 별도 SQLite 연결

외부 커넥터

  • GitHub 이슈 커넥터 — 저장소별 이슈/PR 수집, 속도 제한 인식

  • 파일 감시자 — 콘텐츠 해시 중복 제거로 .md/.txt/.json 파일 디렉토리 스캔

  • --connectors-config를 통한 YAML 기반 커넥터 구성

다중 전송

  • 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 또는 제3자와 공유되지 않습니다.

제3자 공유

  • 없음. 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/static)

.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