{
  "name": "capture_since",
  "wireName": "capture_since",
  "source": {
    "repo": "libtmux/libtmux-ts",
    "revision": "3fe1ca654b81b8cbf4a13b777a001a3298c87a6f",
    "extractedRevision": "ecc3eaca0b4e05a77360da9d56790b409282c63b",
    "file": "packages/mcp/src/tools/capture.ts",
    "line": 132
  },
  "description": "Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted. What a pane has printed since you last looked. Call it once with no cursor to start watching and get the current screen; keep the cursor it returns and pass it back each time after that, and you are charged only for what is new. This is the tool for watching a build, a log, or a test run — not a capture_pane loop. Set waitMs to block until something arrives rather than returning empty. Reports the stream in the order it was written, so a program that draws by moving the cursor (a progress bar, a full-screen TUI) reads jumbled here — capture_pane renders those.",
  "schemaStatus": "runtime",
  "inputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "properties": {
      "cursor": {
        "description": "The cursor from your previous capture_since. Omit on the first call.",
        "pattern": "^ltxc1\\.[0-9a-f]{32}\\.(?:0|[1-9][0-9]*)$",
        "type": "string"
      },
      "maxLines": {
        "description": "Keep at most this many lines, from the end. Defaults to the server limit.",
        "exclusiveMinimum": 0,
        "maximum": 9007199254740991,
        "type": "integer"
      },
      "paneId": {
        "description": "Stable pane id, e.g. %1.",
        "pattern": "^%\\d+$",
        "type": "string"
      },
      "waitMs": {
        "description": "Wait up to this long for new output before answering. Default 0.",
        "maximum": 9007199254740991,
        "minimum": 0,
        "type": "integer"
      }
    },
    "required": [
      "paneId"
    ],
    "type": "object"
  },
  "outputSchema": {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "additionalProperties": false,
    "properties": {
      "byteClamped": {
        "description": "Whether the byte ceiling shortened this result.",
        "type": "boolean"
      },
      "cursor": {
        "anyOf": [
          {
            "pattern": "^ltxc1\\.[0-9a-f]{32}\\.(?:0|[1-9][0-9]*)$",
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "description": "Pass this to the next capture_since call; null means streaming was unavailable."
      },
      "droppedLines": {
        "maximum": 9007199254740991,
        "minimum": -9007199254740991,
        "type": "integer"
      },
      "effectiveTimeoutMs": {
        "description": "The wait ceiling applied; zero when this call did not wait on a live stream.",
        "maximum": 9007199254740991,
        "minimum": -9007199254740991,
        "type": "integer"
      },
      "missedBytes": {
        "description": "Output that scrolled past before this read reached it. Non-zero means you fell behind.",
        "maximum": 9007199254740991,
        "minimum": -9007199254740991,
        "type": "integer"
      },
      "omittedBytes": {
        "description": "Result bytes omitted after capture or streaming.",
        "maximum": 9007199254740991,
        "minimum": -9007199254740991,
        "type": "integer"
      },
      "paneId": {
        "description": "Stable pane id, e.g. %1.",
        "pattern": "^%\\d+$",
        "type": "string"
      },
      "rangeClamped": {
        "description": "Whether result limits shortened a grid capture.",
        "type": "boolean"
      },
      "returnedBytes": {
        "maximum": 9007199254740991,
        "minimum": -9007199254740991,
        "type": "integer"
      },
      "seeded": {
        "description": "True when this call started the watch and returned the screen.",
        "type": "boolean"
      },
      "streaming": {
        "description": "False when no control connection was available and this fell back to capturing.",
        "type": "boolean"
      },
      "text": {
        "type": "string"
      }
    },
    "required": [
      "byteClamped",
      "cursor",
      "droppedLines",
      "effectiveTimeoutMs",
      "missedBytes",
      "paneId",
      "omittedBytes",
      "rangeClamped",
      "returnedBytes",
      "seeded",
      "streaming",
      "text"
    ],
    "type": "object"
  },
  "annotations": {
    "destructiveHint": true,
    "idempotentHint": false,
    "openWorldHint": true,
    "readOnlyHint": false
  },
  "meta": {
    "com.git-pull.libtmux-mcp/capability": {
      "amplifiesFutureInput": false,
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false
      },
      "description": "Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted. What a pane has printed since you last looked. Call it once with no cursor to start watching and get the current screen; keep the cursor it returns and pass it back each time after that, and you are charged only for what is new. This is the tool for watching a build, a log, or a test run — not a capture_pane loop. Set waitMs to block until something arrives rather than returning empty. Reports the stream in the order it was written, so a program that draws by moving the cursor (a progress bar, a full-screen TUI) reads jumbled here — capture_pane renders those.",
      "inputLiteralization": {},
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "cursor": {
            "description": "The cursor from your previous capture_since. Omit on the first call.",
            "pattern": "^ltxc1\\.[0-9a-f]{32}\\.(?:0|[1-9][0-9]*)$",
            "type": "string"
          },
          "maxLines": {
            "description": "Keep at most this many lines, from the end. Defaults to the server limit.",
            "exclusiveMinimum": 0,
            "maximum": 9007199254740991,
            "type": "integer"
          },
          "paneId": {
            "description": "Stable pane id, e.g. %1.",
            "pattern": "^%\\d+$",
            "type": "string"
          },
          "waitMs": {
            "description": "Wait up to this long for new output before answering. Default 0.",
            "maximum": 9007199254740991,
            "minimum": 0,
            "type": "integer"
          }
        },
        "required": [
          "paneId"
        ],
        "type": "object"
      },
      "mayExposeSecrets": true,
      "mayReturnUntrustedContent": true,
      "name": "capture_since",
      "nestedAuthority": [],
      "outputClasses": [
        "tmux-metadata",
        "terminal-content"
      ],
      "outputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "byteClamped": {
            "description": "Whether the byte ceiling shortened this result.",
            "type": "boolean"
          },
          "cursor": {
            "anyOf": [
              {
                "pattern": "^ltxc1\\.[0-9a-f]{32}\\.(?:0|[1-9][0-9]*)$",
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "description": "Pass this to the next capture_since call; null means streaming was unavailable."
          },
          "droppedLines": {
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "effectiveTimeoutMs": {
            "description": "The wait ceiling applied; zero when this call did not wait on a live stream.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "missedBytes": {
            "description": "Output that scrolled past before this read reached it. Non-zero means you fell behind.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "omittedBytes": {
            "description": "Result bytes omitted after capture or streaming.",
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "paneId": {
            "description": "Stable pane id, e.g. %1.",
            "pattern": "^%\\d+$",
            "type": "string"
          },
          "rangeClamped": {
            "description": "Whether result limits shortened a grid capture.",
            "type": "boolean"
          },
          "returnedBytes": {
            "maximum": 9007199254740991,
            "minimum": -9007199254740991,
            "type": "integer"
          },
          "seeded": {
            "description": "True when this call started the watch and returned the screen.",
            "type": "boolean"
          },
          "streaming": {
            "description": "False when no control connection was available and this fell back to capturing.",
            "type": "boolean"
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "byteClamped",
          "cursor",
          "droppedLines",
          "effectiveTimeoutMs",
          "missedBytes",
          "paneId",
          "omittedBytes",
          "rangeClamped",
          "returnedBytes",
          "seeded",
          "streaming",
          "text"
        ],
        "type": "object"
      },
      "processReach": "none",
      "title": "Observe new output",
      "tmuxEffects": [
        "observe"
      ],
      "toolset": "inspect"
    }
  }
}
