diff --git a/inc/lektor/commands.h b/inc/lektor/commands.h
index dc3f7b29cee98e561208d79510c067fa8d496509..440d6b10ac1221d4815445c701a0593ad5f05d44 100644
--- a/inc/lektor/commands.h
+++ b/inc/lektor/commands.h
@@ -51,6 +51,18 @@ bool command_swap   (struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]);
 bool command_swapid (struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]);
 bool command_flat   (struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX]);
 
+static inline bool
+command_add_1(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX])
+{
+    return command_add(srv, args, 1);
+}
+
+static inline bool
+command_add_5(struct lkt_state *srv, char *args[LKT_MESSAGE_ARGS_MAX])
+{
+    return command_add(srv, args, 1);
+}
+
 bool command_queue_list  (struct lkt_state *srv, size_t c, char *args[LKT_MESSAGE_ARGS_MAX]);
 bool command_queue_listid(struct lkt_state *srv, size_t c, char *args[LKT_MESSAGE_ARGS_MAX]);
 
diff --git a/src/net/listen.c b/src/net/listen.c
index a252d5176d675d3a1ef88cca866608f77d86f66d..14d81d806a3b9fc738c61307d3ad3923a063106b 100644
--- a/src/net/listen.c
+++ b/src/net/listen.c
@@ -33,6 +33,7 @@ typedef enum {
     /* Some common types of commands */
     LKT_COMMAND_SIMPLE,  /* srv, c, args      */
     LKT_COMMAND_INTEGER, /* srv, c, args, int */
+    LKT_COMMAND_ANON,    /* srv, args         */
 
     /* Some specialized types... */
 } LKT_COMMAND_TYPE;
@@ -155,6 +156,7 @@ cmd_trie_exec(struct cmd_trie_node *root, const char *signed_cmd_name, va_list *
         void (*base)(void);
         bool (*type_simple)(struct lkt_state *, size_t, char *[LKT_MESSAGE_ARGS_MAX]);
         bool (*type_int)(struct lkt_state *, size_t, char *[LKT_MESSAGE_ARGS_MAX], int);
+        bool (*type_anon)(struct lkt_state *, char *[LKT_MESSAGE_ARGS_MAX]);
     } cmd;
 
     cmd.base = node->cmd_ptr;
