Skip to main content
Glama
tinhien11

tdai-memory-mcp

by tinhien11

tdai-memory-mcp → remem-mcp

This package has been renamed to remem-mcp.

Migrate

npx remem-mcp setup

Your existing memory.db is preserved — same SQLite file, same path (~/.local/share/remem-mcp/memory.db).

Related MCP server: Memryzed

What changed

  • Package name: tdai-memory-mcpremem-mcp

  • Env vars: TDAI_*REMEM_*

  • Everything else stays the same: same tools, same DB, same hooks

Available Tools

7 tools
adrA

Record an Architecture Decision Record (ADR). Use this tool when you make a technical decision that future agents should know about. The ADR is stored as a structured capture and can be recalled by any agent working on the same project.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional tags for filtering. Example: ['arch', 'storage'].
titleYesA short title for the decision. Example: 'Use SQLite for local storage'.
contextYesThe problem or situation that requires a decision. Why is this decision needed?
task_idNoThe task ID. Use this to isolate memory by a specific task. Link captures to a task for finer isolation.
team_idNoThe team ID. Use this to isolate memory by team. When set, all queries filter by this value.
user_idNoThe user ID. Use this to isolate memory by user within a team. When set with team_id, queries filter by both.
agent_idNoThe agent ID. Use this to isolate memory by agent role within a team. Defaults to the detected agent.
decisionYesThe decision that was made. What was chosen?
session_keyNoThe session key. The default is hash(cwd).
alternativesNoOther options that were considered but rejected. Include why each was rejected.
consequencesNoThe consequences of this decision. What are the trade-offs, risks, and benefits?

TDQS

A4/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 burden. It discloses that the ADR is stored as a structured capture and can be recalled by any agent on the same project. However, it does not clarify whether the tool creates a new record each time, whether it overwrites existing records, or any side effects like memory isolation when team_id/task_id are used. The description offers some context but not complete behavioral transparency.

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 three sentences, each earning its place: the first names the action, the second provides a usage condition, and the third explains storage and sharing. It is front-loaded and free of redundant wording, making it 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.

Completeness4/5

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

The tool has a moderate complexity with 11 parameters and 3 required, but the description includes the key context: what the tool does, when to use it, and how the resulting data is used (recallable). It does not explicitly link to related tools like recall or capture, but the phrase 'can be recalled' hints at the ecosystem. The absence of an output schema means no return-value explanation is needed, and the description covers the essential usage scenario.

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 all 11 parameters. The description does not add additional parameter-level meaning beyond what the schema provides. According to the guidelines, a baseline of 3 is appropriate when the schema covers all parameters.

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 records an Architecture Decision Record (ADR) with a specific verb ('Record') and resource ('Architecture Decision Record'). It also explains the purpose: 'when you make a technical decision that future agents should know about,' which distinguishes it from generic capture tools.

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 tells the agent when to use the tool: 'Use this tool when you make a technical decision that future agents should know about.' It does not mention alternatives or exclusions, but the condition is clear and actionable. The mention that ADRs are 'recalled by any agent' also sets expectations for use.

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

captureA

Save a decision, a learning, or a task outcome to memory. Call this tool after you complete a non-trivial task, make a decision, or fix a bug with a known root cause. You can capture a single text string, or a list of role-based conversation messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNoOptional tags.
typeYesThe type of the memory.
contentNoThe text to remember. The tool redacts secrets before it stores the text. Use this for a single message. Use 'messages' instead for a multi-turn conversation.
task_idNoThe task ID. Use this to isolate memory by a specific task. Link captures to a task for finer isolation.
team_idNoThe team ID. Use this to isolate memory by team. When set, all queries filter by this value.
user_idNoThe user ID. Use this to isolate memory by user within a team. When set with team_id, queries filter by both.
agent_idNoThe agent ID. Use this to isolate memory by agent role within a team. Defaults to the detected agent.
messagesNoA list of role-based conversation messages to capture. When set, 'content' is ignored. The tool flattens the messages into a single text for search, and stores the original messages for retrieval.
metadataNoOptional metadata.
verifiedNoSet this to true to mark the capture as verified. Verified captures rank higher in recall.
supersedesNoThe ID of a capture that this one replaces. The old capture is marked as stale and ranks lower.
session_keyNoThe session key. The default is hash(cwd).
override_rejectionNoSet this to true to force capture even if the content was previously rejected. Use this only when the rejection reason no longer applies.

TDQS

