Skip to main content
Glama

memory_add_batch

Store multiple memories at once. Same rules as memory_add, applied per item.

SHAPE: one ITEM here == one memory_add call. Same field names, same meaning. The ONLY difference is the container: memory_add takes them as flat parameters, this takes a list of objects. An item object belongs in the "memories" array and NOWHERE else -- never paste one into a text field such as memory_add(content=) or memory_edit(content=).

BEFORE params, per memory decide: (1) TYPE? (2) what search finds it? (3) happened, or aspirational? Each: atomic, front-loaded, self-contained -- subject + WHY in sentence 1, stands alone. GOOD {"content": "User prefers tabs in Python and JS -- consistency across codebase", "topics": ["user", "tabs", "python", "javascript"], "macro_topics": ["style"], "type": "preference"} BAD {"content": "Prefers tabs", "topics": ["formatting"]} (no subject, unsearchable) aspirational (not yet done) -> add topic "aspirational". topics: search words, single lowercase, no _ or -. First "user" for preferences. task -> title + steps[] (milestones), or content with "- [ ]". task_done when complete.

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": {
      "memories": "<memories>"
    },
    "name": "memory_add_batch"
  }
}

Input Schema

NameRequiredDescriptionDefault
forceNoSkip dup check. Testing only.
signalNoAlso signal recipient with ALL stored ids. Needs a SHARED collection ("me"/personal rejected up-front — nothing stored).
memoriesYesArray of memory objects to store
collectionNoShared collection by name. Omit=default. "me"/"personal"/agent name=own namespace; "owner"/"parent"=account primary (member-gated).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, destructiveHint=false and idempotentHint=false, so safety is largely covered. The description adds real behavioral context beyond that: a duplicate check exists (skippable only via force, "testing only"), rules apply atomically per item, the server renders a markdown blob for tasks, and signal requires a shared collection. What it does not disclose is what happens on partial failure mid-batch or what identifiers come back.

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 SHAPE, then a per-item decision procedure, then field rules — a deliberate and scannable order. Some sentences duplicate schema descriptions (topics as single lowercase search words) and the SHAPE block is longer than strictly needed. No filler or repetition that would confuse the agent, but it is not maximally tight.

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 batch write tool with four top-level params, one required, and no output schema, the description covers the important decisions: item shape, sanitisation of topics, task vs fact modelling, and the shared-collection precondition for signal. Gaps are the per-item failure mode (does one bad item abort the batch?) and what the call returns when signal is omitted — with no output schema, those are the agent's real unknowns.

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 bar for additional meaning is high, and much of the description's field guidance (topics, macro_topics, type, task title/steps) restates schema descriptions. What it genuinely adds is ordering and intent: decide type and macro_topics per item before writing, first topic "user" for preferences, "aspirational" for not-yet-done items, and the GOOD/BAD contrast showing what makes content searchable. That is useful but overlapping with the schema rather than compensating for a gap.

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?

"Store multiple memories at once. Same rules as memory_add, applied per item." gives a specific verb (store), resource (memories) and scope (batch), and explicitly positions the tool against the sibling memory_add by naming the only difference (container vs flat params). An agent can distinguish memory_add_batch from memory_add without opening either 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?

The SHAPE section makes the selection condition clear (multiple memories in one call, one item == one memory_add call) and includes an explicit mis-use warning: never paste an item into memory_add(content=) or memory_edit(content=). It also gives a pre-call decision checklist and routing rules for aspirational items and tasks. It stops short of an explicit "use memory_add instead when you only have one memory" statement, but the context is unambiguous.

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