Skip to main content
Glama

Maindex Expert Memory Service

memory_update

Update an existing memory by creating a new revision (full history is preserved). Supports changing kind, canon_status, confidence, and verification_status in-place. Mutates. Tags and conversations are additive. Retryable — duplicate calls create extra revisions but do not corrupt data. Returns the updated memory with id and shortId. SOFT-DELETE RESTORE: If the target memory is soft-deleted (status deleted), any successful update revives it (status becomes active) and sets restoredFromDeleted: true on the response — this is the supported undelete path besides POST /v1/memories/:id/restore. SUPERSESSION CLEANUP: Setting canon_status to 'accepted' on a memory that has a supersededBy pointer will automatically clear that pointer and remove any superseded_by links — this restores the memory to canonical status without stale supersession artifacts. To clear supersededBy without changing canon_status, pass superseded_by: null explicitly. CONTENT POLICY: NEVER store passwords, API keys, secrets, credit card numbers, SSNs, government IDs, medical/health records (PHI/HIPAA), biometric data, or any legally protected PII.

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>"
    },
    "name": "memory_update"
  }
}

Input Schema

NameRequiredDescriptionDefault
bodyNoNew body text
kindNoChange the memory kind
modeNoHow to apply the update
tagsNoTags to add (additive)
signerNoAgent identity -- who wrote this. Required fields: agent_id, run_id.
contentNoAlias for body — some agent SDKs send content instead of body
headlineNoNew headline text
metadataNoArbitrary key-value metadata stored on the revision (not merged into the memory). Opaque to search and ranking.
replacesNoMark as replacing another memory, or pass null to clear
memory_idYesID of the memory to update
collectionNoTarget team collection slug for within-team collection move. Requires a team-namespaced memory_id.
confidenceNoConfidence as an integer percentage from 0 to 100 (e.g. 85 means 85% confident)
append_modeNoAlias for mode
canon_statusNoSet canon status: draft, proposed, accepted, deprecated, alternative, meta
conversationsNoConversation contexts to add (additive)
superseded_byNoMark as superseded by another memory, or pass null to clear an existing supersession pointer
source_memory_idsNoIDs of memories this revision was derived from
human_collaboratorNoHuman collaborator context (name, email, timezone, etc.)
verification_statusNoVerification status: unverified, verified, disputed, superseded

Output Schema

NameRequiredDescriptionDefault
idYesUUID of the memory
bodyYesMemory body content
kindNoMemory type
tagsYesTags attached to the memory
statusNoMemory status
shortIdYesHuman-friendly short ID (mem-*)
headlineYesMemory headline
metadataYesUser-provided metadata
createdAtYesISO 8601 creation timestamp
updatedAtYesISO 8601 last-update timestamp
confidenceNoConfidence percentage (0-100)
canonStatusNoCanon status
collectionsYesCollections containing this memory
verificationStatusNoVerification status
restoredFromDeletedNoTrue when this update revived a soft-deleted memory (status was deleted, now active)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Well beyond the annotations, it discloses that full history is preserved, that duplicate calls create extra revisions without corrupting data (consistent with idempotentHint=false), that tags and conversations are additive rather than replacing, that a soft-deleted memory is silently revived with restoredFromDeleted: true, and that setting canon_status 'accepted' clears supersession pointers. The content policy adds an explicit prohibition boundary the annotations cannot express. Nothing here contradicts readOnlyHint=false or destructiveHint=false.

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?

Long but disciplined: it front-loads the core mutation and revision semantics, then groups secondary behavior under labeled blocks (SOFT-DELETE RESTORE, SUPERSESSION CLEANUP, CONTENT POLICY). Each block addresses a distinct decision an agent must make, and the retryability note is a single compact sentence.

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 19-parameter mutation tool with nested signer and conversation objects, the description covers the highest-risk semantics (history, restore, supersession, content restrictions) and an output schema exists so return values need not be spelled out. Gaps remain around the mode enum's practical selection and the collection-move precondition, both of which rest on schema text alone.

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 description coverage is 100%, so the baseline is 3; the description earns above that by explaining cross-parameter behavior the schema cannot — that tags and conversations are additive, and that superseded_by: null is the explicit pointer-clearing mechanism while canon_status 'accepted' clears it as a side effect. It leaves mode/append_mode selection and the collection move constraint to the schema.

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 first sentence names a specific verb and resource ('Update an existing memory by creating a new revision') and clarifies the revision semantics that distinguish it from a naive in-place write. It further enumerates the in-place mutable fields (kind, canon_status, confidence, verification_status), letting an agent separate this from siblings like memory_supersede or memory_bulk_update without opening the schema.

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 gives clear conditions for specific paths: soft-deleted targets are revived by any successful update, which it identifies as the supported undelete path alongside the restore endpoint, and it explains how to clear supersededBy (set canon_status 'accepted' or pass superseded_by: null). It does not, however, route the agent between this tool and siblings such as memory_supersede or memory_bulk_update, nor does it advise when to prefer body_append over body_replace.

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