A4/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 burden of behavioral disclosure. It states the tool 'Save[s]... to memory' and mentions both single-text and message-list capture modes, but it doesn't describe side effects (e.g., superseding marks old captures stale) or return values. The minimal disclosure is viable but not rich, relying on the schema for deeper details.

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 sentences, front-loaded with purpose, and each sentence earns its place. It states what the tool does, when to use it, and the input modes without redundant words.

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 13 parameters and no output schema, but the comprehensive schema covers parameter meaning. The description supplies the crucial 'when to call' context and high-level input options. It doesn't state return values, but for a memory-capture tool this gap is acceptable given the schema's richness and the clear distinction from sibling tools.

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 all 13 parameters. The description adds conceptual grouping ('decision, learning, task outcome' align with the type enum and the content vs messages distinction) but doesn't introduce syntax or format details beyond the schema. This matches the baseline of 3 for high schema coverage.

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

Purpose5/5

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

The description opens with 'Save a decision, a learning, or a task outcome to memory,' which is a specific verb (Save) plus resource (memory). It clearly distinguishes the tool from sibling read/delete tools like recall, search, and forget, and enumerates concrete use cases for when to capture, such as after a non-trivial task or bug fix.

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?

'Call this tool after you complete a non-trivial task, make a decision, or fix a bug with a known root cause' provides explicit when-to-use triggers. It doesn't list alternatives or exclusions, but the context of sibling tools (recall/search/forget) makes the usage unambiguous, so a 4 is appropriate.

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

forgetA

Delete specific memory entries. Use this tool only when the user requests a deletion. Do not auto-forget.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoThe ID of the capture to delete.
filterNo
reasonNoThe reason for rejection. Required when reject is true. The agent stores this with the tombstone.
rejectNoSet this to true to reject the capture instead of deleting it. The capture is marked as rejected with a reason, and the same content cannot be captured again. Use this when the memory is wrong, not just outdated.
confirmNoSet this to true to execute the deletion.

TDQS

A3.9/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 behavioral burden. It only says 'Delete specific memory entries' and 'Do not auto-forget'; it fails to mention that deletion is permanent, requires confirm=true, or that reject mode creates a tombstone. This is a significant gap for a destructive mutation tool.

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

Conciseness5/5

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

The description is three short, front-loaded sentences with no filler. It delivers the core action and usage constraint efficiently.

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 complex with nested filters, reject/confirm semantics, and no output schema. The description is minimally viable but omits critical distinctions like delete vs reject and the permanent/destructive nature. The schema helps, but the description alone would not fully orient an agent.

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 80% and each parameter already has a detailed description (id, filter, reason, reject, confirm). The description adds no extra parameter semantics, so a baseline score of 3 is appropriate given the schema already does the heavy lifting.

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 deletes specific memory entries, providing a specific verb and resource. This distinguishes it from sibling tools like recall, search, and knowledge_delete.

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?

The description explicitly states when to use this tool ('only when the user requests a deletion') and when not to ('Do not auto-forget'). This is strong, unambiguous usage guidance even though it doesn't name specific alternative tools.

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

handoffA

Write a structured handoff packet for the next agent session. Call this tool at the end of a session, or before you switch to a different agent. The next agent calls recall to load this packet and continue without re-reading files. This saves 60-85% of tokens compared to re-discovering context.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskYesA one-line description of the task.
filesNoA list of files that matter for this task. Use the format: path:lines - reason.
statusYesThe current status of the task.
task_idNoThe task ID. Use this to isolate memory by a specific task. Link captures to a task for finer isolation.
team_idNoThe team ID. Use this to isolate memory by team. When set, all queries filter by this value.
user_idNoThe user ID. Use this to isolate memory by user within a team. When set with team_id, queries filter by both.
agent_idNoThe agent ID. Use this to isolate memory by agent role within a team. Defaults to the detected agent.
progressYesA summary of what has been done so far. Include the root cause if this is a bug fix.
decisionsNoA list of decisions made during this session. Include what was chosen and why.
next_stepsNoA list of next steps for the next agent. Order by priority.
session_keyNoThe session key. The default is hash(cwd).

TDQS

A4.2/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. It discloses that the tool writes a packet and that recall loads it, and notes token savings. However, it does not mention whether calling it repeatedly overwrites an existing packet, any persistence details, or prerequisites. This is moderate transparency but leaves some behavioral aspects implicit.

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 three sentences, each earning its place: purpose, timing, and consequence. It is short, front-loaded, and contains no wasteful or repetitive language.

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

Completeness4/5

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

