Skip to main content
Glama

agentchat-memory

Warning: This project is experimental and under active development. APIs, protocols, and data formats may change without notice. Not recommended for production use.

Persistent memory plugin for AgentChat agents with swim-lane summarization and self-evolving persona.

Features

  • Swim-lane context management: Separate lanes for assistant/user/system messages

  • Progressive summarization: Compress older messages while keeping recent ones

  • Persona mining: Auto-extract roles, style, heuristics, goals from conversations

  • Weight decay: Persona facets strengthen or fade based on relevance

  • Two-tier prompts: Immutable base (mission) + evolvable normative defaults

Related MCP server: Mnemexa MCP

Installation

npm install @tjamescouch/agentchat-memory

Or add to Claude Code settings:

{
  "mcpServers": {
    "agentchat-memory": {
      "command": "npx",
      "args": ["-y", "@tjamescouch/agentchat-memory"]
    }
  }
}

MCP Tools

Tool

Description

memory_load

Load state on startup/resurrection

memory_save

Persist state to disk

memory_add_message

Add message to buffer

memory_get_context

Get full context for system prompt

memory_get_lane

Get lane content for summarization

memory_apply_summary

Apply summarized lane

memory_get_recent

Get recent messages for reflection

memory_apply_persona

Apply persona update

memory_status

Get memory status

memory_set_normative

Set normative policy block

Storage

State persisted to:

~/.agentchat/agents/{agent_id}/
├── memory.json      # Full state (persona, summaries, messages)
├── context.md       # Human-readable context
└── commandments.md  # Immutable base (if exists)

Architecture

┌─────────────────────────────────────────────────────────────────┐
│  BASE IDENTITY (immutable)                                       │
│  - Mission, commandments, core values                           │
├─────────────────────────────────────────────────────────────────┤
│  NORMATIVE POLICY (soft, evolvable)                              │
│  - Defaults that yield to user when safe                        │
├─────────────────────────────────────────────────────────────────┤
│  DYNAMIC PERSONA (auto-mined)                                    │
│  - roles: [{ text, weight }]                                    │
│  - style: [{ text, weight }]                                    │
│  - heuristics: [{ text, weight }]                               │
│  - goals / antigoals                                            │
├─────────────────────────────────────────────────────────────────┤
│  LANE SUMMARIES                                                  │
│  - Assistant: prior decisions, code edits, outcomes             │
│  - System: rules, constraints                                   │
│  - User: requests, feedback                                     │
├─────────────────────────────────────────────────────────────────┤
│  RECENT MESSAGES (raw, last N per lane)                          │
└─────────────────────────────────────────────────────────────────┘

Usage Example

// On agent startup
await memory_load({ agent_id: "God", base_prompt: "The eternal benevolent father..." });

// Get context for system prompt
const context = await memory_get_context({ agent_id: "God" });

// After each turn
await memory_add_message({ agent_id: "God", role: "user", content: "..." });

// Periodically or on shutdown
await memory_save({ agent_id: "God" });

Responsible Use

This software is experimental and provided as-is. It is intended for research, development, and authorized testing purposes only. Users are responsible for ensuring their use complies with applicable laws and regulations. Do not use this software to build systems that make autonomous consequential decisions without human oversight.

License

MIT

Available Tools

10 tools
memory_add_messageB

Add a message to the memory buffer for later summarization.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYes
contentYes
agent_idYes

TDQS

B3.1/5.0
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 a mutating action and that summarization is deferred, but does not mention buffer limits, persistence, whether older messages are evicted, auth requirements, or what the tool returns. For a write operation with no annotation coverage, this is a meaningful 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?

A single concise sentence that fronts the key verb and object, with a useful purpose clause. No filler or repetition of schema details.

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?

For a relatively simple tool, the description plus schema is minimally sufficient for basic invocation: an agent can see required fields and a role enum. However, missing usage guidance, behavioral consequences, and return value leave the definition only partially complete.

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 needed to compensate for undocumented parameters. It does not explain agent_id, role, or content. The schema's enum and property names are self-explanatory to some degree, but the description itself adds no parameter meaning beyond the word 'message.'

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 a specific verb ('add') and resource ('message to the memory buffer'), and clarifies the purpose ('for later summarization'). This is clear enough to distinguish the action from memory_load or memory_get_context, though it does not explicitly name or contrast sibling 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?

'For later summarization' implies this tool is for accumulating messages that will be summarized later, which gives some usage context. However, it does not state when to prefer this over memory_save, memory_apply_summary, or a direct summarization path, nor does it give any exclusion conditions.

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

memory_apply_personaC

Apply a persona update (from LLM persona mining).

