Skip to main content
Glama

Server Quality Checklist

92%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v1.0.0

  • Disambiguation3/5

    memory_get_last and memory_retrieve overlap because both can retrieve the same system/last_memory record, and memory_update_last similarly overlaps with memory_store for that key. The AGENT DIRECTIVE text helps clarify intended usage, but the boundaries between generic and session-specific operations are not fully crisp.

    Naming Consistency4/5

    All tools share a consistent memory_ prefix and snake_case formatting, following a readable memory_<verb> pattern. Minor synonym inconsistency between retrieve/get and store/update keeps it from being perfectly uniform.

    Tool Count5/5

    Six tools is well-scoped for a memory server: generic CRUD plus session checkpointing. Each tool has a distinct role, and the specialized checkpoint pair adds clear value without bloating the surface.

    Completeness5/5

    The set covers the full memory lifecycle: store, retrieve, search, delete, and session checkpoint read/write. There are no obvious dead ends for the stated domain of persistent project memory.

  • Average 3.7/5 across 6 of 6 tools scored. Lowest: 3.1/5.

    See the Tool Scores section below for per-tool breakdowns.

    • 2 of 2 community issues answered or closed in the last 6 months
    • 11 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 MIT License.

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

  • This repository includes a glama.json configuration file.

  • This server has been verified by its author.

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

  • 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 states the tool 'removes' an entry, implying a destructive mutation, but does not disclose whether the operation is permanent, whether it errors on missing keys, or what the response contains. For a mutation with no 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 concise, with a one-sentence purpose and a clear, front-loaded parameter list. No fluff or redundant information; every line adds value. This is an optimally structured short definition.

    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?

    Although an output schema exists (not shown), the description omits critical context for a destructive operation: it does not mention side effects (e.g., irreversible deletion), error behavior on missing keys, or any confirmation/return message. For a delete tool with no annotations, an agent needs more than the bare action and parameter list to call it safely and 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 input schema has 0% description coverage, so the description must explain each parameter. It does: 'key' is the memory key to remove, 'project_root' is the required absolute path, and 'namespace' indicates a logical namespace with a default. This adds meaning beyond the bare schema titles and is sufficient for an agent to understand parameter purposes, though it could be more detailed (e.g., allowed formats).

    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 states a clear verb ('removes') and resource ('specific memory entry'), which unambiguously defines the operation. It is distinct from siblings like memory_store or memory_retrieve by the action. However, it does not explicitly differentiate from similar delete-like operations, though none exist among siblings, so it is clear enough.

    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. The description only lists parameters and the core action, with no mention of contexts in which deletion is appropriate, prerequisites, or scenarios where another tool (e.g., memory_update_last) might be preferred. The agent must infer usage from the name alone.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • 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 only states the action (retrieves) and parameter details. It does not disclose whether the operation is read-only, what happens if the key is missing, whether any side effects occur, or if specific permissions are required. This is a significant gap for a tool that likely performs a read 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 concise and well-structured. It opens with a single-sentence purpose statement, immediately followed by a clearly formatted parameter list. There is no fluff; every line contributes to understanding the tool's function and parameters. The structure is easy to scan and comprehend.

    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?

    The description covers the basic purpose and parameter semantics, but it lacks guidance on behavioral aspects such as return format (though an output schema exists), error handling, and read-only nature. It also does not differentiate usage from sibling tools. For a simple retrieval with straightforward parameters, this is adequate but not fully complete.

    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 schema has 0% description coverage, so the description must compensate. It does: it explains the 'key' parameter with an example, clarifies that 'project_root' is required and what it represents, and notes the default for 'namespace'. This adds meaningful context beyond the bare schema definitions, covering all three parameters effectively.

    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 a specific verb ('Retrieves') and a specific resource ('a specific memory record by key'). It is distinct from sibling tools like memory_search (which implies searching) and memory_get_last (which implies getting the last record). The key-based retrieval purpose is unambiguous.

    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 is no mention of when to prefer memory_retrieve over memory_search or memory_get_last, nor any exclusions or prerequisites. The only usage hint is implicit: it retrieves by an exact key, but this is not framed as a decision rule.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • 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 discloses that records are persistent and that the operation is an upsert ('Stores or updates'), but it does not explain overwrite semantics, whether content is merged or replaced, side effects on existing keys, required permissions, or how the OKF record is materialized. This is a significant gap for a write 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 one-sentence purpose is front-loaded, followed by a systematically formatted parameter list. Each parameter line adds semantic value that the schema lacks, and the length is justified by the tool's 20-parameter complexity. There is no filler or redundancy.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a complex 20-parameter tool with no annotations, the description covers all parameters, required fields, defaults, and special-case fields. Since an output schema is present, return values need not be described. The main remaining gaps are usage routing and overwrite/merge behavior, but the parameter documentation is otherwise thorough enough for correct invocation.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters5/5

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

    Schema description coverage is 0%, but the description fully compensates by documenting all 20 parameters with meaning, defaults, examples, allowed values, and context-specific notes such as 'For Attested Computation concepts'. This goes well beyond the bare schema and gives an agent enough semantic grounding to construct valid arguments.

    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 opening sentence states a specific verb and resource: 'Stores or updates a persistent memory record in Open Knowledge Format (OKF v0.2).' This is clear and distinguishes the tool from retrieval/deletion tools. However, it does not explicitly differentiate from memory_update_last, which also performs an update, so it misses full sibling differentiation.

    Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

    Usage Guidelines2/5

    Does the description explain when to use this tool, when not to, or what alternatives exist?

    The description implies use when storing or updating a keyed memory, but gives no explicit when-to-use guidance, no exclusions, and no mention of alternatives such as memory_update_last or memory_delete. With five siblings, an agent gets no routing help beyond the tool's name and first sentence.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • 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 of explaining behavior. It does state that the tool retrieves a checkpoint and helps understand where work left off, implying a read-only operation. However, it does not disclose behavior when no last memory exists, potential errors, or whether any state is initialized, which leaves some ambiguity for an agent.

    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 compact and front-loaded with the most important directive: when to call the tool. The parameter list is placed afterward without redundant explanation or filler. Every sentence earns its place.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given the tool's low complexity and the presence of an output schema, the description covers the key context: when to call it, what it retrieves, and the required parameters. It falls slightly short on edge-case behavior, such as missing checkpoint handling or namespace semantics, but overall it is reasonably complete.

    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 schema has 0% description coverage, so parameter meaning depends entirely on the description. It usefully explains project_root as REQUIRED and an absolute path, and namespace as a logical namespace with a default. The namespace definition is thin, but for a two-parameter tool this is adequate compensation for the bare schema.

    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 retrieves the last recorded session checkpoint and is meant for session initialization. It identifies a specific resource ('system/last_memory'), so the purpose is unambiguous. It does not explicitly contrast itself with siblings like memory_retrieve or memory_search, but the 'last checkpoint' scope sets it apart.

    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 explicitly says to call this tool FIRST when starting work or opening a project session, which is strong when-to-use guidance. It does not mention when not to use it or describe alternative sibling tools, so the guidance is clear but not fully comparative.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/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 states the tool 'searches' which implies a read-only operation, but does not explicitly disclose that it makes no modifications. It also does not mention performance characteristics (e.g., indexing), result ordering, or any potential side effects like caching. This is acceptable for a search, but the absence of explicit read-only confirmation or other behavioral notes leaves a minor 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 concise and well-structured. It starts with a one-sentence purpose statement, then lists parameters in a bulleted format with clear labels. There is no redundant fluff, and the most important information (the search behavior) is front-loaded. Every sentence contributes value, and the parameter descriptions are directly actionable.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    Given that an output schema exists, the description need not explain return values. It covers the tool's purpose, all parameters with semantics, and minimal usage context. However, it falls short on usage guidance relative to siblings (e.g., when to use this over memory_retrieve) and does not mention any edge cases or limitations (e.g., whether searches are case-insensitive, or how tags/namespace interact). These omissions are minor, but they prevent a perfect score.

    Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

    Parameters5/5

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

    The description provides detailed semantic meaning for every parameter, going well beyond the schema (which has 0% description coverage). For example, project_root is specified as 'absolute path to active project root directory', query is described as 'search string across keys, frontmatter, and content', and limit is given a default meaning. This fully compensates for the lack of schema descriptions and enables correct usage without ambiguity.

    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 opens with a clear verb 'Searches' and a specific resource 'persistent memories', and enumerates matching criteria (keywords, tags, namespace patterns). This is distinguishable from siblings like memory_retrieve (which likely fetches a specific memory) and memory_store (which writes), so an agent can tell them apart at a glance.

    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 explains what the tool does and its parameters, but does not explicitly state when to prefer it over sibling tools like memory_retrieve or memory_get_last. The intended use case (searching rather than retrieving) is implied by the word 'Searches' but not spelled out. It lacks explicit 'when not to use' guidance, such as 'use memory_retrieve for exact ID lookups'.

    Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

  • Behavior3/5

    Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

    With no annotations provided, the description carries full behavioral burden. It says the tool updates the canonical checkpoint 'so future sessions know where work was left off', which conveys the main effect, but it does not disclose whether the previous checkpoint is overwritten, whether a missing checkpoint is created, or any other 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.

    Conciseness4/5

    Is the description appropriately sized, front-loaded, and free of redundancy?

    The key directive is front-loaded and every parameter is explained without filler. The block is reasonably compact for the amount of guidance it provides, though the 'AGENT DIRECTIVE' framing adds a small amount of stylistic overhead.

    Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

    Completeness4/5

    Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

    For a tool with 4 parameters, an output schema, and no enums or nested objects, the description covers when to call the tool, what it accomplishes, and what each parameter means. It does not explain overwrite behavior or routing to siblings, but an agent has enough to select and invoke the tool correctly in the intended checkpointing workflow.

    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?

    Schema description coverage is 0%, but the description compensates by explaining each parameter: content is a progress note or dictionary, project_root is a required absolute path, namespace has a default, and summary is an optional one-sentence description. Some semantics still remain abstract, such as what 'logical namespace' affects, so it is not a perfect 5.

    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 explicitly names a specific verb and target: 'update the canonical project checkpoint ('system/last_memory')'. It also frames the tool as milestone/session checkpointing, which differentiates it from sibling tools like memory_store or memory_get_last by focusing on updating the single canonical 'last_memory' record.

    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?

    It gives explicit when-to-use conditions: 'whenever completing a milestone, making key project changes, or pausing work'. However, it does not state when not to use it or explicitly compare it with alternatives such as memory_store for new memories.

    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

mcp-memory MCP server

Copy to your README.md:

Score Badge

mcp-memory MCP server

Copy to your README.md:

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/fellowgeek/mcp-memory'

If you have feedback or need assistance with the MCP directory API, please join our Discord server