agenticmemory

Persistent memory for AI agents — history, context, semantic search, queues. 46 tools, stdio/SSE.

Should I use this

Quality & Safety

A
Description quality
92%
Schema completeness
96%
Naming quality
82%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (5)

  • LOWTool 'memory_store' description lacks action verbin memory_store
  • LOWTool 'memory_store_batch' description lacks action verbin memory_store_batch
  • LOWTool 'memory_clear' description lacks action verbin memory_clear
  • LOWTool 'state_set' description lacks action verbin state_set
  • LOWTool 'queue_nack' description lacks action verbin queue_nack

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~8,026Tokens (tool definitions)
~1.6 KBTypical response size
Significant attention impact (6.27% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "agenticmemory": {
      "url": "https://mcp.agenticmemory.ai/sse"
    }
  }
}

Remote endpoints

https://mcp.agenticmemory.ai/ssesse

What it can do

Tool inventory

Tools (46)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🔴memory_store(spaceId, content, role)

Store a message in conversation history. Use for remembering what just happened.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "content": {
      "type": "string",
      "description": "Message content"
    },
    "role": {
      "type": "string",
      "description": "Role: user, assistant, system, tool (default: user)"
    }
  },
  "required": [
    "spaceId",
    "content"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "_id": {
      "type": "string",
      "description": "Message ID"
    },
    "spaceId": {
      "type": "string",
      "description": "Owning memory space ID"
    },
    "role": {
      "type": "string",
      "description": "Message role: user, assistant, system, or tool"
    },
    "content": {
      "type": "string",
      "description": "Message text"
    },
    "seq": {
      "type": "number",
      "description": "Monotonic sequence number within the space"
    },
    "metadata": {
      "type": "object",
      "description": "Optional caller-supplied metadata"
    },
    "createdAt": {
      "type": "string",
      "description": "ISO 8601 creation timestamp"
    }
  }
}
🔴memory_store_batch(spaceId, messages)

Store multiple messages at once.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "messages": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "role": {
            "type": "string"
          },
          "content": {
            "type": "string"
          }
        }
      },
      "description": "Array of {role, content} messages"
    }
  },
  "required": [
    "spaceId",
    "messages"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "messages": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "_id": {
            "type": "string",
            "description": "Message ID"
          },
          "spaceId": {
            "type": "string",
            "description": "Owning memory space ID"
          },
          "role": {
            "type": "string",
            "description": "Message role: user, assistant, system, or tool"
          },
          "content": {
            "type": "string",
            "description": "Message text"
          },
          "seq": {
            "type": "number",
            "description": "Monotonic sequence number within the space"
          },
          "metadata": {
            "type": "object",
            "description": "Optional caller-supplied metadata"
          },
          "createdAt": {
            "type": "string",
            "description": "ISO 8601 creation timestamp"
          }
        }
      },
      "description": "The stored messages"
    }
  },
  "required": [
    "messages"
  ]
}
🟢memory_recall(spaceId, limit, before)

Recall recent messages from conversation history. Returns newest first.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "limit": {
      "type": "number",
      "description": "Number of messages to return (default: 20)"
    },
    "before": {
      "type": "string",
      "description": "Cursor: return messages before this message ID"
    }
  },
  "required": [
    "spaceId"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "messages": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "_id": {
            "type": "string",
            "description": "Message ID"
          },
          "spaceId": {
            "type": "string",
            "description": "Owning memory space ID"
          },
          "role": {
            "type": "string",
            "description": "Message role: user, assistant, system, or tool"
          },
          "content": {
            "type": "string",
            "description": "Message text"
          },
          "seq": {
            "type": "number",
            "description": "Monotonic sequence number within the space"
          },
          "metadata": {
            "type": "object",
            "description": "Optional caller-supplied metadata"
          },
          "createdAt": {
            "type": "string",
            "description": "ISO 8601 creation timestamp"
          }
        }
      },
      "description": "Recalled messages, newest first"
    },
    "encrypted": {
      "type": "boolean",
      "description": "True if the space is end-to-end encrypted (content is ciphertext)"
    }
  },
  "required": [
    "messages"
  ]
}
🔴memory_clear(spaceId)

Clear all messages in a memory space.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    }
  },
  "required": [
    "spaceId"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "cleared": {
      "type": "boolean",
      "description": "True when messages were cleared"
    }
  },
  "required": [
    "cleared"
  ]
}
🟢memory_search(spaceId, query, limit, tags, scope, ...)