ParametersJSON Schema
NameRequiredDescriptionDefault
updateYesPersonaUpdate with friction, confidence, and persona facets
agent_idYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing behavioral traits, but it only says 'apply' without stating whether this mutates persistent state, merges with existing persona data, overwrites previous values, or has side effects. It also does not mention whether an existing agent must exist or whether the update is validated. The write-like behavior is only implied by the verb.

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 one short sentence that is front-loaded with the action and resource. It contains no redundant filler, and the parenthetical is a compact way to convey the update's source. However, the extreme brevity does sacrifice clarity that other dimensions rely on.

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 two required parameters, a nested object, no output schema, no annotations, and nine sibling tools, this sparse description is not complete enough for an agent to confidently select and invoke the tool. Missing information includes side effects, return value, when to use vs apply_summary, and what constitutes a valid 'update' beyond a partial schema note. It is minimally functional but leaves substantial gaps.

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 50%, with the 'update' parameter documented as 'PersonaUpdate with friction, confidence, and persona facets', but 'agent_id' is left bare. The description adds a small amount of meaning by indicating the update originates from LLM persona mining, but it does not explain the relationship between agent_id and update or provide any additional parameter context beyond the schema.

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 an action ('apply') and a resource ('a persona update'), and the parenthetical 'from LLM persona mining' adds useful provenance. However, it is close to a restatement of the tool name and does not clarify what applying a persona update actually does to the stored agent memory. It distinguishes itself from apply_summary only by the word 'persona' without explaining the difference in effect.

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 parenthetical '(from LLM persona mining)' weakly implies when this tool is relevant: after persona mining has produced an update. But there is no explicit guidance about when to prefer this over sibling tools like memory_apply_summary, memory_save, or memory_load. The context is implied rather than stated.

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

memory_apply_summaryB

Apply a lane summary (after LLM summarization).

ParametersJSON Schema
NameRequiredDescriptionDefault
laneYes
summaryYes
agent_idYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are present, so the description carries the full burden. It never states whether applying a summary overwrites existing lane content, persists data, or has side effects on raw message history. The verb 'apply' implies mutation but discloses no behavioral consequence.

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 compact sentence with no filler, and the key action appears first. It is under-specified in other dimensions, but as a brevity/order check it is efficient and readable.

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?

With no output schema and no annotations, the description must supply behavior, return, and side-effect context; it supplies only purpose and timing. An agent would be uncertain whether this replaces a lane's messages or stores a separate summary, and what response to expect.

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%, and the description does not explain agent_id, the meaning of lane values, or the expected format of summary. The phrase 'lane summary' weakly maps to lane and summary, but it adds little beyond the schema property names.

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 a specific action (apply) and resource (lane summary), and the parenthetical clarifies it is the commit step after summarization. It is distinct from siblings like memory_get_lane or memory_save, though it does not explicitly name them.

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?

'After LLM summarization' provides a clear temporal/usage context for when the tool should be invoked. It does not enumerate exclusions or alternative sibling tools, but the condition is explicit enough for an agent to place it in the pipeline.

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

memory_get_contextA

Get the full rendered context for injection into system prompt.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYes

TDQS

A3.6/5.0
Behavior3/5

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

The verb 'Get' implies a read-only operation, and 'full rendered context' hints at the output being an assembled, prompt-ready value. However, with no annotations provided, the description carries the full burden and does not explicitly state that no memory is modified, nor describe output format, size, or failure 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?

A single sentence that front-loads the action and purpose, with no filler or repetition. Every word contributes to understanding what the tool does and why it exists.

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 is adequate for a simple one-parameter tool, but it leaves gaps: the role of agent_id is unexplained, the return type is only implied ('context' suggests a string but not explicitly), and there is no guidance relative to sibling memory tools. Since there is no output schema and no annotations, those omissions matter.

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%, and the description does not mention agent_id at all. It adds no meaning beyond the bare property name and type already visible in the input schema, so it fails to compensate for the complete lack of parameter documentation.

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 ('Get') and resource ('full rendered context') and clearly states the purpose ('for injection into system prompt'). This distinguishes it from sibling tools like memory_get_recent and memory_get_lane, which target narrower or different memory views.

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 phrase 'for injection into system prompt' provides a clear usage context: use this when you need the complete rendered memory context to embed into a system prompt. It does not explicitly mention when not to use it or name alternative sibling tools, so it stops short of a 5.

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

memory_get_laneB

Get messages from a lane for summarization by external LLM.

ParametersJSON Schema
NameRequiredDescriptionDefault
laneYes
agent_idYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. 'Get messages from a lane' clearly indicates a read-only retrieval and names the lane scoping, which is useful. However, it does not mention return shape, ordering, limits, or whether lane state is changed.

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?

