memento-mcp
Memento MCP:面向法学硕士 (LLM) 的知识图谱记忆系统
可扩展、高性能的知识图谱记忆系统,具有语义检索、上下文回忆和时间感知功能。为任何支持模型上下文协议的 LLM 客户端(例如 Claude Desktop、Cursor、Github Copilot)提供弹性、自适应且持久的长期本体记忆。
核心概念
实体
实体是知识图谱中的主要节点。每个实体具有:
唯一名称(标识符)
实体类型(例如“人”、“组织”、“事件”)
观察结果列表
向量嵌入(用于语义搜索)
完整版本历史记录
例子:
{
"name": "John_Smith",
"entityType": "person",
"observations": ["Speaks fluent Spanish"]
}关系
关系定义具有增强属性的实体之间的有向连接:
强度指标(0.0-1.0)
置信水平(0.0-1.0)
丰富的元数据(来源、时间戳、标签)
通过版本历史实现时间感知
基于时间的置信度衰减
例子:
{
"from": "John_Smith",
"to": "Anthropic",
"relationType": "works_at",
"strength": 0.9,
"confidence": 0.95,
"metadata": {
"source": "linkedin_profile",
"last_verified": "2025-03-21"
}
}Related MCP server: Graph Memory MCP
存储后端
Memento MCP 使用 Neo4j 作为其存储后端,为图形存储和向量搜索功能提供了统一的解决方案。
为什么选择 Neo4j?
统一存储:将图形和矢量存储整合到单个数据库中
原生图形操作:专为图形遍历和查询而构建
集成向量搜索:Neo4j 内置的向量相似性搜索
可扩展性:大型知识图谱具有更好的性能
简化的架构:简洁的设计,所有操作均使用单一数据库
先决条件
Neo4j 5.13+(矢量搜索功能所需)
Neo4j 桌面设置(推荐)
开始使用 Neo4j 最简单的方法是使用Neo4j Desktop :
从https://neo4j.com/download/下载并安装 Neo4j Desktop
创建新项目
添加新数据库
将密码设置为
memento_password(或您喜欢的密码)启动数据库
Neo4j 数据库可在以下位置获取:
Bolt URI :
bolt://127.0.0.1:7687(用于驱动程序连接)HTTP :
http://127.0.0.1:74747474(用于 Neo4j 浏览器 UI)默认凭证:用户名:
neo4j,密码:memento_password(或您配置的任何密码)
使用 Docker 设置 Neo4j(替代方案)
或者,您可以使用 Docker Compose 来运行 Neo4j:
# Start Neo4j container
docker-compose up -d neo4j
# Stop Neo4j container
docker-compose stop neo4j
# Remove Neo4j container (preserves data)
docker-compose rm neo4j使用 Docker 时,Neo4j 数据库将在以下位置可用:
Bolt URI :
bolt://127.0.0.1:7687(用于驱动程序连接)HTTP :
http://127.0.0.1:74747474(用于 Neo4j 浏览器 UI)默认凭据:用户名:
neo4j,密码:memento_password
数据持久化与管理
由于docker-compose.yml文件中的 Docker 卷配置,Neo4j 数据在容器重启甚至版本升级后依然有效:
volumes:
- ./neo4j-data:/data
- ./neo4j-logs:/logs
- ./neo4j-import:/import这些映射确保:
/data目录(包含所有数据库文件)在您的主机上保留在./neo4j-data/logs目录在您的主机上保留在./neo4j-logs/import目录(用于导入数据文件)保留在./neo4j-import
如果需要,您可以在docker-compose.yml文件中修改这些路径以将数据存储在不同的位置。
升级 Neo4j 版本
您可以更改 Neo4j 版本而不会丢失数据:
在
docker-compose.yml中更新 Neo4j 镜像版本使用
docker-compose down && docker-compose up -d neo4j重新启动容器使用
npm run neo4j:init重新初始化架构
只要卷映射保持不变,数据就会在此过程中保留下来。
完全数据库重置
如果您需要完全重置 Neo4j 数据库:
# Stop the container
docker-compose stop neo4j
# Remove the container
docker-compose rm -f neo4j
# Delete the data directory contents
rm -rf ./neo4j-data/*
# Restart the container
docker-compose up -d neo4j
# Reinitialize the schema
npm run neo4j:init备份数据
要备份 Neo4j 数据,您只需复制数据目录:
# Make a backup of the Neo4j data
cp -r ./neo4j-data ./neo4j-data-backup-$(date +%Y%m%d)Neo4j CLI 实用程序
Memento MCP 包含用于管理 Neo4j 操作的命令行实用程序:
测试连接
测试与 Neo4j 数据库的连接:
# Test with default settings
npm run neo4j:test
# Test with custom settings
npm run neo4j:test -- --uri bolt://127.0.0.1:7687 --username myuser --password mypass --database neo4j初始化架构
在正常运行情况下,当 Memento MCP 连接到数据库时,Neo4j 模式初始化会自动进行。您无需在常规使用中运行任何手动命令。
以下命令仅对于开发、测试或高级定制场景才是必需的:
# Initialize with default settings (only needed for development or troubleshooting)
npm run neo4j:init
# Initialize with custom vector dimensions
npm run neo4j:init -- --dimensions 768 --similarity euclidean
# Force recreation of all constraints and indexes
npm run neo4j:init -- --recreate
# Combine multiple options
npm run neo4j:init -- --vector-index custom_index --dimensions 384 --recreate高级功能
语义搜索
根据含义而非仅仅根据关键词来查找语义相关的实体:
向量嵌入:使用 OpenAI 的嵌入模型将实体自动编码到高维向量空间中
余弦相似度:即使使用不同的术语,也能找到相关概念
可配置阈值:设置最小相似度分数以控制结果相关性
跨模式搜索:使用文本查询来查找相关实体,无论它们是如何描述的
多模型支持:兼容多种嵌入模型(OpenAI text-embedding-3-small/large)
上下文检索:根据语义而不是精确的关键字匹配来检索信息
优化默认值:调整参数以平衡精度和召回率(相似度阈值 0.6,启用混合搜索)
混合搜索:结合语义和关键字搜索以获得更全面的结果
自适应搜索:系统根据查询特征和可用数据,智能地选择仅矢量、仅关键字或混合搜索
性能优化:优先进行向量搜索以实现语义理解,同时保持回退机制以实现弹性
查询感知处理:根据查询复杂性和可用的实体嵌入调整搜索策略
时间意识
通过时间点图形检索跟踪实体和关系的完整历史记录:
完整版本历史记录:对实体或关系的每次更改都通过时间戳保存
时间点查询:检索过去任何时刻知识图谱的精确状态
变更跟踪:自动记录 createdAt、updatedAt、validFrom 和 validTo 时间戳
时间一致性:保持对知识如何演变的历史准确看法
非破坏性更新:更新会创建新版本,而不是覆盖现有数据
基于时间的过滤:根据时间标准过滤图形元素
历史探索:调查特定信息如何随时间变化
信心衰退
根据可配置的半衰期,关系的可信度会随着时间的推移而自动衰减:
基于时间的衰减:如果不加强,关系中的信心自然会随着时间的推移而下降
可配置的半衰期:定义信息变得不确定的速度(默认值:30 天)
最低置信水平:设置阈值以防止重要信息过度衰减
衰减元数据:每个关系都包含详细的衰减计算信息
非破坏性:原始置信值与衰减值一起保留
强化学习:当新的观察得到强化时,关系会重新获得信心
参考时间灵活性:根据任意参考时间计算衰减以进行历史分析
高级元数据
对实体和具有自定义字段的关系提供丰富的元数据支持:
源跟踪:记录信息来源(用户输入、分析、外部来源)
置信度:根据确定性为关系分配置信度分数(0.0-1.0)
关系强度:表示关系的重要性或强度(0.0-1.0)
时间元数据:跟踪信息的添加、修改或验证时间
自定义标签:添加任意标签进行分类和过滤
结构化数据:在元数据字段中存储复杂的结构化数据
查询支持:基于元数据属性的搜索和过滤
可扩展架构:根据需要添加自定义字段,而无需修改核心数据模型
MCP API 工具
LLM 客户端主机可以通过模型上下文协议使用以下工具:
实体管理
创建实体
在知识图谱中创建多个新实体
输入:
entities(对象数组)每个对象包含:
name(字符串):实体标识符entityType(字符串):类型分类observations(string[]):相关观察
添加观察结果
向现有实体添加新观察
输入:
observations(对象数组)每个对象包含:
entityName(字符串):目标实体contents(string[]):要添加的新观察结果
删除实体
删除实体及其关系
输入:
entityNames(string[])
删除观察结果
从实体中删除特定观察结果
输入:
deletions(对象数组)每个对象包含:
entityName(字符串):目标实体observations(string[]):要删除的观察结果
关系管理
创建关系
在具有增强属性的实体之间创建多个新关系
输入:
relations(对象数组)每个对象包含:
from(字符串):源实体名称to(字符串):目标实体名称relationType(字符串):关系类型strength(数字,可选):关系强度(0.0-1.0)confidence(数字,可选):置信度(0.0-1.0)metadata(对象,可选):自定义元数据字段
获取关系
获取具有增强属性的特定关系
输入:
from(字符串):源实体名称to(字符串):目标实体名称relationType(字符串):关系类型
更新关系
使用增强属性更新现有关系
输入:
relation(对象):包含:
from(字符串):源实体名称to(字符串):目标实体名称relationType(字符串):关系类型strength(数字,可选):关系强度(0.0-1.0)confidence(数字,可选):置信度(0.0-1.0)metadata(对象,可选):自定义元数据字段
删除关系
从图中删除特定关系
输入:
relations(对象数组)每个对象包含:
from(字符串):源实体名称to(字符串):目标实体名称relationType(字符串):关系类型
图操作
读取图
阅读整个知识图谱
无需输入
搜索节点
根据查询搜索节点
输入:
query(字符串)
打开节点
按名称检索特定节点
输入:
names(string[])
语义搜索
语义搜索
使用向量嵌入和相似性在语义上搜索实体
输入:
query(字符串):要进行语义搜索的文本查询limit(数字,可选):返回的最大结果数(默认值:10)min_similarity(数字,可选):最小相似度阈值(0.0-1.0,默认值:0.6)entity_types(string[],可选):按实体类型过滤结果hybrid_search(布尔值,可选):结合关键字和语义搜索(默认值:true)semantic_weight(数字,可选):混合搜索中语义结果的权重(0.0-1.0,默认值:0.6)
特征:
根据查询上下文智能选择最佳搜索方法(向量、关键字或混合)
通过回退机制优雅地处理没有语义匹配的查询
通过自动优化决策保持高性能
获取实体嵌入
获取特定实体的向量嵌入
输入:
entity_name(字符串):要获取嵌入的实体的名称
时间特征
获取实体历史记录
获取实体的完整版本历史记录
输入:
entityName(字符串)
获取关系历史记录
获取关系的完整版本历史记录
输入:
from(字符串):源实体名称to(字符串):目标实体名称relationType(字符串):关系类型
获取时间图
获取特定时间戳的图表状态
输入:
timestamp(数字):Unix 时间戳(自纪元以来的毫秒数)
获取衰减图
获取具有随时间衰减的置信度值的图表
输入:
options(对象,可选):reference_time(数字):衰减计算的参考时间戳(自纪元以来的毫秒数)decay_factor(数字):可选衰减因子覆盖
配置
环境变量
使用以下环境变量配置 Memento MCP:
# Neo4j Connection Settings
NEO4J_URI=bolt://127.0.0.1:7687
NEO4J_USERNAME=neo4j
NEO4J_PASSWORD=memento_password
NEO4J_DATABASE=neo4j
# Vector Search Configuration
NEO4J_VECTOR_INDEX=entity_embeddings
NEO4J_VECTOR_DIMENSIONS=1536
NEO4J_SIMILARITY_FUNCTION=cosine
# Embedding Service Configuration
MEMORY_STORAGE_TYPE=neo4j
OPENAI_API_KEY=your-openai-api-key
OPENAI_EMBEDDING_MODEL=text-embedding-3-small
# Debug Settings
DEBUG=true命令行选项
Neo4j CLI 工具支持以下选项:
--uri <uri> Neo4j server URI (default: bolt://127.0.0.1:7687)
--username <username> Neo4j username (default: neo4j)
--password <password> Neo4j password (default: memento_password)
--database <n> Neo4j database name (default: neo4j)
--vector-index <n> Vector index name (default: entity_embeddings)
--dimensions <number> Vector dimensions (default: 1536)
--similarity <function> Similarity function (cosine|euclidean) (default: cosine)
--recreate Force recreation of constraints and indexes
--no-debug Disable detailed output (debug is ON by default)嵌入模型
可用的 OpenAI 嵌入模型:
text-embedding-3-small:高效、经济(1536 维)text-embedding-3-large:准确率更高,成本更高(3072 维)text-embedding-ada-002:旧模型(1536 维)
OpenAI API 配置
要使用语义搜索,您需要配置 OpenAI API 凭据:
从OpenAI获取 API 密钥
使用以下配置来配置您的环境:
# OpenAI API Key for embeddings
OPENAI_API_KEY=your-openai-api-key
# Default embedding model
OPENAI_EMBEDDING_MODEL=text-embedding-3-small注意:在测试环境中,如果未提供 API 密钥,系统将模拟嵌入生成。但是,建议在集成测试中使用真实的嵌入。
与 Claude Desktop 集成
配置
将其添加到您的claude_desktop_config.json中:
{
"mcpServers": {
"memento": {
"command": "npx",
"args": ["-y", "@gannonh/memento-mcp"],
"env": {
"MEMORY_STORAGE_TYPE": "neo4j",
"NEO4J_URI": "bolt://127.0.0.1:7687",
"NEO4J_USERNAME": "neo4j",
"NEO4J_PASSWORD": "memento_password",
"NEO4J_DATABASE": "neo4j",
"NEO4J_VECTOR_INDEX": "entity_embeddings",
"NEO4J_VECTOR_DIMENSIONS": "1536",
"NEO4J_SIMILARITY_FUNCTION": "cosine",
"OPENAI_API_KEY": "your-openai-api-key",
"OPENAI_EMBEDDING_MODEL": "text-embedding-3-small",
"DEBUG": "true"
}
}
}
}或者,对于本地开发,您可以使用:
{
"mcpServers": {
"memento": {
"command": "/path/to/node",
"args": ["/path/to/memento-mcp/dist/index.js"],
"env": {
"MEMORY_STORAGE_TYPE": "neo4j",
"NEO4J_URI": "bolt://127.0.0.1:7687",
"NEO4J_USERNAME": "neo4j",
"NEO4J_PASSWORD": "memento_password",
"NEO4J_DATABASE": "neo4j",
"NEO4J_VECTOR_INDEX": "entity_embeddings",
"NEO4J_VECTOR_DIMENSIONS": "1536",
"NEO4J_SIMILARITY_FUNCTION": "cosine",
"OPENAI_API_KEY": "your-openai-api-key",
"OPENAI_EMBEDDING_MODEL": "text-embedding-3-small",
"DEBUG": "true"
}
}
}
}重要提示:始终在 Claude Desktop 配置中明确指定嵌入模型,以确保一致的行为。
推荐的系统提示
为了与 Claude 进行最佳集成,请将这些语句添加到系统提示符中:
You have access to the Memento MCP knowledge graph memory system, which provides you with persistent memory capabilities.
Your memory tools are provided by Memento MCP, a sophisticated knowledge graph implementation.
When asked about past conversations or user information, always check the Memento MCP knowledge graph first.
You should use semantic_search to find relevant information in your memory when answering questions.测试语义搜索
配置完成后,Claude 可以通过自然语言访问语义搜索功能:
要创建具有语义嵌入的实体:
User: "Remember that Python is a high-level programming language known for its readability and JavaScript is primarily used for web development."按语义搜索:
User: "What programming languages do you know about that are good for web development?"要检索特定信息:
User: "Tell me everything you know about Python."
这种方法的优势在于用户可以自然地进行交互,而 LLM 则负责处理选择和使用适当记忆工具的复杂性。
实际应用
Memento 的自适应搜索功能提供了实际的好处:
查询多功能性:用户无需担心如何表述问题 - 系统会自动适应不同的查询类型
故障恢复:即使语义匹配不可用,系统也可以在无需用户干预的情况下恢复到替代方法
性能效率:通过智能选择最佳搜索方法,系统平衡每个查询的性能和相关性
改进的上下文检索:LLM 对话受益于更好的上下文检索,因为系统可以在复杂的知识图谱中找到相关信息
例如,当用户询问“你对机器学习了解多少?”时,即使用户没有明确提及“机器学习”,系统也能检索概念相关的实体——可能是关于神经网络、数据科学或特定算法的实体。但是,如果语义搜索的结果不足,系统会自动调整方法,以确保仍然返回有用的信息。
故障排除
矢量搜索诊断
Memento MCP 包含内置诊断功能,可帮助解决矢量搜索问题:
嵌入验证:系统检查实体是否具有有效的嵌入,如果缺失则自动生成
向量索引状态:验证向量索引是否存在且处于 ONLINE 状态
回退搜索:如果向量搜索失败,系统将返回基于文本的搜索
详细日志记录:全面记录矢量搜索操作,以便排除故障
调试工具(当 DEBUG=true 时)
启用调试模式后,可以使用其他诊断工具:
诊断_vector_search :有关 Neo4j 向量索引、嵌入计数和搜索功能的信息
force_generate_embedding :强制为特定实体生成嵌入
debug_embedding_config :有关当前嵌入服务配置的信息
开发者重置
要在开发过程中完全重置 Neo4j 数据库:
# Stop the container (if using Docker)
docker-compose stop neo4j
# Remove the container (if using Docker)
docker-compose rm -f neo4j
# Delete the data directory (if using Docker)
rm -rf ./neo4j-data/*
# For Neo4j Desktop, right-click your database and select "Drop database"
# Restart the database
# For Docker:
docker-compose up -d neo4j
# For Neo4j Desktop:
# Click the "Start" button for your database
# Reinitialize the schema
npm run neo4j:init建筑与开发
# Clone the repository
git clone https://github.com/gannonh/memento-mcp.git
cd memento-mcp
# Install dependencies
npm install
# Build the project
npm run build
# Run tests
npm test
# Check test coverage
npm run test:coverage安装
通过 Smithery 安装
通过Smithery自动为 Claude Desktop 安装 memento-mcp:
npx -y @smithery/cli install @gannonh/memento-mcp --client claude使用 npx 进行全局安装
您可以使用 npx 直接运行 Memento MCP,而无需全局安装:
npx -y @gannonh/memento-mcp建议将此方法与 Claude Desktop 和其他 MCP 兼容客户端一起使用。
本地安装
对于开发或为项目做出贡献:
# Install locally
npm install @gannonh/memento-mcp
# Or clone the repository
git clone https://github.com/gannonh/memento-mcp.git
cd memento-mcp
npm install执照
麻省理工学院
Available Tools
17 toolsadd_observationsB
Add new observations to existing entities in your Memento MCP knowledge graph memory
| Name | Required | Description | Default |
|---|---|---|---|
| observations | Yes | ||
| strength | No | Default strength value (0.0 to 1.0) for all observations | |
| confidence | No | Default confidence level (0.0 to 1.0) for all observations | |
| metadata | No | Default metadata for all observations |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it only restates the core action. It does not disclose behavior around non-existent entities, overwriting, errors, or side effects, leaving 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 a single, front-loaded sentence with no filler or redundant content. It communicates the essential purpose efficiently.
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?
Despite a moderately rich schema, the tool has no annotations or output schema, and the description is too terse. It omits behavioral context (e.g., what happens if an entity doesn't exist, whether defaults apply) and return semantics, making it incomplete for a nested mutation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 75%, and the schema already documents parameters like entityName, contents, metadata, strength, and confidence. The description adds no extra parameter-level nuance, but the schema provides enough meaning to warrant a baseline 3.
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 ('Add') and resource ('observations to existing entities'), clearly distinguishing it from sibling tools like create_entities or delete_observations. It also scopes the operation to existing entities, which is helpful.
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 phrase 'to existing entities' implies this is for attaching observations to already-created entities, but it does not explicitly mention alternatives or when not to use it. No exclusions or alternative tool names are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_entitiesB
Create multiple new entities in your Memento MCP knowledge graph memory system
| Name | Required | Description | Default |
|---|---|---|---|
| entities | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only states the action without disclosing behavior such as idempotency, validation, limits, or side effects. For a mutation tool, this is insufficient; an agent cannot anticipate what happens on failure or whether existing entities are affected.
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 sentence, concise and front-loaded. It avoids unnecessary words. However, it is so brief that it omits essential information, making it too minimal for a complex 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?
The tool has a nested entity array with many optional fields, but the description offers no guidance on the input structure or return behavior. There is no output schema, so the description carries full responsibility for explaining the tool's behavior, which it fails to do.
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 says nothing about the parameters; schema description coverage is 0%. While the schema itself contains detailed property descriptions, the tool description does not add any meaning beyond what is structured, failing to compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (create), the resource (multiple new entities), and the context (Memento MCP knowledge graph). This distinguishes it from sibling tools like create_relations or add_observations which target different 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 usage is implied: use this when you need to add new entities. However, it provides no explicit guidance on when to choose this over alternatives, nor any prerequisites or exclusions. For a create operation, the intent is straightforward, but the lack of any alternative comparison leaves room for ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_relationsB
Create multiple new relations between entities in your Memento MCP knowledge graph memory. Relations should be in active voice
| Name | Required | Description | Default |
|---|---|---|---|
| relations | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavior disclosure. It only states that relations are created, but does not mention idempotency, overwrite semantics, validation of entity existence, transactional behavior, or what happens on partial failure. The mutation effect is implied but no further behavioral context is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no redundancy. It front-loads the core action and purpose, then adds a concise stylistic guideline. Every word earns its place, making it highly efficient for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a complex tool with a nested array of 13 fields, no annotations, and no output schema, yet the description offers only a high-level purpose. It lacks crucial context such as whether entities must already exist, how failures are handled, whether the operation is atomic, and what the tool returns. The sparse description is inadequate for an agent to use the tool safely and effectively.
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% for the top-level parameter, yet the description does not explain the array structure of 'relations' or the required fields. It adds the active voice requirement for relationType, which is helpful, but this only partially compensates. The nested schema descriptions exist but are not referenced or clarified by the tool description.
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 multiple new relations) and the resource (between entities in the Memento MCP knowledge graph). It distinguishes from siblings like update_relation and delete_relations by focusing on creation, and the 'multiple' wording distinguishes it from any single-relation tool. The scope is unambiguous.
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 use for batch-creating relations ("multiple new relations"), but provides no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives or exclusions, though sibling tool names like update_relation suggest the contrast. The 'active voice' note is a formatting guideline, not a usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_entitiesA
Delete multiple entities and their associated relations from your Memento MCP knowledge graph memory
| Name | Required | Description | Default |
|---|---|---|---|
| entityNames | Yes | An array of entity names to delete |
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 does disclose a key side effect: associated relations are also deleted. However, it does not mention what happens to observations attached to the entities, whether deletion is permanent, or any other side effects. This is a partial disclosure.
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 action and scope. Every word contributes meaning, with no redundant or filler content.
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 simple one-parameter interface, the description covers the core operation, but it leaves ambiguity about the fate of observations and whether deletion is reversible. With no output schema and no annotations, these omissions prevent a higher 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?
The input schema already fully describes entityNames as 'An array of entity names to delete' (100% schema coverage). The description adds no additional meaning for the parameter, so the baseline of 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 uses a specific verb ('Delete') and identifies the resource ('multiple entities and their associated relations') within the Memento MCP knowledge graph. It clearly distinguishes this tool from siblings like delete_relations by noting the cascading deletion of associated relations.
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 this tool should be used when both entities and their relations need to be deleted, versus using delete_relations separately. However, it does not explicitly state when to prefer this tool over alternatives, list exclusions, or mention prerequisites. The usage guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_observationsB
Delete specific observations from entities in your Memento MCP knowledge graph memory
| Name | Required | Description | Default |
|---|---|---|---|
| deletions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only states the action and does not disclose irreversibility, required permissions, partial failure behavior, or return format. The description adds no behavioral insight beyond the basic 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, front-loaded sentence with no superfluous words. It efficiently communicates the core function 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?
This is a destructive mutation tool with no annotations and no output schema. The description fails to mention side effects, irreversibility, prerequisites, or the exact parameter structure. The description is too minimal to fully support confident invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has one parameter 'deletions' with 0% top-level description coverage. The tool description hints at entities and observations, but it does not explain the array-of-objects structure or the required fields entityName and observations. The description provides minimal compensatory value for the schema 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 ('Delete') and the target ('specific observations from entities'), making it distinct from sibling tools like delete_entities and delete_relations. It precisely identifies the resource and operation.
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 add_observations or delete_entities. It lacks context about prerequisites, exclusions, or conditions where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_relationsB
Delete multiple relations from your Memento MCP knowledge graph memory
| Name | Required | Description | Default |
|---|---|---|---|
| relations | Yes | An array of relations to delete |
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 only states the action without clarifying whether deletion is permanent, whether it is idempotent, or what response is returned. The word 'delete' implies mutation but lacks important safety and side-effect 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 a single concise sentence that front-loads the action and resource with no redundant or unnecessary information. 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?
The description is minimal and lacks behavioral context for a destructive operation. It does not mention permanence, error handling, side effects, or return value expectations. With no output schema and no annotations, the description alone is insufficient for an agent to fully anticipate the operation's effects, especially given it is a delete action.
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 fully describes the single 'relations' parameter, including the nested fields from, to, and relationType, achieving 100% schema description coverage. The description adds no additional semantic meaning beyond what the schema already provides, so the baseline score of 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 verb 'Delete' and the resource 'multiple relations' within the Memento knowledge graph, making the tool's function immediately obvious. It also distinguishes itself from sibling tools like delete_entities, which targets entities, and delete_observations, which targets observations.
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. It does not mention scenarios where this tool is preferred over delete_entities or when to avoid it, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_decayed_graphA
Get your Memento MCP knowledge graph memory with confidence values decayed based on time
| Name | Required | Description | Default |
|---|---|---|---|
| reference_time | No | Optional reference timestamp (in milliseconds since epoch) for decay calculation | |
| decay_factor | No | Optional decay factor override (normally calculated from half-life) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It clearly states the core behavior—returning the knowledge graph with confidence values decayed by time—and the use of 'Get' implies a read-only operation. However, it does not elaborate on return format, potential side effects, or edge cases, though none are strongly suggested.
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 essential purpose without any unnecessary words. Every phrase contributes to understanding the tool's function, 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?
Given the lack of output schema and annotations, the description adequately conveys the main behavior and the optional override parameters. It is sufficient for a simple retrieval tool, though it could mention the default half-life calculation or the graph's composition (e.g., entities and relations).
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%, with both decay_factor and reference_time already described in the schema. The description adds only the context that decay is time-based but does not provide additional meaning beyond the parameter descriptions themselves, so it meets the baseline.
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 'Get' with a clear resource 'Memento MCP knowledge graph memory' and specifies the unique aspect 'with confidence values decayed based on time'. This distinguishes it from sibling tools like get_graph_at_time, which focuses on temporal snapshots rather than confidence decay.
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 time-decayed confidence values are needed, but it does not explicitly state when to use this tool versus alternatives like read_graph or get_graph_at_time. No exclusions or alternative recommendations are provided, so guidance is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entity_embeddingA
Get the vector embedding for a specific entity from your Memento MCP knowledge graph memory
| Name | Required | Description | Default |
|---|---|---|---|
| entity_name | Yes | The name of the entity to get the embedding for |
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 only that the tool 'gets' an embedding, implying a read operation, but does not disclose return format, error behavior, or any side effects. This is minimal beyond the basic action.
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 key action and resource. Every word contributes to clarity 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 simple one-parameter getter, the description provides adequate purpose but lacks completeness because no output schema exists, so return format is not described, and no usage guidelines or error behavior are mentioned. It is minimally viable but with 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?
The input schema fully describes the sole parameter (entity_name) at 100% coverage. The description adds no additional meaning beyond the schema, so baseline score of 3 applies.
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 ('Get') and resource ('the vector embedding for a specific entity') clearly distinguishing it from siblings like read_graph or get_entity_history. It precisely defines what the tool does.
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 (retrieve an embedding when needed) but does not explicitly mention when to use this tool over alternatives like semantic_search. No exclusions or alternatives are named, leaving usage guidance implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_entity_historyA
Get the version history of an entity from your Memento MCP knowledge graph memory
| Name | Required | Description | Default |
|---|---|---|---|
| entityName | Yes | The name of the entity to retrieve history for |
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 only states the action ('Get') without describing read-only nature, response format, pagination, or any limits. This is a minimal disclosure that does not inform the agent about what to expect beyond the basic 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, well-structured sentence with no wasted words. It is appropriately concise and front-loaded with the key verb and resource.
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 one-parameter tool, the description is minimally viable, but it lacks information about the return value (no output schema) and does not provide context on what 'version history' entails. Given the presence of siblings like get_relation_history, it could benefit from more contextual detail to guide the agent effectively.
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% (the only parameter entityName is fully described in the schema). The description adds no extra meaning beyond the schema, matching the baseline of 3 for full 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 clearly states the tool's purpose with a specific verb ('Get') and resource ('version history of an entity'), distinguishing it from sibling tools like get_relation_history which target relations. The context 'from your Memento MCP knowledge graph memory' further clarifies scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving an entity's version history but provides no explicit guidance on when to use this tool versus alternatives like get_relation_history or get_graph_at_time. There is no mention of when not to use it or any exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_graph_at_timeA
Get your Memento MCP knowledge graph memory as it existed at a specific point in time
| Name | Required | Description | Default |
|---|---|---|---|
| timestamp | Yes | The timestamp (in milliseconds since epoch) to query the graph at |
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 rephrases the tool name without adding operational details such as return format, potential side effects, timestamp validation, or performance implications. For a read operation, it is safe to assume non-destructiveness, but the description does not explicitly confirm or elaborate on 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, concise sentence with no redundant words. It earns its place by clearly stating the tool's purpose without waste.
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?
The tool is simple with one parameter, and the description covers its core function. However, there is no output schema, and the description does not explain what the response contains (e.g., full graph snapshot, node/relation lists). This leaves minor ambiguity but is still adequate for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the timestamp parameter (100% coverage), so the description does not need to elaborate. It adds no parameter-specific semantics, but none are necessary given the schema's clarity.
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 ('Get') and resource ('knowledge graph memory') with a clear temporal qualifier ('as it existed at a specific point in time'). This distinguishes it from sibling tools like read_graph (current state) and get_decayed_graph (decay-based retrieval).
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 use for historical queries but does not explicitly contrast with alternatives such as read_graph or get_entity_history. The 'as it existed at a specific point in time' hints at the use case but leaves it to the agent to infer when to use this tool over siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_relationB
Get a specific relation with its enhanced properties from your Memento MCP knowledge graph memory
| Name | Required | Description | Default |
|---|---|---|---|
| from | Yes | The name of the entity where the relation starts | |
| to | Yes | The name of the entity where the relation ends | |
| relationType | Yes | The type of the relation |
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 disclosing behavioral traits. It only says 'get,' which implies a read-only operation, but it doesn't explicitly confirm safety, side effects, or prerequisites. The vague phrase 'enhanced properties' doesn't clarify behavior, leaving the agent to infer from the name alone.
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 communicates the tool's purpose without unnecessary words. It is front-loaded with the key action and resource, and 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?
Since there is no output schema, the description should explain what is returned, especially the vague 'enhanced properties.' It doesn't specify the response format, what 'enhanced' means, or whether any filtering or sorting applies. This is a significant gap for an agent needing to understand the tool's output.
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 all three parameters (from, to, relationType) with descriptions, and schema_description_coverage is 100%. The description adds no meaning beyond 'specific relation,' so the baseline 3 applies.
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 function: retrieving a specific relation with enhanced properties from the Memento knowledge graph. It uses a specific verb ('get') and names the resource ('specific relation'), making it distinct from mutation or history tools like create_relations or get_relation_history, though it does not explicitly compare 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 provides clear context: this tool is for retrieving a specific relation. It doesn't explicitly state when not to use it or mention alternatives, but the purpose is obvious enough for basic selection among the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_relation_historyB
Get the version history of a relation from your Memento MCP knowledge graph memory
| Name | Required | Description | Default |
|---|---|---|---|
| from | Yes | The name of the entity where the relation starts | |
| to | Yes | The name of the entity where the relation ends | |
| relationType | Yes | The type of the relation |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only says 'Get the version history', which implies a read operation but offers no details about return format, side effects, required permissions, or limitations. This is a significant gap for a tool without annotation support.
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 of 15 words, front-loaded with the action 'Get the version history'. It wastes no words and is easily scannable.
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?
The description captures the core purpose but omits details about the returned history structure or how it differs from entity history. With no output schema and no annotations, an agent may lack sufficient context to fully understand the tool's behavior, but the tool is a simple getter and the schema helps.
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 covers all three parameters (from, to, relationType) with descriptions, achieving 100% coverage. The description adds no additional parameter meaning, so the baseline of 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 'Get the version history of a relation' with a specific verb and resource, and explicitly mentions 'history' to distinguish from the sibling tool get_relation which likely returns the current state. It also provides context that this is from the Memento MCP knowledge graph 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?
There is no guidance on when to use this tool instead of get_relation, get_entity_history, or other siblings. No alternatives or exclusions are mentioned. The description merely defines the action without contextual usage hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
open_nodesB
Open specific nodes in your Memento MCP knowledge graph memory by their names
| Name | Required | Description | Default |
|---|---|---|---|
| names | Yes | An array of entity names to retrieve |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It implies a read-like operation ('open') but does not explicitly state that it is non-destructive, what happens if names are not found, or whether it returns full node structures. This is a significant gap for a tool with no annotation support.
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 immediately conveys the action and target. It contains no fluff or redundant information, making it efficient 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?
Given the simple schema and no output schema, the description is minimally viable, but it lacks context about how this tool relates to siblings like read_graph or search_nodes. An agent may not know whether to use open_nodes for a full-graph read or for retrieving specific entities, leaving ambiguity in a larger tool ecosystem.
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 covers the only parameter 'names' fully with a description ('An array of entity names to retrieve'), and the tool description reiterates this by saying 'by their names.' With 100% schema coverage, the baseline is 3, and the description adds no additional meaning beyond what the schema already provides.
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: 'Open specific nodes' in the knowledge graph by name. The verb 'open' and resource 'nodes' are specific, and 'by their names' indicates a lookup operation. However, it does not explicitly distinguish from sibling tools like read_graph or search_nodes, so it misses full 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 no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, exclusions, or context such as 'use search_nodes when you don't know exact names.' This leaves the agent without clear direction on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_graphA
Read the entire Memento MCP knowledge graph memory system
| Name | Required | Description | Default |
|---|---|---|---|
| random_string | No | Dummy parameter for no-parameter tools |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden. 'Read' communicates a non-destructive operation and 'entire' indicates broad scope, but it does not disclose potential performance costs, response size, or exact return format, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that is front-loaded with the action and resource. Every word contributes to the meaning, 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, no-required-parameter graph read operation, the description adequately states scope and intent. The lack of an output schema is acceptable given the straightforward 'read entire graph' semantics, though a note on return format would make it slightly 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?
The schema fully describes the lone dummy parameter with 100% coverage, and the description adds no parameter-specific information. A baseline of 3 is appropriate because the schema already handles parameter semantics.
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 'Read' and identifies the resource as the 'entire Memento MCP knowledge graph memory system', making the tool's scope explicit. It clearly distinguishes this from sibling tools like search_nodes and get_graph_at_time, which imply filtered or temporal subsets.
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 about when to use this tool versus alternatives. It does not mention that search_nodes or get_graph_at_time could be better for specific queries, nor does it state exclusions such as 'use only when you need the full graph'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_nodesB
Search for nodes in your Memento MCP knowledge graph memory based on a query
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The search query to match against entity names, types, and observation content |
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 does not state whether the search is read-only, what it returns, or any limitations (e.g., pagination, scope). It only says 'search for nodes' without clarifying behavior beyond that obvious action, leaving the agent without safety or side-effect information.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no redundant words. It communicates the essential purpose efficiently, earning its place without any waste. This is an ideal level of conciseness for a simple 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?
The tool has one parameter and no output schema, so complexity is low. However, the lack of annotations and absence of any usage guidance or behavioral context makes the description only minimally complete. It covers the basic purpose but omits important context like safety (read vs. write) and relationship to the sibling 'semantic_search' tool, leaving gaps for the agent.
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 baseline is 3. The input schema already provides a clear description of the 'query' parameter ('match against entity names, types, and observation content'). The tool description adds no additional parameter semantics beyond what the schema already states, so it does not exceed the baseline.
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 function: 'Search for nodes in your Memento MCP knowledge graph memory based on a query.' It specifies a verb ('search'), a resource ('nodes'), and a mechanism ('based on a query'). However, it does not distinguish itself from the sibling tool 'semantic_search', which likely performs a similar function, so it misses the opportunity to differentiate.
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 query-based search of nodes, but it does not provide explicit guidance on when to use this tool versus alternatives like 'semantic_search' or 'open_nodes'. There are no stated exclusions or alternative tool references, so the guidance is only implied, not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
semantic_searchB
Search for entities semantically using vector embeddings and similarity in your Memento MCP knowledge graph memory
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | The text query to search for semantically | |
| limit | No | Maximum number of results to return (default: 10) | |
| min_similarity | No | Minimum similarity threshold from 0.0 to 1.0 (default: 0.6) | |
| entity_types | No | Filter results by entity types | |
| hybrid_search | No | Whether to combine keyword and semantic search (default: true) | |
| semantic_weight | No | Weight of semantic results in hybrid search from 0.0 to 1.0 (default: 0.6) |
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 discloses the mechanism (vector embeddings and similarity) but does not state that the operation is read-only/non-destructive, nor does it mention any limitations, rate limits, or output behavior. The safety profile is not explicitly disclosed.
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, focused sentence that directly states the tool's purpose without extraneous information. It is front-loaded and efficient.
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?
The tool has six parameters, no annotations, and no output schema, yet the description only provides the basic purpose. It lacks context on result format, default behaviors, or how this search integrates with the knowledge graph. The schema covers parameter details, but higher-level context is missing.
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 descriptions cover all six parameters with detailed explanations, so the description adds no additional parameter semantics beyond the schema. The 100% coverage supports the baseline score of 3.
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 defines the tool as a semantic search over Memento MCP entities using vector embeddings, making it distinct from the keyword-based sibling tools like search_nodes. The verb 'Search' and resource 'entities' are specific.
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 the tool is for semantic queries but does not explicitly state when to use it over alternatives like search_nodes, nor does it mention any exclusions or crossover conditions. Without naming sibling tools, guidance is limited to the implied semantic use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_relationB
Update an existing relation with enhanced properties in your Memento MCP knowledge graph memory
| Name | Required | Description | Default |
|---|---|---|---|
| relation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations to declare safety or mutation, so the description carries full responsibility. It does not disclose what happens if the relation doesn't exist, whether the update is partial or full replacement, how versioning is handled, or if there are any validation constraints. The vague 'enhanced properties' adds no concrete behavioral detail.
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, grammatically correct sentence that is easy to parse. It is appropriately concise and front-loaded with the verb and object. It could be slightly more informative, but it contains no unnecessary 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?
Given the complexity of the nested 'relation' object with numerous optional fields, the lack of output schema, and no annotations, this description is too minimal. It fails to clarify critical update semantics such as which fields are required for identification, whether the operation is a partial merge or full replacement, and the meaning of 'enhanced properties'. The description alone is insufficient for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description provides no parameter-level detail. 'Enhanced properties' gives a hint that the nested 'relation' object contains updates, but it does not explain which fields identify the relation versus which ones are updated. With low schema_description_coverage (0%), the description fails to compensate, despite the schema having well-documented fields.
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 ('Update') and the resource ('existing relation'), and specifies the context ('Memento MCP knowledge graph memory'). It distinguishes itself from sibling tools like create_relations and delete_relations by intentionally targeting existing relations, and the 'enhanced properties' hints at additional attribute updates.
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 word 'existing' implies the relation must already be present, suggesting this is not for creation, but there is no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives like delete and recreate, nor any prerequisites for updating a relation.
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.
17 tool updates
- First observed
add_observations - First observed
create_entities - First observed
create_relations - First observed
delete_entities - First observed
delete_observations - First observed
delete_relations - First observed
get_decayed_graph - First observed
get_entity_embedding - First observed
get_entity_history - First observed
get_graph_at_time - First observed
get_relation - First observed
get_relation_history - First observed
open_nodes - First observed
read_graph - First observed
search_nodes - First observed
semantic_search - First observed
update_relation
TDQS
Scored across 17 tools
Each tool has a clearly distinct purpose: CRUD operations for entities, relations, and observations are separated, and specialized tools for history, embeddings, and time-specific queries do not overlap. No ambiguity between tool functions.
All tool names follow a consistent verb_noun pattern (e.g., create_entities, delete_observations, get_entity_history). The naming is uniform and predictable, aiding agent selection.
With 17 tools, the count is slightly above the ideal 3-15 range but still well-scoped for a knowledge graph system. Each tool addresses a specific need, though a few could potentially be consolidated.
The tool surface covers most CRUD operations but lacks an update_entity tool and a dedicated get_entity (though open_nodes and read_graph partially fill this). Missing update for observations. These gaps may cause some workflow interruptions.
Maintenance
Related MCP Connectors
Company brain for AI agents — temporal knowledge graph search, exploration, and durable memory.
Persistent AI memory with semantic search, conflict detection, and ticketing.
- GoMindOAuthcom.gominddb
Persistent knowledge graph for AI agents. Remember, recall, and forget facts.
Memory system for AI agents with semantic search. Store and recall memories with ease.
Related MCP Servers
- FlicenseNot gradedqualityFmaintenanceProvides AI agents with persistent memory and knowledge management through a comprehensive knowledge graph platform. Enables storing, searching, and managing entities, relationships, and observations with advanced features like trending analysis and smart ranking.3-
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to build and query a persistent knowledge graph with entities, relationships, and observations. Features a core index system that ensures critical information is always accessible across all memory operations.1-
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to build and query temporally-aware knowledge graphs from conversations and data, maintaining persistent memory of entities, relationships, and facts across interactions.-
- AlicenseBqualityBmaintenanceProvides LLM clients with a persistent, scalable knowledge graph memory system that supports semantic retrieval, contextual recall, and temporal awareness.21472 npm1MIT