{
"event": "PreToolUse",
"tool_name": "Read",
"tool_input": {
"file_path": "\/var\/www\/mcp-servers\/mcp-tasks\/tools\/task_tools\/list_tools.py",
"limit": 45
}
}
{
"tool_response": {
"type": "text",
"file": {
"filePath": "\/var\/www\/mcp-servers\/mcp-tasks\/tools\/task_tools\/list_tools.py",
"content": "\"\"\"Task listing and statistics tools.\"\"\"\nimport json\nimport time\n\nimport sys\nsys.path.insert(0, \"\/var\/www\/mcp-servers\/mcp-tasks\")\nsys.path.insert(0, \"\/var\/www\/mcp-servers\/shared\")\n\nfrom constants import MS_PER_SECOND\n\nfrom config import Config\nfrom .base import get_repo, get_task_logger, validate_status, validate_type, log_tool_call\n\n\ndef register_list_tools(mcp):\n \"\"\"Register task list and statistics tools.\"\"\"\n\n repo = get_repo()\n logger = get_task_logger()\n\n @mcp.tool()\n def tasks_list(\n status: str | None = None,\n type: str | None = None,\n search: str | None = None,\n limit: int = 10,\n offset: int = 0,\n compact: bool = True,\n ) -> dict:\n \"\"\"\n Listet Tasks mit optionalen Filtern auf.\n\n Args:\n status: Filter nach Status (pending, in_progress, completed, failed, cancelled)\n type: Filter nach Typ (human_task, ai_task, mixed)\n search: Volltextsuche in Titel\/Beschreibung\n limit: Maximale Anzahl Ergebnisse (1-100, default: 10)\n offset: Offset für Pagination\n compact: True = nur id\/title\/status\/type (Token-sparend), False = alle Felder\n\n Returns:\n Dict mit tasks, total, limit, offset\n \"\"\"\n start = time.time()\n request_str = json.dumps({\"status\": status, \"type\": type, \"search\": search, \"limit\": limit})",
"numLines": 45,
"startLine": 1,
"totalLines": 102
}
}
}