diff --git a/phy/cluster/manual/session.py b/phy/cluster/manual/session.py
index <HASH>..<HASH> 100644
--- a/phy/cluster/manual/session.py
+++ b/phy/cluster/manual/session.py
@@ -61,6 +61,15 @@ class BaseSession(EventEmitter):
 
         return func
 
+    @property
+    def actions(self):
+        """List of registered actions."""
+        return self._actions
+
+    def execute_action(self, action, *args, **kwargs):
+        """Execute an action defined by an item in the 'actions' list."""
+        action['func'](*args, **kwargs)
+
 
 #------------------------------------------------------------------------------
 # Store items
diff --git a/phy/cluster/manual/tests/test_session.py b/phy/cluster/manual/tests/test_session.py
index <HASH>..<HASH> 100644
--- a/phy/cluster/manual/tests/test_session.py
+++ b/phy/cluster/manual/tests/test_session.py
@@ -118,6 +118,10 @@ def test_action():
     session.my_action()
     assert _track == ['action']
 
+    assert session.actions == [{'func': my_action, 'title': 'My action'}]
+    session.execute_action(session.actions[0])
+    assert _track == ['action', 'action']
+
 
 def test_action_event():
     session = BaseSession()
Added actions property in session. Closes #<I>.