MemOS
Server Quality Checklist
Latest release: v1.0.0
- Disambiguation4/5
The tools have distinct primary purposes: add_message for new memories, add_feedback for modifications/deletions without IDs, delete_memory for deletions with IDs, and search_memory for retrieval. However, add_feedback and delete_memory both handle deletion (one without IDs, one with), which could cause minor confusion about which to use when the user intent is deletion but IDs are ambiguous. The descriptions help clarify this boundary.
Naming Consistency5/5All tool names follow a consistent verb_noun pattern with snake_case: add_feedback, add_message, delete_memory, search_memory. The verbs (add, delete, search) are clear and aligned with their actions, and the nouns (feedback, message, memory) relate coherently to the domain of memory management.
Tool Count5/5With 4 tools, this server is well-scoped for its purpose of memory operations. It covers the essential CRUD-like functions: create (add_message), read (search_memory), update/delete without IDs (add_feedback), and delete with IDs (delete_memory). The count is lean and each tool has a clear, non-redundant role in the workflow.
Completeness4/5The tool set provides strong coverage for memory lifecycle operations: adding new memories, searching, and deletion (with and without IDs). The update functionality is handled indirectly via add_feedback for modifications, which is reasonable. A minor gap is the lack of a direct 'update_memory' tool for explicit modifications with IDs, but add_feedback covers this in a natural language way, and agents can work around this limitation.
Average 4.3/5 across 4 of 4 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- 1 of 1 community issues answered or closed in the last 6 months
- 0 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
This repository is licensed under Apache 2.0.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden of behavioral disclosure. It effectively describes critical behavioral constraints: batching requirements, forbidden usage patterns (multiple calls, search-delete loops, simulation of modifications), and prerequisites (explicit user request with IDs). It doesn't mention error handling, confirmation prompts, or irreversible nature, but covers most essential behavioral aspects for a deletion tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with Trigger, Purpose, STRICT RULES, and Parameters sections. Each sentence serves a purpose, though the STRICT RULES section could be more concise. The information is front-loaded with clear purpose and critical constraints. Minor redundancy exists between the Purpose statement and parameter description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a deletion tool with no annotations and no output schema, the description provides substantial context about usage constraints, behavioral rules, and alternatives. It covers the destructive nature implicitly through the strict rules. Missing elements include error handling details and confirmation mechanisms, but overall it's quite complete for guiding safe tool invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with the parameter clearly documented as 'List of memory IDs to delete'. The description adds minimal value beyond the schema by mentioning the parameter in the Parameters section but doesn't provide additional context about ID format, validation, or constraints. Baseline 3 is appropriate given the comprehensive schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Delete memories by ID' which is a specific verb+resource combination. It distinguishes from sibling tools by mentioning 'use add_feedback instead' when no ID is provided, though it doesn't explicitly differentiate from all siblings like search_memory. The purpose is unambiguous but could be more comprehensive about sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage rules including when to use (user explicitly asks to delete AND provides IDs), when NOT to use (no ID provided, to simulate modifications), and alternatives (use add_feedback instead). The STRICT RULES section gives clear guidance on batching, forbidden patterns, and prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- 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 effectively describes critical behavioral traits: the mandatory auto-invocation pattern ('AUTO-INVOKED: After every answer'), strict rules about what it can/cannot do (e.g., no modifications), and operational constraints ('CRITICAL: NEVER use this tool as part of a modification workaround'). It doesn't mention performance characteristics like rate limits or error handling, but provides substantial behavioral context beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness3/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized but not optimally structured. It uses clear section headers (Trigger, Purpose, STRICT RULES, Parameters, Notes), which helps organization. However, it contains some redundancy (e.g., repeating the mandatory execution in multiple places) and could be more streamlined. Every sentence earns its place, but the formatting could be more efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (mandatory invocation pattern, strict rules about memory handling) and the absence of both annotations and output schema, the description provides complete contextual information. It covers purpose, triggers, strict operational rules, parameter expectations, and notes about client/orchestrator requirements. This is sufficient for an agent to understand when and how to use this tool correctly in the broader system context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds minimal value beyond the schema: it clarifies that conversation_first_message is 'used to generate the user_id' (though schema says 'conversation_id'), and specifies that messages array must contain both user and assistant roles. However, these details are largely redundant with the schema's descriptions and required fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: 'Save dialogue history (REQUIRED) and record NEW memories.' It distinguishes from siblings by specifying it's for new memories only, not modifications (unlike add_feedback) or deletions (unlike delete_memory). The verb 'save' and resource 'dialogue history/memories' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use rules: 'MANDATORY EXECUTION: You MUST call this tool after EVERY single answer' and 'ALWAYS use this tool for NEW memories.' It also specifies when-not-to-use: 'FORBIDDEN: Do NOT use `add_feedback` or other tools for adding new memories' and 'FORBIDDEN: Do NOT use this tool to modify/update existing memories.' It names the alternative tool (add_feedback) and provides clear exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/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 extensively documents critical behavioral traits: the mandatory auto-invocation protocol, the 'Four-Step Judgment' process for memory safety, the presence of AI speculations and noise in results, and the requirement to filter memories before use. It also specifies output constraints like not mentioning internal system terms. This provides comprehensive behavioral context beyond what a basic schema would offer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness2/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is excessively long (over 500 words) and includes extensive procedural instructions that belong in agent guidelines rather than a tool description. While well-structured with sections like 'Purpose', 'Usage requirements', 'Critical Protocol', and 'Parameters', it contains significant redundancy and over-specification that doesn't earn its place in a tool description. The core purpose and usage could be communicated in 20% of this length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of memory retrieval with safety protocols and no output schema, the description provides substantial context about what the tool does, how to use it, and how to handle results. It covers the retrieval purpose, mandatory invocation pattern, memory safety protocols, parameter usage, and result handling. The main gap is the lack of output schema documentation, but the description compensates by explaining how to process the returned memories.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does 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 three parameters. The description adds some additional context about 'query' ('should be a concise summary of the current user message') and 'memory_limit_number' ('defaults to 20'), but these details are largely redundant with the schema. The description doesn't add significant semantic value beyond what the structured schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the purpose as 'MemOS retrieval API. Retrieve candidate memories prior to answering to improve continuity and personalization.' This is a specific verb ('retrieve') + resource ('memories') combination that clearly distinguishes it from sibling tools like add_feedback, add_message, and delete_memory which perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage requirements: 'MUST be auto-invoked by the client before generating every answer (including greetings like "hello"). Do not wait for the user to request memory/MCP/tool usage.' It also specifies when to proceed without memories: 'If none are relevant, proceed to answer normally.' This gives clear guidance on when and how to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and excels. It discloses critical behavioral traits: the tool is a 'FIRE AND FORGET' operation with a strict retry policy (no checking, retrying, or sleeping), it handles deletion without IDs, and it forbids certain agent behaviors (e.g., constructing 'Change X to Y' requests). These details go beyond basic function and guide agent interaction effectively.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Trigger, Purpose, STRICT RULES, Parameters) and uses bullet points for readability. While comprehensive, it is slightly verbose due to repetitive emphasis (e.g., multiple 'FORBIDDEN' clauses). Every sentence serves a purpose, but some redundancy could be trimmed for optimal conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (handles modification and deletion without IDs), lack of annotations, and no output schema, the description is highly complete. It covers purpose, usage rules, behavioral constraints, parameter guidelines, and sibling differentiation. The detailed retry policy and content rules address potential agent misunderstandings, making it sufficient 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/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds minimal value: it reiterates that feedback_content should contain 'only the user's intent' and forbids verbose narratives, which slightly clarifies the schema's 'clear, concise' description. However, it doesn't provide significant additional meaning for other parameters beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: 'Modify/Delete existing memories based on natural language feedback.' It distinguishes from siblings by specifying usage when 'NO ID is provided' (unlike delete_memory which likely requires IDs) and for modification/update (unlike add_message which creates new memories). The 'Trigger' section reinforces this with specific scenarios.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit, structured guidelines: STRICT RULE 1 defines when to use (modify/update/delete without IDs) and when not to use (implied: use delete_memory with IDs, add_message for additions). It names alternatives (delete_memory, add_message) in the retry policy and sibling context. The rules clearly demarcate this tool's scope from other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/MemTensor/memos-api-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server