@@ -166,6 +168,11 @@ cmd_trie_exec(struct cmd_trie_node *root, const char *signed_cmd_name, va_list *
         args = (char **)va_arg(*args_list, char *[LKT_MESSAGE_MAX]);
         return cmd.type_simple(srv, c, args);
 
+    case LKT_COMMAND_ANON:
+        srv  = (struct lkt_state *)va_arg(*args_list, struct lkt_state *);
+        args = (char **)va_arg(*args_list, char *[LKT_MESSAGE_MAX]);
+        return cmd.type_anon(srv, args);
+
     case LKT_COMMAND_INTEGER:
         srv     = (struct lkt_state *)va_arg(*args_list, struct lkt_state *);
         c       = (size_t)va_arg(*args_list, size_t);
@@ -192,8 +199,9 @@ ___cmd_trie_print(struct cmd_trie_node *root, char *old_prefix, const size_t len
 
     /* A terminal node */
     case LKT_COMMAND_SIMPLE:
+    case LKT_COMMAND_ANON:
     case LKT_COMMAND_INTEGER:
-        LKT_OUTPUT("CMD_TRIE", "Got function in trie: %s (type: %d)", prefix, root->type);
+        LKT_OUTPUT("CMD_TRIE", "Got function of type %d in trie: %s", root->type, prefix);
         break;
     }
 
@@ -218,7 +226,52 @@ ___cmd_trie_init(void)
 {
     LOG_INFO("CMD_TRIE", "Init the command trie");
     cmd_trie_root = cmd_trie_new();
-    cmd_trie_insert(cmd_trie_root, "next", FUNCTION_POINTER(command_next), LKT_COMMAND_SIMPLE);
+
+    // clang-format off
+    cmd_trie_insert(cmd_trie_root, "currentsong",       FUNCTION_POINTER(command_currentsong),  LKT_COMMAND_SIMPLE);
+    cmd_trie_insert(cmd_trie_root, "status",            FUNCTION_POINTER(command_status),       LKT_COMMAND_SIMPLE);
+    cmd_trie_insert(cmd_trie_root, "stats",             FUNCTION_POINTER(command_stats),        LKT_COMMAND_SIMPLE);
+
+    cmd_trie_insert(cmd_trie_root, "next",              FUNCTION_POINTER(command_next),         LKT_COMMAND_SIMPLE);
+    cmd_trie_insert(cmd_trie_root, "previous",          FUNCTION_POINTER(command_previous),     LKT_COMMAND_SIMPLE);
+    cmd_trie_insert(cmd_trie_root, "pause",             FUNCTION_POINTER(command_pause),        LKT_COMMAND_SIMPLE);
+    cmd_trie_insert(cmd_trie_root, "play",              FUNCTION_POINTER(command_next),         LKT_COMMAND_SIMPLE);
+    cmd_trie_insert(cmd_trie_root, "playid",            FUNCTION_POINTER(command_next),         LKT_COMMAND_SIMPLE);
+    cmd_trie_insert(cmd_trie_root, "stop",              FUNCTION_POINTER(command_next),         LKT_COMMAND_SIMPLE);
+    cmd_trie_insert(cmd_trie_root, "seek",              FUNCTION_POINTER(command_seek),         LKT_COMMAND_SIMPLE);
+    cmd_trie_insert(cmd_trie_root, "seekid",            FUNCTION_POINTER(command_seekid),       LKT_COMMAND_SIMPLE);
+    cmd_trie_insert(cmd_trie_root, "seekcur",           FUNCTION_POINTER(command_seekcur),      LKT_COMMAND_SIMPLE);
+
+    cmd_trie_insert(cmd_trie_root, "__insert",          FUNCTION_POINTER(command_add_5),        LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "add",               FUNCTION_POINTER(command_add_1),        LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "addid",             FUNCTION_POINTER(command_addid),        LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "del",               FUNCTION_POINTER(command_del),          LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "delid",             FUNCTION_POINTER(command_delid),        LKT_COMMAND_ANON);
+
+    cmd_trie_insert(cmd_trie_root, "clear",             FUNCTION_POINTER(command_clear),        LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "crop",              FUNCTION_POINTER(command_crop),         LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "move",              FUNCTION_POINTER(command_move),         LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "shuffle",           FUNCTION_POINTER(command_shuffle),      LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "swap",              FUNCTION_POINTER(command_swap),         LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "swapid",            FUNCTION_POINTER(command_swapid),       LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "__flat",            FUNCTION_POINTER(command_flat),         LKT_COMMAND_ANON);
+
+    cmd_trie_insert(cmd_trie_root, "playlistid",        FUNCTION_POINTER(command_queue_listid), LKT_COMMAND_SIMPLE);
+    cmd_trie_insert(cmd_trie_root, "playlist",          FUNCTION_POINTER(command_queue_list),   LKT_COMMAND_SIMPLE);
+    cmd_trie_insert(cmd_trie_root, "playlistinfo",      FUNCTION_POINTER(command_queue_list),   LKT_COMMAND_SIMPLE);
+
+    cmd_trie_insert(cmd_trie_root, "playlistclear",     FUNCTION_POINTER(command_plt_clear),    LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "rename",            FUNCTION_POINTER(command_plt_rename),   LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "playlistdelete",    FUNCTION_POINTER(command_plt_remove),   LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "rm",                FUNCTION_POINTER(command_plt_remove),   LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "playlistadd",       FUNCTION_POINTER(command_plt_add),      LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "save",              FUNCTION_POINTER(command_plt_export),   LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "__import",          FUNCTION_POINTER(command_plt_import),   LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "__dump",            FUNCTION_POINTER(command_dump),         LKT_COMMAND_ANON);
+    cmd_trie_insert(cmd_trie_root, "listplaylists",     FUNCTION_POINTER(command_plt_list),     LKT_COMMAND_INTEGER);
+    cmd_trie_insert(cmd_trie_root, "listplaylist",      FUNCTION_POINTER(command_plt_ctx),      LKT_COMMAND_INTEGER);
+    // clang-format on
+
     cmd_trie_print(cmd_trie_root);
 }