{
  "tools": [
    "call_read_tools_batch",
    "capture_pane",
    "capture_since",
    "clear_pane_scrollback",
    "create_session",
    "create_window",
    "find_pane_by_position",
    "get_pane_info",
    "get_server_info",
    "get_session_info",
    "get_tmux_variables",
    "get_window_info",
    "kill_pane",
    "kill_session",
    "kill_window",
    "list_panes",
    "list_sessions",
    "list_windows",
    "move_window",
    "paste_text",
    "rename_session",
    "rename_window",
    "resize_pane",
    "resize_window",
    "respawn_pane",
    "run_shell_command",
    "search_panes",
    "select_layout",
    "select_pane",
    "select_window",
    "send_keys",
    "send_keys_batch",
    "set_history_limit",
    "set_mouse_enabled",
    "set_pane_title",
    "set_synchronize_panes",
    "show_environment",
    "show_hooks",
    "show_option",
    "signal_channel",
    "snapshot_pane",
    "split_window",
    "swap_pane",
    "wait_for_channel",
    "wait_for_text"
  ],
  "registrations": [
    {
      "name": "call_read_tools_batch",
      "wireName": "call_read_tools_batch",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 586
      },
      "description": "Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted. Execute up to 16 declared inspect operations serially; inner operations receive no separate approval.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "onError": {
            "default": "stop",
            "description": "Stop after the first failed operation, or continue serially.",
            "enum": [
              "continue",
              "stop"
            ],
            "type": "string"
          },
          "operations": {
            "description": "Between 1 and 16 declared inspect calls, executed serially without separate approval for each inner operation.",
            "items": {
              "oneOf": [
                {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": false,
                      "properties": {
                        "includeHistory": {
                          "default": false,
                          "description": "Include scrollback.",
                          "type": "boolean"
                        },
                        "joinWrappedLines": {
                          "default": false,
                          "description": "Rejoin tmux-wrapped lines.",
                          "type": "boolean"
                        },
                        "maxLines": {
                          "default": null,
                          "description": "Maximum returned lines, newest kept. Omit for the server default, 500 unless LIBTMUX_MCP_MAX_LINES sets another.",
                          "maximum": 2147483647,
                          "minimum": -2147483648,
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "paneId": {
                          "default": null,
                          "description": "A pane id. Omit for this server's own pane, or else the one the first session shows.",
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "type": "object"
                    },
                    "tool": {
                      "const": "capture_pane"
                    }
                  },
                  "required": [
                    "tool"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": false,
                      "properties": {
                        "cursor": {
                          "default": null,
                          "description": "The opaque cursor returned by the previous call. Omit to start from what is on screen now.",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "maxLines": {
                          "default": null,
                          "description": "Maximum returned lines, newest kept. Omit for the server default, 500 unless LIBTMUX_MCP_MAX_LINES sets another.",
                          "maximum": 2147483647,
                          "minimum": -2147483648,
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "paneId": {
                          "default": null,
                          "description": "A pane id. Omit for this server's own pane, or else the one the first session shows.",
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "type": "object"
                    },
                    "tool": {
                      "const": "capture_since"
                    }
                  },
                  "required": [
                    "tool"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": false,
                      "properties": {
                        "position": {
                          "description": "The zero-based pane index.",
                          "maximum": 2147483647,
                          "minimum": -2147483648,
                          "type": "integer"
                        },
                        "windowId": {
                          "description": "The window id.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "windowId",
                        "position"
                      ],
                      "type": "object"
                    },
                    "tool": {
                      "const": "find_pane_by_position"
                    }
                  },
                  "required": [
                    "tool"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": false,
                      "properties": {
                        "paneId": {
                          "description": "A pane id.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "paneId"
                      ],
                      "type": "object"
                    },
                    "tool": {
                      "const": "get_pane_info"
                    }
                  },
                  "required": [
                    "tool"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": false,
                      "properties": {},
                      "type": "object"
                    },
                    "tool": {
                      "const": "get_server_info"
                    }
                  },
                  "required": [
                    "tool"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": false,
                      "properties": {
                        "session": {
                          "description": "A session id or name.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "session"
                      ],
                      "type": "object"
                    },
                    "tool": {
                      "const": "get_session_info"
                    }
                  },
                  "required": [
                    "tool"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": false,
                      "properties": {
                        "names": {
                          "description": "Variable names such as session_name, without #{...}. Between 1 and 64 names, each at most 64 letters, digits and underscores.",
                          "items": {
                            "type": "string"
                          },
                          "type": "array"
                        },
                        "paneId": {
                          "default": null,
                          "description": "A pane id used as the lookup context. Omit for this server's own pane, or else the one the first session shows.",
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "names"
                      ],
                      "type": "object"
                    },
                    "tool": {
                      "const": "get_tmux_variables"
                    }
                  },
                  "required": [
                    "tool"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": false,
                      "properties": {
                        "windowId": {
                          "description": "A window id.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "windowId"
                      ],
                      "type": "object"
                    },
                    "tool": {
                      "const": "get_window_info"
                    }
                  },
                  "required": [
                    "tool"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": false,
                      "properties": {
                        "session": {
                          "default": null,
                          "description": "A session id or name. Omit for every session.",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "windowId": {
                          "default": null,
                          "description": "A window id. Omit for every window.",
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "type": "object"
                    },
                    "tool": {
                      "const": "list_panes"
                    }
                  },
                  "required": [
                    "tool"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": false,
                      "properties": {},
                      "type": "object"
                    },
                    "tool": {
                      "const": "list_sessions"
                    }
                  },
                  "required": [
                    "tool"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": false,
                      "properties": {
                        "session": {
                          "default": null,
                          "description": "A session id or name. Omit for every session.",
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "type": "object"
                    },
                    "tool": {
                      "const": "list_windows"
                    }
                  },
                  "required": [
                    "tool"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": false,
                      "properties": {
                        "ignoreCase": {
                          "default": true,
                          "description": "Ignore case.",
                          "type": "boolean"
                        },
                        "includeHistory": {
                          "default": false,
                          "description": "Search scrollback too.",
                          "type": "boolean"
                        },
                        "maxMatchesPerPane": {
                          "default": 20,
                          "description": "Maximum matches per pane.",
                          "maximum": 2147483647,
                          "minimum": -2147483648,
                          "type": "integer"
                        },
                        "pattern": {
                          "description": "A linear-time regular expression, at most 999 UTF-8 bytes. .NET syntax without lookarounds, backreferences or atomic groups.",
                          "type": "string"
                        },
                        "session": {
                          "default": null,
                          "description": "A session id or name. Omit for every session.",
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "required": [
                        "pattern"
                      ],
                      "type": "object"
                    },
                    "tool": {
                      "const": "search_panes"
                    }
                  },
                  "required": [
                    "tool"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "default": null,
                          "description": "One variable name, which answers its value. Omit for every name with hasValue instead of values.",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "session": {
                          "default": null,
                          "description": "A session id or name. Omit for the server environment.",
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "type": "object"
                    },
                    "tool": {
                      "const": "show_environment"
                    }
                  },
                  "required": [
                    "tool"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": false,
                      "properties": {
                        "paneId": {
                          "default": null,
                          "description": "The pane whose scope is read. Omit for this server's own pane, or else the one the first session shows.",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "scope": {
                          "default": "Session",
                          "description": "Server, Session, Window, or Pane.",
                          "enum": [
                            "Server",
                            "Session",
                            "Window",
                            "Pane"
                          ],
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "tool": {
                      "const": "show_hooks"
                    }
                  },
                  "required": [
                    "tool"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": false,
                      "properties": {
                        "name": {
                          "description": "The option name.",
                          "type": "string"
                        },
                        "paneId": {
                          "default": null,
                          "description": "The pane whose scope is read. Omit for this server's own pane, or else the one the first session shows.",
                          "type": [
                            "string",
                            "null"
                          ]
                        },
                        "scope": {
                          "default": "Pane",
                          "description": "Server, Session, Window, or Pane.",
                          "enum": [
                            "Server",
                            "Session",
                            "Window",
                            "Pane"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "name"
                      ],
                      "type": "object"
                    },
                    "tool": {
                      "const": "show_option"
                    }
                  },
                  "required": [
                    "tool"
                  ],
                  "type": "object"
                },
                {
                  "additionalProperties": false,
                  "properties": {
                    "arguments": {
                      "additionalProperties": false,
                      "properties": {
                        "maxLines": {
                          "default": null,
                          "description": "Maximum returned lines, newest kept. Omit for the server default, 500 unless LIBTMUX_MCP_MAX_LINES sets another.",
                          "maximum": 2147483647,
                          "minimum": -2147483648,
                          "type": [
                            "integer",
                            "null"
                          ]
                        },
                        "paneId": {
                          "default": null,
                          "description": "A pane id. Omit for this server's own pane, or else the one the first session shows.",
                          "type": [
                            "string",
                            "null"
                          ]
                        }
                      },
                      "type": "object"
                    },
                    "tool": {
                      "const": "snapshot_pane"
                    }
                  },
                  "required": [
                    "tool"
                  ],
                  "type": "object"
                }
              ]
            },
            "maxItems": 16,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "operations"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "failed": {
            "type": "integer"
          },
          "onError": {
            "type": "string"
          },
          "results": {
            "items": {
              "properties": {
                "error": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "index": {
                  "type": "integer"
                },
                "result": true,
                "resultTruncated": {
                  "type": "boolean"
                },
                "success": {
                  "type": "boolean"
                },
                "tool": {
                  "type": "string"
                }
              },
              "required": [
                "index",
                "tool",
                "success",
                "error",
                "result",
                "resultTruncated"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "stoppedAt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "succeeded": {
            "type": "integer"
          },
          "truncated": {
            "type": "boolean"
          },
          "truncatedBytes": {
            "type": "integer"
          }
        },
        "required": [
          "results",
          "succeeded",
          "failed",
          "stoppedAt",
          "truncated",
          "truncatedBytes",
          "onError"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Call read tools batch"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": true,
          "mayReturnUntrustedContent": true,
          "name": "call_read_tools_batch",
          "nestedAuthority": [
            "capture_pane",
            "capture_since",
            "find_pane_by_position",
            "get_pane_info",
            "get_server_info",
            "get_session_info",
            "get_tmux_variables",
            "get_window_info",
            "list_panes",
            "list_sessions",
            "list_windows",
            "search_panes",
            "show_environment",
            "show_hooks",
            "show_option",
            "snapshot_pane"
          ],
          "outputClasses": [
            "configured-command",
            "process-environment",
            "terminal-content",
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    },
    {
      "name": "capture_pane",
      "wireName": "capture_pane",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 576
      },
      "description": "Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted. Read the text a pane is showing, and optionally its scrollback. The newest lines are always kept; anything dropped to fit the budget is reported. To watch a pane across several turns, use capture_since instead — it returns only what is new.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "includeHistory": {
            "default": false,
            "description": "Include scrollback.",
            "type": "boolean"
          },
          "joinWrappedLines": {
            "default": false,
            "description": "Rejoin tmux-wrapped lines.",
            "type": "boolean"
          },
          "maxLines": {
            "default": null,
            "description": "Maximum returned lines, newest kept. Omit for the server default, 500 unless LIBTMUX_MCP_MAX_LINES sets another.",
            "maximum": 2147483647,
            "minimum": -2147483648,
            "type": [
              "integer",
              "null"
            ]
          },
          "paneId": {
            "default": null,
            "description": "A pane id. Omit for this server's own pane, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "content": {
            "properties": {
              "droppedBytes": {
                "type": "integer"
              },
              "droppedLines": {
                "type": "integer"
              },
              "lines": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "truncated": {
                "type": "boolean"
              }
            },
            "required": [
              "lines",
              "truncated",
              "droppedLines",
              "droppedBytes"
            ],
            "type": "object"
          },
          "paneId": {
            "type": "string"
          }
        },
        "required": [
          "paneId",
          "content"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Capture pane"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": true,
          "mayReturnUntrustedContent": true,
          "name": "capture_pane",
          "nestedAuthority": [],
          "outputClasses": [
            "terminal-content",
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    },
    {
      "name": "capture_since",
      "wireName": "capture_since",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 577
      },
      "description": "Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted. Read only what a pane has printed since the last call. Pass back the cursor each time. Use this to watch a long-running process across turns: the tenth read costs what the first did, where re-capturing the pane would return everything again. Call with no cursor to start watching from now.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "cursor": {
            "default": null,
            "description": "The opaque cursor returned by the previous call. Omit to start from what is on screen now.",
            "type": [
              "string",
              "null"
            ]
          },
          "maxLines": {
            "default": null,
            "description": "Maximum returned lines, newest kept. Omit for the server default, 500 unless LIBTMUX_MCP_MAX_LINES sets another.",
            "maximum": 2147483647,
            "minimum": -2147483648,
            "type": [
              "integer",
              "null"
            ]
          },
          "paneId": {
            "default": null,
            "description": "A pane id. Omit for this server's own pane, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "anchorLost": {
            "type": "boolean"
          },
          "content": {
            "properties": {
              "droppedBytes": {
                "type": "integer"
              },
              "droppedLines": {
                "type": "integer"
              },
              "lines": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "truncated": {
                "type": "boolean"
              }
            },
            "required": [
              "lines",
              "truncated",
              "droppedLines",
              "droppedBytes"
            ],
            "type": "object"
          },
          "cursor": {
            "type": "string"
          },
          "linesMissed": {
            "type": "boolean"
          },
          "paneId": {
            "type": "string"
          }
        },
        "required": [
          "paneId",
          "content",
          "cursor",
          "linesMissed",
          "anchorLost"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Capture since"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": true,
          "mayReturnUntrustedContent": true,
          "name": "capture_since",
          "nestedAuthority": [],
          "outputClasses": [
            "terminal-content",
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    },
    {
      "name": "clear_pane_scrollback",
      "wireName": "clear_pane_scrollback",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 613
      },
      "description": "Delete tmux state; accepts no command payload. Delete a pane's scrollback history, keeping what the screen shows. Deleted history cannot be read back.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "paneId": {
            "default": null,
            "description": "A pane id. Omit for this server's own pane, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Clear pane scrollback"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "clear_pane_scrollback",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "delete"
          ],
          "toolset": "teardown"
        }
      }
    },
    {
      "name": "create_session",
      "wireName": "create_session",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 603
      },
      "description": "Start a pane's configured process; accepts no command payload. Create a detached tmux session and return its ids. Give a width and height when nothing will attach to it: a session with no client keeps tmux's default 80x24, which truncates wide output.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "height": {
            "default": null,
            "description": "Rows. Omit for tmux's default of 24.",
            "maximum": 2147483647,
            "minimum": -2147483648,
            "type": [
              "integer",
              "null"
            ]
          },
          "name": {
            "default": null,
            "description": "The session name. Omit and tmux names it with a number.",
            "type": [
              "string",
              "null"
            ]
          },
          "startDirectory": {
            "default": null,
            "description": "The literal starting directory. Omit for the MCP server's own working directory.",
            "type": [
              "string",
              "null"
            ]
          },
          "width": {
            "default": null,
            "description": "Columns. Omit for tmux's default of 80.",
            "maximum": 2147483647,
            "minimum": -2147483648,
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Create session"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {
            "name": "double-hash-once",
            "startDirectory": "double-hash-once"
          },
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "create_session",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "configured-process",
          "tmuxEffects": [
            "change",
            "observe"
          ],
          "toolset": "execute"
        }
      }
    },
    {
      "name": "create_window",
      "wireName": "create_window",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 604
      },
      "description": "Start a pane's configured process; accepts no command payload. Create a window in a tmux session and return its ids.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "default": null,
            "description": "The window name. Omit and tmux names it after the program it runs.",
            "type": [
              "string",
              "null"
            ]
          },
          "session": {
            "default": null,
            "description": "A session id or name. Omit for the first session.",
            "type": [
              "string",
              "null"
            ]
          },
          "startDirectory": {
            "default": null,
            "description": "The literal starting directory. Omit for the MCP server's own working directory.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Create window"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {
            "name": "double-hash-once",
            "startDirectory": "double-hash-once"
          },
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "create_window",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "configured-process",
          "tmuxEffects": [
            "change",
            "observe"
          ],
          "toolset": "execute"
        }
      }
    },
    {
      "name": "find_pane_by_position",
      "wireName": "find_pane_by_position",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 580
      },
      "description": "Inspect tmux metadata; accepts no client-supplied executable input. Find the pane sitting at an index within a window. Answers nothing rather than failing when no pane is at that position.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "position": {
            "description": "The zero-based pane index.",
            "maximum": 2147483647,
            "minimum": -2147483648,
            "type": "integer"
          },
          "windowId": {
            "description": "The window id.",
            "type": "string"
          }
        },
        "required": [
          "windowId",
          "position"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "active": {
            "type": "boolean"
          },
          "currentCommand": {
            "type": [
              "string",
              "null"
            ]
          },
          "currentPath": {
            "type": [
              "string",
              "null"
            ]
          },
          "dead": {
            "type": "boolean"
          },
          "height": {
            "type": "integer"
          },
          "historyLimit": {
            "type": [
              "integer",
              "null"
            ]
          },
          "historySize": {
            "type": [
              "integer",
              "null"
            ]
          },
          "index": {
            "type": "integer"
          },
          "inMode": {
            "type": "boolean"
          },
          "isCaller": {
            "type": "boolean"
          },
          "paneId": {
            "type": "string"
          },
          "pid": {
            "type": [
              "integer",
              "null"
            ]
          },
          "sessionId": {
            "type": "string"
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "width": {
            "type": "integer"
          },
          "windowId": {
            "type": "string"
          },
          "zoomed": {
            "type": "boolean"
          }
        },
        "required": [
          "paneId",
          "windowId",
          "sessionId",
          "index",
          "width",
          "height",
          "title",
          "active",
          "dead",
          "zoomed",
          "inMode",
          "currentCommand",
          "currentPath",
          "pid",
          "historySize",
          "historyLimit",
          "isCaller"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Find pane by position"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "find_pane_by_position",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    },
    {
      "name": "get_pane_info",
      "wireName": "get_pane_info",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 575
      },
      "description": "Inspect tmux metadata; accepts no client-supplied executable input. Read one pane's size, title, running command, working directory, process ID, history size and limit, and whether it is active, dead, zoomed, in a mode or the pane this server runs in. This is metadata only; to read what the pane shows, use capture_pane or snapshot_pane.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "paneId": {
            "description": "A pane id.",
            "type": "string"
          }
        },
        "required": [
          "paneId"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "active": {
            "type": "boolean"
          },
          "currentCommand": {
            "type": [
              "string",
              "null"
            ]
          },
          "currentPath": {
            "type": [
              "string",
              "null"
            ]
          },
          "dead": {
            "type": "boolean"
          },
          "height": {
            "type": "integer"
          },
          "historyLimit": {
            "type": [
              "integer",
              "null"
            ]
          },
          "historySize": {
            "type": [
              "integer",
              "null"
            ]
          },
          "index": {
            "type": "integer"
          },
          "inMode": {
            "type": "boolean"
          },
          "isCaller": {
            "type": "boolean"
          },
          "paneId": {
            "type": "string"
          },
          "pid": {
            "type": [
              "integer",
              "null"
            ]
          },
          "sessionId": {
            "type": "string"
          },
          "title": {
            "type": [
              "string",
              "null"
            ]
          },
          "width": {
            "type": "integer"
          },
          "windowId": {
            "type": "string"
          },
          "zoomed": {
            "type": "boolean"
          }
        },
        "required": [
          "paneId",
          "windowId",
          "sessionId",
          "index",
          "width",
          "height",
          "title",
          "active",
          "dead",
          "zoomed",
          "inMode",
          "currentCommand",
          "currentPath",
          "pid",
          "historySize",
          "historyLimit",
          "isCaller"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Get pane info"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "get_pane_info",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    },
    {
      "name": "get_server_info",
      "wireName": "get_server_info",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 572
      },
      "description": "Inspect tmux metadata; accepts no client-supplied executable input. Read the tmux server's version and how many sessions, windows and panes it holds. Use to confirm a socket is alive and which tmux is running it.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "callerPaneId": {
            "type": [
              "string",
              "null"
            ]
          },
          "callerPaneSocket": {
            "type": [
              "string",
              "null"
            ]
          },
          "paneCount": {
            "type": "integer"
          },
          "sessionCount": {
            "type": "integer"
          },
          "socketName": {
            "type": [
              "string",
              "null"
            ]
          },
          "socketPath": {
            "type": [
              "string",
              "null"
            ]
          },
          "version": {
            "type": [
              "string",
              "null"
            ]
          },
          "windowCount": {
            "type": "integer"
          }
        },
        "required": [
          "socketName",
          "socketPath",
          "version",
          "sessionCount",
          "windowCount",
          "paneCount",
          "callerPaneId",
          "callerPaneSocket"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Get server info"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "get_server_info",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    },
    {
      "name": "get_session_info",
      "wireName": "get_session_info",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 573
      },
      "description": "Inspect tmux metadata; accepts no client-supplied executable input. Read one session's name, ID, window count and whether a client is attached, without listing every session. Give the session, or a window ID to read the session that holds it.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "session": {
            "description": "A session id or name.",
            "type": "string"
          }
        },
        "required": [
          "session"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "attached": {
            "type": "boolean"
          },
          "name": {
            "type": "string"
          },
          "sessionId": {
            "type": "string"
          },
          "windowCount": {
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "sessionId",
          "name",
          "attached",
          "windowCount"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Get session info"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "get_session_info",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    },
    {
      "name": "get_tmux_variables",
      "wireName": "get_tmux_variables",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 582
      },
      "description": "Read configured tmux commands; accepts no client-supplied executable input. Returned values may contain executable configuration. Expand named tmux format variables for a pane, such as session_name or window_width. Use it for fields nothing else answers; get_pane_info already returns the common ones, and show_option reads configuration rather than live state.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "names": {
            "description": "Variable names such as session_name, without #{...}. Between 1 and 64 names, each at most 64 letters, digits and underscores.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "paneId": {
            "default": null,
            "description": "A pane id used as the lookup context. Omit for this server's own pane, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "names"
        ],
        "type": "object"
      },
      "outputSchema": {
        "additionalProperties": {
          "type": "string"
        },
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Get tmux variables"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {
            "names": "validated-variable-name"
          },
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": true,
          "name": "get_tmux_variables",
          "nestedAuthority": [],
          "outputClasses": [
            "configured-command",
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    },
    {
      "name": "get_window_info",
      "wireName": "get_window_info",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 574
      },
      "description": "Inspect tmux metadata; accepts no client-supplied executable input. Read one window's name, index, size, layout, pane count and whether it is its session's current window, without listing every window. Give the window ID, or a pane ID to read the window that holds it.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "windowId": {
            "description": "A window id.",
            "type": "string"
          }
        },
        "required": [
          "windowId"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "active": {
            "type": "boolean"
          },
          "height": {
            "type": "integer"
          },
          "index": {
            "type": "integer"
          },
          "layout": {
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "type": "string"
          },
          "paneCount": {
            "type": [
              "integer",
              "null"
            ]
          },
          "sessionId": {
            "type": "string"
          },
          "width": {
            "type": "integer"
          },
          "windowId": {
            "type": "string"
          }
        },
        "required": [
          "windowId",
          "sessionId",
          "index",
          "name",
          "width",
          "height",
          "active",
          "paneCount",
          "layout"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Get window info"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "get_window_info",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    },
    {
      "name": "kill_pane",
      "wireName": "kill_pane",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 614
      },
      "description": "Delete tmux state; accepts no command payload. Close a pane and end its program. Refuses the pane this server runs in; to remove a whole window, use kill_window.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "paneId": {
            "description": "The pane id to kill.",
            "type": "string"
          }
        },
        "required": [
          "paneId"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Kill pane"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "kill_pane",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "delete",
            "observe"
          ],
          "toolset": "teardown"
        }
      }
    },
    {
      "name": "kill_session",
      "wireName": "kill_session",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 616
      },
      "description": "Delete tmux state; accepts no command payload. Close a session with all its windows and panes. Refuses the session this server runs in.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "session": {
            "description": "The session id or name to kill.",
            "type": "string"
          }
        },
        "required": [
          "session"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Kill session"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "kill_session",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "delete",
            "observe"
          ],
          "toolset": "teardown"
        }
      }
    },
    {
      "name": "kill_window",
      "wireName": "kill_window",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 615
      },
      "description": "Delete tmux state; accepts no command payload. Close a window and every pane in it. Refuses the window this server runs in.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "windowId": {
            "description": "The window id to kill.",
            "type": "string"
          }
        },
        "required": [
          "windowId"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Kill window"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "kill_window",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "delete",
            "observe"
          ],
          "toolset": "teardown"
        }
      }
    },
    {
      "name": "list_panes",
      "wireName": "list_panes",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 571
      },
      "description": "Inspect tmux metadata; accepts no client-supplied executable input. List tmux panes, optionally within one session or window. Filter for isCaller=true to answer 'which pane am I in?', which finds one only when this server drives the caller's own socket — get_server_info says whose socket that is. This reads sizes and running commands, not terminal text — for that use search_panes.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "session": {
            "default": null,
            "description": "A session id or name. Omit for every session.",
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "description": "A window id. Omit for every window.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "items": {
              "properties": {
                "active": {
                  "type": "boolean"
                },
                "currentCommand": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "currentPath": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "dead": {
                  "type": "boolean"
                },
                "height": {
                  "type": "integer"
                },
                "historyLimit": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "historySize": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "index": {
                  "type": "integer"
                },
                "inMode": {
                  "type": "boolean"
                },
                "isCaller": {
                  "type": "boolean"
                },
                "paneId": {
                  "type": "string"
                },
                "pid": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "sessionId": {
                  "type": "string"
                },
                "title": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "width": {
                  "type": "integer"
                },
                "windowId": {
                  "type": "string"
                },
                "zoomed": {
                  "type": "boolean"
                }
              },
              "required": [
                "paneId",
                "windowId",
                "sessionId",
                "index",
                "width",
                "height",
                "title",
                "active",
                "dead",
                "zoomed",
                "inMode",
                "currentCommand",
                "currentPath",
                "pid",
                "historySize",
                "historyLimit",
                "isCaller"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "result"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "List panes"
      },
      "meta": {
        "anthropic/alwaysLoad": true,
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "list_panes",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    },
    {
      "name": "list_sessions",
      "wireName": "list_sessions",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 569
      },
      "description": "Inspect tmux metadata; accepts no client-supplied executable input. List the tmux sessions. This reads names and sizes, not terminal text — to find what a pane is showing, use search_panes.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "items": {
              "properties": {
                "attached": {
                  "type": "boolean"
                },
                "name": {
                  "type": "string"
                },
                "sessionId": {
                  "type": "string"
                },
                "windowCount": {
                  "type": [
                    "integer",
                    "null"
                  ]
                }
              },
              "required": [
                "sessionId",
                "name",
                "attached",
                "windowCount"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "result"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "List sessions"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "list_sessions",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    },
    {
      "name": "list_windows",
      "wireName": "list_windows",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 570
      },
      "description": "Inspect tmux metadata; accepts no client-supplied executable input. List tmux windows, optionally within one session. This reads names and layouts, not terminal text — to find what a pane is showing, use search_panes.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "session": {
            "default": null,
            "description": "A session id or name. Omit for every session.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "items": {
              "properties": {
                "active": {
                  "type": "boolean"
                },
                "height": {
                  "type": "integer"
                },
                "index": {
                  "type": "integer"
                },
                "layout": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "name": {
                  "type": "string"
                },
                "paneCount": {
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "sessionId": {
                  "type": "string"
                },
                "width": {
                  "type": "integer"
                },
                "windowId": {
                  "type": "string"
                }
              },
              "required": [
                "windowId",
                "sessionId",
                "index",
                "name",
                "width",
                "height",
                "active",
                "paneCount",
                "layout"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "result"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "List windows"
      },
      "meta": {
        "anthropic/alwaysLoad": true,
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "list_windows",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    },
    {
      "name": "move_window",
      "wireName": "move_window",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 595
      },
      "description": "Change tmux state; no client-supplied executable input. Move a window to another index, or into another session. With replaceExisting it takes an index that is already occupied by killing the window there, which needs the teardown toolset.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "destination": {
            "default": "",
            "description": "The destination window index. Omit for the next free index, as an empty one does.",
            "type": "string"
          },
          "replaceExisting": {
            "default": false,
            "description": "Kill the window already at that index and take its place. Needs the same authority as kill_window, because that is what it does to it.",
            "type": "boolean"
          },
          "session": {
            "default": null,
            "description": "The destination session id or name. Omit to stay in the window's session.",
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "description": "The window id to move.",
            "type": "string"
          }
        },
        "required": [
          "windowId"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Move window"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "move_window",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "change",
            "observe"
          ],
          "toolset": "manage"
        }
      }
    },
    {
      "name": "paste_text",
      "wireName": "paste_text",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 610
      },
      "description": "Send input to a pane's program; a shell that receives it runs it with your user's permissions. Paste a block of text into exactly one pane through a tmux buffer. Use for multi-line text, or anything an editor would mangle if typed — bracketed paste stops auto-indent. Set enter to append a newline to that same private buffer. It refuses a target in a human-owned mode and never fans out to synchronized siblings. The temporary buffer is deleted afterwards; if cleanup fails, the result identifies what remains.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "bracketed": {
            "default": true,
            "description": "Use bracketed paste.",
            "type": "boolean"
          },
          "enter": {
            "default": false,
            "description": "Append Enter to the same paste buffer.",
            "type": "boolean"
          },
          "paneId": {
            "default": null,
            "description": "A pane id. Omit for this server's own pane, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          },
          "text": {
            "description": "The text to paste.",
            "type": "string"
          }
        },
        "required": [
          "text"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Paste text"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "paste_text",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "pane-input",
          "tmuxEffects": [
            "change",
            "observe"
          ],
          "toolset": "execute"
        }
      }
    },
    {
      "name": "rename_session",
      "wireName": "rename_session",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 588
      },
      "description": "Change tmux state; no client-supplied executable input. Rename a tmux session. Its id does not change, so anything holding one still works.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "description": "The new session name.",
            "type": "string"
          },
          "session": {
            "default": null,
            "description": "A session id or name. Omit for the first session.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Rename session"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {
            "name": "double-hash-once"
          },
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "rename_session",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "change",
            "observe"
          ],
          "toolset": "manage"
        }
      }
    },
    {
      "name": "rename_window",
      "wireName": "rename_window",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 589
      },
      "description": "Change tmux state; no client-supplied executable input. Rename a tmux window. Its id does not change.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "description": "The new window name.",
            "type": "string"
          },
          "windowId": {
            "default": null,
            "description": "A window id. Omit for this server's own window, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Rename window"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {
            "name": "double-hash-once"
          },
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "rename_window",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "change",
            "observe"
          ],
          "toolset": "manage"
        }
      }
    },
    {
      "name": "resize_pane",
      "wireName": "resize_pane",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 594
      },
      "description": "Change tmux state; no client-supplied executable input. Resize a pane, or zoom it to fill its window. Widening a pane before reading it is the fix for output that comes back wrapped across rows.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "height": {
            "default": null,
            "description": "Rows. Omit to keep the current height.",
            "maximum": 2147483647,
            "minimum": -2147483648,
            "type": [
              "integer",
              "null"
            ]
          },
          "paneId": {
            "default": null,
            "description": "A pane id. Omit for this server's own pane, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          },
          "width": {
            "default": null,
            "description": "Columns. Omit to keep the current width.",
            "maximum": 2147483647,
            "minimum": -2147483648,
            "type": [
              "integer",
              "null"
            ]
          },
          "zoom": {
            "default": false,
            "description": "Zoom the pane.",
            "type": "boolean"
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Resize pane"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "resize_pane",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "change",
            "observe"
          ],
          "toolset": "manage"
        }
      }
    },
    {
      "name": "resize_window",
      "wireName": "resize_window",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 593
      },
      "description": "Change tmux state; no client-supplied executable input. Resize a window to a width and height in cells; its panes resize with it. To resize one pane, use resize_pane.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "height": {
            "default": null,
            "description": "Rows. Omit to keep the current height.",
            "maximum": 2147483647,
            "minimum": -2147483648,
            "type": [
              "integer",
              "null"
            ]
          },
          "width": {
            "default": null,
            "description": "Columns. Omit to keep the current width.",
            "maximum": 2147483647,
            "minimum": -2147483648,
            "type": [
              "integer",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "description": "A window id. Omit for this server's own window, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Resize window"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "resize_window",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "change",
            "observe"
          ],
          "toolset": "manage"
        }
      }
    },
    {
      "name": "respawn_pane",
      "wireName": "respawn_pane",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 606
      },
      "description": "Start a pane's configured process; accepts no command payload. Only restarts a pane whose command has ALREADY EXITED. killExistingProcess overrides that and kills what is running first — an editor holding unsaved changes, a build part way through. It reruns the command the pane was created with rather than running something new.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "killExistingProcess": {
            "default": false,
            "description": "Kill the existing pane process first.",
            "type": "boolean"
          },
          "paneId": {
            "default": null,
            "description": "A pane id. Omit for this server's own pane, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          },
          "startDirectory": {
            "default": null,
            "description": "The literal starting directory. Omit for the directory the pane started in before.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Respawn pane"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {
            "startDirectory": "double-hash-once"
          },
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "respawn_pane",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "configured-process",
          "tmuxEffects": [
            "change",
            "delete",
            "observe"
          ],
          "toolset": "execute"
        }
      }
    },
    {
      "name": "run_shell_command",
      "wireName": "run_shell_command",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 607
      },
      "description": "Run a shell command in a pane with your user's permissions. Run a shell command in one pane, wait for it to finish, and report its singular real exit status and output. This is the tool for 'run X and tell me if it worked'. It reaches only the pane you name: the command travels through a tmux buffer, which synchronize-panes does not fan out, so the exit status is one pane's. Use send_keys when you want a synchronized cohort to receive input. Do NOT send keys and then poll a capture in a loop — this waits deterministically and costs one call. The command runs in a subshell, so cd and export do not persist. It refuses the named pane in a human-owned mode. Check linesMissed and anchorLost. A timed-out command MAY STILL BE RUNNING; inspect it and do not retry it — unless started is false, which means it never ran because something other than an idle shell was reading that pane's input.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "command": {
            "description": "The shell command.",
            "type": "string"
          },
          "maxLines": {
            "default": null,
            "description": "Maximum returned lines, newest kept. Omit for the server default, 500 unless LIBTMUX_MCP_MAX_LINES sets another.",
            "maximum": 2147483647,
            "minimum": -2147483648,
            "type": [
              "integer",
              "null"
            ]
          },
          "paneId": {
            "default": null,
            "description": "A pane id. Omit for this server's own pane, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          },
          "suppressHistory": {
            "default": false,
            "description": "Keep the command out of shell history on a best-effort basis.",
            "type": "boolean"
          },
          "timeoutSeconds": {
            "default": null,
            "description": "Seconds to wait, lowered to the server's ceiling. Omit to wait the whole ceiling, 30 unless LIBTMUX_MCP_WAIT_MAX_SECONDS sets another.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "command"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "anchorLost": {
            "default": false,
            "type": "boolean"
          },
          "effectiveTimeoutSeconds": {
            "type": "number"
          },
          "elapsedSeconds": {
            "type": "number"
          },
          "exitStatus": {
            "type": [
              "integer",
              "null"
            ]
          },
          "linesMissed": {
            "default": false,
            "type": "boolean"
          },
          "output": {
            "properties": {
              "droppedBytes": {
                "type": "integer"
              },
              "droppedLines": {
                "type": "integer"
              },
              "lines": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "truncated": {
                "type": "boolean"
              }
            },
            "required": [
              "lines",
              "truncated",
              "droppedLines",
              "droppedBytes"
            ],
            "type": "object"
          },
          "paneExited": {
            "default": false,
            "type": "boolean"
          },
          "paneId": {
            "type": "string"
          },
          "started": {
            "default": true,
            "type": "boolean"
          },
          "timedOut": {
            "type": "boolean"
          }
        },
        "required": [
          "paneId",
          "exitStatus",
          "timedOut",
          "output",
          "elapsedSeconds",
          "effectiveTimeoutSeconds"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Run shell command"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": true,
          "mayReturnUntrustedContent": true,
          "name": "run_shell_command",
          "nestedAuthority": [],
          "outputClasses": [
            "terminal-content",
            "tmux-metadata"
          ],
          "processReach": "pane-command",
          "tmuxEffects": [
            "change",
            "observe"
          ],
          "toolset": "execute"
        }
      }
    },
    {
      "name": "search_panes",
      "wireName": "search_panes",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 579
      },
      "description": "Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted. Find which panes are showing text matching a regular expression. This is the tool for 'which pane has the error', 'where is the build running', or any question about what a pane CONTAINS — the list tools only see names and sizes.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "ignoreCase": {
            "default": true,
            "description": "Ignore case.",
            "type": "boolean"
          },
          "includeHistory": {
            "default": false,
            "description": "Search scrollback too.",
            "type": "boolean"
          },
          "maxMatchesPerPane": {
            "default": 20,
            "description": "Maximum matches per pane.",
            "maximum": 2147483647,
            "minimum": -2147483648,
            "type": "integer"
          },
          "pattern": {
            "description": "A linear-time regular expression, at most 999 UTF-8 bytes. .NET syntax without lookarounds, backreferences or atomic groups.",
            "type": "string"
          },
          "session": {
            "default": null,
            "description": "A session id or name. Omit for every session.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "pattern"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "panes": {
            "items": {
              "properties": {
                "matches": {
                  "items": {
                    "properties": {
                      "row": {
                        "type": "integer"
                      },
                      "text": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "row",
                      "text"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "paneId": {
                  "type": "string"
                },
                "sessionId": {
                  "type": "string"
                },
                "windowId": {
                  "type": "string"
                }
              },
              "required": [
                "paneId",
                "windowId",
                "sessionId",
                "matches"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "panesSearched": {
            "type": "integer"
          },
          "pattern": {
            "type": "string"
          },
          "truncated": {
            "type": "boolean"
          }
        },
        "required": [
          "pattern",
          "panesSearched",
          "panes",
          "truncated"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Search panes"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": true,
          "mayReturnUntrustedContent": true,
          "name": "search_panes",
          "nestedAuthority": [],
          "outputClasses": [
            "terminal-content",
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    },
    {
      "name": "select_layout",
      "wireName": "select_layout",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 592
      },
      "description": "Change tmux state; no client-supplied executable input. Arrange a window's panes with a named layout — even-horizontal, even-vertical, main-horizontal, main-vertical, tiled — or a layout string read from list_windows.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "layout": {
            "default": null,
            "description": "A supported layout name or layout string. Omit to reapply the window's last preset layout, if it has had one.",
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "description": "A window id. Omit for this server's own window, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Select layout"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "select_layout",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "change",
            "observe"
          ],
          "toolset": "manage"
        }
      }
    },
    {
      "name": "select_pane",
      "wireName": "select_pane",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 591
      },
      "description": "Change tmux state; no client-supplied executable input. Make a pane the active one in its window. This changes what a watching human sees; targeting a pane by id does not require selecting it first.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "paneId": {
            "description": "A pane id.",
            "type": "string"
          }
        },
        "required": [
          "paneId"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Select pane"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "select_pane",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "change",
            "observe"
          ],
          "toolset": "manage"
        }
      }
    },
    {
      "name": "select_window",
      "wireName": "select_window",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 590
      },
      "description": "Change tmux state; no client-supplied executable input. Make a window the current one in its session.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "windowId": {
            "description": "A window id.",
            "type": "string"
          }
        },
        "required": [
          "windowId"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Select window"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "select_window",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "change",
            "observe"
          ],
          "toolset": "manage"
        }
      }
    },
    {
      "name": "send_keys",
      "wireName": "send_keys",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 608
      },
      "description": "Send input to a pane's program; a shell that receives it runs it with your user's permissions. Send raw keystrokes to a pane and return immediately. Use for driving an interactive program — a key in vim, a menu choice, Ctrl-C. Set literal=false to send named keys such as C-c, Escape or F5. It refuses the named pane in a human-owned mode and, when source input expands, every synchronized input cohort peer. To run a shell command and learn whether it worked, use run_shell_command instead; this reports nothing about what happens next. Tracks what it sends — including edits such as backspace, Ctrl-U or Ctrl-C — so wait_for_text can tell this pane's echo apart from real output for a short time afterward.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "enter": {
            "default": false,
            "description": "Press Enter after the keys.",
            "type": "boolean"
          },
          "keys": {
            "description": "Text or a tmux key name.",
            "type": "string"
          },
          "literal": {
            "default": true,
            "description": "Treat keys as literal text.",
            "type": "boolean"
          },
          "paneId": {
            "default": null,
            "description": "A pane id. Omit for this server's own pane, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          },
          "suppressHistory": {
            "default": false,
            "description": "Keep text out of shell history on a best-effort basis.",
            "type": "boolean"
          }
        },
        "required": [
          "keys"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "type": "string"
          },
          "targetPaneIds": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "changed",
          "paneId",
          "targetPaneIds"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Send keys"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "send_keys",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "pane-input",
          "tmuxEffects": [
            "change",
            "observe"
          ],
          "toolset": "execute"
        }
      }
    },
    {
      "name": "send_keys_batch",
      "wireName": "send_keys_batch",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 609
      },
      "description": "Send input to a pane's program; a shell that receives it runs it with your user's permissions. Send several keystrokes to one pane in order, in a single call. Use for a short interactive sequence — open a file, move, type, save — instead of one call per key. Each operation refuses the named pane in a human-owned mode and, when source input expands, every synchronized input cohort peer. A batch has at most 64 steps and 64 KiB of UTF-8 text. Each delay is 0-2000 ms and all delays together must fit the server wait ceiling.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "onError": {
            "default": "stop",
            "description": "Stop after the first failed operation, or continue serially.",
            "enum": [
              "continue",
              "stop"
            ],
            "type": "string"
          },
          "operations": {
            "description": "Between 1 and 64 bounded pane-input operations, executed serially.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "delayMilliseconds": {
                  "default": null,
                  "maximum": 2000,
                  "minimum": 0,
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "enter": {
                  "default": false,
                  "type": "boolean"
                },
                "keys": {
                  "type": "string"
                },
                "literal": {
                  "default": true,
                  "type": "boolean"
                },
                "paneId": {
                  "default": null,
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "suppressHistory": {
                  "default": false,
                  "type": "boolean"
                }
              },
              "required": [
                "keys"
              ],
              "type": "object"
            },
            "maxItems": 64,
            "minItems": 1,
            "type": "array"
          }
        },
        "required": [
          "operations"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "failed": {
            "type": "integer"
          },
          "onError": {
            "type": "string"
          },
          "results": {
            "items": {
              "properties": {
                "error": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "index": {
                  "type": "integer"
                },
                "paneId": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "success": {
                  "type": "boolean"
                },
                "targetPaneIds": {
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "index",
                "paneId",
                "success",
                "error",
                "targetPaneIds"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "stoppedAt": {
            "type": [
              "integer",
              "null"
            ]
          },
          "succeeded": {
            "type": "integer"
          }
        },
        "required": [
          "results",
          "succeeded",
          "failed",
          "stoppedAt",
          "onError"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Send keys batch"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "send_keys_batch",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "pane-input",
          "tmuxEffects": [
            "change",
            "observe"
          ],
          "toolset": "execute"
        }
      }
    },
    {
      "name": "set_history_limit",
      "wireName": "set_history_limit",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 601
      },
      "description": "Change tmux state; no client-supplied executable input. Set how many scrollback lines tmux keeps. This is a SESSION option, so it covers every window in the session rather than one pane, and the session must be named because the call can destroy data. Raise it before starting something that prints a lot: no capture can return lines tmux has already discarded. LOWERING it discards the excess from every pane immediately, and the result says how many lines went; raising the limit again does not bring them back.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "lines": {
            "description": "The scrollback line limit.",
            "maximum": 2147483647,
            "minimum": -2147483648,
            "type": "integer"
          },
          "session": {
            "description": "A session id such as $0, or its name.",
            "type": "string"
          }
        },
        "required": [
          "lines",
          "session"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Set history limit"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "set_history_limit",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "change"
          ],
          "toolset": "manage"
        }
      }
    },
    {
      "name": "set_mouse_enabled",
      "wireName": "set_mouse_enabled",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 600
      },
      "description": "Change tmux state; no client-supplied executable input. Turn tmux mouse support on or off. This sets the global option, so it applies to every session on this server and changes what a human watching can do with their mouse.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "description": "Whether mouse support is enabled globally.",
            "type": "boolean"
          }
        },
        "required": [
          "enabled"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Set mouse enabled"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "set_mouse_enabled",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "change"
          ],
          "toolset": "manage"
        }
      }
    },
    {
      "name": "set_pane_title",
      "wireName": "set_pane_title",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 597
      },
      "description": "Change tmux state; no client-supplied executable input. Set a pane's title. Useful for labelling panes you created so a human watching can tell which is which.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "paneId": {
            "default": null,
            "description": "A pane id. Omit for this server's own pane, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          },
          "title": {
            "description": "The literal pane title.",
            "type": "string"
          }
        },
        "required": [
          "title"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Set pane title"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {
            "title": "double-hash-once"
          },
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "set_pane_title",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "change",
            "observe"
          ],
          "toolset": "manage"
        }
      }
    },
    {
      "name": "set_synchronize_panes",
      "wireName": "set_synchronize_panes",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 611
      },
      "description": "Change tmux state; no client-supplied executable input. Turn synchronize-panes on or off for a window. Input typed into one of its panes then reaches the synchronized input cohort: every pane whose effective synchronize-panes setting is on. A pane without a setting of its own follows the window; one with its own setting stays included or excluded either way.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "enabled": {
            "description": "Whether to set this window's inherited synchronize-panes default. Pane overrides can still include or exclude individual panes.",
            "type": "boolean"
          },
          "windowId": {
            "default": null,
            "description": "A window id. Omit for this server's own window, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "enabled"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Set synchronize panes"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": true,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "set_synchronize_panes",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "change"
          ],
          "toolset": "execute"
        }
      }
    },
    {
      "name": "show_environment",
      "wireName": "show_environment",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 584
      },
      "description": "Read the tmux environment; accepts no client-supplied executable input. A listing answers names without values, and a named variable is still withheld when the name reads as a credential. Read what a NEW pane will inherit, at the server or session level — not what an already-running shell has.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "default": null,
            "description": "One variable name, which answers its value. Omit for every name with hasValue instead of values.",
            "type": [
              "string",
              "null"
            ]
          },
          "session": {
            "default": null,
            "description": "A session id or name. Omit for the server environment.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "items": {
              "properties": {
                "hasValue": {
                  "type": "boolean"
                },
                "isRemoved": {
                  "type": "boolean"
                },
                "name": {
                  "type": "string"
                },
                "value": {
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "withheld": {
                  "type": "boolean"
                }
              },
              "required": [
                "name",
                "value",
                "isRemoved",
                "hasValue",
                "withheld"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "result"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Show environment"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": true,
          "mayReturnUntrustedContent": false,
          "name": "show_environment",
          "nestedAuthority": [],
          "outputClasses": [
            "process-environment"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    },
    {
      "name": "show_hooks",
      "wireName": "show_hooks",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 585
      },
      "description": "Read configured tmux commands; accepts no client-supplied executable input. Returned values may contain executable configuration. Read the hooks tmux will run on its own events. Read-only on purpose: a hook written here would outlive this conversation and keep firing with nobody left who knows why. Put hooks you want to keep in your tmux config file.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "paneId": {
            "default": null,
            "description": "The pane whose scope is read. Omit for this server's own pane, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          },
          "scope": {
            "default": "Session",
            "description": "Server, Session, Window, or Pane.",
            "enum": [
              "Server",
              "Session",
              "Window",
              "Pane"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "items": {
              "properties": {
                "command": {
                  "type": "string"
                },
                "index": {
                  "type": "integer"
                },
                "name": {
                  "type": "string"
                },
                "scope": {
                  "enum": [
                    "Server",
                    "Session",
                    "Window",
                    "Pane"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "name",
                "index",
                "command",
                "scope"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "result"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Show hooks"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": true,
          "name": "show_hooks",
          "nestedAuthority": [],
          "outputClasses": [
            "configured-command"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    },
    {
      "name": "show_option",
      "wireName": "show_option",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 583
      },
      "description": "Read configured tmux commands; accepts no client-supplied executable input. Returned values may contain executable configuration. Read tmux options at the server, session, window or pane level. Values set at a wider scope are included and marked inherited, because that is where nearly all tmux configuration lives. Omit the name to list them all. Reading history-limit before a long tail tells you how much output the pane can hold before it starts dropping lines.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "name": {
            "description": "The option name.",
            "type": "string"
          },
          "paneId": {
            "default": null,
            "description": "The pane whose scope is read. Omit for this server's own pane, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          },
          "scope": {
            "default": "Pane",
            "description": "Server, Session, Window, or Pane.",
            "enum": [
              "Server",
              "Session",
              "Window",
              "Pane"
            ],
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "result": {
            "items": {
              "properties": {
                "inherited": {
                  "type": "boolean"
                },
                "name": {
                  "type": "string"
                },
                "scope": {
                  "enum": [
                    "Server",
                    "Session",
                    "Window",
                    "Pane"
                  ],
                  "type": "string"
                },
                "value": {
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "name",
                "value",
                "scope",
                "inherited"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "result"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Show option"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": true,
          "name": "show_option",
          "nestedAuthority": [],
          "outputClasses": [
            "configured-command",
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    },
    {
      "name": "signal_channel",
      "wireName": "signal_channel",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 599
      },
      "description": "Change tmux state; no client-supplied executable input. Signal a tmux wait-for channel, releasing whatever waits on it. The channel latches: signalling before anyone waits still satisfies the next wait, so a handoff cannot be lost to a race.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "channel": {
            "description": "The tmux wait-for channel.",
            "type": "string"
          }
        },
        "required": [
          "channel"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Signal channel"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "signal_channel",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "change"
          ],
          "toolset": "manage"
        }
      }
    },
    {
      "name": "snapshot_pane",
      "wireName": "snapshot_pane",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 578
      },
      "description": "Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted. Read a pane's visible content together with its cursor position, size and running command, in one call. Prefer this over capture_pane plus list_panes: it is one round trip and the cursor is guaranteed to describe the text returned with it.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "maxLines": {
            "default": null,
            "description": "Maximum returned lines, newest kept. Omit for the server default, 500 unless LIBTMUX_MCP_MAX_LINES sets another.",
            "maximum": 2147483647,
            "minimum": -2147483648,
            "type": [
              "integer",
              "null"
            ]
          },
          "paneId": {
            "default": null,
            "description": "A pane id. Omit for this server's own pane, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "alternateScreen": {
            "type": "boolean"
          },
          "content": {
            "properties": {
              "droppedBytes": {
                "type": "integer"
              },
              "droppedLines": {
                "type": "integer"
              },
              "lines": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "truncated": {
                "type": "boolean"
              }
            },
            "required": [
              "lines",
              "truncated",
              "droppedLines",
              "droppedBytes"
            ],
            "type": "object"
          },
          "cursorX": {
            "type": [
              "integer",
              "null"
            ]
          },
          "cursorY": {
            "type": [
              "integer",
              "null"
            ]
          },
          "pane": {
            "properties": {
              "active": {
                "type": "boolean"
              },
              "currentCommand": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "currentPath": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "dead": {
                "type": "boolean"
              },
              "height": {
                "type": "integer"
              },
              "historyLimit": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "historySize": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "index": {
                "type": "integer"
              },
              "inMode": {
                "type": "boolean"
              },
              "isCaller": {
                "type": "boolean"
              },
              "paneId": {
                "type": "string"
              },
              "pid": {
                "type": [
                  "integer",
                  "null"
                ]
              },
              "sessionId": {
                "type": "string"
              },
              "title": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "width": {
                "type": "integer"
              },
              "windowId": {
                "type": "string"
              },
              "zoomed": {
                "type": "boolean"
              }
            },
            "required": [
              "paneId",
              "windowId",
              "sessionId",
              "index",
              "width",
              "height",
              "title",
              "active",
              "dead",
              "zoomed",
              "inMode",
              "currentCommand",
              "currentPath",
              "pid",
              "historySize",
              "historyLimit",
              "isCaller"
            ],
            "type": "object"
          }
        },
        "required": [
          "pane",
          "content",
          "cursorX",
          "cursorY",
          "alternateScreen"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Snapshot pane"
      },
      "meta": {
        "anthropic/alwaysLoad": true,
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": true,
          "mayReturnUntrustedContent": true,
          "name": "snapshot_pane",
          "nestedAuthority": [],
          "outputClasses": [
            "terminal-content",
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    },
    {
      "name": "split_window",
      "wireName": "split_window",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 605
      },
      "description": "Start a pane's configured process; accepts no command payload. Split a pane and return the NEW pane's id. Use that id for what you put in it — pane ids stay valid across layout changes, where window names and indexes do not.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "direction": {
            "default": "Below",
            "description": "Below, Above, Left, or Right.",
            "enum": [
              "Above",
              "Below",
              "Left",
              "Right"
            ],
            "type": "string"
          },
          "paneId": {
            "default": null,
            "description": "The pane to split. Omit for this server's own pane, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          },
          "percentage": {
            "default": null,
            "description": "Percentage of the space for the new pane. Omit for half.",
            "maximum": 2147483647,
            "minimum": -2147483648,
            "type": [
              "integer",
              "null"
            ]
          },
          "startDirectory": {
            "default": null,
            "description": "The literal starting directory. Omit for the MCP server's own working directory.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Split window"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {
            "startDirectory": "double-hash-once"
          },
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "split_window",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "configured-process",
          "tmuxEffects": [
            "change",
            "observe"
          ],
          "toolset": "execute"
        }
      }
    },
    {
      "name": "swap_pane",
      "wireName": "swap_pane",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 596
      },
      "description": "Change tmux state; no client-supplied executable input. Swap two panes' positions; each keeps its program, its content and its ID.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "detach": {
            "default": false,
            "description": "Leave the swapped pane unselected.",
            "type": "boolean"
          },
          "keepZoom": {
            "default": false,
            "description": "Keep zoom state.",
            "type": "boolean"
          },
          "paneId": {
            "description": "The pane id to swap.",
            "type": "string"
          },
          "targetPaneId": {
            "description": "The other pane id.",
            "type": "string"
          }
        },
        "required": [
          "paneId",
          "targetPaneId"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "paneId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "sessionId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          },
          "windowId": {
            "default": null,
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "changed"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Swap pane"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "swap_pane",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "change",
            "observe"
          ],
          "toolset": "manage"
        }
      }
    },
    {
      "name": "wait_for_channel",
      "wireName": "wait_for_channel",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 598
      },
      "description": "Change tmux state; no client-supplied executable input. Block until something signals a tmux wait-for channel with 'tmux wait-for -S <channel>'. Use when you composed a shell command that signals it. For an ordinary command whose completion you want, run_shell_command already does this and also reports the exit status.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "channel": {
            "description": "The tmux wait-for channel.",
            "type": "string"
          },
          "timeoutSeconds": {
            "default": null,
            "description": "Seconds to wait, lowered to the server's ceiling. Omit to wait the whole ceiling, 30 unless LIBTMUX_MCP_WAIT_MAX_SECONDS sets another.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "channel"
        ],
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "changed": {
            "type": "string"
          },
          "channel": {
            "type": "string"
          },
          "effectiveTimeoutSeconds": {
            "type": "number"
          },
          "elapsedSeconds": {
            "type": "number"
          },
          "signalled": {
            "type": "boolean"
          }
        },
        "required": [
          "changed",
          "channel",
          "signalled",
          "elapsedSeconds",
          "effectiveTimeoutSeconds"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Wait for channel"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": false,
          "mayReturnUntrustedContent": false,
          "name": "wait_for_channel",
          "nestedAuthority": [],
          "outputClasses": [
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "change"
          ],
          "toolset": "manage"
        }
      }
    },
    {
      "name": "wait_for_text",
      "wireName": "wait_for_text",
      "source": {
        "repo": "libtmux/libtmux-dotnet",
        "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
        "file": "src/LibTmux.Mcp/Policy/CapabilityModel.cs",
        "line": 581
      },
      "description": "Read pane output; accepts no client-supplied executable input. Returned content may be sensitive or untrusted. Wait until a pane prints something matching one of these patterns, then return. Use for output you did NOT start — a server's ready line, another process's progress, a person typing. A matching pattern already on screen returns PresentAtEntry. For a command you are running yourself, run_shell_command is better: it reports the real exit status instead of guessing from text. Never poll capture_pane in a loop; this call does the waiting. Control observation is required by default; pollingFallback reports activation when the operator permits fallback. Text this server itself typed is discounted while deciding what is new, for a few seconds after it is sent or submitted, so its own echo cannot be the match — except on a pane whose program has not yet configured its terminal; wait for a first prompt before typing into a freshly created pane.",
      "schemaStatus": "runtime",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "ignoreCase": {
            "default": true,
            "description": "Ignore case.",
            "type": "boolean"
          },
          "paneId": {
            "default": null,
            "description": "A pane id. Omit for this server's own pane, or else the one the first session shows.",
            "type": [
              "string",
              "null"
            ]
          },
          "patterns": {
            "default": null,
            "description": "Linear-time regular expressions that end the wait successfully: .NET syntax without lookarounds, backreferences or atomic groups. Output arriving after this call counts unless the pattern is already present, which returns PresentAtEntry. Omit to return on any new output. Across both pattern lists: at most 32 entries and 16384 UTF-8 bytes; each entry is at most 999 UTF-8 bytes.",
            "items": {
              "type": [
                "string",
                "null"
              ]
            },
            "type": [
              "array",
              "null"
            ]
          },
          "stopPatterns": {
            "default": null,
            "description": "Linear-time regular expressions that stop the wait, in the same subset as patterns. Omit for none. Across both pattern lists: at most 32 entries and 16384 UTF-8 bytes; each entry is at most 999 UTF-8 bytes.",
            "items": {
              "type": [
                "string",
                "null"
              ]
            },
            "type": [
              "array",
              "null"
            ]
          },
          "timeoutSeconds": {
            "default": null,
            "description": "Seconds to wait, lowered to the server's ceiling. Omit to wait the whole ceiling, 30 unless LIBTMUX_MCP_WAIT_MAX_SECONDS sets another.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "outputSchema": {
        "properties": {
          "anchorLost": {
            "type": "boolean"
          },
          "effectiveTimeoutSeconds": {
            "type": "number"
          },
          "elapsedSeconds": {
            "type": "number"
          },
          "eventsDropped": {
            "type": "integer"
          },
          "linesMissed": {
            "type": "boolean"
          },
          "matchedPattern": {
            "type": [
              "string",
              "null"
            ]
          },
          "outcome": {
            "enum": [
              "Matched",
              "AnyOutput",
              "Stopped",
              "Timeout",
              "PaneDied",
              "PresentAtEntry"
            ],
            "type": "string"
          },
          "paneId": {
            "type": "string"
          },
          "pollingFallback": {
            "type": "boolean"
          },
          "tail": {
            "properties": {
              "droppedBytes": {
                "type": "integer"
              },
              "droppedLines": {
                "type": "integer"
              },
              "lines": {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              "truncated": {
                "type": "boolean"
              }
            },
            "required": [
              "lines",
              "truncated",
              "droppedLines",
              "droppedBytes"
            ],
            "type": "object"
          }
        },
        "required": [
          "paneId",
          "outcome",
          "matchedPattern",
          "tail",
          "elapsedSeconds",
          "effectiveTimeoutSeconds"
        ],
        "type": "object"
      },
      "annotations": {
        "destructiveHint": true,
        "idempotentHint": false,
        "openWorldHint": true,
        "readOnlyHint": false,
        "title": "Wait for text"
      },
      "meta": {
        "com.git-pull.libtmux-mcp/capability": {
          "amplifiesFutureInput": false,
          "inputLiteralization": {},
          "mayExposeSecrets": true,
          "mayReturnUntrustedContent": true,
          "name": "wait_for_text",
          "nestedAuthority": [],
          "outputClasses": [
            "terminal-content",
            "tmux-metadata"
          ],
          "processReach": "none",
          "tmuxEffects": [
            "observe"
          ],
          "toolset": "inspect"
        }
      }
    }
  ],
  "wirePrefix": "",
  "selectable": true,
  "source": "src/LibTmux.Mcp/Policy",
  "repo": "libtmux/libtmux-dotnet",
  "revision": "cf34b255c896d19a97e7d7fabea58609c916012d",
  "extractedRevision": "cf34b255c896d19a97e7d7fabea58609c916012d",
  "selection": {
    "LIBTMUX_TOOLSETS": "inspect,manage,execute,teardown"
  },
  "protocol": {
    "capabilities": {
      "extensions": {
        "io.modelcontextprotocol/tasks": {}
      },
      "logging": {},
      "resources": {
        "listChanged": true
      },
      "tools": {
        "listChanged": true
      }
    },
    "prompts": [],
    "protocolVersion": "2025-11-25",
    "resources": [
      {
        "description": "The startup-frozen tmux connection and effective MCP tool capabilities.",
        "mimeType": "application/json",
        "name": "tmux_capabilities",
        "title": "Effective tmux capabilities",
        "uri": "tmux://capabilities"
      }
    ],
    "resourceTemplates": [],
    "serverInfo": {
      "name": "tmux",
      "version": "0.0.0-alpha.20"
    }
  }
}
