Skip to main content
Glama

Server Quality Checklist

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

  • Disambiguation5/5

    Each tool has a clearly distinct role: mem_save writes, mem_recall searches semantically, mem_context provides recent session history, mem_get fetches by ID, mem_project handles project-level navigation, and mem_session manages session lifecycle. There is no notable overlap in purpose.

    Naming Consistency3/5

    All tools share the 'mem_' prefix, but the pattern is inconsistent: some use verbs (save, recall, get) while others use nouns (context, project, session). This mix of verb/noun naming is readable but not as cleanly patterned as a consistent verb_noun convention.

    Tool Count5/5

    With 6 tools, the server is well-scoped for a memory management system. Each tool covers a distinct aspect (write, recall, context, fetch, project, session), and the count is comfortably within the ideal range.

    Completeness4/5

    The tool surface covers the core memory lifecycle: save, recall, get by ID, session context, and project navigation. Minor gaps include the lack of an explicit delete operation, but the save tool's in-place topic updates partially mitigate this, and the domain is otherwise well-covered.

  • Average 3.8/5 across 6 of 6 tools scored.

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

    • No community issues in the last 6 months
    • 170 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 failing
  • 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.

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

    No annotations are provided, so the description must carry the burden of disclosing behavior. It only states the fetch action and one parameter hint.text It does not disclose that this is a read-only operation, any side effects, or what happens with edge cases like missing IDs. The description adds little beyond the schema itself, so transparency is low.

    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?

    Two sentences, clearly front-loaded with the core purpose ('Fetch a saved observation or prompt by ID') and a single valuable hint about include_timeline. No fluff.

    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?

    With 7 parameters and no output schema, the description is minimal but not deficient. The schema covers parameter details, and the timeline hint adds context. However, it does not describe the return format or overall behavior beyond 'fetch', so some gaps remain.

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

    Parameters3/5

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

    The input schema provides complete parameter descriptions (100% coverage), so the description adds little. The mention of include_timeline is a usage hint, not new semantics. Baseline 3 is appropriate.

    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 starts with a specific verb 'Fetch' and resource 'observation or prompt by ID,' clearly distinguishing it from other memory tools like mem_recall (search) or mem_context (context aggregation). It unambiguously states 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.

    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 versus alternatives like mem_recall or mem_save. The only hint is 'Use include_timeline=true when the surrounding observation chronology matters,' which addresses parameter usage but not tool selection. This leaves the agent unclear on whether to prefer this over sibling tools for retrieval tasks.

    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 mentions 'reads graph facts' and 'inspects topic-key memory', implying read-only behavior, but does not explicitly state that it does not modify data. It also does not disclose any side effects, permissions, or rate limits. The description is somewhat transparent about the read nature but lacks explicit behavioral details.

    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 concise, one sentence, and front-loaded with the main purpose. It lists the key actions without unnecessary detail. It could be slightly more structured by separating the actions, but it is efficient and to the point.

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

    Completeness3/5

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

    Given the tool has 11 parameters and no output schema, the description is somewhat minimal. It does not explain the return format or how the different actions affect the response. The schema covers parameter semantics, but the description does not provide guidance on how to use the tool effectively, such as which actions require which parameters or what the 'health' action does. For a complex tool with many parameters, more context would be beneficial.

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

    Parameters3/5

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

    The schema description coverage is 100%, meaning all parameters have descriptions in the schema. The tool description adds minimal value beyond the schema, only summarizing the actions. The schema already explains each parameter's purpose, so the description does not need to compensate. However, the description does not clarify the interplay between parameters (e.g., which combinations are valid), which could be helpful.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose4/5

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

    The description clearly states the tool's purpose: 'Project-level memory navigation' and lists the specific actions it supports (lists projects, summarizes one project, reads graph facts, or inspects topic-key memory). This distinguishes it from sibling tools like mem_save and mem_recall, which are likely for saving and recalling memories. However, it could be more specific about the 'health' action, which is not mentioned in the description.

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

    Usage Guidelines3/5

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

    The description implies usage for project-level memory navigation but does not explicitly state when to use this tool versus alternatives like mem_recall or mem_get. It does not provide exclusions or alternative tool names. The action enum provides some guidance on what each action does, but the description does not elaborate on when to choose this tool over siblings.

    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 for behavioral disclosure. It gives high-level instructions but does not communicate side effects, whether starting a session overwrites previous state, what summary/checkpoint persist, or any constraints on calling them. The phrase 'manage the active memory session' is too generic to expose meaningful behavior.

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

    Conciseness5/5

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

    The description is two compact sentences with no filler. It front-loads the core purpose and then gives direct actionable usage guidance.

    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?

    The description covers only action=start and action=summary, completely ignoring the checkpoint action and without explaining session IDs, id fallback, or the relation to sibling tools. Given no annotations and no output schema, the agent is under-equipped to fully understand the session lifecycle.

    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 already provides 100% parameter coverage, so the baseline is 3. The description adds useful extra meaning by tying action=start and action=summary to session lifecycle moments, which is absent from the schema descriptions.

    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 identifies the resource as the active memory session and uses the verb 'manage', supported by specific action guidance ('start at session start', 'summary before ending'). It is reasonably distinct from sibling memory tools like mem_save and mem_recall, though 'manage' is slightly generic.

    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 states when to call action=start and action=summary, giving clear lifecycle context. It does not explicitly mention when to avoid this tool or contrast it with sibling memory tools, but the provided usage timing is useful enough.

    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. It discloses the hybrid recall method and mentions multiple vector and knowledge-graph sources, which is transparent. However, it lacks details on permissions, side effects, or return format.

    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?

    Two sentences with zero waste. The first sentence immediately identifies the tool's purpose ('Primary retrieval tool'), and the second adds technical detail. Efficient and front-loaded.

    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?

    Despite 12 parameters and no output schema, the description does not explain the return format or how results are structured. This forces the agent to rely on inference or trial-and-error, reducing completeness.

    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 coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond what is in the schema, such as explaining how parameters interact or providing default behaviors.

    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 it is the 'Primary retrieval tool' and explains it runs 'fused hybrid recall across sentence vectors, chunk vectors, keyword FTS, and knowledge-graph enrichment,' which defines its function and distinguishes it from siblings like mem_get or mem_context.

    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 positions it as the primary retrieval tool, implying it should be used for general recalls. However, it does not explicitly state when not to use it or provide alternatives, leaving some ambiguity.

    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. It discloses the upsert behavior for topic_key ('update in-place') and implies memory persistence. However, it doesn't mention potential side effects like overwriting existing memories, auth requirements, or rate limits. It's a write operation but doesn't explicitly state that it mutates state, though that's implied. This is adequate but not rich.

    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?

    Front-loaded with 'Save memory' and organized with a clear structure (bullet points for observation content, then topic_key guidance). Every sentence is informative and earns its place. Slightly longer than strictly necessary but efficient; no filler.

    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?

    The tool has 8 parameters, but no output schema (so no return value to explain). The description covers the main usage patterns (different kinds, structured observation template, topic_key upserting) and complements the schema. It doesn't explain every parameter (e.g., scope, type, title) but those are self-explanatory in the schema. For the complexity involved, it's sufficient and complete enough.

    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 coverage is 100% for parameters, so baseline is 3. The description adds value by explaining the structured content format (What/Why/Learned) for observations, clarifying the default for kind, and explaining topic_key's role in updates. This goes beyond the schema's basic descriptions of each parameter, particularly for content and topic_key.

    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 'Save memory' and enumerates the four write modes (observation, prompt, session summary, passive learning), distinguishing it from sibling read tools like mem_recall, mem_get, and mem_context. It uses a specific verb (save) with a clear resource (memory) and outlines the different content types, making it unambiguous.

    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?

    Provides explicit guidance on when to use kind=observation with structured content and when to use topic_key for evolving topics. It implies that other kinds are for different contexts (prompts, session summaries, passive learning) but doesn't explicitly state when not to use the tool or contrast with read alternatives. Still, the context is clear enough for an agent to select appropriately.

    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, the description carries the burden. It discloses output characteristics (bounded Markdown, previews by default, configurable limit) and points to mem_get for full content. It does not explicitly state read-only behavior, but the nature of context retrieval implies it; this is adequate but not exhaustive.

    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, leading with purpose, then usage, then a bulleted list of return items. No redundant sentences; every sentence adds information. Front-loaded and scannable.

    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 simplicity (read-only context retrieval with optional filters) and that all parameters are documented in the schema, the description covers purpose, usage, output structure, and a key behavioral nuance. It does not address error cases or detailed parameter interactions, but for a context tool this is sufficient. The lack of an output schema is mitigated by the explicit return list.

    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 has 100% parameter coverage, so baseline is 3. The description adds value by explaining behavior tied to parameters: 'configurable limit' (limit), 'bounded Markdown' (max_chars), and previewing (related to observation bodies). This goes slightly beyond schema descriptions, justifying a 4.

    Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

    Purpose5/5

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

    The description clearly states the tool's function: 'Get recent memory context from previous sessions.' It specifies the resource (memory context) and the action (get), and enumerates what it returns (sessions, prompts, observations, stats), distinguishing it from siblings like mem_save and mem_get.

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

    Usage Guidelines5/5

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

    Provides explicit when-to-use guidance: 'Use this at the start of a session to recover context, or when the user asks to recall past work.' Also names an alternative: 'use mem_get(id=...) for full content,' giving clear direction for different needs.

    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

thoth-mem MCP server

Copy to your README.md:

Score Badge

thoth-mem 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/EremesNG/thoth-mem'

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