{
  "tools": [
    "call_read_tools_batch",
    "capture_pane",
    "capture_since",
    "clear_pane",
    "create_session",
    "create_window",
    "delete_buffer",
    "display_message",
    "enter_copy_mode",
    "exit_copy_mode",
    "find_pane_by_position",
    "get_pane_info",
    "get_server_info",
    "get_session_info",
    "get_window_info",
    "kill_pane",
    "kill_server",
    "kill_session",
    "kill_window",
    "list_panes",
    "list_servers",
    "list_sessions",
    "list_windows",
    "load_buffer",
    "move_window",
    "paste_buffer",
    "paste_text",
    "pipe_pane",
    "rename_session",
    "rename_window",
    "resize_pane",
    "resize_window",
    "respawn_pane",
    "run_command",
    "search_panes",
    "select_layout",
    "select_pane",
    "select_window",
    "send_keys",
    "send_keys_batch",
    "set_environment",
    "set_option",
    "set_pane_title",
    "show_buffer",
    "show_environment",
    "show_hook",
    "show_hooks",
    "show_option",
    "signal_channel",
    "snapshot_pane",
    "split_window",
    "swap_pane",
    "wait_for_channel",
    "wait_for_text"
  ],
  "registrations": [
    {
      "name": "call_read_tools_batch",
      "wireName": "call_read_tools_batch",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/batch_tools.py",
        "line": 277
      },
      "description": "Call several `inspect` tools serially and return per-tool results.\n\nUse when one agent turn needs several observations. Each nested call\nstill goes through FastMCP validation and this server's middleware.\nOnly `inspect` tools are accepted; anything that changes tmux state\nis refused, whatever this server has enabled.\n\nThis wrapper aggregates authority under its own name: a client rule\nkeyed on a nested tool's name does not fire for a call made through\nit. Read it as authority to invoke any `inspect` tool.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "on_error": {
            "default": "stop",
            "enum": [
              "stop",
              "continue"
            ],
            "type": "string"
          },
          "operations": {
            "items": {
              "additionalProperties": false,
              "description": "One nested MCP tool call for a batch wrapper.",
              "properties": {
                "arguments": {
                  "additionalProperties": true,
                  "description": "Arguments for the nested tool call.",
                  "type": "object"
                },
                "tool": {
                  "description": "Registered MCP tool name to call.",
                  "type": "string"
                }
              },
              "required": [
                "tool"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "operations"
        ],
        "type": "object"
      },
      "outputSchema": {
        "description": "Structured result for a serial batch of MCP tool calls.",
        "properties": {
          "failed": {
            "description": "Number of nested tool calls that failed.",
            "type": "integer"
          },
          "response_truncated": {
            "default": false,
            "description": "True when nested result payloads were elided to keep the batch response under the server response cap.",
            "type": "boolean"
          },
          "response_truncated_bytes": {
            "default": 0,
            "description": "Approximate serialized bytes removed from nested result payloads.",
            "type": "integer"
          },
          "results": {
            "description": "Per-operation results in attempted order.",
            "items": {
              "description": "Per-operation result from a generic MCP tool batch.",
              "properties": {
                "content": {
                  "description": "MCP content blocks returned by the nested tool.",
                  "items": {
                    "additionalProperties": true,
                    "type": "object"
                  },
                  "type": "array"
                },
                "elapsed_seconds": {
                  "description": "Time spent on this operation.",
                  "type": "number"
                },
                "error": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Error message for this operation, if it failed."
                },
                "index": {
                  "description": "Zero-based index in the submitted operation list.",
                  "type": "integer"
                },
                "meta": {
                  "anyOf": [
                    {
                      "additionalProperties": true,
                      "type": "object"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Runtime metadata returned by the nested tool, if any."
                },
                "structured_content": {
                  "anyOf": [
                    {
                      "additionalProperties": true,
                      "type": "object"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Structured content returned by the nested tool, if any."
                },
                "success": {
                  "description": "True when this nested tool call succeeded.",
                  "type": "boolean"
                },
                "tool": {
                  "description": "Nested tool name that was attempted.",
                  "type": "string"
                }
              },
              "required": [
                "index",
                "tool",
                "success",
                "elapsed_seconds"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "stopped_at": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Index where processing stopped because on_error='stop', or None when all operations were attempted."
          },
          "succeeded": {
            "description": "Number of nested tool calls that succeeded.",
            "type": "integer"
          }
        },
        "required": [
          "succeeded",
          "failed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "capture_pane",
      "wireName": "capture_pane",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 101
      },
      "description": "Capture the visible contents of a tmux pane (terminal scrollback).\n\nUse for tmux pane output — 'capture the build log', 'what did the\nserver print' — not editor file contents. The tool for reading what\nis displayed in a terminal; use search_panes to search across\nmultiple panes at once.\n\nOutput is tail-preserved: when the capture exceeds ``max_lines``\nthe oldest lines are dropped and the returned string is prefixed\nwith a single ``[... truncated K lines ...]`` header line so the\nagent can tell truncation occurred and re-request with a narrower\n``start``/``end`` window or a larger ``max_lines`` if needed. Pass\n``max_lines=None`` to disable truncation entirely.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "end": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "End line number."
          },
          "max_lines": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": 500,
            "description": "Maximum number of lines to return. Defaults to\n``CAPTURE_DEFAULT_MAX_LINES``. Pass ``None`` to return the\nfull capture with no truncation."
          },
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane ID (e.g. '%1')."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID (e.g. '$1') for pane resolution."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for pane resolution."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "start": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Start line number. 0 is the first visible line. Negative values\nreach into scrollback history (e.g. -100 for last 100 lines)."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID for pane resolution."
          }
        },
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "capture_since",
      "wireName": "capture_since",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 106
      },
      "description": "Capture new tmux terminal scrollback since the previous cursor.\n\nUse for observation-first workflows: tailing a shell, watching a\nlong-running command, or repeatedly checking a tmux workspace pane\nwithout re-sending the same visible screen every turn. The first\ncall with ``cursor=None`` returns the current visible pane and an\nopaque cursor. Later calls pass that cursor back and receive only\nrows written or rewritten after the cursor, as long as tmux still\nretains the required scrollback history.\n\nIf tmux history was cleared or trimmed before the cursor anchor,\nthe tool returns the current visible pane with ``lines_missed=True``\nand a fresh cursor. Malformed cursors, cursors for a different\npane, pane death, and pane respawn fail with ``ExpectedToolError`` so\nagents do not accidentally observe the wrong process.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "cursor": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Opaque cursor returned by a prior ``capture_since`` call. When\nomitted, the tool captures the current visible screen and\nstarts a new cursor."
          },
          "max_bytes": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": 128000,
            "description": "Maximum UTF-8 bytes to return across ``lines``. Defaults to\n``CAPTURE_SINCE_DEFAULT_MAX_BYTES``. Pass ``None`` to\ndisable byte truncation."
          },
          "max_lines": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": 500,
            "description": "Maximum number of lines to return. Defaults to\n``CAPTURE_SINCE_DEFAULT_MAX_LINES``. Pass ``None`` to\ndisable line truncation."
          },
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane ID (e.g. '%1'). Optional when ``cursor`` is supplied; the\ncursor carries the original pane id."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID (e.g. '$1') for pane resolution."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for pane resolution."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID for pane resolution."
          }
        },
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "clear_pane",
      "wireName": "clear_pane",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 141
      },
      "description": "Clear the contents of a tmux pane.\n\nUse before a fresh run_command call or raw-input observation workflow\nwhen prior scrollback would make the result harder to inspect.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane ID (e.g. '%1')."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID (e.g. '$1') for pane resolution."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for pane resolution."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID for pane resolution."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "type": "string"
          }
        },
        "required": [
          "result"
        ],
        "type": "object",
        "x-fastmcp-wrap-result": true
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "teardown"
          ]
        }
      }
    },
    {
      "name": "create_session",
      "wireName": "create_session",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/server_tools.py",
        "line": 372
      },
      "description": "Create a new tmux session.\n\nCheck list_sessions first to avoid name conflicts. A new session\nstarts with one window and one pane. Values in ``environment`` are stored\nin the tmux session environment, so future panes inherit them too.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "environment": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Environment variables to store in the session environment. Accepts\neither a dict of env vars or a JSON-serialized string of the same —\nthe latter is the cursor-composer-1 workaround described in\n:func:`libtmux_mcp._utils._coerce_dict_arg`. Each item appears in the\ntmux client argv as one ``-eKEY=VALUE`` element and may be visible to\nhost process inspection during launch. tmux retains the values in\ntmux session state, where ``show-environment`` can reveal them. They reach\nthe initial and future child environments unless a later spawn\noverrides them. MCP audit redaction does not hide these surfaces. Pass\ncredential references, not literal credentials."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Name for the new session."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name. Defaults to LIBTMUX_SOCKET env var."
          },
          "start_directory": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Existing directory to start in. ``~`` expands; a relative path\nresolves against the MCP server process's directory."
          },
          "suppress_persistent_history": {
            "default": false,
            "description": "Whether to suppress persistent history for the spawned shell. Defaults\nto False for MCP and direct Python calls. This per-call option does not\ninherit LIBTMUX_SUPPRESS_HISTORY. Startup files may override these\ncontrols.",
            "type": "boolean"
          },
          "window_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Name for the initial window."
          },
          "x": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width of the initial window."
          },
          "y": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height of the initial window."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux session.",
        "properties": {
          "active_pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane id (``%N``) of the session's active pane. Guaranteed non-None on ``create_session`` return (libtmux creates the session with one initial pane). May be None from ``list_sessions`` rows for sessions in transient teardown states where ``active_pane`` is unavailable."
          },
          "session_attached": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Attached client count"
          },
          "session_created": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Creation timestamp"
          },
          "session_id": {
            "description": "Session ID (e.g. '$1')",
            "type": "string"
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name"
          },
          "window_count": {
            "description": "Number of windows",
            "type": "integer"
          }
        },
        "required": [
          "session_id",
          "window_count"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "execute"
          ]
        }
      }
    },
    {
      "name": "create_window",
      "wireName": "create_window",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/session_tools.py",
        "line": 364
      },
      "description": "Create a new window in a tmux session.\n\nCreates a window with one pane. Use split_window to add more panes afterward.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "attach": {
            "default": false,
            "description": "Whether to make the new window active.",
            "type": "boolean"
          },
          "direction": {
            "anyOf": [
              {
                "enum": [
                  "before",
                  "after"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window placement direction."
          },
          "environment": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Per-process environment as a mapping or JSON object string. Values do\nnot modify the tmux session environment. Each item becomes a tmux\n``-e`` launch option. Values may be visible to host process inspection\nin the tmux client argv during launch and in the child environment\nafterward; MCP audit redaction does not hide either surface. Pass\ncredential references, not literal credentials."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID (e.g. '$1') to look up."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name to look up."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name. Defaults to LIBTMUX_SOCKET env var."
          },
          "start_directory": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Existing directory to start in. ``~`` expands; a relative path\nresolves against the MCP server process's directory."
          },
          "suppress_persistent_history": {
            "default": false,
            "description": "Whether to suppress persistent history for the spawned shell. Defaults\nto False for MCP and direct Python calls. This per-call option does not\ninherit LIBTMUX_SUPPRESS_HISTORY. Startup files may override these\ncontrols.",
            "type": "boolean"
          },
          "window_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Name for the new window."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux window.",
        "properties": {
          "active_pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane id (``%N``) of the window's active pane."
          },
          "pane_count": {
            "description": "Number of panes",
            "type": "integer"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session ID"
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session name"
          },
          "window_active": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Active flag ('1' or '0')"
          },
          "window_height": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height in rows"
          },
          "window_id": {
            "description": "Window ID (e.g. '@1')",
            "type": "string"
          },
          "window_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window index"
          },
          "window_layout": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Layout string"
          },
          "window_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window name"
          },
          "window_width": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width in columns"
          }
        },
        "required": [
          "window_id",
          "pane_count"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "execute"
          ]
        }
      }
    },
    {
      "name": "delete_buffer",
      "wireName": "delete_buffer",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/buffer_tools.py",
        "line": 401
      },
      "description": "Delete an MCP-owned buffer.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "buffer_name": {
            "description": "Must match the full MCP-namespaced form.",
            "type": "string"
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          }
        },
        "required": [
          "buffer_name"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "type": "string"
          }
        },
        "required": [
          "result"
        ],
        "type": "object",
        "x-fastmcp-wrap-result": true
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "teardown"
          ]
        }
      }
    },
    {
      "name": "display_message",
      "wireName": "display_message",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 179
      },
      "description": "Read tmux variables against a target and return the substituted text.\n\nUse this when no dedicated tool covers the field you want, e.g.\n'#{window_zoomed_flag}', '#{pane_dead}', '#{client_activity}'.\n\nAccepts literal text and '#{variable}' references. Format modifiers,\nconditionals, and jobs are refused: tmux expands '#{E:x}' by running\nx's *value* through the expander again, and a value can arrive from a\npane rather than from the caller. For raw format syntax, run\n'tmux display-message -p' through run_command, where the caller\nsupplies it on a surface labelled execution.\n\nReturned values can carry text a pane chose, such as a working\ndirectory or a running command.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "format_string": {
            "description": "Literal text and '#{variable}' references (e.g.\n'#{cursor_x} #{cursor_y}').",
            "type": "string"
          },
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane ID (e.g. '%1')."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID for pane resolution."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for pane resolution."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID for pane resolution."
          }
        },
        "required": [
          "format_string"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "type": "string"
          }
        },
        "required": [
          "result"
        ],
        "type": "object",
        "x-fastmcp-wrap-result": true
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "enter_copy_mode",
      "wireName": "enter_copy_mode",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 184
      },
      "description": "Enter copy mode in a tmux pane, optionally scrolling up.\n\nUse to navigate scrollback history. After entering copy mode, use\nsnapshot_pane to read the scroll_position and content.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane ID (e.g. '%1')."
          },
          "scroll_up": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Number of lines to scroll up immediately after entering copy mode."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID for pane resolution."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for pane resolution."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID for pane resolution."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux pane.",
        "properties": {
          "is_caller": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCP caller identity for this pane. ``True`` when the pane matches the caller's ``TMUX_PANE`` *and* lives on the same tmux socket as the caller's ``TMUX`` (verified via socket realpath); ``False`` otherwise, including the case where the pane id matches but the socket does not or cannot be proven to; ``None`` when the MCP process is not running inside tmux at all."
          },
          "pane_active": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Active flag ('1' or '0')"
          },
          "pane_at_bottom": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's bottom edge."
          },
          "pane_at_left": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's left edge."
          },
          "pane_at_right": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's right edge."
          },
          "pane_at_top": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's top edge. tmux accounts for ``pane-border-status`` here, so the top row may be 1 instead of 0 when the status bar is at the top."
          },
          "pane_bottom": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Bottom edge row (inclusive), window-relative."
          },
          "pane_current_command": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Running command"
          },
          "pane_current_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Current working directory"
          },
          "pane_height": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height in rows"
          },
          "pane_id": {
            "description": "Pane ID (e.g. '%1')",
            "type": "string"
          },
          "pane_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane index"
          },
          "pane_left": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Left edge column, 0-based and window-relative."
          },
          "pane_pid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Process ID"
          },
          "pane_right": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Right edge column (inclusive), window-relative."
          },
          "pane_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane title"
          },
          "pane_top": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Top edge row, 0-based and window-relative."
          },
          "pane_tty": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TTY device path of the pane (e.g. '/dev/pts/5')."
          },
          "pane_width": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width in columns"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session ID"
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent window ID"
          }
        },
        "required": [
          "pane_id"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "manage"
          ]
        }
      }
    },
    {
      "name": "exit_copy_mode",
      "wireName": "exit_copy_mode",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 189
      },
      "description": "Exit copy mode in a tmux pane.\n\nReturns the pane to normal mode. Use after scrolling through\nscrollback history.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane ID (e.g. '%1')."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID for pane resolution."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for pane resolution."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID for pane resolution."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux pane.",
        "properties": {
          "is_caller": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCP caller identity for this pane. ``True`` when the pane matches the caller's ``TMUX_PANE`` *and* lives on the same tmux socket as the caller's ``TMUX`` (verified via socket realpath); ``False`` otherwise, including the case where the pane id matches but the socket does not or cannot be proven to; ``None`` when the MCP process is not running inside tmux at all."
          },
          "pane_active": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Active flag ('1' or '0')"
          },
          "pane_at_bottom": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's bottom edge."
          },
          "pane_at_left": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's left edge."
          },
          "pane_at_right": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's right edge."
          },
          "pane_at_top": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's top edge. tmux accounts for ``pane-border-status`` here, so the top row may be 1 instead of 0 when the status bar is at the top."
          },
          "pane_bottom": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Bottom edge row (inclusive), window-relative."
          },
          "pane_current_command": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Running command"
          },
          "pane_current_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Current working directory"
          },
          "pane_height": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height in rows"
          },
          "pane_id": {
            "description": "Pane ID (e.g. '%1')",
            "type": "string"
          },
          "pane_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane index"
          },
          "pane_left": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Left edge column, 0-based and window-relative."
          },
          "pane_pid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Process ID"
          },
          "pane_right": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Right edge column (inclusive), window-relative."
          },
          "pane_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane title"
          },
          "pane_top": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Top edge row, 0-based and window-relative."
          },
          "pane_tty": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TTY device path of the pane (e.g. '/dev/pts/5')."
          },
          "pane_width": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width in columns"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session ID"
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent window ID"
          }
        },
        "required": [
          "pane_id"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "manage"
          ]
        }
      }
    },
    {
      "name": "find_pane_by_position",
      "wireName": "find_pane_by_position",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 136
      },
      "description": "Find the pane occupying a corner of a tmux window.\n\nComposes the four ``pane_at_*`` predicates so callers can target a\nlayout-relative position (e.g. \"the bottom-right pane\") in one\nround-trip instead of listing every pane and computing the\ngeometry. Resolves the window the same way as the other\nwindow-scoped tools.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "corner": {
            "description": "One of ``'top-left'``, ``'top-right'``, ``'bottom-left'``,\n``'bottom-right'``.",
            "enum": [
              "top-left",
              "top-right",
              "bottom-left",
              "bottom-right"
            ],
            "type": "string"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID (e.g. '@1')."
          },
          "window_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window index. Requires session_name or session_id."
          }
        },
        "required": [
          "corner"
        ],
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux pane.",
        "properties": {
          "is_caller": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCP caller identity for this pane. ``True`` when the pane matches the caller's ``TMUX_PANE`` *and* lives on the same tmux socket as the caller's ``TMUX`` (verified via socket realpath); ``False`` otherwise, including the case where the pane id matches but the socket does not or cannot be proven to; ``None`` when the MCP process is not running inside tmux at all."
          },
          "pane_active": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Active flag ('1' or '0')"
          },
          "pane_at_bottom": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's bottom edge."
          },
          "pane_at_left": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's left edge."
          },
          "pane_at_right": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's right edge."
          },
          "pane_at_top": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's top edge. tmux accounts for ``pane-border-status`` here, so the top row may be 1 instead of 0 when the status bar is at the top."
          },
          "pane_bottom": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Bottom edge row (inclusive), window-relative."
          },
          "pane_current_command": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Running command"
          },
          "pane_current_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Current working directory"
          },
          "pane_height": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height in rows"
          },
          "pane_id": {
            "description": "Pane ID (e.g. '%1')",
            "type": "string"
          },
          "pane_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane index"
          },
          "pane_left": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Left edge column, 0-based and window-relative."
          },
          "pane_pid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Process ID"
          },
          "pane_right": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Right edge column (inclusive), window-relative."
          },
          "pane_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane title"
          },
          "pane_top": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Top edge row, 0-based and window-relative."
          },
          "pane_tty": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TTY device path of the pane (e.g. '/dev/pts/5')."
          },
          "pane_width": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width in columns"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session ID"
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent window ID"
          }
        },
        "required": [
          "pane_id"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "get_pane_info",
      "wireName": "get_pane_info",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 131
      },
      "description": "Get detailed information about a tmux pane.\n\nUse this for metadata (PID, path, dimensions) without reading terminal content.\nTo read what is displayed in the pane, use capture_pane instead.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane ID (e.g. '%1')."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID (e.g. '$1') for pane resolution."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for pane resolution."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID for pane resolution."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux pane.",
        "properties": {
          "is_caller": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCP caller identity for this pane. ``True`` when the pane matches the caller's ``TMUX_PANE`` *and* lives on the same tmux socket as the caller's ``TMUX`` (verified via socket realpath); ``False`` otherwise, including the case where the pane id matches but the socket does not or cannot be proven to; ``None`` when the MCP process is not running inside tmux at all."
          },
          "pane_active": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Active flag ('1' or '0')"
          },
          "pane_at_bottom": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's bottom edge."
          },
          "pane_at_left": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's left edge."
          },
          "pane_at_right": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's right edge."
          },
          "pane_at_top": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's top edge. tmux accounts for ``pane-border-status`` here, so the top row may be 1 instead of 0 when the status bar is at the top."
          },
          "pane_bottom": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Bottom edge row (inclusive), window-relative."
          },
          "pane_current_command": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Running command"
          },
          "pane_current_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Current working directory"
          },
          "pane_height": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height in rows"
          },
          "pane_id": {
            "description": "Pane ID (e.g. '%1')",
            "type": "string"
          },
          "pane_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane index"
          },
          "pane_left": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Left edge column, 0-based and window-relative."
          },
          "pane_pid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Process ID"
          },
          "pane_right": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Right edge column (inclusive), window-relative."
          },
          "pane_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane title"
          },
          "pane_top": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Top edge row, 0-based and window-relative."
          },
          "pane_tty": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TTY device path of the pane (e.g. '/dev/pts/5')."
          },
          "pane_width": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width in columns"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session ID"
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent window ID"
          }
        },
        "required": [
          "pane_id"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "get_server_info",
      "wireName": "get_server_info",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/server_tools.py",
        "line": 382
      },
      "description": "Get information about the tmux server.\n\nUse to verify the tmux server is running before other operations.\nFor session-level details, use list_sessions instead.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name. Defaults to LIBTMUX_SOCKET env var."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux server info.",
        "properties": {
          "is_alive": {
            "description": "Whether the server is running",
            "type": "boolean"
          },
          "session_count": {
            "description": "Number of sessions",
            "type": "integer"
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Socket name"
          },
          "socket_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Socket path"
          },
          "version": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux version"
          }
        },
        "required": [
          "is_alive",
          "session_count"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "get_session_info",
      "wireName": "get_session_info",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/session_tools.py",
        "line": 359
      },
      "description": "Return metadata for a single tmux session (ID, name, window count, activity).\n\nUse this instead of list_sessions + filter when you only need one\nsession's info. Resolves by session_id first; falls back to\nsession_name.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID (e.g. '$0')."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux session.",
        "properties": {
          "active_pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane id (``%N``) of the session's active pane. Guaranteed non-None on ``create_session`` return (libtmux creates the session with one initial pane). May be None from ``list_sessions`` rows for sessions in transient teardown states where ``active_pane`` is unavailable."
          },
          "session_attached": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Attached client count"
          },
          "session_created": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Creation timestamp"
          },
          "session_id": {
            "description": "Session ID (e.g. '$1')",
            "type": "string"
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name"
          },
          "window_count": {
            "description": "Number of windows",
            "type": "integer"
          }
        },
        "required": [
          "session_id",
          "window_count"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "get_window_info",
      "wireName": "get_window_info",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/window_tools.py",
        "line": 507
      },
      "description": "Return metadata for a single tmux window (ID, name, layout, dimensions).\n\nUse this instead of list_windows + filter when you only need one\nwindow's info. Resolves the window by window_id first; falls back\nto window_index within a session if window_id is not given.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID for window_index lookup."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for window_index lookup."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID (e.g. '@1')."
          },
          "window_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window index within the session. Requires session_name or\nsession_id to disambiguate."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux window.",
        "properties": {
          "active_pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane id (``%N``) of the window's active pane."
          },
          "pane_count": {
            "description": "Number of panes",
            "type": "integer"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session ID"
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session name"
          },
          "window_active": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Active flag ('1' or '0')"
          },
          "window_height": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height in rows"
          },
          "window_id": {
            "description": "Window ID (e.g. '@1')",
            "type": "string"
          },
          "window_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window index"
          },
          "window_layout": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Layout string"
          },
          "window_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window name"
          },
          "window_width": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width in columns"
          }
        },
        "required": [
          "window_id",
          "pane_count"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "kill_pane",
      "wireName": "kill_pane",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 116
      },
      "description": "Kill (close) a tmux pane. Requires exact pane_id (e.g. '%5').\n\nUse to clean up panes no longer needed. To remove an entire window\nand all its panes, use kill_window instead.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "pane_id": {
            "description": "Pane ID (e.g. '%1'). Required — no fallback resolution.",
            "type": "string"
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          }
        },
        "required": [
          "pane_id"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "type": "string"
          }
        },
        "required": [
          "result"
        ],
        "type": "object",
        "x-fastmcp-wrap-result": true
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "teardown"
          ]
        }
      }
    },
    {
      "name": "kill_server",
      "wireName": "kill_server",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/server_tools.py",
        "line": 377
      },
      "description": "Kill the tmux server and all its sessions.\n\nDestroys ALL sessions, windows, and panes on this server. Use kill_session\nto remove a single session instead. Self-kill protection prevents killing\nthe server running this MCP process.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name. Defaults to LIBTMUX_SOCKET env var."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "type": "string"
          }
        },
        "required": [
          "result"
        ],
        "type": "object",
        "x-fastmcp-wrap-result": true
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "teardown"
          ]
        }
      }
    },
    {
      "name": "kill_session",
      "wireName": "kill_session",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/session_tools.py",
        "line": 374
      },
      "description": "Kill a tmux session.\n\nDestroys the session and all its windows and panes. Use kill_window\nto remove a single window instead. Self-kill protection prevents\nkilling the session containing this MCP process.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID (e.g. '$1') to look up."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name to look up."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name. Defaults to LIBTMUX_SOCKET env var."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "type": "string"
          }
        },
        "required": [
          "result"
        ],
        "type": "object",
        "x-fastmcp-wrap-result": true
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "teardown"
          ]
        }
      }
    },
    {
      "name": "kill_window",
      "wireName": "kill_window",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/window_tools.py",
        "line": 522
      },
      "description": "Kill (close) a tmux window. Requires exact window_id (e.g. '@3').\n\nDestroys the window and all its panes. Use kill_pane to remove a single\npane instead. Self-kill protection prevents killing the window containing\nthis MCP process.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "description": "Window ID (e.g. '@1'). Required — no fallback resolution.",
            "type": "string"
          }
        },
        "required": [
          "window_id"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "type": "string"
          }
        },
        "required": [
          "result"
        ],
        "type": "object",
        "x-fastmcp-wrap-result": true
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "teardown"
          ]
        }
      }
    },
    {
      "name": "list_panes",
      "wireName": "list_panes",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/window_tools.py",
        "line": 501
      },
      "description": "List tmux panes (terminal multiplexer splits) in a window, session, or server.\n\nUse for terminal panes — including 'this pane', 'current pane',\n'split pane', 'the bottom shell' — not editor splits or browser panes.\nOnly searches pane metadata (current command, title, working directory);\nto search the actual visible terminal text, use search_panes.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "filters": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Django-style filters as a dict\n(e.g. ``{\"pane_current_command__contains\": \"vim\"}``)\nor as a JSON string. Some MCP clients require the string form."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID. If given without window params, lists all panes\nin the session."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name. If given without window params, lists all panes\nin the session."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID (e.g. '@1'). Scopes to a single window."
          },
          "window_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window index within the session. Scopes to a single window."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "items": {
              "description": "Serialized tmux pane.",
              "properties": {
                "is_caller": {
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "MCP caller identity for this pane. ``True`` when the pane matches the caller's ``TMUX_PANE`` *and* lives on the same tmux socket as the caller's ``TMUX`` (verified via socket realpath); ``False`` otherwise, including the case where the pane id matches but the socket does not or cannot be proven to; ``None`` when the MCP process is not running inside tmux at all."
                },
                "pane_active": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Active flag ('1' or '0')"
                },
                "pane_at_bottom": {
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "True when the pane touches the window's bottom edge."
                },
                "pane_at_left": {
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "True when the pane touches the window's left edge."
                },
                "pane_at_right": {
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "True when the pane touches the window's right edge."
                },
                "pane_at_top": {
                  "anyOf": [
                    {
                      "type": "boolean"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "True when the pane touches the window's top edge. tmux accounts for ``pane-border-status`` here, so the top row may be 1 instead of 0 when the status bar is at the top."
                },
                "pane_bottom": {
                  "anyOf": [
                    {
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Bottom edge row (inclusive), window-relative."
                },
                "pane_current_command": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Running command"
                },
                "pane_current_path": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Current working directory"
                },
                "pane_height": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Height in rows"
                },
                "pane_id": {
                  "description": "Pane ID (e.g. '%1')",
                  "type": "string"
                },
                "pane_index": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Pane index"
                },
                "pane_left": {
                  "anyOf": [
                    {
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Left edge column, 0-based and window-relative."
                },
                "pane_pid": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Process ID"
                },
                "pane_right": {
                  "anyOf": [
                    {
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Right edge column (inclusive), window-relative."
                },
                "pane_title": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Pane title"
                },
                "pane_top": {
                  "anyOf": [
                    {
                      "type": "integer"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Top edge row, 0-based and window-relative."
                },
                "pane_tty": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "TTY device path of the pane (e.g. '/dev/pts/5')."
                },
                "pane_width": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Width in columns"
                },
                "session_id": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Parent session ID"
                },
                "window_id": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Parent window ID"
                }
              },
              "required": [
                "pane_id"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "result"
        ],
        "type": "object",
        "x-fastmcp-wrap-result": true
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "anthropic/alwaysLoad": true,
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "list_servers",
      "wireName": "list_servers",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/server_tools.py",
        "line": 367
      },
      "description": "Discover live tmux servers under the current user's ``$TMUX_TMPDIR``.\n\nScans ``${TMUX_TMPDIR:-/tmp}/tmux-<uid>/`` for socket files — the\ncanonical location where tmux creates per-server sockets (see\ntmux.c's ``expand_paths`` + ``TMUX_SOCK`` template). Only sockets\nwith a live listener are reported; stale inodes (a common case on\nlong-running systems where ``$TMUX_TMPDIR`` can carry thousands of\norphans) are silently filtered.\n\n**Scope caveat**: custom ``tmux -S /some/path/...`` servers that\nlive OUTSIDE ``$TMUX_TMPDIR`` are not returned by the scan alone —\nthere is no canonical registry for arbitrary socket paths. Supply\nknown paths via ``extra_socket_paths`` to include them in the\nresult, or pass the path to other tools via their ``socket_name``\n/ ``socket_path`` parameters once known.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "extra_socket_paths": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Additional filesystem paths to probe alongside the\n``$TMUX_TMPDIR`` scan. Each path is checked for liveness (UNIX\n``connect()``) and queried for server metadata. Paths that do\nnot exist, are not sockets, or have no listener are silently\nskipped."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "items": {
              "description": "Serialized tmux server info.",
              "properties": {
                "is_alive": {
                  "description": "Whether the server is running",
                  "type": "boolean"
                },
                "session_count": {
                  "description": "Number of sessions",
                  "type": "integer"
                },
                "socket_name": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Socket name"
                },
                "socket_path": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Socket path"
                },
                "version": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "tmux version"
                }
              },
              "required": [
                "is_alive",
                "session_count"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "result"
        ],
        "type": "object",
        "x-fastmcp-wrap-result": true
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "list_sessions",
      "wireName": "list_sessions",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/server_tools.py",
        "line": 362
      },
      "description": "List tmux sessions (terminal workspaces) on a tmux server.\n\nUse for tmux multiplexer sessions — 'this session', 'my workspace',\n'the dev session' — not login sessions or HTTP sessions. The starting\npoint for discovery — call this before targeting specific sessions,\nwindows, or panes.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "filters": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Django-style filters as a dict (e.g. ``{\"session_name__contains\": \"dev\"}``)\nor as a JSON string. Some MCP clients require the string form."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name. Defaults to LIBTMUX_SOCKET env var."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "items": {
              "description": "Serialized tmux session.",
              "properties": {
                "active_pane_id": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Pane id (``%N``) of the session's active pane. Guaranteed non-None on ``create_session`` return (libtmux creates the session with one initial pane). May be None from ``list_sessions`` rows for sessions in transient teardown states where ``active_pane`` is unavailable."
                },
                "session_attached": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Attached client count"
                },
                "session_created": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Creation timestamp"
                },
                "session_id": {
                  "description": "Session ID (e.g. '$1')",
                  "type": "string"
                },
                "session_name": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Session name"
                },
                "window_count": {
                  "description": "Number of windows",
                  "type": "integer"
                }
              },
              "required": [
                "session_id",
                "window_count"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "result"
        ],
        "type": "object",
        "x-fastmcp-wrap-result": true
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "list_windows",
      "wireName": "list_windows",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/session_tools.py",
        "line": 353
      },
      "description": "List tmux windows (terminal tabs) in a session, or across the server.\n\nUse for tmux windows — 'current window', 'this tab' (when terminal-\ncontextual) — not browser tabs or desktop windows. Only searches\nwindow metadata (name, index, layout); to search the actual visible\nterminal text, use search_panes.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "filters": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Django-style filters as a dict (e.g. ``{\"window_name__contains\": \"dev\"}``)\nor as a JSON string. Some MCP clients require the string form."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID (e.g. '$1') to look up."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name to look up. If omitted along with session_id,\nreturns windows from all sessions."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name. Defaults to LIBTMUX_SOCKET env var."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "items": {
              "description": "Serialized tmux window.",
              "properties": {
                "active_pane_id": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Pane id (``%N``) of the window's active pane."
                },
                "pane_count": {
                  "description": "Number of panes",
                  "type": "integer"
                },
                "session_id": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Parent session ID"
                },
                "session_name": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Parent session name"
                },
                "window_active": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Active flag ('1' or '0')"
                },
                "window_height": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Height in rows"
                },
                "window_id": {
                  "description": "Window ID (e.g. '@1')",
                  "type": "string"
                },
                "window_index": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Window index"
                },
                "window_layout": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Layout string"
                },
                "window_name": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Window name"
                },
                "window_width": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Width in columns"
                }
              },
              "required": [
                "window_id",
                "pane_count"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "result"
        ],
        "type": "object",
        "x-fastmcp-wrap-result": true
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "anthropic/alwaysLoad": true,
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "load_buffer",
      "wireName": "load_buffer",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/buffer_tools.py",
        "line": 386
      },
      "description": "Load text into a new agent-namespaced tmux paste buffer.\n\nEach call allocates a fresh buffer name — two concurrent calls will\nland in distinct buffers even if they pass the same ``logical_name``.\nAgents MUST use the returned\n:attr:`~libtmux_mcp.models.BufferRef.buffer_name` on\nsubsequent paste/show/delete calls.\n\n**When to use this vs. paste_text:** ``load_buffer`` is the\nstage-then-fire path — you get a handle back and can inspect via\n``show_buffer``, paste into multiple panes via ``paste_buffer``,\nor hold the content for later. Use ``paste_text`` for a simple\none-shot paste with no follow-up.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "content": {
            "description": "The text to stage. Can be multi-line. Redacted in audit logs.",
            "type": "string"
          },
          "logical_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Short label for the buffer. Limited to\n``[A-Za-z0-9_.-]{1,64}`` so the final name stays safe on the\ntmux command line. Empty or ``None`` uses ``\"buf\"``."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          }
        },
        "required": [
          "content"
        ],
        "type": "object"
      },
      "outputSchema": {
        "description": "Handle returned by :func:`~libtmux_mcp.tools.buffer_tools.load_buffer`.\n\nAgent-created tmux paste buffers are namespaced with a per-call UUID\nto avoid collisions on the server-global buffer namespace when\nconcurrent agents (or parallel tool calls from a single agent) are\nstaging content. Callers must use the ``buffer_name`` this model\ncarries on subsequent\n:func:`~libtmux_mcp.tools.buffer_tools.paste_buffer`,\n:func:`~libtmux_mcp.tools.buffer_tools.show_buffer`, and\n:func:`~libtmux_mcp.tools.buffer_tools.delete_buffer` calls.",
        "properties": {
          "buffer_name": {
            "description": "The actual tmux buffer name (with prefix and UUID nonce). Pass this back to paste_buffer/show_buffer/delete_buffer.",
            "type": "string"
          },
          "logical_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Optional logical name supplied by the caller, if any."
          }
        },
        "required": [
          "buffer_name"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "manage"
          ]
        }
      }
    },
    {
      "name": "move_window",
      "wireName": "move_window",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/window_tools.py",
        "line": 537
      },
      "description": "Move a window to a different index or session.\n\nReorder windows within a session or move a window to another session.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "destination_index": {
            "default": "",
            "description": "Target window index. Default empty string (next available).",
            "type": "string"
          },
          "destination_session": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Target session name or ID. Default is current session."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Source session ID."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Source session name."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID (e.g. '@1')."
          },
          "window_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window index within the session."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux window.",
        "properties": {
          "active_pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane id (``%N``) of the window's active pane."
          },
          "pane_count": {
            "description": "Number of panes",
            "type": "integer"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session ID"
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session name"
          },
          "window_active": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Active flag ('1' or '0')"
          },
          "window_height": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height in rows"
          },
          "window_id": {
            "description": "Window ID (e.g. '@1')",
            "type": "string"
          },
          "window_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window index"
          },
          "window_layout": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Layout string"
          },
          "window_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window name"
          },
          "window_width": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width in columns"
          }
        },
        "required": [
          "window_id",
          "pane_count"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "manage"
          ]
        }
      }
    },
    {
      "name": "paste_buffer",
      "wireName": "paste_buffer",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/buffer_tools.py",
        "line": 391
      },
      "description": "Paste an MCP-owned buffer into a pane.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "bracket": {
            "default": true,
            "description": "Use tmux bracketed paste mode. Default True.",
            "type": "boolean"
          },
          "buffer_name": {
            "description": "Must match the full MCP-namespaced form returned by\n:func:`~libtmux_mcp.tools.buffer_tools.load_buffer`.\nNon-MCP buffers are rejected so the tool cannot be turned into\nan arbitrary-buffer reader.",
            "type": "string"
          },
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Target pane ID."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane resolution fallbacks."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane resolution fallbacks."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane resolution fallbacks."
          }
        },
        "required": [
          "buffer_name"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "type": "string"
          }
        },
        "required": [
          "result"
        ],
        "type": "object",
        "x-fastmcp-wrap-result": true
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "execute"
          ]
        }
      }
    },
    {
      "name": "paste_text",
      "wireName": "paste_text",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 194
      },
      "description": "Paste multi-line text into a pane using tmux paste buffers.\n\nUses tmux's load-buffer and paste-buffer for clean multi-line input,\navoiding the issues of sending text line-by-line via send_keys.\nSupports bracketed paste mode for terminals that handle it.\n\n**When to use this vs. load_buffer + paste_buffer:** ``paste_text``\nis the fire-and-forget path — the buffer is created, pasted, and\ndeleted in one call. Use ``load_buffer`` + ``paste_buffer`` when\nyou need to stage content first, paste it into multiple panes, or\ninspect it with ``show_buffer`` before pasting.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "bracket": {
            "default": true,
            "description": "Whether to use bracketed paste mode. Default True.\nBracketed paste wraps the text in escape sequences that tell\nthe terminal \"this is pasted text, not typed input\".",
            "type": "boolean"
          },
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane ID (e.g. '%1')."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID for pane resolution."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for pane resolution."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "text": {
            "description": "The text to paste.",
            "type": "string"
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID for pane resolution."
          }
        },
        "required": [
          "text"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "type": "string"
          }
        },
        "required": [
          "result"
        ],
        "type": "object",
        "x-fastmcp-wrap-result": true
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "execute"
          ]
        }
      }
    },
    {
      "name": "pipe_pane",
      "wireName": "pipe_pane",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 174
      },
      "description": "Log a pane's live output to a file (or stop an active log).\n\nStreams everything written to the pane (stdout plus terminal\ncontrol sequences) into a file on disk — the common use is\n``output_path=\"/tmp/pane.log\"`` to capture scrollback continuously\nwhile the agent watches for errors. When ``output_path`` is given,\nstarts logging; when ``output_path`` is None, stops any active pipe\nfor the pane.\n\n.. warning::\n   This tool writes to arbitrary filesystem paths chosen by the MCP\n   client. There is no allow-list; the server will create files\n   anywhere the server process has write access. Treat this as\n   elevated-risk: it is the broadest-reach tool in ``execute``. If\n   you run libtmux-mcp on untrusted input, consider\n   ``LIBTMUX_TOOLSETS=inspect`` or run the server under a user with\n   a scoped home directory. See :doc:`/topics/trust` for the full\n   footgun list.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "append": {
            "default": true,
            "description": "Whether to append to the file. Default True. If False, overwrites.",
            "type": "boolean"
          },
          "output_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "File path to write output to. None stops piping."
          },
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane ID (e.g. '%1')."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID for pane resolution."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for pane resolution."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID for pane resolution."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "type": "string"
          }
        },
        "required": [
          "result"
        ],
        "type": "object",
        "x-fastmcp-wrap-result": true
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "execute"
          ]
        }
      }
    },
    {
      "name": "rename_session",
      "wireName": "rename_session",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/session_tools.py",
        "line": 369
      },
      "description": "Rename a tmux session.\n\nUse when a session's purpose has changed. Existing pane_id references\nremain valid after renaming.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "new_name": {
            "description": "New name for the session.",
            "type": "string"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID (e.g. '$1') to look up."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Current session name to look up."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name. Defaults to LIBTMUX_SOCKET env var."
          }
        },
        "required": [
          "new_name"
        ],
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux session.",
        "properties": {
          "active_pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane id (``%N``) of the session's active pane. Guaranteed non-None on ``create_session`` return (libtmux creates the session with one initial pane). May be None from ``list_sessions`` rows for sessions in transient teardown states where ``active_pane`` is unavailable."
          },
          "session_attached": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Attached client count"
          },
          "session_created": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Creation timestamp"
          },
          "session_id": {
            "description": "Session ID (e.g. '$1')",
            "type": "string"
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name"
          },
          "window_count": {
            "description": "Number of windows",
            "type": "integer"
          }
        },
        "required": [
          "session_id",
          "window_count"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "manage"
          ]
        }
      }
    },
    {
      "name": "rename_window",
      "wireName": "rename_window",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/window_tools.py",
        "line": 517
      },
      "description": "Rename a tmux window.\n\nUse when a window's purpose has changed. Existing window_id references\nremain valid after renaming.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "new_name": {
            "description": "The new name for the window.",
            "type": "string"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID (e.g. '@1')."
          },
          "window_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window index within the session."
          }
        },
        "required": [
          "new_name"
        ],
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux window.",
        "properties": {
          "active_pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane id (``%N``) of the window's active pane."
          },
          "pane_count": {
            "description": "Number of panes",
            "type": "integer"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session ID"
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session name"
          },
          "window_active": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Active flag ('1' or '0')"
          },
          "window_height": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height in rows"
          },
          "window_id": {
            "description": "Window ID (e.g. '@1')",
            "type": "string"
          },
          "window_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window index"
          },
          "window_layout": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Layout string"
          },
          "window_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window name"
          },
          "window_width": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width in columns"
          }
        },
        "required": [
          "window_id",
          "pane_count"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "manage"
          ]
        }
      }
    },
    {
      "name": "resize_pane",
      "wireName": "resize_pane",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 111
      },
      "description": "Resize a tmux pane.\n\nUse when adjusting layout for better readability or to fit content.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "height": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "New height in lines."
          },
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane ID (e.g. '%1')."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID (e.g. '$1') for pane resolution."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for pane resolution."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "width": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "New width in columns."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID for pane resolution."
          },
          "zoom": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Toggle pane zoom. If True, zoom the pane. If False, unzoom."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux pane.",
        "properties": {
          "is_caller": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCP caller identity for this pane. ``True`` when the pane matches the caller's ``TMUX_PANE`` *and* lives on the same tmux socket as the caller's ``TMUX`` (verified via socket realpath); ``False`` otherwise, including the case where the pane id matches but the socket does not or cannot be proven to; ``None`` when the MCP process is not running inside tmux at all."
          },
          "pane_active": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Active flag ('1' or '0')"
          },
          "pane_at_bottom": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's bottom edge."
          },
          "pane_at_left": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's left edge."
          },
          "pane_at_right": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's right edge."
          },
          "pane_at_top": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's top edge. tmux accounts for ``pane-border-status`` here, so the top row may be 1 instead of 0 when the status bar is at the top."
          },
          "pane_bottom": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Bottom edge row (inclusive), window-relative."
          },
          "pane_current_command": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Running command"
          },
          "pane_current_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Current working directory"
          },
          "pane_height": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height in rows"
          },
          "pane_id": {
            "description": "Pane ID (e.g. '%1')",
            "type": "string"
          },
          "pane_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane index"
          },
          "pane_left": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Left edge column, 0-based and window-relative."
          },
          "pane_pid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Process ID"
          },
          "pane_right": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Right edge column (inclusive), window-relative."
          },
          "pane_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane title"
          },
          "pane_top": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Top edge row, 0-based and window-relative."
          },
          "pane_tty": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TTY device path of the pane (e.g. '/dev/pts/5')."
          },
          "pane_width": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width in columns"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session ID"
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent window ID"
          }
        },
        "required": [
          "pane_id"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "manage"
          ]
        }
      }
    },
    {
      "name": "resize_window",
      "wireName": "resize_window",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/window_tools.py",
        "line": 532
      },
      "description": "Resize a tmux window.\n\nUse to adjust the window dimensions. This affects all panes within the window.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "height": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "New height in lines."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "width": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "New width in columns."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID (e.g. '@1')."
          },
          "window_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window index within the session."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux window.",
        "properties": {
          "active_pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane id (``%N``) of the window's active pane."
          },
          "pane_count": {
            "description": "Number of panes",
            "type": "integer"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session ID"
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session name"
          },
          "window_active": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Active flag ('1' or '0')"
          },
          "window_height": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height in rows"
          },
          "window_id": {
            "description": "Window ID (e.g. '@1')",
            "type": "string"
          },
          "window_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window index"
          },
          "window_layout": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Layout string"
          },
          "window_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window name"
          },
          "window_width": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width in columns"
          }
        },
        "required": [
          "window_id",
          "pane_count"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "manage"
          ]
        }
      }
    },
    {
      "name": "respawn_pane",
      "wireName": "respawn_pane",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 121
      },
      "description": "Restart a pane's process in place, preserving pane_id and layout.\n\nUse when a shell wedges (hung REPL, runaway process, bad terminal\nmode). The alternative — kill_pane + split_window — destroys\npane_id references the agent may still be holding, and rearranges\nthe layout. respawn-pane preserves both.\n\nWith ``kill=True`` (the default), tmux kills the existing process\nbefore respawning. Optional ``shell`` replaces the command tmux\nrelaunches; ``start_directory`` sets the working directory for\nthe new process; ``environment`` sets per-process environment\nvariables for the relaunched command (one ``-e KEY=VALUE`` flag\nper entry).\n\n``pane_id`` is required — sibling pane tools accept a hierarchical\nfallback (``session_name`` / ``window_id`` / ``pane_index``) that\nresolves to \"first pane in session/window\", but combined with\ndefault ``kill=True`` that fallback could silently kill an\nunrelated process. The signature deliberately omits the resolver\nfields so the FastMCP schema rejects them at the framework\nboundary. Resolve via ``list_panes`` first.\n\nTip: call ``get_pane_info`` first if you need to capture\n``pane_current_command`` before respawn — the new process loses its\nargv. Omitting ``shell`` makes tmux replay the original argv (good\ndefault for shells; may differ for processes spawned via custom\nshell at split time).",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "environment": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Environment variables to set for the relaunched process. Each\nitem becomes one ``-e KEY=VALUE`` flag (tmux's\n``cmd-respawn-pane.c`` supports the flag repeatedly). Values\nsupplied in a mapping are redacted in the audit log on a\nper-key basis — keys like ``DATABASE_URL`` remain visible but\ntheir values are replaced by ``{len, sha256_prefix}`` digests.\nA JSON object string is redacted as one scalar digest, so its\nkeys are not retained in the audit record. Values may still\nappear briefly in the OS process table while tmux spawns the\nnew process; do not pass long-lived secrets here when a\nhost-resident agent or other tenant could observe ``ps``."
          },
          "kill": {
            "default": true,
            "description": "When True (default), pass ``-k`` to tmux so the current\nprocess is killed before respawning. When False, respawn\nfails if the pane already has a running process.",
            "type": "boolean"
          },
          "pane_id": {
            "description": "Pane ID (e.g. '%1'). Required.",
            "type": "string"
          },
          "shell": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Replacement command for tmux to launch. When omitted, tmux\nreplays the original argv (good default for shells; may differ\nfor processes spawned via custom shell at split time). Matches\nthe ``shell`` parameter on :func:`split_window` and the\neventual upstream ``Pane.respawn(shell=)`` API."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "start_directory": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Existing directory to start in. ``~`` expands; a relative path\nresolves against the MCP server process's directory."
          },
          "suppress_persistent_history": {
            "default": false,
            "description": "Whether to suppress persistent history for the spawned shell. Defaults\nto False for MCP and direct Python calls. This per-call option does not\ninherit LIBTMUX_SUPPRESS_HISTORY. Startup files may override these\ncontrols.",
            "type": "boolean"
          }
        },
        "required": [
          "pane_id"
        ],
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux pane.",
        "properties": {
          "is_caller": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCP caller identity for this pane. ``True`` when the pane matches the caller's ``TMUX_PANE`` *and* lives on the same tmux socket as the caller's ``TMUX`` (verified via socket realpath); ``False`` otherwise, including the case where the pane id matches but the socket does not or cannot be proven to; ``None`` when the MCP process is not running inside tmux at all."
          },
          "pane_active": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Active flag ('1' or '0')"
          },
          "pane_at_bottom": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's bottom edge."
          },
          "pane_at_left": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's left edge."
          },
          "pane_at_right": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's right edge."
          },
          "pane_at_top": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's top edge. tmux accounts for ``pane-border-status`` here, so the top row may be 1 instead of 0 when the status bar is at the top."
          },
          "pane_bottom": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Bottom edge row (inclusive), window-relative."
          },
          "pane_current_command": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Running command"
          },
          "pane_current_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Current working directory"
          },
          "pane_height": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height in rows"
          },
          "pane_id": {
            "description": "Pane ID (e.g. '%1')",
            "type": "string"
          },
          "pane_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane index"
          },
          "pane_left": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Left edge column, 0-based and window-relative."
          },
          "pane_pid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Process ID"
          },
          "pane_right": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Right edge column (inclusive), window-relative."
          },
          "pane_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane title"
          },
          "pane_top": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Top edge row, 0-based and window-relative."
          },
          "pane_tty": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TTY device path of the pane (e.g. '/dev/pts/5')."
          },
          "pane_width": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width in columns"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session ID"
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent window ID"
          }
        },
        "required": [
          "pane_id"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "execute"
          ]
        }
      }
    },
    {
      "name": "run_command",
      "wireName": "run_command",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 96
      },
      "description": "Run a shell command in a pane, wait for completion, and capture output.\n\nUse for the common terminal workflow: run this command, wait until it\ncompletes, then report whether it succeeded. The command is sent to\nthe pane's interactive shell, followed by a private ``tmux wait-for``\nsignal and a private pane option carrying the shell exit status. This\nis the AUTHORED-output path — the command you pass is what the wait\nsynchronizes on. Reserve ``wait_for_text`` for output you did not\nauthor: another process, a human, or a background job.\n\nThe command runs in a subshell, so ``cd``, ``export`` and other shell\nstate changes do not persist to later calls.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "command": {
            "description": "Shell command to run in the target pane.",
            "type": "string"
          },
          "max_lines": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Maximum pane output lines to return. Defaults to all captured\nvisible output; pass a small value for a tail-only summary."
          },
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane ID (e.g. '%1')."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID (e.g. '$1') for pane resolution."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for pane resolution."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "suppress_history": {
            "default": true,
            "description": "For MCP calls, omission uses the server's LIBTMUX_SUPPRESS_HISTORY\ndefault; an explicit value overrides it. Direct Python calls default\nto False. Best effort: the shell must honor space-prefixed history\nsuppression. Suppression requires a single-line command; multiline\ncommands remain available when suppression is false.",
            "type": "boolean"
          },
          "timeout": {
            "default": 30,
            "description": "Maximum seconds to wait for command completion. Capped by the\nsame server wait ceiling as ``wait_for_text``; an over-large\nvalue is not an error — the wait returns at the ceiling and\nthe timeout actually enforced is reported on\n``RunCommandResult.effective_timeout``.",
            "type": "number"
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID for pane resolution."
          }
        },
        "required": [
          "command"
        ],
        "type": "object"
      },
      "outputSchema": {
        "description": "Result of running a shell command in a pane.",
        "properties": {
          "effective_timeout": {
            "description": "Seconds actually enforced for command completion. Server policy caps the requested ``timeout``; compare against what you passed to see a clamp.",
            "type": "number"
          },
          "elapsed_seconds": {
            "description": "Time spent waiting in seconds",
            "type": "number"
          },
          "exit_status": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Shell exit status, or None when the command timed out"
          },
          "output": {
            "description": "Tail-preserved pane output after the wait completes",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "output_truncated": {
            "default": false,
            "description": "True when output was tail-preserved to stay within max_lines",
            "type": "boolean"
          },
          "output_truncated_lines": {
            "default": 0,
            "description": "Number of pane lines dropped from the head when truncating",
            "type": "integer"
          },
          "pane_id": {
            "description": "Pane ID that received the command",
            "type": "string"
          },
          "timed_out": {
            "description": "True when the wait timed out",
            "type": "boolean"
          }
        },
        "required": [
          "pane_id",
          "timed_out",
          "elapsed_seconds",
          "effective_timeout"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "execute",
            "self-bounded"
          ]
        }
      }
    },
    {
      "name": "search_panes",
      "wireName": "search_panes",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 146
      },
      "description": "Search visible terminal text across all tmux panes.\n\nUse when the user asks what panes 'contain', 'mention', or 'show' —\ne.g. 'find the pane with the pytest failure'. Searches each pane's\nvisible terminal scrollback content (not editor or browser text)\nand returns panes where the pattern is found, with matching lines.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "content_end": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "End line for capture."
          },
          "content_start": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Start line for capture. Negative values reach into scrollback."
          },
          "limit": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": 500,
            "description": "Maximum matching panes returned on this call. Defaults to\n``SEARCH_DEFAULT_LIMIT``. Pass ``None`` to disable the cap."
          },
          "match_case": {
            "default": false,
            "description": "Whether to match case. Default False (case-insensitive).",
            "type": "boolean"
          },
          "max_matched_lines_per_pane": {
            "default": 50,
            "description": "Per-pane cap on ``matched_lines``. Defaults to\n``SEARCH_DEFAULT_MAX_LINES_PER_PANE``.",
            "type": "integer"
          },
          "offset": {
            "default": 0,
            "description": "Skip this many matching panes from the start. Use with\n``limit`` for pagination.",
            "type": "integer"
          },
          "pattern": {
            "description": "Text to search for in pane contents. Treated as literal text by\ndefault. Set ``regex=True`` to interpret as a regular expression.",
            "type": "string"
          },
          "regex": {
            "default": false,
            "description": "Whether to interpret pattern as a regular expression. Default False\n(literal text matching).",
            "type": "boolean"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Limit search to panes in this session (by ID)."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Limit search to panes in this session."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          }
        },
        "required": [
          "pattern"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "select_layout",
      "wireName": "select_layout",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/window_tools.py",
        "line": 527
      },
      "description": "Set the layout of a tmux window.\n\nChoose from: even-horizontal, even-vertical, main-horizontal,\nmain-vertical, or tiled. Rearranges all panes in the window.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "layout": {
            "description": "Layout name or custom layout string. Built-in layouts:\n'even-horizontal', 'even-vertical', 'main-horizontal',\n'main-horizontal-mirrored', 'main-vertical',\n'main-vertical-mirrored', 'tiled'.",
            "type": "string"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID (e.g. '@1')."
          },
          "window_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window index within the session."
          }
        },
        "required": [
          "layout"
        ],
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux window.",
        "properties": {
          "active_pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane id (``%N``) of the window's active pane."
          },
          "pane_count": {
            "description": "Number of panes",
            "type": "integer"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session ID"
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session name"
          },
          "window_active": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Active flag ('1' or '0')"
          },
          "window_height": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height in rows"
          },
          "window_id": {
            "description": "Window ID (e.g. '@1')",
            "type": "string"
          },
          "window_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window index"
          },
          "window_layout": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Layout string"
          },
          "window_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window name"
          },
          "window_width": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width in columns"
          }
        },
        "required": [
          "window_id",
          "pane_count"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "manage"
          ]
        }
      }
    },
    {
      "name": "select_pane",
      "wireName": "select_pane",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 164
      },
      "description": "Select (focus) a tmux pane by ID or direction.\n\nUse this to navigate between panes. Provide either pane_id for direct\nselection, or direction for relative navigation within a window.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "direction": {
            "anyOf": [
              {
                "enum": [
                  "up",
                  "down",
                  "left",
                  "right",
                  "last",
                  "next",
                  "previous"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Relative direction: 'up', 'down', 'left', 'right', 'last'\n(previously active), 'next', or 'previous'."
          },
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane ID (e.g. '%1') for direct selection."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID for resolution."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for resolution."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID for directional navigation scope."
          },
          "window_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window index for directional navigation scope."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux pane.",
        "properties": {
          "is_caller": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCP caller identity for this pane. ``True`` when the pane matches the caller's ``TMUX_PANE`` *and* lives on the same tmux socket as the caller's ``TMUX`` (verified via socket realpath); ``False`` otherwise, including the case where the pane id matches but the socket does not or cannot be proven to; ``None`` when the MCP process is not running inside tmux at all."
          },
          "pane_active": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Active flag ('1' or '0')"
          },
          "pane_at_bottom": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's bottom edge."
          },
          "pane_at_left": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's left edge."
          },
          "pane_at_right": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's right edge."
          },
          "pane_at_top": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's top edge. tmux accounts for ``pane-border-status`` here, so the top row may be 1 instead of 0 when the status bar is at the top."
          },
          "pane_bottom": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Bottom edge row (inclusive), window-relative."
          },
          "pane_current_command": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Running command"
          },
          "pane_current_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Current working directory"
          },
          "pane_height": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height in rows"
          },
          "pane_id": {
            "description": "Pane ID (e.g. '%1')",
            "type": "string"
          },
          "pane_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane index"
          },
          "pane_left": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Left edge column, 0-based and window-relative."
          },
          "pane_pid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Process ID"
          },
          "pane_right": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Right edge column (inclusive), window-relative."
          },
          "pane_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane title"
          },
          "pane_top": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Top edge row, 0-based and window-relative."
          },
          "pane_tty": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TTY device path of the pane (e.g. '/dev/pts/5')."
          },
          "pane_width": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width in columns"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session ID"
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent window ID"
          }
        },
        "required": [
          "pane_id"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "manage"
          ]
        }
      }
    },
    {
      "name": "select_window",
      "wireName": "select_window",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/session_tools.py",
        "line": 379
      },
      "description": "Select (focus) a tmux window by ID, index, or direction.\n\nUse to navigate between windows. Provide window_id or window_index\nfor direct selection, or direction for relative navigation.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "direction": {
            "anyOf": [
              {
                "enum": [
                  "next",
                  "previous",
                  "last"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Relative direction: 'next', 'previous', or 'last'."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID for resolution."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for resolution."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID (e.g. '@1') for direct selection."
          },
          "window_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window index for direct selection."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux window.",
        "properties": {
          "active_pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane id (``%N``) of the window's active pane."
          },
          "pane_count": {
            "description": "Number of panes",
            "type": "integer"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session ID"
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session name"
          },
          "window_active": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Active flag ('1' or '0')"
          },
          "window_height": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height in rows"
          },
          "window_id": {
            "description": "Window ID (e.g. '@1')",
            "type": "string"
          },
          "window_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window index"
          },
          "window_layout": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Layout string"
          },
          "window_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window name"
          },
          "window_width": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width in columns"
          }
        },
        "required": [
          "window_id",
          "pane_count"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "manage"
          ]
        }
      }
    },
    {
      "name": "send_keys",
      "wireName": "send_keys",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 82
      },
      "description": "Send keys (commands or text) to a tmux pane.\n\nUse this for raw interactive input: TUI keys, control sequences,\npartial shell input, or persistent shell state. Use ``send_keys_batch``\nwhen you need several ordered raw-input operations.\n\nFor authored shell commands that need completion, exit status, or\ncaptured output, use ``run_command`` instead. For custom completion\noutside that shape, compose ``tmux wait-for -S <channel>`` into the\nshell command and call ``wait_for_channel``. For repeated observation\nafter input, prefer ``capture_since``; reserve ``wait_for_text``\nfor output the agent does not author.\n\nDo NOT call ``capture_pane`` immediately — both the read and the\npattern-match paths race the pane's PTY draw.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "enter": {
            "default": true,
            "description": "Whether to press Enter after sending keys. Default True.",
            "type": "boolean"
          },
          "keys": {
            "description": "The keys or text to send.",
            "type": "string"
          },
          "literal": {
            "default": false,
            "description": "Whether to send keys literally (no tmux interpretation). Default False.",
            "type": "boolean"
          },
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane ID (e.g. '%1')."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID (e.g. '$1') for pane resolution."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for pane resolution."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "suppress_history": {
            "default": false,
            "description": "Suppress shell history by prepending a space; only effective where\nthe shell ignores space-prefixed commands. Default False.",
            "type": "boolean"
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID for pane resolution."
          }
        },
        "required": [
          "keys"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "type": "string"
          }
        },
        "required": [
          "result"
        ],
        "type": "object",
        "x-fastmcp-wrap-result": true
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "execute"
          ]
        }
      }
    },
    {
      "name": "send_keys_batch",
      "wireName": "send_keys_batch",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 87
      },
      "description": "Send an ordered batch of raw key/text operations to tmux panes.\n\nUse this for bulk TUI or persistent-shell input where each item is the\nsame kind of low-level terminal interaction as\n:func:`~libtmux_mcp.tools.pane_tools.send_keys`. For authored shell\ncommands that need exit status and captured output, use\n:func:`~libtmux_mcp.tools.pane_tools.run_command` instead. For\nrepeated observation after sending input, use\n:func:`~libtmux_mcp.tools.pane_tools.capture_since` with its returned\ncursor.\n\nThis tool intentionally does not compose heterogeneous operations such\nas send → wait → capture. Keeping the batch homogeneous preserves clear\nper-operation error attribution and avoids embedding a workflow DSL in\nthe MCP tool surface.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "on_error": {
            "default": "stop",
            "description": "Whether to stop at the first failed operation or keep attempting\nlater operations. Default \"stop\".",
            "enum": [
              "stop",
              "continue"
            ],
            "type": "string"
          },
          "operations": {
            "description": "Ordered raw-input operations to send.",
            "items": {
              "additionalProperties": false,
              "description": "One raw-input operation for batch sending.\n\nUsed by :func:`~libtmux_mcp.tools.pane_tools.send_keys_batch`.",
              "properties": {
                "enter": {
                  "default": true,
                  "description": "Whether to press Enter after sending keys.",
                  "type": "boolean"
                },
                "keys": {
                  "description": "Keys or text to send.",
                  "type": "string"
                },
                "literal": {
                  "default": false,
                  "description": "Whether to send keys literally with no tmux key interpretation.",
                  "type": "boolean"
                },
                "pane_id": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Pane ID (e.g. '%1')."
                },
                "session_id": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Session ID (e.g. '$1') for pane resolution."
                },
                "session_name": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Session name for pane resolution."
                },
                "suppress_history": {
                  "default": false,
                  "description": "Suppress shell history by prepending a space where the shell ignores space-prefixed commands.",
                  "type": "boolean"
                },
                "window_id": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Window ID for pane resolution."
                }
              },
              "required": [
                "keys"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "timeout": {
            "anyOf": [
              {
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Maximum time in seconds to allow the batch to run before aborting."
          }
        },
        "required": [
          "operations"
        ],
        "type": "object"
      },
      "outputSchema": {
        "description": "Structured result for a batch of raw-input send operations.",
        "properties": {
          "failed": {
            "description": "Number of operations that failed.",
            "type": "integer"
          },
          "results": {
            "description": "Per-operation results in attempted order.",
            "items": {
              "description": "Per-operation result from batch sending.\n\nReturned by :func:`~libtmux_mcp.tools.pane_tools.send_keys_batch`.",
              "properties": {
                "elapsed_seconds": {
                  "description": "Time spent on this operation.",
                  "type": "number"
                },
                "error": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Error message for this operation, if it failed."
                },
                "index": {
                  "description": "Zero-based index in the submitted operation list.",
                  "type": "integer"
                },
                "pane_id": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "null"
                    }
                  ],
                  "default": null,
                  "description": "Resolved pane ID, or None if target resolution failed."
                },
                "success": {
                  "description": "True when this operation sent successfully.",
                  "type": "boolean"
                }
              },
              "required": [
                "index",
                "success",
                "elapsed_seconds"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "stopped_at": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Index where processing stopped because on_error='stop', or None when all operations were attempted."
          },
          "succeeded": {
            "description": "Number of operations sent successfully.",
            "type": "integer"
          }
        },
        "required": [
          "succeeded",
          "failed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "execute"
          ]
        }
      }
    },
    {
      "name": "set_environment",
      "wireName": "set_environment",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/env_tools.py",
        "line": 130
      },
      "description": "Set a tmux environment variable.\n\nUse to set variables that will be inherited by new panes and windows.\nChanges do not affect already-running processes.\n\nSome variables control later shell execution. Bash sources the file named\nby ``BASH_ENV``, POSIX shells may source the file named by ``ENV``, and\nBash evaluates ``PROMPT_COMMAND`` before displaying a prompt.\n\n.. warning::\n   Values set here propagate into **every** shell tmux later spawns\n   in the targeted scope — including panes the user opens manually,\n   not just panes the agent drives. A caller that writes ``PATH``,\n   ``LD_PRELOAD``, or ``AWS_*`` variables can influence future\n   commands the human user types directly. Treat this as\n   elevated-risk within ``execute``. The audit log\n   redacts the ``value`` argument, but the side effects persist on\n   disk/memory until tmux is restarted. Prefer ``env VAR=value\n   command`` via :func:`~libtmux_mcp.tools.pane_tools.send_keys`\n   when you only need the override for a single command. See\n   :doc:`/topics/trust`.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "description": "Environment variable name.",
            "type": "string"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID to set environment for."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name to set environment for."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "value": {
            "description": "Environment variable value.",
            "type": "string"
          }
        },
        "required": [
          "name",
          "value"
        ],
        "type": "object"
      },
      "outputSchema": {
        "description": "Result of a set_environment call.",
        "properties": {
          "name": {
            "description": "Variable name",
            "type": "string"
          },
          "status": {
            "description": "Operation status",
            "type": "string"
          },
          "value": {
            "description": "Value that was set",
            "type": "string"
          }
        },
        "required": [
          "name",
          "value",
          "status"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "execute"
          ]
        }
      }
    },
    {
      "name": "set_option",
      "wireName": "set_option",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/option_tools.py",
        "line": 158
      },
      "description": "Set a tmux option value.\n\nSome option values are executable. tmux runs a ``#(...)`` job inside\nthe status formats when it draws them, and repeats it on the status\ninterval; ``default-command`` and ``default-shell`` decide what every\nfuture pane runs, and ``command-alias`` rewrites later commands. The\nvalue is stored verbatim, so an option that interprets it later runs\nwhat is stored, not what this call did.\n\nUse to change tmux behavior at runtime. Common uses: adjusting\nhistory-limit, enabling mouse support, changing status bar format.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "global_": {
            "default": false,
            "description": "Whether to set the global option.",
            "type": "boolean"
          },
          "option": {
            "description": "The tmux option name to set.",
            "type": "string"
          },
          "scope": {
            "anyOf": [
              {
                "enum": [
                  "server",
                  "session",
                  "window",
                  "pane"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Option scope."
          },
          "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\n(e.g. 'mysession'). For window scope: window ID (e.g. '@1').\nFor pane scope: pane ID (e.g. '%1'). Requires scope."
          },
          "value": {
            "description": "The value to set.",
            "type": "string"
          }
        },
        "required": [
          "option",
          "value"
        ],
        "type": "object"
      },
      "outputSchema": {
        "description": "Result of a set_option call.",
        "properties": {
          "option": {
            "description": "Option name",
            "type": "string"
          },
          "status": {
            "description": "Operation status",
            "type": "string"
          },
          "value": {
            "description": "Value that was set",
            "type": "string"
          }
        },
        "required": [
          "option",
          "value",
          "status"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "execute"
          ]
        }
      }
    },
    {
      "name": "set_pane_title",
      "wireName": "set_pane_title",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 126
      },
      "description": "Set the title of a tmux pane.\n\nUse titles to label panes for later identification via list_panes or get_pane_info.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane ID (e.g. '%1')."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID (e.g. '$1') for pane resolution."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for pane resolution."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "title": {
            "description": "The new pane title.",
            "type": "string"
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID for pane resolution."
          }
        },
        "required": [
          "title"
        ],
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux pane.",
        "properties": {
          "is_caller": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCP caller identity for this pane. ``True`` when the pane matches the caller's ``TMUX_PANE`` *and* lives on the same tmux socket as the caller's ``TMUX`` (verified via socket realpath); ``False`` otherwise, including the case where the pane id matches but the socket does not or cannot be proven to; ``None`` when the MCP process is not running inside tmux at all."
          },
          "pane_active": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Active flag ('1' or '0')"
          },
          "pane_at_bottom": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's bottom edge."
          },
          "pane_at_left": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's left edge."
          },
          "pane_at_right": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's right edge."
          },
          "pane_at_top": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's top edge. tmux accounts for ``pane-border-status`` here, so the top row may be 1 instead of 0 when the status bar is at the top."
          },
          "pane_bottom": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Bottom edge row (inclusive), window-relative."
          },
          "pane_current_command": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Running command"
          },
          "pane_current_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Current working directory"
          },
          "pane_height": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height in rows"
          },
          "pane_id": {
            "description": "Pane ID (e.g. '%1')",
            "type": "string"
          },
          "pane_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane index"
          },
          "pane_left": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Left edge column, 0-based and window-relative."
          },
          "pane_pid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Process ID"
          },
          "pane_right": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Right edge column (inclusive), window-relative."
          },
          "pane_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane title"
          },
          "pane_top": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Top edge row, 0-based and window-relative."
          },
          "pane_tty": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TTY device path of the pane (e.g. '/dev/pts/5')."
          },
          "pane_width": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width in columns"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session ID"
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent window ID"
          }
        },
        "required": [
          "pane_id"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "manage"
          ]
        }
      }
    },
    {
      "name": "show_buffer",
      "wireName": "show_buffer",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/buffer_tools.py",
        "line": 396
      },
      "description": "Read back the contents of an MCP-owned buffer.\n\nOutput is tail-preserved: when the buffer exceeds ``max_lines`` the\noldest lines are dropped and\n:attr:`~libtmux_mcp.models.BufferContent.content_truncated` is set\nso the caller can tell truncation happened and opt in to a full\nread via ``max_lines=None``. This mirrors ``capture_pane`` — one\nconsistent bounded-output contract across read-heavy tools so a\npathological ``load_buffer`` staging cannot blow the agent's\ncontext window on a single ``show_buffer`` call.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "buffer_name": {
            "description": "Must match the full MCP-namespaced form.",
            "type": "string"
          },
          "max_lines": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": 500,
            "description": "Maximum number of lines to return. Defaults to\n:data:`SHOW_BUFFER_DEFAULT_MAX_LINES`. Pass ``None`` for no\ntruncation."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          }
        },
        "required": [
          "buffer_name"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "show_environment",
      "wireName": "show_environment",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/env_tools.py",
        "line": 125
      },
      "description": "Show tmux environment variables.\n\nUse to inspect tmux environment variables that affect child processes.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID to query environment for."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name to query environment for."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "description": "Result of a show_environment call.",
        "properties": {
          "variables": {
            "additionalProperties": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "boolean"
                }
              ]
            },
            "description": "Environment variable mapping",
            "type": "object"
          }
        },
        "required": [
          "variables"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "show_hook",
      "wireName": "show_hook",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/hook_tools.py",
        "line": 248
      },
      "description": "Look up a specific tmux hook by name.\n\nReturns a :class:`~libtmux_mcp.models.HookListResult` with zero or\nmore :class:`~libtmux_mcp.models.HookEntry` rows — zero if the hook\nis unset, one if it is a scalar hook, and multiple if it is an\narray hook with sparse indices.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "global_": {
            "default": false,
            "description": ":func:`~libtmux_mcp.tools.hook_tools.show_hooks`.",
            "type": "boolean"
          },
          "hook_name": {
            "description": "Hook to look up (e.g. ``\"pane-exited\"``).",
            "type": "string"
          },
          "scope": {
            "anyOf": [
              {
                "enum": [
                  "server",
                  "session",
                  "window",
                  "pane"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": ":func:`~libtmux_mcp.tools.hook_tools.show_hooks`."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": ":func:`~libtmux_mcp.tools.hook_tools.show_hooks`."
          },
          "target": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": ":func:`~libtmux_mcp.tools.hook_tools.show_hooks`."
          }
        },
        "required": [
          "hook_name"
        ],
        "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"
          ]
        }
      }
    },
    {
      "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"
          ]
        }
      }
    },
    {
      "name": "show_option",
      "wireName": "show_option",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/option_tools.py",
        "line": 153
      },
      "description": "Show a tmux option value.\n\nUse to check tmux configuration values such as history-limit,\nmouse support, or status bar settings.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "global_": {
            "default": false,
            "description": "Whether to query the global option.",
            "type": "boolean"
          },
          "option": {
            "description": "The tmux option name to query.",
            "type": "string"
          },
          "scope": {
            "anyOf": [
              {
                "enum": [
                  "server",
                  "session",
                  "window",
                  "pane"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Option scope."
          },
          "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\n(e.g. 'mysession'). For window scope: window ID (e.g. '@1').\nFor pane scope: pane ID (e.g. '%1'). Requires scope."
          }
        },
        "required": [
          "option"
        ],
        "type": "object"
      },
      "outputSchema": {
        "description": "Result of a show_option call.",
        "properties": {
          "option": {
            "description": "Option name",
            "type": "string"
          },
          "value": {
            "description": "Option value"
          }
        },
        "required": [
          "option",
          "value"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "signal_channel",
      "wireName": "signal_channel",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/wait_for_tools.py",
        "line": 327
      },
      "description": "Signal a tmux ``wait-for`` channel, waking blocked waiters.\n\nWith no current waiter, tmux records one pending signal for the\nnext waiter to consume. Signalling that channel again clears it.\nA woken waiter continues whatever work follows its wait.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "channel": {
            "description": "Channel name. Must match ``^[A-Za-z0-9_.:-]{1,128}$``.",
            "type": "string"
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          }
        },
        "required": [
          "channel"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "type": "string"
          }
        },
        "required": [
          "result"
        ],
        "type": "object",
        "x-fastmcp-wrap-result": true
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "manage"
          ]
        }
      }
    },
    {
      "name": "snapshot_pane",
      "wireName": "snapshot_pane",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 158
      },
      "description": "Snapshot a tmux pane: visible terminal output, cursor, mode, scroll.\n\nUse for terminal-contents inspection — 'what's in my pane', 'the\ncurrent shell output' — not editor panes or browser viewports.\nReturns everything :func:`~libtmux_mcp.tools.pane_tools.capture_pane`\nand :func:`~libtmux_mcp.tools.pane_tools.get_pane_info` return, plus\ncursor position, copy-mode state, and scroll position — in a single\ncall. Prefer this over separate capture_pane + get_pane_info calls\nwhen you need to reason about cursor location or pane mode.\n\nThe ``content`` field is tail-preserved: when the captured pane\nexceeds ``max_lines``, the oldest lines are dropped and the result\nis reported via ``content_truncated`` / ``content_truncated_lines``\nfields on the returned :class:`~libtmux_mcp.models.PaneSnapshot`.\nPass ``max_lines=None`` to opt out of truncation entirely.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "max_lines": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": 500,
            "description": "Maximum number of content lines to return. Defaults to\n``CAPTURE_DEFAULT_MAX_LINES``.\nPass ``None`` to return the full capture untrimmed."
          },
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane ID (e.g. '%1')."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID (e.g. '$1') for pane resolution."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for pane resolution."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID for pane resolution."
          }
        },
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "anthropic/alwaysLoad": true,
        "fastmcp": {
          "tags": [
            "inspect"
          ]
        }
      }
    },
    {
      "name": "split_window",
      "wireName": "split_window",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/window_tools.py",
        "line": 512
      },
      "description": "Split a tmux window to create a new pane.\n\nCreates a new pane by splitting an existing one. Use direction to choose\nabove/below/left/right. Returns the new pane's info including its pane_id.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "direction": {
            "anyOf": [
              {
                "enum": [
                  "above",
                  "below",
                  "left",
                  "right"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Split direction."
          },
          "environment": {
            "anyOf": [
              {
                "additionalProperties": {
                  "type": "string"
                },
                "type": "object"
              },
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Per-process environment as a mapping or JSON object string. Values do\nnot modify the tmux session environment. Each item becomes a tmux\n``-e`` launch option. Values may be visible to host process inspection\nin the tmux client argv during launch and in the child environment\nafterward; MCP audit redaction does not hide either surface. Pass\ncredential references, not literal credentials."
          },
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane ID to split from. If given, splits adjacent to this pane."
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID (e.g. '$1')."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name."
          },
          "shell": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Shell command to run in the new pane."
          },
          "size": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Size of the new pane. Use a string with '%%' suffix for\npercentage (e.g. '50%%') or an integer for lines/columns."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "start_directory": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Existing directory to start in. ``~`` expands; a relative path\nresolves against the MCP server process's directory."
          },
          "suppress_persistent_history": {
            "default": false,
            "description": "Whether to suppress persistent history for the spawned shell. Defaults\nto False for MCP and direct Python calls. This per-call option does not\ninherit LIBTMUX_SUPPRESS_HISTORY. Startup files may override these\ncontrols.",
            "type": "boolean"
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID (e.g. '@1')."
          },
          "window_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window index within the session."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux pane.",
        "properties": {
          "is_caller": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCP caller identity for this pane. ``True`` when the pane matches the caller's ``TMUX_PANE`` *and* lives on the same tmux socket as the caller's ``TMUX`` (verified via socket realpath); ``False`` otherwise, including the case where the pane id matches but the socket does not or cannot be proven to; ``None`` when the MCP process is not running inside tmux at all."
          },
          "pane_active": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Active flag ('1' or '0')"
          },
          "pane_at_bottom": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's bottom edge."
          },
          "pane_at_left": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's left edge."
          },
          "pane_at_right": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's right edge."
          },
          "pane_at_top": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's top edge. tmux accounts for ``pane-border-status`` here, so the top row may be 1 instead of 0 when the status bar is at the top."
          },
          "pane_bottom": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Bottom edge row (inclusive), window-relative."
          },
          "pane_current_command": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Running command"
          },
          "pane_current_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Current working directory"
          },
          "pane_height": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height in rows"
          },
          "pane_id": {
            "description": "Pane ID (e.g. '%1')",
            "type": "string"
          },
          "pane_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane index"
          },
          "pane_left": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Left edge column, 0-based and window-relative."
          },
          "pane_pid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Process ID"
          },
          "pane_right": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Right edge column (inclusive), window-relative."
          },
          "pane_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane title"
          },
          "pane_top": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Top edge row, 0-based and window-relative."
          },
          "pane_tty": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TTY device path of the pane (e.g. '/dev/pts/5')."
          },
          "pane_width": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width in columns"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session ID"
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent window ID"
          }
        },
        "required": [
          "pane_id"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "execute"
          ]
        }
      }
    },
    {
      "name": "swap_pane",
      "wireName": "swap_pane",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 169
      },
      "description": "Swap the positions of two panes.\n\nExchanges the visual positions of two panes. Both panes must exist.\nUse this to rearrange pane layout without changing content.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "source_pane_id": {
            "description": "Pane ID of the first pane (e.g. '%1').",
            "type": "string"
          },
          "target_pane_id": {
            "description": "Pane ID of the second pane (e.g. '%2').",
            "type": "string"
          }
        },
        "required": [
          "source_pane_id",
          "target_pane_id"
        ],
        "type": "object"
      },
      "outputSchema": {
        "description": "Serialized tmux pane.",
        "properties": {
          "is_caller": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "MCP caller identity for this pane. ``True`` when the pane matches the caller's ``TMUX_PANE`` *and* lives on the same tmux socket as the caller's ``TMUX`` (verified via socket realpath); ``False`` otherwise, including the case where the pane id matches but the socket does not or cannot be proven to; ``None`` when the MCP process is not running inside tmux at all."
          },
          "pane_active": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Active flag ('1' or '0')"
          },
          "pane_at_bottom": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's bottom edge."
          },
          "pane_at_left": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's left edge."
          },
          "pane_at_right": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's right edge."
          },
          "pane_at_top": {
            "anyOf": [
              {
                "type": "boolean"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "True when the pane touches the window's top edge. tmux accounts for ``pane-border-status`` here, so the top row may be 1 instead of 0 when the status bar is at the top."
          },
          "pane_bottom": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Bottom edge row (inclusive), window-relative."
          },
          "pane_current_command": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Running command"
          },
          "pane_current_path": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Current working directory"
          },
          "pane_height": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Height in rows"
          },
          "pane_id": {
            "description": "Pane ID (e.g. '%1')",
            "type": "string"
          },
          "pane_index": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane index"
          },
          "pane_left": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Left edge column, 0-based and window-relative."
          },
          "pane_pid": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Process ID"
          },
          "pane_right": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Right edge column (inclusive), window-relative."
          },
          "pane_title": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane title"
          },
          "pane_top": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Top edge row, 0-based and window-relative."
          },
          "pane_tty": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "TTY device path of the pane (e.g. '/dev/pts/5')."
          },
          "pane_width": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Width in columns"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent session ID"
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Parent window ID"
          }
        },
        "required": [
          "pane_id"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "manage"
          ]
        }
      }
    },
    {
      "name": "wait_for_channel",
      "wireName": "wait_for_channel",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/wait_for_tools.py",
        "line": 322
      },
      "description": "Block until a tmux ``wait-for`` channel is signalled.\n\nThis is the AUTHORED-output synchronisation primitive: the channel\nonly fires because your own composed shell command signals it.\nReserve ``wait_for_text`` for output you did not author.\n\nAgents can compose this with ``send_keys`` to turn shell-side\nmilestones into explicit synchronisation points::\n\n    send_keys(\n        \"pytest; tmux wait-for -S tests_done\",\n        pane_id=...,\n    )\n    wait_for_channel(\"tests_done\", timeout=60)\n\nShell ``;`` semantics fire ``wait-for -S`` whether the command\nsucceeded or failed, so the edge-triggered signal never deadlocks\non a crash. Do NOT chain ``exit $status`` after the signal — in an\ninteractive shell that exits the shell itself, which destroys\nsingle-pane sessions. Exit-status preservation in interactive\nshells is out-of-scope; inspect the captured output for\ncommand-specific success markers.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "channel": {
            "description": "Channel name. Must match ``^[A-Za-z0-9_.:-]{1,128}$``.",
            "type": "string"
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "timeout": {
            "default": 30,
            "description": "Maximum seconds to wait. The underlying ``tmux wait-for`` has\nno built-in timeout — this wrapper enforces it by killing the\ntmux child, which also happens if the call is cancelled.\nDefaults to 30 seconds. Capped by the same server wait ceiling\nas ``wait_for_text``; an over-large value is not an error, the\nwait returns at the ceiling and the confirmation message names\nthe timeout that was actually enforced.",
            "type": "number"
          }
        },
        "required": [
          "channel"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "type": "string"
          }
        },
        "required": [
          "result"
        ],
        "type": "object",
        "x-fastmcp-wrap-result": true
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "manage",
            "self-bounded"
          ]
        }
      }
    },
    {
      "name": "wait_for_text",
      "wireName": "wait_for_text",
      "source": {
        "repo": "tmux-python/libtmux-mcp",
        "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
        "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
        "line": 153
      },
      "description": "Wait for NEW output in a tmux pane, then return.\n\nPolls until one of ``patterns`` appears on a line written *after*\nthis call starts, one of ``stop`` appears (immediate failure exit),\nor the timeout expires. Pass ``patterns=null`` to wait for any new\noutput at all. Use this instead of polling ``capture_pane`` in a\nloop.\n\nPre-existing scrollback is never matched, and neither is paint left\nbelow the cursor at entry — only rows written after the call began\ncount. If a pattern was already on screen the result says so via\n``matched_at_entry``.\n\n**Last resort: reserve for output you did not author.** Commands\nyou send are AUTHORED — use ``run_command`` (returns exit status)\nor compose ``; tmux wait-for -S <channel>`` with ``wait_for_channel``\ninstead, both cheaper and exact. For unattributable recurring\nprompts or background log lines, bracket your own command with a\nunique sentinel (``cmd; echo __WAIT_$RANDOM__``) and wait for that.\n\n``stop`` is the cheap way to avoid burning the whole budget: pass\nthe failure markers you already know (``\"error:\"``, ``\"FAILED\"``,\n``\"Traceback\"``) and a failed run returns in milliseconds instead\nof at the ceiling.\n\nThe server caps ``timeout``. An over-large value is not an error —\nthe wait returns at the ceiling and reports ``effective_timeout``.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "interval": {
            "default": 0.05,
            "description": "Seconds between polls. Default 0.05 (50ms). Minimum 0.01.",
            "type": "number"
          },
          "match_case": {
            "default": false,
            "description": "Whether to match case. Default False (case-insensitive).",
            "type": "boolean"
          },
          "pane_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Pane ID (e.g. '%1')."
          },
          "patterns": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Success patterns; the first one to match ends the wait.\nLiteral text unless ``regex=True``. Omit or pass ``null`` to\nwait for any new output."
          },
          "regex": {
            "default": false,
            "description": "Interpret ``patterns`` and ``stop`` as regular expressions.\nDefault False (literal text).",
            "type": "boolean"
          },
          "session_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session ID (e.g. '$1') for pane resolution."
          },
          "session_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Session name for pane resolution."
          },
          "socket_name": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "tmux socket name."
          },
          "stop": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Failure patterns. A hit ends the wait immediately with\n``outcome=\"stopped\"`` and ``found=false``; ``matched_index``\nsays which entry fired."
          },
          "timeout": {
            "default": 8,
            "description": "Requested seconds to wait. Default 8.0. Clamped by server\npolicy; see ``effective_timeout`` in the result.",
            "type": "number"
          },
          "window_id": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Window ID for pane resolution."
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "description": "Result of a bounded wait for new pane output.\n\nDeliberately free of inference. Every field is something the tool\nobserved directly — a match, a clock reading, a tmux flag. There is\nno \"likely cause\", no \"next action\", no quiescence verdict: a\nconfidently-wrong diagnosis costs the agent more than an honest\n\"nothing appeared, here is what the pane shows\".\n\nField count is load-bearing. ``outputSchema`` is re-sent on every\nrequest of every session, so a field that no agent branches on is a\npermanent tax. ``outcome`` carries what three separate booleans\ncarried before it.",
        "properties": {
          "alternate_screen": {
            "default": false,
            "description": "True when the pane was on the terminal's alternate screen at any point during the wait.",
            "type": "boolean"
          },
          "effective_timeout": {
            "description": "Seconds actually enforced. Server policy caps the requested ``timeout``; compare against what you passed to see a clamp.",
            "type": "number"
          },
          "elapsed_seconds": {
            "description": "Time spent waiting in seconds",
            "type": "number"
          },
          "found": {
            "description": "True when a ``patterns`` entry matched new output, or, with ``patterns=null``, when any new output appeared.",
            "type": "boolean"
          },
          "matched_at_entry": {
            "default": false,
            "description": "True when ``patterns`` already matched on-screen text before the wait began and nothing new matched after. The wait holds out for a FRESH occurrence, so re-running a command whose output looks identical still works. Read it as: the text is there, but it predates your call.",
            "type": "boolean"
          },
          "matched_index": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Zero-based index into ``patterns``, or into ``stop`` when ``outcome`` is ``stopped``. Null otherwise."
          },
          "matched_lines": {
            "description": "Newly-written lines that matched (empty on timeout).",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "outcome": {
            "description": "How the wait ended. ``matched``: a ``patterns`` entry hit. ``any_output``: ``patterns`` was omitted and something — possibly just a prompt repaint — was written; read it as 'the pane moved', never as 'the command finished'. ``stopped``: a ``stop`` failure marker hit. ``alternate_screen``: the pane was under a pager, editor, or full-screen TUI, which repaints the whole grid, so matching was suppressed — read the screen with snapshot_pane instead of retrying. ``timeout``: nothing matched in the budget.",
            "enum": [
              "matched",
              "any_output",
              "stopped",
              "alternate_screen",
              "timeout"
            ],
            "type": "string"
          },
          "pane_id": {
            "description": "Pane ID that was polled",
            "type": "string"
          },
          "saw_new_output": {
            "default": false,
            "description": "True when content was written on or below the entry cursor row. Read it with ``found=false``: true means output arrived and did not match — read ``tail`` and fix the pattern; false means the pane was quiet — suspect the command never ran, or check ``alternate_screen``.",
            "type": "boolean"
          },
          "tail": {
            "description": "Rows from the entry cursor row down at the final poll, tail-limited by lines and bytes. Includes stale rows excluded from matching, so it shows what the pane looks like, not what matched. On a timeout this usually already contains the answer — read it before retrying with a different pattern.",
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "found",
          "outcome",
          "pane_id",
          "elapsed_seconds",
          "effective_timeout"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "meta": {
        "fastmcp": {
          "tags": [
            "inspect",
            "self-bounded"
          ]
        }
      }
    }
  ],
  "wirePrefix": "",
  "selectable": true,
  "source": "src/libtmux_mcp/tools",
  "repo": "tmux-python/libtmux-mcp",
  "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
  "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
  "selection": {
    "LIBTMUX_TOOLSETS": "inspect,manage,execute,teardown"
  },
  "protocol": {
    "capabilities": {
      "completions": {},
      "logging": {},
      "prompts": {
        "listChanged": false
      },
      "resources": {
        "listChanged": false,
        "subscribe": false
      },
      "tools": {
        "listChanged": true
      }
    },
    "prompts": [
      {
        "_meta": {
          "fastmcp": {
            "tags": []
          }
        },
        "arguments": [
          {
            "description": "Name for the new session.\n\nProvide a value matching the following JSON schema: {\"type\":\"string\"}. Encode non-string values as JSON.",
            "name": "session_name",
            "required": true
          },
          {
            "description": "Command to run in the logs pane. Defaults to an OS-neutral\n``watch -n 1 date`` so the recipe does not assume Linux log\npaths. Pass e.g. ``\"tail -f /var/log/syslog\"`` on Linux or\n``\"log stream --level info\"`` on macOS.\n\nProvide a value matching the following JSON schema: {\"type\":\"string\"}. Encode non-string values as JSON.",
            "name": "log_command",
            "required": false
          }
        ],
        "description": "Construct a simple 3-pane development session.\n\nProduces editor (top), terminal (bottom-left), logs (bottom-right)\nlayout — the most common shape for a working session.",
        "name": "build_dev_workspace"
      },
      {
        "_meta": {
          "fastmcp": {
            "tags": []
          }
        },
        "arguments": [
          {
            "description": "The pane to diagnose.\n\nProvide a value matching the following JSON schema: {\"type\":\"string\"}. Encode non-string values as JSON.",
            "name": "pane_id",
            "required": true
          }
        ],
        "description": "Gather pane context and propose a root-cause hypothesis.\n\nUses ``snapshot_pane`` (content + cursor + mode + scroll state\nin one call) instead of ``capture_pane`` + ``get_pane_info`` so\nthe agent sees everything in a single protocol call. When the\ndiagnosis needs another read after waiting or observing, the\nrendered recipe points agents at ``capture_since`` instead of a\nrepeated full capture.",
        "name": "diagnose_failing_pane"
      },
      {
        "_meta": {
          "fastmcp": {
            "tags": []
          }
        },
        "arguments": [
          {
            "description": "Target pane.\n\nProvide a value matching the following JSON schema: {\"type\":\"string\"}. Encode non-string values as JSON.",
            "name": "pane_id",
            "required": true
          }
        ],
        "description": "Interrupt a running command and verify the prompt returned.\n\nSends ``C-c`` through ``send_keys(literal=True)``, then waits on\nshell-prompt patterns via ``wait_for_text``. Fails loudly if the\nprocess ignores SIGINT — the right escalation point is the caller,\nnot an automatic ``C-\\`` follow-up (SIGQUIT can core-dump).",
        "name": "interrupt_gracefully"
      },
      {
        "_meta": {
          "fastmcp": {
            "tags": []
          }
        },
        "arguments": [
          {
            "description": "The shell command to run.\n\nProvide a value matching the following JSON schema: {\"type\":\"string\"}. Encode non-string values as JSON.",
            "name": "command",
            "required": true
          },
          {
            "description": "Target pane (e.g. ``%1``).\n\nProvide a value matching the following JSON schema: {\"type\":\"string\"}. Encode non-string values as JSON.",
            "name": "pane_id",
            "required": true
          },
          {
            "description": "Maximum seconds to wait for command completion. Default 60.\n\nProvide a value matching the following JSON schema: {\"type\":\"number\"}. Encode non-string values as JSON.",
            "name": "timeout",
            "required": false
          }
        ],
        "description": "Run a shell command in a tmux pane and wait for completion.\n\nThe returned template teaches the high-level authored-command\nprimitive: ``run_command`` sends the command, waits through a\nprivate tmux signal, captures output, and reports exit status in\none typed result. Use lower-level ``send_keys`` +\n``wait_for_channel`` only when the caller needs custom shell\ncomposition outside this common command-completion shape.",
        "name": "run_and_wait"
      }
    ],
    "protocolVersion": "2025-11-25",
    "resources": [],
    "resourceTemplates": [
      {
        "_meta": {
          "fastmcp": {
            "tags": []
          }
        },
        "description": "Get details of a specific pane.\n\nParameters\n----------\npane_id : str\n    The pane ID (e.g. '%1').\nsocket_name : str, optional\n    tmux socket name. Defaults to LIBTMUX_SOCKET env var.\n\nReturns\n-------\nstr\n    JSON object of pane details (MIME: ``application/json``).",
        "mimeType": "application/json",
        "name": "get_pane",
        "title": "Pane Detail",
        "uriTemplate": "tmux://panes/{pane_id}{?socket_name}"
      },
      {
        "_meta": {
          "fastmcp": {
            "tags": []
          }
        },
        "description": "Capture and return the content of a pane.\n\nParameters\n----------\npane_id : str\n    The pane ID (e.g. '%1').\nsocket_name : str, optional\n    tmux socket name. Defaults to LIBTMUX_SOCKET env var.\n\nReturns\n-------\nstr\n    Plain text captured pane content (MIME: ``text/plain``).",
        "mimeType": "text/plain",
        "name": "get_pane_content",
        "title": "Pane Content",
        "uriTemplate": "tmux://panes/{pane_id}/content{?socket_name}"
      },
      {
        "_meta": {
          "fastmcp": {
            "tags": []
          }
        },
        "description": "Get details of a specific tmux session.\n\nParameters\n----------\nsession_name : str\n    The session name.\nsocket_name : str, optional\n    tmux socket name. Defaults to LIBTMUX_SOCKET env var.\n\nReturns\n-------\nstr\n    JSON object with session info and its windows\n    (MIME: ``application/json``).",
        "mimeType": "application/json",
        "name": "get_session",
        "title": "Session Detail",
        "uriTemplate": "tmux://sessions/{session_name}{?socket_name}"
      },
      {
        "_meta": {
          "fastmcp": {
            "tags": []
          }
        },
        "description": "List all windows in a tmux session.\n\nParameters\n----------\nsession_name : str\n    The session name.\nsocket_name : str, optional\n    tmux socket name. Defaults to LIBTMUX_SOCKET env var.\n\nReturns\n-------\nstr\n    JSON array of window objects (MIME: ``application/json``).",
        "mimeType": "application/json",
        "name": "get_session_windows",
        "title": "Session Windows",
        "uriTemplate": "tmux://sessions/{session_name}/windows{?socket_name}"
      },
      {
        "_meta": {
          "fastmcp": {
            "tags": []
          }
        },
        "description": "List all tmux sessions.\n\nParameters\n----------\nsocket_name : str, optional\n    tmux socket name. Defaults to LIBTMUX_SOCKET env var.\n\nReturns\n-------\nstr\n    JSON array of session objects (MIME: ``application/json``).",
        "mimeType": "application/json",
        "name": "get_sessions",
        "title": "All Sessions",
        "uriTemplate": "tmux://sessions{?socket_name}"
      },
      {
        "_meta": {
          "fastmcp": {
            "tags": []
          }
        },
        "description": "Get details of a specific window in a session.\n\nParameters\n----------\nsession_name : str\n    The session name.\nwindow_index : str\n    The window index within the session.\nsocket_name : str, optional\n    tmux socket name. Defaults to LIBTMUX_SOCKET env var.\n\nReturns\n-------\nstr\n    JSON object with window info and its panes\n    (MIME: ``application/json``).",
        "mimeType": "application/json",
        "name": "get_window",
        "title": "Window Detail",
        "uriTemplate": "tmux://sessions/{session_name}/windows/{window_index}{?socket_name}"
      }
    ],
    "serverInfo": {
      "name": "tmux",
      "version": "0.1.0a22",
      "websiteUrl": "https://libtmux-mcp.git-pull.com/"
    }
  }
}
