# Tools

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

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

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

Start a pane’s configured process; accepts no command payload. Create a detached session with a configured pane process.

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

Inspect tmux metadata; accepts no client-supplied executable input. Return liveness and identity metadata for the selected tmux server.

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

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

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

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

Start a pane’s configured process; accepts no command payload. Create a window with a configured pane process.

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

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

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

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

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

Inspect tmux metadata; accepts no client-supplied executable input. List windows, optionally within one session.

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

Change tmux state; no client-supplied executable input. Set a literal-safe session name.

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

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

Inspect tmux metadata; accepts no client-supplied executable input. Return metadata and placements for one window.

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

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

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

Inspect tmux metadata; accepts no client-supplied executable input. List panes, optionally within a session or window.

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

Change tmux state; no client-supplied executable input. Move one window appearance to another session.

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

Change tmux state; no client-supplied executable input. Set a literal-safe window name.

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

Change tmux state; no client-supplied executable input. Resize the terminal dimensions reported for one window.

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

Change tmux state; no client-supplied executable input. Apply a named layout, a unique abbreviation for the running tmux version, or a checksummed saved layout. Invalid syntax is refused before window lookup; tmux validates geometry when applying the layout.

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

Change tmux state; no client-supplied executable input. Select one exact window appearance.

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

Start a pane’s configured process; accepts no command payload. Create a configured-process pane without accepting command or environment data.

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

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

Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted. Return a bounded slice of rendered pane text.

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

Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted. Return output after an opaque pane cursor.

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

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

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

Inspect tmux metadata; accepts no client-supplied executable input. Find a pane occupying a named window corner.

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

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

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

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

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

Send input to a pane’s program; a shell that receives it runs it with your user’s permissions. Paste literal text and an optional newline target-only after two state checks.

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

Change tmux state; no client-supplied executable input. Resize one pane by dimensions or a directional amount.

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

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

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

Run a shell command in a pane with your user’s permissions. Run one command in a singular trusted POSIX shell and return bounded output.

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

Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted. Search bounded pane content for literal text or a regular expression.

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

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

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

Send input to a pane’s program; a shell that receives it runs it with your user’s permissions. Send keys after checking the effective synchronized-pane cohort.

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

Send input to a pane’s program; a shell that receives it runs it with your user’s permissions. Send an ordered bounded batch with a fresh check for every row.

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

Change tmux state; no client-supplied executable input. Set one literal-safe pane title.

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

Change tmux state; no client-supplied executable input. Set the window input default; pane overrides determine effective synchronization.

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

Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted. Return pane metadata and bounded terminal content together.

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

Change tmux state; no client-supplied executable input. Swap two panes without changing their identities.

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

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

Read configured tmux commands; accepts no client-supplied executable input. Returned values may contain executable configuration. Read configured hooks, optionally for one session.

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

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

Change tmux state; no client-supplied executable input. Set the default retained scrollback line limit.

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

Change tmux state; no client-supplied executable input. Set the global tmux mouse option through a boolean.

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

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

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

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

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

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

Change tmux state; no client-supplied executable input. Signal one tmux [wait-for](https://libtmux.org/en/tmux/latest/manual/wait-for/) channel.

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

Change tmux state; no client-supplied executable input. Wait within one deadline for a tmux channel signal.

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

[call​_read​_tools​_batch](https://libtmux.org/en/swift/latest/mcp/tools/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. Retained rows contain full nested envelopes; oversized results are marked resultTruncated, and the response stays below the 1,000,000-byte wire cap.

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

Read configured tmux commands; accepts no client-supplied executable input. Returned values may contain executable configuration. Resolve validated variable names without accepting raw format syntax.

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

Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted. Wait within one deadline for pane text.

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

1 advertised in the reference configuration.

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

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

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

Source: [`libtmux/libtmux-swift@6b51d1408b55`](https://github.com/libtmux/libtmux-swift/tree/6b51d1408b55b8583825c6595405d08e728674bf).

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

Source revision: [libtmux/libtmux-swift@6b51d1408b55b8583825c6595405d08e728674bf](https://github.com/libtmux/libtmux-swift/tree/6b51d1408b55b8583825c6595405d08e728674bf).
