call_read_tools_batch
-
Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted. Invoke a serial batch of at most 16 inspect tools. One client approval covers every nested name; inner tools receive no separate approval. The structured result is capped below 1,000,000 bytes, preserves every operation row, and reports explicit stop and truncation accounting.
- MCP request method
tools/callSendcall_read_tools_batchas the tool name, with the arguments below.
Arguments#
-
onError? ("stop" | "continue") #Whether a failed operation ends the batch. Defaults to stop.
-
operations(Array<object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object>) #The read-only tool calls to run, in order, in one approval.
- minItems
1- maxItems
16
-
Items (object | object | object | object | object | object | object | object | object | object | object | object | object | object | object | object) #
Matches one or more variants.
-
-
Arguments for
list_sessions, exactly the shape it takes when called on its own. -
Run
list_sessionsas this step of the batch.
No other properties are accepted.
-
-
-
Arguments for
list_windows, exactly the shape it takes when called on its own.No other properties are accepted.
-
Run
list_windowsas this step of the batch.
No other properties are accepted.
-
-
-
Arguments for
list_panes, exactly the shape it takes when called on its own.-
Session id ($1) or name.
-
Stable window id, e.g. @1.
- pattern
"^@\\d+$"
No other properties are accepted.
-
-
Run
list_panesas this step of the batch.
No other properties are accepted.
-
-
-
Arguments for
get_pane_info, exactly the shape it takes when called on its own.No other properties are accepted.
-
Run
get_pane_infoas this step of the batch.
No other properties are accepted.
-
-
-
Arguments for
get_server_info, exactly the shape it takes when called on its own. -
Run
get_server_infoas this step of the batch.
No other properties are accepted.
-
-
-
Arguments for
capture_pane, exactly the shape it takes when called on its own.-
Last line, on the same scale as start: 0 is the top of the visible screen and negative reaches back into history. It does not count back from the bottom, so end:-1 is one line above the screen top, not the last line of output.
- minimum
-9007199254740991- maximum
9007199254740991
-
joinWrapped? (boolean) #Rejoin lines tmux wrapped.
-
Keep at most this many lines, from the end. Defaults to the server limit.
- maximum
9007199254740991- exclusiveMinimum
0
-
Stable pane id, e.g. %1.
- pattern
"^%\\d+$"
-
First line; negative reaches into scrollback.
- minimum
-9007199254740991- maximum
9007199254740991
No other properties are accepted.
-
-
Run
capture_paneas this step of the batch.
No other properties are accepted.
-
-
-
Arguments for
capture_since, exactly the shape it takes when called on its own.-
The cursor from your previous capture_since. Omit on the first call.
- pattern
"^ltxc1\\.[0-9a-f]{32}\\.(?:0|[1-9][0-9]*)$"
-
Keep at most this many lines, from the end. Defaults to the server limit.
- maximum
9007199254740991- exclusiveMinimum
0
-
Stable pane id, e.g. %1.
- pattern
"^%\\d+$"
-
Wait up to this long for new output before answering. Default 0.
- minimum
0- maximum
9007199254740991
No other properties are accepted.
-
-
Run
capture_sinceas this step of the batch.
No other properties are accepted.
-
-
-
Arguments for
search_panes, exactly the shape it takes when called on its own.-
maxMatchesPerPane? (integer) #Stop after this many matches in each pane. Defaults to the server limit.
- maximum
9007199254740991- exclusiveMinimum
0
-
Non-empty literal text to find.
- minLength
1
-
Interpret pattern using libtmux’s bounded regular-expression grammar.
-
How far above the visible screen to search. Default 0.
- minimum
0- maximum
9007199254740991
-
Restrict to one session by id or name.
No other properties are accepted.
-
-
Run
search_panesas this step of the batch.
No other properties are accepted.
-
-
-
Arguments for
show_option, exactly the shape it takes when called on its own.-
The tmux option to read, such as “status-left”.
-
scope? ("server" | "session" | "global-session" | "window" | "global-window" | "pane") #Default server.
-
Session id/name or pane id, for the matching scope.
No other properties are accepted.
-
-
Run
show_optionas this step of the batch.
No other properties are accepted.
-
-
-
Arguments for
show_hooks, exactly the shape it takes when called on its own.No other properties are accepted.
-
Run
show_hooksas this step of the batch.
No other properties are accepted.
-
-
-
Arguments for
show_environment, exactly the shape it takes when called on its own.No other properties are accepted.
-
Run
show_environmentas this step of the batch.
No other properties are accepted.
-
-
-
Arguments for
get_session_info, exactly the shape it takes when called on its own.No other properties are accepted.
-
Run
get_session_infoas this step of the batch.
No other properties are accepted.
-
-
-
Arguments for
get_window_info, exactly the shape it takes when called on its own.No other properties are accepted.
-
Run
get_window_infoas this step of the batch.
No other properties are accepted.
-
-
-
Arguments for
find_pane_by_position, exactly the shape it takes when called on its own.-
corner("top-left" | "top-right" | "bottom-left" | "bottom-right") #Which corner of the window’s layout to resolve.
-
Stable window id, e.g. @1.
- pattern
"^@\\d+$"
No other properties are accepted.
-
-
tool("find_pane_by_position") #Run
find_pane_by_positionas this step of the batch.
No other properties are accepted.
-
-
-
Arguments for
get_tmux_variables, exactly the shape it takes when called on its own.-
Variable names to resolve, such as “pane_current_command” — bare names, not
#{…}format syntax.- minItems
1- maxItems
32
-
Stable pane id, e.g. %1.
- pattern
"^%\\d+$"
No other properties are accepted.
-
-
Run
get_tmux_variablesas this step of the batch.
No other properties are accepted.
-
-
-
Arguments for
snapshot_pane, exactly the shape it takes when called on its own.-
Keep at most this many lines, from the end. Defaults to the server limit.
- maximum
9007199254740991- exclusiveMinimum
0
-
Stable pane id, e.g. %1.
- pattern
"^%\\d+$"
No other properties are accepted.
-
-
Run
snapshot_paneas this step of the batch.
No other properties are accepted.
-
-
Result#
Returns object
-
- minimum
0- maximum
9007199254740991
-
-
-
- minimum
0- maximum
9007199254740991
-
Matches one or more variants.
No other properties are accepted.
-
-
Matches one or more variants.
-
- minimum
0- maximum
9007199254740991
-
- minimum
0- maximum
9007199254740991
No other properties are accepted.
Annotations#
destructiveHinttrueidempotentHintfalseopenWorldHinttruereadOnlyHintfalse
Protocol data#
Use the complete advertised contract for validation and client integration.
Input schema
{"$schema": "http://json-schema.org/draft-07/schema#","properties": {"onError": {"description": "Whether a failed operation ends the batch. Defaults to stop.","enum": ["stop","continue"],"type": "string"},"operations": {"description": "The read-only tool calls to run, in order, in one approval.","items": {"anyOf": [{"additionalProperties": false,"properties": {"arguments": {"additionalProperties": false,"description": "Arguments for `list_sessions`, exactly the shape it takes when called on its own.","properties": {},"type": "object"},"tool": {"const": "list_sessions","description": "Run `list_sessions` as this step of the batch.","type": "string"}},"required": ["tool"],"type": "object"},{"additionalProperties": false,"properties": {"arguments": {"additionalProperties": false,"description": "Arguments for `list_windows`, exactly the shape it takes when called on its own.","properties": {"session": {"description": "Session id ($1) or name. Omit for all sessions.","type": "string"}},"type": "object"},"tool": {"const": "list_windows","description": "Run `list_windows` as this step of the batch.","type": "string"}},"required": ["tool"],"type": "object"},{"additionalProperties": false,"properties": {"arguments": {"additionalProperties": false,"description": "Arguments for `list_panes`, exactly the shape it takes when called on its own.","properties": {"session": {"description": "Session id ($1) or name.","type": "string"},"window": {"description": "Stable window id, e.g. @1.","pattern": "^@\\d+$","type": "string"}},"type": "object"},"tool": {"const": "list_panes","description": "Run `list_panes` as this step of the batch.","type": "string"}},"required": ["tool"],"type": "object"},{"additionalProperties": false,"properties": {"arguments": {"additionalProperties": false,"description": "Arguments for `get_pane_info`, exactly the shape it takes when called on its own.","properties": {"paneId": {"description": "Stable pane id, e.g. %1.","pattern": "^%\\d+$","type": "string"}},"required": ["paneId"],"type": "object"},"tool": {"const": "get_pane_info","description": "Run `get_pane_info` as this step of the batch.","type": "string"}},"required": ["tool"],"type": "object"},{"additionalProperties": false,"properties": {"arguments": {"additionalProperties": false,"description": "Arguments for `get_server_info`, exactly the shape it takes when called on its own.","properties": {},"type": "object"},"tool": {"const": "get_server_info","description": "Run `get_server_info` as this step of the batch.","type": "string"}},"required": ["tool"],"type": "object"},{"additionalProperties": false,"properties": {"arguments": {"additionalProperties": false,"description": "Arguments for `capture_pane`, exactly the shape it takes when called on its own.","properties": {"end": {"description": "Last line, on the same scale as start: 0 is the top of the visible screen and negative reaches back into history. It does not count back from the bottom, so end:-1 is one line above the screen top, not the last line of output.","maximum": 9007199254740991,"minimum": -9007199254740991,"type": "integer"},"joinWrapped": {"description": "Rejoin lines tmux wrapped.","type": "boolean"},"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"},"start": {"description": "First line; negative reaches into scrollback.","maximum": 9007199254740991,"minimum": -9007199254740991,"type": "integer"}},"required": ["paneId"],"type": "object"},"tool": {"const": "capture_pane","description": "Run `capture_pane` as this step of the batch.","type": "string"}},"required": ["tool"],"type": "object"},{"additionalProperties": false,"properties": {"arguments": {"additionalProperties": false,"description": "Arguments for `capture_since`, exactly the shape it takes when called on its own.","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"},"tool": {"const": "capture_since","description": "Run `capture_since` as this step of the batch.","type": "string"}},"required": ["tool"],"type": "object"},{"additionalProperties": false,"properties": {"arguments": {"additionalProperties": false,"description": "Arguments for `search_panes`, exactly the shape it takes when called on its own.","properties": {"maxMatchesPerPane": {"description": "Stop after this many matches in each pane. Defaults to the server limit.","exclusiveMinimum": 0,"maximum": 9007199254740991,"type": "integer"},"pattern": {"description": "Non-empty literal text to find.","minLength": 1,"type": "string"},"regex": {"description": "Interpret pattern using libtmux's bounded regular-expression grammar.","type": "boolean"},"scrollbackLines": {"description": "How far above the visible screen to search. Default 0.","maximum": 9007199254740991,"minimum": 0,"type": "integer"},"session": {"description": "Restrict to one session by id or name.","type": "string"}},"required": ["pattern"],"type": "object"},"tool": {"const": "search_panes","description": "Run `search_panes` as this step of the batch.","type": "string"}},"required": ["tool"],"type": "object"},{"additionalProperties": false,"properties": {"arguments": {"additionalProperties": false,"description": "Arguments for `show_option`, exactly the shape it takes when called on its own.","properties": {"name": {"description": "The tmux option to read, such as \"status-left\".","type": "string"},"scope": {"description": "Default server.","enum": ["server","session","global-session","window","global-window","pane"],"type": "string"},"target": {"description": "Session id/name or pane id, for the matching scope.","type": "string"}},"required": ["name"],"type": "object"},"tool": {"const": "show_option","description": "Run `show_option` as this step of the batch.","type": "string"}},"required": ["tool"],"type": "object"},{"additionalProperties": false,"properties": {"arguments": {"additionalProperties": false,"description": "Arguments for `show_hooks`, exactly the shape it takes when called on its own.","properties": {"session": {"description": "Session scope; omit for server scope.","type": "string"}},"type": "object"},"tool": {"const": "show_hooks","description": "Run `show_hooks` as this step of the batch.","type": "string"}},"required": ["tool"],"type": "object"},{"additionalProperties": false,"properties": {"arguments": {"additionalProperties": false,"description": "Arguments for `show_environment`, exactly the shape it takes when called on its own.","properties": {"session": {"description": "Session id ($1) or name. Omit for the server environment.","type": "string"}},"type": "object"},"tool": {"const": "show_environment","description": "Run `show_environment` as this step of the batch.","type": "string"}},"required": ["tool"],"type": "object"},{"additionalProperties": false,"properties": {"arguments": {"additionalProperties": false,"description": "Arguments for `get_session_info`, exactly the shape it takes when called on its own.","properties": {"session": {"description": "Session id ($1) or name.","type": "string"}},"required": ["session"],"type": "object"},"tool": {"const": "get_session_info","description": "Run `get_session_info` as this step of the batch.","type": "string"}},"required": ["tool"],"type": "object"},{"additionalProperties": false,"properties": {"arguments": {"additionalProperties": false,"description": "Arguments for `get_window_info`, exactly the shape it takes when called on its own.","properties": {"windowId": {"description": "Stable window id, e.g. @1.","pattern": "^@\\d+$","type": "string"}},"required": ["windowId"],"type": "object"},"tool": {"const": "get_window_info","description": "Run `get_window_info` as this step of the batch.","type": "string"}},"required": ["tool"],"type": "object"},{"additionalProperties": false,"properties": {"arguments": {"additionalProperties": false,"description": "Arguments for `find_pane_by_position`, exactly the shape it takes when called on its own.","properties": {"corner": {"description": "Which corner of the window's layout to resolve.","enum": ["top-left","top-right","bottom-left","bottom-right"],"type": "string"},"windowId": {"description": "Stable window id, e.g. @1.","pattern": "^@\\d+$","type": "string"}},"required": ["corner","windowId"],"type": "object"},"tool": {"const": "find_pane_by_position","description": "Run `find_pane_by_position` as this step of the batch.","type": "string"}},"required": ["tool"],"type": "object"},{"additionalProperties": false,"properties": {"arguments": {"additionalProperties": false,"description": "Arguments for `get_tmux_variables`, exactly the shape it takes when called on its own.","properties": {"names": {"description": "Variable names to resolve, such as \"pane_current_command\" — bare names, not `#{…}` format syntax.","items": {"pattern": "^[A-Za-z][A-Za-z0-9_]*$","type": "string"},"maxItems": 32,"minItems": 1,"type": "array","x-libtmux-tmux-format": "validated-variable-name"},"paneId": {"description": "Stable pane id, e.g. %1.","pattern": "^%\\d+$","type": "string"}},"required": ["names"],"type": "object"},"tool": {"const": "get_tmux_variables","description": "Run `get_tmux_variables` as this step of the batch.","type": "string"}},"required": ["tool"],"type": "object"},{"additionalProperties": false,"properties": {"arguments": {"additionalProperties": false,"description": "Arguments for `snapshot_pane`, exactly the shape it takes when called on its own.","properties": {"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"}},"required": ["paneId"],"type": "object"},"tool": {"const": "snapshot_pane","description": "Run `snapshot_pane` as this step of the batch.","type": "string"}},"required": ["tool"],"type": "object"}]},"maxItems": 16,"minItems": 1,"type": "array"}},"required": ["operations"],"type": "object"}Output schema
{"$schema": "http://json-schema.org/draft-07/schema#","additionalProperties": false,"properties": {"failed": {"maximum": 9007199254740991,"minimum": 0,"type": "integer"},"onError": {"enum": ["stop","continue"],"type": "string"},"results": {"items": {"additionalProperties": false,"properties": {"error": {"type": ["string","null"]},"index": {"maximum": 9007199254740991,"minimum": 0,"type": "integer"},"result": {"anyOf": [{"additionalProperties": {},"properties": {"content": {"items": {},"type": "array"},"isError": {"type": "boolean"},"structuredContent": {"additionalProperties": {},"propertyNames": {"type": "string"},"type": "object"}},"required": ["content"],"type": "object"},{"type": "null"}]},"resultTruncated": {"type": "boolean"},"success": {"type": "boolean"},"tool": {"type": "string"}},"required": ["error","index","result","resultTruncated","success","tool"],"type": "object"},"type": "array"},"stoppedAt": {"anyOf": [{"maximum": 9007199254740991,"minimum": 0,"type": "integer"},{"type": "null"}]},"succeeded": {"maximum": 9007199254740991,"minimum": 0,"type": "integer"},"truncated": {"type": "boolean"},"truncatedBytes": {"maximum": 9007199254740991,"minimum": 0,"type": "integer"}},"required": ["failed","onError","results","stoppedAt","succeeded","truncated","truncatedBytes"],"type": "object"}