xmszm-memory
Allows configuring and using the memory MCP server with the Hermes MCP client.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@xmszm-memorysave to admin: my email is example@test.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
memory
Personal MCP memory server. Multi-user, file-backed, cross-platform.
Each user gets an isolated namespace. Memories persist across sessions within the namespace.
Usage
Lifecycle
xmszm-memory has three separate steps. Do not confuse MCP connection with automatic memory loading.
1. Configure MCP
-> The client can see xmszm-memory tools.
2. First-use initialization
-> initialize(namespace, profile?) creates boot/personality memories.
-> boot_instructions(namespace, target?) generates the client rule to install into AGENTS.md, CLAUDE.md, .cursorrules, or global instructions.
3. Normal conversations
-> The installed client rule makes each new session call initialize(...) and read(..., "system://boot") before answering.
-> During conversation, the model uses search/read/list to recall memory and create/update/delete to maintain durable memory.Important: MCP servers cannot force clients to call tools at session start. Automatic memory loading only works after the returned boot_instructions rule is installed in the client or project instructions.
Requirements
Node.js >= 18 (if installed via npm)
No installation needed if using
npx
stdio mode (for MCP clients)
npx -y @xmszm/memorySSE mode (HTTP server, background service)
npx -y @xmszm/memory sse
npx -y @xmszm/memory sse 3000Hermes Configuration
{
"mcpServers": {
"xmszm-memory": {
"command": "npx",
"args": ["-y", "@xmszm/memory"]
}
}
}Claude Code Configuration
User-scope example:
claude mcp add -s user xmszm-memory -- npx -y @xmszm/memoryJSON example:
{
"mcpServers": {
"xmszm-memory": {
"command": "npx",
"args": ["-y", "@xmszm/memory"]
}
}
}Cursor / Windsurf / Any MCP Client
Most MCP-compatible clients accept the same format:
{
"mcpServers": {
"xmszm-memory": {
"command": "npx",
"args": ["-y", "@xmszm/memory"]
}
}
}Related MCP server: memory-mcp
Memory Model
Memories are URI-only records. There is no key field and no key-based API.
interface Memory {
uri: string;
content: string;
disclosure: string;
priority: 0 | 1 | 2; // default 2
tags: string[]; // default []
source: string; // default "assistant_inferred"
createdAt: string;
updatedAt: string;
deletedAt?: string; // set by delete()
}Deleted memories are soft-deleted with deletedAt and are excluded from read, search, and list by default.
Tools
Tool | Description |
| Idempotently create v2.1 boot/personality memories. |
| Generate copy-paste startup instructions for a client/global/project rule so future sessions call |
| Create a new memory. Refuses overwrite if |
| Update an existing active memory by exact URI without changing |
| Read one active memory by exact URI. Special reads: |
| Main entry when URI is unknown. Searches |
| Browse active memories, optionally filtered by URI prefix. |
| Soft-delete one active memory by exact URI by setting |
| List all namespaces only; it does not return memories. |
First-use Initialization
After MCP is configured, ask the client once to initialize the namespace and generate its startup rule.
Recommended first prompt:
Use xmszm-memory. Call initialize("admin", "assistant"), then read("admin", "system://boot"), then call boot_instructions("admin", "<target>") and install the returned rule into this client's global or project instructions.Use target claude-code, codex, cursor, windsurf, project, or generic.
Boot Flow
At the start of a new session, clients should initialize the namespace once if it may be empty, then read the boot context before answering:
initialize(namespace, "assistant") # or initialize(namespace, "blank")
read(namespace, "system://boot")initialize is safe to call repeatedly. It reports created and skipped_active_existing URIs and never overwrites an active memory.
Profiles:
Profile | Behavior |
| Creates default identity, verification, no-fake-execution, conflict-resolution, user-relationship, boundary, reality, and coding-workflow memories. |
| Creates only minimal structural placeholders such as |
Special reads:
URI | Behavior |
| Returns active |
| Reports whether core identity URIs are present, missing, active count, priority-0 count, and warnings for missing boundaries, verification, or no-fake-execution memories. |
Recommended memory flow:
Configure MCP once -> client can see xmszm-memory tools
First use once -> initialize(namespace, profile?) -> read(namespace, "system://boot") -> boot_instructions(namespace, target?) -> install returned rule
Every new session -> installed rule triggers initialize(namespace, profile?) -> read(namespace, "system://boot")
Unknown URI -> search(namespace, query) -> read/update/delete(namespace, exactUri)
Browse URI prefix -> list(namespace, prefix)
Create new memory -> create(namespace, uri, ...)
Modify existing memory -> update(namespace, uri, fields)Examples:
initialize("admin")
initialize("admin", "blank")
read("admin", "system://boot")
read("admin", "system://diagnostic/identity")
boot_instructions("admin", "generic")
boot_instructions("admin", "codex")To make memory load automatically, run boot_instructions(namespace, target?) once and copy the returned rule into the client global instructions or project rule file. Without that client-side rule, the MCP server is available but the model may not call it until asked.
Data
Stored in ~/.xmszm-memory/ as one JSON file per namespace.
# View all your memories
cat ~/.xmszm-memory/admin.jsonLicense
MIT
Built from the design philosophy of Nocturne Memory by NeuronActivation.
Available Tools
9 toolsboot_instructionsA
Generate copy-paste startup instructions for a client/global/project rule. Use this after initialize so future new sessions automatically call initialize(namespace, "assistant") and read(namespace, "system://boot") before answering. This tool does not edit client files; it returns the rule text to install.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Where the instruction will be installed. Controls the recommended filename/location only. | generic |
| namespace | Yes | User namespace, e.g. admin or alice |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It transparently states the tool 'does not edit client files' and 'returns the rule text to install,' preventing expectations of side effects. It doesn't discuss permissions or error conditions, but for a text-generation tool this is adequate disclosure, meriting a 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with zero redundancy: purpose, usage context, and a side-effect disclaimer. Every sentence earns its place, making the description compact and highly scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no annotations, no output schema), the description covers all essentials: what it generates, when to use it, and what it returns. The statement 'returns the rule text to install' substitutes for an output schema, and the integration with 'initialize' places it in a complete workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description references namespace in an example but adds no new semantic meaning beyond the schema's own descriptions. The 'target' parameter is already described in the schema as controlling 'recommended filename/location only,' so the description adds no incremental value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it 'Generate copy-paste startup instructions' for a client/global/project rule, using a specific verb and resource. It distinguishes from siblings by explicitly noting it 'does not edit client files; it returns the rule text to install,' which separates it from create/update/delete tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit context: 'Use this after initialize' and explains the purpose ('future new sessions automatically call initialize...'). It does not explicitly name alternatives or when-not-to-use, but the workflow context is clear and excludes file-editing use cases, which earns a 4.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
createA
Create a new URI-only memory. Requires exact namespace and uri. Refuses overwrite when uri already exists; use update to modify an existing memory. Default priority=2, tags=[], source=assistant_inferred.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | Stable memory URI, e.g. memory://admin/project/password-policy | |
| tags | No | Tags used for search and grouping | |
| source | No | Enum-like source label; default assistant_inferred | |
| content | Yes | Full memory content | |
| priority | No | 0 highest, 1 normal, 2 low/default | |
| namespace | Yes | User namespace, e.g. admin or alice | |
| disclosure | Yes | When this memory should be considered relevant |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the critical non-obvious behavior of refusing overwrites and specifies default values for priority, tags, and source. However, it does not mention what happens on success or error, leaving a small gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each serving a distinct purpose: stating the action, noting constraints/alternatives, and listing defaults. There is no redundant or vague wording, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema and annotations, the description sufficiently covers the core purpose, usage constraints, key behavior, and defaults. It could detail the success response or auth requirements, but for a create tool that refuses duplicates, it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers all 7 parameters (100% coverage), establishing a baseline of 3. The description adds value by emphasizing that namespace and uri must be exact, and by providing defaults for priority, tags, and source that go beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the specific verb 'Create' and identifies the resource as 'URI-only memory', clearly stating the tool's purpose. It distinguishes itself from the sibling 'update' tool by explicitly saying 'use update to modify an existing memory'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides an explicit exclusion: 'Refuses overwrite when uri already exists', and recommends the alternative tool 'update' for modifying existing memories. It also states the prerequisite of exact namespace and uri, giving clear guidance on when to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deleteA
Soft-delete an active memory by exact URI. Does not remove the JSON record; it sets deletedAt. Use search/list first if URI is unknown.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | Exact memory URI | |
| namespace | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosing behavior. It clearly explains the soft-delete nature: 'Does not remove the JSON record; it sets deletedAt.' This is a critical non-obvious trait that goes beyond a typical delete. However, it does not address edge cases like non-existent URIs or already-deleted memories, which slightly reduces completeness.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences, front-loaded with the primary action, and every sentence adds value—purpose, behavior, and usage guidance. There is no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple delete operation with two parameters and no output schema, the description covers purpose, usage guidance, and key behavioral context. It does not specify return values or error conditions, but these are not explicitly required given the lack of an output schema. Overall, it is adequately complete for an agent to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes 'uri' as 'Exact memory URI' (50% coverage), and the description reinforces 'exact URI' and advises searching first if unknown, adding meaning to the uri parameter. However, the 'namespace' parameter remains unexplained, and the description does not fully compensate for the missing schema description for that parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Soft-delete an active memory by exact URI.' This is a specific verb+resource combination, and the additional explanation that it sets deletedAt rather than removing the JSON record distinguishes it from a hard delete and aligns with its sibling operations like create/update/read.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'Use search/list first if URI is unknown.' This names alternative tools and sets a clear precondition for use, helping the agent decide when to invoke this tool versus searching or listing first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
initializeA
Initialize a namespace with v2.1 boot/personality memories. On a new session, call initialize(namespace, profile?) once if the namespace may be empty, then read(namespace, "system://boot") before answering. Idempotent: active existing memories are never overwritten. profile defaults to "assistant"; accepted profiles are "assistant" and "blank".
| Name | Required | Description | Default |
|---|---|---|---|
| profile | No | assistant creates default identity/principle/workflow memories; blank creates only minimal structural identity placeholders. | assistant |
| namespace | Yes | User namespace, e.g. admin or alice |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses idempotency ('active existing memories are never overwritten'), which is useful behavioral context. However, it does not mention permissions, what happens to inactive memories, or any return behavior. Since there are no annotations, the description carries the full burden but only partially addresses safety and side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, tightly written, and front-loaded with the core purpose. Every sentence adds practical information, including the workflow and idempotency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simple two-parameter signature and absence of an output schema, the description covers the essential context: when to call it, what it does, its idempotency, and the profile options. It does not describe return values, but that is acceptable given the tool's initialization nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides full descriptions for both parameters (namespace and profile) with a default and enum for profile. The description adds minimal value by restating the default and accepted profiles, so it does not exceed the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action and resource: 'Initialize a namespace with v2.1 boot/personality memories.' This is a distinct operation from siblings like create or update, though it does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when-to-use guidance: 'On a new session, call initialize(namespace, profile?) once if the namespace may be empty, then read(namespace, "system://boot") before answering.' This gives a clear condition and sequence. It also notes idempotency, implying repeated calls are safe.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
listA
Browse active memories by URI. Optional prefix filters by URI prefix. Use search for keyword discovery; use read/update/delete only after you have the exact URI.
| Name | Required | Description | Default |
|---|---|---|---|
| prefix | No | Optional URI prefix filter | |
| namespace | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It adds context that it lists 'active' memories and supports prefix filtering, but it does not disclose return format, pagination, or the meaning of 'active.' It implies read-only behavior but does not explicitly state it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and each sentence provides essential guidance without waste. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two parameters and no output schema. The description covers the typical use case and differentiates from siblings. It lacks return format details, but this is not critical for a browsing tool and the description is otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% with only the prefix parameter having a description. The description clarifies 'Optional prefix filters by URI prefix,' adding meaning to that parameter. However, 'namespace' remains undocumented in both schema and description, leaving ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Browse active memories by URI.' It uses a specific verb with a resource and scope. It also distinguishes from siblings by explicitly mentioning keyword search and exact-URI operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'Use search for keyword discovery; use read/update/delete only after you have the exact URI.' This clearly states when 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.
list_namespacesA
List all namespaces only. This does not return memories. After choosing a namespace, call search(namespace, query) for memory content or list(namespace, prefix) for URI prefix browsing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the tool returns only namespaces and does not return memories, which is a critical behavioral trait to prevent misuse. This goes beyond a simple 'list' statement.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, and every sentence adds value (scope clarification, usage guidance). It is concise without being under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite no output schema, the description is complete for a zero-parameter tool: it specifies what is returned (namespaces), what is not returned (memories), and what to do next. This provides adequate context for an agent to select and use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is empty and description adds no parameter information. Per rubric, baseline for 0 params is 4, and no additional semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('List all namespaces') and explicitly states it does not return memories, differentiating it from sibling tools like search and list. The inclusion of 'only' reinforces its limited scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit guidance on when to use this tool (to choose a namespace) and what to use next (search or list), along with usage syntax. This clearly distinguishes it from alternatives and gives actionable next steps.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
readA
Read one active memory by exact URI. Special URIs: system://boot returns active identity://default/* plus active priority=0 memories; system://diagnostic/identity reports core identity status. On a new session, call initialize once if the namespace may be empty, then read system://boot before answering. Do not guess other URIs: if URI is unknown, call search first; use list only for prefix browsing.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | Exact memory URI returned by search/list, or system://boot / system://diagnostic/identity | |
| namespace | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses special system URIs and their return semantics ('returns active identity://default/* plus active priority=0 memories', 'reports core identity status'), defines the 'active memory' limitation, and warns not to guess URIs. With no annotations, this provides substantial behavioral context, though it stops short of explaining potential error behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loads the primary action, and packs special cases and workflow guidance into three sentences without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the absence of an output schema, the description compensates by explaining what special URIs return, when to initialize, and how to handle unknown URIs. This provides a complete operational picture for a read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema describes 'uri' but not 'namespace' (50% coverage). The description expands on URI semantics, including exact-match requirement and special system URI formats, but does not clarify the purpose of 'namespace', leaving some ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read one active memory by exact URI' — a specific verb ('Read'), a resource ('memory'), and a scoping qualifier ('exact URI'). It also distinguishes itself from siblings by warning 'if URI is unknown, call search first; use list only for prefix browsing.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly provides when-to-use guidance: 'On a new session, call initialize once... then read system://boot before answering' and directs users to alternatives: 'if URI is unknown, call search first; use list only for prefix browsing.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
searchA
Main entry when URI is unknown. Search active memories by keyword across uri, content, disclosure, tags, and source. Returns URI plus priority/tags/source/disclosure preview so you can decide whether to read.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Non-empty keyword or phrase | |
| namespace | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It does explain what fields are searched and what the response includes (URI plus preview fields), which is useful. However, it omits any behavior around result limits, ordering, case sensitivity, or whether the search is read-only, leaving gaps that annotations might otherwise cover.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each providing distinct value: when to use, what it searches, and what it returns. It is front-loaded with the most important usage condition and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with no output schema and no annotations, the description covers the core purpose, search scope, and return preview. However, the namespace parameter is left undefined, and there is no mention of result size, ordering, or pagination, which an agent might need to know for a complete invocation understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description clarifies that query is a keyword for searching, but it does not explain the required namespace parameter at all. The schema only describes query, so with 50% coverage, the description should compensate for namespace but fails to do so. This is a notable gap for an agent deciding how to invoke the tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that search is the main entry when the URI is unknown, and it specifies the verb (Search), resource (active memories), and the fields searched (uri, content, disclosure, tags, source). This distinguishes it from sibling tools like read and list, which are implied to be used when the URI is known.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Main entry when URI is unknown,' which tells the agent when to use this tool. It implies that other tools like read or list are for known URIs, but it does not explicitly name alternatives or state when not to use search. The condition is clear but not fully expanded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
updateA
Update an existing active memory by exact uri. Use only when you already know the URI. Does not change createdAt. Accepts fields: content, disclosure, priority, tags, source.
| Name | Required | Description | Default |
|---|---|---|---|
| uri | Yes | Exact existing memory URI | |
| fields | Yes | Fields to modify. Do not include uri, createdAt, updatedAt, or deletedAt. | |
| namespace | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for behavioral disclosure. It adds useful context: 'Does not change createdAt' and the constraint of updating only 'active memory.' However, it omits important mutation semantics such as merge vs. replace behavior, error cases (e.g., URI not found), whether updatedAt changes, and auth requirements. It provides some transparency but not comprehensive coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary purpose, and every sentence adds value. It is not verbose and includes the essential usage condition and a key behavioral note without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no annotations and no output schema, the description provides some essential context: purpose, usage condition, a behavioral guarantee, and accepted fields. However, it lacks details about return value, error handling, partial vs. full replacement, and specific constraints like priority enum semantics. Given the tool's nested parameter structure and the absence of annotations, the description is only moderately complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for the 'fields' object and its properties (67% coverage), and the description reinforces the accepted fields. The description adds the 'exact uri' requirement and the behavioral note about createdAt, which is helpful. However, it does not explain the enum for priority or the meaning of disclosure, leaving gaps that the schema partially fills. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action: 'Update an existing active memory by exact uri.' This distinguishes it from siblings like create, read, list, and delete by specifying it modifies an existing active memory and requires the exact URI. It also lists the accepted fields, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit usage condition: 'Use only when you already know the URI.' This guides the agent to use search/read if the URI is unknown. However, it does not explicitly mention alternative tools or exclusion scenarios (e.g., when to use create instead), so it falls short of full guidance.
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.
9 tool updates
v2.1.1- First observed
boot_instructions - First observed
create - First observed
delete - First observed
initialize - First observed
list - First observed
list_namespaces - First observed
read - First observed
search - First observed
update
TDQS
Each tool targets a distinct operation: search for keyword discovery, list for prefix browsing, read for exact URI retrieval, plus separate create/update/delete tools. Initialize and boot_instructions serve clear setup purposes, while list_namespaces is unique. No two tools appear to do the same thing.
Most tools use imperative verbs (search, initialize, create, update, read, list, delete), with compound names like list_namespaces. The only outlier is boot_instructions, which is a noun phrase rather than a verb, but the overall lowercase snake_case style is consistent.
With 9 tools, the set is well-scoped for a memory management system. Each tool serves a clear purpose: CRUD, search, list, namespace management, and initialization. No tool feels redundant or unnecessary.
The tool surface covers the full lifecycle: create, read, update, delete, search, and list, plus namespace handling and session initialization. The boot_instructions tool fills a practical gap for client setup. No obvious missing operations for the stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
One memory, every AI. A shared, user-owned markdown memory your AI clients read and write over MCP.
Cloud-hosted MCP server for durable AI memory
An MCP memory server. One memory your agents share — across models, devices and apps.
Persistent, portable memory for AI assistants — your private memory graph, from any MCP client.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceMulti-tenant memory system MCP server with vector search, relationships, and trust-based access control for AI assistants.241MIT
- FlicenseNot gradedqualityDmaintenanceA persistent, conflict-aware memory MCP server for AI coding assistants (Cursor, Claude Code).-
- AlicenseNot gradedqualityBmaintenancePersistent memory MCP server for AI agents that stores, recalls, and searches conversation history, key-value context, and long-term entries across sessions with semantic search and FIFO queues.751-
- FlicenseNot gradedqualityAmaintenanceAn MCP server providing semantic vector search, dual memory engines, and Git version control for AI clients, enabling persistent memory with recall, forget, and rollback capabilities.1-
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/xmszm/memory'
If you have feedback or need assistance with the MCP directory API, please join our Discord server