Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
e263bfe
feat(tools): Add 11 new MCP tools for agent workflows
tony Apr 8, 2026
fbfbccb
docs(tools): Add documentation for all 11 new tools
tony Apr 8, 2026
c459378
refactor(tools): Move pathlib import to module top in pane_tools
tony Apr 12, 2026
0df675f
fix(tools): Use ANNOTATIONS_CREATE for pipe_pane
tony Apr 12, 2026
8a8d7c6
fix(tools): Scope select_window directional navigation to the session
tony Apr 12, 2026
103e0d7
fix(tools): Quote pipe_pane output_path against shell splitting
tony Apr 12, 2026
2e3469b
docs(CHANGES) 11 new MCP tools for agent workflows
tony Apr 12, 2026
e7503a1
test(tools): Strengthen test_pipe_pane_start_stop assertions
tony Apr 12, 2026
94e0e1c
fix(tools): Reject empty output_path in pipe_pane
tony Apr 12, 2026
1a038fe
fix(tools): Harden snapshot_pane parsing against fragile field delimi…
tony Apr 12, 2026
3e96084
fix(tools): Refresh window after move_window to avoid stale session_id
tony Apr 12, 2026
60a7381
fix(tools): Isolate paste_text tmux buffer and tighten temp-file life…
tony Apr 12, 2026
74cefb4
docs(README): List the 11 new MCP tools in the Tools table
tony Apr 12, 2026
82c6330
docs(index): Highlight snapshot_pane, paste_text, and navigation on t…
tony Apr 12, 2026
052079d
docs(tools): Correct snapshot_pane title example and document pipe_pa…
tony Apr 12, 2026
71cc5cf
fix(tools): Use ANNOTATIONS_CREATE for swap_pane
tony Apr 12, 2026
624f1ee
fix(tools): Use ANNOTATIONS_CREATE for enter_copy_mode
tony Apr 12, 2026
3e38208
docs(tools): Show is_caller=false as the default example value
tony Apr 13, 2026
83e6105
fix(tools): Surface tmux errors from select_window directional naviga…
tony Apr 13, 2026
d2f6ca0
fix(tools): Anchor select_pane direction=next/previous to the targete…
tony Apr 13, 2026
8956288
fix(tools): Revert snapshot_pane delimiter to tab, keep defensive pad…
tony Apr 13, 2026
cff037c
test(tools): Extend test_paste_text retry window to 5 seconds
tony Apr 13, 2026
b5bd00d
fix(tools): Use ␞ (U+241E) as snapshot_pane delimiter, matching libtm…
tony Apr 13, 2026
252f6c1
fix(tools): Route select_pane next/previous via absolute pane_id for …
tony Apr 13, 2026
1294594
test(tools): Use a named buffer sentinel for paste_text isolation test
tony Apr 13, 2026
200cbc6
test(tools): Scope paste_text isolation test to no-leak check
tony Apr 13, 2026
f0d69b6
test(tools): Bump test_paste_text retry window to 10 seconds
tony Apr 13, 2026
a665371
test(tools): Use bracket=False + trailing newline in test_paste_text …
tony Apr 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions CHANGES
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,13 @@
_Notes on upcoming releases will be added here_
<!-- END PLACEHOLDER - ADD NEW CHANGELOG ENTRIES BELOW THIS LINE -->

### What's new

