{
  "file": "F27-hooks-subagents-tools.md",
  "bullet": "Tool catalog (`F27.catalog`).",
  "ids": [
    "F27.catalog"
  ],
  "line": 277,
  "script": "control-agent-server api GET /api/tools/catalog --expect 200 --quiet --check tools len-ge 10 \\\n  --check tools matches '\"name\": \"terminal\", \"user_selectable\": true, \"usable\": true, \"description\": \"[^\"]+\", \"in_default_set\": true' \\\n  --check tools matches '\"name\": \"file_editor\", \"user_selectable\": true, \"usable\": true, \"description\": \"[^\"]+\", \"in_default_set\": true' \\\n  --check tools matches '\"name\": \"task_tracker\", \"user_selectable\": true, \"usable\": true, \"description\": \"[^\"]+\", \"in_default_set\": true' \\\n  --check tools matches '\"name\": \"grep\", \"user_selectable\": true, \"usable\": true, \"description\": \"[^\"]+\", \"in_default_set\": false' \\\n  --check tools matches '\"name\": \"switch_llm\", \"user_selectable\": true, \"usable\": true, \"description\": \"[^\"]+\", \"in_default_set\": true' \\\n  --check tools matches '\"name\": \"browser_tool_set\", \"user_selectable\": true, \"usable\": (true|false), \"description\": \"[^\"]+\", \"in_default_set\": true' \\\n  --check tools contains '{\"name\": \"task\", \"user_selectable\": false' \\\n  --check tools contains '{\"name\": \"planning_file_editor\", \"user_selectable\": false' \\\n  --check tools contains '{\"name\": \"route_task_to_model\", \"user_selectable\": false' \\\n  --check tools not-contains '\"name\": \"ClassifyAndSwitchLLMTool\"' \\\n  --check tools not-contains '\"user_selectable\": true, \"usable\": true, \"description\": \"\"' \\\n  --check tools not-contains '\"user_selectable\": true, \"usable\": false, \"description\": \"\"' --save F27.catalog/catalog\n",
  "exit_code": 0,
  "elapsed_ms": 379,
  "failed_line": null,
  "failed_command": null,
  "stdout": "{\n  \"ok\": true,\n  \"status\": 200,\n  \"request\": {\n    \"method\": \"GET\",\n    \"path\": \"/api/tools/catalog\",\n    \"query\": [],\n    \"auth\": \"header\",\n    \"files\": []\n  },\n  \"response\": {\n    \"status\": 200,\n    \"headers\": {\n      \"content-length\": \"2217\",\n      \"content-type\": \"application/json\"\n    },\n    \"truncated\": false\n  },\n  \"elapsed_ms\": 59,\n  \"checks\": [\n    {\n      \"check\": \"tools len-ge 10\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"route_task_to_model\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\\"\\\", \\\"in_default_set\\\": false}, {\\\"name\\\": \\\"ask_oracle\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\u2026\"\n    },\n    {\n      \"check\": \"tools matches \\\"name\\\": \\\"terminal\\\", \\\"user_selectable\\\": true, \\\"usable\\\": true, \\\"description\\\": \\\"[^\\\"]+\\\", \\\"in_default_set\\\": true\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"route_task_to_model\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\\"\\\", \\\"in_default_set\\\": false}, {\\\"name\\\": \\\"ask_oracle\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\u2026\"\n    },\n    {\n      \"check\": \"tools matches \\\"name\\\": \\\"file_editor\\\", \\\"user_selectable\\\": true, \\\"usable\\\": true, \\\"description\\\": \\\"[^\\\"]+\\\", \\\"in_default_set\\\": true\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"route_task_to_model\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\\"\\\", \\\"in_default_set\\\": false}, {\\\"name\\\": \\\"ask_oracle\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\u2026\"\n    },\n    {\n      \"check\": \"tools matches \\\"name\\\": \\\"task_tracker\\\", \\\"user_selectable\\\": true, \\\"usable\\\": true, \\\"description\\\": \\\"[^\\\"]+\\\", \\\"in_default_set\\\": true\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"route_task_to_model\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\\"\\\", \\\"in_default_set\\\": false}, {\\\"name\\\": \\\"ask_oracle\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\u2026\"\n    },\n    {\n      \"check\": \"tools matches \\\"name\\\": \\\"grep\\\", \\\"user_selectable\\\": true, \\\"usable\\\": true, \\\"description\\\": \\\"[^\\\"]+\\\", \\\"in_default_set\\\": false\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"route_task_to_model\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\\"\\\", \\\"in_default_set\\\": false}, {\\\"name\\\": \\\"ask_oracle\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\u2026\"\n    },\n    {\n      \"check\": \"tools matches \\\"name\\\": \\\"switch_llm\\\", \\\"user_selectable\\\": true, \\\"usable\\\": true, \\\"description\\\": \\\"[^\\\"]+\\\", \\\"in_default_set\\\": true\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"route_task_to_model\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\\"\\\", \\\"in_default_set\\\": false}, {\\\"name\\\": \\\"ask_oracle\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\u2026\"\n    },\n    {\n      \"check\": \"tools matches \\\"name\\\": \\\"browser_tool_set\\\", \\\"user_selectable\\\": true, \\\"usable\\\": (true|false), \\\"description\\\": \\\"[^\\\"]+\\\", \\\"in_default_set\\\": true\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"route_task_to_model\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\\"\\\", \\\"in_default_set\\\": false}, {\\\"name\\\": \\\"ask_oracle\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\u2026\"\n    },\n    {\n      \"check\": \"tools contains {\\\"name\\\": \\\"task\\\", \\\"user_selectable\\\": false\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"route_task_to_model\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\\"\\\", \\\"in_default_set\\\": false}, {\\\"name\\\": \\\"ask_oracle\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\u2026\"\n    },\n    {\n      \"check\": \"tools contains {\\\"name\\\": \\\"planning_file_editor\\\", \\\"user_selectable\\\": false\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"route_task_to_model\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\\"\\\", \\\"in_default_set\\\": false}, {\\\"name\\\": \\\"ask_oracle\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\u2026\"\n    },\n    {\n      \"check\": \"tools contains {\\\"name\\\": \\\"route_task_to_model\\\", \\\"user_selectable\\\": false\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"route_task_to_model\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\\"\\\", \\\"in_default_set\\\": false}, {\\\"name\\\": \\\"ask_oracle\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\u2026\"\n    },\n    {\n      \"check\": \"tools not-contains \\\"name\\\": \\\"ClassifyAndSwitchLLMTool\\\"\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"route_task_to_model\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\\"\\\", \\\"in_default_set\\\": false}, {\\\"name\\\": \\\"ask_oracle\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\u2026\"\n    },\n    {\n      \"check\": \"tools not-contains \\\"user_selectable\\\": true, \\\"usable\\\": true, \\\"description\\\": \\\"\\\"\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"route_task_to_model\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\\"\\\", \\\"in_default_set\\\": false}, {\\\"name\\\": \\\"ask_oracle\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\u2026\"\n    },\n    {\n      \"check\": \"tools not-contains \\\"user_selectable\\\": true, \\\"usable\\\": false, \\\"description\\\": \\\"\\\"\",\n      \"ok\": true,\n      \"actual\": \"[{\\\"name\\\": \\\"route_task_to_model\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\\"\\\", \\\"in_default_set\\\": false}, {\\\"name\\\": \\\"ask_oracle\\\", \\\"user_selectable\\\": false, \\\"usable\\\": true, \\\"description\\\": \\u2026\"\n    }\n  ],\n  \"saved\": \"/workspace/verification-artifacts/runs/20261013-030559-0256-map-f27/evidence/F27.catalog/catalog.json\"\n}\n",
  "stderr": ""
}
