{
  "name": "show_hooks",
  "wireName": "show_hooks",
  "source": {
    "repo": "tmux-python/libtmux-mcp",
    "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
    "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
    "file": "src/libtmux_mcp/tools/hook_tools.py",
    "line": 243
  },
  "description": "List configured tmux hooks at the given scope.\n\n``scope=\"server\"`` enumerates hooks installed via\n``tmux set-hook -g ...``. tmux splits those globals across two\noptions trees by hook category: session-level hooks\n(``session-closed``, ``client-*``, etc.) live in the\nglobal-session tree enumerated by ``show-hooks -g``, while\npane/window-level hooks (``pane-focus-in``, ``window-resized``,\netc.) live in the global-window tree enumerated by\n``show-hooks -gw``. This tool consults both trees and merges the\nresults so the enumeration matches what a name-targeted\n:func:`~libtmux_mcp.tools.hook_tools.show_hook` call would return.",
  "schemaStatus": "runtime",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "global_": {
        "default": false,
        "description": "Pass ``-g`` to query global hooks. Default False.",
        "type": "boolean"
      },
      "scope": {
        "anyOf": [
          {
            "enum": [
              "server",
              "session",
              "window",
              "pane"
            ],
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "description": "Hook scope (server/session/window/pane). Defaults to the\ncalling object's scope when a ``target`` is given."
      },
      "socket_name": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "description": "tmux socket name."
      },
      "target": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "description": "Target identifier. For session scope: session name. For window\nscope: window ID. For pane scope: pane ID. Requires ``scope``."
      }
    },
    "type": "object"
  },
  "outputSchema": {
    "description": "Structured result for hook introspection.\n\nReturned by :func:`~libtmux_mcp.tools.hook_tools.show_hooks` and\n:func:`~libtmux_mcp.tools.hook_tools.show_hook`.\nFlat list of :class:`~libtmux_mcp.models.HookEntry` instances so\nMCP clients can iterate without caring whether the underlying tmux\nhook is scalar or array-shaped.",
    "properties": {
      "entries": {
        "items": {
          "description": "One entry in a tmux hook array.\n\nHooks like ``session-renamed`` are arrays — they can have multiple\ncommands registered at sparse indices.\n:class:`~libtmux_mcp.models.HookEntry` flattens one index+command\npair into a serialisable row.",
          "properties": {
            "command": {
              "description": "tmux command string registered at that index.",
              "type": "string"
            },
            "hook_name": {
              "description": "Hook name (e.g. 'pane-exited').",
              "type": "string"
            },
            "index": {
              "anyOf": [
                {
                  "type": "integer"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "description": "Array index for array-style hooks (e.g. session-renamed[3]). ``None`` for scalar hooks."
            }
          },
          "required": [
            "hook_name",
            "command"
          ],
          "type": "object"
        },
        "type": "array"
      }
    },
    "type": "object"
  },
  "annotations": {
    "destructiveHint": true,
    "idempotentHint": false,
    "openWorldHint": true,
    "readOnlyHint": false
  },
  "meta": {
    "fastmcp": {
      "tags": [
        "inspect"
      ]
    }
  }
}