For a tool with a rich schema and no output schema or annotations, the description is largely complete: it explains the tool's role and its relationship to recall. It could optionally mention the memory isolation fields or overwrite behavior, but given the high schema coverage, this is a minor gap.

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 description itself contains no parameter information, but the input schema covers all 11 parameters with descriptions and enum definitions. Since schema coverage is 100%, the baseline score of 3 applies; the description adds no extra parameter semantics beyond what the schema already provides.

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 'Write a structured handoff packet for the next agent session' with a specific verb and resource. It distinguishes itself from sibling tools by explicitly connecting to 'recall' as the load counterpart, making its role unique.

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?

It explicitly says 'Call this tool at the end of a session, or before you switch to a different agent' and explains that the next agent 'calls recall to load this packet', providing a clear usage scenario and naming the alternative tool. This leaves no doubt about when to use it.

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

recallA

Retrieve relevant past memory. Call this tool before you answer the user. Use it when the user references past work or when the task needs project context.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoThe search mode.hybrid
limitNoThe maximum number of results.
queryYesA natural language query. The tool uses this text for the BM25 search and the vector search.
offsetNoThe pagination offset. Use this to get the next page of results.
task_idNoThe task ID. Use this to isolate memory by a specific task. Link captures to a task for finer isolation.
team_idNoThe team ID. Use this to isolate memory by team. When set, all queries filter by this value.
user_idNoThe user ID. Use this to isolate memory by user within a team. When set with team_id, queries filter by both.
agent_idNoThe agent ID. Use this to isolate memory by agent role within a team. Defaults to the detected agent.
max_tokensNoThe maximum number of tokens in the response. If the result exceeds this value, the tool truncates the text.
session_keyNoThe session key. The default is hash(cwd). Use this to recall memory from a different project.

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 only says 'retrieve,' which implies a read-only operation, but it does not explicitly confirm non-destructiveness, describe what the results look like, or mention truncation or pagination behavior. The schema provides some technical details, but the description itself adds no behavioral context beyond 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.

Conciseness5/5

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

The description is extremely concise—two sentences—with the purpose front-loaded in the first sentence ('Retrieve relevant past memory') and usage guidance in the second. There is no redundant information or fluff; every word earns its place.

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 has 10 parameters, no output schema, and several similar siblings (e.g., 'search', 'related'). The description provides useful usage timing but does not describe the return format, how to use modes, or how this differs from 'search'. These gaps make it adequate but not fully complete for an agent to invoke with confidence.

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%, with every parameter having a meaningful description (e.g., mode, limit, offset, user_id). The baseline for such coverage is 3, and the tool description adds no additional parameter semantics. It neither compensates for gaps nor adds value beyond the schema, so the baseline score stands.

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 with a specific verb and resource: 'Retrieve relevant past memory.' This distinguishes it as a memory recall operation, but it does not explicitly differentiate it from sibling tools like 'search' or 'knowledge_get', so it earns a 4 rather than 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 Guidelines4/5

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

The description provides clear usage context: 'Call this tool before you answer the user' and 'Use it when the user references past work or when the task needs project context.' This gives strong contextual guidance, but it does not mention when not to use it or name alternative tools, so it falls 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.

resolveA

Resolve a conflict between two captures. Mark one as the winner and the other as stale. Call this tool when capture reports a conflict between two memories.

ParametersJSON Schema
NameRequiredDescriptionDefault
loserYesThe ID of the capture that is wrong or outdated. This capture is marked as stale.
reasonNoThe reason for the resolution. The agent stores this in the audit log.
winnerYesThe ID of the capture that is correct. This capture stays active.

TDQS