Semantic search across past conversations. Finds by meaning, not keywords.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "query": {
      "type": "string",
      "description": "Natural language search query"
    },
    "limit": {
      "type": "number",
      "description": "Max results (default: 10)"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Filter by tags"
    },
    "scope": {
      "type": "string",
      "description": "Search scope: all | messages | entries | entities"
    },
    "includeEntities": {
      "type": "boolean",
      "description": "Include entity matches in results"
    }
  },
  "required": [
    "spaceId",
    "query"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "description": "Matching entries ranked by semantic relevance",
      "items": {
        "type": "object",
        "properties": {
          "_id": {
            "type": "string",
            "description": "Matched entry ID"
          },
          "title": {
            "type": "string",
            "description": "Entry title"
          },
          "content": {
            "type": "string",
            "description": "Entry body"
          },
          "score": {
            "type": "number",
            "description": "Relevance score (higher is closer)"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        }
      }
    },
    "count": {
      "type": "number",
      "description": "Number of results returned"
    }
  },
  "required": [
    "results",
    "count"
  ]
}
🔴context_set(spaceId, key, value, ttl)

Set a key-value context entry. Stores structured data (JSON or string).

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "key": {
      "type": "string",
      "description": "Context key name"
    },
    "value": {
      "description": "Value to store (string, number, object, array)"
    },
    "ttl": {
      "type": "number",
      "description": "Optional TTL in seconds"
    }
  },
  "required": [
    "spaceId",
    "key",
    "value"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "description": "The key that was set"
    },
    "value": {
      "description": "The stored value (string, number, object, or array)"
    }
  },
  "required": [
    "key"
  ]
}
🟢context_get(spaceId, key)

Get a context value by key.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "key": {
      "type": "string",
      "description": "Context key name"
    }
  },
  "required": [
    "spaceId",
    "key"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "description": "The requested key"
    },
    "value": {
      "description": "The stored value (string, number, object, or array)"
    },
    "encrypted": {
      "type": "boolean",
      "description": "True if the space is end-to-end encrypted (value is ciphertext)"
    }
  },
  "required": [
    "key"
  ]
}
🟢context_list(spaceId)

List all context keys and values in a space.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    }
  },
  "required": [
    "spaceId"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "context": {
      "type": "object",
      "description": "Map of every context key to its stored value"
    },
    "encrypted": {
      "type": "boolean",
      "description": "True if the space is end-to-end encrypted (values are ciphertext)"
    }
  },
  "required": [
    "context"
  ]
}
🔴context_delete(spaceId, key)

Delete a context key.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "key": {
      "type": "string",
      "description": "Context key to delete"
    }
  },
  "required": [
    "spaceId",
    "key"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "deleted": {
      "type": "boolean",
      "description": "True when the key was deleted"
    }
  },
  "required": [
    "deleted"
  ]
}
🟢entries_list(spaceId, limit, tags)

List long-term memory entries. Filter by tags.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "limit": {
      "type": "number",
      "description": "Max entries (default: 20)"
    },
    "tags": {
      "type": "string",
      "description": "Comma-separated tags to filter by"
    }
  },
  "required": [
    "spaceId"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "entries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "_id": {
            "type": "string",
            "description": "Entry ID"
          },
          "title": {
            "type": "string",
            "description": "Entry title"
          },
          "content": {
            "type": "string",
            "description": "Entry body"
          },
          "type": {
            "type": "string",
            "description": "Entry type: extraction, summary, decision, or artifact"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Tags for filtering"
          },
          "createdAt": {
            "type": "string",
            "description": "ISO 8601 creation timestamp"
          }
        }
      },
      "description": "Matching long-term entries"
    },
    "encrypted": {
      "type": "boolean",
      "description": "True if the space is end-to-end encrypted (content is ciphertext)"
    }
  },
  "required": [
    "entries"
  ]
}
🟢spaces_list

List all memory spaces owned by this API key.

Input Schema

{
  "type": "object",
  "properties": {}
}

Output Schema

