diff --git a/src/README.md b/src/README.md
index cf52829..d30742f 100644
--- a/src/README.md
+++ b/src/README.md
@@ -282,7 +282,7 @@
 * key: sessions (array of ints), value: array of SIDs
 * key: filters (array of strings with same index order as sessions), value: array of XPath (with "prefix" = module name) values of target node in schema (start with '/') or module names (do not start with '/')
 
-In module query, the top-nodes array includes only nodes that can appear in data or some descendant can (container, choice, leaf, leaflist, list, anyxml).
+In module query, the top-nodes array includes only nodes that can appear in data or some descendant can (container, choice, leaf, leaflist, list, anyxml). The rpcs array contains all RPCs defined in the module.
 
 Optional:
 
diff --git a/src/netopeerguid.c b/src/netopeerguid.c
index 69b2f3c..fc2397f 100644
--- a/src/netopeerguid.c
+++ b/src/netopeerguid.c
@@ -1013,7 +1013,7 @@
 static void
 node_metadata_model(const struct lys_module *module, json_object *parent)
 {
-    json_object *obj, *array, *item;
+    json_object *obj, *array, *array2, *item;
     const struct lys_node *node;
     int i;
 
@@ -1078,22 +1078,34 @@
         json_object_object_add(parent, "includes", array);
     }
 
-    /* top-nodes */
+    /* top-nodes and RPCs */
     node = NULL;
     array = NULL;
+    array2 = NULL;
     while ((node = lys_getnext(node, NULL, module, LYS_GETNEXT_WITHCHOICE))) {
-        if (node->nodetype & (LYS_RPC | LYS_NOTIF)) {
+        if (node->nodetype == LYS_NOTIF) {
             continue;
         }
-        if (!array) {
-            array = json_object_new_array();
+        if (node->nodetype == LYS_RPC) {
+            if (!array2) {
+                array2 = json_object_new_array();
+            }
+            item = json_object_new_string(node->name);
+            json_object_array_add(array2, item);
+        } else {
+            if (!array) {
+                array = json_object_new_array();
+            }
+            item = json_object_new_string(node->name);
+            json_object_array_add(array, item);
         }
-        item = json_object_new_string(node->name);
-        json_object_array_add(array, item);
     }
     if (array) {
         json_object_object_add(parent, "top-nodes", array);
     }
+    if (array2) {
+        json_object_object_add(parent, "rpcs", array2);
+    }
 }
 
 /**
