Skip to main content
Glama
engram
by TushaeBXN

engram_link

Record how two stored memories relate: 'memory_id target_id'. based_on: target is evidence for memory. derived_from: memory was inferred from target. contradicts: they conflict, undecided. supersedes: memory replaces target.

Instructions

Record how two stored memories relate: 'memory_id target_id'. based_on: target is evidence for memory. derived_from: memory was inferred from target. contradicts: they conflict, undecided. supersedes: memory replaces target. undo=true removes the link. Safe to retry.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "memory_id": "<memory_id>",
      "relation": "<relation>",
      "target_id": "<target_id>"
    },
    "name": "engram_link"
  }
}

Input Schema

NameRequiredDescriptionDefault
undoNo
reasonNo
relationYes
memory_idYes
target_idYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.10.5

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does deliver: 'undo=true removes the link' discloses reversibility, and 'Safe to retry' declares idempotency, both beyond what the schema says. It omits failure behavior (nonexistent or duplicate links) and any permission requirements.

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

Conciseness4/5

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

Front-loaded with the core action, then a compact relation glossary, then the undo/retry notes. No filler sentences, though the '<relation>' notation is slightly cryptic and 'they conflict, undecided' is a touch vague for a glossary entry.

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 mutation tool with no annotations, no output schema, and zero schema descriptions, the description covers the essentials an agent needs: directionality, relation semantics, undo, and retry safety. The unexplained 'reason' parameter and unstated error/precondition behavior are the main residual gaps.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does for most of the tool: it documents the directionality of memory_id vs target_id and defines all four relation enum values semantically. It never mentions the optional 'reason' parameter, leaving one of five params entirely unexplained.

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 specific verb and resource ('Record how two stored memories relate') and even gives the link shape 'memory_id <relation> target_id'. It does not distinguish itself from siblings like engram_supersede or engram_dispute, which overlap in intent.

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 relation definitions implicitly tell the agent which relation to pick, which is useful guidance. But there is no explicit when-to-use-this-vs-engram_supersede/engram_dispute routing, and no stated preconditions (e.g., both memories must already exist).

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