- New pane tools: `snapshot_pane`, `wait_for_content_change`, `select_pane`, `swap_pane`, `pipe_pane`, `display_message`, `enter_copy_mode`, `exit_copy_mode`, and `paste_text` (#11)
- New session tool: `select_window` — navigate by ID, index, or direction (#11)
- New window tool: `move_window` — reorder within a session or move across sessions (#11)
- New models: `PaneSnapshot` and `ContentChangeResult` (#11)

### Documentation

- Visual improvements to API docs from [gp-sphinx](https://gp-sphinx.git-pull.com)-based Sphinx packages (#10)
Expand Down
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ Give your AI agent hands inside the terminal — create sessions, run commands,
| Module | Tools |
|--------|-------|
| **Server** | `list_sessions`, `create_session`, `kill_server`, `get_server_info` |
| **Session** | `list_windows`, `create_window`, `rename_session`, `kill_session` |
| **Window** | `list_panes`, `split_window`, `rename_window`, `kill_window`, `select_layout`, `resize_window` |
| **Pane** | `send_keys`, `capture_pane`, `resize_pane`, `kill_pane`, `set_pane_title`, `get_pane_info`, `clear_pane`, `search_panes`, `wait_for_text` |
| **Session** | `list_windows`, `create_window`, `rename_session`, `select_window`, `kill_session` |
| **Window** | `list_panes`, `split_window`, `rename_window`, `select_layout`, `resize_window`, `move_window`, `kill_window` |
| **Pane** | `send_keys`, `paste_text`, `capture_pane`, `snapshot_pane`, `search_panes`, `get_pane_info`, `wait_for_text`, `wait_for_content_change`, `display_message`, `select_pane`, `swap_pane`, `resize_pane`, `set_pane_title`, `clear_pane`, `pipe_pane`, `enter_copy_mode`, `exit_copy_mode`, `kill_pane` |
| **Options** | `show_option`, `set_option` |
| **Environment** | `show_environment`, `set_environment` |

Expand Down
4 changes: 2 additions & 2 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,13 @@ Config blocks for Claude Desktop, Claude Code, Cursor, and others.

Read tmux state without changing anything.

{toolref}`list-sessions` · {toolref}`capture-pane` · {toolref}`get-pane-info` · {toolref}`search-panes` · {toolref}`wait-for-text`
{toolref}`list-sessions` · {toolref}`capture-pane` · {toolref}`snapshot-pane` · {toolref}`get-pane-info` · {toolref}`search-panes` · {toolref}`wait-for-text` · {toolref}`wait-for-content-change` · {toolref}`display-message`

### Act (mutating)

Create or modify tmux objects.

{toolref}`create-session` · {toolref}`send-keys` · {toolref}`create-window` · {toolref}`split-window` · {toolref}`resize-pane` · {toolref}`set-option`
{toolref}`create-session` · {toolref}`send-keys` · {toolref}`paste-text` · {toolref}`create-window` · {toolref}`split-window` · {toolref}`select-pane` · {toolref}`select-window` · {toolref}`move-window` · {toolref}`resize-pane` · {toolref}`pipe-pane` · {toolref}`set-option`

### Destroy (destructive)

Expand Down
86 changes: 85 additions & 1 deletion docs/tools/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,18 +8,36 @@ All tools accept an optional `socket_name` parameter for multi-server support. I

**Reading terminal content?**
- Know which pane? → {tool}`capture-pane`
- Need text + cursor + mode in one call? → {tool}`snapshot-pane`
- Don't know which pane? → {tool}`search-panes`
- Need to wait for output? → {tool}`wait-for-text`
- Need to wait for specific output? → {tool}`wait-for-text`
- Need to wait for *any* change? → {tool}`wait-for-content-change`
- Only need metadata (PID, path, size)? → {tool}`get-pane-info`
- Need an arbitrary tmux variable? → {tool}`display-message`

**Running a command?**
- {tool}`send-keys` — then {tool}`wait-for-text` + {tool}`capture-pane`
- Pasting multi-line text? → {tool}`paste-text`

**Creating workspace structure?**
- New session → {tool}`create-session`
- New window → {tool}`create-window`
- New pane → {tool}`split-window`

**Navigating?**
- Switch pane → {tool}`select-pane` (by ID or direction)
- Switch window → {tool}`select-window` (by ID, index, or direction)

**Rearranging layout?**
- Swap two panes → {tool}`swap-pane`
- Move window → {tool}`move-window`
- Change layout → {tool}`select-layout`

**Scrollback / copy mode?**
- Enter copy mode → {tool}`enter-copy-mode`
- Exit copy mode → {tool}`exit-copy-mode`
- Log output to file → {tool}`pipe-pane`

**Changing settings?**
- tmux options → {tool}`show-option` / {tool}`set-option`
- Environment vars → {tool}`show-environment` / {tool}`set-environment`
Expand Down Expand Up @@ -91,6 +109,24 @@ Query a tmux option value.
Show tmux environment variables.
:::

:::{grid-item-card} snapshot_pane
:link: snapshot-pane
:link-type: ref
Rich capture: content + cursor + mode + scroll.
:::

:::{grid-item-card} wait_for_content_change
:link: wait-for-content-change
:link-type: ref
Wait for any screen change.
:::

:::{grid-item-card} display_message
:link: display-message
:link-type: ref
Query arbitrary tmux format strings.
:::

::::

## Act
Expand Down Expand Up @@ -178,6 +214,54 @@ Set a tmux option.
Set a tmux environment variable.
:::

:::{grid-item-card} select_pane
:link: select-pane
:link-type: ref
Focus a pane by ID or direction.
:::

:::{grid-item-card} select_window
:link: select-window
:link-type: ref
Focus a window by ID, index, or direction.
:::

:::{grid-item-card} swap_pane
:link: swap-pane
:link-type: ref
Exchange positions of two panes.
:::

:::{grid-item-card} move_window
:link: move-window
:link-type: ref
Move window to another index or session.
:::

:::{grid-item-card} pipe_pane
:link: pipe-pane
:link-type: ref
Stream pane output to a file.
:::

:::{grid-item-card} enter_copy_mode
:link: enter-copy-mode
:link-type: ref
Enter copy mode for scrollback.
:::

:::{grid-item-card} exit_copy_mode
:link: exit-copy-mode
:link-type: ref
Exit copy mode.
:::

:::{grid-item-card} paste_text
:link: paste-text
:link-type: ref
Paste multi-line text via tmux buffer.
:::

::::

## Destroy
Expand Down
Loading
Loading