{
  "name": "send_keys",
  "wireName": "send_keys",
  "source": {
    "repo": "tmux-python/libtmux-mcp",
    "revision": "4daddc0dfca96c43bf521d818bf91564e1434760",
    "extractedRevision": "4daddc0dfca96c43bf521d818bf91564e1434760",
    "file": "src/libtmux_mcp/tools/pane_tools/__init__.py",
    "line": 82
  },
  "description": "Send keys (commands or text) to a tmux pane.\n\nUse this for raw interactive input: TUI keys, control sequences,\npartial shell input, or persistent shell state. Use ``send_keys_batch``\nwhen you need several ordered raw-input operations.\n\nFor authored shell commands that need completion, exit status, or\ncaptured output, use ``run_command`` instead. For custom completion\noutside that shape, compose ``tmux wait-for -S <channel>`` into the\nshell command and call ``wait_for_channel``. For repeated observation\nafter input, prefer ``capture_since``; reserve ``wait_for_text``\nfor output the agent does not author.\n\nDo NOT call ``capture_pane`` immediately — both the read and the\npattern-match paths race the pane's PTY draw.",
  "schemaStatus": "runtime",
  "inputSchema": {
    "additionalProperties": false,
    "properties": {
      "enter": {
        "default": true,
        "description": "Whether to press Enter after sending keys. Default True.",
        "type": "boolean"
      },
      "keys": {
        "description": "The keys or text to send.",
        "type": "string"
      },
      "literal": {
        "default": false,
        "description": "Whether to send keys literally (no tmux interpretation). Default False.",
        "type": "boolean"
      },
      "pane_id": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "description": "Pane ID (e.g. '%1')."
      },
      "session_id": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "description": "Session ID (e.g. '$1') for pane resolution."
      },
      "session_name": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "description": "Session name for pane resolution."
      },
      "socket_name": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "description": "tmux socket name."
      },
      "suppress_history": {
        "default": false,
        "description": "Suppress shell history by prepending a space; only effective where\nthe shell ignores space-prefixed commands. Default False.",
        "type": "boolean"
      },
      "window_id": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "null"
          }
        ],
        "default": null,
        "description": "Window ID for pane resolution."
      }
    },
    "required": [
      "keys"
    ],
    "type": "object"
  },
  "outputSchema": {
    "properties": {
      "result": {
        "type": "string"
      }
    },
    "required": [
      "result"
    ],
    "type": "object",
    "x-fastmcp-wrap-result": true
  },
  "annotations": {
    "destructiveHint": true,
    "idempotentHint": false,
    "openWorldHint": true,
    "readOnlyHint": false
  },
  "meta": {
    "fastmcp": {
      "tags": [
        "execute"
      ]
    }
  }
}
