{
  "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"
      ]
    }
  }
}