A3.7/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 full burden of behavioral disclosure. It states the core effect (mark one winner, one stale), but does not mention irreversibility, permissions, audit logging, or other side effects. The reason parameter's audit log behavior is only in the schema, not the description. This is a significant gap for a mutation 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 three sentences, front-loaded with the purpose, and lacks unnecessary filler. The second sentence about marking winner/stale clarifies the mechanism without being verbose. It earns a high score for conciseness and structure.

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 mutation tool with no output schema and 100% param coverage, the description plus schema provide a fairly complete picture: what it does, when to use it, and what happens to winner/loser. The lack of output schema doesn't matter. Minor ambiguity about 'capture reports a conflict' but it's understandable in context.

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 parameters are well-documented. The description does not add any parameter-specific meaning beyond the schema, but it doesn't need to. 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 clearly states the tool's purpose: 'Resolve a conflict between two captures.' It identifies the specific action (resolve), the resource (captures), and distinguishes itself from siblings like update or consolidate by focusing on conflict resolution between two captures.

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 the tool: 'Call this tool when capture reports a conflict between two memories.' This provides clear context, but it does not mention alternatives or exclusion cases. Thus it meets the criteria for 'clear context, no exclusions'.

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.

  1. 7 tool updatesv0.5.17
    • Removedknowledge_create
    • Removedknowledge_delete
    • Removedknowledge_get
    • Removedknowledge_list
    • Removedskill_get
    • Removedskill_list
    • Removedskill_search
  2. 14 tool updatesv0.3.2
    • Changedadr4 fields changed
      • addedInput schema / properties / agent_id
        Added value: +{
        +  "description": "The agent ID. Use this to isolate memory by agent role within a team. Defaults to the detected agent.",
        +  "type": "string"
        +}
      • addedInput schema / properties / task_id
        Added value: +{
        +  "description": "The task ID. Use this to isolate memory by a specific task. Link captures to a task for finer isolation.",
        +  "type": "string"
        +}
      • addedInput schema / properties / team_id
        Added value: +{
        +  "description": "The team ID. Use this to isolate memory by team. When set, all queries filter by this value.",
        +  "type": "string"
        +}
      • addedInput schema / properties / user_id
        Added value: +{
        +  "description": "The user ID. Use this to isolate memory by user within a team. When set with team_id, queries filter by both.",
        +  "type": "string"
        +}
    • Changedcapture10 fields changed
      • addedInput schema / properties / agent_id
        Added value: +{
        +  "description": "The agent ID. Use this to isolate memory by agent role within a team. Defaults to the detected agent.",
        +  "type": "string"
        +}
      • changedInput schema / properties / content / description
        Previous value: -"The text to remember. The tool redacts secrets before it stores the text."New value: +"The text to remember. The tool redacts secrets before it stores the text. Use this for a single message. Use 'messages' instead for a multi-turn conversation."
      • addedInput schema / properties / messages
        Added value: +{
        +  "description": "A list of role-based conversation messages to capture. When set, 'content' is ignored. The tool flattens the messages into a single text for search, and stores the original messages for retrieval.",
        +  "items": {
        +    "properties": {
        +      "content": {
        +        "description": "The message content.",
        +        "type": "string"
        +      },
        +      "role": {
        +        "description": "The role of the speaker: 'user' or 'assistant'.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "role",
        +      "content"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / override_rejection
        Added value: +{
        +  "default": false,
        +  "description": "Set this to true to force capture even if the content was previously rejected. Use this only when the rejection reason no longer applies.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / supersedes
        Added value: +{
        +  "description": "The ID of a capture that this one replaces. The old capture is marked as stale and ranks lower.",
        +  "type": "string"
        +}
      • addedInput schema / properties / task_id
        Added value: +{
        +  "description": "The task ID. Use this to isolate memory by a specific task. Link captures to a task for finer isolation.",
        +  "type": "string"
        +}
      • addedInput schema / properties / team_id
        Added value: +{
        +  "description": "The team ID. Use this to isolate memory by team. When set, all queries filter by this value.",
        +  "type": "string"
        +}
      • addedInput schema / properties / user_id
        Added value: +{
        +  "description": "The user ID. Use this to isolate memory by user within a team. When set with team_id, queries filter by both.",
        +  "type": "string"
        +}
      • addedInput schema / properties / verified
        Added value: +{
        +  "default": false,
        +  "description": "Set this to true to mark the capture as verified. Verified captures rank higher in recall.",
        +  "type": "boolean"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "content",
        -  "type"
        -]New value: +[
        +  "type"
        +]
    • Changedforget5 fields changed
      • addedInput schema / properties / filter / properties / task_id
        Added value: +{
        +  "description": "Delete captures linked to this task only.",
        +  "type": "string"
        +}
      • addedInput schema / properties / filter / properties / team_id
        Added value: +{
        +  "description": "Delete captures from this team only.",
        +  "type": "string"
        +}
      • addedInput schema / properties / filter / properties / user_id
        Added value: +{
        +  "description": "Delete captures from this user only.",
        +  "type": "string"
        +}
      • addedInput schema / properties / reason
        Added value: +{
        +  "description": "The reason for rejection. Required when reject is true. The agent stores this with the tombstone.",
        +  "type": "string"
        +}
      • addedInput schema / properties / reject
        Added value: +{
        +  "default": false,
        +  "description": "Set this to true to reject the capture instead of deleting it. The capture is marked as rejected with a reason, and the same content cannot be captured again. Use this when the memory is wrong, not just outdated.",
        +  "type": "boolean"
        +}
    • Changedhandoff4 fields changed
      • addedInput schema / properties / agent_id
        Added value: +{
        +  "description": "The agent ID. Use this to isolate memory by agent role within a team. Defaults to the detected agent.",
        +  "type": "string"
        +}
      • addedInput schema / properties / task_id
        Added value: +{
        +  "description": "The task ID. Use this to isolate memory by a specific task. Link captures to a task for finer isolation.",
        +  "type": "string"
        +}
      • addedInput schema / properties / team_id
        Added value: +{
        +  "description": "The team ID. Use this to isolate memory by team. When set, all queries filter by this value.",
        +  "type": "string"
        +}
      • addedInput schema / properties / user_id
        Added value: +{
        +  "description": "The user ID. Use this to isolate memory by user within a team. When set with team_id, queries filter by both.",
        +  "type": "string"
        +}
    • Addedknowledge_create
    • Addedknowledge_delete
    • Addedknowledge_get
    • Addedknowledge_list
    • Changedrecall4 fields changed
      • addedInput schema / properties / agent_id
        Added value: +{
        +  "description": "The agent ID. Use this to isolate memory by agent role within a team. Defaults to the detected agent.",
        +  "type": "string"
        +}
      • addedInput schema / properties / task_id
        Added value: +{
        +  "description": "The task ID. Use this to isolate memory by a specific task. Link captures to a task for finer isolation.",
        +  "type": "string"
        +}
      • addedInput schema / properties / team_id
        Added value: +{
        +  "description": "The team ID. Use this to isolate memory by team. When set, all queries filter by this value.",
        +  "type": "string"
        +}
      • addedInput schema / properties / user_id
        Added value: +{
        +  "description": "The user ID. Use this to isolate memory by user within a team. When set with team_id, queries filter by both.",
        +  "type": "string"
        +}
    • Addedresolve
    • Changedsearch3 fields changed
      • addedInput schema / properties / filters / properties / task_id
        Added value: +{
        +  "description": "Filter by task ID.",
        +  "type": "string"
        +}
      • addedInput schema / properties / filters / properties / team_id
        Added value: +{
        +  "description": "Filter by team ID.",
        +  "type": "string"
        +}
      • addedInput schema / properties / filters / properties / user_id
        Added value: +{
        +  "description": "Filter by user ID.",
        +  "type": "string"
        +}
    • Addedskill_get
    • Addedskill_list
    • Addedskill_search
  3. 6 tool updatesv0.2.0
    • First observedadr
    • First observedcapture
    • First observedforget
    • First observedhandoff
    • First observedrecall
    • First observedsearch

TDQS

A4/5.0

Scored across 7 tools

Disambiguation4/5

Most tools have clearly distinct purposes: recall for broad context, search for specific facts, capture for saving, resolve for conflicts, forget for deletion, handoff for session transfer, and adr for architecture decisions. The main overlap is between recall and search, but their descriptions clarify the difference (broad versus specific).

Naming Consistency4/5

Tool names are mostly single-word lowercase verbs (recall, capture, search, resolve, forget), which forms a predictable pattern. However, 'handoff' is a noun/phrasal verb and 'adr' is an acronym, creating minor deviations from the otherwise consistent verb style.

Tool Count5/5

With 7 tools, the set is well-scoped for a memory-management server. Each tool serves a distinct memory lifecycle function without unnecessary bloat or overlap.

Completeness4/5

The tool surface covers core memory operations: store (capture), retrieve (recall/search), delete (forget), conflict handling (resolve), plus specialized features (handoff, adr). A missing explicit 'update memory' tool is a minor gap, but capture can serve that role implicitly.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    A local-first MCP memory server providing persistent, searchable memory for AI agents, powered by SQLite.
    1 npm
    1
    Apache 2.0
  • F
    license
    Not graded
    quality
    C
    maintenance
    Local-first cross-agent memory for AI coding agents. Persistent, shared memory over MCP — what you tell one agent can be recalled by another — with all data stored in a single local SQLite file, no cloud and no API keys.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Persistent memory for AI coding agents. Enables agents to save and recall decisions, patterns, bugs, and context across sessions via an MCP server with local SQLite storage.
    14 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    A local memory server for AI agents that stores and retrieves information via MCP, keeping all data in SQLite on your machine.
    288 PyPI
    1
    Apache 2.0