Skip to main content
Glama
efficjump

Preference Memory MCP

by efficjump

Server Quality Checklist

58%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.1.0

  • Disambiguation5/5

    Each tool targets a distinct action: reading by ID, observing candidates, recalling active memories, creating pending proposals, resolving them, and listing reviewable ones. No overlap.

    Naming Consistency5/5

    All tools follow the 'memory_<verb>' pattern with clear, descriptive verbs (get, observe, recall, remember, resolve, review), ensuring predictability.

    Tool Count5/5

    With 6 tools, the surface is well-scoped for a memory management server, covering core operations without being overly large or sparse.

    Completeness4/5

    The tools cover create, read, list, and resolve workflows. However, there is no explicit delete tool; while resolve may handle disposal, this omission is a minor gap for full CRUD coverage.

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

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

    • No community issues in the last 6 months
    • 3 commits in the last 12 weeks
    • Last stable release on
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is passing
  • 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.json to 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

  • Behavior2/5

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

    Annotations are all false, so the description carries full burden. It discloses that no sampling is invoked, which is helpful, but omits many behavioral traits: whether the proposal is persisted, whether it can be retrieved later, if it triggers side effects, or any rate limits. With 0 annotation coverage, more detail is expected.

    Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

    Conciseness3/5

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

    Single sentence, no fluff. However, it is too concise for the complexity: 10 parameters and no schema descriptions demand more informative prose. Front-loading is fine but content is lacking.

    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 10 parameters, 1 required, and 0% schema description coverage, the description is severely incomplete. It does not explain any parameter's role, the meaning of 'memory proposal', or how this integrates with other memory tools. Even with an output schema present, the description fails to provide essential context for correct invocation.

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

    Parameters1/5

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

    Schema description coverage is 0% — no property descriptions exist. The description adds zero information about the 10 parameters (kind, tags, scope, strength, etc.). For a high-parameter tool, this is critically insufficient.

    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 states the tool creates a pending memory proposal without sampling, but it does not differentiate from sibling tools like memory_observe (which might record observations) or memory_recall (retrieval). The verb 'create' is clear, but the resource 'memory proposal' is somewhat vague without context.

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

    Usage Guidelines1/5

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

    No guidance on when to use this tool vs siblings. The description does not mention prerequisites, alternatives, or when to prefer this over memory_observe or memory_resolve. The agent receives no decision support.

    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?

    Annotations are all false, providing minimal behavioral cues. The description adds that it does not store raw observation, but does not disclose side effects, state changes, or whether the extraction modifies internal data. Key behavioral traits are missing.

    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 sentence, very concise and front-loaded. However, it is too brief to cover necessary guidance, which slightly reduces structure effectiveness.

    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 has 3 parameters including a nested Scope object and an enum, and has sibling tools, the description is inadequate. It does not explain how parameters affect output, what 'host sampling' means, or what the return value contains, despite having an output schema.

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

    Parameters2/5

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

    Schema description coverage is 0%, meaning no descriptions on top-level properties. The description does not explain the 'observation', 'scope', or 'strength' parameters. The Scope definition in schema has a description, but parameters overall are underspecified.

    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 uses the verb 'extract' and clarifies the tool extracts pending candidates without storing the raw observation. It distinguishes from sibling tools like memory_remember (store) and memory_recall (retrieve). However, 'pending candidates' is not defined, so purpose is not fully precise.

    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 explicit guidance on when to use this tool vs alternatives. Implies usage for host sampling, but no when-not conditions or comparisons to siblings like memory_resolve or memory_review.

    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?

    Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description does not need to repeat those. The description adds that it recalls 'active' memories, but does not elaborate on what 'active' means or any other behavioral traits not covered by annotations. No contradictions with annotations.

    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 concise sentence, front-loading the primary action. However, it sacrifices clarity for brevity, warranting a 4 rather than a 5.

    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 presence of an output schema, return values need not be explained. However, the description fails to clarify what constitutes a 'match', what 'active' means, or how scope selectors work. With three parameters and a search function, more context is needed for complete understanding.

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

    Parameters2/5

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

    Schema description coverage is 0%, so the description must add meaning. It hints that 'query' is the request and 'opaque scope selectors' might relate to the 'context' parameter, but does not explicitly describe each parameter. The 'limit' parameter is entirely unaddressed. This is insufficient compensation for the lack of schema descriptions.

    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 states it recalls active memories matching a request, providing a verb and resource. However, 'opaque scope selectors' is ambiguous and does not sufficiently differentiate from sibling tools like memory_get or memory_resolve. The purpose is moderately clear but lacks specificity.

    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 offers no guidance on when to use this tool versus alternatives. There is no mention of exclusions, prerequisites, or comparisons to sibling tools, leaving the agent to infer usage context.

    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?

    Annotations already indicate destructiveHint=true and idempotentHint=true, so the description's mention of 'approve, reject, or dispute' confirms mutation behavior. However, it does not disclose what state changes occur (e.g., whether the memory is updated or deleted) or any side effects. It adds minimal value beyond the annotations.

    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, front-loaded sentence that efficiently conveys the core purpose. Every word is necessary, with no filler or redundancy.

    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?

    Despite having an output schema and annotations, the description is too brief for a mutation tool with 3 parameters. It omits critical details such as the meaning of 'supersedes_id', the result of invoking the tool, or any constraints. The description leaves significant gaps in the agent's understanding.

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

    Parameters1/5

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

    The input schema has 3 parameters with 0% schema description coverage. The description does not elaborate on any parameter (e.g., what 'memory_id' refers to, how 'decision' affects the memory, or the role of 'supersedes_id'). It fails to compensate for the missing schema descriptions, leaving the agent without meaningful parameter guidance.

    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?

    Description clearly states the tool's purpose: to approve, reject, or dispute a memory after a form-elicitation response. The verb 'resolve' combined with the resource 'memory' and the three specific actions distinguishes it from sibling tools like memory_get, memory_observe, etc., which are read or observation tools.

    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 the tool should be used after a 'real form-elicitation response', but does not explicitly say when to use it versus alternatives. It lacks guidance on prerequisites or when not to use it. Sibling tools are listed but no comparison provided.

    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?

    Annotations already declare readOnlyHint, idempotentHint, non-destructive. Description adds cursor-based pagination. No contradictions; sufficient value beyond annotations.

    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?

    Single concise sentence at the beginning conveying essential info. No unnecessary words.

    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 paginated listing tool with cursor, status filter, and output schema, description is too sparse. Missing context like cursor handling, meaning of 'reviewable', default status filtering, and pagination behavior.

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

    Parameters2/5

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

    Schema coverage is 0%, requiring description to compensate, but description does not explain any parameter (limit, cursor, status). Parameter names are partially self-explanatory but missing details like default for status and cursor format.

    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?

    Description clearly states verb (list), resource (reviewable memories), and key behavior (cursor-based pagination). Differentiates from siblings like memory_get and memory_recall by specifying 'reviewable'.

    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?

    Implies when to use via 'reviewable' but lacks explicit when-not or alternative tool references. No guidance on prerequisites or exclusions.

    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?

    Annotations already convey readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds the retrieval context ('by its opaque identifier'), which is complementary and does not contradict annotations.

    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 very short (8 words) and front-loads the core action. It could include more detail without becoming verbose, but it is efficient and avoids fluff.

    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 simple get-by-ID tool with a single parameter and an existing output schema, the description is adequate. It does not cover error cases (e.g., missing memory) but the output schema likely handles that.

    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 0%, so the description carries the burden. It adds 'opaque identifier' context for the memory_id parameter, but does not explain its format, origin, or constraints beyond the schema (e.g., maxLength).

    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 uses a specific verb ('Read') and resource ('one memory') with access method ('by its opaque identifier'), clearly distinguishing it from sibling tools like memory_recall (recalls multiple) or memory_remember (writes).

    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 when an opaque identifier is available, but does not explicitly state when to use this tool versus alternatives like memory_observe or memory_resolve. No exclusions or context are provided.

    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

preference-memory-mcp MCP server

Copy to your README.md:

Score Badge

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

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