5.9 The update_memory_batch tool

Updates up to MAX_BATCH_SIZE (default 200) memories in a single call. The embedding provider is invoked once per batch for the items that supply new text; items that change only metadata (tags, importance, freshness) don’t call the embedder at all, so a bulk tag-normalization pass is cheap.

Strongly prefer this over calling update_memory repeatedly when correcting several memories at once.

5.9.1 Inputs

items

Required array. Each item is a partial update_memory payload: id required, plus at least one of text, tags, importance, expires_at, last_confirmed_at.

dry_run

Boolean. Optional, default false. When true, validate every item and report which fields would change, but make no writes.

5.9.2 Output

{
  "ok": true,
  "dry_run": false,
  "results": [
    { "input_index": 0, "id": 41, "ok": true,
       "changed_fields": ["tags"], "message": "Ok" },
    { "input_index": 1, "id": 42, "ok": false,
       "error": { "code": "NOT_FOUND",
                  "message": "Memory 42 not found." } }
  ],
  "summary": { "total": 2, "updated": 1, "errors": 1 }
}

Per-item failures (null id, unknown id, secret rejected, embedding failure on a single text) do not fail the rest of the batch.

5.9.3 Errors

Batch-level: INVALID_INPUT (empty list, over 200 items), LIMIT_EXCEEDED. Per-item errors appear inside results.