Memory MCP Server
This server provides sophisticated memory management with short-term and long-term memory systems, optimized for Chinese language support and multimodal capabilities.
Short-Term Memory: Add, search, and delete dynamic memories with keyword extraction (TF-IDF/jieba for Chinese), exponential time decay, and three-tier relevance scoring (top relevant, next relevant, random flashback).
Long-Term Memory: Create permanent memories with JavaScript-based trigger conditions for context-aware activation, plus update, delete, list, and retrieve creation/update history.
Chinese Language Processing: Built-in jieba segmentation for optimal Chinese text processing.
Multimodal Support: Store and search image memories with embeddings, similarity search, audio, and custom attachments with auto-deduplication.
Performance Optimization: Query caching (30-50% faster searches), data deduplication (30-40% storage savings), and timestamp normalization.
Security: Sandboxed JavaScript execution, rate limiting (100 requests/minute), input validation, timeout protection, and audit logging.
System Management: Real-time health checks, performance metrics, conversation statistics via resources like memory://stats/overview, automatic cleanup (maintains minimum 512 memories), and backup/restore with merge/overwrite options.
Advanced Features: Isolated memory spaces per conversation ID, frequent conversation identification, and prompt templates for guided workflows.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Memory MCP Serveradd our meeting notes about the Q3 project timeline to my memory"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Memory MCP Server
A Model Context Protocol (MCP) server providing dynamic short-term and long-term memory management with Chinese language support.
Overview
This MCP server implements a sophisticated memory system extracted from the GentianAphrodite project, offering:
Short-term Memory: Keyword-based, time-decayed dynamic memory with relevance scoring
Long-term Memory: Trigger-based permanent memories with JS code execution for flexible activation
Chinese Language Support: Built-in jieba segmentation for optimal Chinese text processing
Multiple Conversations: Isolated memory spaces per conversation ID
Related MCP server: AI Long-Term Memory MCP Server
Features
Short-term Memory
๐ Keyword Extraction: Uses TF-IDF with jieba for Chinese text
โฐ Time Decay: Exponential time decay model for memory relevance
๐ Relevance Scoring: Dynamic scoring based on keyword matching, time, and activation history
๐ฒ Smart Selection: Three-tier selection (top relevant, next relevant, random flashback)
๐งน Auto Cleanup: Automatic removal of old or irrelevant memories (configurable)
๐ผ๏ธ Image Memory: Optional image embeddings for visual similarity search
Long-term Memory
๐ฏ Trigger Conditions: JavaScript code execution for flexible memory activation
๐ Sandboxed Execution: Using Node.js built-in vm module for secure JS code evaluation
๐ฐ Random Recall: Serendipitous memory activation for context enrichment
๐ Context Tracking: Records creation and update contexts
๐ผ๏ธ Multimodal Support: Images, audio, and custom embeddings
Data Optimization
๐ Space Saving: 30-40% reduction in storage size
๐ Auto Deduplication: Removes duplicate keywords and images
โฑ๏ธ Timestamp Normalization: Unified timestamp format (ISO 8601)
๐๏ธ Smart Compression: Eliminates redundant
attachmentsfield
Performance & Reliability (NEW!)
โก Query Caching: 30-50% faster searches with intelligent result caching
โฑ๏ธ Timeout Protection: Prevents long-running operations from blocking the server
๐ฆ Rate Limiting: Protects against API abuse (100 requests/minute per conversation)
๐ก๏ธ Input Validation: Comprehensive sanitization and validation of all inputs
๐ Structured Logging: JSON-formatted logs for easy parsing and monitoring
๐ Performance Metrics: Real-time metrics collection (latency, error rates, cache hits)
๐ Health Monitoring: Built-in health checks for proactive issue detection
๐ Audit Logging: Complete audit trail of all operations for compliance
๐ Graceful Shutdown: Ensures all pending writes complete before shutdown
New Features (NEW!)
๐พ Backup & Restore: Export and import entire memory databases
backup_memories: Create timestamped backups with metadatarestore_memories: Restore from backup with merge or overwrite modeslist_backups: Browse available backup filesdelete_backup: Clean up old backups
๐ Advanced Search: Powerful search with flexible filtering
search_memories: Search with keywords, date ranges, score filtersanalyze_memory_patterns: Statistical analysis and insightsSupport for sorting by relevance, score, or timestamp
Search across short-term, long-term, or both memory types
๐ System Monitoring: Real-time server monitoring tools
health_check: Get server health status and diagnosticsget_metrics: View performance metrics (P50/P95/P99 latency, error rates)get_cache_stats: Monitor query cache hit rates
Installation
# Clone or download this directory
cd memory-mcp-server
# Install dependencies
npm install
# Make the server executable (Unix/Linux/Mac)
chmod +x src/index.jsUsage
With Claude Desktop
Add to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"memory": {
"command": "node",
"args": ["/absolute/path/to/memory-mcp-server/src/index.js"]
}
}
}With Cursor or other MCP clients
Configure according to your client's MCP server setup instructions, pointing to src/index.js.
MCP Features
This server implements the full Model Context Protocol specification with:
Tools: 13 tools for memory management
Resources: 4 resources for system inspection
Prompts: 4 prompt templates for common memory tasks
Available Tools
Short-term Memory Tools
add_short_term_memory
Add a new short-term memory from conversation messages.
Parameters:
messages(array): Recent conversation messages with role and contentconversation_id(string): Unique conversation identifierroleWeights(object, optional): Custom weights for different roles
Example:
{
"messages": [
{"role": "user", "content": "My birthday is July 17, 1990"},
{"role": "assistant", "content": "I'll remember that!"}
],
"conversation_id": "user_123",
"roleWeights": {
"user": 2.7,
"assistant": 2.0,
"system": 1.0
}
}search_short_term_memories
Search for relevant memories based on current context.
Parameters:
recentMessages(array): Recent messages to search againstconversation_id(string): Current conversation IDroleWeights(object, optional): Role weights
Returns: Top relevant, next relevant, and random flashback memories
delete_short_term_memories
Delete memories matching a pattern.
Parameters:
pattern(string): Keyword or regex pattern (e.g., "/pattern/i")conversation_id(string): Conversation ID
get_memory_stats
Get statistics about short-term memories.
cleanup_memories
Manually trigger memory cleanup (removes old/low-relevance memories).
get_frequent_conversation
Get the most frequently mentioned conversation ID.
Long-term Memory Tools
add_long_term_memory
Add a permanent memory with a trigger condition.
Parameters:
name(string): Unique memory nameprompt(string): Memory contenttrigger(string): JavaScript code for activation conditionconversation_id(string, optional): Conversation ID to store the memory under (defaults to "default")createdContext(string, optional): Context descriptionrecentMessages(array, optional): Auto-generate context from messages
Trigger Examples:
// Activate when "birthday" is mentioned
"match_keys(context.messages, ['birthday', '็ๆฅ'], 'any')"
// Activate on specific date or when mentioned
"match_keys(context.messages, ['anniversary'], 'any') || (new Date().getMonth() === 6 && new Date().getDate() === 17)"
// Multiple keywords required
"match_keys_all(context.messages, ['project', 'deadline'], 'user')"Available in trigger context:
context.messages: Recent message arraycontext.conversation_id: Current conversation IDcontext.participants: Participant informationmatch_keys(messages, keywords, scope, depth): Match any keywordmatch_keys_all(messages, keywords, scope, depth): Match all keywordsDate,Math,RegExp,JSON: Safe built-in objects
update_long_term_memory
Update an existing long-term memory.
Parameters:
name(string): Memory name to updatetrigger(string, optional): New trigger conditionprompt(string, optional): New contentconversation_id(string, optional): Conversation ID that owns the memoryupdatedContext(string, optional): Update context
delete_long_term_memory
Delete a long-term memory by name.
Parameters:
name(string): Memory name to deleteconversation_id(string, optional): Conversation ID that owns the memory
list_long_term_memories
List all long-term memories with basic info.
Parameters:
conversation_id(string, optional): Conversation ID to inspect (defaults to "default")
search_long_term_memories
Search and activate memories based on current context.
Parameters:
messages(array): Recent conversation messagesconversation_id(string): Current conversation IDparticipants(object, optional): Participant info
Returns: Activated memories (triggered) and random memories
get_memory_context
Get creation and update context of a specific memory.
Parameters:
name(string): Memory name to inspectconversation_id(string, optional): Conversation ID that owns the memory
Available Resources
MCP resources allow AI to inspect the memory system state:
memory://stats/overview
System-wide overview and health status.
Returns:
Total conversation count
System health status
Available features
memory://conversations/list
List all conversations with memory statistics.
Returns:
Conversation IDs
Short-term memory counts
Long-term memory counts
memory://stats/conversation/{id}
Detailed statistics for a specific conversation.
Parameters:
{id}: Conversation ID to inspect
Returns:
Short-term memory: total, scores, age ranges
Long-term memory: total, update counts, timestamps
memory://guide/best-practices
Comprehensive guide on using the memory system effectively.
Returns:
Best practices for short-term and long-term memory
Trigger condition examples
Multimodal support guidelines
Common usage patterns
Available Prompts
MCP prompts provide guided workflows for common tasks:
remember-user-info
Store important user information in long-term memory.
Arguments:
info_type(required): Type of information (preference, birthday, fact, etc.)information(required): The information to rememberconversation_id(optional): Target conversation ID
Guides AI to:
Create appropriate memory name
Generate relevant trigger conditions
Use add_long_term_memory tool
recall-context
Search for relevant memories based on current conversation.
Arguments:
current_topic(required): Current topic or questionconversation_id(optional): Conversation to search
Guides AI to:
Search short-term memories for recent context
Search long-term memories for permanent facts
Consider keyword relevance and time decay
create-reminder
Create a conditional reminder that activates based on context or date.
Arguments:
reminder_content(required): What to remind abouttrigger_condition(required): When to trigger (keywords or date)conversation_id(optional): Target conversation
Guides AI to:
Convert natural language conditions to JavaScript
Create date-based or keyword-based triggers
Use add_long_term_memory with proper trigger
analyze-conversation
Analyze conversation history and suggest what should be remembered.
Arguments:
conversation_id(required): Conversation to analyze
Guides AI to:
Get current memory statistics
Identify important information types
Categorize for short-term vs long-term storage
Create appropriate memory entries
Architecture
memory-mcp-server/
โโโ src/
โ โโโ index.js # MCP server entry point
โ โโโ memory/
โ โ โโโ short-term.js # Short-term memory logic
โ โ โโโ long-term.js # Long-term memory logic
โ โ โโโ storage.js # JSON file storage with caching
โ โ โโโ modalities.js # Multimodal attachment handling
โ โโโ nlp/
โ โ โโโ jieba.js # Chinese segmentation
โ โ โโโ keywords.js # Keyword matching
โ โโโ triggers/
โ โ โโโ matcher.js # JS code execution sandbox (Node.js vm)
โ โโโ tools/
โ โ โโโ short-term-tools.js # Short-term MCP tools
โ โ โโโ long-term-tools.js # Long-term MCP tools
โ โโโ resources/
โ โ โโโ index.js # MCP resources (stats, guides)
โ โโโ prompts/
โ โ โโโ index.js # MCP prompts (workflows)
โ โโโ utils/
โ โโโ lru-cache.js # LRU cache for managers
โ โโโ zod-to-json-schema.js
โโโ data/ # Memory storage (auto-created)
โโโ {conversation_id}/
โโโ short-term-memory.json
โโโ long-term-memory.jsonMemory Algorithms
Short-term Memory Relevance
relevance = keyword_match_score - time_penalty + memory_score
where:
keyword_match_score = ฮฃ(current_kw.weight + memory_kw.weight)
time_penalty = 15 * (1 - e^(-time_diff * 2e-9))
memory_score = accumulated score from past activationsSelection Strategy
Top Relevant (max 2): Highest relevance scores
Next Relevant (max 1): Next highest scores
Random Flashback (max 2): Weighted random from remaining memories
Filtering:
Excludes same-conversation memories from last 20 minutes
Excludes memories within 10 minutes of any selected memory
Ensures diversity in recalled memories
Cleanup Policy
Triggers every 24 hours
Removes memories older than 1 year
Removes low-relevance memories (score < -5)
Always keeps at least 512 memories
Development
# Run in development mode with auto-reload
npm run dev
# Run normally
npm startSecurity
Sandboxed Execution: Long-term memory triggers run in Node.js built-in
vmmodule sandbox with timeout protectionNo File System Access: Trigger code cannot access filesystem (sandboxed)
No Network Access: Trigger code cannot make network requests
Timeout Protection: 1-second execution timeout prevents infinite loops
Secure Context: Only safe built-in objects are exposed to trigger code
Note: The built-in
vmmodule provides good isolation for most use cases. For maximum security in production environments, consider running the MCP server in a containerized environment with additional restrictions.
Limitations
Memory storage is file-based (JSON), suitable for moderate usage
Trigger execution has 1-second timeout
Manager instances cached with LRU (max 100 conversations, 30-min idle timeout)
Chinese text processing optimized (may be less optimal for other languages)
Performance Optimizations
Write Caching: Delayed writes with 1-second batching to reduce disk I/O
Directory Caching: Directory existence checks are cached to avoid repeated file system calls
LRU Manager Cache: Automatic cleanup of inactive conversation managers prevents memory leaks
Retry Logic: File operations automatically retry with exponential backoff on transient errors
Graceful Shutdown: Pending writes are flushed and resources cleaned up on shutdown signals
Data Deduplication: Automatic removal of duplicate images and keywords (30-40% space savings)
Timestamp Normalization: Unified timestamp format eliminates redundancy
Image Memory Features
The server includes optional image memory capabilities:
Image Modalities: Store images with memories using embeddings, tags, and descriptions
Similarity Search: Find visually similar memories using cosine similarity on embeddings
Auto Deduplication: Automatically detect and remove duplicate images (URL or content hash)
Flexible Embeddings: Support for CLIP, ResNet, or custom image embeddings
Base64 Support: Handle both URLs and data URI images
Example:
import { createImageModality } from './src/utils/image-processor.js';
const imageMemory = createImageModality({
uri: 'https://example.com/photo.jpg',
embedding: [0.1, 0.2, 0.3, ...], // 512-d vector from CLIP/etc
tags: ['vacation', 'beach'],
description: 'Sunset at the beach'
});
// Use in memory creation
await addShortTermMemory(messages, conversationId, {
modalities: [imageMemory]
});See docs/IMAGE_MEMORY.md for detailed guide.
Data Optimization
Built-in data optimization reduces storage by 30-40%:
Timestamp Normalization:
time_stamp/timeStamp/timestampโtimestamp(ISO 8601)Remove Redundancy:
attachmentsfield removed (usemodalitiesonly)Keyword Deduplication: Case-insensitive merge with max weight retention
Image Deduplication: Remove duplicate images based on URI or content hash
All optimizations are applied automatically during storage. See docs/DATA_OPTIMIZATION.md for details.
Performance Benchmarks
Performance improvements from the latest enhancements:
Feature | Improvement | Details |
Query Caching | 30-50% faster | Caches 50 most recent queries for 5 minutes |
Vector Similarity | 40-60% faster | Pre-computed magnitude caching |
Rate Limiting | Protection | 100 requests/minute per conversation |
Timeout Protection | Reliability | All operations timeout after 5-30s |
Data Storage | 30-40% smaller | Deduplication and normalization |
Health Checks | Proactive | Memory, error rate, cache monitoring |
Audit Logging | Complete | All operations logged with timestamps |
Test Results
Run the comprehensive test suite:
node test-improvements.jsExpected output: 36 tests pass covering:
Query caching (4 tests)
Timeout handling (3 tests)
Rate limiting (5 tests)
Input validation (8 tests)
Structured logging (3 tests)
Performance metrics (6 tests)
Health checks (4 tests)
Audit logging (3 tests)
Architecture
src/
โโโ memory/ # Core memory management
โ โโโ short-term.js # Dynamic keyword-based memory
โ โโโ long-term.js # Trigger-based permanent memory
โ โโโ storage.js # JSON file persistence
โโโ tools/ # MCP tool implementations
โ โโโ short-term-tools.js
โ โโโ long-term-tools.js
โ โโโ backup-tools.js # NEW: Backup/restore
โ โโโ search-tools.js # NEW: Advanced search
โโโ utils/ # Utility modules
โ โโโ query-cache.js # NEW: Query result caching
โ โโโ timeout.js # NEW: Timeout handling
โ โโโ logger.js # NEW: Structured logging
โ โโโ lru-cache.js # LRU cache implementation
โโโ security/ # NEW: Security features
โ โโโ rate-limiter.js # API rate limiting
โ โโโ input-validator.js # Input sanitization
โ โโโ audit-log.js # Audit trail logging
โโโ monitoring/ # NEW: Monitoring features
โ โโโ metrics.js # Performance metrics
โโโ health/ # NEW: Health checks
โ โโโ index.js # Health monitoring
โโโ resources/ # MCP resources
โ โโโ index.js
โโโ prompts/ # MCP prompts
โโโ index.jsLicense
BSD-3-Clause license
Credits
Extracted and generalized from the GentianAphrodite project.
Available Tools
21 toolsadd_long_term_memoryC
Add a new long-term memory with a trigger condition. The trigger is JavaScript code that determines when this memory should be activated. Available context: context.messages (array), context.conversation_id (string), context.participants (object). Available functions: match_keys(messages, keywords, scope, depth), match_keys_all(messages, keywords, scope, depth).
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Unique name for the memory | |
| prompt | Yes | The memory content to be recalled when triggered | |
| trigger | Yes | JavaScript code that returns true/false to determine if memory should activate. Example: "match_keys(context.messages, ['birthday'], 'any') || new Date().getMonth() === 6" | |
| conversation_id | No | Conversation ID that owns this memory (defaults to "default") | |
| createdContext | No | Optional context about when/why this memory was created | |
| recentMessages | No | Optional recent messages to auto-generate createdContext |
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 describes the trigger mechanism and available context/functions, which is helpful. However, it doesn't address critical behavioral aspects: whether this operation is idempotent, what permissions are required, how errors are handled, or what happens on success (e.g., confirmation message). For a creation tool with zero annotation coverage, this leaves 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 appropriately concise with two sentences. The first sentence states the core purpose, and the second provides technical details about the trigger. There's no wasted text, though it could be slightly more front-loaded with key behavioral information 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 (creating a persistent memory with custom JavaScript triggers), no annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns, how to verify success, error conditions, or the implications of adding a memory (e.g., storage limits, trigger evaluation frequency). For a 6-parameter creation tool with behavioral nuances, this is inadequate.
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 schema already documents all 6 parameters thoroughly. The description adds minimal value beyond the schema: it mentions the trigger is 'JavaScript code' and lists available context/functions, which the schema's trigger description also covers with an example. This meets the baseline of 3 when the schema does the heavy lifting.
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: 'Add a new long-term memory with a trigger condition.' It specifies the verb ('Add'), resource ('long-term memory'), and key mechanism ('trigger condition'), distinguishing it from siblings like 'update_long_term_memory' or 'delete_long_term_memory'. However, it doesn't explicitly differentiate from 'add_short_term_memory' beyond the resource name.
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 mentions the trigger condition but doesn't explain when to choose long-term over short-term memory, when to use this versus 'update_long_term_memory', or any prerequisites. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_short_term_memoryB
Add a new short-term memory entry from recent conversation messages. The memory will be indexed by keywords and scored based on relevance over time.
| Name | Required | Description | Default |
|---|---|---|---|
| messages | Yes | Array of recent messages to create memory from | |
| conversation_id | Yes | Unique identifier for the conversation | |
| roleWeights | No | Optional weights for different roles when extracting keywords (default: user=2.7, assistant=2.0, system=1.0) |
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 mentions that memories are 'indexed by keywords and scored based on relevance over time,' which adds some context about processing behavior. However, it fails to address critical aspects such as whether this is a read-only or mutative operation, potential side effects, error conditions, or how the memory is stored and accessed. For a tool that likely involves data creation with no annotation coverage, this is insufficient.
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 concise and well-structured in two sentences. The first sentence clearly states the purpose, and the second adds useful behavioral context without redundancy. Every sentence earns its place, making it efficient and front-loaded with essential information.
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 (involving memory creation with multiple parameters and no output schema), the description is moderately complete. It covers the basic purpose and some processing behavior but lacks details on usage guidelines, error handling, and output expectations. Without annotations or an output schema, the description should do more to compensate, but it provides a minimal viable explanation.
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 100% description coverage, providing clear documentation for all parameters. The description adds minimal value beyond the schema, as it only implies that 'messages' are used to 'create memory' without detailing how parameters interact or their semantic roles. Given the high schema coverage, a baseline score of 3 is appropriate, as the description doesn't significantly enhance parameter understanding.
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: 'Add a new short-term memory entry from recent conversation messages.' It specifies the verb ('Add') and resource ('short-term memory entry'), and distinguishes it from siblings like 'add_long_term_memory' by specifying 'short-term.' However, it doesn't explicitly differentiate from other memory-related tools like 'search_short_term_memories' or 'delete_short_term_memories,' which prevents 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. It doesn't mention when to choose 'add_short_term_memory' over 'add_long_term_memory' or other sibling tools, nor does it specify prerequisites or exclusions. This lack of contextual usage advice limits its effectiveness for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_memory_patternsC
ๅๆ่จๆถไฝฟ็จๆจกๅผ๏ผๆไพ็ตฑ่จไฟกๆฏๅๆดๅฏ
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_id | Yes | ๅฐ่ฉฑ ID | |
| memory_type | No | ๅๆ็่จๆถ้กๅ | both |
| top_keywords | No | ่ฟๅๆๅธธ่ฆ้้ต่ฉ็ๆธ้ |
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 providing 'statistical information and insights', but doesn't specify what kind of statistics (e.g., frequency, trends), how insights are generated, whether it's a read-only operation, potential performance impacts, or error conditions. For an analysis tool with zero annotation coverage, this leaves significant behavioral 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 extremely concise and front-loaded: a single sentence in Chinese that directly states the tool's function. There's no wasted verbiage or unnecessary elaboration, making it efficient and easy to parse. Every word contributes to understanding the core purpose.
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 (analyzing memory patterns with 3 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects like read/write nature, return format, or error handling, and it fails to differentiate from similar sibling tools. For a tool that likely provides detailed analysis results, more context is needed to guide effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all parameters (conversation_id, memory_type, top_keywords) with descriptions and defaults. The description adds no additional meaning beyond the schema, such as explaining the purpose of analyzing patterns or how parameters affect the analysis. Baseline 3 is appropriate when the schema handles parameter documentation adequately.
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: 'ๅๆ่จๆถไฝฟ็จๆจกๅผ๏ผๆไพ็ตฑ่จไฟกๆฏๅๆดๅฏ' (analyze memory usage patterns, provide statistical information and insights). It specifies the verb 'analyze' and the resource 'memory usage patterns', which is distinct from sibling tools that focus on adding, deleting, searching, or managing memories. However, it doesn't explicitly differentiate from similar analysis tools like 'get_memory_stats' or 'get_metrics', which slightly reduces clarity.
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. With sibling tools like 'get_memory_stats', 'get_metrics', and 'get_cache_stats' that might overlap in functionality, there's no indication of specific contexts, prerequisites, or exclusions. Usage is implied only by the tool's name and description, lacking explicit when/when-not instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
backup_memoriesB
ๅฐๆๅฎๅฐ่ฉฑ็ๆๆ่จๆถๅไปฝๅฐๆไปถใๆฏๆๅฐๅบ็ญๆๅ้ทๆ่จๆถ๏ผๅ ๅซๅฎๆด็ๅ ๆธๆๅๆ้ๆณใ
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_id | Yes | ๅฐ่ฉฑ ID | |
| output_path | No | ่ผธๅบๆไปถ่ทฏๅพ๏ผ้ป่ช็บ data/backups/๏ผ | |
| include_short_term | No | ๆฏๅฆๅ ๅซ็ญๆ่จๆถ | |
| include_long_term | No | ๆฏๅฆๅ ๅซ้ทๆ่จๆถ | |
| compress | No | ๆฏๅฆๅฃ็ธฎ๏ผไฟ็็จๆผๅฐไพๅฏฆ็พ๏ผ |
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 mentions the tool 'ๆฏๆๅฐๅบ็ญๆๅ้ทๆ่จๆถ๏ผๅ ๅซๅฎๆด็ๅ ๆธๆๅๆ้ๆณ' (supports exporting short-term and long-term memories, including complete metadata and timestamps), which adds some behavioral context about what gets exported. However, it doesn't disclose critical traits like whether this is a read-only operation, what permissions are needed, whether it overwrites existing files, or what the output format is (e.g., JSON, CSV). For a backup tool with zero annotation coverage, this leaves 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 that front-loads the core purpose ('ๅฐๆๅฎๅฐ่ฉฑ็ๆๆ่จๆถๅไปฝๅฐๆไปถ') and follows with supporting details about memory types and metadata. Every part earns its place with no redundant or vague language, 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 complexity of a backup operation with 5 parameters, no annotations, and no output schema, the description is incomplete. It lacks information on behavioral aspects (e.g., file overwriting, permissions), output details (e.g., file format, success indicators), and usage constraints. While the schema covers parameters well, the description doesn't compensate for missing annotations or output schema, leaving the agent with insufficient context for safe and effective use.
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 schema already documents all 5 parameters thoroughly. The description adds minimal value beyond the schema by mentioning '็ญๆๅ้ทๆ่จๆถ' (short-term and long-term memories), which aligns with the include_short_term and include_long_term parameters, but doesn't provide additional syntax, format, or usage details. This meets the baseline of 3 when the schema does the heavy lifting.
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 ('ๅไปฝๅฐๆไปถ' - backup to file) and resource ('ๆๅฎๅฐ่ฉฑ็ๆๆ่จๆถ' - all memories of a specified conversation). It distinguishes itself from sibling tools by focusing on backup/export functionality rather than memory manipulation, analysis, or retrieval operations found in tools like add_long_term_memory, analyze_memory_patterns, or list_backups.
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 through 'ๅฐๆๅฎๅฐ่ฉฑ็ๆๆ่จๆถๅไปฝๅฐๆไปถ' (backup all memories of a specified conversation to a file), suggesting this tool is for creating backups rather than other memory operations. However, it doesn't explicitly state when to use this versus alternatives like list_backups (which likely lists existing backups) or restore_memories (which likely restores from backups), nor does it mention any prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cleanup_memoriesA
Manually trigger cleanup of old or low-relevance short-term memories. This removes memories older than 1 year or with very low relevance scores, keeping at least 512 memories.
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_id | Yes | Conversation ID for storage |
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 tool performs a destructive action ('removes memories') and specifies behavioral traits like cleanup criteria and retention rules. However, it lacks details on permissions, rate limits, or what happens if the conversation_id is invalid, leaving some behavioral aspects unclear.
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 front-loaded with the core purpose in the first sentence, followed by specific behavioral details in the second sentence. It is appropriately sized with zero wasted words, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (destructive cleanup operation), lack of annotations, and no output schema, the description is moderately complete. It covers the what and how of cleanup but misses contextual details like error handling, confirmation prompts, or side effects, which are important for a mutation tool with no structured safety hints.
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 schema already documents the 'conversation_id' parameter. The description does not add any additional meaning or context about this parameter beyond what the schema provides, such as how it affects the cleanup process. Baseline 3 is appropriate as the schema handles the parameter documentation.
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 ('manually trigger cleanup') and resource ('old or low-relevance short-term memories'), with specific criteria for removal (older than 1 year or low relevance scores) and a retention minimum (keeping at least 512 memories). However, it does not explicitly differentiate from siblings like 'delete_short_term_memories', which might handle more targeted deletions.
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 maintenance purposes ('manually trigger cleanup') and specifies criteria (age and relevance), but does not provide explicit guidance on when to use this tool versus alternatives like 'delete_short_term_memories' or 'backup_memories', nor does it mention prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_backupC
ๅช้คๆๅฎ็ๅไปฝๆไปถ
| Name | Required | Description | Default |
|---|---|---|---|
| backup_path | 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. While 'ๅช้ค' clearly indicates a destructive operation, it doesn't specify whether the deletion is permanent or reversible, what permissions are required, whether there are confirmation prompts, or what happens on success/failure. For a destructive tool with zero annotation coverage, 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 extremely concise - a single phrase that directly states the tool's purpose without any unnecessary words. It's front-loaded with the core action and resource, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive operation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what the tool returns, what errors might occur, or important behavioral aspects like whether deletions are permanent. Given the complexity and risk profile of a delete operation, more context is needed.
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 description coverage is 100%, with the single parameter 'backup_path' clearly documented in the schema as 'ๅไปฝๆไปถ่ทฏๅพ' (backup file path). The description adds no additional semantic context about the parameter beyond what's already in the schema, so it meets the baseline score of 3 when schema coverage is high.
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 ('ๅช้ค' meaning delete) and the resource ('ๆๅฎ็ๅไปฝๆไปถ' meaning specified backup file), making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling tools like 'delete_long_term_memory' or 'delete_short_term_memories', which also perform deletion operations on 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 description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (like needing to identify a backup first), when not to use it, or how it relates to sibling tools like 'list_backups' (to find backups) or 'restore_memories' (which might involve backups).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_long_term_memoryC
Delete a long-term memory by name.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the memory to delete | |
| conversation_id | No | Conversation ID that owns this memory |
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 deletes a memory, implying a destructive operation, but doesn't cover critical aspects like whether deletion is permanent, requires specific permissions, has side effects (e.g., on related data), or returns confirmation details. 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 a single, direct sentence with zero wasted words, making it highly efficient and front-loaded. Every word contributes to the core purpose 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's complexity as a destructive operation with no annotations and no output schema, the description is insufficient. It doesn't explain the deletion behavior (e.g., permanence, effects), return values, or error handling, leaving the agent with incomplete information for safe and effective use.
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 schema fully documents both parameters ('name' and 'conversation_id') with clear descriptions. The description adds no additional semantic context beyond implying the 'name' parameter is used for deletion, which is already covered by the schema. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Delete') and resource ('a long-term memory by name'), making the purpose unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'delete_short_term_memories' or 'cleanup_memories', which would require mentioning the specific memory type or deletion method.
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 'delete_short_term_memories' or 'cleanup_memories'. It lacks context about prerequisites, such as needing the memory name, or exclusions, like whether it works for all memory types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_short_term_memoriesC
Delete short-term memories matching a keyword or regex pattern.
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | Yes | String keyword or regex pattern to match (e.g., "keyword" or "/pattern/i") | |
| conversation_id | Yes | Conversation ID for storage |
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 deletion action but doesn't cover important aspects like whether deletion is permanent/reversible, what permissions are required, rate limits, or what happens to matched memories. The description is minimal and lacks behavioral context 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, efficient sentence that communicates the core functionality without any wasted words. It's appropriately sized for a simple deletion operation and front-loads the essential information.
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 deletion tool with no annotations and no output schema, the description is inadequate. It doesn't explain what 'short-term memories' are in this context, what the deletion consequences are, or what the tool returns. The description leaves too many open questions about this potentially destructive operation.
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 schema already fully documents both parameters. The description mentions 'keyword or regex pattern' which aligns with the schema's pattern parameter description, but adds no additional semantic context beyond what's already in the structured schema 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 (delete) and resource (short-term memories) with the specific matching mechanism (keyword or regex pattern). It distinguishes from siblings like 'delete_long_term_memory' by specifying the memory type, though it doesn't explicitly contrast with other deletion tools like 'cleanup_memories' or 'delete_backup'.
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 when deletion is appropriate, what happens after deletion, or how it differs from similar tools like 'cleanup_memories' or 'delete_long_term_memory' 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.
get_cache_statsC
็ฒๅๆฅ่ฉข็ทฉๅญ็ตฑ่จไฟกๆฏ
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While '็ฒๅ' (get) implies a read operation, the description doesn't specify whether this requires special permissions, whether it returns real-time or historical data, what format the statistics come in, or whether there are rate limits. For a statistical retrieval tool with zero annotation coverage, this represents significant behavioral 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 phrase that communicates the core function without unnecessary words. It's appropriately sized for a simple retrieval tool and front-loads the essential information. Every character earns its place in this minimal but complete phrase.
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 statistical nature and lack of both annotations and output schema, the description is insufficiently complete. It doesn't explain what kind of statistics are returned (hit rates, size, eviction metrics), whether the data is aggregated or detailed, or what format the output takes. For a statistical tool in a memory/cache system context, more detail about the nature of the statistics would be 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?
The tool has zero parameters, and schema description coverage is 100% (though trivial since there are no parameters). The description doesn't need to explain any parameters, and the baseline for zero-parameter tools is 4. The description appropriately doesn't mention parameters since none exist.
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 '็ฒๅๆฅ่ฉข็ทฉๅญ็ตฑ่จไฟกๆฏ' (Get query cache statistics) clearly states the verb ('็ฒๅ' - get) and resource ('ๆฅ่ฉข็ทฉๅญ็ตฑ่จไฟกๆฏ' - query cache statistics), establishing the tool's basic purpose. However, it doesn't differentiate from sibling tools like 'get_memory_stats' or 'get_metrics' that also retrieve statistical information, leaving ambiguity about when this specific cache-focused tool should be used versus other stat-related tools.
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. With multiple sibling tools that retrieve statistics (get_memory_stats, get_metrics), there's no indication of what makes this cache-specific tool distinct or when it should be preferred over other statistical retrieval tools. The description offers only the basic function without contextual usage information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_frequent_conversationB
Get the most frequently mentioned conversation ID in memories.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 states what the tool does but lacks critical details: it doesn't specify if this is a read-only operation (likely, but not confirmed), how it determines frequency (e.g., based on memory content or metadata), what happens if no conversations exist (e.g., returns null or error), or any rate limits. The description is minimal and leaves behavioral traits ambiguous.
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 with no wasted words. It is appropriately sized for a simple tool and front-loaded with the core functionality. Every part of the sentence earns its place by specifying the action and target.
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 query) but lack of annotations and output schema, the description is incomplete. It doesn't explain what the return value is (e.g., a single ID, a list with counts, or an error message), how frequency is calculated, or any dependencies on memory state. For a tool with no structured output documentation, the description should provide more context about the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100% (though empty). The description doesn't need to add parameter semantics, so it meets the baseline of 4 for zero-parameter tools. No additional parameter context is required or provided.
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 the most frequently mentioned conversation ID in memories.' It specifies the verb ('Get') and resource ('conversation ID'), and distinguishes it from siblings by focusing on frequency analysis rather than listing, searching, or managing memories. However, it doesn't explicitly differentiate from all siblings (e.g., 'analyze_memory_patterns' might overlap in analysis).
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., needing existing memories), exclusions (e.g., when no conversations exist), or comparisons to siblings like 'get_memory_stats' or 'analyze_memory_patterns'. Usage is implied only by the purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_memory_contextC
Get the creation and update context of a specific long-term memory.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the memory | |
| conversation_id | No | Conversation ID that owns this memory |
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 states the tool retrieves context (creation and update details), implying a read-only operation, but doesn't disclose critical behavioral traits such as authentication requirements, rate limits, error conditions, or what 'context' entails (e.g., timestamps, metadata). For a tool with no annotation coverage, this leaves significant gaps in understanding its 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, well-structured sentence that directly states the tool's purpose without unnecessary words. It's front-loaded with the core action ('Get') and resource, making it easy to parse. Every part of the sentence earns its place by conveying essential information 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?
Given the complexity of memory management tools and the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'context' includes (e.g., timestamps, user info), how results are formatted, or potential errors. For a tool in a rich sibling set with no structured behavioral data, more detail is needed to ensure the agent can use it 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 input schema has 100% description coverage, with clear documentation for both parameters ('name' and 'conversation_id'). The description doesn't add any additional meaning beyond the schema, such as explaining parameter interactions or constraints. According to the rules, with high schema coverage (>80%), the baseline is 3 even without extra param info in the description, which fits here.
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 the creation and update context of a specific long-term memory.' It specifies the verb ('Get') and resource ('creation and update context of a specific long-term memory'), which is clear and actionable. However, it doesn't explicitly differentiate from sibling tools like 'get_memory_stats' or 'list_long_term_memories', which could provide overlapping or related information, so it doesn't reach 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. It doesn't mention sibling tools like 'list_long_term_memories' for browsing memories or 'search_long_term_memories' for finding memories by criteria, nor does it specify prerequisites or exclusions. This lack of context leaves the agent to infer usage, which is insufficient for effective tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_memory_statsC
Get statistical information about short-term memories.
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_id | No | Optional conversation ID for context |
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 states the tool retrieves statistical information, implying a read-only operation, but doesn't specify what statistics are included, format of return data, performance characteristics, or any side effects. For a stats tool with zero annotation coverage, this leaves significant gaps in understanding its 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 front-loads the core purpose without unnecessary words. Every part earns its place by clearly stating the action and target, making it easy to parse quickly. There is no redundancy or structural issues.
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 annotations and output schema, the description is incomplete for a tool that likely returns complex statistical data. It doesn't explain what statistics are provided, their format, or how the optional parameter affects results. For a stats tool in a memory management context with many siblings, more detail is needed to ensure proper use without confusion.
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 100% description coverage, with the single parameter 'conversation_id' documented as optional for context. The description adds no additional parameter information beyond what the schema provides, such as examples or constraints. With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but also doesn't detract.
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 ('Get') and resource ('statistical information about short-term memories'), making the purpose immediately understandable. It distinguishes from siblings like 'get_cache_stats' or 'get_metrics' by specifying the memory type. However, it doesn't explicitly differentiate from 'analyze_memory_patterns' which might also involve statistics, preventing 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. With siblings like 'get_cache_stats', 'get_metrics', and 'analyze_memory_patterns' that might overlap in statistical reporting, there is no indication of context, prerequisites, or exclusions. The optional 'conversation_id' parameter hints at filtering but offers no usage rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_metricsC
็ฒๅๆๅๅจๆง่ฝๆๆจ
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. While '็ฒๅ' (get) implies a read operation, it doesn't disclose important behavioral aspects: whether this requires authentication, what format the metrics are returned in, if there are rate limits, whether it's real-time or historical data, or what happens if the server is unavailable. For a monitoring tool with zero annotation coverage, this is insufficient.
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 phrase that communicates the core purpose without unnecessary words. It's appropriately sized for a simple tool and front-loads the essential information. Every character 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?
Given this is a performance monitoring tool with no annotations and no output schema, the description is incomplete. It doesn't explain what metrics are returned, in what format, or how to interpret them. With 18 sibling tools including similar 'get_' operations, more context about this tool's specific domain (server vs memory vs cache metrics) would be helpful for an agent to use it 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 tool has 0 parameters with 100% schema description coverage, so the baseline is 4. The description doesn't need to explain parameters since none exist, and it correctly doesn't mention any. This meets expectations for a parameterless tool.
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 '็ฒๅๆๅๅจๆง่ฝๆๆจ' (Get server performance metrics) states a clear verb ('็ฒๅ' - get) and resource ('ๆๅๅจๆง่ฝๆๆจ' - server performance metrics), but it's vague about scope and doesn't differentiate from sibling tools like 'get_cache_stats' or 'get_memory_stats'. It provides basic purpose but lacks specificity about what metrics are included or how this differs from other get_* tools.
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. With multiple sibling tools that retrieve different types of data (cache stats, memory stats, health check), there's no indication of when server performance metrics are appropriate versus other monitoring tools. No prerequisites, exclusions, or complementary tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
health_checkC
็ฒๅๆๅๅจๅฅๅบท็ๆ ๅๆง่ฝๆๆจ
| Name | Required | Description | Default |
|---|---|---|---|
| detailed | No | ๆฏๅฆ่ฟๅ่ฉณ็ดฐๅ ฑๅ |
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 states what the tool does but doesn't describe behavioral traits such as whether it's read-only, requires authentication, has rate limits, what the output format looks like, or any side effects. For a monitoring tool with zero annotation coverage, this is a significant gap in transparency.
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โa single sentence in Chinese that directly states the tool's purpose without any fluff. It's front-loaded with the core functionality and wastes no words. Every part of the sentence earns its place by specifying what is being retrieved.
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 a health check tool (which could involve various metrics and states), the description is incomplete. There's no output schema, and the description doesn't explain what health status or performance metrics are returned, their format, or any behavioral context. Without annotations and with only a basic parameter, the description should do more to guide usage and expectations.
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 100% description coverage (the 'detailed' parameter is fully documented in the schema with type, default, and description). The description doesn't add any parameter semantics beyond what the schema provides, but since schema coverage is high, the baseline score of 3 is appropriate. The description doesn't compensate for any gaps because there are none.
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 server health status and performance metrics). It specifies the verb ('็ฒๅ' - get) and resource ('ๆๅๅจๅฅๅบท็ๆ ๅๆง่ฝๆๆจ' - server health status and performance metrics). However, it doesn't explicitly differentiate from sibling tools like 'get_metrics' or 'get_cache_stats', which appear related but may have different scopes.
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. There are several sibling tools that seem related (e.g., 'get_metrics', 'get_cache_stats'), but the description doesn't indicate whether this is for general server health, specific subsystems, or how it differs from other monitoring tools. No context or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_backupsC
ๅๅบๅฏ็จ็ๅไปฝๆไปถ
| Name | Required | Description | Default |
|---|---|---|---|
| backup_dir | No | ๅไปฝ็ฎ้่ทฏๅพ๏ผ้ป่ช็บ data/backups/๏ผ | |
| conversation_id | No | ้ๆฟพ็นๅฎๅฐ่ฉฑ ID ็ๅไปฝ |
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 states the tool lists backup files but doesn't describe the return format (e.g., list structure, file details), pagination, error handling, or any constraints like rate limits or permissions. This leaves significant gaps for a tool that likely interacts with file systems.
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 in Chinese ('ๅๅบๅฏ็จ็ๅไปฝๆไปถ') that directly states the tool's purpose. It's front-loaded with no wasted words, 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 lack of annotations and output schema, the description is incomplete. It doesn't explain what 'available backup files' means in practice (e.g., format, metadata), how results are returned, or any behavioral nuances. For a tool with two parameters and no structured output, more context is needed to guide effective use.
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 parameters ('backup_dir' and 'conversation_id') well-documented in the schema. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline for high schema coverage without compensating value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'ๅๅบๅฏ็จ็ๅไปฝๆไปถ' clearly states the action (list) and resource (backup files) in Chinese. It's specific about what the tool does, though it doesn't explicitly differentiate from sibling tools like 'backup_memories' or 'restore_memories' beyond the basic verb-noun pairing.
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 sibling tools like 'delete_backup' or 'restore_memories', nor does it specify prerequisites or contexts for usage. The agent must infer usage from the name and schema alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_long_term_memoriesC
List all long-term memory names and their basic information.
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_id | No | Conversation ID to inspect (defaults to "default") |
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 'List all' implies a read-only operation, it doesn't specify whether this tool is paginated, what 'basic information' includes, or any performance characteristics like rate limits. For a tool with zero annotation coverage, this leaves significant behavioral 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 that states the tool's purpose without unnecessary words. It's appropriately sized for a simple list operation and front-loads the essential information, making it easy 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?
Given the lack of annotations and output schema, the description should provide more context about what 'basic information' includes and the tool's behavior. For a list operation among many memory-related tools, this minimal description leaves the agent with insufficient information to understand the full context of use.
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 100% description coverage, with the single parameter 'conversation_id' clearly documented in the schema. The description doesn't add any parameter semantics beyond what the schema already provides, so it meets the baseline score of 3 for adequate but not additive parameter information.
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 ('List') and resource ('long-term memory names and their basic information'), making the tool's purpose immediately understandable. However, it doesn't differentiate itself from sibling tools like 'search_long_term_memories' or 'list_backups', which reduces its effectiveness in helping an agent choose between similar list/search 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 like 'search_long_term_memories' or 'list_backups'. It doesn't mention any prerequisites, constraints, or typical use cases, leaving the agent with insufficient context to make an informed selection among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
restore_memoriesA
ๅพๅไปฝๆไปถ้ๅ่จๆถใ่ญฆๅ๏ผ้ๅฐ่ฆ่็ถๅๅฐ่ฉฑ็ๆๆ่จๆถใ
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_id | Yes | ็ฎๆจๅฐ่ฉฑ ID | |
| backup_path | Yes | ๅไปฝๆไปถ่ทฏๅพ | |
| restore_short_term | No | ๆฏๅฆ้ๅ็ญๆ่จๆถ | |
| restore_long_term | No | ๆฏๅฆ้ๅ้ทๆ่จๆถ | |
| merge | 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. It successfully warns about the destructive overwrite behavior ('้ๅฐ่ฆ่็ถๅๅฐ่ฉฑ็ๆๆ่จๆถ'), which is crucial for a mutation tool. However, it doesn't mention authentication requirements, rate limits, error conditions, or what happens when the backup file is invalid or missing.
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 perfectly concise with just two sentences. The first sentence states the core purpose, and the second provides a critical warning. Every word earns its place, and the warning is appropriately front-loaded for a destructive operation.
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 no annotations and no output schema, the description does the minimum by stating the purpose and warning about destructive behavior. However, it doesn't explain what the tool returns (success/failure indicators), doesn't mention error conditions, and doesn't provide guidance on backup file format or location requirements. Given the complexity of a restore operation, more context would be 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?
The schema description coverage is 100%, providing complete documentation for all 5 parameters. The description doesn't add any parameter-specific information beyond what's already in the schema, so it meets the baseline of 3. It doesn't explain parameter interactions or provide usage examples.
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 ('ๅพๅไปฝๆไปถ้ๅ่จๆถ' - restore memories from backup files) and the resource (memories). It distinguishes itself from siblings like 'backup_memories' (which creates backups) and 'list_backups' (which lists available backups) by focusing on restoration from existing backups.
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 ('ๅพๅไปฝๆไปถ้ๅ่จๆถ') and includes a warning about its destructive nature ('้ๅฐ่ฆ่็ถๅๅฐ่ฉฑ็ๆๆ่จๆถ' - this will overwrite all current conversation memories). However, it doesn't explicitly mention when NOT to use it or name specific alternatives like 'merge' operations (though the merge parameter is documented in the schema).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_long_term_memoriesC
Search and activate relevant long-term memories based on current conversation context. Returns activated memories (whose triggers evaluated to true) and random memories for serendipity.
| Name | Required | Description | Default |
|---|---|---|---|
| messages | Yes | Recent conversation messages | |
| conversation_id | Yes | Current conversation ID | |
| participants | No | Optional participants information |
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 mentions that the tool 'Returns activated memories (whose triggers evaluated to true) and random memories for serendipity,' which provides some insight into the return behavior. However, it doesn't address important aspects like whether this is a read-only operation, potential side effects, performance characteristics, or error conditions. For a search tool with no annotation coverage, this is insufficient.
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 concise with two clear sentences. The first sentence states the core functionality, and the second explains the return behavior. There's no unnecessary verbiage, and the information is front-loaded with the primary purpose stated first.
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 memory search operations, no annotations, and no output schema, the description is incomplete. It doesn't explain what format the memories are returned in, how many memories are returned, whether there's pagination, or what constitutes 'relevant' versus 'random' memories. For a tool with 3 parameters (including a nested object) and no structured output documentation, the description should provide more operational context.
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 information about parameters beyond what's already in the schema. Since schema description coverage is 100% (all parameters have descriptions), the baseline score is 3. The description doesn't add any additional context about how parameters should be used or their significance in the search process.
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: 'Search and activate relevant long-term memories based on current conversation context.' It specifies the verb ('search and activate'), resource ('long-term memories'), and context ('current conversation context'). However, it doesn't explicitly differentiate from sibling tools like 'search_memories' or 'search_short_term_memories', which prevents 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. With multiple sibling search tools (search_memories, search_short_term_memories), there's no indication of when this specific long-term memory search is appropriate versus other search options. The description only states what the tool does, not when to choose it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_memoriesC
ไฝฟ็จ้ซ็ด้ๆฟพๆขไปถๆ็ดข่จๆถใๆฏๆ้้ต่ฉใๆ้็ฏๅใๅๆธ้ๆฟพ็ญใ
| Name | Required | Description | Default |
|---|---|---|---|
| conversation_id | Yes | ๅฐ่ฉฑ ID | |
| query | No | ๆ็ดขๆฅ่ฉขๆๆฌ๏ผๅฐๆๅ้้ต่ฉ๏ผ | |
| keywords | No | ็ดๆฅๆๅฎ้้ต่ฉๅ่กจ | |
| date_from | No | ่ตทๅงๆฅๆ๏ผISO ๆ ผๅผ๏ผ | |
| date_to | No | ็ตๆๆฅๆ๏ผISO ๆ ผๅผ๏ผ | |
| min_score | No | ๆไฝๅๆธ | |
| max_score | No | ๆ้ซๅๆธ | |
| limit | No | ่ฟๅ็ตๆๆธ้้ๅถ | |
| sort_by | No | ๆๅบๆนๅผ | relevance |
| order | No | ๆๅบ้ ๅบ | desc |
| memory_type | No | ๆ็ดข็่จๆถ้กๅ | short_term |
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 mentions filtering capabilities but doesn't describe important behavioral aspects like whether this is a read-only operation, what permissions are required, how results are returned (format, pagination), or any rate limits. The phrase '้ซ็บง่ฟๆปคๆกไปถ' (advanced filtering conditions) is vague and doesn't provide concrete behavioral 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, efficient sentence that states the core purpose and mentions key filtering capabilities. It's appropriately concise and front-loaded with the main function. However, it could be slightly more structured by explicitly listing the main filter types rather than using '็ญ' (etc.).
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 (11 parameters, no annotations, no output schema) and the presence of similar sibling tools, the description is insufficient. It doesn't explain how this tool differs from search_long_term_memories and search_short_term_memories, doesn't describe the return format or behavior, and provides minimal guidance for a tool with many filtering options. For a search tool with this many parameters, more context is needed.
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 mentions 'ๅ ณ้ฎ่ฏใๆถ้ด่ๅดใๅๆฐ่ฟๆปค็ญ' (keywords, time range, score filtering, etc.), which maps to some parameters (query/keywords, date_from/date_to, min_score/max_score). However, with 100% schema description coverage, the schema already documents all 11 parameters thoroughly. The description adds minimal value beyond what's already in the schema, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'ๆ็ดข่ฎฐๅฟ' (search memories) with '้ซ็บง่ฟๆปคๆกไปถ' (advanced filtering conditions). It specifies the action (search) and resource (memories) but doesn't explicitly differentiate from sibling tools like search_long_term_memories or search_short_term_memories, which appear to be more specific versions.
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 'ๆฏๆๅ ณ้ฎ่ฏใๆถ้ด่ๅดใๅๆฐ่ฟๆปค็ญ' (supports keywords, time range, score filtering, etc.), which implies some usage context but doesn't provide explicit guidance on when to use this tool versus the more specific sibling tools (search_long_term_memories, search_short_term_memories). No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_short_term_memoriesB
Search and retrieve relevant short-term memories based on recent conversation context. Returns top relevant, next relevant, and random flashback memories.
| Name | Required | Description | Default |
|---|---|---|---|
| recentMessages | Yes | Recent messages to search against | |
| conversation_id | Yes | Current conversation ID | |
| roleWeights | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It mentions the return structure ('top relevant, next relevant, and random flashback memories') which is helpful, but doesn't disclose behavioral traits like whether this is a read-only operation, performance characteristics, error conditions, or how relevance is determined. The description adds some value but leaves 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 efficiently structured in two sentences that cover purpose and return values. It's appropriately sized without unnecessary elaboration, though it could be slightly more specific about the search mechanism.
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 search tool with 3 parameters, no annotations, and no output schema, the description provides basic purpose and return structure but lacks details about behavioral traits, parameter interactions, and error handling. The return format description is helpful but incomplete without an output 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?
Schema description coverage is 67% (2 of 3 parameters have descriptions). The description doesn't add any parameter-specific information beyond what's in the schema. It mentions the search context but doesn't explain how parameters like 'roleWeights' affect the search. Baseline 3 is appropriate given moderate 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 verb ('search and retrieve') and resource ('short-term memories'), and specifies the context ('based on recent conversation context'). It distinguishes from some siblings like 'search_long_term_memories' by specifying the memory type, but doesn't differentiate from 'search_memories' which could be ambiguous.
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 ('based on recent conversation context') but doesn't explicitly state when to use this tool versus alternatives like 'search_long_term_memories' or 'search_memories'. No guidance on prerequisites or exclusions is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_long_term_memoryC
Update an existing long-term memory. You can update the trigger condition, prompt content, or add update context.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name of the memory to update | |
| trigger | No | New trigger condition (JavaScript code) | |
| prompt | No | New memory content | |
| conversation_id | No | Conversation ID that owns this memory | |
| updatedContext | No | Context about this update | |
| recentMessages | No | Optional recent messages to auto-generate updatedContext |
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 this is an update operation, implying mutation, but lacks details on permissions, side effects, error conditions, or response format. For a mutation tool with zero annotation coverage, this is insufficient.
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 action and lists updatable elements without unnecessary words. Every part earns its place by conveying essential information.
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 this is a mutation tool with no annotations and no output schema, the description is incomplete. It lacks behavioral context (e.g., what happens on success/failure), usage prerequisites, and differentiation from siblings, making it inadequate for safe and effective tool 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?
Schema description coverage is 100%, so the schema fully documents all 6 parameters. The description mentions 'trigger condition, prompt content, or add update context,' which loosely maps to parameters like 'trigger,' 'prompt,' and 'updatedContext,' but adds no significant 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 action ('Update') and resource ('existing long-term memory'), and specifies what can be updated (trigger condition, prompt content, or context). However, it doesn't explicitly differentiate from sibling tools like 'add_long_term_memory' or 'delete_long_term_memory' beyond the update action.
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 doesn't mention prerequisites (e.g., needing an existing memory), exclusions, or comparisons to siblings like 'add_long_term_memory' for creation or 'delete_long_term_memory' for removal.
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.
21 tool updates
v1.0.0- Changed
add_long_term_memory23 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / conversation_idAdded value: +{ + "description": "Conversation ID that owns this memory (defaults to \"default\")", + "type": "string" +} - removed
Input schema / properties / createdContext / _defRemoved value: -{ - "description": "Optional context about when/why this memory was created", - "innerType": { - "_def": { - "checks": [], - "coerce": false, - "typeName": "ZodString" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodOptional" -} - added
Input schema / properties / createdContext / descriptionAdded value: +"Optional context about when/why this memory was created" - added
Input schema / properties / createdContext / typeAdded value: +"string" - removed
Input schema / properties / createdContext / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -} - removed
Input schema / properties / name / _defRemoved value: -{ - "checks": [], - "coerce": false, - "description": "Unique name for the memory", - "typeName": "ZodString" -} - added
Input schema / properties / name / descriptionAdded value: +"Unique name for the memory" - added
Input schema / properties / name / typeAdded value: +"string" - removed
Input schema / properties / name / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -} - removed
Input schema / properties / prompt / _defRemoved value: -{ - "checks": [], - "coerce": false, - "description": "The memory content to be recalled when triggered", - "typeName": "ZodString" -} - added
Input schema / properties / prompt / descriptionAdded value: +"The memory content to be recalled when triggered" - added
Input schema / properties / prompt / typeAdded value: +"string" - removed
Input schema / properties / prompt / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -} - removed
Input schema / properties / recentMessages / _defRemoved value: -{ - "description": "Optional recent messages to auto-generate createdContext", - "innerType": { - "_def": { - "exactLength": null, - "maxLength": null, - "minLength": null, - "type": { - "_cached": null, - "_def": { - "catchall": { - "_def": { - "typeName": "ZodNever" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodObject", - "unknownKeys": "strip" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodArray" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodOptional" -} - added
Input schema / properties / recentMessages / descriptionAdded value: +"Optional recent messages to auto-generate createdContext" - added
Input schema / properties / recentMessages / itemsAdded value: +{ + "additionalProperties": false, + "properties": { + "content": { + "type": "string" + }, + "role": { + "enum": [ + "user", + "assistant", + "system" + ], + "type": "string" + } + }, + "required": [ + "role", + "content" + ], + "type": "object" +} - added
Input schema / properties / recentMessages / typeAdded value: +"array" - removed
Input schema / properties / recentMessages / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -} - removed
Input schema / properties / trigger / _defRemoved value: -{ - "checks": [], - "coerce": false, - "description": "JavaScript code that returns true/false to determine if memory should activate. Example: \"match_keys(context.messages, ['birthday'], 'any') || new Date().getMonth() === 6\"", - "typeName": "ZodString" -} - added
Input schema / properties / trigger / descriptionAdded value: +"JavaScript code that returns true/false to determine if memory should activate. Example: \"match_keys(context.messages, ['birthday'], 'any') || new Date().getMonth() === 6\"" - added
Input schema / properties / trigger / typeAdded value: +"string" - removed
Input schema / properties / trigger / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -}
- Changed
add_short_term_memory16 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / conversation_id / _defRemoved value: -{ - "checks": [], - "coerce": false, - "description": "Unique identifier for the conversation", - "typeName": "ZodString" -} - added
Input schema / properties / conversation_id / descriptionAdded value: +"Unique identifier for the conversation" - added
Input schema / properties / conversation_id / typeAdded value: +"string" - removed
Input schema / properties / conversation_id / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -} - removed
Input schema / properties / messages / _defRemoved value: -{ - "description": "Array of recent messages to create memory from", - "exactLength": null, - "maxLength": null, - "minLength": null, - "type": { - "_cached": null, - "_def": { - "catchall": { - "_def": { - "typeName": "ZodNever" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodObject", - "unknownKeys": "strip" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodArray" -} - added
Input schema / properties / messages / descriptionAdded value: +"Array of recent messages to create memory from" - added
Input schema / properties / messages / itemsAdded value: +{ + "additionalProperties": false, + "properties": { + "content": { + "description": "Message content", + "type": "string" + }, + "role": { + "description": "Message role", + "enum": [ + "user", + "assistant", + "system" + ], + "type": "string" + }, + "timestamp": { + "description": "Unix timestamp in milliseconds", + "type": "number" + } + }, + "required": [ + "role", + "content" + ], + "type": "object" +} - added
Input schema / properties / messages / typeAdded value: +"array" - removed
Input schema / properties / messages / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -} - removed
Input schema / properties / roleWeights / _defRemoved value: -{ - "description": "Optional weights for different roles when extracting keywords (default: user=2.7, assistant=2.0, system=1.0)", - "innerType": { - "_cached": null, - "_def": { - "catchall": { - "_def": { - "typeName": "ZodNever" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodObject", - "unknownKeys": "strip" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodOptional" -} - added
Input schema / properties / roleWeights / additionalPropertiesAdded value: +false - added
Input schema / properties / roleWeights / descriptionAdded value: +"Optional weights for different roles when extracting keywords (default: user=2.7, assistant=2.0, system=1.0)" - added
Input schema / properties / roleWeights / propertiesAdded value: +{ + "assistant": { + "type": "number" + }, + "system": { + "type": "number" + }, + "user": { + "type": "number" + } +} - added
Input schema / properties / roleWeights / typeAdded value: +"object" - removed
Input schema / properties / roleWeights / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -}
- Added
analyze_memory_patterns - Added
backup_memories - Changed
cleanup_memories5 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / conversation_id / _defRemoved value: -{ - "checks": [], - "coerce": false, - "description": "Conversation ID for storage", - "typeName": "ZodString" -} - added
Input schema / properties / conversation_id / descriptionAdded value: +"Conversation ID for storage" - added
Input schema / properties / conversation_id / typeAdded value: +"string" - removed
Input schema / properties / conversation_id / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -}
- Added
delete_backup - Changed
delete_long_term_memory6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / conversation_idAdded value: +{ + "description": "Conversation ID that owns this memory", + "type": "string" +} - removed
Input schema / properties / name / _defRemoved value: -{ - "checks": [], - "coerce": false, - "description": "Name of the memory to delete", - "typeName": "ZodString" -} - added
Input schema / properties / name / descriptionAdded value: +"Name of the memory to delete" - added
Input schema / properties / name / typeAdded value: +"string" - removed
Input schema / properties / name / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -}
- Changed
delete_short_term_memories9 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / conversation_id / _defRemoved value: -{ - "checks": [], - "coerce": false, - "description": "Conversation ID for storage", - "typeName": "ZodString" -} - added
Input schema / properties / conversation_id / descriptionAdded value: +"Conversation ID for storage" - added
Input schema / properties / conversation_id / typeAdded value: +"string" - removed
Input schema / properties / conversation_id / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -} - removed
Input schema / properties / pattern / _defRemoved value: -{ - "checks": [], - "coerce": false, - "description": "String keyword or regex pattern to match (e.g., \"keyword\" or \"/pattern/i\")", - "typeName": "ZodString" -} - added
Input schema / properties / pattern / descriptionAdded value: +"String keyword or regex pattern to match (e.g., \"keyword\" or \"/pattern/i\")" - added
Input schema / properties / pattern / typeAdded value: +"string" - removed
Input schema / properties / pattern / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -}
- Added
get_cache_stats - Changed
get_frequent_conversation2 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / requiredRemoved value: -[]
- Changed
get_memory_context6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / conversation_idAdded value: +{ + "description": "Conversation ID that owns this memory", + "type": "string" +} - removed
Input schema / properties / name / _defRemoved value: -{ - "checks": [], - "coerce": false, - "description": "Name of the memory", - "typeName": "ZodString" -} - added
Input schema / properties / name / descriptionAdded value: +"Name of the memory" - added
Input schema / properties / name / typeAdded value: +"string" - removed
Input schema / properties / name / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -}
- Changed
get_memory_stats6 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / conversation_id / _defRemoved value: -{ - "description": "Optional conversation ID for context", - "innerType": { - "_def": { - "checks": [], - "coerce": false, - "typeName": "ZodString" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodOptional" -} - added
Input schema / properties / conversation_id / descriptionAdded value: +"Optional conversation ID for context" - added
Input schema / properties / conversation_id / typeAdded value: +"string" - removed
Input schema / properties / conversation_id / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -} - removed
Input schema / requiredRemoved value: -[]
- Added
get_metrics - Added
health_check - Added
list_backups - Changed
list_long_term_memories3 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / conversation_idAdded value: +{ + "description": "Conversation ID to inspect (defaults to \"default\")", + "type": "string" +} - removed
Input schema / requiredRemoved value: -[]
- Added
restore_memories - Changed
search_long_term_memories16 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / conversation_id / _defRemoved value: -{ - "checks": [], - "coerce": false, - "description": "Current conversation ID", - "typeName": "ZodString" -} - added
Input schema / properties / conversation_id / descriptionAdded value: +"Current conversation ID" - added
Input schema / properties / conversation_id / typeAdded value: +"string" - removed
Input schema / properties / conversation_id / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -} - removed
Input schema / properties / messages / _defRemoved value: -{ - "description": "Recent conversation messages", - "exactLength": null, - "maxLength": null, - "minLength": null, - "type": { - "_cached": null, - "_def": { - "catchall": { - "_def": { - "typeName": "ZodNever" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodObject", - "unknownKeys": "strip" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodArray" -} - added
Input schema / properties / messages / descriptionAdded value: +"Recent conversation messages" - added
Input schema / properties / messages / itemsAdded value: +{ + "additionalProperties": false, + "properties": { + "content": { + "type": "string" + }, + "role": { + "enum": [ + "user", + "assistant", + "system" + ], + "type": "string" + } + }, + "required": [ + "role", + "content" + ], + "type": "object" +} - added
Input schema / properties / messages / typeAdded value: +"array" - removed
Input schema / properties / messages / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -} - removed
Input schema / properties / participants / _defRemoved value: -{ - "description": "Optional participants information", - "innerType": { - "_cached": null, - "_def": { - "catchall": { - "_def": { - "typeName": "ZodNever" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodObject", - "unknownKeys": "passthrough" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodOptional" -} - added
Input schema / properties / participants / additionalPropertiesAdded value: +true - added
Input schema / properties / participants / descriptionAdded value: +"Optional participants information" - added
Input schema / properties / participants / propertiesAdded value: +{} - added
Input schema / properties / participants / typeAdded value: +"object" - removed
Input schema / properties / participants / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -}
- Added
search_memories - Changed
search_short_term_memories15 fields changed- added
Input schema / additionalPropertiesAdded value: +false - removed
Input schema / properties / conversation_id / _defRemoved value: -{ - "checks": [], - "coerce": false, - "description": "Current conversation ID", - "typeName": "ZodString" -} - added
Input schema / properties / conversation_id / descriptionAdded value: +"Current conversation ID" - added
Input schema / properties / conversation_id / typeAdded value: +"string" - removed
Input schema / properties / conversation_id / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -} - removed
Input schema / properties / recentMessages / _defRemoved value: -{ - "description": "Recent messages to search against", - "exactLength": null, - "maxLength": null, - "minLength": null, - "type": { - "_cached": null, - "_def": { - "catchall": { - "_def": { - "typeName": "ZodNever" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodObject", - "unknownKeys": "strip" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodArray" -} - added
Input schema / properties / recentMessages / descriptionAdded value: +"Recent messages to search against" - added
Input schema / properties / recentMessages / itemsAdded value: +{ + "additionalProperties": false, + "properties": { + "content": { + "type": "string" + }, + "role": { + "enum": [ + "user", + "assistant", + "system" + ], + "type": "string" + } + }, + "required": [ + "role", + "content" + ], + "type": "object" +} - added
Input schema / properties / recentMessages / typeAdded value: +"array" - removed
Input schema / properties / recentMessages / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -} - removed
Input schema / properties / roleWeights / _defRemoved value: -{ - "innerType": { - "_cached": null, - "_def": { - "catchall": { - "_def": { - "typeName": "ZodNever" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodObject", - "unknownKeys": "strip" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodOptional" -} - added
Input schema / properties / roleWeights / additionalPropertiesAdded value: +false - added
Input schema / properties / roleWeights / propertiesAdded value: +{ + "assistant": { + "type": "number" + }, + "system": { + "type": "number" + }, + "user": { + "type": "number" + } +} - added
Input schema / properties / roleWeights / typeAdded value: +"object" - removed
Input schema / properties / roleWeights / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -}
- Changed
update_long_term_memory23 fields changed- added
Input schema / additionalPropertiesAdded value: +false - added
Input schema / properties / conversation_idAdded value: +{ + "description": "Conversation ID that owns this memory", + "type": "string" +} - removed
Input schema / properties / name / _defRemoved value: -{ - "checks": [], - "coerce": false, - "description": "Name of the memory to update", - "typeName": "ZodString" -} - added
Input schema / properties / name / descriptionAdded value: +"Name of the memory to update" - added
Input schema / properties / name / typeAdded value: +"string" - removed
Input schema / properties / name / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -} - removed
Input schema / properties / prompt / _defRemoved value: -{ - "description": "New memory content", - "innerType": { - "_def": { - "checks": [], - "coerce": false, - "typeName": "ZodString" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodOptional" -} - added
Input schema / properties / prompt / descriptionAdded value: +"New memory content" - added
Input schema / properties / prompt / typeAdded value: +"string" - removed
Input schema / properties / prompt / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -} - removed
Input schema / properties / recentMessages / _defRemoved value: -{ - "description": "Optional recent messages to auto-generate updatedContext", - "innerType": { - "_def": { - "exactLength": null, - "maxLength": null, - "minLength": null, - "type": { - "_cached": null, - "_def": { - "catchall": { - "_def": { - "typeName": "ZodNever" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodObject", - "unknownKeys": "strip" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodArray" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodOptional" -} - added
Input schema / properties / recentMessages / descriptionAdded value: +"Optional recent messages to auto-generate updatedContext" - added
Input schema / properties / recentMessages / itemsAdded value: +{ + "additionalProperties": false, + "properties": { + "content": { + "type": "string" + }, + "role": { + "enum": [ + "user", + "assistant", + "system" + ], + "type": "string" + } + }, + "required": [ + "role", + "content" + ], + "type": "object" +} - added
Input schema / properties / recentMessages / typeAdded value: +"array" - removed
Input schema / properties / recentMessages / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -} - removed
Input schema / properties / trigger / _defRemoved value: -{ - "description": "New trigger condition (JavaScript code)", - "innerType": { - "_def": { - "checks": [], - "coerce": false, - "typeName": "ZodString" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodOptional" -} - added
Input schema / properties / trigger / descriptionAdded value: +"New trigger condition (JavaScript code)" - added
Input schema / properties / trigger / typeAdded value: +"string" - removed
Input schema / properties / trigger / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -} - removed
Input schema / properties / updatedContext / _defRemoved value: -{ - "description": "Context about this update", - "innerType": { - "_def": { - "checks": [], - "coerce": false, - "typeName": "ZodString" - }, - "~standard": { - "vendor": "zod", - "version": 1 - } - }, - "typeName": "ZodOptional" -} - added
Input schema / properties / updatedContext / descriptionAdded value: +"Context about this update" - added
Input schema / properties / updatedContext / typeAdded value: +"string" - removed
Input schema / properties / updatedContext / ~standardRemoved value: -{ - "vendor": "zod", - "version": 1 -}
12 tool updates
- First observed
add_long_term_memory - First observed
add_short_term_memory - First observed
cleanup_memories - First observed
delete_long_term_memory - First observed
delete_short_term_memories - First observed
get_frequent_conversation - First observed
get_memory_context - First observed
get_memory_stats - First observed
list_long_term_memories - First observed
search_long_term_memories - First observed
search_short_term_memories - First observed
update_long_term_memory
TDQS
Most tools have distinct purposes targeting specific memory types (long-term vs. short-term) or operations (add, delete, search, backup), but some overlap exists: 'search_memories' and 'search_short_term_memories' could be confused, and 'get_metrics' and 'health_check' both relate to performance monitoring. Descriptions help clarify, but boundaries are not perfectly clear.
The naming is mixed with no consistent pattern: some use verb_noun (e.g., 'add_long_term_memory', 'delete_short_term_memories'), others use noun_verb (e.g., 'health_check'), and there's a mix of English and Chinese names. While readable, the conventions vary significantly across the tool set.
With 21 tools, the count is slightly high but reasonable for a memory management server covering operations like CRUD, search, backup, and analytics. It feels comprehensive without being overly bloated, though it could be streamlined by merging some overlapping tools.
The tool set provides complete coverage for memory management: CRUD operations for both long-term and short-term memories, search functionalities, backup/restore, cleanup, and analytics (e.g., stats, patterns). No obvious gaps exist; agents can handle the full lifecycle of memories effectively.
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
Memory system for AI agents with semantic search. Store and recall memories with ease.
Persistent AI memory with semantic search, conflict detection, and ticketing.
Chinese-first brain-inspired memory MCP โ hybrid recall, 7-layer user profile, workspace assembly.
Bilingual dual memory with SSC for AI agents. Semantic search, embeddings, profiles.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn Elasticsearch-based AI memory system optimized for Chinese that enables persistent knowledge storage and complex entity relationship management via the Model Context Protocol. It features advanced semantic search using the IK analyzer and supports multi-zone memory isolation for specialized knowledge graphs.22MIT
- AlicenseNot gradedqualityCmaintenanceProvides persistent long-term memory for AI agents with semantic search and activation-based decay. Enables AI systems to remember across sessions through layered memory architecture and automatic context-aware retrieval.31MIT
- AlicenseAqualityCmaintenanceProvides human-like memory dynamics for AI assistants, enabling natural forgetting and reinforcement of memories over time.131MIT
- FlicenseNot gradedqualityDmaintenanceProvides persistent long-term memory, knowledge base, and audit trail for AI agents, with intelligent recall, salience tracking, and CJK-aware context management.2-
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/win10ogod/memory-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server