# send_keys_and_wait

Source: https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/

> Register output before sending explicit keys, then wait for literal text in output observed since registration. No Enter is added. Concurrent output may also match; this is not command-exit proof.

toolMCPlatest

MCP is in development

Server behavior and tool contracts may change. Tool availability depends on the server configuration.

* **send_keys_and_wait**( [keys](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Fkeys): [Array](https://json-schema.org/understanding-json-schema/reference/array "Array (JSON Schema)")<[string](https://json-schema.org/understanding-json-schema/reference/string "string (JSON Schema)")>, [literal](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Fliteral)?: [boolean](https://json-schema.org/understanding-json-schema/reference/boolean "boolean (JSON Schema)"), [target](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Ftarget): [object](https://json-schema.org/understanding-json-schema/reference/object "object (JSON Schema)"), [text](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Ftext): [string](https://json-schema.org/understanding-json-schema/reference/string "string (JSON Schema)"), )

  tool[\[source\]](https://github.com/libtmux/libtmux-julia/blob/f3da513be1225d36d5854cd8db5972c01857578e/packages/LibTmuxMCP/src/tools.jl#L12)[¶](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait)

  Register output before sending explicit keys, then wait for literal text in output observed since registration. No Enter is added. Concurrent output may also match; this is not command-exit proof.

  * MCP request method

    `tools/call` Send `send_keys_and_wait` as the tool name, with the arguments below.

  * Tool selection

    Opt in with `--tool send_keys_and_wait`.

  ## Arguments[#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.parameters)

  * additionalProperties

    `false`

  - [**keys**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Fkeys): [Array](https://json-schema.org/understanding-json-schema/reference/array "Array (JSON Schema)")<[string](https://json-schema.org/understanding-json-schema/reference/string "string (JSON Schema)")> Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Fkeys)

    * minItems

      `1`

    * maxItems

      `64`

    - [**Items**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Fkeys%2Fitems): [string](https://json-schema.org/understanding-json-schema/reference/string "string (JSON Schema)") [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Fkeys%2Fitems)

      Valid UTF-8; at most 1024 bytes

      * maxLength

        `1024`

  - [**literal**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Fliteral): [boolean](https://json-schema.org/understanding-json-schema/reference/boolean "boolean (JSON Schema)") Optional [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Fliteral)

    * Default

      `false`

  - [**target**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Ftarget): [object](https://json-schema.org/understanding-json-schema/reference/object "object (JSON Schema)") Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Ftarget)

    Explicit captured target; omission requires a configured caller pane

    * additionalProperties

      `false`

    - [**generation**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Ftarget%2Fproperties%2Fgeneration): [string](https://json-schema.org/understanding-json-schema/reference/string "string (JSON Schema)") Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Ftarget%2Fproperties%2Fgeneration)

      Opaque generation from [list_panes](https://libtmux.org/en/julia/latest/mcp/tools/list_panes/)

      * maxLength

        `128`

    - [**paneId**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Ftarget%2Fproperties%2FpaneId): [string](https://json-schema.org/understanding-json-schema/reference/string "string (JSON Schema)") Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Ftarget%2Fproperties%2FpaneId)

      Valid UTF-8; at most 64 bytes

      * maxLength

        `64`

      * pattern

        `"^%(0|[1-9][0-9]*)$"`

  - [**text**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Ftext): [string](https://json-schema.org/understanding-json-schema/reference/string "string (JSON Schema)") Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.input%2Fproperties%2Ftext)

    Valid UTF-8; at most 1024 bytes

    * minLength

      `1`

    * maxLength

      `1024`

  ## Result[#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.result)

  Returns [object](https://json-schema.org/understanding-json-schema/reference/object "object (JSON Schema)") | [object](https://json-schema.org/understanding-json-schema/reference/object "object (JSON Schema)")

  Matches one or more variants.

  * [**Variant 1**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0): [object](https://json-schema.org/understanding-json-schema/reference/object "object (JSON Schema)") [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0)

    * additionalProperties

      `false`

    - [**continuity**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2Fcontinuity): "reset" Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2Fcontinuity)

    - [**evidence**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2Fevidence): "literal_text" Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2Fevidence)

    - [**generationGuarantee**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2FgenerationGuarantee): [string](https://json-schema.org/understanding-json-schema/reference/string "string (JSON Schema)") Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2FgenerationGuarantee)

    - [**keysSent**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2FkeysSent): [boolean](https://json-schema.org/understanding-json-schema/reference/boolean "boolean (JSON Schema)") Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2FkeysSent)

    - [**matched**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2Fmatched): [boolean](https://json-schema.org/understanding-json-schema/reference/boolean "boolean (JSON Schema)") Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2Fmatched)

    - [**source**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2Fsource): "baseline" | "output" Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2Fsource)

    - [**target**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2Ftarget): [object](https://json-schema.org/understanding-json-schema/reference/object "object (JSON Schema)") Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2Ftarget)

      * additionalProperties

        `false`

      - [**generation**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2Ftarget%2Fproperties%2Fgeneration): [string](https://json-schema.org/understanding-json-schema/reference/string "string (JSON Schema)") Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2Ftarget%2Fproperties%2Fgeneration)

        Opaque generation from [list_panes](https://libtmux.org/en/julia/latest/mcp/tools/list_panes/)

        * maxLength

          `128`

      - [**paneId**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2Ftarget%2Fproperties%2FpaneId): [string](https://json-schema.org/understanding-json-schema/reference/string "string (JSON Schema)") Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2Ftarget%2Fproperties%2FpaneId)

        Valid UTF-8; at most 64 bytes

        * maxLength

          `64`

        * pattern

          `"^%(0|[1-9][0-9]*)$"`

    - [**terminalContent**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2FterminalContent): "data" Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2FterminalContent)

    - [**text**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2Ftext): [string](https://json-schema.org/understanding-json-schema/reference/string "string (JSON Schema)") Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F0%2Fproperties%2Ftext)

  * [**Variant 2**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F1): [object](https://json-schema.org/understanding-json-schema/reference/object "object (JSON Schema)") [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F1)

    * [**error**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F1%2Fproperties%2Ferror): [object](https://json-schema.org/understanding-json-schema/reference/object "object (JSON Schema)") Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F1%2Fproperties%2Ferror)

      * additionalProperties

        `false`

      - [**code**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F1%2Fproperties%2Ferror%2Fproperties%2Fcode): [string](https://json-schema.org/understanding-json-schema/reference/string "string (JSON Schema)") Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F1%2Fproperties%2Ferror%2Fproperties%2Fcode)

      - [**effects**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F1%2Fproperties%2Ferror%2Fproperties%2Feffects): "none" | "possible" Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F1%2Fproperties%2Ferror%2Fproperties%2Feffects)

      - [**message**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F1%2Fproperties%2Ferror%2Fproperties%2Fmessage): [string](https://json-schema.org/understanding-json-schema/reference/string "string (JSON Schema)") Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F1%2Fproperties%2Ferror%2Fproperties%2Fmessage)

      - [**retryable**](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F1%2Fproperties%2Ferror%2Fproperties%2Fretryable): [boolean](https://json-schema.org/understanding-json-schema/reference/boolean "boolean (JSON Schema)") Required [#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.output%2FanyOf%2F1%2Fproperties%2Ferror%2Fproperties%2Fretryable)

  ## Annotations[#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.annotations)

  * [`destructiveHint`](https://libtmux.org/en/julia/latest/mcp/reference/glossary/#destructiveHint)

    `true`

  * [`idempotentHint`](https://libtmux.org/en/julia/latest/mcp/reference/glossary/#idempotentHint)

    `false`

  * [`openWorldHint`](https://libtmux.org/en/julia/latest/mcp/reference/glossary/#openWorldHint)

    `true`

  * [`readOnlyHint`](https://libtmux.org/en/julia/latest/mcp/reference/glossary/#readOnlyHint)

    `false`

  ## Protocol data[#](https://libtmux.org/en/julia/latest/mcp/tools/send_keys_and_wait/#mcp.tool.send_keys_and_wait.schemas)

  Use the complete advertised contract for validation and client integration.

  Input schema

  ```json
  {
    "additionalProperties": false,
    "properties": {
      "keys": {
        "items": {
          "description": "Valid UTF-8; at most 1024 bytes",
          "maxLength": 1024,
          "type": "string"
        },
        "maxItems": 64,
        "minItems": 1,
        "type": "array"
      },
      "literal": {
        "default": false,
        "type": "boolean"
      },
      "target": {
        "additionalProperties": false,
        "description": "Explicit captured target; omission requires a configured caller pane",
        "properties": {
          "generation": {
            "description": "Opaque generation from list_panes",
            "maxLength": 128,
            "type": "string"
          },
          "paneId": {
            "description": "Valid UTF-8; at most 64 bytes",
            "maxLength": 64,
            "pattern": "^%(0|[1-9][0-9]*)$",
            "type": "string"
          }
        },
        "required": [
          "paneId",
          "generation"
        ],
        "type": "object"
      },
      "text": {
        "description": "Valid UTF-8; at most 1024 bytes",
        "maxLength": 1024,
        "minLength": 1,
        "type": "string"
      }
    },
    "required": [
      "target",
      "keys",
      "text"
    ],
    "type": "object"
  }
  ```

  Output schema

  ```json
  {
    "anyOf": [
      {
        "additionalProperties": false,
        "properties": {
          "continuity": {
            "const": "reset"
          },
          "evidence": {
            "const": "literal_text"
          },
          "generationGuarantee": {
            "type": "string"
          },
          "keysSent": {
            "type": "boolean"
          },
          "matched": {
            "type": "boolean"
          },
          "source": {
            "enum": [
              "baseline",
              "output"
            ]
          },
          "target": {
            "additionalProperties": false,
            "properties": {
              "generation": {
                "description": "Opaque generation from list_panes",
                "maxLength": 128,
                "type": "string"
              },
              "paneId": {
                "description": "Valid UTF-8; at most 64 bytes",
                "maxLength": 64,
                "pattern": "^%(0|[1-9][0-9]*)$",
                "type": "string"
              }
            },
            "required": [
              "paneId",
              "generation"
            ],
            "type": "object"
          },
          "terminalContent": {
            "const": "data"
          },
          "text": {
            "type": "string"
          }
        },
        "required": [
          "matched",
          "source",
          "terminalContent",
          "evidence",
          "continuity",
          "text",
          "generationGuarantee",
          "keysSent",
          "target"
        ],
        "type": "object"
      },
      {
        "properties": {
          "error": {
            "additionalProperties": false,
            "properties": {
              "code": {
                "type": "string"
              },
              "effects": {
                "enum": [
                  "none",
                  "possible"
                ]
              },
              "message": {
                "type": "string"
              },
              "retryable": {
                "type": "boolean"
              }
            },
            "required": [
              "code",
              "message",
              "effects",
              "retryable"
            ],
            "type": "object"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      }
    ],
    "type": "object"
  }
  ```
