| # Stack 2.9 - Complete Tools Reference |
|
|
| Stack 2.9 provides **38 built-in tools** for file operations, git, code execution, web requests, memory, and task management. This document provides the complete reference with actual parameter names, types, and usage examples. |
|
|
| --- |
|
|
| ## Tool Calling Format |
|
|
| Tools are called using a JSON-based function calling format. The agent automatically selects tools based on user intent, but you can also call them directly via the agent API. |
|
|
| ### Example Tool Call |
|
|
| ```json |
| { |
| "tool": "read", |
| "params": { |
| "path": "/path/to/file.py" |
| }, |
| "id": "call_123" |
| } |
| ``` |
|
|
| ### Return Format |
|
|
| All tools return a JSON-serializable dict: |
|
|
| ```json |
| { |
| "success": true|false, |
| "result": <tool-specific result data>, |
| "error": <error message if failed> |
| } |
| ``` |
|
|
| --- |
|
|
| ## Complete Tool Catalog |
|
|
| ### 1. File Operations |
|
|
| #### `read` |
| Read file contents with optional pagination. |
| - **Parameters:** |
| - `path` (string, required) - Path to the file |
| - `offset` (integer, optional, default: 0) - Line number to start from (0-indexed) |
| - `limit` (integer, optional, default: -1) - Maximum lines to read (-1 = all) |
| - **Returns:** `{success, content, total_lines, path}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "read", |
| "params": {"path": "stack_cli/cli.py", "limit": 50} |
| } |
| ``` |
|
|
| #### `write` |
| Write content to a file (overwrites by default). |
| - **Parameters:** |
| - `path` (string, required) - Destination file path |
| - `content` (string, required) - Content to write |
| - `append` (boolean, optional, default: false) - Append instead of overwrite |
| - **Returns:** `{success, path, lines_written}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "write", |
| "params": { |
| "path": "output.txt", |
| "content": "Hello, World!", |
| "append": false |
| } |
| } |
| ``` |
|
|
| #### `edit` |
| Replace exact text in a file (single occurrence). |
| - **Parameters:** |
| - `path` (string, required) - File to edit |
| - `old_text` (string, required) - Text to find and replace |
| - `new_text` (string, required) - Replacement text |
| - **Returns:** `{success, path, edits_made}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "edit", |
| "params": { |
| "path": "config.yaml", |
| "old_text": "debug: false", |
| "new_text": "debug: true" |
| } |
| } |
| ``` |
|
|
| #### `search` |
| Recursively search for files matching a glob pattern. |
| - **Parameters:** |
| - `path` (string, required) - Directory to search in |
| - `pattern` (string, required) - Glob pattern (e.g., `"*.py"`, `"**/*.md"`) |
| - `exclude` (array of strings, optional) - Paths to exclude |
| - **Returns:** `{success, matches, count}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "search", |
| "params": { |
| "path": ".", |
| "pattern": "**/*.py", |
| "exclude": ["__pycache__", "node_modules"] |
| } |
| } |
| ``` |
|
|
| #### `grep` |
| Search for regex pattern across files with optional context. |
| - **Parameters:** |
| - `path` (string, required) - File or directory to search |
| - `pattern` (string, required) - Regular expression pattern |
| - `context` (integer, optional, default: 0) - Lines of context before/after |
| - **Returns:** `{success, matches, count}` where each match has `{file, line, content, context?}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "grep", |
| "params": { |
| "path": "stack_cli", |
| "pattern": "def tool_", |
| "context": 2 |
| } |
| } |
| ``` |
|
|
| #### `copy` |
| Copy file or directory (recursive for directories). |
| - **Parameters:** |
| - `source` (string, required) - Source path |
| - `destination` (string, required) - Destination path |
| - **Returns:** `{success, source, destination}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "copy", |
| "params": { |
| "source": "config.example.yaml", |
| "destination": "config.yaml" |
| } |
| } |
| ``` |
|
|
| #### `move` |
| Move or rename file/directory. |
| - **Parameters:** |
| - `source` (string, required) - Current path |
| - `destination` (string, required) - New path |
| - **Returns:** `{success, source, destination}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "move", |
| "params": { |
| "source": "old_name.py", |
| "destination": "new_name.py" |
| } |
| } |
| ``` |
|
|
| #### `delete` |
| Delete file or directory (requires force=True for safety). |
| - **Parameters:** |
| - `path` (string, required) - Path to delete |
| - `force` (boolean, optional, default: false) - Actually delete when true |
| - **Returns:** `{success, deleted/would_delete, warning?}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "delete", |
| "params": { |
| "path": "obsolete_file.txt", |
| "force": true |
| } |
| } |
| ``` |
|
|
| --- |
|
|
| ### 2. Git Operations |
|
|
| #### `git_status` |
| Get git repository status (porcelain format). |
| - **Parameters:** |
| - `repo_path` (string, optional, default: ".") - Repository root |
| - **Returns:** `{success, files, count, repo}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "git_status", |
| "params": {"repo_path": "."} |
| } |
| ``` |
|
|
| #### `git_commit` |
| Stage changes and create a commit. |
| - **Parameters:** |
| - `repo_path` (string, optional, default: ".") - Repository root |
| - `message` (string, required) - Commit message |
| - `files` (array of strings, optional) - Specific files to stage (stages all if omitted) |
| - **Returns:** `{success, message, output}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "git_commit", |
| "params": { |
| "repo_path": ".", |
| "message": "feat: add new tool documentation", |
| "files": ["TOOLS.md", "docs/tools.md"] |
| } |
| } |
| ``` |
|
|
| #### `git_push` |
| Push commits to remote repository. |
| - **Parameters:** |
| - `repo_path` (string, optional, default: ".") - Repository root |
| - `remote` (string, optional, default: "origin") - Remote name |
| - `branch` (string, optional) - Branch name (pushes current branch if omitted) |
| - **Returns:** `{success, remote, branch, output}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "git_push", |
| "params": { |
| "repo_path": ".", |
| "remote": "origin", |
| "branch": "main" |
| } |
| } |
| ``` |
|
|
| #### `git_pull` |
| Pull changes from remote. |
| - **Parameters:** |
| - `repo_path` (string, optional, default: ".") - Repository root |
| - `remote` (string, optional, default: "origin") - Remote name |
| - `branch` (string, optional) - Branch name (pulls current branch if omitted) |
| - **Returns:** `{success, remote, branch, output}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "git_pull", |
| "params": { |
| "repo_path": ".", |
| "remote": "origin" |
| } |
| } |
| ``` |
|
|
| #### `git_branch` |
| List, create, or delete branches. |
| - **Parameters (mutually exclusive):** |
| - `repo_path` (string, optional, default: ".") |
| - `create` (string, optional) - Create and checkout new branch |
| - `delete` (string, optional) - Delete branch |
| - **Returns:** `{success, branches?, count?, created?, deleted?}` |
|
|
| **Examples:** |
| ```json |
| // List branches |
| {"tool": "git_branch", "params": {"repo_path": "."}} |
| |
| // Create branch |
| {"tool": "git_branch", "params": {"create": "feature/new-docs"}} |
| |
| // Delete branch |
| {"tool": "git_branch", "params": {"delete": "old-branch"}} |
| ``` |
|
|
| #### `git_log` |
| View commit history. |
| - **Parameters:** |
| - `repo_path` (string, optional, default: ".") |
| - `limit` (integer, optional, default: 10) - Maximum commits |
| - **Returns:** `{success, commits, count}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "git_log", |
| "params": {"repo_path": ".", "limit": 20} |
| } |
| ``` |
|
|
| #### `git_diff` |
| Show changes between commits or working tree. |
| - **Parameters:** |
| - `repo_path` (string, optional, default: ".") |
| - `file` (string, optional) - Specific file to diff |
| - `staged` (boolean, optional, default: false) - Show staged changes |
| - **Returns:** `{success, diff, has_changes}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "git_diff", |
| "params": { |
| "repo_path": ".", |
| "staged": true |
| } |
| } |
| ``` |
|
|
| --- |
|
|
| ### 3. Code Execution |
|
|
| #### `run` |
| Execute shell command with timeout. |
| - **Parameters:** |
| - `command` (string, required) - Shell command to run |
| - `timeout` (integer, optional, default: 60) - Seconds before timeout |
| - `cwd` (string, optional) - Working directory |
| - `env` (object, optional) - Environment variables to merge |
| - **Returns:** `{success, returncode, stdout, stderr, command}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "run", |
| "params": { |
| "command": "python -m pytest tests/ -v", |
| "timeout": 300, |
| "cwd": "." |
| } |
| } |
| ``` |
|
|
| #### `test` |
| Run tests using pytest. |
| - **Parameters:** |
| - `path` (string, optional, default: ".") - Test directory or file |
| - `pattern` (string, optional, default: "test*.py") - Test file pattern |
| - `verbose` (boolean, optional, default: true) - Verbose output |
| - **Returns:** `{success, output, errors, returncode}` |
| |
| **Example:** |
| ```json |
| { |
| "tool": "test", |
| "params": { |
| "path": "tests/", |
| "pattern": "test_*.py", |
| "verbose": true |
| } |
| } |
| ``` |
| |
| #### `lint` |
| Lint code with specified linter (ruff, pylint, mypy). |
| - **Parameters:** |
| - `path` (string, optional, default: ".") |
| - `linter` (string, optional, default: "ruff") - "ruff", "pylint", or "mypy" |
| - **Returns:** `{success, output, errors}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "lint", |
| "params": { |
| "path": "stack_cli/", |
| "linter": "ruff" |
| } |
| } |
| ``` |
|
|
| #### `format` |
| Format code with specified formatter. |
| - **Parameters:** |
| - `path` (string, optional, default: ".") |
| - `formatter` (string, optional, default: "ruff") - "ruff" or "black" |
| - **Returns:** `{success, output, errors}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "format", |
| "params": { |
| "path": ".", |
| "formatter": "black" |
| } |
| } |
| ``` |
|
|
| #### `typecheck` |
| Run type checking with mypy. |
| - **Parameters:** |
| - `path` (string, optional, default: ".") |
| - **Returns:** `{success, output, errors}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "typecheck", |
| "params": {"path": "stack_cli"} |
| } |
| ``` |
|
|
| #### `server` |
| Start a development server (optionally in background). |
| - **Parameters:** |
| - `command` (string, required) - Command to start server |
| - `port` (integer, required) - Port number (for reference) |
| - `cwd` (string, optional) - Working directory |
| - `background` (boolean, optional, default: false) - Run in background |
| - **Returns:** `{success, pid?, port, message}` or `{success, output}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "server", |
| "params": { |
| "command": "python -m http.server 8000", |
| "port": 8000, |
| "background": true |
| } |
| } |
| ``` |
|
|
| #### `install` |
| Install dependencies from requirements file. |
| - **Parameters:** |
| - `path` (string, optional, default: ".") - Project directory |
| - `package_manager` (string, optional, default: "pip") - "pip", "poetry", or "npm" |
| - **Returns:** `{success, output, errors}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "install", |
| "params": { |
| "path": ".", |
| "package_manager": "pip" |
| } |
| } |
| ``` |
|
|
| --- |
|
|
| ### 4. Web & Search |
|
|
| #### `web_search` |
| Search the web using Brave Search. |
| - **Parameters:** |
| - `query` (string, required) - Search query |
| - `count` (integer, optional, default: 5) - Number of results (1-10) |
| - `freshness` (string, optional) - Filter by time: "day", "week", "month", "year" |
| - `language` (string, optional) - ISO 639-1 language code (e.g., "en", "fr") |
| - **Returns:** `{success, query, results, count}` |
| |
| **Example:** |
| ```json |
| { |
| "tool": "web_search", |
| "params": { |
| "query": "Stack 2.9 AI coding assistant", |
| "count": 10, |
| "freshness": "month" |
| } |
| } |
| ``` |
| |
| #### `fetch` |
| Download and extract content from a URL. |
| - **Parameters:** |
| - `url` (string, required) - URL to fetch |
| - `max_chars` (integer, optional, default: 10000) - Maximum content length |
| - **Returns:** `{success, url, content, length}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "fetch", |
| "params": { |
| "url": "https://example.com/README.md", |
| "max_chars": 5000 |
| } |
| } |
| ``` |
|
|
| #### `download` |
| Download file from URL to local path. |
| - **Parameters:** |
| - `url` (string, required) - Source URL |
| - `destination` (string, required) - Local file path |
| - **Returns:** `{success, url, destination, size}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "download", |
| "params": { |
| "url": "https://example.com/dataset.csv", |
| "destination": "data/dataset.csv" |
| } |
| } |
| ``` |
|
|
| #### `check_url` |
| Check if URL is accessible (HTTP HEAD request). |
| - **Parameters:** |
| - `url` (string, required) - URL to check |
| - **Returns:** `{success, url, status_code}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "check_url", |
| "params": {"url": "https://github.com"} |
| } |
| ``` |
|
|
| #### `screenshot` |
| Take screenshot of a webpage (requires puppeteer). |
| - **Parameters:** |
| - `url` (string, required) - Webpage URL |
| - `destination` (string, optional, default: "screenshot.png") - Output path |
| - **Returns:** `{success, url, destination}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "screenshot", |
| "params": { |
| "url": "https://stack-2-9.example.com", |
| "destination": "website.png" |
| } |
| } |
| ``` |
|
|
| --- |
|
|
| ### 5. Memory & Knowledge |
|
|
| #### `memory_recall` |
| Search memory files for relevant entries. |
| - **Parameters:** |
| - `query` (string, required) - Search query |
| - `max_results` (integer, optional, default: 5) - Maximum matches |
| - **Returns:** `{success, query, matches, count}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "memory_recall", |
| "params": { |
| "query": "deployment requirements", |
| "max_results": 10 |
| } |
| } |
| ``` |
|
|
| #### `memory_save` |
| Store a memory entry in MEMORY.md. |
| - **Parameters:** |
| - `key` (string, required) - Entry title/heading |
| - `value` (string, required) - Content to save |
| - **Returns:** `{success, key, saved}` |
| |
| **Example:** |
| ```json |
| { |
| "tool": "memory_save", |
| "params": { |
| "key": "GPU Requirements", |
| "value": "Minimum: 8GB VRAM, Recommended: 24GB VRAM" |
| } |
| } |
| ``` |
| |
| #### `memory_list` |
| List all memory entries with preview. |
| - **Parameters:** None |
| - **Returns:** `{success, entries, count}` where each entry has `{title, content}` |
| |
| **Example:** |
| ```json |
| { |
| "tool": "memory_list", |
| "params": {} |
| } |
| ``` |
| |
| #### `context_load` |
| Load workspace context files (AGENTS.md, SOUL.md, TOOLS.md). |
| - **Parameters:** |
| - `projects` (array of strings, optional) - Project names to load |
| - **Returns:** `{success, context, loaded}` |
| |
| **Example:** |
| ```json |
| { |
| "tool": "context_load", |
| "params": {} |
| } |
| ``` |
| |
| #### `project_scan` |
| Scan project structure and detect tech stack. |
| - **Parameters:** |
| - `path` (string, optional, default: ".") |
| - **Returns:** `{success, project}` with `{name, files, dirs, has_git, has_pyproject, has_package_json, has_dockerfile}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "project_scan", |
| "params": {"path": "."} |
| } |
| ``` |
|
|
| --- |
|
|
| ### 6. Task & Planning |
|
|
| #### `create_task` |
| Create a new task. |
| - **Parameters:** |
| - `title` (string, required) - Task title |
| - `description` (string, optional, default: "") - Detailed description |
| - `priority` (string, optional, default: "medium") - "low", "medium", or "high" |
| - **Returns:** `{success, task}` with `{id, title, description, priority, status, created}` |
| |
| **Example:** |
| ```json |
| { |
| "tool": "create_task", |
| "params": { |
| "title": "Write comprehensive tool documentation", |
| "description": "Create TOOLS.md with all 38 tools documented", |
| "priority": "high" |
| } |
| } |
| ``` |
| |
| #### `list_tasks` |
| List tasks with optional filtering. |
| - **Parameters:** |
| - `status` (string, optional) - Filter by "pending", "done", or "all" |
| - `priority` (string, optional) - Filter by "low", "medium", "high" |
| - **Returns:** `{success, tasks, count}` |
| |
| **Example:** |
| ```json |
| { |
| "tool": "list_tasks", |
| "params": { |
| "status": "pending", |
| "priority": "high" |
| } |
| } |
| ``` |
| |
| #### `update_task` |
| Update task status or fields. |
| - **Parameters:** |
| - `task_id` (string, required) - Task identifier |
| - `status` (string, optional) - New status |
| - Additional fields: `title`, `description`, `priority` |
| - **Returns:** `{success, task_id, updated}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "update_task", |
| "params": { |
| "task_id": "a1b2c3d4", |
| "status": "done" |
| } |
| } |
| ``` |
|
|
| #### `delete_task` |
| Delete a task by ID. |
| - **Parameters:** |
| - `task_id` (string, required) - Task to delete |
| - **Returns:** `{success, task_id, deleted}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "delete_task", |
| "params": {"task_id": "a1b2c3d4"} |
| } |
| ``` |
|
|
| #### `create_plan` |
| Create an execution plan with steps. |
| - **Parameters:** |
| - `goal` (string, required) - Plan objective |
| - `steps` (array of strings, required) - Ordered steps |
| - **Returns:** `{success, plan}` with `{id, goal, steps, status, created}` |
| |
| **Example:** |
| ```json |
| { |
| "tool": "create_plan", |
| "params": { |
| "goal": "Deploy to RunPod", |
| "steps": [ |
| "Prepare Docker image", |
| "Upload to registry", |
| "Launch pod with template", |
| "Verify deployment" |
| ] |
| } |
| } |
| ``` |
| |
| #### `execute_plan` |
| Mark a plan as in-progress (execution tracking). |
| - **Parameters:** |
| - `plan_id` (string, required) - Plan identifier |
| - **Returns:** `{success, plan_id, status, steps}` |
|
|
| **Example:** |
| ```json |
| { |
| "tool": "execute_plan", |
| "params": {"plan_id": "p123abc"} |
| } |
| ``` |
|
|
| --- |
|
|
| ## Tool Count Clarification |
|
|
| **Actual tool count: 38** (not 37). The following categories: |
| - File Operations: 8 tools |
| - Git Operations: 7 tools |
| - Code Execution: 7 tools |
| - Web & Search: 5 tools |
| - Memory & Knowledge: 5 tools |
| - Task & Planning: 6 tools |
| - **Total: 38 tools** |
|
|
| --- |
|
|
| ## Extension Mechanism |
|
|
| To add a new tool, edit `stack_cli/tools.py`: |
|
|
| ```python |
| def tool_my_feature(param1: str, param2: int = 42) -> Dict[str, Any]: |
| """Brief description for LLM.""" |
| try: |
| # Implementation |
| result = do_something(param1, param2) |
| return { |
| "success": True, |
| "result": result |
| } |
| except Exception as e: |
| return {"success": False, "error": str(e)} |
| |
| # Register in TOOLS dict |
| TOOLS["my_feature"] = tool_my_feature |
| ``` |
|
|
| The tool will be automatically available. Update this document when adding tools. |
|
|
| --- |
|
|
| ## Schema Generation |
|
|
| For programmatic access, use: |
|
|
| ```python |
| from stack_cli.tools import get_tool_schemas, get_tool |
| |
| # Get all tool schemas (for LLM function calling) |
| schemas = get_tool_schemas() |
| |
| # Get a specific tool function |
| read_fn = get_tool("read") |
| result = read_fn(path="file.txt") |
| ``` |
|
|
| **Note:** The `get_tool_schemas()` function currently provides a limited subset. For full production use, extend it to include all 38 tools with proper JSON Schema parameters derived from function signatures. |
|
|
| --- |
|
|
| ## Best Practices |
|
|
| 1. **Always check `success`** in the return value before using results |
| 2. **Use pagination** for large files: `read(path, offset=0, limit=1000)` |
| 3. **Handle errors gracefully** - tools return `error` field when `success=false` |
| 4. **Be cautious with destructive operations**: `delete` requires `force=true` |
| 5. **Set appropriate timeouts** for long-running commands (`run` tool) |
| 6. **Use `git_status` before `git_commit`** to verify what will be committed |
| 7. **Remember context limits** - tool results count against token limits |
|
|
| --- |
|
|
| ## Quick Reference Table |
|
|
| | Category | Tools | Count | |
| |----------|-------|-------| |
| | File Operations | read, write, edit, search, grep, copy, move, delete | 8 | |
| | Git | git_status, git_commit, git_push, git_pull, git_branch, git_log, git_diff | 7 | |
| | Execution | run, test, lint, format, typecheck, server, install | 7 | |
| | Web | web_search, fetch, download, check_url, screenshot | 5 | |
| | Memory | memory_recall, memory_save, memory_list, context_load, project_scan | 5 | |
| | Planning | create_task, list_tasks, update_task, delete_task, create_plan, execute_plan | 6 | |
| | **Total** | | **38** | |
|
|
| --- |
|
|
| *Last updated: 2026-04-02* |
| *Stack 2.9 - Pattern Memory AI* |
|
|