asmemory
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation4/5
Each tool targets a distinct operation—storing state, storing action, trend analysis, anomaly detection, causal analysis, export, and summary. memory_trend and memory_anomaly both analyze metric series, but their purposes are clear enough to avoid real confusion.
Naming Consistency3/5All tools share the memory_ prefix and snake_case, which helps consistency. However, the second part mixes noun-style names (trend, anomaly, causal, summary) with verb-object names (export_datalens, store_state, store_action), so the naming convention is readable but not uniform.
Tool Count5/5Seven tools is well-scoped for a memory and analysis server: two writers, three analyzers, one export, and one summary. There is no obvious redundancy or bloat.
Completeness4/5The surface covers state/action ingestion, trend/anomaly/causal analysis, export, and summary. It lacks direct raw-event queries or deletion, but that may be intentional for an append-only memory store, so this is a minor gap rather than a blocker.
Average 3.3/5 across 7 of 7 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 8 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.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- 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 that the tool 'stores a state event', which implies a write operation, but it does not disclose whether the operation appends or overwrites, whether duplicate events are allowed, or what side effects or response to expect. This lack of behavioral detail 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/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that front-loads the verb and resource. Every part contributes to understanding the core purpose, with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 6 parameters, a nested object, and no output schema or annotations, the description is too brief. It omits important contextual details such as behavior on duplicate writes, timestamp defaulting nuances, and how this relates to the other memory tools. The schema covers parameter names but not operational context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds a relational gloss on entity/metric/value, but it does not meaningfully expand on the parameter semantics already present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('存', meaning store) and identifies the resource ('状态事件到记忆库', a state event to memory). It clearly explains the semantic of entity/metric/value with optional unit and tags, which distinguishes it from the action-oriented sibling memory_store_action, though not explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus memory_store_action or other siblings like memory_trend or memory_summary. The description implies a use case but does not state any when-to-use or when-not-to-use conditions.
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, the description carries the behavioral burden. It does disclose the core algorithm behavior: z-score is computed and |z| > threshold marks an anomaly. However, it does not state whether the operation is read-only, what data range it uses, or how edge cases are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. Every clause contributes information: the target, the method, and the anomaly criterion.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description should clarify the return value and usage context. It fails to state what the function returns or how entity is used, leaving an agent without enough information to confidently invoke and consume the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%; only threshold is documented. The description refers to '某指标' (a metric), giving metric a loose role, but it does not explain the entity parameter at all. Since coverage is low, the description needed to compensate, and it only partially does.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation: detect anomaly points of a metric, with an explicit z-score criterion. It identifies a specific verb and resource, and the content is distinct from sibling tools like memory_trend or memory_causal, though it does not explicitly name or contrast those alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool should be used when anomaly detection on a metric is needed, but it gives no explicit guidance about when to prefer it over sibling tools. No alternatives, exclusions, or contextual conditions are mentioned.
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 disclosure burden. It does reveal a key behavioral outcome: the analysis returns a trend category and slope. It does not explicitly state that the operation is read-only, what data source or time window is used, or any error conditions, leaving some behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no filler or repetition. It front-loads the core action and immediately gives the concrete output categories, which is appropriately concise for a tool of this simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description is the only source of operational detail. It mentions the result shape but does not explain the required parameters adequately, does not describe the time interval or data source, and gives no guidance on how this relates to sibling tools. This is insufficient for confident invocation in all cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description adds only minimal meaning: 'metric' maps to '某指标' and the trend is over time. The 'entity' parameter is entirely unexplained, including what kind of entity is expected or how it relates to the metric, so the description does not sufficiently compensate for the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('analyze') and resource ('time trend of a metric'), and it names the output categories (rising/falling/flat + slope), making the tool's function clear. It implicitly distinguishes from siblings like memory_anomaly and memory_causal, though it does not explicitly name any alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for time-trend analysis of a metric, which gives the agent enough context for a straightforward read-style task. However, it does not state when to prefer it over memory_anomaly, memory_causal, or memory_summary, nor does it mention any exclusion conditions.
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 of behavioral disclosure. It only lists output contents and leaves read-only nature, data scope, freshness, and any potential side effects implicit. It is not misleading, but it does not meaningfully go beyond the tool's name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the resource and deliverable, then lists the output components. There is no filler or redundant repetition of the tool name's meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless summary tool, the description covers the main output elements and is adequate for an agent to know what to expect. It does not define the exact semantics of the counts or list ordering, but these are minor gaps given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is no parameter documentation burden. The description usefully identifies what the no-argument call returns, which satisfies the minimal semantic need for such a tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear deliverable: a statistical summary of the memory library, and enumerates its concrete components (状态数/动作数/实体列表/动作类型列表). It is distinguishable from siblings like memory_trend or memory_anomaly, though it does not explicitly name them as alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives such as memory_trend or memory_anomaly. No exclusions, prerequisites, or context are provided; usage must be inferred entirely from the name and content list.
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, the description must carry the behavioral burden. It states that the tool produces CSV and config artifacts and what data categories are included, which is useful. It does not explicitly confirm that memory is not modified, nor does it mention permissions or side effects, so it is only partially transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no filler: verb, object, format, content scope, and purpose are all present. It is easy to scan and every phrase contributes.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter export tool with no annotations and no output schema, one sentence gives only the high-level context. The schema covers parameter names and some descriptions, and the description covers output format and purpose, but config structure, return behavior, and side effects remain unspecified. It is adequate but has clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%, so parameter semantics are only partially compensated. The description groups parameters into monitoring metrics, control means, and regulatory red lines, which maps roughly to the required schema fields. It does not explain the optional parameters or add meaningful details beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the operation (导出/export), the output artifacts (DataLens-format CSV and config), and the intended purpose (visualization optimization analysis). It is distinguishable from the memory_* sibling tools by the export action, though it does not explicitly name a closest sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The final clause '用于可视化优化分析' implies the tool should be used when visualization-oriented optimization analysis is needed, which is reasonable context. It does not state when not to use it or name an alternative, so the usage guidance is implied rather than explicit.
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 behavioral burden. It communicates a read/compute behavior by saying it returns a before/after mean change, but it does not explicitly state that the operation is non-destructive, how the before/after boundary is determined, or whether any special permissions or data requirements apply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core concept and result. It contains no filler, repeats no parameter names unnecessarily, and is easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four parameters, no output schema, and no annotations, a single-sentence description is thin. The agent is not told the shape of the returned value, how to interpret 'mean change,' how the causal calculation is scoped, or when to prefer this over sibling tools. This leaves important operational and selection context missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% because only `window` has a description. The prose partially compensates by explaining `verb` as an action and `entity.metric` as a metric, but it does not describe valid values or the relationship between `window` and the before/after computation. Thus it adds some meaning beyond the bare schema but does not fully compensate for the low coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific analytical purpose: measuring the causal impact of an action (verb) on a metric (entity.metric) and returning the mean change before vs. after the action. This clearly differentiates the tool from siblings like memory_trend and memory_anomaly by emphasizing causality and before/after comparison.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when the caller wants the causal effect of an action on a metric. However, it does not explicitly list alternatives, exclusion criteria, or prerequisites such as needing pre-existing action history, so the agent must infer usage context from the tool name and 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 of behavioral disclosure. It indicates a write operation (storing an event) but does not explain persistence semantics, duplicate handling, idempotency, permissions, failures, or what an agent should expect after invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single dense sentence that front-loads the core operation and then captures the event semantics without filler. Every part contributes to understanding what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the schema fully documents all parameters, the description is adequate for basic invocation. However, with no output schema, no annotations, and write-side behavior, it stops short of fully covering behavioral expectations and routing to sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds relational meaning by composing actor, verb, and object into a sentence and clarifying that amount is a control quantity. This goes beyond the individual parameter descriptions in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific operation (store an action event) and gives the event model: actor performs verb on object, optionally with amount and metadata. This clearly distinguishes it from a sibling like memory_store_state, which stores state rather than actions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The wording makes it clear that this tool is for action events, but it never explicitly says when to use this instead of memory_store_state or other siblings. The intended usage is implied by the action-event phrasing and sibling names, but no explicit exclusions or alternative-routing guidance 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
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Xplore-LAB/dsh-plugin-asmemory'
If you have feedback or need assistance with the MCP directory API, please join our Discord server