Skip to main content
Glama

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 attachments field

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 metadata

    • restore_memories: Restore from backup with merge or overwrite modes

    • list_backups: Browse available backup files

    • delete_backup: Clean up old backups

  • ๐Ÿ”Ž Advanced Search: Powerful search with flexible filtering

    • search_memories: Search with keywords, date ranges, score filters

    • analyze_memory_patterns: Statistical analysis and insights

    • Support 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 diagnostics

    • get_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.js

Usage

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 content

  • conversation_id (string): Unique conversation identifier

  • roleWeights (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 against

  • conversation_id (string): Current conversation ID

  • roleWeights (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 name

  • prompt (string): Memory content

  • trigger (string): JavaScript code for activation condition

  • conversation_id (string, optional): Conversation ID to store the memory under (defaults to "default")

  • createdContext (string, optional): Context description

  • recentMessages (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 array

  • context.conversation_id: Current conversation ID

  • context.participants: Participant information

  • match_keys(messages, keywords, scope, depth): Match any keyword

  • match_keys_all(messages, keywords, scope, depth): Match all keywords

  • Date, Math, RegExp, JSON: Safe built-in objects

update_long_term_memory

Update an existing long-term memory.

Parameters:

  • name (string): Memory name to update

  • trigger (string, optional): New trigger condition

  • prompt (string, optional): New content

  • conversation_id (string, optional): Conversation ID that owns the memory

  • updatedContext (string, optional): Update context

delete_long_term_memory

Delete a long-term memory by name.

Parameters:

  • name (string): Memory name to delete

  • conversation_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 messages

  • conversation_id (string): Current conversation ID

  • participants (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 inspect

  • conversation_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 remember

  • conversation_id (optional): Target conversation ID

Guides AI to:

  1. Create appropriate memory name

  2. Generate relevant trigger conditions

  3. Use add_long_term_memory tool

recall-context

Search for relevant memories based on current conversation.

Arguments:

  • current_topic (required): Current topic or question

  • conversation_id (optional): Conversation to search

Guides AI to:

  1. Search short-term memories for recent context

  2. Search long-term memories for permanent facts

  3. 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 about

  • trigger_condition (required): When to trigger (keywords or date)

  • conversation_id (optional): Target conversation

Guides AI to:

  1. Convert natural language conditions to JavaScript

  2. Create date-based or keyword-based triggers

  3. 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:

  1. Get current memory statistics

  2. Identify important information types

  3. Categorize for short-term vs long-term storage

  4. 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.json

Memory 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 activations

Selection Strategy

  1. Top Relevant (max 2): Highest relevance scores

  2. Next Relevant (max 1): Next highest scores

  3. 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 start

Security

  • Sandboxed Execution: Long-term memory triggers run in Node.js built-in vm module sandbox with timeout protection

  • No 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 vm module 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: attachments field removed (use modalities only)

  • 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.js

Expected 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.js

License

BSD-3-Clause license

Credits

Extracted and generalized from the GentianAphrodite project.

Available Tools

21 tools
add_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).

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesUnique name for the memory
promptYesThe memory content to be recalled when triggered
triggerYesJavaScript code that returns true/false to determine if memory should activate. Example: "match_keys(context.messages, ['birthday'], 'any') || new Date().getMonth() === 6"
conversation_idNoConversation ID that owns this memory (defaults to "default")
createdContextNoOptional context about when/why this memory was created
recentMessagesNoOptional recent messages to auto-generate createdContext

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
messagesYesArray of recent messages to create memory from
conversation_idYesUnique identifier for the conversation
roleWeightsNoOptional weights for different roles when extracting keywords (default: user=2.7, assistant=2.0, system=1.0)

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '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.

Usage Guidelines2/5

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

ๅˆ†ๆž่จ˜ๆ†ถไฝฟ็”จๆจกๅผ๏ผŒๆไพ›็ตฑ่จˆไฟกๆฏๅ’ŒๆดžๅฏŸ

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesๅฐ่ฉฑ ID
memory_typeNoๅˆ†ๆž็š„่จ˜ๆ†ถ้กžๅž‹both
top_keywordsNo่ฟ”ๅ›žๆœ€ๅธธ่ฆ‹้—œ้ต่ฉž็š„ๆ•ธ้‡

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'ๅˆ†ๆž่จ˜ๆ†ถไฝฟ็”จๆจกๅผ๏ผŒๆไพ›็ตฑ่จˆไฟกๆฏๅ’ŒๆดžๅฏŸ' (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.

Usage Guidelines2/5

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

ๅฐ‡ๆŒ‡ๅฎšๅฐ่ฉฑ็š„ๆ‰€ๆœ‰่จ˜ๆ†ถๅ‚™ไปฝๅˆฐๆ–‡ไปถใ€‚ๆ”ฏๆŒๅฐŽๅ‡บ็ŸญๆœŸๅ’Œ้•ทๆœŸ่จ˜ๆ†ถ๏ผŒๅŒ…ๅซๅฎŒๆ•ด็š„ๅ…ƒๆ•ธๆ“šๅ’Œๆ™‚้–“ๆˆณใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesๅฐ่ฉฑ ID
output_pathNo่ผธๅ‡บๆ–‡ไปถ่ทฏๅพ‘๏ผˆ้ป˜่ช็‚บ data/backups/๏ผ‰
include_short_termNoๆ˜ฏๅฆๅŒ…ๅซ็ŸญๆœŸ่จ˜ๆ†ถ
include_long_termNoๆ˜ฏๅฆๅŒ…ๅซ้•ทๆœŸ่จ˜ๆ†ถ
compressNoๆ˜ฏๅฆๅฃ“็ธฎ๏ผˆไฟ็•™็”จๆ–ผๅฐ‡ไพ†ๅฏฆ็พ๏ผ‰

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesConversation ID for storage

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents 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.

Purpose4/5

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.

Usage Guidelines3/5

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

ๅˆช้™คๆŒ‡ๅฎš็š„ๅ‚™ไปฝๆ–‡ไปถ

ParametersJSON Schema
NameRequiredDescriptionDefault
backup_pathYesๅ‚™ไปฝๆ–‡ไปถ่ทฏๅพ‘

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the memory to delete
conversation_idNoConversation ID that owns this memory

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
patternYesString keyword or regex pattern to match (e.g., "keyword" or "/pattern/i")
conversation_idYesConversation ID for storage

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already 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.

Purpose4/5

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.

Usage Guidelines2/5

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

็ฒๅ–ๆŸฅ่ฉข็ทฉๅญ˜็ตฑ่จˆไฟกๆฏ

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the memory
conversation_idNoConversation ID that owns this memory

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with clear 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idNoOptional conversation ID for context

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with 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.

Purpose4/5

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.

Usage Guidelines2/5

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

็ฒๅ–ๆœๅ‹™ๅ™จๆ€ง่ƒฝๆŒ‡ๆจ™

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters4/5

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.

Purpose3/5

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.

Usage Guidelines2/5

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

็ฒๅ–ๆœๅ‹™ๅ™จๅฅๅบท็‹€ๆ…‹ๅ’Œๆ€ง่ƒฝๆŒ‡ๆจ™

ParametersJSON Schema
NameRequiredDescriptionDefault
detailedNoๆ˜ฏๅฆ่ฟ”ๅ›ž่ฉณ็ดฐๅ ฑๅ‘Š

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '็ฒๅ–ๆœๅ‹™ๅ™จๅฅๅบท็‹€ๆ…‹ๅ’Œๆ€ง่ƒฝๆŒ‡ๆจ™' (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.

Usage Guidelines2/5

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

ๅˆ—ๅ‡บๅฏ็”จ็š„ๅ‚™ไปฝๆ–‡ไปถ

ParametersJSON Schema
NameRequiredDescriptionDefault
backup_dirNoๅ‚™ไปฝ็›ฎ้Œ„่ทฏๅพ‘๏ผˆ้ป˜่ช็‚บ data/backups/๏ผ‰
conversation_idNo้Žๆฟพ็‰นๅฎšๅฐ่ฉฑ ID ็š„ๅ‚™ไปฝ

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idNoConversation ID to inspect (defaults to "default")

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with 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.

Purpose4/5

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.

Usage Guidelines2/5

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

ๅพžๅ‚™ไปฝๆ–‡ไปถ้‚„ๅŽŸ่จ˜ๆ†ถใ€‚่ญฆๅ‘Š๏ผš้€™ๅฐ‡่ฆ†่“‹็•ถๅ‰ๅฐ่ฉฑ็š„ๆ‰€ๆœ‰่จ˜ๆ†ถใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYes็›ฎๆจ™ๅฐ่ฉฑ ID
backup_pathYesๅ‚™ไปฝๆ–‡ไปถ่ทฏๅพ‘
restore_short_termNoๆ˜ฏๅฆ้‚„ๅŽŸ็ŸญๆœŸ่จ˜ๆ†ถ
restore_long_termNoๆ˜ฏๅฆ้‚„ๅŽŸ้•ทๆœŸ่จ˜ๆ†ถ
mergeNoๆ˜ฏๅฆๅˆไฝต่€Œ้ž่ฆ†่“‹๏ผˆไฟ็•™็พๆœ‰่จ˜ๆ†ถ๏ผ‰

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
messagesYesRecent conversation messages
conversation_idYesCurrent conversation ID
participantsNoOptional participants information

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: '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.

Usage Guidelines2/5

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

ไฝฟ็”จ้ซ˜็ดš้Žๆฟพๆขไปถๆœ็ดข่จ˜ๆ†ถใ€‚ๆ”ฏๆŒ้—œ้ต่ฉžใ€ๆ™‚้–“็ฏ„ๅœใ€ๅˆ†ๆ•ธ้Žๆฟพ็ญ‰ใ€‚

ParametersJSON Schema
NameRequiredDescriptionDefault
conversation_idYesๅฐ่ฉฑ ID
queryNoๆœ็ดขๆŸฅ่ฉขๆ–‡ๆœฌ๏ผˆๅฐ‡ๆๅ–้—œ้ต่ฉž๏ผ‰
keywordsNo็›ดๆŽฅๆŒ‡ๅฎš้—œ้ต่ฉžๅˆ—่กจ
date_fromNo่ตทๅง‹ๆ—ฅๆœŸ๏ผˆISO ๆ ผๅผ๏ผ‰
date_toNo็ตๆŸๆ—ฅๆœŸ๏ผˆISO ๆ ผๅผ๏ผ‰
min_scoreNoๆœ€ไฝŽๅˆ†ๆ•ธ
max_scoreNoๆœ€้ซ˜ๅˆ†ๆ•ธ
limitNo่ฟ”ๅ›ž็ตๆžœๆ•ธ้‡้™ๅˆถ
sort_byNoๆŽ’ๅบๆ–นๅผrelevance
orderNoๆŽ’ๅบ้ †ๅบdesc
memory_typeNoๆœ็ดข็š„่จ˜ๆ†ถ้กžๅž‹short_term

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'ๆœ็ดข่ฎฐๅฟ†' (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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
recentMessagesYesRecent messages to search against
conversation_idYesCurrent conversation ID
roleWeightsNo

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesName of the memory to update
triggerNoNew trigger condition (JavaScript code)
promptNoNew memory content
conversation_idNoConversation ID that owns this memory
updatedContextNoContext about this update
recentMessagesNoOptional recent messages to auto-generate updatedContext

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness2/5

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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema 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.

Purpose4/5

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.

Usage Guidelines2/5

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.

  1. 21 tool updatesv1.0.0
    • Changedadd_long_term_memory23 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Conversation ID that owns this memory (defaults to \"default\")",
        +  "type": "string"
        +}
      • removedInput schema / properties / createdContext / _def
        Removed 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"
        -}
      • addedInput schema / properties / createdContext / description
        Added value: +"Optional context about when/why this memory was created"
      • addedInput schema / properties / createdContext / type
        Added value: +"string"
      • removedInput schema / properties / createdContext / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
      • removedInput schema / properties / name / _def
        Removed value: -{
        -  "checks": [],
        -  "coerce": false,
        -  "description": "Unique name for the memory",
        -  "typeName": "ZodString"
        -}
      • addedInput schema / properties / name / description
        Added value: +"Unique name for the memory"
      • addedInput schema / properties / name / type
        Added value: +"string"
      • removedInput schema / properties / name / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
      • removedInput schema / properties / prompt / _def
        Removed value: -{
        -  "checks": [],
        -  "coerce": false,
        -  "description": "The memory content to be recalled when triggered",
        -  "typeName": "ZodString"
        -}
      • addedInput schema / properties / prompt / description
        Added value: +"The memory content to be recalled when triggered"
      • addedInput schema / properties / prompt / type
        Added value: +"string"
      • removedInput schema / properties / prompt / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
      • removedInput schema / properties / recentMessages / _def
        Removed 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"
        -}
      • addedInput schema / properties / recentMessages / description
        Added value: +"Optional recent messages to auto-generate createdContext"
      • addedInput schema / properties / recentMessages / items
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "content": {
        +      "type": "string"
        +    },
        +    "role": {
        +      "enum": [
        +        "user",
        +        "assistant",
        +        "system"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "role",
        +    "content"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / recentMessages / type
        Added value: +"array"
      • removedInput schema / properties / recentMessages / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
      • removedInput schema / properties / trigger / _def
        Removed 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"
        -}
      • addedInput schema / properties / trigger / description
        Added value: +"JavaScript code that returns true/false to determine if memory should activate. Example: \"match_keys(context.messages, ['birthday'], 'any') || new Date().getMonth() === 6\""
      • addedInput schema / properties / trigger / type
        Added value: +"string"
      • removedInput schema / properties / trigger / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
    • Changedadd_short_term_memory16 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / conversation_id / _def
        Removed value: -{
        -  "checks": [],
        -  "coerce": false,
        -  "description": "Unique identifier for the conversation",
        -  "typeName": "ZodString"
        -}
      • addedInput schema / properties / conversation_id / description
        Added value: +"Unique identifier for the conversation"
      • addedInput schema / properties / conversation_id / type
        Added value: +"string"
      • removedInput schema / properties / conversation_id / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
      • removedInput schema / properties / messages / _def
        Removed 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"
        -}
      • addedInput schema / properties / messages / description
        Added value: +"Array of recent messages to create memory from"
      • addedInput schema / properties / messages / items
        Added 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"
        +}
      • addedInput schema / properties / messages / type
        Added value: +"array"
      • removedInput schema / properties / messages / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
      • removedInput schema / properties / roleWeights / _def
        Removed 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"
        -}
      • addedInput schema / properties / roleWeights / additionalProperties
        Added value: +false
      • addedInput schema / properties / roleWeights / description
        Added value: +"Optional weights for different roles when extracting keywords (default: user=2.7, assistant=2.0, system=1.0)"
      • addedInput schema / properties / roleWeights / properties
        Added value: +{
        +  "assistant": {
        +    "type": "number"
        +  },
        +  "system": {
        +    "type": "number"
        +  },
        +  "user": {
        +    "type": "number"
        +  }
        +}
      • addedInput schema / properties / roleWeights / type
        Added value: +"object"
      • removedInput schema / properties / roleWeights / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
    • Addedanalyze_memory_patterns
    • Addedbackup_memories
    • Changedcleanup_memories5 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / conversation_id / _def
        Removed value: -{
        -  "checks": [],
        -  "coerce": false,
        -  "description": "Conversation ID for storage",
        -  "typeName": "ZodString"
        -}
      • addedInput schema / properties / conversation_id / description
        Added value: +"Conversation ID for storage"
      • addedInput schema / properties / conversation_id / type
        Added value: +"string"
      • removedInput schema / properties / conversation_id / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
    • Addeddelete_backup
    • Changeddelete_long_term_memory6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Conversation ID that owns this memory",
        +  "type": "string"
        +}
      • removedInput schema / properties / name / _def
        Removed value: -{
        -  "checks": [],
        -  "coerce": false,
        -  "description": "Name of the memory to delete",
        -  "typeName": "ZodString"
        -}
      • addedInput schema / properties / name / description
        Added value: +"Name of the memory to delete"
      • addedInput schema / properties / name / type
        Added value: +"string"
      • removedInput schema / properties / name / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
    • Changeddelete_short_term_memories9 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / conversation_id / _def
        Removed value: -{
        -  "checks": [],
        -  "coerce": false,
        -  "description": "Conversation ID for storage",
        -  "typeName": "ZodString"
        -}
      • addedInput schema / properties / conversation_id / description
        Added value: +"Conversation ID for storage"
      • addedInput schema / properties / conversation_id / type
        Added value: +"string"
      • removedInput schema / properties / conversation_id / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
      • removedInput schema / properties / pattern / _def
        Removed value: -{
        -  "checks": [],
        -  "coerce": false,
        -  "description": "String keyword or regex pattern to match (e.g., \"keyword\" or \"/pattern/i\")",
        -  "typeName": "ZodString"
        -}
      • addedInput schema / properties / pattern / description
        Added value: +"String keyword or regex pattern to match (e.g., \"keyword\" or \"/pattern/i\")"
      • addedInput schema / properties / pattern / type
        Added value: +"string"
      • removedInput schema / properties / pattern / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
    • Addedget_cache_stats
    • Changedget_frequent_conversation2 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / required
        Removed value: -[]
    • Changedget_memory_context6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Conversation ID that owns this memory",
        +  "type": "string"
        +}
      • removedInput schema / properties / name / _def
        Removed value: -{
        -  "checks": [],
        -  "coerce": false,
        -  "description": "Name of the memory",
        -  "typeName": "ZodString"
        -}
      • addedInput schema / properties / name / description
        Added value: +"Name of the memory"
      • addedInput schema / properties / name / type
        Added value: +"string"
      • removedInput schema / properties / name / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
    • Changedget_memory_stats6 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / conversation_id / _def
        Removed value: -{
        -  "description": "Optional conversation ID for context",
        -  "innerType": {
        -    "_def": {
        -      "checks": [],
        -      "coerce": false,
        -      "typeName": "ZodString"
        -    },
        -    "~standard": {
        -      "vendor": "zod",
        -      "version": 1
        -    }
        -  },
        -  "typeName": "ZodOptional"
        -}
      • addedInput schema / properties / conversation_id / description
        Added value: +"Optional conversation ID for context"
      • addedInput schema / properties / conversation_id / type
        Added value: +"string"
      • removedInput schema / properties / conversation_id / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
      • removedInput schema / required
        Removed value: -[]
    • Addedget_metrics
    • Addedhealth_check
    • Addedlist_backups
    • Changedlist_long_term_memories3 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Conversation ID to inspect (defaults to \"default\")",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[]
    • Addedrestore_memories
    • Changedsearch_long_term_memories16 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / conversation_id / _def
        Removed value: -{
        -  "checks": [],
        -  "coerce": false,
        -  "description": "Current conversation ID",
        -  "typeName": "ZodString"
        -}
      • addedInput schema / properties / conversation_id / description
        Added value: +"Current conversation ID"
      • addedInput schema / properties / conversation_id / type
        Added value: +"string"
      • removedInput schema / properties / conversation_id / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
      • removedInput schema / properties / messages / _def
        Removed 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"
        -}
      • addedInput schema / properties / messages / description
        Added value: +"Recent conversation messages"
      • addedInput schema / properties / messages / items
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "content": {
        +      "type": "string"
        +    },
        +    "role": {
        +      "enum": [
        +        "user",
        +        "assistant",
        +        "system"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "role",
        +    "content"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / messages / type
        Added value: +"array"
      • removedInput schema / properties / messages / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
      • removedInput schema / properties / participants / _def
        Removed 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"
        -}
      • addedInput schema / properties / participants / additionalProperties
        Added value: +true
      • addedInput schema / properties / participants / description
        Added value: +"Optional participants information"
      • addedInput schema / properties / participants / properties
        Added value: +{}
      • addedInput schema / properties / participants / type
        Added value: +"object"
      • removedInput schema / properties / participants / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
    • Addedsearch_memories
    • Changedsearch_short_term_memories15 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • removedInput schema / properties / conversation_id / _def
        Removed value: -{
        -  "checks": [],
        -  "coerce": false,
        -  "description": "Current conversation ID",
        -  "typeName": "ZodString"
        -}
      • addedInput schema / properties / conversation_id / description
        Added value: +"Current conversation ID"
      • addedInput schema / properties / conversation_id / type
        Added value: +"string"
      • removedInput schema / properties / conversation_id / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
      • removedInput schema / properties / recentMessages / _def
        Removed 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"
        -}
      • addedInput schema / properties / recentMessages / description
        Added value: +"Recent messages to search against"
      • addedInput schema / properties / recentMessages / items
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "content": {
        +      "type": "string"
        +    },
        +    "role": {
        +      "enum": [
        +        "user",
        +        "assistant",
        +        "system"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "role",
        +    "content"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / recentMessages / type
        Added value: +"array"
      • removedInput schema / properties / recentMessages / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
      • removedInput schema / properties / roleWeights / _def
        Removed 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"
        -}
      • addedInput schema / properties / roleWeights / additionalProperties
        Added value: +false
      • addedInput schema / properties / roleWeights / properties
        Added value: +{
        +  "assistant": {
        +    "type": "number"
        +  },
        +  "system": {
        +    "type": "number"
        +  },
        +  "user": {
        +    "type": "number"
        +  }
        +}
      • addedInput schema / properties / roleWeights / type
        Added value: +"object"
      • removedInput schema / properties / roleWeights / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
    • Changedupdate_long_term_memory23 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • addedInput schema / properties / conversation_id
        Added value: +{
        +  "description": "Conversation ID that owns this memory",
        +  "type": "string"
        +}
      • removedInput schema / properties / name / _def
        Removed value: -{
        -  "checks": [],
        -  "coerce": false,
        -  "description": "Name of the memory to update",
        -  "typeName": "ZodString"
        -}
      • addedInput schema / properties / name / description
        Added value: +"Name of the memory to update"
      • addedInput schema / properties / name / type
        Added value: +"string"
      • removedInput schema / properties / name / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
      • removedInput schema / properties / prompt / _def
        Removed value: -{
        -  "description": "New memory content",
        -  "innerType": {
        -    "_def": {
        -      "checks": [],
        -      "coerce": false,
        -      "typeName": "ZodString"
        -    },
        -    "~standard": {
        -      "vendor": "zod",
        -      "version": 1
        -    }
        -  },
        -  "typeName": "ZodOptional"
        -}
      • addedInput schema / properties / prompt / description
        Added value: +"New memory content"
      • addedInput schema / properties / prompt / type
        Added value: +"string"
      • removedInput schema / properties / prompt / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
      • removedInput schema / properties / recentMessages / _def
        Removed 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"
        -}
      • addedInput schema / properties / recentMessages / description
        Added value: +"Optional recent messages to auto-generate updatedContext"
      • addedInput schema / properties / recentMessages / items
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "content": {
        +      "type": "string"
        +    },
        +    "role": {
        +      "enum": [
        +        "user",
        +        "assistant",
        +        "system"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "role",
        +    "content"
        +  ],
        +  "type": "object"
        +}
      • addedInput schema / properties / recentMessages / type
        Added value: +"array"
      • removedInput schema / properties / recentMessages / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
      • removedInput schema / properties / trigger / _def
        Removed value: -{
        -  "description": "New trigger condition (JavaScript code)",
        -  "innerType": {
        -    "_def": {
        -      "checks": [],
        -      "coerce": false,
        -      "typeName": "ZodString"
        -    },
        -    "~standard": {
        -      "vendor": "zod",
        -      "version": 1
        -    }
        -  },
        -  "typeName": "ZodOptional"
        -}
      • addedInput schema / properties / trigger / description
        Added value: +"New trigger condition (JavaScript code)"
      • addedInput schema / properties / trigger / type
        Added value: +"string"
      • removedInput schema / properties / trigger / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
      • removedInput schema / properties / updatedContext / _def
        Removed value: -{
        -  "description": "Context about this update",
        -  "innerType": {
        -    "_def": {
        -      "checks": [],
        -      "coerce": false,
        -      "typeName": "ZodString"
        -    },
        -    "~standard": {
        -      "vendor": "zod",
        -      "version": 1
        -    }
        -  },
        -  "typeName": "ZodOptional"
        -}
      • addedInput schema / properties / updatedContext / description
        Added value: +"Context about this update"
      • addedInput schema / properties / updatedContext / type
        Added value: +"string"
      • removedInput schema / properties / updatedContext / ~standard
        Removed value: -{
        -  "vendor": "zod",
        -  "version": 1
        -}
  2. 12 tool updates
    • First observedadd_long_term_memory
    • First observedadd_short_term_memory
    • First observedcleanup_memories
    • First observeddelete_long_term_memory
    • First observeddelete_short_term_memories
    • First observedget_frequent_conversation
    • First observedget_memory_context
    • First observedget_memory_stats
    • First observedlist_long_term_memories
    • First observedsearch_long_term_memories
    • First observedsearch_short_term_memories
    • First observedupdate_long_term_memory

TDQS

B3.3/5.0
Disambiguation4/5

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.

Naming Consistency3/5

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.

Tool Count4/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessNo issues

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    An 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.
    22
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides 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

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