basic-memory
基本记忆
基本记忆 (Basic Memory) 可让您通过与 Claude 等大型语言模型 (LLM) 进行自然对话来构建持久知识,同时将所有内容保存在计算机上的简单 Markdown 文件中。它使用模型上下文协议 (MCP),使任何兼容的 LLM 都能读取和写入您的本地知识库。
从上次中断的地方继续对话
AI 助手可以在新对话中从本地文件加载上下文
笔记实时保存为本地 Markdown 文件
无需项目知识或特殊提示
https://github.com/user-attachments/assets/a55d8238-8dd0-454a-be4c-8860dbbd0ddc
Related MCP server: MCP Memory Server
快速入门
# Install with uv (recommended)
uv tool install basic-memory
# Configure Claude Desktop (edit ~/Library/Application Support/Claude/claude_desktop_config.json)
# Add this to your config:
{
"mcpServers": {
"basic-memory": {
"command": "uvx",
"args": [
"basic-memory",
"mcp"
]
}
}
}
# Now in Claude Desktop, you can:
# - Write notes with "Create a note about coffee brewing methods"
# - Read notes with "What do I know about pour over coffee?"
# - Search with "Find information about Ethiopian beans"
您可以通过~/basic-memory (默认目录位置)中的文件查看共享上下文。
通过 Smithery 进行替代安装
您可以使用Smithery为 Claude Desktop 自动配置基本内存:
npx -y @smithery/cli install @basicmachines-co/basic-memory --client claude这将安装并配置 Basic Memory,无需手动编辑 Claude Desktop 配置文件。Smithery 服务器托管 MCP 服务器组件,而您的数据仍以 Markdown 文件的形式存储在本地。
Glama.ai
为什么是基本记忆?
大多数LLM互动都是短暂的——你提出一个问题,得到一个答案,然后一切都被遗忘了。每次对话都是全新的,没有之前对话的背景或知识。目前的解决方法存在局限性:
聊天记录记录了对话,但不是结构化的知识
RAG 系统可以查询文档,但不允许 LLM 写回
矢量数据库需要复杂的设置,并且通常位于云端
知识图谱通常需要专门的工具来维护
Basic Memory 用一种简单的方法解决了这些问题:结构化的 Markdown 文件,人类和 LLM 都可以读写。其主要优势如下:
**本地优先:**所有知识都保留在你控制的文件中
**双向:**您和 LLM 都可以读取和写入相同的文件
**结构化且简单:**使用熟悉的 Markdown 和语义模式
可遍历知识图谱: LLM 可以追踪主题之间的链接
**标准格式:**可与 Obsidian 等现有编辑器配合使用
**轻量级基础设施:**仅在本地 SQLite 数据库中索引的本地文件
使用基本记忆,您可以:
进行基于先前知识的对话
在自然对话中创建结构化笔记
与法学硕士进行对话,让他们记住你之前讨论过的内容
语义导航你的知识图谱
让一切都保持本地化并处于您的控制之下
使用熟悉的工具(如 Obsidian)查看和编辑笔记
建立随时间增长的个人知识库
实践操作
假设你正在探索咖啡冲泡方法,并想记录你的知识。具体操作如下:
开始正常聊天:
I've been experimenting with different coffee brewing methods. Key things I've learned:
- Pour over gives more clarity in flavor than French press
- Water temperature is critical - around 205°F seems best
- Freshly ground beans make a huge difference...继续对话。
请法学硕士 (LLM) 帮助构建这些知识:
"Let's write a note about coffee brewing methods."LLM 在您的系统上创建一个新的 Markdown 文件(您可以在 Obsidian 或编辑器中立即看到它):
---
title: Coffee Brewing Methods
permalink: coffee-brewing-methods
tags:
- coffee
- brewing
---
# Coffee Brewing Methods
## Observations
- [method] Pour over provides more clarity and highlights subtle flavors
- [technique] Water temperature at 205°F (96°C) extracts optimal compounds
- [principle] Freshly ground beans preserve aromatics and flavor
## Relations
- relates_to [[Coffee Bean Origins]]
- requires [[Proper Grinding Technique]]
- affects [[Flavor Extraction]]该笔记通过简单的 Markdown 格式嵌入语义内容并链接到其他主题。
您可以在计算机上的当前项目目录(默认
~/$HOME/basic-memory)中实时看到此文件。
从 v0.12.0 版本开始,实时同步默认启用
在与LLM聊天时,你可以参考一个话题:
Look at `coffee-brewing-methods` for context about pour over coffeeLLM 现在可以从知识图谱中构建丰富的上下文。例如:
Following relation 'relates_to [[Coffee Bean Origins]]':
- Found information about Ethiopian Yirgacheffe
- Notes on Colombian beans' nutty profile
- Altitude effects on bean characteristics
Following relation 'requires [[Proper Grinding Technique]]':
- Burr vs. blade grinder comparisons
- Grind size recommendations for different methods
- Impact of consistent particle size on extraction每个相关文档都可以提供更多的背景信息,从而为您的知识库构建丰富的语义理解。
这会形成双向流动:
人类编写和编辑 Markdown 文件
LLM通过MCP协议进行读写
同步使一切保持一致
所有知识都保存在本地文件中。
技术实现
基本内存的底层:
将所有内容存储在 Markdown 文件中
使用 SQLite 数据库进行搜索和索引
从简单的 Markdown 模式中提取语义
文件成为
Entity对象每个
Entity可以有与其相关的Observations或事实Relations将实体连接在一起形成知识图谱
维护从文件中提取的本地知识图谱
提供文件和知识图谱之间的双向同步
实现用于 AI 集成的模型上下文协议 (MCP)
公开允许人工智能助手遍历和操作知识图谱的工具
使用memory:// URL来跨工具和对话引用实体
文件格式只是带有一些简单标记的 Markdown:
每个 Markdown 文件都有:
前言
title: <Entity title>
type: <The type of Entity> (e.g. note)
permalink: <a uri slug>
- <optional metadata> (such as tags) 观察
观察是关于某个主题的事实。它们可以通过创建 Markdown 列表来添加,该列表具有特殊的格式,可以引用category 、使用“#”字符的tags以及可选的context 。
观察 Markdown 格式:
- [category] content #tag (optional context)观察示例:
- [method] Pour over extracts more floral notes than French press
- [tip] Grind size should be medium-fine for pour over #brewing
- [preference] Ethiopian beans have bright, fruity flavors (especially from Yirgacheffe)
- [fact] Lighter roasts generally contain more caffeine than dark roasts
- [experiment] Tried 1:15 coffee-to-water ratio with good results
- [resource] James Hoffman's V60 technique on YouTube is excellent
- [question] Does water temperature affect extraction of different compounds differently?
- [note] My favorite local shop uses a 30-second bloom time关系
关系是指向其他主题的链接。它们定义了实体在知识图谱中的连接方式。
Markdown 格式:
- relation_type [[WikiLink]] (optional context)关系示例:
- pairs_well_with [[Chocolate Desserts]]
- grown_in [[Ethiopia]]
- contrasts_with [[Tea Brewing Methods]]
- requires [[Burr Grinder]]
- improves_with [[Fresh Beans]]
- relates_to [[Morning Routine]]
- inspired_by [[Japanese Coffee Culture]]
- documented_in [[Coffee Journal]]与 VS Code 一起使用
对于一键安装,请单击下面的安装按钮之一...
您可以将 Basic Memory 与 VS Code 结合使用,以便在编码时轻松检索和存储信息。点击上方的安装按钮进行一键安装,或按照下方的手动安装说明进行操作。
手动安装
将以下 JSON 块添加到 VS Code 中的“用户设置 (JSON)”文件中。您可以按下Ctrl + Shift + P并输入Preferences: Open User Settings (JSON)来执行此操作。
{
"mcp": {
"servers": {
"basic-memory": {
"command": "uvx",
"args": ["basic-memory", "mcp"]
}
}
}
}或者,您可以将其添加到工作区中名为.vscode/mcp.json的文件中。这样您就可以与其他人共享该配置。
{
"servers": {
"basic-memory": {
"command": "uvx",
"args": ["basic-memory", "mcp"]
}
}
}与 Claude Desktop 一起使用
基本内存是使用 MCP(模型上下文协议)构建的,并与 Claude 桌面应用程序( https://claude.ai/ )配合使用:
配置 Claude Desktop 使用基本内存:
编辑您的 MCP 配置文件(对于 OS X,通常位于~/Library/Application Support/Claude/claude_desktop_config.json ):
{
"mcpServers": {
"basic-memory": {
"command": "uvx",
"args": [
"basic-memory",
"mcp"
]
}
}
}如果您想使用特定项目(请参阅多个项目),请更新您的 Claude Desktop 配置:
{
"mcpServers": {
"basic-memory": {
"command": "uvx",
"args": [
"basic-memory",
"--project",
"your-project-name",
"mcp"
]
}
}
}同步您的知识:
如果您进行手动编辑,基本内存将实时同步项目中的文件。
在 Claude Desktop 中,法学硕士现在可以使用以下工具:
write_note(title, content, folder, tags) - Create or update notes
read_note(identifier, page, page_size) - Read notes by title or permalink
build_context(url, depth, timeframe) - Navigate knowledge graph via memory:// URLs
search_notes(query, page, page_size) - Search across your knowledge base
recent_activity(type, depth, timeframe) - Find recently updated information
canvas(nodes, edges, title, folder) - Generate knowledge visualizations尝试的示例提示:
"Create a note about our project architecture decisions"
"Find information about JWT authentication in my notes"
"Create a canvas visualization of my project components"
"Read my notes on the authentication system"
"What have I been working on in the past week?"更多信息
请参阅文档以了解更多信息,包括:
执照
AGPL-3.0
欢迎贡献。请参阅贡献指南,了解如何在本地设置项目并提交 PR。
星史
由 Basic Machines 倾情打造
Available Tools
17 toolsbuild_contextB
Build context from a memory:// URI to continue conversations naturally.
Use this to follow up on previous discussions or explore related topics.
Memory URL Format:
- Use paths like "folder/note" or "memory://folder/note"
- Pattern matching: "folder/*" matches all notes in folder
- Valid characters: letters, numbers, hyphens, underscores, forward slashes
- Avoid: double slashes (//), angle brackets (<>), quotes, pipes (|)
- Examples: "specs/search", "projects/basic-memory", "notes/*"
Timeframes support natural language like:
- "2 days ago", "last week", "today", "3 months ago"
- Or standard formats like "7d", "24h"
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| project | No | ||
| depth | No | ||
| timeframe | No | 7d | |
| page | No | ||
| page_size | No | ||
| max_related | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | No | |
| results | No | Hierarchical results with related items nested |
| metadata | Yes | |
| page_size | No |
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. While it explains the tool builds context for conversations and provides format details, it doesn't disclose critical behavioral traits like whether this is a read-only operation, what permissions are needed, whether it modifies data, rate limits, or what the output contains. For a tool with 7 parameters and no annotations, this is a significant 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 well-structured and appropriately sized. It starts with the core purpose, provides usage guidance, then details parameter formats with clear sections. While comprehensive, every sentence serves a purpose - explaining the tool's function, when to use it, and parameter specifics. It could be slightly more concise by integrating some format details more tightly.
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 tool's complexity (7 parameters, memory system interaction) and the presence of an output schema, the description provides good context about the tool's purpose and key parameters. However, with no annotations and incomplete parameter semantics coverage, it doesn't fully prepare an agent for all aspects of tool invocation. The output schema existence helps, but behavioral aspects remain under-specified.
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 description provides extensive information about the 'url' parameter format (memory:// URIs, pattern matching, valid characters, examples) and 'timeframe' parameter (natural language and standard formats). With 0% schema description coverage, this adds substantial value beyond the bare schema. However, it doesn't explain the semantics of 'depth', 'project', 'page', 'page_size', or 'max_related' parameters, leaving half the parameters without semantic explanation.
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: 'Build context from a memory:// URI to continue conversations naturally.' This specifies the verb ('build context') and resource ('memory:// URI'), though it doesn't explicitly differentiate from sibling tools like 'read_note' or 'search_notes' that might also access memory content. The purpose is clear but lacks sibling differentiation.
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 clear usage context: 'Use this to follow up on previous discussions or explore related topics.' This gives guidance on when to use the tool (for conversation continuity or topic exploration). However, it doesn't specify when NOT to use it or mention alternatives among the many sibling tools, which would be needed for a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
canvasC
Create an Obsidian canvas file to visualize concepts and connections.
| Name | Required | Description | Default |
|---|---|---|---|
| nodes | Yes | ||
| edges | Yes | ||
| title | Yes | ||
| folder | Yes | ||
| project | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 states 'Create' which implies a write operation, but doesn't cover critical aspects like permissions needed, whether it overwrites existing files, error handling, or the format of the created canvas. This leaves significant gaps for an agent to understand the tool's behavior beyond basic creation.
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 efficiently conveys the core purpose without unnecessary words. It's front-loaded with the key action and resource, making it easy to parse quickly, which is ideal for conciseness.
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 tool has 5 parameters with 0% schema coverage and no annotations, but an output schema exists, the description is minimally adequate. It covers the basic purpose but lacks details on parameters, behavioral traits, and usage context, making it incomplete for a creation tool with multiple inputs. The output schema mitigates some gaps, but overall completeness is limited.
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 0%, meaning all 5 parameters lack descriptions in the schema. The description adds no information about parameters like 'nodes', 'edges', 'title', 'folder', or 'project', failing to compensate for the schema gap. For example, it doesn't explain what 'nodes' and 'edges' should contain or how 'folder' paths are structured.
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 ('Create') and resource ('Obsidian canvas file') with a purpose ('to visualize concepts and connections'), which is specific and actionable. However, it doesn't explicitly differentiate from sibling tools like 'create_memory_project' or 'write_note' that might also create files, leaving room for ambiguity in tool selection.
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 like 'create_memory_project' or 'write_note', nor does it mention prerequisites or exclusions. It implies usage for visualization tasks but lacks explicit context for distinguishing from other creation tools in the server.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_memory_projectA
Create a new Basic Memory project.
Creates a new project with the specified name and path. The project directory will be created if it doesn't exist. Optionally sets the new project as default.
Args: project_name: Name for the new project (must be unique) project_path: File system path where the project will be stored set_default: Whether to set this project as the default (optional, defaults to False)
Returns: Confirmation message with project details
Example: create_memory_project("my-research", "~/Documents/research") create_memory_project("work-notes", "/home/user/work", set_default=True)
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes | ||
| project_path | Yes | ||
| set_default | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the project directory will be created if missing and mentions the optional default-setting behavior, which adds useful context beyond just the creation action. However, it doesn't cover potential errors, permissions needed, or what happens with existing projects.
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?
Well-structured with clear sections (description, args, returns, example) and front-loaded purpose. The example section is helpful but slightly lengthens the description. Most sentences earn their place, though some formatting could be tighter.
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 3 parameters with 0% schema coverage and no annotations, the description does an excellent job explaining parameters and includes an output schema (returns confirmation message). It covers the core creation behavior well, though additional context about error conditions or relationships to other tools would make it more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must fully compensate. It provides clear semantic explanations for all three parameters: project_name (must be unique), project_path (file system path where stored), and set_default (optional default behavior). This adds significant value beyond the bare 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 clearly states the specific action ('Create a new Basic Memory project') and resource ('project'), distinguishing it from sibling tools like 'list_memory_projects' or 'delete_project'. It specifies the exact operation rather than being vague or tautological.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives is provided. While it's clear this creates projects, there's no mention of prerequisites, when creation might fail, or how it relates to other project management tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_noteC
Delete a note by title or permalink
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | ||
| project | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the action is 'Delete', implying a destructive mutation, but fails to disclose behavioral traits such as whether deletion is permanent, reversible, requires specific permissions, or has side effects. This is a significant gap for a mutation tool.
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, efficient sentence with zero waste. It is appropriately sized and front-loaded, directly stating the tool's purpose without unnecessary details.
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 tool has an output schema (which handles return values) but no annotations and low schema coverage, the description is incomplete. It adequately states the basic action but lacks crucial details for a destructive operation, such as behavioral context and parameter explanations, leaving gaps in understanding.
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 0%, so the description must compensate. It mentions 'by title or permalink', which clarifies the 'identifier' parameter, but does not explain the 'project' parameter or its optionality. The description adds some meaning but does not fully address the undocumented parameters.
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 ('Delete') and resource ('a note'), specifying it can be done 'by title or permalink'. However, it does not explicitly differentiate from sibling tools like 'delete_project' or 'move_note', which also involve deletion or modification 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 provides no guidance on when to use this tool versus alternatives such as 'edit_note' or 'move_note', nor does it mention prerequisites like required permissions or project context. It lacks explicit usage context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_projectA
Delete a Basic Memory project.
Removes a project from the configuration and database. This does NOT delete the actual files on disk - only removes the project from Basic Memory's configuration and database records.
Args: project_name: Name of the project to delete
Returns: Confirmation message about project deletion
Example: delete_project("old-project")
Warning: This action cannot be undone. The project will need to be re-added to access its content through Basic Memory again.
| Name | Required | Description | Default |
|---|---|---|---|
| project_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does an excellent job. It discloses critical behavioral traits: that this is a destructive operation ('cannot be undone'), clarifies what gets affected (configuration and database records but NOT files on disk), and explains the consequence (project would need re-adding to access content).
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 well-structured with clear sections (Args, Returns, Example, Warning) and front-loaded with the core purpose. Every sentence adds value: the first states what it does, the second clarifies scope, and subsequent sections provide practical guidance without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations, 0% schema coverage, but with output schema present, the description is remarkably complete. It covers purpose, behavioral implications, parameter meaning, example usage, and warnings - providing everything needed for safe invocation despite minimal structured data support.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage and only one parameter, the description fully compensates by explaining the 'project_name' parameter meaning ('Name of the project to delete') in the Args section. It provides essential semantic context that the schema lacks entirely.
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 specific action ('Delete a Basic Memory project') and distinguishes it from sibling tools like 'create_memory_project' and 'list_memory_projects'. It explicitly mentions what resource is affected ('project') and what system it operates on ('Basic Memory').
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 clear context about when to use this tool (to remove a project from configuration/database) and includes a warning about irreversibility. However, it doesn't explicitly mention when NOT to use it or name specific alternatives among siblings like 'delete_note' for different operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_noteC
Edit an existing markdown note using various operations like append, prepend, find_replace, or replace_section.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | ||
| operation | Yes | ||
| content | Yes | ||
| project | No | ||
| section | No | ||
| find_text | No | ||
| expected_replacements | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool edits notes with various operations, implying mutation, but doesn't disclose behavioral traits like whether edits are reversible, permission requirements, rate limits, or error handling. This is a significant gap for a mutation tool with zero 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core purpose ('Edit an existing markdown note') and lists operation types. It avoids redundancy and wastes no words, though it could be slightly more structured (e.g., bullet points for operations).
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 7 parameters with 0% schema coverage, no annotations, and an output schema (which reduces need to explain returns), the description is incomplete. It covers the basic purpose and operation types but misses parameter details, behavioral context, and usage guidelines. It's minimally adequate for a simple edit tool but has clear gaps.
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 0%, so the description must compensate. It mentions operations (append, prepend, find_replace, replace_section) which partially explains the 'operation' parameter, but doesn't clarify other parameters like 'identifier', 'content', 'project', 'section', 'find_text', or 'expected_replacements'. The description adds minimal value beyond the schema's property names.
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 ('Edit an existing markdown note') and resource ('note'), specifying the type of operations available (append, prepend, find_replace, replace_section). It distinguishes from siblings like 'write_note' (create) and 'delete_note' (remove), but doesn't explicitly differentiate from 'view_note' or 'read_note' in terms of when to edit versus read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives is provided. It doesn't mention prerequisites (e.g., note must exist), when to choose specific operations, or when to use 'write_note' for new notes instead. The context is implied (editing existing notes), but lacks actionable usage rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fetchC
Fetch the full contents of a search result document
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 implies a read operation ('fetch'), but doesn't address permissions, rate limits, error handling, or what 'full contents' entails (e.g., format, size limits). This leaves significant gaps for a tool that likely interacts with documents.
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, efficient sentence that is front-loaded with the core action. There's no wasted verbiage, making it appropriately concise for a simple tool, though it could benefit from more detail given the lack of annotations.
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 tool's complexity (simple fetch operation), 1 parameter, and the presence of an output schema (which handles return values), the description is minimally adequate. However, with no annotations and low schema coverage, it should provide more context about behavior and parameters to be fully 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 input schema has 1 parameter ('id') with 0% description coverage, and the tool description adds no meaning beyond the schema. It doesn't explain what the 'id' represents (e.g., a document identifier from search results) or its format, failing to compensate for the low 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 states the tool 'fetches the full contents of a search result document,' which provides a clear verb ('fetch') and resource ('search result document'), but it's somewhat vague about what constitutes a 'search result document' and doesn't differentiate from siblings like 'read_content' or 'read_note.' It avoids tautology by not just restating the name 'fetch.'
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 offers no guidance on when to use this tool versus alternatives such as 'read_content' or 'read_note,' nor does it specify any prerequisites or context for usage. It merely states what the tool does without indicating when it's appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_directoryC
List directory contents with filtering and depth control.
| Name | Required | Description | Default |
|---|---|---|---|
| dir_name | No | / | |
| depth | No | ||
| file_name_glob | No | ||
| project | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions 'filtering and depth control' but doesn't disclose critical details like whether this is a read-only operation, what permissions are needed, how results are structured, or any rate limits. For a tool with 4 parameters and no annotation coverage, this is inadequate.
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 extremely concise (one sentence) and front-loaded with the core purpose. Every word earns its place, with no redundant or vague language, making it efficient for quick understanding.
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 tool's moderate complexity (4 parameters, no annotations, but with an output schema), the description is incomplete. The output schema reduces the need to explain return values, but the description lacks guidance on usage, parameter details, and behavioral context, leaving significant gaps for effective tool selection.
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 0%, so the description must compensate but fails to do so. It mentions 'filtering' (hinting at 'file_name_glob') and 'depth control' (hinting at 'depth'), but doesn't explain the purpose of 'dir_name' or 'project', nor provide any syntax or format details. With 4 undocumented parameters, this adds minimal value 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 clearly states the tool's purpose with specific verbs ('list directory contents') and resources ('directory'), and mentions capabilities ('filtering and depth control'). However, it doesn't explicitly differentiate from sibling tools like 'search' or 'fetch' that might also retrieve file information.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'search', 'fetch', or 'read_content'. The description mentions filtering capabilities but doesn't specify scenarios where this tool is preferred over others or any prerequisites for use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_memory_projectsA
List all available projects with their status.
Shows all Basic Memory projects that are available for MCP operations. Use this tool to discover projects when you need to know which project to use.
Use this tool:
At conversation start when project is unknown
When user asks about available projects
Before any operation requiring a project
After calling:
Ask user which project to use
Remember their choice for the session
Returns: Formatted list of projects with session management guidance
Example: list_memory_projects()
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 effectively describes the tool's behavior: it lists projects with status, is used for discovery, and includes session management guidance. However, it doesn't mention potential limitations like rate limits, error conditions, or whether the list is paginated.
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 well-structured with clear sections (purpose, usage guidelines, post-call instructions, returns, example). It's front-loaded with the core purpose. Some sentences could be more concise (e.g., 'Shows all Basic Memory projects...' slightly repeats the first sentence), but overall it's efficient and informative.
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 tool's low complexity (0 parameters, no annotations), the description is quite complete. It explains purpose, usage, and behavioral aspects. Since an output schema exists, it doesn't need to detail return values, though it mentions 'Formatted list of projects with session management guidance,' which adds helpful context. Minor gaps include lack of error handling or performance details.
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 has 0 parameters with 100% coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, focusing instead on usage and output. A baseline of 4 is applied since there are no parameters to document.
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: 'List all available projects with their status' and 'Shows all Basic Memory projects that are available for MCP operations.' It specifies the verb (list/show) and resource (projects), but doesn't explicitly differentiate from sibling tools like 'list_directory' or 'search_notes' that might also list resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use this tool: 'At conversation start when project is unknown,' 'When user asks about available projects,' and 'Before any operation requiring a project.' It also includes post-call instructions ('Ask user which project to use,' 'Remember their choice for the session'), which effectively guides usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_noteC
Move a note to a new location, updating database and maintaining links.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | ||
| destination_path | Yes | ||
| project | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers limited behavioral insight. It mentions 'updating database' (implying mutation) and 'maintaining links' (hinting at referential integrity), but lacks details on permissions, error conditions, side effects, or what 'maintaining links' entails operationally. This is inadequate for a mutation tool with zero 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence with zero waste—it directly states the action, outcome, and key behavioral aspect ('maintaining links'). It's appropriately sized and front-loaded, making every word count without unnecessary elaboration.
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 a mutation tool with 3 parameters (0% schema coverage), no annotations, but an output schema exists, the description is minimally complete. It covers the core action and hints at behavior, but lacks details on parameters, error handling, and operational context that would be needed for full agent understanding, though the output schema mitigates some gaps.
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 0%, so the description must compensate but adds minimal param semantics. It implies 'identifier' selects the note and 'destination_path' specifies the new location, but doesn't explain formats (e.g., path syntax, identifier types) or the optional 'project' parameter's role. This fails to bridge the coverage gap effectively.
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 ('Move a note') and the resource ('note'), specifying the outcome ('updating database and maintaining links'). It distinguishes from siblings like 'edit_note' or 'delete_note' by focusing on relocation, but doesn't explicitly contrast with tools like 'write_note' or 'view_note' in terms of purpose.
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 doesn't mention prerequisites (e.g., note existence, permissions), exclusions (e.g., when not to move), or comparisons to siblings like 'edit_note' for content changes or 'delete_note' for removal, leaving usage context unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_contentC
Read a file's raw content by path or permalink
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| project | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output 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 behavioral disclosure. It states the tool reads raw content but doesn't mention permissions, rate limits, error handling, or output format. This is a significant gap for a read operation that could involve file access constraints.
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, efficient sentence with zero waste. It is front-loaded with the core purpose and includes a useful detail ('by path or permalink'), making it appropriately sized and easy to parse.
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 tool's moderate complexity (2 parameters, no annotations, but has an output schema), the description is incomplete. It covers the basic purpose but lacks usage guidelines, parameter details, and behavioral context. The output schema mitigates some gaps, but overall it's minimally viable with clear deficiencies.
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 0%, so the description must compensate but only mentions 'path or permalink' without explaining the 'project' parameter. It adds minimal meaning beyond the schema, failing to clarify parameter roles or usage, which is inadequate given the coverage gap.
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 ('Read') and resource ('a file's raw content'), specifying it can be done 'by path or permalink'. It distinguishes from siblings like 'read_note' or 'view_note' by focusing on raw file content rather than notes, though it doesn't explicitly compare them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'read_note', 'view_note', or 'fetch'. The description implies usage for reading files but doesn't specify contexts, prerequisites, or exclusions, leaving the agent to infer based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_noteC
Read a markdown note by title or permalink.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | ||
| project | No | ||
| page | No | ||
| page_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 states the action ('Read') but lacks details on permissions, rate limits, error handling, or output format. While it hints at retrieval by identifier, it doesn't clarify if this is a safe read operation or has side effects, leaving significant gaps.
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, efficient sentence with zero waste, front-loading the core action and key parameter. It's appropriately sized for the tool's complexity, making it easy to parse without unnecessary elaboration.
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 tool has an output schema (which handles return values), the description's gaps in parameter semantics and behavioral transparency are partially mitigated. However, with 4 parameters and no annotations, it should provide more context on usage and parameters to be fully complete, resulting in an average score.
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 0%, so the description must compensate for undocumented parameters. It only mentions 'identifier' (title or permalink), ignoring 'project,' 'page,' and 'page_size.' This partial coverage fails to explain the purpose or usage of most parameters, adding minimal value 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 clearly states the verb ('Read') and resource ('a markdown note'), specifying it can be accessed 'by title or permalink.' This distinguishes it from generic read operations but doesn't explicitly differentiate from sibling tools like 'view_note' or 'read_content,' keeping it from a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as 'view_note,' 'search_notes,' or 'read_content.' The description implies usage for retrieving notes but offers no context on prerequisites, exclusions, or comparative scenarios with siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recent_activityB
Get recent activity for a project or across all projects.
Timeframe supports natural language formats like:
- "2 days ago"
- "last week"
- "yesterday"
- "today"
- "3 weeks ago"
Or standard formats like "7d"
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | ||
| depth | No | ||
| timeframe | No | 7d | |
| project | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool retrieves ('Get') data, implying it's read-only, but doesn't mention behavioral traits like pagination, rate limits, authentication needs, error handling, or what 'recent activity' includes (e.g., events, changes). The timeframe format details are helpful but insufficient for a mutation-free tool with zero 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by specific timeframe examples. Every sentence earns its place by adding value—no redundancy or waste. The bullet-point list for timeframe formats is structured for clarity without verbosity.
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 4 parameters with 0% schema coverage and no annotations, the description is incomplete. It partially covers 'timeframe' but omits details for 'type,' 'depth,' and 'project.' An output schema exists, so return values needn't be explained, but for a read operation with multiple inputs, more parameter guidance is needed to be fully helpful.
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 0%, so the description must compensate. It adds meaning for 'timeframe' by providing natural language and standard format examples, which clarifies semantics beyond the schema's title. However, it doesn't explain 'type,' 'depth,' or 'project' parameters, leaving three of four parameters with minimal guidance. The baseline is lowered due to incomplete compensation.
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: 'Get recent activity for a project or across all projects.' It uses a specific verb ('Get') and resource ('recent activity'), and distinguishes between project-specific and all-projects scope. However, it doesn't explicitly differentiate from sibling tools like 'search' or 'fetch' that might also retrieve activity data.
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 context by mentioning 'for a project or across all projects,' suggesting this tool is for retrieving activity logs. However, it provides no explicit guidance on when to use this versus alternatives like 'search' or 'fetch,' nor does it mention prerequisites or exclusions. The timeframe examples offer some operational context but not comparative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchC
Search for content across the knowledge base
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action ('Search') without any details on permissions, rate limits, result format, pagination, or error handling. For a search tool with no annotation coverage, this leaves critical behavioral traits unspecified.
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, efficient sentence with no wasted words. It's front-loaded and to the point, though it could benefit from more detail given the tool's complexity. The structure is clear but overly brief for a tool with no annotations and low schema coverage.
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 tool's moderate complexity (search operation), no annotations, low schema coverage (0%), but presence of an output schema, the description is minimally complete. It states the basic purpose but lacks details on behavior, parameters, and usage context. The output schema helps, but the description doesn't fully compensate for the gaps in annotations and schema.
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 has 1 parameter with 0% description coverage, so the description must compensate. It mentions 'query' implicitly but doesn't explain what the query parameter expects (e.g., keywords, filters, syntax). Since schema coverage is low, the description adds minimal value beyond the schema, meeting the baseline for adequate but incomplete 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 'Search for content across the knowledge base' states a clear verb ('Search') and resource ('content across the knowledge base'), but it's vague about what 'content' specifically means and doesn't distinguish this tool from sibling tools like 'search_notes' or 'fetch'. It provides a basic purpose but lacks specificity.
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 offers no guidance on when to use this tool versus alternatives. With siblings like 'search_notes', 'fetch', and 'read_content' available, there's no indication of what makes this search tool unique or when it's preferred over other search or retrieval tools. It's a generic statement with no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_notesC
Search across all content in the knowledge base with advanced syntax support.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| project | No | ||
| page | No | ||
| page_size | No | ||
| search_type | No | text | |
| types | No | ||
| entity_types | No | ||
| after_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'advanced syntax support' which adds some context about query capabilities, but it doesn't describe what the search returns (e.g., results format, pagination behavior), whether it's read-only (implied but not stated), or any rate limits or authentication needs. For a search tool with 8 parameters and no annotations, this is inadequate.
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, efficient sentence that gets straight to the point without unnecessary words. It's appropriately sized for a search tool and front-loaded with the core functionality, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (8 parameters, 0% schema coverage, no annotations) and the presence of an output schema (which might help with return values), the description is incomplete. It doesn't explain parameter usage, behavioral details like pagination or result limits, or how it differs from sibling tools. For a tool with this many undocumented parameters, more context is needed to be minimally viable.
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 0%, meaning none of the 8 parameters have descriptions in the schema. The tool description doesn't mention any parameters or their semantics (e.g., what 'search_type' or 'entity_types' mean), failing to compensate for the lack of schema documentation. This leaves the agent with no guidance on how to use the parameters effectively.
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 the tool searches across all content in the knowledge base, which provides a clear verb ('search') and resource ('knowledge base content'). However, it doesn't distinguish this from sibling tools like 'search' (which appears to be a simpler search) or 'fetch'/'read_note' (which retrieve specific content), leaving the purpose somewhat vague in relation to alternatives.
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 mentions 'advanced syntax support' which implies this tool should be used for complex queries, but it doesn't explicitly state when to use this vs. other search or retrieval tools like 'search' or 'read_note'. No guidance is provided on exclusions or prerequisites, leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view_noteC
View a note as a formatted artifact for better readability.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes | ||
| project | No | ||
| page | No | ||
| page_size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions viewing as a 'formatted artifact', which implies a read-only operation with enhanced presentation, but doesn't cover critical aspects like authentication needs, rate limits, error handling, or what 'formatted' entails. This leaves significant gaps in understanding the tool's behavior.
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, efficient sentence that directly states the tool's purpose without unnecessary words. It's front-loaded and appropriately sized, making it easy to parse quickly, though it could benefit from more detail given the complexity of the tool.
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 tool has 4 parameters with 0% schema coverage and no annotations, but an output schema exists, the description is incomplete. It doesn't explain parameter meanings or behavioral traits, though the output schema might cover return values. For a tool with multiple parameters and no annotation support, more context is needed to be fully helpful.
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 0%, so the schema provides no parameter details. The description adds no information about parameters like 'identifier', 'project', 'page', or 'page_size', failing to compensate for the lack of schema documentation. This leaves all four parameters semantically undefined, hindering proper tool invocation.
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 the tool 'View a note as a formatted artifact for better readability', which specifies the verb 'view' and resource 'note'. However, it doesn't clearly distinguish this from sibling tools like 'read_note' or 'read_content', leaving the exact differentiation vague. The mention of 'formatted artifact' adds some specificity but isn't fully clarifying.
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 such as 'read_note' or 'search_notes'. There's no mention of prerequisites, exclusions, or specific contexts where this tool is preferred, leaving the agent with no usage direction beyond the basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_noteC
Create or update a markdown note. Returns a markdown formatted summary of the semantic content.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| content | Yes | ||
| folder | Yes | ||
| project | No | ||
| tags | No | ||
| note_type | No | note |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool creates/updates notes and returns a markdown summary, but doesn't cover critical aspects like whether updates overwrite existing notes, authentication requirements, error conditions, or rate limits. This leaves significant gaps for a mutation tool.
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 efficiently structured in a single sentence that states the core function and return value. There's no unnecessary verbiage, though it could be slightly more comprehensive given the tool's complexity.
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 mutation tool with 6 parameters, 0% schema coverage, no annotations, but with an output schema, the description is moderately complete. It covers the basic action and return format, but lacks parameter explanations and behavioral context that would be needed for optimal agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage for 6 parameters, the description provides no information about what the parameters mean or how they should be used. It doesn't mention any of the parameters (title, content, folder, project, tags, note_type) or their purposes, failing to compensate for the schema's lack of descriptions.
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 ('Create or update') and resource ('a markdown note'), distinguishing it from sibling tools like 'delete_note' or 'edit_note'. However, it doesn't explicitly differentiate from 'edit_note' which might also update notes, making it slightly less specific than a perfect score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'edit_note' or 'create_memory_project'. It mentions the tool's function but lacks context about prerequisites, when-not scenarios, or comparisons with sibling tools.
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.
11 tool updates
v1.0.0- Changed
build_context12 fields changed- removed
Input schema / $defsRemoved value: -{ - "StringOrInt": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "integer" - } - ] - } -} - changed
Input schema / properties / depth / anyOfPrevious value: -[ - { - "$ref": "#/$defs/StringOrInt" - }, - { - "type": "null" - } -]New value: +[ + { + "type": "string" + }, + { + "type": "integer" + }, + { + "type": "null" + } +] - added
Output schema / $defs / EntitySummary / properties / entity_idAdded value: +{ + "title": "Entity Id", + "type": "integer" +} - changed
Output schema / $defs / EntitySummary / requiredPrevious value: -[ - "permalink", - "title", - "file_path", - "created_at" -]New value: +[ + "entity_id", + "permalink", + "title", + "file_path", + "created_at" +] - added
Output schema / $defs / ObservationSummary / properties / entity_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Entity Id" +} - added
Output schema / $defs / ObservationSummary / properties / observation_idAdded value: +{ + "title": "Observation Id", + "type": "integer" +} - changed
Output schema / $defs / ObservationSummary / requiredPrevious value: -[ - "title", - "file_path", - "permalink", - "category", - "content", - "created_at" -]New value: +[ + "observation_id", + "title", + "file_path", + "permalink", + "category", + "content", + "created_at" +] - added
Output schema / $defs / RelationSummary / properties / entity_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Entity Id" +} - added
Output schema / $defs / RelationSummary / properties / from_entity_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "From Entity Id" +} - added
Output schema / $defs / RelationSummary / properties / relation_idAdded value: +{ + "title": "Relation Id", + "type": "integer" +} - added
Output schema / $defs / RelationSummary / properties / to_entity_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "To Entity Id" +} - changed
Output schema / $defs / RelationSummary / requiredPrevious value: -[ - "title", - "file_path", - "permalink", - "relation_type", - "created_at" -]New value: +[ + "relation_id", + "title", + "file_path", + "permalink", + "relation_type", + "created_at" +]
- Added
fetch - Removed
get_current_project - Changed
list_memory_projects1 field changed- removed
Input schema / properties / _compatibilityRemoved value: -{ - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Compatibility" -}
- Changed
recent_activity13 fields changed- removed
Input schema / properties / max_relatedRemoved value: -{ - "default": 10, - "title": "Max Related", - "type": "integer" -} - removed
Input schema / properties / pageRemoved value: -{ - "default": 1, - "title": "Page", - "type": "integer" -} - removed
Input schema / properties / page_sizeRemoved value: -{ - "default": 10, - "title": "Page Size", - "type": "integer" -} - removed
Output schema / $defsRemoved value: -{ - "ContextResult": { - "description": "Context result containing a primary item with its observations and related items.", - "properties": { - "observations": { - "description": "Observations belonging to this entity", - "items": { - "$ref": "#/$defs/ObservationSummary" - }, - "title": "Observations", - "type": "array" - }, - "primary_result": { - "description": "Primary item", - "discriminator": { - "mapping": { - "entity": "#/$defs/EntitySummary", - "observation": "#/$defs/ObservationSummary", - "relation": "#/$defs/RelationSummary" - }, - "propertyName": "type" - }, - "oneOf": [ - { - "$ref": "#/$defs/EntitySummary" - }, - { - "$ref": "#/$defs/RelationSummary" - }, - { - "$ref": "#/$defs/ObservationSummary" - } - ], - "title": "Primary Result" - }, - "related_results": { - "description": "Related items", - "items": { - "discriminator": { - "mapping": { - "entity": "#/$defs/EntitySummary", - "observation": "#/$defs/ObservationSummary", - "relation": "#/$defs/RelationSummary" - }, - "propertyName": "type" - }, - "oneOf": [ - { - "$ref": "#/$defs/EntitySummary" - }, - { - "$ref": "#/$defs/RelationSummary" - }, - { - "$ref": "#/$defs/ObservationSummary" - } - ] - }, - "title": "Related Results", - "type": "array" - } - }, - "required": [ - "primary_result" - ], - "title": "ContextResult", - "type": "object" - }, - "EntitySummary": { - "description": "Simplified entity representation.", - "properties": { - "content": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Content" - }, - "created_at": { - "format": "date-time", - "title": "Created At", - "type": "string" - }, - "file_path": { - "title": "File Path", - "type": "string" - }, - "permalink": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "title": "Permalink" - }, - "title": { - "title": "Title", - "type": "string" - }, - "type": { - "const": "entity", - "default": "entity", - "title": "Type", - "type": "string" - } - }, - "required": [ - "permalink", - "title", - "file_path", - "created_at" - ], - "title": "EntitySummary", - "type": "object" - }, - "MemoryMetadata": { - "description": "Simplified response metadata.", - "properties": { - "depth": { - "title": "Depth", - "type": "integer" - }, - "generated_at": { - "format": "date-time", - "title": "Generated At", - "type": "string" - }, - "primary_count": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Primary Count" - }, - "related_count": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Related Count" - }, - "timeframe": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Timeframe" - }, - "total_observations": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Total Observations" - }, - "total_relations": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Total Relations" - }, - "total_results": { - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Total Results" - }, - "types": { - "anyOf": [ - { - "items": { - "$ref": "#/$defs/SearchItemType" - }, - "type": "array" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Types" - }, - "uri": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Uri" - } - }, - "required": [ - "depth", - "generated_at" - ], - "title": "MemoryMetadata", - "type": "object" - }, - "ObservationSummary": { - "description": "Simplified observation representation.", - "properties": { - "category": { - "title": "Category", - "type": "string" - }, - "content": { - "title": "Content", - "type": "string" - }, - "created_at": { - "format": "date-time", - "title": "Created At", - "type": "string" - }, - "file_path": { - "title": "File Path", - "type": "string" - }, - "permalink": { - "title": "Permalink", - "type": "string" - }, - "title": { - "title": "Title", - "type": "string" - }, - "type": { - "const": "observation", - "default": "observation", - "title": "Type", - "type": "string" - } - }, - "required": [ - "title", - "file_path", - "permalink", - "category", - "content", - "created_at" - ], - "title": "ObservationSummary", - "type": "object" - }, - "RelationSummary": { - "description": "Simplified relation representation.", - "properties": { - "created_at": { - "format": "date-time", - "title": "Created At", - "type": "string" - }, - "file_path": { - "title": "File Path", - "type": "string" - }, - "from_entity": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "From Entity" - }, - "permalink": { - "title": "Permalink", - "type": "string" - }, - "relation_type": { - "title": "Relation Type", - "type": "string" - }, - "title": { - "title": "Title", - "type": "string" - }, - "to_entity": { - "anyOf": [ - { - "type": "string" - }, - { - "type": "null" - } - ], - "default": null, - "title": "To Entity" - }, - "type": { - "const": "relation", - "default": "relation", - "title": "Type", - "type": "string" - } - }, - "required": [ - "title", - "file_path", - "permalink", - "relation_type", - "created_at" - ], - "title": "RelationSummary", - "type": "object" - }, - "SearchItemType": { - "description": "Types of searchable items.", - "enum": [ - "entity", - "observation", - "relation" - ], - "title": "SearchItemType", - "type": "string" - } -} - removed
Output schema / descriptionRemoved value: -"Complete context response." - removed
Output schema / properties / metadataRemoved value: -{ - "$ref": "#/$defs/MemoryMetadata" -} - removed
Output schema / properties / pageRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Page" -} - removed
Output schema / properties / page_sizeRemoved value: -{ - "anyOf": [ - { - "type": "integer" - }, - { - "type": "null" - } - ], - "default": null, - "title": "Page Size" -} - added
Output schema / properties / resultAdded value: +{ + "title": "Result", + "type": "string" +} - removed
Output schema / properties / resultsRemoved value: -{ - "description": "Hierarchical results with related items nested", - "items": { - "$ref": "#/$defs/ContextResult" - }, - "title": "Results", - "type": "array" -} - changed
Output schema / requiredPrevious value: -[ - "metadata" -]New value: +[ + "result" +] - changed
Output schema / titlePrevious value: -"GraphContext"New value: +"_WrappedResult" - added
Output schema / x-fastmcp-wrap-resultAdded value: +true
- Added
search - Changed
search_notes3 fields changed- added
Output schema / $defs / SearchResult / properties / entity_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Entity Id" +} - added
Output schema / $defs / SearchResult / properties / observation_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Observation Id" +} - added
Output schema / $defs / SearchResult / properties / relation_idAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Relation Id" +}
- Removed
set_default_project - Removed
switch_project - Removed
sync_status - Changed
write_note3 fields changed- removed
Input schema / properties / entity_typeRemoved value: -{ - "default": "note", - "title": "Entity Type", - "type": "string" -} - added
Input schema / properties / note_typeAdded value: +{ + "default": "note", + "title": "Note Type", + "type": "string" +} - added
Input schema / properties / tags / anyOfAdded value: +[ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "string" + }, + { + "type": "null" + } +]
2 tool updates
- Changed
build_context11 fields changed- added
Input schema / $defsAdded value: +{ + "StringOrInt": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "integer" + } + ] + } +} - changed
Input schema / properties / depth / anyOfPrevious value: -[ - { - "type": "integer" - }, - { - "type": "null" - } -]New value: +[ + { + "$ref": "#/$defs/StringOrInt" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / ContextResult / properties / primary_result / anyOfRemoved value: -[ - { - "$ref": "#/$defs/EntitySummary" - }, - { - "$ref": "#/$defs/RelationSummary" - }, - { - "$ref": "#/$defs/ObservationSummary" - } -] - added
Output schema / $defs / ContextResult / properties / primary_result / discriminatorAdded value: +{ + "mapping": { + "entity": "#/$defs/EntitySummary", + "observation": "#/$defs/ObservationSummary", + "relation": "#/$defs/RelationSummary" + }, + "propertyName": "type" +} - added
Output schema / $defs / ContextResult / properties / primary_result / oneOfAdded value: +[ + { + "$ref": "#/$defs/EntitySummary" + }, + { + "$ref": "#/$defs/RelationSummary" + }, + { + "$ref": "#/$defs/ObservationSummary" + } +] - removed
Output schema / $defs / ContextResult / properties / related_results / items / anyOfRemoved value: -[ - { - "$ref": "#/$defs/EntitySummary" - }, - { - "$ref": "#/$defs/RelationSummary" - }, - { - "$ref": "#/$defs/ObservationSummary" - } -] - added
Output schema / $defs / ContextResult / properties / related_results / items / discriminatorAdded value: +{ + "mapping": { + "entity": "#/$defs/EntitySummary", + "observation": "#/$defs/ObservationSummary", + "relation": "#/$defs/RelationSummary" + }, + "propertyName": "type" +} - added
Output schema / $defs / ContextResult / properties / related_results / items / oneOfAdded value: +[ + { + "$ref": "#/$defs/EntitySummary" + }, + { + "$ref": "#/$defs/RelationSummary" + }, + { + "$ref": "#/$defs/ObservationSummary" + } +] - added
Output schema / $defs / EntitySummary / properties / type / constAdded value: +"entity" - added
Output schema / $defs / ObservationSummary / properties / type / constAdded value: +"observation" - added
Output schema / $defs / RelationSummary / properties / type / constAdded value: +"relation"
- Changed
recent_activity9 fields changed- removed
Output schema / $defs / ContextResult / properties / primary_result / anyOfRemoved value: -[ - { - "$ref": "#/$defs/EntitySummary" - }, - { - "$ref": "#/$defs/RelationSummary" - }, - { - "$ref": "#/$defs/ObservationSummary" - } -] - added
Output schema / $defs / ContextResult / properties / primary_result / discriminatorAdded value: +{ + "mapping": { + "entity": "#/$defs/EntitySummary", + "observation": "#/$defs/ObservationSummary", + "relation": "#/$defs/RelationSummary" + }, + "propertyName": "type" +} - added
Output schema / $defs / ContextResult / properties / primary_result / oneOfAdded value: +[ + { + "$ref": "#/$defs/EntitySummary" + }, + { + "$ref": "#/$defs/RelationSummary" + }, + { + "$ref": "#/$defs/ObservationSummary" + } +] - removed
Output schema / $defs / ContextResult / properties / related_results / items / anyOfRemoved value: -[ - { - "$ref": "#/$defs/EntitySummary" - }, - { - "$ref": "#/$defs/RelationSummary" - }, - { - "$ref": "#/$defs/ObservationSummary" - } -] - added
Output schema / $defs / ContextResult / properties / related_results / items / discriminatorAdded value: +{ + "mapping": { + "entity": "#/$defs/EntitySummary", + "observation": "#/$defs/ObservationSummary", + "relation": "#/$defs/RelationSummary" + }, + "propertyName": "type" +} - added
Output schema / $defs / ContextResult / properties / related_results / items / oneOfAdded value: +[ + { + "$ref": "#/$defs/EntitySummary" + }, + { + "$ref": "#/$defs/RelationSummary" + }, + { + "$ref": "#/$defs/ObservationSummary" + } +] - added
Output schema / $defs / EntitySummary / properties / type / constAdded value: +"entity" - added
Output schema / $defs / ObservationSummary / properties / type / constAdded value: +"observation" - added
Output schema / $defs / RelationSummary / properties / type / constAdded value: +"relation"
19 tool updates
- First observed
build_context - First observed
canvas - First observed
create_memory_project - First observed
delete_note - First observed
delete_project - First observed
edit_note - First observed
get_current_project - First observed
list_directory - First observed
list_memory_projects - First observed
move_note - First observed
read_content - First observed
read_note - First observed
recent_activity - First observed
search_notes - First observed
set_default_project - First observed
switch_project - First observed
sync_status - First observed
view_note - First observed
write_note
TDQS
There is significant overlap between several tools, creating confusion. For example, 'search' and 'search_notes' appear to serve very similar purposes, and 'read_note' and 'view_note' both seem to retrieve notes with unclear distinctions. However, descriptions help differentiate some tools like 'edit_note' versus 'write_note', preventing complete ambiguity.
Most tools follow a consistent verb_noun pattern (e.g., 'create_memory_project', 'delete_note', 'list_directory'), which is clear and predictable. Minor deviations exist, such as 'build_context' and 'canvas' not following this pattern, but they are exceptions rather than the rule, maintaining overall readability.
With 17 tools, the count is borderline high for a memory management server, feeling slightly heavy but not excessive. It covers various operations like CRUD for notes and projects, but the overlap suggests some tools could be consolidated, making the set feel a bit bloated for the domain.
The tool set provides good coverage for memory and note management, including create, read, update, delete, search, and project handling. Minor gaps exist, such as no explicit tool for updating project details or managing links beyond moving notes, but core workflows are well-supported, allowing agents to work around these limitations.
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
Personal wiki and memory layer for AI assistants. Persistent, structured memory across sessions.
- ContextaOAuthcc.contexta
Persistent memory and knowledge graph for AI assistants — keyword + vector + graph search.
Persistent, portable memory for AI assistants — your private memory graph, from any MCP client.
Persistent memory for AI agents. Semantic search, memory graph, W3C DID identity.
Related MCP Servers
- AlicenseBqualityDmaintenanceStores AI memories as Markdown files for visualization in Obsidian's graph view, allowing users to create knowledge graphs with entities, relations, and observations.930MIT
- AlicenseNot gradedqualityFmaintenanceProvides persistent memory functionality for AI conversations by creating, managing and querying entities and relationships in a knowledge graph. Features SQLite storage, advanced search capabilities, and Windows auto-start integration for long-term AI memory retention.18MIT
- AlicenseAqualityAmaintenancePersistent memory with knowledge graph visualization, semantic/hybrid search, importance scoring, and cloud sync (S3/R2) for cross-session context management.43715MIT
- AlicenseNot gradedqualityBmaintenanceProvides AI agents with a secure offline-first long-term memory system using Obsidian Markdown vault and 3D knowledge graph, with RLM-based querying to avoid context overload.1MIT
Appeared in Searches
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/basicmachines-co/basic-memory'
If you have feedback or need assistance with the MCP directory API, please join our Discord server