Skip to main content
Glama

Maindex Expert Memory Service

This connector has been deprecated

Replaced by Maindex Expert Memory Service.

Duplicate entry

memory_associate

Create typed links between memories (inverse links auto-created for known types). Mutates. Not idempotent — calling twice creates duplicate links. Returns the created link objects with id and shortId. Common relation types: belongs_to, supports, depends_on, contradicts, alternative_to, expands, derived_from, example_of, supersedes. SOFT-DELETED: Does not target soft-deleted memories — source and targets must be active (status not deleted) or the call fails with memory_not_found. This tool does not restore deleted rows; use memory_update first if you need to undelete. To remove links, use the separate tool memory_unassociate (not this one).

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": {
      "from_memory_id": "<from_memory_id>",
      "targets": "<targets>"
    },
    "name": "memory_associate"
  }
}

Input Schema

NameRequiredDescriptionDefault
signerNoAgent identity -- who wrote this. Required fields: agent_id, run_id.
targetsYesTarget memories to link to
from_memory_idYesSource memory ID

Output Schema

NameRequiredDescriptionDefault
linksYesCreated link objects

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=false and idempotentHint=false, but the description goes well beyond them: inverse links are auto-created for known types, a second call creates duplicate links, and calls against soft-deleted memories fail with memory_not_found. That is exactly the failure-mode and side-effect detail an agent needs before mutating graph state.

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 purpose, then mutation semantics, then constraints, then sibling routing — a sensible order with no filler. Minor waste: "Mutates. Not idempotent." largely restates readOnlyHint=false and idempotentHint=false, and the SOFT-DELETED paragraph is slightly repetitive in its two sentences.

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

Completeness5/5

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

Covers purpose, side effects, duplicate risk, failure conditions, relation types, and return shape (link objects with id and shortId) even though an output schema exists. For a nested-object mutation tool with three parameters, nothing important is left for the agent to infer.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline would be 3; however the description adds real meaning the schema lacks by enumerating common relation_type values (belongs_to, supports, depends_on, contradicts, supersedes, etc.), which the schema leaves as an unconstrained free-text string. It does not explain inverse-link pairing per type or weight semantics, keeping it below 5.

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?

Opens with a specific verb+resource: "Create typed links between memories." It immediately distinguishes itself from memory_unassociate ("To remove links, use the separate tool memory_unassociate (not this one)"), so an agent can pick the right sibling without inspecting schemas.

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?

Gives explicit when-not guidance and routes to alternatives: removal goes to memory_unassociate, restoring soft-deleted rows goes to memory_update first. It also states the precondition that source and targets must be active, which is the condition that selects a different tool path.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources