# Tools

Source: https://libtmux.org/en/cxx/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/cxx/latest/mcp/guides/) explains how to connect a client.

This catalog uses POSIX. See [platform limits](https://libtmux.org/en/cxx/latest/mcp/topics/) for the Windows preview.

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

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

Create a detached session; names and path data are literalized before tmux expansion. Start a pane’s configured process; accepts no command payload.

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

Report liveness, tmux version, and the resolved socket when running. A daemon older than 3.3a is refused: upgrade tmux and restart the server, or stay on the previous libtmux release. Inspect tmux metadata; accepts no client-supplied executable input.

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

List stable session IDs, names, paths, and client counts. Inspect tmux metadata; accepts no client-supplied executable input.

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

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

Create a detached window; name and path data are literalized before tmux expansion. Start a pane’s configured process; accepts no command payload.

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

Return one session by stable ID or name. Inspect tmux metadata; accepts no client-supplied executable input.

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

Delete one session and every window it owns. Delete tmux state; accepts no command payload.

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

List windows through an exact owning session. Inspect tmux metadata; accepts no client-supplied executable input.

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

Replace one session name. Change tmux state; no client-supplied executable input.

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

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

Return one window by stable ID. Inspect tmux metadata; accepts no client-supplied executable input.

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

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

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

List every pane with stable pane, window, and session IDs. Inspect tmux metadata; accepts no client-supplied executable input.

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

Move a window to an exact index in its owning session. Change tmux state; no client-supplied executable input.

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

Replace one window name. Change tmux state; no client-supplied executable input.

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

Replace one window’s dimensions. Change tmux state; no client-supplied executable input.

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

Replace the pane layout of one window. Names and mirrored layouts follow the selected daemon version. Saved layouts accept v1 checksums and v2 JSON; v2 requires tmux 3.8-rc2 or newer. Change tmux state; no client-supplied executable input.

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

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

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

Create a configured-process pane; path data is literalized before tmux expansion. Start a pane’s configured process; accepts no command payload.

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

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

Return visible text, or retained history when requested. Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted.

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

Return bytes after a bounded client cursor and a replacement cursor. Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted.

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

Irreversibly discard retained scrollback for one pane. Delete tmux state; accepts no command payload.

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

Resolve coordinates using fixed tmux layout fields. Inspect tmux metadata; accepts no client-supplied executable input.

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

Return one pane by stable ID. Inspect tmux metadata; accepts no client-supplied executable input.

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

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

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

Require the target pane to be live and outside human-owned mode, then stage a private target-only buffer, optionally append Enter, paste it once, and verify cleanup. Empty text without Enter is a guarded buffer-free no-op. 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/cxx/latest/mcp/tools/resize_pane/)

Replace one or both pane dimensions. Change tmux state; no client-supplied executable input.

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

Restart only the pane’s configured process; no caller command is accepted. Start a pane’s configured process; accepts no command payload.

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

Require one live configured pane, outside human-owned mode and running a supported POSIX foreground shell, then send one command and return output after its private completion boundary. Run a shell command in a pane with your user’s permissions.

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

Search captured lines using a length-limited expression. Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted.

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

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

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

Require every configured synchronized pane to be live and outside human-owned mode, then send one validated tmux key name. 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/cxx/latest/mcp/tools/send_keys_batch/)

Preflight each row’s configured synchronized pane cohort independently, requiring every pane to be live and outside human-owned mode before its text or key and optional Enter. 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/cxx/latest/mcp/tools/set_pane_title/)

Replace one pane title. Change tmux state; no client-supplied executable input.

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

Set the inherited window synchronize-panes default; pane-level overrides determine effective synchronized input membership. Change tmux state; no client-supplied executable input.

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

Return pane metadata and visible terminal content from one call. Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted.

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

Exchange two pane positions without changing their IDs. Change tmux state; no client-supplied executable input.

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

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

Read configured hooks, optionally filtered by exact name. Read configured tmux commands; accepts no client-supplied executable input. Returned values may contain executable configuration.

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

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

Replace retained-history bounds with a non-negative integer. Change tmux state; no client-supplied executable input.

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

Replace the global mouse option with a typed boolean. Change tmux state; no client-supplied executable input.

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

Read global or session environment values. Read the tmux environment; accepts no client-supplied executable input. Returned values may contain secrets.

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

Read one exact option without accepting an option value. Read configured tmux commands; accepts no client-supplied executable input. Returned values may contain executable configuration.

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

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

Release or latch one named server-side channel. Change tmux state; no client-supplied executable input.

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

Wait for a named server-side channel with an optional deadline. Change tmux state; no client-supplied executable input.

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

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

Run up to sixteen declared inspect operations serially under this one call; inner operations receive no separate approval. Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted.

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

Expand only validated variable identifiers, never a caller format. Read configured tmux commands; accepts no client-supplied executable input. Returned values may contain executable configuration.

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

Discount this server’s pending input and recent submitted echoes; unmodelled keys stop tracking the current line. Wait for a new shell’s prompt before typing. `matched_at_entry` reports visible text at entry; a mode ending in -unconfirmed identifies input that was still unconfirmed at the deadline. Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted.

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

1 advertised in the reference configuration.

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

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

## [Prompts](https://libtmux.org/en/cxx/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/cxx/latest/mcp/tools.json).

Source: [`libtmux/libtmux-cxx@9645e54239e0`](https://github.com/libtmux/libtmux-cxx/tree/9645e54239e040aa6f2bd6bf42c2fbe1aaf38250).

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

Source revision: [libtmux/libtmux-cxx@9645e54239e040aa6f2bd6bf42c2fbe1aaf38250](https://github.com/libtmux/libtmux-cxx/tree/9645e54239e040aa6f2bd6bf42c2fbe1aaf38250).