{
  "type": "object",
  "properties": {
    "spaces": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "_id": {
            "type": "string",
            "description": "Space ID (use as spaceId in other tools)"
          },
          "name": {
            "type": "string",
            "description": "Human-readable space name"
          },
          "slug": {
            "type": "string",
            "description": "URL-safe slug"
          },
          "config": {
            "type": "object",
            "description": "Space configuration (TTLs, limits, encoding)"
          },
          "usage": {
            "type": "object",
            "description": "Usage counters (message count, etc.)"
          },
          "createdAt": {
            "type": "string",
            "description": "ISO 8601 creation timestamp"
          }
        }
      },
      "description": "Every memory space owned by the caller"
    }
  },
  "required": [
    "spaces"
  ]
}
🔴spaces_create(name, slug)

Create a new memory space.

Input Schema

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "Space name"
    },
    "slug": {
      "type": "string",
      "description": "URL-safe slug"
    }
  },
  "required": [
    "name",
    "slug"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "space": {
      "type": "object",
      "properties": {
        "_id": {
          "type": "string",
          "description": "Space ID (use as spaceId in other tools)"
        },
        "name": {
          "type": "string",
          "description": "Human-readable space name"
        },
        "slug": {
          "type": "string",
          "description": "URL-safe slug"
        },
        "config": {
          "type": "object",
          "description": "Space configuration (TTLs, limits, encoding)"
        },
        "usage": {
          "type": "object",
          "description": "Usage counters (message count, etc.)"
        },
        "createdAt": {
          "type": "string",
          "description": "ISO 8601 creation timestamp"
        }
      }
    }
  },
  "required": [
    "space"
  ]
}
🔴queue_push(spaceId, queue, envelope)

Enqueue a JSON envelope onto a FIFO queue in a memory space. Use to send work/events to other agents sharing the space.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "queue": {
      "type": "string",
      "description": "Queue name (lowercase alphanumeric plus . _ : -, max 64 chars)"
    },
    "envelope": {
      "type": "object",
      "description": "JSON envelope to enqueue (opaque to the server)"
    }
  },
  "required": [
    "spaceId",
    "queue",
    "envelope"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "queued": {
      "type": "boolean",
      "description": "True when the envelope was enqueued"
    },
    "queue": {
      "type": "string",
      "description": "Queue name"
    },
    "length": {
      "type": "number",
      "description": "Queue length after the push"
    }
  },
  "required": [
    "queued",
    "queue",
    "length"
  ]
}
🔴queue_pop(spaceId, queue, wait)

Dequeue the oldest envelope from a FIFO queue (returns null if empty). Set wait (max 25s) to long-poll for the next envelope.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "queue": {
      "type": "string",
      "description": "Queue name"
    },
    "wait": {
      "type": "number",
      "description": "Long-poll seconds, 0-25 (default: 0 = return immediately)"
    }
  },
  "required": [
    "spaceId",
    "queue"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "queue": {
      "type": "string",
      "description": "Queue name"
    },
    "item": {
      "type": [
        "object",
        "null"
      ],
      "description": "The dequeued envelope, or null if the queue was empty"
    },
    "empty": {
      "type": "boolean",
      "description": "True when the queue was empty"
    },
    "encrypted": {
      "type": "boolean",
      "description": "True if the space is end-to-end encrypted (item is ciphertext)"
    }
  },
  "required": [
    "queue"
  ]
}
🟢queue_peek(spaceId, queue)

Peek at a queue without consuming: returns length and the head envelope.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "queue": {
      "type": "string",
      "description": "Queue name"
    }
  },
  "required": [
    "spaceId",
    "queue"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "queue": {
      "type": "string",
      "description": "Queue name"
    },
    "length": {
      "type": "number",
      "description": "Current queue length"
    },
    "head": {
      "type": [
        "object",
        "null"
      ],
      "description": "The head envelope without consuming it, or null if empty"
    }
  },
  "required": [
    "queue"
  ]
}
🟢memory_bootstrap(spaceId, entries, messages, query)

