```diff
--- test_files/335-original.txt	2025-03-07 19:06:47
+++ test_files/335-modified.txt	2025-03-07 19:06:47
@@ -2,11 +2,11 @@
 
 from pydantic import Field
 
-from composio.tools.env.filemanager.manager import FileManager
+from composio.tools.base.local import LocalAction
 from composio.tools.local.filetool.actions.base_action import (
-    BaseFileAction,
     BaseFileRequest,
     BaseFileResponse,
+    include_cwd,
 )
 
 
@@ -14,7 +14,7 @@
     """Request to search for a word in files."""
 
     word: str = Field(..., description="The term to search for")
-    pattern: str = Field(
+    pattern: t.Optional[str] = Field(
         default=None,
         description="""The file, directory, or glob pattern to search in.
         If not provided, searches in the current working directory.
@@ -28,6 +28,13 @@
     recursive: bool = Field(
         default=True, description="If True, search recursively in subdirectories"
     )
+    case_insensitive: bool = Field(
+        default=True, description="If True, perform case-insensitive search"
+    )
+    exclude: t.Optional[t.List[str]] = Field(
+        default=None,
+        description="List of directories to exclude from the search",
+    )
 
 
 class SearchWordResponse(BaseFileResponse):
@@ -37,18 +44,17 @@
         default={},
         description="A dictionary with file paths as keys and lists of (line number, line content) tuples as values",
     )
+    message: str = Field(default="", description="Message to display to the user")
     error: str = Field(default="", description="Error message if any")
 
 
-class SearchWord(BaseFileAction):
+class SearchWord(LocalAction[SearchWordRequest, SearchWordResponse]):
     """
-    Searches for a specified word in files matching the given pattern.
-
-    This action allows you to search for a specific word or phrase across multiple files
-    in your workspace. You can specify a pattern to narrow down the search to specific
+    - Search for a specific word or phrase across multiple files
+    in your workspace by specifying a pattern.
+    You can specify a pattern to narrow down the search to specific
     files, directories, or file types.
-
-    The search is case-sensitive and returns the line numbers and content of the lines
+    The search returns the line numbers and content of the lines
     where the word is found.
 
     Usage examples:
@@ -66,23 +72,35 @@
     Raises:
         - ValueError: If the word to search for is empty.
         - FileNotFoundError: If the specified pattern doesn't match any files.
-        - PermissionError: If there's no permission to read certain files.
-        - IOError: If there's an issue reading files.
     """
 
-    _display_name = "Search Word in Files"
-    _request_schema = SearchWordRequest
-    _response_schema = SearchWordResponse
-
-    def execute_on_file_manager(
-        self, file_manager: FileManager, request_data: SearchWordRequest  # type: ignore
+    @include_cwd  # type: ignore
+    def execute(
+        self, request: SearchWordRequest, metadata: t.Dict
     ) -> SearchWordResponse:
         try:
-            results = file_manager.grep(
-                word=request_data.word,
-                pattern=request_data.pattern,
-                recursive=request_data.recursive,
+            results = self.filemanagers.get(request.file_manager_id).grep(
+                word=request.word,
+                pattern=request.pattern,
+                recursive=request.recursive,
+                case_insensitive=request.case_insensitive,
+                exclude=request.exclude,  # type: ignore
             )
+            num_files: int = len(results)
+            if num_files > 100:
+                return SearchWordResponse(
+                    results=dict(list(results.items())[:100]),
+                    message=(
+                        f'Warning: More than 100 files matched for "{request.word}" '
+                        f'in "{request.pattern}". Sending the first 100 results. '
+                        "Consider narrowing your search."
+                    ),
+                )
+            if num_files == 0:
+                return SearchWordResponse(
+                    results={},
+                    message=f'No files matched for "{request.word}" in {request.pattern}".',
+                )
             return SearchWordResponse(results=results)
         except ValueError as e:
             return SearchWordResponse(error=f"Invalid search parameters: {str(e)}")
```