A single sentence that fronts the action and resource, with no filler or repetition. It is appropriately concise for a simple retrieval tool.

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 tool is simple, but there are no annotations and no output schema. The description gives the core selection—lane—and the intent—external LLM summarization—yet it omits return expectations and does not guide the agent toward or away from sibling tools. It is minimally viable, not fully complete.

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 needed to compensate, but it only mentions 'a lane' and does not explain agent_id or the semantics of the enum values. The lane parameter is partially illuminated; agent_id remains under-documented.

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 names a specific operation—get—and a specific resource—messages in a lane—and adds the use context 'for summarization by external LLM.' It is clear about what the tool does, but it does not explicitly contrast itself with sibling retrieval tools like memory_get_context or memory_get_recent.

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 phrase 'for summarization by external LLM' implies a use case, but there is no explicit when-to-use versus when-not-to-use guidance or mention of alternatives. An agent must infer how this differs from other memory retrieval tools.

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

memory_get_recentB

Get recent messages for persona mining/reflection.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYes
max_messagesNo

TDQS

B3.1/5.0
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 behavioral disclosure burden. 'Get' clearly implies a read-only retrieval and 'recent messages' communicates the data scope. Still, the description does not state ordering, message scope, whether the operation is non-mutating, or any behavior around empty results.

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 short sentence, front-loaded with the action and resource. Every word contributes either to the tool's function or its intended use case, with no redundant filler.

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?

GPT-web: For a tool with no output schema, no annotations, and zero schema description coverage, the description is too minimal to make the tool reliably usable. It omits recentness semantics, output shape, parameter meaning, and any guidance versus sibling tools.

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%, and the description adds no parameter semantics at all. It never explains what agent_id means or how max_messages affects behavior, leaving the agent to infer everything from parameter names and defaults.

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 specific verb and resource: 'Get recent messages.' The intended purpose, 'for persona mining/reflection,' adds context and suggests a distinct use case. However, it does not explicitly differentiate itself from sibling tools like memory_get_context or memory_load.

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 phrase 'for persona mining/reflection' provides an implied usage context, showing when an agent might choose this tool. It does not, however, describe when not to use it or specify alternatives among the many memory_* siblings.

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

memory_loadA

Load memory state for an agent. Call on resurrection/startup.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesThe agent identifier (e.g., "God", "moderator")
base_promptNoImmutable base prompt (mission, commandments). Only used if no existing state.

TDQS

A3.5/5.0
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 does not state whether loading overwrites current in-memory state, whether it depends on a prior memory_save, or what happens when no saved state exists (the base_prompt behavior is only in the schema). This leaves meaningful ambiguity for a restore 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?

Two concise sentences that front-load the core action and the intended call timing. There is no filler or redundant restating of the tool name.

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?

Adequate for a simple startup/restore call when combined with the 100%-covered schema, but not complete: no output schema or annotations exist, and the description does not clarify restore semantics, relationship to memory_save, or distinguish this from the get_* siblings. A bit more behavioral context would make selection and invocation safer.

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 100%, so the schema already documents both parameters, including the conditional behavior of base_prompt. The description adds no parameter-level meaning, so the baseline of 3 applies.

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 specific action ('load') and target ('memory state for an agent'), and the resurrection/startup context gives a clear operational frame. It does not explicitly distinguish itself from siblings like memory_get_context or memory_get_recent, but 'load memory state' reads as a full-state restore rather than a scoped query.

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 explicitly tells the agent when to call this tool: on resurrection/startup. However, it does not mention when not to use it or name alternatives such as memory_get_context for normal runtime retrieval, so it misses the top tier.

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

memory_saveA

Save current memory state to disk. Call before shutdown or periodically.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYesThe agent identifier

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the full behavioral burden. It discloses the core behavior and recommended timing, but does not mention details like overwrite behavior, blocking vs async, or whether it returns a confirmation.

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 short sentences with no filler. The primary action is front-loaded and the usage guidance 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?

For a simple one-parameter save operation with no output schema, the description is largely complete: it states what happens and when to call it. Some minor context about persistence semantics could be added, but nothing essential is missing.

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 100%, so the schema already documents the single parameter. The description adds no additional parameter meaning, so the baseline score of 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 states a specific action ('Save'), a specific resource ('current memory state'), and a target ('to disk'), making the tool's purpose unmistakable. It also implies the contrast with sibling tools like memory_load without needing to name it.

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 gives clear usage guidance: 'Call before shutdown or periodically.' It does not explicitly mention exclusions or alternative tools, but the timing guidance is sufficient for this simple persistence operation.

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

memory_set_normativeC

Set the normative policy block (soft defaults, evolvable).

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYes
normativeYes

TDQS

