memory-vault
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@memory-vaultwhat do I know about the microservices architecture?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Memory Vault
A cross-session persistent memory plugin for coding agents: save the experiences, decisions, preferences and pitfalls distilled from conversations to your local machine, and recall them on demand in future sessions.
Storage: SQLite local database (single source of truth); records, tags and the inverted word table all persisted to disk
Retrieval: dual-channel fused ranking of keywords (BM25) and semantic vectors (USearch, when available), with time decay support
Curation: automatic deduplication on write (exact body dedup + semantic approximate dedup, with
merge/skipstrategies);tidycollapses similar records into summaries in one step to prevent memory bloatUI: built-in web viewing interface (pure standard library), browse, search, add, delete, tidy
Compat: generic markdown memory format import/export, supporting frontmatter and splitting by second-level headings
Zero-dependency runnable: the default local hash embedder works offline and is deterministically consistent across sessions; optionally plug in sentence-transformers or any OpenAI-compatible embedding API; vector retrieval auto-degrades (USearch → numpy → pure Python)
Quick Start
No dependencies to install; Python ≥ 3.9 is enough:
# 存入一条记忆
python -m memory_vault put "项目架构" "后端采用微服务,服务间通过消息队列通信"
# 混合检索
python -m memory_vault ask "微服务架构"
# 从 markdown 目录批量导入
python -m memory_vault import ./notes --split
# 压缩整理
python -m memory_vault tidy
# 启动 Web 查看界面
python -m memory_vault serve
# 浏览器打开 http://127.0.0.1:8988
# 以 MCP 服务运行(供插件化 harness 加载)
python -m memory_vault mcpData is stored by default in ~/.memory-vault/ (vault.sqlite3 and an optional config.json). You can also point it elsewhere with --vault <dir> or the VAULT_DIR environment variable.
Related MCP server: memento
Integrating with dsh (plugin harness)
Installing in DSH
dsh plugin --profile demo add github:JohnXu22786/memory-vaultThe repo also ships a dsh.bundle (package.json + cordis.patch.yml + index.js).
Installing it lays down a Cordis plugin row whose Node bridge drives the Python CLI
(everything loads from the same package directory), surfacing the CLI commands as
dsh tools vault_put / vault_ask / vault_take / vault_list / vault_drop /
vault_tidy / vault_stats / vault_ingest. No npm dependencies are required at
load time; Python ≥ 3.9 must be on PATH (override the interpreter with the
DSH_MV_PYTHON environment variable). If Python is missing or the package can't be
imported, the bridge logs a clear error at startup instead of crashing. For
full-fidelity write options (tags / weight / source), use the MCP server below.
The plugin root contains manifest.json; the harness loads it per the following conventions:
Interface | How it starts | Purpose |
MCP tools (recommended) |
| exposes 8 tools such as |
CLI |
| scripting, scheduled tidy, batch import/export |
Web |
| human browsing and maintenance interface |
Skill | read | instruction text guiding the agent on when to write and how to retrieve |
Typical harness config sketch (MCP style):
{
"mcpServers": {
"memory-vault": {
"command": ["python", "-m", "memory_vault", "mcp"],
"env": { "VAULT_DIR": "~/.memory-vault" }
}
}
}After the harness launches the process, it sends the initialize handshake, then discovers tools via tools/list and calls them via tools/call. The protocol is newline-delimited JSON-RPC 2.0 over stdio (MCP standard transport), with no third-party dependencies.
MCP tools at a glance
Tool | Description |
| store a record (auto-dedup; returns |
| hybrid retrieval, returns |
| fetch full content by id |
| list recent records |
| delete by id |
| tidy up (collapse similar records into summaries) |
| storage stats (count, vector backend, embedding config) |
| batch import from markdown files/directories |
Usage Tips
What to store: project decisions and their reasons, pitfalls hit, user preferences, common commands and conventions, experiment conclusions
When to retrieve: at the start of a new session, when a task arrives with insufficient context, when a historical topic comes up
Don't over-store: stable engineering rules belong in AGENTS.md-style documents; memory is meant to hold "context that grew out of real work"
Configuration
The config file defaults to <data-dir>/config.json (JSON); VAULT_* environment variables can override it; command-line arguments take the highest precedence. A full example is in config.example.json.
Section | Key | Default | Description |
database | dir |
| data directory |
embedding | provider |
|
|
embedding | model | per provider | sentence defaults to |
embedding | dims |
| local embedding dimensions |
embedding | api_url / api_key / api_model | empty | api provider endpoint; keys support |
search | keyword_weight / semantic_weight |
| dual-channel fusion weights (auto-clamped to 0~1) |
search | recency_days |
| time-decay half-life (days), |
search | top_k |
| default number of results |
curation | dedup_threshold |
| write-time dedup similarity threshold |
curation | dedup_mode |
|
|
curation | cluster_threshold |
| tidy clustering threshold |
curation | min_cluster |
| minimum cluster size |
curation | digest_member_chars |
| characters retained per member record in the summary |
web | host / port |
| web interface listen address |
web | token | empty | when set, all |
Environment variables: VAULT_DIR, VAULT_CONFIG, VAULT_EMBED_PROVIDER, VAULT_EMBED_MODEL, VAULT_EMBED_DIMS, VAULT_EMBED_API_URL, VAULT_EMBED_API_KEY, VAULT_EMBED_API_MODEL, VAULT_KW_WEIGHT, VAULT_SEM_WEIGHT, VAULT_RECENCY_DAYS, VAULT_TOP_K, VAULT_DEDUP_THRESHOLD, VAULT_DEDUP_MODE, VAULT_CLUSTER_THRESHOLD, VAULT_MIN_CLUSTER, VAULT_DIGEST_MEMBER_CHARS, VAULT_WEB_HOST, VAULT_WEB_PORT, VAULT_WEB_TOKEN.
Embedding Providers
provider | prerequisite | traits |
| none | zero-dependency, offline, deterministic; limited semantic ability, good for getting started and testing |
|
| real local semantic model, best results, fully offline |
| an accessible OpenAI-compatible endpoint | configure |
If changing the embedding config changes the dimensions, the plugin automatically re-embeds existing records on next use.
Vector Retrieval Backend
Prefers USearch (pip install usearch) approximate nearest neighbor; if not installed it auto-degrades to a numpy exact scan, then to a pure Python scan. SQLite is always the single source of truth; the in-memory index is rebuilt from the database at every startup.
Markdown Compatibility
Import:
import <file-or-directory> [--split]. Recognizes YAML-style frontmatter (title/tags/weight/created/updated),# H1 heading(used as the title and stripped from the body; CRLF line endings supported);--splitsplits into multiple records by## H2 headingsExport:
export <dir>, one.mdfile per record (frontmatter contains id/time/tags), re-importableEdge cases: record ids are always generated by the system; the
idin frontmatter is only exported as information and ignored on import; tags must not contain commas; leading/trailing whitespace in bodies is trimmed on exportDesigned to interoperate with existing markdown note libraries
CLI Reference
python -m memory_vault init # 初始化数据目录
python -m memory_vault put "标题" "正文" # 存入(正文可省略,此时读标准输入)
echo "正文" | python -m memory_vault put "标题"
python -m memory_vault ask "查询词" -k 5 # 混合检索
python -m memory_vault get <id> # 查看单条
python -m memory_vault list -n 20 # 最近列表
python -m memory_vault drop <id> # 删除
python -m memory_vault tidy # 压缩整理
python -m memory_vault import ./notes --split # 导入 markdown
python -m memory_vault export ./backup # 导出 markdown
python -m memory_vault info # 统计
python -m memory_vault serve # Web 界面
python -m memory_vault mcp # MCP 服务All commands support --vault <dir>, --config <file> and --json (machine-readable output). --vault/--config are global options and must come before the subcommand (e.g. python -m memory_vault --vault ~/mv put ...).
Safety note: the web interface listens only on
127.0.0.1by default. If you need to bind to a non-loopback address (e.g.0.0.0.0), make sure to also setweb.token; the UI has built-in cross-origin write protection (enforced JSON Content-Type + Origin check) and request timeout/concurrency limits.
Web API
Endpoint | Method | Description |
| GET | viewing interface |
| GET | stats |
| GET | recent records |
| GET | hybrid retrieval |
| POST |
|
| POST |
|
| POST | tidy up |
| POST |
|
Architecture
memory_vault/
├── __main__.py / cli.py 命令行入口(12 个子命令)
├── config.py 配置加载(默认值 <- 文件 <- 环境变量 <- 参数)
├── vault.py 门面:协调存储/嵌入/索引/去重/压缩(进程内锁保证多线程一致)
├── store.py SQLite 持久层:记录 CRUD、倒排词表、BM25 打分
├── vectors.py 向量索引:USearch -> numpy -> 纯 Python 三级降级
├── embedders.py 嵌入器工厂:local / sentence / api
├── ranking.py 融合排序:双通道 min-max 归一化 + 时间衰减
├── curation.py 去重决策(merge/skip)与摘要构建
├── markdown_io.py markdown 导入导出(frontmatter / 拆分)
├── webapp.py 内置 Web 界面(http.server + 单页前端)
└── mcp_server.py MCP stdio 服务(newline-delimited JSON-RPC)Write flow: put → exact dedup by body (checksum) → semantic approximate dedup (top-k vector search) → persist + update index. Retrieval flow: ask → BM25 keyword score + semantic score → min-max normalized weighted fusion → time decay → rank and output.
Development and Testing
python -m unittest discover -s tests -v # 129 项测试:存储/检索/去重/压缩/markdown/CLI/MCP/Web/配置
pip install -e . # 可选:安装为命令 `vault`Optional dependencies: pip install usearch (vector acceleration), pip install sentence-transformers (local semantic embeddings).
License
Available Tools
8 toolsvault_askA
混合检索记忆:关键词(BM25)与语义向量融合排序,返回按相关度降序的记录。
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | 查询词(必填) | |
| top_k | No | 返回条数(默认取配置) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the retrieval method (BM25 + semantic vector) and result ordering (relevance descending), which are useful behavioral traits. However, it does not explicitly state that the operation is read-only or discuss potential side effects, rate limits, or failure modes, leaving some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that immediately conveys the core mechanism and output ordering. Every word adds value, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two well-described parameters and no output schema, the description sufficiently explains the search algorithm and result ordering. It is complete for an agent to understand the tool's function without further elaboration.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for both parameters (query and top_k) with clear descriptions. The description adds context about relevance sorting, which indirectly clarifies how top_k is used, but it does not provide additional parameter-level details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it performs hybrid retrieval (BM25 + semantic vector) and returns records sorted by relevance. This clearly distinguishes it from sibling tools like vault_put (write) and vault_list (list all).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by the tool name 'ask' and the retrieval-focused description, but no explicit guidance is given about when to use it versus alternatives or when not to use it. The sibling context provides some signal but not direct instruction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_dropC
删除一条记录。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 记录 id(必填) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only states 'delete a record' but does not mention permanence, side effects, required permissions, or consequences. The destructive nature is implied but no additional transparency is offered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no wasted words. It is highly concise and front-loaded. However, it may be under-specified for the tool's needs, but conciseness itself is not the issue.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter operation, the description is minimal. It does not explain what happens after deletion (e.g., return value, success/failure behavior, or whether the operation is reversible). With no annotations or output schema, the description should provide more context, but it remains incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single 'id' parameter, so the schema already documents it as required and describes it as 'record id'. The description adds no additional meaning beyond that, which aligns with the baseline score of 3 for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description '删除一条记录' clearly states the tool's purpose: deleting a record. It uses a specific verb ('delete') and resource ('record'). However, it does not explicitly differentiate from sibling tools like vault_take or vault_tidy, which might also remove or modify records, so it falls short of full distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention scenarios where vault_drop is preferred over vault_take or vault_tidy. There are no exclusions, prerequisites, or contextual cues, leaving the agent without decision-making information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_ingestB
从 markdown 文件或目录批量导入记忆。
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | 文件或目录路径(必填) | |
| split | No | 按二级标题拆分(默认 false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, and the description fails to disclose key behaviors such as whether existing memories are overwritten, whether directory traversal is recursive, how duplicates are handled, or any formatting requirements. This is a mutation tool that modifies persistent state, so the lack of safety or side-effect disclosure leaves a significant transparency gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler words. It directly states the action and target, achieving maximum efficiency for the content it provides.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool that ingests files or directories, the description lacks essential context: expected file structure, recursion behavior, splitting semantics, error handling, and return behavior. With no output schema and minimal detail, an agent would be under-informed about how to invoke this safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% because both parameters ('path' and 'split') have descriptions. The tool description adds no additional parameter context beyond the schema, so it meets the baseline for high coverage without adding extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'import' and the resource 'memories from markdown files or directories', which distinguishes it from sibling tools like vault_list or vault_ask. However, it doesn't explicitly name an alternative for contrast, so it falls slightly short of the highest tier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for bulk imports from markdown sources, which contrasts with the single-item operations implied by vault_put or vault_take. However, no explicit guidance or exclusions are provided, so the agent must infer when to choose this over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_listA
列出最近的记录(不含已折叠内容)。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 条数(默认 50) | |
| offset | No | 偏移(默认 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the behavioral trait of excluding collapsed content, which is useful. However, it does not explicitly state that the operation is read-only or safe, nor does it mention any side effects, permissions, or return format details. It is minimally transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that is front-loaded with the primary action ('List recent records') and includes a valuable caveat ('excluding collapsed content'). Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with two well-documented parameters and no output schema, the description is reasonably complete. It communicates the core function and an important limitation. However, it does not describe the return structure or any pagination behavior beyond the parameter names, which is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents limit and offset with descriptions at 100% coverage. The tool description adds no additional parameter semantics beyond what the schema provides. Therefore, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'List recent records' with the specific verb 'list' and resource 'records', and adds a useful qualifier 'excluding collapsed content'. This distinguishes it from sibling tools like vault_put, vault_take, or vault_stats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention any exclusions or comparison to siblings like vault_ask or vault_stats. The only implied usage is that it lists records, but no explicit context or when-not-to-use is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_putA
存入一条记忆记录;自动去重(相同或高度相似的内容并入已有记录)。
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | 记录正文(必填) | |
| tags | No | 标签列表 | |
| title | No | 记录标题(可省略) | |
| source | No | 来源标识(默认 mcp) | |
| weight | No | 重要度 0~1(默认 0.5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose a key behavior: automatic deduplication (merging identical or highly similar content into existing records). However, it does not explain what happens during the merge, whether the operation is reversible, or what the return value looks like, leaving gaps for a write operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the core purpose ('存入一条记忆记录') and then adds the deduplication behavior. Every word earns its place with no redundancy or unnecessary detail. This is an exemplary concise description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple store operation with no output schema and no annotations, the description gives a basic understanding but lacks important context such as the exact behavior during a merge, effects on existing records, or return format. Given the tool's five parameters and write nature, a bit more detail about deduplication and what the agent should expect would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all five parameters (body, tags, title, source, weight). The description does not add any parameter-specific semantics beyond the schema, such as how deduplication interacts with tags or weight. This meets the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb '存入' (store/put) with the resource '记忆记录' (memory record), clearly indicating this tool stores a new record. It also mentions automatic deduplication, which distinguishes it from sibling tools like vault_ingest and vault_list. This is a clear and specific purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any explicit guidance on when to use this tool versus alternatives like vault_ingest or vault_take. It only states what the tool does, leaving the agent to infer usage context from the name and sibling set. No exclusions or alternative recommendations are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_statsA
查看存储统计(记录数、向量后端、嵌入配置等)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. The verb '查看' discloses that this is a read-only operation, and listing specific statistics (record count, vector backend, embedding config) gives the agent a clear picture of the output. It does not detail side effects or permissions, but for a zero-param stats tool, this is sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the purpose ('查看存储统计') and includes relevant specifics. Every word contributes meaning; there is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple zero-param tool with no output schema, the description adequately covers the observable behavior. It lists three types of statistics and uses '等' (etc.) to hint at more, which is slightly open-ended but still gives enough context for an agent to understand the tool's function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, and the schema confirms this. The description adds value by explaining what the tool returns without needing to describe parameter usage. Baseline for 0 params is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the explicit verb '查看' (view) and specifies the resource '存储统计' (storage stats), with examples like record count, vector backend, and embedding config. It clearly distinguishes this from sibling tools (vault_put, vault_take, etc.) which are mutation or retrieval operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool (to view storage statistics) and provides concrete examples of the data shown. It does not explicitly mention alternatives or exclusions, but the scope is unambiguous enough for an agent to select it over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_takeA
按 id 查看单条记录的完整内容。
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 记录 id(必填) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
As a read operation, the description implies no side effects, but it does not disclose behaviors like error handling for missing ids, authentication requirements, or rate limits. Without annotations, more could be expected, but the description does indicate the return is the 'complete content', which adds some context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one short, front-loaded sentence that immediately conveys the purpose. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read tool, the description is mostly complete. It indicates the result is the full record content. It doesn't cover error behavior (e.g., not found), but the low complexity makes this acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% as the only parameter 'id' is already described as 'record id (required)'. The description adds no new meaning beyond 'by id', so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'view the complete content of a single record by id' (按 id 查看单条记录的完整内容). The verb 'view' and resource 'single record by id' are specific, and it distinguishes from siblings like vault_list (listing records) and vault_ask (querying).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a single record's full content is needed by id, but it does not explicitly provide when-to-use vs alternatives or any exclusions. No mention of when to prefer vault_list or vault_ask instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vault_tidyA
压缩记忆:把互相相似的记录折叠为一条摘要,原记录标记为已折叠。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It explicitly reveals a key side effect: original records are marked as folded, indicating they are not deleted. It does not mention reversibility, permissions, or return details, but the core state change is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the purpose and effect without any filler. Every word earns its place, making it highly concise and well structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description provides sufficient context: it explains the transformation and the fate of original records. It could mention the return value or when to use it, but given the low complexity, the description is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and an empty input schema, so the baseline is 4. The description correctly implies that no inputs are needed and adds no conflicting or redundant parameter information; it fully covers the (non-existent) parameter requirements.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb (fold/compress) and a clear resource (mutually similar records), stating both the main action—folding similar records into a summary—and the side effect of marking originals as folded. This clearly differentiates it from sibling tools like vault_put, vault_list, or vault_drop.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when memory compression or deduplication is needed, but it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. The context is clear enough to infer the intended use, but explicit guidance is missing.
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. Dates show when Glama detected each change.
8 tool updates
v1.0.0- First observed
vault_ask - First observed
vault_drop - First observed
vault_ingest - First observed
vault_list - First observed
vault_put - First observed
vault_stats - First observed
vault_take - First observed
vault_tidy
TDQS
Each tool targets a distinct action: put for storing, ask for searching, take for reading by id, list for enumeration, drop for deletion, tidy for compaction, stats for metadata, and ingest for batch import. There is no overlap or ambiguity between these operations.
All tools follow a consistent vault_verb pattern using snake_case. Although 'stats' is a noun, it behaves as a verb in context and the pattern remains predictable and uniform.
Eight tools is well within the optimal 3-15 range and each serves a meaningful purpose for a memory vault. The count is neither excessive nor sparse for the domain.
The tool set covers core memory lifecycle: create/update via vault_put with deduplication, read via take/list/ask, delete via drop, plus organization via tidy and import via ingest. A minor gap is the lack of an explicit full-record edit, but the deduplication-based put mitigates this.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
- TaprootOAuthcom.taproothq
Persistent memory layer for AI tools. Save and recall notes across Claude and other MCP clients.
MCP-native notes and memory for ChatGPT, Claude, and other AI tools.
Shared, governed long-term memory for AI agents across tools and sessions via MCP and REST.
- MemocoreOAuthai.memocore
Shared memory for all your AI agents, your whole team and every MCP client — save, search, recall.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceProvides persistent knowledge capture and retrieval for coding agents. Enables searching the vault, storing notes, capturing sessions, and reading notes via MCP tools.12MIT
- AlicenseNot gradedqualityAmaintenanceProvides persistent memory for AI coding agents via MCP, enabling agents to store and semantically recall facts, events, and lessons across sessions, all running locally without cloud dependencies.Apache 2.0
- AlicenseNot gradedqualityCmaintenanceProvides persistent memory and task management for coding agents via MCP tools, enabling mid-session recall and capture of durable knowledge.1373MIT
- FlicenseNot gradedqualityBmaintenanceProvides persistent, searchable memory for MCP-compatible AI coding tools, allowing notes added from one tool to be retrieved from another.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JohnXu22786/memory-vault'
If you have feedback or need assistance with the MCP directory API, please join our Discord server