| name | tools |
| description | Guides the implementation of any tool inside backend/tools/. Use this when creating, editing, or debugging a tool class. |
Tools Skill
Every Tool Must
- Inherit from
BaseTool abstract class
- Be fully async
- Accept
session_id as a parameter
- Write output to workspace as an artifact
- Return structured output, never raw strings
BaseTool Interface
class BaseTool(ABC):
name: str
description: str
@abstractmethod
async def run(self, session_id: str, **kwargs) -> ToolResult:
pass
ToolResult Shape
@dataclass
class ToolResult:
success: bool
output: str
artifact_path: str
findings: list[dict]
Artifact Rule
Every tool call MUST write its output to:
workspaces/{session_id}/artifacts/{tool_name}_{timestamp}.txt
Tool Categories
- shell_tools.py: nmap, sqlmap, curl, whois
- browser_tools.py: Playwright-based scraping
- code_executor.py: Docker sandbox execution
- exploit_tools.py: Custom exploit implementations