C2.6/5.0
Behavior2/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 does indicate a write operation ('Set') and that the block is 'soft defaults, evolvable', but it does not state whether the existing block is overwritten, whether the change persists, or what downstream effects occur. This is minimal disclosure for a mutating tool.

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, front-loaded sentence with no filler, and the parenthetical is reasonably compact. But the brevity sacrifices definitional clarity, so it is not a perfect model.

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?

There are no annotations, no output schema, and zero schema description coverage, so the description must supply almost all context. It does not explain what a 'normative policy block' is, what values it accepts, or how it relates to the sibling memory tools. An agent cannot confidently call this tool correctly from the description alone.

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%, so the description needs to explain the two string parameters. It does not explain what agent_id refers to, what format normative should take, or how the 'normative policy block' maps to the normative parameter. The description adds no real parameter meaning beyond the schema's bare names.

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?

States a concrete verb and resource: 'Set the normative policy block.' The parenthetical ('soft defaults, evolvable') adds a bit of semantic context, and the resource distinguishes it from load/save/get siblings. However, 'normative policy block' remains jargon-heavy and is not defined, so it stops short of a 5.

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 gives no guidance about when to use this tool versus siblings like memory_save, memory_apply_persona, or memory_apply_summary. There is no mention of prerequisites, exclusions, or typical scenarios. The only clue is the tool name, not actual usage guidance.

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

memory_statusC

Get memory status: persona weights, lane sizes, token estimate.

ParametersJSON Schema
NameRequiredDescriptionDefault
agent_idYes

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are present, so the description carries the full burden. It does disclose the main output categories and 'Get' implies a non-mutating operation. However, it does not describe the return structure, whether the token estimate is approximate, or what happens if the agent_id is invalid or missing.

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 sentence with a front-loaded verb and a colon-separated list of three concrete outputs. There is no filler, repetition, or unnecessary detail.

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?

This is a simple one-parameter tool, and the description names the expected output domains, which is helpful. But with no output schema and no parameter explanation, an agent relying solely on the description lacks details about the return shape and the semantics of agent_id.

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%, and the description never mentions agent_id or what it identifies. The single required parameter's meaning is left entirely to the schema, which only says it is a string.

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 opens with a specific verb and resource ('Get memory status') and enumerates the status components: persona weights, lane sizes, token estimate. This distinguishes it from sibling content tools like memory_get_context or memory_get_recent, though it could be more explicit about how it differs from 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 Guidelines2/5

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

No guidance is provided about when to use this tool versus siblings such as memory_get_context, memory_get_lane, or memory_get_recent. There are no exclusions, triggers, or alternative conditions, leaving the agent to infer the appropriate use case entirely.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 10 tool updatesv0.1.0
    • First observedmemory_add_message
    • First observedmemory_apply_persona
    • First observedmemory_apply_summary
    • First observedmemory_get_context
    • First observedmemory_get_lane
    • First observedmemory_get_recent
    • First observedmemory_load
    • First observedmemory_save
    • First observedmemory_set_normative
    • First observedmemory_status

TDQS

A3.5/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: load/save manage persistence, add_message feeds buffer, get_context renders full context, get_lane pulls from a lane, apply_summary writes summaries, get_recent fetches recent messages for persona, apply_persona updates persona, status reports health, and set_normative sets policy. No two tools appear to overlap in function.

Naming Consistency5/5

All tools follow the prefix memory_ followed by a descriptive verb (load, save, add_message, get_context, get_lane, apply_summary, get_recent, apply_persona, status, set_normative). The pattern is consistent, with the only minor deviation being 'status' (a noun) but this is a common exception and does not break the overall predictability.

Tool Count5/5

10 tools is well within the ideal range for a memory management server. Each tool addresses a specific lifecycle or action (persistence, message ingestion, context retrieval, summarization, persona, status, policy) without redundancy, making the set appropriately scoped.

Completeness4/5

The tool surface covers the core memory lifecycle: load/save, add messages, get context, manage lanes and summaries, handle personas, and set normative policy. Minor gaps exist, such as no explicit clear/delete operations or direct retrieval of a single message, but these are easily worked around and do not break typical workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides AI agents with persistent, searchable memory that survives across conversations using semantic search, temporal versioning, and smart organization. Enables long-term context retention and cross-session continuity for AI assistants.
    14
    -
  • A
    license
    A
    quality
    D
    maintenance
    Provides persistent, self-optimizing memory for AI agents, enabling them to remember preferences and context across sessions and share knowledge across multiple agents.
    4
    15
    ISC
  • A
    license
    Not graded
    quality
    C
    maintenance
    Gives AI agents persistent memory, handoffs, and shared context across sessions, enabling seamless continuity and multi-agent collaboration.
    82
    69
    -

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/tjamescouch/agentchat-memory'

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