diff --git a/astakosclient/astakosclient/__init__.py b/astakosclient/astakosclient/__init__.py
index 50e297106dd711e88d26bd516f60e3ed30ad32dd..141b83df8f1a2a948647ac3b5dba96c1c2232def 100644
--- a/astakosclient/astakosclient/__init__.py
+++ b/astakosclient/astakosclient/__init__.py
@@ -804,13 +804,15 @@ class AstakosClient(object):
 
     # ----------------------------
     # do a GET to ``API_PROJECTS``
-    def get_projects(self, name=None, state=None, owner=None):
+    def get_projects(self, name=None, state=None, owner=None, mode=None):
         """Retrieve all accessible projects
 
         Arguments:
         name  -- filter by name (optional)
         state -- filter by state (optional)
         owner -- filter by owner (optional)
+        mode  -- if value is 'member', return only active projects in which
+                 the request user is an active member
 
         In case of success, return a list of project descriptions.
         """
@@ -821,6 +823,8 @@ class AstakosClient(object):
             filters["state"] = state
         if owner is not None:
             filters["owner"] = owner
+        if mode is not None:
+            filters["mode"] = mode
         req_headers = {'content-type': 'application/json'}
         req_body = (parse_request({"filter": filters}, self.logger)
                     if filters else None)
diff --git a/astakosclient/docs/index.rst b/astakosclient/docs/index.rst
index a945b2f6c761ee91a2bdf93370bc06226a8d77b0..21a62b4e9181a81138fc15b9d33472abad1eaa22 100644
--- a/astakosclient/docs/index.rst
+++ b/astakosclient/docs/index.rst
@@ -189,7 +189,7 @@ retry=0, use_pool=False, pool_size=8, logger=None\ **)**
         rejected and which failed to resolved. Otherwise raise an
         AstakosClientException exception.
 
-    **get_projects(**\ name=None, state=None, owner=None\ **)**
+    **get_projects(**\ name=None, state=None, owner=None, mode=None\ **)**
         Retrieve all accessible projects
 
     **get_project(**\ project_id\ **)**
diff --git a/snf-astakos-app/astakos/api/projects.py b/snf-astakos-app/astakos/api/projects.py
index 479ffd3a5870bf868544638b6929db93549148b1..c1589f2182b20a061b82b5d2b77c2a3363c65b32 100644
--- a/snf-astakos-app/astakos/api/projects.py
+++ b/snf-astakos-app/astakos/api/projects.py
@@ -281,23 +281,33 @@ def get_projects(request):
     user = request.user
     input_data = read_json_body(request, default={})
     filters = input_data.get("filter", {})
+    mode = input_data.get("mode", "default")
     query = make_project_query(filters)
-    projects = _get_projects(query, request_user=user)
+    projects = _get_projects(query, mode=mode, request_user=user)
     data = get_projects_details(projects, request_user=user)
     return json_response(data)
 
 
-def _get_projects(query, request_user=None):
+def _get_projects(query, mode="default", request_user=None):
     projects = Project.objects.filter(query)
 
-    if not request_user.is_project_admin():
-        membs = request_user.projectmembership_set.any_accepted()
+    if mode == "member":
+        membs = request_user.projectmembership_set.\
+            actually_accepted_and_active()
         memb_projects = membs.values_list("project", flat=True)
         is_memb = Q(id__in=memb_projects)
-        owned = Q(owner=request_user)
-        active = (Q(state=Project.NORMAL) &
-                  Q(private=False))
-        projects = projects.filter(is_memb | owned | active)
+        projects = projects.filter(is_memb)
+    elif mode == "default":
+        if not request_user.is_project_admin():
+            membs = request_user.projectmembership_set.any_accepted()
+            memb_projects = membs.values_list("project", flat=True)
+            is_memb = Q(id__in=memb_projects)
+            owned = Q(owner=request_user)
+            active = (Q(state=Project.NORMAL) &
+                      Q(private=False))
+            projects = projects.filter(is_memb | owned | active)
+    else:
+        raise faults.BadRequest("Unrecognized mode '%s'." % mode)
     return projects.select_related("last_application")
 
 
diff --git a/snf-astakos-app/astakos/im/models.py b/snf-astakos-app/astakos/im/models.py
index 4a6249017f5c40fdfeebbdf72cab7ba40c77f151..47c922eebc13f45a810048afaac4dc2b617cd1eb 100644
--- a/snf-astakos-app/astakos/im/models.py
+++ b/snf-astakos-app/astakos/im/models.py
@@ -1892,6 +1892,11 @@ class ProjectMembershipManager(models.Manager):
             q &= Q(project__in=projects)
         return self.filter(q)
 
+    def actually_accepted_and_active(self):
+        q = self.model.Q_ACTUALLY_ACCEPTED
+        q &= Q(project__state=Project.NORMAL)
+        return self.filter(q)
+
     def initialized(self, projects=None):
         q = Q(initialized=True)
         if projects is not None: