Files
memory-gateway/skill/memory-gateway-agent/references/api.md

5.6 KiB

Memory Gateway API Reference

Contents

  • Configuration
  • Session IDs
  • CLI commands
  • Message format
  • Search scopes
  • Errors and result handling

Configuration

The CLI reads:

Variable Default Purpose
MEMORY_GATEWAY_BASE_URL http://127.0.0.1:8010 Gateway URL
MEMORY_GATEWAY_USER_ID none Authenticated user ID
MEMORY_GATEWAY_USER_KEY none Authenticated user key
MEMORY_GATEWAY_TIMEOUT_SECONDS 120 HTTP timeout

Global CLI flags --base-url, --user-id, --user-key, and --timeout override these values. Put global flags before the subcommand.

Session IDs

Memory source Format
Chat chat:{conversation_id}
Uploaded resource resource:{user_id}:{resource_id}
Manual correction memory_edit:{user_id}

Use the exact session_id returned by the API whenever possible.

CLI Commands

Assume:

CLI="python skill/memory-gateway-agent/scripts/memory_gateway.py"

Health

$CLI health

No credentials required. HTTP 200 may contain "status": "degraded" when upstream memory service is unavailable.

Create User

$CLI create-user u_123

Returns a randomly generated user_key. Store it securely. Repeating the same user_id returns the existing key.

Upload Resource

$CLI upload-resource ./document.pdf \
  --app-id default \
  --project-id default \
  --title "Document title" \
  --description "Optional description"

Requires credentials. Supported resources depend on the server MIME allowlist. Success returns:

{
  "resource_id": "r_xxx",
  "session_id": "resource:u_123:r_xxx",
  "uri": "resource://u_123/r_xxx",
  "status": "extracted"
}

failed means the record exists but upstream memory service ingestion failed. Identical active content for the same user/app/project may return the existing resource.

List, Get, and Delete Resources

$CLI list-resources
$CLI get-resource r_xxx
$CLI delete-resource r_xxx

Missing or foreign resource details return {"resources": []}. Delete excludes the resource from future resources searches.

$CLI search "payment terms" --scope resources --top-k 8
$CLI search "previous discussion" \
  --scope current_chat \
  --conversation-id c_456
$CLI search "known preferences" --scope all_user_memory

Repeat --scope to combine scopes:

$CLI search "query" --scope current_chat --scope resources \
  --conversation-id c_456

When no scope is provided, the CLI searches resources only unless a conversation ID is supplied; with a conversation ID it searches current_chat and resources. Explicit current_chat scope requires --conversation-id.

Each result includes normalized id, session_id, text, source_scope, and optional resource metadata. The raw field preserves the upstream memory service response.

Add and Flush Memory

Create /tmp/messages.json containing an array:

[
  {
    "sender_id": "u_123",
    "role": "user",
    "timestamp": 1781172177000,
    "content": [
      {"type": "text", "text": "Remember this note"}
    ]
  }
]

Then run:

$CLI add-memory --session-id chat:c_456 --messages /tmp/messages.json
$CLI flush-memory --session-id chat:c_456

--messages accepts either a JSON array string or a path to a JSON file. Always flush after all messages for the session have been added.

Override and Delete Memory

Use IDs from a search result:

$CLI override-memory mem_abc \
  --session-id resource:u_123:r_xxx \
  --text "Corrected memory text"

$CLI delete-memory mem_abc \
  --session-id resource:u_123:r_xxx \
  --reason "User requested deletion"

These operations write Gateway overrides or tombstones. They do not modify upstream memory service files directly. The server rejects sessions not owned by the authenticated user.

Message Format

Each message requires:

Field Type Notes
sender_id string Usually the current user ID
role string user, assistant, or tool
timestamp integer Unix milliseconds, greater than zero
content string or array Text or upstream memory service content items

Common content items:

{"type": "text", "text": "Plain text"}
{
  "type": "image",
  "base64": "BASE64_DATA",
  "ext": "png",
  "name": "image.png"
}
{
  "type": "audio",
  "base64": "BASE64_DATA",
  "ext": "wav",
  "name": "audio.wav"
}

Prefer base64 for local binary files. A file:// URI is only usable when upstream memory service can access the same filesystem path.

Search Scopes

Scope Behavior
current_chat Searches chat:{conversation_id}; provide --conversation-id
resources Searches extracted, non-deleted resources belonging to the user/app/project
all_user_memory Searches user memory without a session filter

Use the narrowest scope that answers the request. This reduces unrelated results and prevents accidental cross-context use.

Errors and Result Handling

The CLI exits nonzero and writes JSON to stderr:

{"error": "Memory Gateway returned HTTP 401: invalid user credentials"}

Common statuses:

Status Meaning
401 Invalid user_id or user_key
403 Memory session is not owned by the user
404 Resource not found for deletion
413 Upload exceeds server size limit
415 MIME type is not allowed
422 Request fields are invalid or missing

Do not retry 401, 403, 413, 415, or 422 without changing the request. Retry connectivity or transient server failures only when appropriate for the caller's workflow.