Load full context in one call: recent messages, entries, context, scratchpad. Run this at session start.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "entries": {
      "type": "number",
      "description": "Number of entries to include (default: 10)"
    },
    "messages": {
      "type": "number",
      "description": "Number of messages to include (default: 20)"
    },
    "query": {
      "type": "string",
      "description": "Semantic query for relevant entries"
    }
  },
  "required": [
    "spaceId"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "state": {
      "type": "object",
      "description": "Current working state for the space"
    },
    "activeThreads": {
      "type": "array",
      "description": "Active conversation threads"
    },
    "recentEntries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "_id": {
            "type": "string",
            "description": "Entry ID"
          },
          "title": {
            "type": "string",
            "description": "Entry title"
          },
          "content": {
            "type": "string",
            "description": "Entry body"
          },
          "type": {
            "type": "string",
            "description": "Entry type: extraction, summary, decision, or artifact"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Tags for filtering"
          },
          "createdAt": {
            "type": "string",
            "description": "ISO 8601 creation timestamp"
          }
        }
      },
      "description": "Most recent long-term entries"
    },
    "entities": {
      "type": "array",
      "description": "Known entities in the space"
    },
    "recentMessages": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "_id": {
            "type": "string",
            "description": "Message ID"
          },
          "spaceId": {
            "type": "string",
            "description": "Owning memory space ID"
          },
          "role": {
            "type": "string",
            "description": "Message role: user, assistant, system, or tool"
          },
          "content": {
            "type": "string",
            "description": "Message text"
          },
          "seq": {
            "type": "number",
            "description": "Monotonic sequence number within the space"
          },
          "metadata": {
            "type": "object",
            "description": "Optional caller-supplied metadata"
          },
          "createdAt": {
            "type": "string",
            "description": "ISO 8601 creation timestamp"
          }
        }
      },
      "description": "Most recent messages"
    },
    "shared": {
      "type": "object",
      "description": "Shared world context visible to all agents in the space"
    },
    "contextEncoding": {
      "type": "string",
      "description": "Context encoding mode (json or lln)"
    },
    "llnPrimer": {
      "type": "string",
      "description": "LLN primer mode (inline, system, or none)"
    },
    "encryption": {
      "type": "string",
      "description": "Encryption mode: none, managed, or e2e"
    },
    "semanticEntries": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "_id": {
            "type": "string",
            "description": "Entry ID"
          },
          "title": {
            "type": "string",
            "description": "Entry title"
          },
          "content": {
            "type": "string",
            "description": "Entry body"
          },
          "type": {
            "type": "string",
            "description": "Entry type: extraction, summary, decision, or artifact"
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Tags for filtering"
          },
          "createdAt": {
            "type": "string",
            "description": "ISO 8601 creation timestamp"
          }
        }
      },
      "description": "Entries matched by the optional semantic query"
    }
  }
}
🟢memory_bootstrap_batch(spaceId, keys, entities, semantic, query, ...)

Parallel bulk fetch: named context keys, entities, and optional semantic results in one call.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "keys": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Context keys to fetch"
    },
    "entities": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Entity names to fetch"
    },
    "semantic": {
      "type": "boolean",
      "description": "Include semantic search results"
    },
    "query": {
      "type": "string",
      "description": "Semantic query (with semantic=true)"
    },
    "entriesLimit": {
      "type": "number",
      "description": "Max entries to include"
    }
  },
  "required": [
    "spaceId"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴scratchpad_set(spaceId, data)

Set the scratchpad content for a memory space (ephemeral working memory).

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "data": {
      "description": "Scratchpad data (any JSON-serializable value)"
    }
  },
  "required": [
    "spaceId",
    "data"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🟢scratchpad_get(spaceId)

Get the scratchpad content from a memory space.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    }
  },
  "required": [
    "spaceId"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🟢spaces_get(spaceId)

Get a single memory space (config, usage counters).

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    }
  },
  "required": [
    "spaceId"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {
    "space": {
      "type": "object",
      "properties": {
        "_id": {
          "type": "string",
          "description": "Space ID (use as spaceId in other tools)"
        },
        "name": {
          "type": "string",
          "description": "Human-readable space name"
        },
        "slug": {
          "type": "string",
          "description": "URL-safe slug"
        },
        "config": {
          "type": "object",
          "description": "Space configuration (TTLs, limits, encoding)"
        },
        "usage": {
          "type": "object",
          "description": "Usage counters (message count, etc.)"
        },
        "createdAt": {
          "type": "string",
          "description": "ISO 8601 creation timestamp"
        }
      }
    }
  }
}
🟢space_export(spaceId)

