Type into terminal
tmux_sendType text and keystrokes into a live tmux pane and return the resulting output, enabling interactive or stateful terminal sessions to be driven and observed.
Instructions
Type into the live pane like a human, then return the output that appeared. Prefer this over a one-shot shell for anything interactive or stateful.
Returns once it is finished (shell prompt back, or a REPL/gdb/ssh showing the
same prompt line as before), or the screen has been quiet idle seconds, or
timeout passes. The last line says the state: [at shell prompt] = done;
[foreground: X] = X still running or a REPL waiting for input. If it is
still running, call tmux_read(wait_done=True) to wait for it to finish.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "tmux_send"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| idle | No | Return once the screen is quiet this long (s) even if not finished. Raise for silent slow commands. | |
| keys | No | tmux key names pressed after text: C-c, C-d, C-z, C-], Up, Down, Left, Right, Tab, BTab, Escape, BSpace, Enter, Home, End, PageUp, PageDown, F1-F12, single chars like "q", with C-/M-/S- modifiers | |
| text | No | Typed literally, e.g. 'ls -la' or 'SELECT 1;'. Empty to send only keys. | |
| enter | No | Press Enter at the end. False for keys like C-c. | |
| paste | No | Paste `text` through a tmux buffer (bracketed paste) instead of typing it key by key. Use for multi-line or long text, e.g. a code block into python or vim, so auto-indent can't mangle it. | |
| timeout | No | Hard cap on waiting (s). | |
| target_pane | No | tmux target such as "0:1.0" (session:window.pane, from tmux_list_panes); empty = the agent session "agent" |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| result | Yes |