# Tools

Source: https://libtmux.org/en/java/latest/mcp/tools/

> Browse the operations the server exposes to MCP clients. Use the registered name and arguments when sending a tools/call request.

Browse the operations the server exposes to MCP clients. Use the registered name and arguments when sending a tools/call request.

MCP concept example

A working example of the core library. It can change without notice.

[What concept means](https://libtmux.org/en/meta/support/#concept-and-alpha)

The reference configuration advertises 45 tools. Your server’s available objects depend on its configuration. [Setup documentation](https://libtmux.org/en/java/latest/mcp/guides/) explains how to connect a client.

## Server3 tools[#](https://libtmux.org/en/java/latest/mcp/tools/#tools-server)

[create​_session](https://libtmux.org/en/java/latest/mcp/tools/create_session/)

Creates a detached session whose first pane runs the configured process. Start a pane’s configured process; accepts no command payload.

[get​_server​_info](https://libtmux.org/en/java/latest/mcp/tools/get_server_info/)

Reports whether the pinned server exists and its version. Inspect tmux metadata; accepts no client-supplied executable input.

[list​_sessions](https://libtmux.org/en/java/latest/mcp/tools/list_sessions/)

Lists sessions on the pinned tmux server. Inspect tmux metadata; accepts no client-supplied executable input.

## Session5 tools[#](https://libtmux.org/en/java/latest/mcp/tools/#tools-session)

[create​_window](https://libtmux.org/en/java/latest/mcp/tools/create_window/)

Creates a window whose first pane runs the configured process. Start a pane’s configured process; accepts no command payload.

[get​_session​_info](https://libtmux.org/en/java/latest/mcp/tools/get_session_info/)

Returns metadata for one session. Inspect tmux metadata; accepts no client-supplied executable input.

[kill​_session](https://libtmux.org/en/java/latest/mcp/tools/kill_session/)

Deletes one session and every window and pane in it. Delete tmux state; accepts no command payload.

[list​_windows](https://libtmux.org/en/java/latest/mcp/tools/list_windows/)

Lists windows, optionally only those in one session, named by ID or by name. Inspect tmux metadata; accepts no client-supplied executable input.

[rename​_session](https://libtmux.org/en/java/latest/mcp/tools/rename_session/)

Replaces a session’s name. Change tmux state; no client-supplied executable input.

## Window9 tools[#](https://libtmux.org/en/java/latest/mcp/tools/#tools-window)

[get​_window​_info](https://libtmux.org/en/java/latest/mcp/tools/get_window_info/)

Returns metadata for one window. Inspect tmux metadata; accepts no client-supplied executable input.

[kill​_window](https://libtmux.org/en/java/latest/mcp/tools/kill_window/)

Deletes one window and every pane in it. Delete tmux state; accepts no command payload.

[list​_panes](https://libtmux.org/en/java/latest/mcp/tools/list_panes/)

Lists pane metadata and stable pane IDs. No filter; use the ‘command’ field to find a pane by what it runs. Inspect tmux metadata; accepts no client-supplied executable input.

[move​_window](https://libtmux.org/en/java/latest/mcp/tools/move_window/)

Moves a window to another session, optionally at an index. Change tmux state; no client-supplied executable input.

[rename​_window](https://libtmux.org/en/java/latest/mcp/tools/rename_window/)

Replaces a window’s name. Change tmux state; no client-supplied executable input.

[resize​_window](https://libtmux.org/en/java/latest/mcp/tools/resize_window/)

Sets a window’s width, height or both. Change tmux state; no client-supplied executable input.

[select​_layout](https://libtmux.org/en/java/latest/mcp/tools/select_layout/)

Applies a named tmux layout, a unique abbreviation or a checksummed saved layout. Names follow the running daemon’s version; mirrored main layouts require tmux 3.5. Malformed syntax is refused before window lookup; tmux validates geometry. Change tmux state; no client-supplied executable input.

[select​_window](https://libtmux.org/en/java/latest/mcp/tools/select_window/)

Makes one window active. Change tmux state; no client-supplied executable input.

[split​_window](https://libtmux.org/en/java/latest/mcp/tools/split_window/)

Creates a pane whose configured process starts after the split. Start a pane’s configured process; accepts no command payload.

## Pane18 tools[#](https://libtmux.org/en/java/latest/mcp/tools/#tools-pane)

[capture​_pane](https://libtmux.org/en/java/latest/mcp/tools/capture_pane/)

Returns what a pane shows now, its newest lines first to go when bounded, and a cursor for [capture_since](https://libtmux.org/en/java/latest/mcp/tools/capture_since/). Use it to read a pane once. Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted.

[capture​_since](https://libtmux.org/en/java/latest/mcp/tools/capture_since/)

Returns only the output a pane produced after a cursor from [capture_pane](https://libtmux.org/en/java/latest/mcp/tools/capture_pane/) or an earlier capture_since. Use it to follow a pane across turns without rereading it. Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted.

[clear​_pane​_scrollback](https://libtmux.org/en/java/latest/mcp/tools/clear_pane_scrollback/)

Deletes retained scrollback from one pane. Delete tmux state; accepts no command payload.

[find​_pane​_by​_position](https://libtmux.org/en/java/latest/mcp/tools/find_pane_by_position/)

Finds a pane at one of a window’s four corners. Inspect tmux metadata; accepts no client-supplied executable input.

[get​_pane​_info](https://libtmux.org/en/java/latest/mcp/tools/get_pane_info/)

Returns metadata for one pane. Inspect tmux metadata; accepts no client-supplied executable input.

[kill​_pane](https://libtmux.org/en/java/latest/mcp/tools/kill_pane/)

Deletes one pane and ends its process. Delete tmux state; accepts no command payload.

[paste​_text](https://libtmux.org/en/java/latest/mcp/tools/paste_text/)

Pastes one literal text block into one target pane through an ephemeral buffer; [paste-buffer](https://libtmux.org/en/tmux/latest/manual/paste-buffer/) input does not fan out to synchronized peers. The target cannot be caller or attended. Send input to a pane’s program; a shell that receives it runs it with your user’s permissions.

[resize​_pane](https://libtmux.org/en/java/latest/mcp/tools/resize_pane/)

Sets a pane’s width, height or both. Change tmux state; no client-supplied executable input.

[respawn​_pane](https://libtmux.org/en/java/latest/mcp/tools/respawn_pane/)

Kills the pane’s current process and starts its configured process again. Start a pane’s configured process; accepts no command payload.

[run​_shell​_command](https://libtmux.org/en/java/latest/mcp/tools/run_shell_command/)

Runs one authored command in a trusted pane shell and waits for singular framed output and completion. Its two preflights refuse caller or attended panes and an effective cohort larger than one. Pre-existing exact-client-path, trap, eval, or exit functions are outside the supported boundary; marker [display-message](https://libtmux.org/en/tmux/latest/manual/display-message/) commands honor the trusted server’s command aliases and hooks. Run a shell command in a pane with your user’s permissions.

[search​_panes](https://libtmux.org/en/java/latest/mcp/tools/search_panes/)

Searches the visible output of every pane. Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted.

[select​_pane](https://libtmux.org/en/java/latest/mcp/tools/select_pane/)

Makes one pane active. Change tmux state; no client-supplied executable input.

[send​_keys](https://libtmux.org/en/java/latest/mcp/tools/send_keys/)

Sends input to the target’s configured effective synchronized cohort without waiting for output. Every configured member must be live, nonmodal, and neither caller nor attended. Reports configured pane ids observed before dispatch, not delivery receipts. [wait_for_text](https://libtmux.org/en/java/latest/mcp/tools/wait_for_text/) discounts recognized input; wait for the prompt before typing into a cold shell. Send input to a pane’s program; a shell that receives it runs it with your user’s permissions.

[send​_keys​_batch](https://libtmux.org/en/java/latest/mcp/tools/send_keys_batch/)

Sends up to sixty-four ordered pane-input operations, resolving and guarding the configured effective cohort separately for each ordered operation. A later policy or dispatch failure retains observed membership. Send input to a pane’s program; a shell that receives it runs it with your user’s permissions.

[set​_pane​_title](https://libtmux.org/en/java/latest/mcp/tools/set_pane_title/)

Replaces a pane’s literal title. Change tmux state; no client-supplied executable input.

[set​_synchronize​_panes](https://libtmux.org/en/java/latest/mcp/tools/set_synchronize_panes/)

When enabled, sets the inherited window default; pane-level overrides determine each pane’s effective synchronized value. Change tmux state; no client-supplied executable input.

[snapshot​_pane](https://libtmux.org/en/java/latest/mcp/tools/snapshot_pane/)

Returns what a pane shows and its metadata, as [list_panes](https://libtmux.org/en/java/latest/mcp/tools/list_panes/) describes a pane, in one call. Use it when both are needed; [capture_pane](https://libtmux.org/en/java/latest/mcp/tools/capture_pane/) alone reads less. Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted.

[swap​_pane](https://libtmux.org/en/java/latest/mcp/tools/swap_pane/)

Swaps the positions of two panes. Change tmux state; no client-supplied executable input.

## Hooks1 tool[#](https://libtmux.org/en/java/latest/mcp/tools/#tools-hooks)

[show​_hooks](https://libtmux.org/en/java/latest/mcp/tools/show_hooks/)

Reads configured tmux hooks. Read configured tmux commands; accepts no client-supplied executable input. Returned values may contain executable configuration.

## Options and environment4 tools[#](https://libtmux.org/en/java/latest/mcp/tools/#tools-options-and-environment)

[set​_history​_limit](https://libtmux.org/en/java/latest/mcp/tools/set_history_limit/)

Sets a bounded integer scrollback limit for future panes in a session. Change tmux state; no client-supplied executable input.

[set​_mouse​_enabled](https://libtmux.org/en/java/latest/mcp/tools/set_mouse_enabled/)

Enables or disables tmux mouse handling. Change tmux state; no client-supplied executable input.

[show​_environment](https://libtmux.org/en/java/latest/mcp/tools/show_environment/)

Reads the environment tmux passes to processes. Read the tmux environment; accepts no client-supplied executable input. Returned values may contain secrets.

[show​_option](https://libtmux.org/en/java/latest/mcp/tools/show_option/)

Reads one named tmux option. Read configured tmux commands; accepts no client-supplied executable input. Returned values may contain executable configuration.

## Coordination2 tools[#](https://libtmux.org/en/java/latest/mcp/tools/#tools-coordination)

[signal​_channel](https://libtmux.org/en/java/latest/mcp/tools/signal_channel/)

Signals one server-wide tmux channel. Change tmux state; no client-supplied executable input.

[wait​_for​_channel](https://libtmux.org/en/java/latest/mcp/tools/wait_for_channel/)

Waits on tmux’s channel state with a bounded timeout. Change tmux state; no client-supplied executable input.

## Other tools3 tools[#](https://libtmux.org/en/java/latest/mcp/tools/#tools-other-tools)

[call​_read​_tools​_batch](https://libtmux.org/en/java/latest/mcp/tools/call_read_tools_batch/)

Calls up to sixteen eligible inspect tools serially; inner tools receive no separate approval, and its nested authority is disclosed. The complete JSON-RPC response is capped at 1,000,000 bytes; a removed nested envelope is marked on its row and counted in truncatedBytes. Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted.

[get​_tmux​_variables](https://libtmux.org/en/java/latest/mcp/tools/get_tmux_variables/)

Reads a capped list of validated tmux variable names, not free-form formats. Read configured tmux commands; accepts no client-supplied executable input. Returned values may contain executable configuration.

[wait​_for​_text](https://libtmux.org/en/java/latest/mcp/tools/wait_for_text/)

Waits for new pane output without accepting executable input. Discounts recognized input from this server while pending and for ten seconds after submission. Output identical to that input and partially redrawn echoes are ambiguous; use [run_shell_command](https://libtmux.org/en/java/latest/mcp/tools/run_shell_command/) for commands you start. Wait for the prompt before typing into a cold shell. Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted.

## [Resources](https://libtmux.org/en/java/latest/mcp/resources/#resources-fixed-resources)

1 advertised in the reference configuration.

## [Resource templates](https://libtmux.org/en/java/latest/mcp/resources/)

This server does not advertise resource templates in the reference configuration.

## [Prompts](https://libtmux.org/en/java/latest/mcp/prompts/)

This server does not advertise prompts in the reference configuration.

Reference configuration

* `LIBTMUX_TOOLSETS`

  `inspect,manage,execute,teardown`

Protocol version: `2025-11-25`. [Download the full protocol catalog](https://libtmux.org/en/java/latest/mcp/tools.json).

Source: [`libtmux/libtmux-java@c067fced0dfd`](https://github.com/libtmux/libtmux-java/tree/c067fced0dfd19bd6dd3d260e9d4c336becdb063).

The [language API reference](https://libtmux.org/en/java/latest/mcp/reference/) documents embedding and implementation types.

Source revision: [libtmux/libtmux-java@c067fced0dfd19bd6dd3d260e9d4c336becdb063](https://github.com/libtmux/libtmux-java/tree/c067fced0dfd19bd6dd3d260e9d4c336becdb063).
