```diff
--- test_files/391-original.txt	2025-03-07 19:06:52
+++ test_files/391-modified.txt	2025-03-07 19:06:52
@@ -11,10 +11,11 @@
 import pyperclip
 
 from composio.cli.context import Context, pass_context
+from composio.cli.utils.decorators import handle_exceptions
 from composio.cli.utils.helpfulcmd import HelpfulCmdBase
-from composio.client.enums import App
+from composio.client import App
 from composio.core.cls.did_you_mean import DYMGroup
-from composio.exceptions import ComposioSDKError
+from composio.utils.enums import get_enum_key
 
 
 class ActionsExamples(HelpfulCmdBase, DYMGroup):
@@ -31,6 +32,11 @@
         + click.style(
             "  # List all actions for the 'get channel messages' use case\n", fg="black"
         ),
+        click.style(
+            "composio actions execute 'action_name' --params '{\"key\": \"value\"}'",
+            fg="green",
+        )
+        + click.style("  # Execute a specific action with parameters\n", fg="black"),
     ]
 
 
@@ -44,6 +50,13 @@
     help="Filter by app name",
 )
 @click.option(
+    "--tag",
+    "tags",
+    type=str,
+    multiple=True,
+    help="Filter by given tag",
+)
+@click.option(
     "--use-case",
     "use_case",
     type=str,
@@ -69,57 +82,57 @@
     default=False,
     help="Copy actions as a list of `Action` enum instances.",
 )
+@handle_exceptions()
 @pass_context
 def _actions(
     context: Context,
     apps: t.Sequence[str],
+    tags: t.Sequence[str],
     use_case: t.Optional[str] = None,
     limit: int = 10,
     enabled: bool = False,
     copy_enums: bool = False,
 ) -> None:
     """List composio actions"""
-    if use_case is None and len(apps) == 0:
+    if context.click_ctx.invoked_subcommand:
+        return
+
+    if enabled:
+        context.console.print("[yellow]`--enabled` is deprecated![/yellow]")
+
+    if use_case is not None and len(apps) == 0:
         raise click.ClickException(
-            "To search by a use case you need to specify atleast one app name."
+            "To search by a use case you need to specify at least one app name."
         )
-    try:
-        actions = context.client.actions.get(
-            apps=[App(app) for app in apps],
-            use_case=use_case,
-            allow_all=True,
-            limit=limit,
-        )
-        if enabled:
-            actions = [integration for integration in actions if integration.enabled]
-            context.console.print("[green]Showing actions which are enabled[/green]")
-        else:
-            context.console.print("[green]Showing all actions[/green]")
 
-        enum_strs = []
-        for action in actions:
-            enum_strs.append(f"Action.{_get_enum_key(name=action.name)}")
-            context.console.print(f"• {action.name} ({enum_strs[-1]})")
+    context.console.print("[green]Showing all actions[/green]")
+    actions = context.client.actions.get(
+        apps=[App(app) for app in apps],
+        limit=limit,
+        allow_all=True,
+        use_case=use_case,
+    )
 
-        if copy_enums or (
-            click.prompt(
-                "Do you copy these actions as enums?",
-                type=click.Choice(
-                    choices=("y", "n"),
-                    case_sensitive=False,
-                ),
-            )
-            == "y"
-        ):
-            pyperclip.copy(text="[" + ", ".join(enum_strs) + "]")
+    enum_strs = []
+    for action in actions:
+        if len(tags) > 0 and all(tag not in action.tags for tag in tags):
+            continue
+        enum_strs.append(f"Action.{get_enum_key(name=action.name)}")
+        context.console.print(f"• {action.name} ({enum_strs[-1]})")
 
-    except ComposioSDKError as e:
-        raise click.ClickException(message=e.message) from e
+    if len(tags) > 0 and len(enum_strs) == 0:
+        raise click.ClickException(
+            f"Could not find actions with following tags {set(tags)}"
+        )
 
-
-# TODO: Extract as reusable
-def _get_enum_key(name: str) -> str:
-    characters_to_replace = [" ", "-", "/", "(", ")", "\\", ":", '"', "'", "."]
-    for char in characters_to_replace:
-        name = name.replace(char, "_")
-    return name.upper()
+    if copy_enums or (
+        click.prompt(
+            "Do you copy these actions as enums?",
+            type=click.Choice(
+                choices=("y", "n"),
+                case_sensitive=False,
+            ),
+        )
+        == "y"
+    ):
+        pyperclip.copy(text="[" + ", ".join(enum_strs) + "]")
```
