Add Backend Tool
Instructions
-
Read
backend/main.pyto understand existing tool patterns:- Find the
toolslist with function definitions - Review helper functions (read_file, write_file, run_terminal_command, web_search)
- Find the
-
Create the helper function:
def new_tool_name(param1: str, param2: int = 10) -> str: """Docstring explaining the tool.""" try: # Implementation return result except Exception as e: return f"Error: {str(e)}" -
Add tool definition to the
toolslist:{ "type": "function", "function": { "name": "new_tool_name", "description": "What this tool does and when to use it", "parameters": { "type": "object", "properties": { "param1": {"type": "string", "description": "..."}, "param2": {"type": "integer", "description": "..."} }, "required": ["param1"] } } } -
Add tool invocation handler in the WebSocket message loop:
elif func_name == "new_tool_name": result = new_tool_name(**args) -
Update mode restrictions if needed:
- Agent mode: full access
- Chat mode: add to allowed list only if read-only/safe
Examples
- "Add a tool to list directory contents"
- "Create a tool for git operations"
- "Add web scraping capability"
Guardrails
- Include proper error handling with try/except
- Add timeout for any long-running operations
- Consider security implications (Chat mode restrictions)
- Never hardcode API keys or secrets
- Document the tool's purpose in the function docstring