Export all data in a space (all primitives, schema v2) as a restorable payload.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    }
  },
  "required": [
    "spaceId"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴space_import(spaceId, payload, mode)

Restore a space from an export payload. Mode: empty-only (default), merge, or replace.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Target memory space ID"
    },
    "payload": {
      "type": "object",
      "description": "Export payload (from space_export)"
    },
    "mode": {
      "type": "string",
      "enum": [
        "empty-only",
        "merge",
        "replace"
      ],
      "description": "Import mode (default empty-only)"
    }
  },
  "required": [
    "spaceId",
    "payload"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴entry(spaceId, action, entryId, title, content, ...)

Single-entry operations on the tagged/versioned journal: add, get, update, versions, restore.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "action": {
      "type": "string",
      "enum": [
        "add",
        "get",
        "update",
        "versions",
        "restore"
      ],
      "description": "Operation"
    },
    "entryId": {
      "type": "string",
      "description": "Entry ID (required for get/update/versions/restore)"
    },
    "title": {
      "type": "string",
      "description": "Entry title (add)"
    },
    "content": {
      "type": "string",
      "description": "Entry body (add/update)"
    },
    "type": {
      "type": "string",
      "description": "Entry type: extraction | summary | decision | artifact (add)"
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Tags (add/update)"
    },
    "source": {
      "type": "string",
      "description": "Source attribution (add/update)"
    },
    "reason": {
      "type": "string",
      "description": "Reason for the update (update)"
    },
    "version": {
      "type": "number",
      "description": "Version number to restore (restore)"
    }
  },
  "required": [
    "spaceId",
    "action"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴entries_add_batch(spaceId, entries)

Append multiple journal entries in one call.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "entries": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Array of {title, content, type?, tags?, source?} entries"
    }
  },
  "required": [
    "spaceId",
    "entries"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴entity(spaceId, action, name, role, knows, ...)

Entity (knowledge-graph node) operations: upsert (create), get, update, delete.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "action": {
      "type": "string",
      "enum": [
        "upsert",
        "get",
        "update",
        "delete"
      ],
      "description": "Operation"
    },
    "name": {
      "type": "string",
      "description": "Entity name"
    },
    "role": {
      "type": "string",
      "description": "Entity role (upsert)"
    },
    "knows": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Facts this entity knows (upsert/update)"
    },
    "doesNotKnow": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Facts this entity does NOT know (upsert/update)"
    }
  },
  "required": [
    "spaceId",
    "action",
    "name"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🟢entities_list(spaceId, namePrefix, knowsContains)

List entities in a memory space, optionally filtered.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "namePrefix": {
      "type": "string",
      "description": "Filter by name prefix"
    },
    "knowsContains": {
      "type": "string",
      "description": "Filter: entities that know this fact"
    }
  },
  "required": [
    "spaceId"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴thread(spaceId, action, threadId, name, status, ...)

Thread (conversation grouping) operations: create, get, update, delete.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "action": {
      "type": "string",
      "enum": [
        "create",
        "get",
        "update",
        "delete"
      ],
      "description": "Operation"
    },
    "threadId": {
      "type": "string",
      "description": "Thread ID (required for get/update/delete)"
    },
    "name": {
      "type": "string",
      "description": "Thread name (create/update)"
    },
    "status": {
      "type": "string",
      "description": "Thread status (update)"
    },
    "summary": {
      "type": "string",
      "description": "Thread summary (update)"
    },
    "metadata": {
      "type": "object",
      "description": "Metadata (create)"
    }
  },
  "required": [
    "spaceId",
    "action"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🟢threads_list(spaceId, status)

List threads in a memory space, optionally filtered by status.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "status": {
      "type": "string",
      "description": "Filter by status"
    }
  },
  "required": [
    "spaceId"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🟢state_get(spaceId)

Get a space's single JSON state snapshot.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    }
  },
  "required": [
    "spaceId"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴state_set(spaceId, state)

Replace a space's single JSON state snapshot.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "state": {
      "type": "object",
      "description": "The full state object (replaces existing)"
    }
  },
  "required": [
    "spaceId",
    "state"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴shared_memory(spaceId, action, key, value, ttl)

Shared world-memory (one-write, all-see) operations: set, get, list, delete.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "action": {
      "type": "string",
      "enum": [
        "set",
        "get",
        "list",
        "delete"
      ],
      "description": "Operation"
    },
    "key": {
      "type": "string",
      "description": "Shared key (required for set/get/delete)"
    },
    "value": {
      "description": "Value to set (set)"
    },
    "ttl": {
      "type": "number",
      "description": "TTL in seconds (set)"
    }
  },
  "required": [
    "spaceId",
    "action"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴queue_lease(spaceId, queue, visibilitySeconds, wait)

Non-destructive lease (at-least-once): take the oldest envelope with a visibility timeout. Returns {item, leaseToken, deadline}. Ack with queue_ack, requeue with queue_nack.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "queue": {
      "type": "string",
      "description": "Queue name"
    },
    "visibilitySeconds": {
      "type": "number",
      "description": "Visibility timeout before auto-requeue"
    },
    "wait": {
      "type": "number",
      "description": "Long-poll seconds, 0-25 (default 0)"
    }
  },
  "required": [
    "spaceId",
    "queue"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴queue_ack(spaceId, queue, leaseToken)

Acknowledge a leased envelope (deletes it permanently).

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "queue": {
      "type": "string",
      "description": "Queue name"
    },
    "leaseToken": {
      "type": "string",
      "description": "Lease token from queue_lease"
    }
  },
  "required": [
    "spaceId",
    "queue",
    "leaseToken"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴queue_nack(spaceId, queue, leaseToken)

Negative-acknowledge a leased envelope (requeues it to the tail).

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "queue": {
      "type": "string",
      "description": "Queue name"
    },
    "leaseToken": {
      "type": "string",
      "description": "Lease token from queue_lease"
    }
  },
  "required": [
    "spaceId",
    "queue",
    "leaseToken"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴queue_dlq(spaceId, queue, action, envelope, reason, ...)

Dead-letter queue operations: push a failed envelope, or list DLQ items.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "queue": {
      "type": "string",
      "description": "Queue name"
    },
    "action": {
      "type": "string",
      "enum": [
        "push",
        "list"
      ],
      "description": "Operation"
    },
    "envelope": {
      "type": "object",
      "description": "Envelope to dead-letter (push)"
    },
    "reason": {
      "type": "string",
      "description": "Failure reason (push)"
    },
    "limit": {
      "type": "number",
      "description": "Max items (list)"
    },
    "offset": {
      "type": "number",
      "description": "Offset (list)"
    }
  },
  "required": [
    "spaceId",
    "queue",
    "action"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴stream_append(spaceId, stream, data, maxlen)

Append an entry to a stream (XADD). Returns the entry ID.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "stream": {
      "type": "string",
      "description": "Stream name"
    },
    "data": {
      "type": "object",
      "description": "Entry data (flat object)"
    },
    "maxlen": {
      "type": "number",
      "description": "Approximate max stream length (trim)"
    }
  },
  "required": [
    "spaceId",
    "stream",
    "data"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🟢stream_read(spaceId, stream, start, end, count, ...)

Ranged read from a stream (XRANGE/XREVRANGE).

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "stream": {
      "type": "string",
      "description": "Stream name"
    },
    "start": {
      "type": "string",
      "description": "Start ID (default -)"
    },
    "end": {
      "type": "string",
      "description": "End ID (default +)"
    },
    "count": {
      "type": "number",
      "description": "Max entries"
    },
    "reverse": {
      "type": "boolean",
      "description": "Read newest-first (XREVRANGE)"
    }
  },
  "required": [
    "spaceId",
    "stream"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🟢stream_info(spaceId, stream)

Stream info: length and consumer groups (XLEN + XINFO GROUPS).

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "stream": {
      "type": "string",
      "description": "Stream name"
    }
  },
  "required": [
    "spaceId",
    "stream"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴stream_delete(spaceId, stream)

Delete a stream entirely (hot + durable) — irreversible.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "stream": {
      "type": "string",
      "description": "Stream name"
    }
  },
  "required": [
    "spaceId",
    "stream"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴stream_group(spaceId, stream, action, group, from, ...)

Consumer-group operations on a stream: create, destroy, read (XREADGROUP), ack (XACK), pending (XPENDING), claim (XCLAIM/XAUTOCLAIM).

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "stream": {
      "type": "string",
      "description": "Stream name"
    },
    "action": {
      "type": "string",
      "enum": [
        "create",
        "destroy",
        "read",
        "ack",
        "pending",
        "claim"
      ],
      "description": "Operation"
    },
    "group": {
      "type": "string",
      "description": "Consumer group name"
    },
    "from": {
      "type": "string",
      "description": "Start position for create (default $ = new entries only, use 0 for all)"
    },
    "consumer": {
      "type": "string",
      "description": "Consumer name (read/pending/claim)"
    },
    "count": {
      "type": "number",
      "description": "Max entries (read/pending/claim)"
    },
    "waitSeconds": {
      "type": "number",
      "description": "Long-poll seconds ≤25 (read)"
    },
    "ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Entry IDs (ack/claim)"
    },
    "minIdleMs": {
      "type": "number",
      "description": "Min idle ms before claim (claim)"
    },
    "start": {
      "type": "string",
      "description": "Autoclaim scan start (claim)"
    }
  },
  "required": [
    "spaceId",
    "stream",
    "action",
    "group"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴kv_hash(spaceId, name, action, fields, field, ...)

Hash operations (Redis-hash semantics, write-through durable): set, get (whole hash), keys, get_field, del_field, delete, setnx (atomic set-if-absent), cas (atomic compare-and-set).

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "name": {
      "type": "string",
      "description": "Hash name"
    },
    "action": {
      "type": "string",
      "enum": [
        "set",
        "get",
        "keys",
        "get_field",
        "del_field",
        "delete",
        "setnx",
        "cas"
      ],
      "description": "Operation"
    },
    "fields": {
      "type": "object",
      "description": "Fields to set (set)"
    },
    "field": {
      "type": "string",
      "description": "Single field (get_field/del_field/setnx/cas)"
    },
    "value": {
      "description": "Value (setnx/cas)"
    },
    "expected": {
      "description": "Expected current value (cas — omit to require absent)"
    },
    "deleteField": {
      "type": "boolean",
      "description": "CAS: delete the field instead of setting (cas)"
    }
  },
  "required": [
    "spaceId",
    "name",
    "action"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴kv_string(spaceId, name, action, value, ttlSeconds)

String operations with optional TTL (survives rebuild): set, get (includes remaining ttlMs), delete.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "name": {
      "type": "string",
      "description": "String key name"
    },
    "action": {
      "type": "string",
      "enum": [
        "set",
        "get",
        "delete"
      ],
      "description": "Operation"
    },
    "value": {
      "type": "string",
      "description": "Value to set (set)"
    },
    "ttlSeconds": {
      "type": "number",
      "description": "TTL in seconds (set)"
    }
  },
  "required": [
    "spaceId",
    "name",
    "action"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴kv_set(spaceId, name, action, members, member)

Set operations (Redis-set semantics): add, members (with size), contains, remove, delete.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "name": {
      "type": "string",
      "description": "Set name"
    },
    "action": {
      "type": "string",
      "enum": [
        "add",
        "members",
        "contains",
        "remove",
        "delete"
      ],
      "description": "Operation"
    },
    "members": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Members (add/remove)"
    },
    "member": {
      "type": "string",
      "description": "Single member (contains)"
    }
  },
  "required": [
    "spaceId",
    "name",
    "action"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🟢usage_get

Get current usage vs plan limits for the authenticated tenant.

Input Schema

{
  "type": "object",
  "properties": {}
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴webhook(spaceId, action, url, events, filter, ...)

Per-space webhook subscriptions: create, list, delete.

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "action": {
      "type": "string",
      "enum": [
        "create",
        "list",
        "delete"
      ],
      "description": "Operation"
    },
    "url": {
      "type": "string",
      "description": "Webhook URL (create)"
    },
    "events": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Event types to subscribe to (create)"
    },
    "filter": {
      "type": "object",
      "description": "Event filter (create)"
    },
    "secret": {
      "type": "string",
      "description": "Signing secret (create)"
    },
    "hookId": {
      "type": "string",
      "description": "Webhook ID (delete)"
    }
  },
  "required": [
    "spaceId",
    "action"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}
🔴knowledge(spaceId, action, name, slug, description, ...)

Knowledge-base operations: create (with documents), list, delete, query (smart retrieval).

Input Schema

{
  "type": "object",
  "properties": {
    "spaceId": {
      "type": "string",
      "description": "Memory space ID"
    },
    "action": {
      "type": "string",
      "enum": [
        "create",
        "list",
        "delete",
        "query"
      ],
      "description": "Operation"
    },
    "name": {
      "type": "string",
      "description": "KB name (create)"
    },
    "slug": {
      "type": "string",
      "description": "KB slug (create/query)"
    },
    "description": {
      "type": "string",
      "description": "KB description (create)"
    },
    "documents": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "Documents to index (create)"
    },
    "kbId": {
      "type": "string",
      "description": "KB ID (delete/query)"
    },
    "query": {
      "type": "string",
      "description": "Query text (query)"
    },
    "limit": {
      "type": "number",
      "description": "Max results (query)"
    }
  },
  "required": [
    "spaceId",
    "action"
  ]
}

Output Schema

{
  "type": "object",
  "properties": {}
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded46 tools
verifiedversion not recorded17 tools