{
  "name": "libtmux-mcp",
  "url": "https://libtmux-mcp.git-pull.com",
  "description": "Terminal control for AI agents, built on libtmux and FastMCP.",
  "sourceRepository": "https://github.com/tmux-python/libtmux-mcp/",
  "agentEntrypoints": {
    "manifest": "/docs.json",
    "llms": "/llms.txt",
    "llmsFull": "/llms-full.txt"
  },
  "pages": [
    {
      "title": "MCP Clients",
      "description": "Pick your client, install method, and config scope below — the snippet updates accordingly. The scope row appears only for clients with more than one scope (Claude Desktop is always user-level so i...",
      "section": "Get started",
      "url": "/clients/",
      "markdownUrl": "/clients.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "MCP Clients"
        },
        {
          "id": "mcp-inspector",
          "level": 2,
          "text": "MCP Inspector"
        },
        {
          "id": "config-file-locations",
          "level": 2,
          "text": "Config file locations"
        },
        {
          "id": "local-checkout-development",
          "level": 2,
          "text": "Local checkout (development)"
        },
        {
          "id": "common-pitfalls",
          "level": 2,
          "text": "Common pitfalls"
        }
      ]
    },
    {
      "title": "Configuration",
      "description": "Runtime configuration for the libtmux-mcp server. For MCP client setup, see clients.",
      "section": "Use it",
      "url": "/configuration/",
      "markdownUrl": "/configuration.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Configuration"
        },
        {
          "id": "environment-variables",
          "level": 2,
          "text": "Environment variables"
        },
        {
          "id": "setting-environment-variables",
          "level": 2,
          "text": "Setting environment variables"
        },
        {
          "id": "socket-isolation",
          "level": 2,
          "text": "Socket isolation"
        },
        {
          "id": "all-tools-accept-socket-name",
          "level": 2,
          "text": "All tools accept socket_name"
        }
      ]
    },
    {
      "title": "Badge & Role Demo",
      "description": "A showcase of the custom Sphinx roles and visual elements available in libtmux-mcp documentation.",
      "section": "Documentation",
      "url": "/demo/",
      "markdownUrl": "/demo.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Badge & Role Demo"
        },
        {
          "id": "safety-badges",
          "level": 2,
          "text": "Safety badges"
        },
        {
          "id": "tool-references",
          "level": 2,
          "text": "Tool references"
        },
        {
          "id": "tool-code-linked-with-badge",
          "level": 3,
          "text": "{tool} — code-linked with badge"
        },
        {
          "id": "toolref-code-linked-no-badge",
          "level": 3,
          "text": "{toolref} — code-linked, no badge"
        },
        {
          "id": "tooliconl-icon-left-outside-code",
          "level": 3,
          "text": "{tooliconl} — icon left, outside code"
        },
        {
          "id": "tooliconr-icon-right-outside-code",
          "level": 3,
          "text": "{tooliconr} — icon right, outside code"
        },
        {
          "id": "tooliconil-icon-inline-left-inside-code",
          "level": 3,
          "text": "{tooliconil} — icon inline-left, inside code"
        },
        {
          "id": "tooliconir-icon-inline-right-inside-code",
          "level": 3,
          "text": "{tooliconir} — icon inline-right, inside code"
        },
        {
          "id": "ref-plain-text-link",
          "level": 3,
          "text": "{ref} — plain text link"
        },
        {
          "id": "badges-in-context",
          "level": 2,
          "text": "Badges in context"
        },
        {
          "id": "in-a-heading",
          "level": 3,
          "text": "In a heading"
        },
        {
          "id": "in-a-table",
          "level": 3,
          "text": "In a table"
        },
        {
          "id": "in-prose",
          "level": 3,
          "text": "In prose"
        },
        {
          "id": "dense-inline-toolref-no-badges",
          "level": 3,
          "text": "Dense inline (toolref, no badges)"
        },
        {
          "id": "environment-variable-references",
          "level": 2,
          "text": "Environment variable references"
        },
        {
          "id": "glossary-terms",
          "level": 2,
          "text": "Glossary terms"
        },
        {
          "id": "admonitions",
          "level": 2,
          "text": "Admonitions"
        },
        {
          "id": "badge-anatomy",
          "level": 2,
          "text": "Badge anatomy"
        }
      ]
    },
    {
      "title": "Glossary",
      "description": "Model Context Protocol. A standard for AI agents to interact with tools and resources.",
      "section": "Reference",
      "url": "/glossary/",
      "markdownUrl": "/glossary.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Glossary"
        }
      ]
    },
    {
      "title": "Changelog",
      "description": "Notes on upcoming releases will be added here",
      "section": "Project",
      "url": "/history/",
      "markdownUrl": "/history.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Changelog"
        },
        {
          "id": "libtmux-mcp-0-1-x-unreleased",
          "level": 2,
          "text": "libtmux-mcp 0.1.x (unreleased)"
        },
        {
          "id": "libtmux-mcp-0-1-0a11-2026-06-06",
          "level": 2,
          "text": "libtmux-mcp 0.1.0a11 (2026-06-06)"
        },
        {
          "id": "dependencies",
          "level": 3,
          "text": "Dependencies"
        },
        {
          "id": "what-s-new",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "libtmux-mcp-0-1-0a10-2026-05-24",
          "level": 2,
          "text": "libtmux-mcp 0.1.0a10 (2026-05-24)"
        },
        {
          "id": "id2",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "libtmux-mcp-0-1-0a9-2026-05-24",
          "level": 2,
          "text": "libtmux-mcp 0.1.0a9 (2026-05-24)"
        },
        {
          "id": "fixes",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "libtmux-mcp-0-1-0a8-2026-05-23",
          "level": 2,
          "text": "libtmux-mcp 0.1.0a8 (2026-05-23)"
        },
        {
          "id": "id3",
          "level": 3,
          "text": "Dependencies"
        },
        {
          "id": "id4",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "documentation",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "libtmux-mcp-0-1-0a7-2026-05-16",
          "level": 2,
          "text": "libtmux-mcp 0.1.0a7 (2026-05-16)"
        },
        {
          "id": "breaking-changes",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "id5",
          "level": 3,
          "text": "Dependencies"
        },
        {
          "id": "id6",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "id7",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "libtmux-mcp-0-1-0a6-2026-05-09",
          "level": 2,
          "text": "libtmux-mcp 0.1.0a6 (2026-05-09)"
        },
        {
          "id": "id8",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "id9",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "libtmux-mcp-0-1-0a5-2026-05-06",
          "level": 2,
          "text": "libtmux-mcp 0.1.0a5 (2026-05-06)"
        },
        {
          "id": "id10",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "id11",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "development",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "libtmux-mcp-0-1-0a4-2026-05-02",
          "level": 2,
          "text": "libtmux-mcp 0.1.0a4 (2026-05-02)"
        },
        {
          "id": "id12",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "id13",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "id14",
          "level": 3,
          "text": "Development"
        },
        {
          "id": "libtmux-mcp-0-1-0a3-2026-04-19",
          "level": 2,
          "text": "libtmux-mcp 0.1.0a3 (2026-04-19)"
        },
        {
          "id": "id15",
          "level": 3,
          "text": "Dependencies"
        },
        {
          "id": "id16",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "libtmux-mcp-0-1-0a2-2026-04-19",
          "level": 2,
          "text": "libtmux-mcp 0.1.0a2 (2026-04-19)"
        },
        {
          "id": "id17",
          "level": 3,
          "text": "Breaking changes"
        },
        {
          "id": "id18",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "id19",
          "level": 3,
          "text": "Fixes"
        },
        {
          "id": "id20",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "libtmux-mcp-0-1-0a1-2026-04-13",
          "level": 2,
          "text": "libtmux-mcp 0.1.0a1 (2026-04-13)"
        },
        {
          "id": "id21",
          "level": 3,
          "text": "What’s new"
        },
        {
          "id": "id22",
          "level": 3,
          "text": "Documentation"
        },
        {
          "id": "libtmux-mcp-0-1-0a0-2026-03-22",
          "level": 2,
          "text": "libtmux-mcp 0.1.0a0 (2026-03-22)"
        },
        {
          "id": "id23",
          "level": 3,
          "text": "What’s new"
        }
      ]
    },
    {
      "title": "libtmux-mcp",
      "description": "Terminal control for AI agents, built on libtmux and FastMCP.",
      "section": "",
      "url": "/",
      "markdownUrl": "/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "libtmux-mcp"
        },
        {
          "id": "what-you-can-do",
          "level": 2,
          "text": "What you can do"
        },
        {
          "id": "inspect-readonly",
          "level": 3,
          "text": "Inspect (readonly)"
        },
        {
          "id": "act-mutating",
          "level": 3,
          "text": "Act (mutating)"
        },
        {
          "id": "destroy-destructive",
          "level": 3,
          "text": "Destroy (destructive)"
        },
        {
          "id": "mental-model",
          "level": 2,
          "text": "Mental model"
        }
      ]
    },
    {
      "title": "Installation",
      "description": "Python 3.10+",
      "section": "Get started",
      "url": "/installation/",
      "markdownUrl": "/installation.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Installation"
        },
        {
          "id": "requirements",
          "level": 2,
          "text": "Requirements"
        },
        {
          "id": "run-without-installing",
          "level": 2,
          "text": "Run without installing"
        },
        {
          "id": "install-the-package",
          "level": 2,
          "text": "Install the package"
        },
        {
          "id": "development-install",
          "level": 2,
          "text": "Development install"
        },
        {
          "id": "running-the-server",
          "level": 2,
          "text": "Running the server"
        },
        {
          "id": "upgrading",
          "level": 2,
          "text": "Upgrading"
        }
      ]
    },
    {
      "title": "Migration notes",
      "description": "Migration and deprecation notes for libtmux-mcp are here, see history for the full release log.",
      "section": "Project",
      "url": "/migration/",
      "markdownUrl": "/migration.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Migration notes"
        },
        {
          "id": "libtmux-mcp-0-1-0a6-2026-05-09",
          "level": 2,
          "text": "libtmux-mcp 0.1.0a6 (2026-05-09)"
        },
        {
          "id": "recommended-registration-slug-libtmux-tmux",
          "level": 3,
          "text": "Recommended registration slug: libtmux → tmux"
        },
        {
          "id": "before",
          "level": 4,
          "text": "Before"
        },
        {
          "id": "after",
          "level": 4,
          "text": "After"
        },
        {
          "id": "what-s-unchanged",
          "level": 4,
          "text": "What’s unchanged"
        }
      ]
    },
    {
      "title": "Code style",
      "description": "libtmux-mcp uses ruff for linting and formatting:",
      "section": "Documentation",
      "url": "/project/code-style/",
      "markdownUrl": "/project/code-style.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Code style"
        },
        {
          "id": "linting-and-formatting",
          "level": 2,
          "text": "Linting and formatting"
        },
        {
          "id": "type-checking",
          "level": 2,
          "text": "Type checking"
        },
        {
          "id": "docstrings",
          "level": 2,
          "text": "Docstrings"
        },
        {
          "id": "imports",
          "level": 2,
          "text": "Imports"
        }
      ]
    },
    {
      "title": "Development",
      "description": "Install git and uv (install)",
      "section": "Documentation",
      "url": "/project/contributing/",
      "markdownUrl": "/project/contributing.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Development"
        },
        {
          "id": "testing",
          "level": 2,
          "text": "Testing"
        },
        {
          "id": "linting",
          "level": 2,
          "text": "Linting"
        },
        {
          "id": "type-checking",
          "level": 2,
          "text": "Type checking"
        },
        {
          "id": "documentation",
          "level": 2,
          "text": "Documentation"
        },
        {
          "id": "workflow",
          "level": 2,
          "text": "Workflow"
        },
        {
          "id": "releasing",
          "level": 2,
          "text": "Releasing"
        }
      ]
    },
    {
      "title": "Project",
      "description": "Information for contributors and maintainers.",
      "section": "Project",
      "url": "/project/",
      "markdownUrl": "/project/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Project"
        }
      ]
    },
    {
      "title": "Releasing",
      "description": "libtmux-mcp follows PEP 440 with alpha suffixes during pre-1.0 development (e.g. 0.1.0a0).",
      "section": "Documentation",
      "url": "/project/releasing/",
      "markdownUrl": "/project/releasing.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Releasing"
        },
        {
          "id": "version-scheme",
          "level": 2,
          "text": "Version scheme"
        },
        {
          "id": "release-checklist",
          "level": 2,
          "text": "Release checklist"
        }
      ]
    },
    {
      "title": "Prompts",
      "description": "MCP prompts are reusable, parameterised text templates the server ships to its clients. A client renders a prompt by calling prompts/get; the rendered text is what the model sees. libtmux-mcp’s pro...",
      "section": "Use it",
      "url": "/prompts/",
      "markdownUrl": "/prompts.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Prompts"
        },
        {
          "id": "available-prompts",
          "level": 2,
          "text": "Available prompts"
        },
        {
          "id": "fastmcp-prompt-run-and-wait",
          "level": 3,
          "text": "run_and_wait"
        },
        {
          "id": "fastmcp-prompt-diagnose-failing-pane",
          "level": 3,
          "text": "diagnose_failing_pane"
        },
        {
          "id": "fastmcp-prompt-build-dev-workspace",
          "level": 3,
          "text": "build_dev_workspace"
        },
        {
          "id": "fastmcp-prompt-interrupt-gracefully",
          "level": 3,
          "text": "interrupt_gracefully"
        }
      ]
    },
    {
      "title": "Quickstart",
      "description": "One happy path from zero to a working tool invocation.",
      "section": "Get started",
      "url": "/quickstart/",
      "markdownUrl": "/quickstart.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Quickstart"
        },
        {
          "id": "install",
          "level": 2,
          "text": "1. Install"
        },
        {
          "id": "verify",
          "level": 2,
          "text": "2. Verify"
        },
        {
          "id": "try-it",
          "level": 2,
          "text": "3. Try it"
        },
        {
          "id": "how-it-works",
          "level": 2,
          "text": "How it works"
        },
        {
          "id": "next-steps",
          "level": 2,
          "text": "Next steps"
        }
      ]
    },
    {
      "title": "Recipes",
      "description": "Each recipe starts from a real workspace situation and traces the agent’s reasoning through discovery, decision, and action. The goal is not to show tool-call sequences – it is to show how an agent...",
      "section": "Use it",
      "url": "/recipes/",
      "markdownUrl": "/recipes.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Recipes"
        },
        {
          "id": "find-a-running-dev-server-and-test-against-it",
          "level": 2,
          "text": "Find a running dev server and test against it"
        },
        {
          "id": "discover",
          "level": 3,
          "text": "Discover"
        },
        {
          "id": "decide",
          "level": 3,
          "text": "Decide"
        },
        {
          "id": "act",
          "level": 3,
          "text": "Act"
        },
        {
          "id": "the-non-obvious-part",
          "level": 3,
          "text": "The non-obvious part"
        },
        {
          "id": "target-the-bottom-right-pane-for-an-ad-hoc-command",
          "level": 2,
          "text": "Target the bottom-right pane for an ad-hoc command"
        },
        {
          "id": "id2",
          "level": 3,
          "text": "Discover"
        },
        {
          "id": "id3",
          "level": 3,
          "text": "Decide"
        },
        {
          "id": "id4",
          "level": 3,
          "text": "Act"
        },
        {
          "id": "id5",
          "level": 3,
          "text": "The non-obvious part"
        },
        {
          "id": "start-a-service-and-wait-for-it-before-running-dependent-work",
          "level": 2,
          "text": "Start a service and wait for it before running dependent work"
        },
        {
          "id": "id6",
          "level": 3,
          "text": "Discover"
        },
        {
          "id": "id7",
          "level": 3,
          "text": "Decide"
        },
        {
          "id": "id8",
          "level": 3,
          "text": "Act"
        },
        {
          "id": "id9",
          "level": 3,
          "text": "The non-obvious part"
        },
        {
          "id": "find-the-failing-pane-without-opening-random-terminals",
          "level": 2,
          "text": "Find the failing pane without opening random terminals"
        },
        {
          "id": "id10",
          "level": 3,
          "text": "Discover"
        },
        {
          "id": "id11",
          "level": 3,
          "text": "Decide"
        },
        {
          "id": "id12",
          "level": 3,
          "text": "Act"
        },
        {
          "id": "id13",
          "level": 3,
          "text": "The non-obvious part"
        },
        {
          "id": "interrupt-a-stuck-process-and-recover-the-pane",
          "level": 2,
          "text": "Interrupt a stuck process and recover the pane"
        },
        {
          "id": "id14",
          "level": 3,
          "text": "Discover"
        },
        {
          "id": "id15",
          "level": 3,
          "text": "Decide"
        },
        {
          "id": "id16",
          "level": 3,
          "text": "Act"
        },
        {
          "id": "id17",
          "level": 3,
          "text": "The non-obvious part"
        },
        {
          "id": "re-run-a-command-without-mixing-old-and-new-output",
          "level": 2,
          "text": "Re-run a command without mixing old and new output"
        },
        {
          "id": "id18",
          "level": 3,
          "text": "Discover"
        },
        {
          "id": "id19",
          "level": 3,
          "text": "Decide"
        },
        {
          "id": "id20",
          "level": 3,
          "text": "Act"
        },
        {
          "id": "id21",
          "level": 3,
          "text": "The non-obvious part"
        },
        {
          "id": "build-a-workspace-the-agent-can-revisit-later",
          "level": 2,
          "text": "Build a workspace the agent can revisit later"
        },
        {
          "id": "id22",
          "level": 3,
          "text": "Discover"
        },
        {
          "id": "id23",
          "level": 3,
          "text": "Decide"
        },
        {
          "id": "id24",
          "level": 3,
          "text": "Act"
        },
        {
          "id": "id25",
          "level": 3,
          "text": "The non-obvious part"
        },
        {
          "id": "what-to-read-next",
          "level": 2,
          "text": "What to read next"
        }
      ]
    },
    {
      "title": "API Reference",
      "description": "MCP server entry point and lifecycle.",
      "section": "Reference",
      "url": "/reference/api/",
      "markdownUrl": "/reference/api/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "API Reference"
        }
      ]
    },
    {
      "title": "Middleware",
      "description": "Middleware for libtmux MCP server.",
      "section": "Documentation",
      "url": "/reference/api/middleware/",
      "markdownUrl": "/reference/api/middleware.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Middleware"
        },
        {
          "id": "libtmux_mcp.middleware.SafetyMiddleware",
          "level": 2,
          "text": "SafetyMiddleware"
        },
        {
          "id": "libtmux_mcp.middleware.SafetyMiddleware.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "libtmux_mcp.middleware.SafetyMiddleware._is_allowed",
          "level": 3,
          "text": "_is_allowed()"
        },
        {
          "id": "libtmux_mcp.middleware.SafetyMiddleware.on_list_tools",
          "level": 3,
          "text": "on_list_tools()"
        },
        {
          "id": "libtmux_mcp.middleware.SafetyMiddleware.on_call_tool",
          "level": 3,
          "text": "on_call_tool()"
        },
        {
          "id": "libtmux_mcp.middleware._is_schema_validation_error",
          "level": 2,
          "text": "_is_schema_validation_error()"
        },
        {
          "id": "libtmux_mcp.middleware._CLIENT_SCHEDULING_FLAG",
          "level": 2,
          "text": "_CLIENT_SCHEDULING_FLAG"
        },
        {
          "id": "libtmux_mcp.middleware._unexpected_kwargs",
          "level": 2,
          "text": "_unexpected_kwargs()"
        },
        {
          "id": "libtmux_mcp.middleware._client_label",
          "level": 2,
          "text": "_client_label()"
        },
        {
          "id": "libtmux_mcp.middleware._error_tool_result",
          "level": 2,
          "text": "_error_tool_result()"
        },
        {
          "id": "libtmux_mcp.middleware.ToolErrorResultMiddleware",
          "level": 2,
          "text": "ToolErrorResultMiddleware"
        },
        {
          "id": "libtmux_mcp.middleware.ToolErrorResultMiddleware._log_error",
          "level": 3,
          "text": "_log_error()"
        },
        {
          "id": "libtmux_mcp.middleware.ToolErrorResultMiddleware.on_call_tool",
          "level": 3,
          "text": "on_call_tool()"
        },
        {
          "id": "libtmux_mcp.middleware._SENSITIVE_ARG_NAMES",
          "level": 2,
          "text": "_SENSITIVE_ARG_NAMES"
        },
        {
          "id": "libtmux_mcp.middleware._MAX_LOGGED_STR_LEN",
          "level": 2,
          "text": "_MAX_LOGGED_STR_LEN"
        },
        {
          "id": "libtmux_mcp.middleware._redact_digest",
          "level": 2,
          "text": "_redact_digest()"
        },
        {
          "id": "libtmux_mcp.middleware._summarize_args",
          "level": 2,
          "text": "_summarize_args()"
        },
        {
          "id": "libtmux_mcp.middleware.AuditMiddleware",
          "level": 2,
          "text": "AuditMiddleware"
        },
        {
          "id": "libtmux_mcp.middleware.AuditMiddleware.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "libtmux_mcp.middleware.AuditMiddleware.on_call_tool",
          "level": 3,
          "text": "on_call_tool()"
        },
        {
          "id": "libtmux_mcp.middleware.DEFAULT_RESPONSE_LIMIT_BYTES",
          "level": 2,
          "text": "DEFAULT_RESPONSE_LIMIT_BYTES"
        },
        {
          "id": "libtmux_mcp.middleware.ReadonlyRetryMiddleware",
          "level": 2,
          "text": "ReadonlyRetryMiddleware"
        },
        {
          "id": "libtmux_mcp.middleware.ReadonlyRetryMiddleware.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "libtmux_mcp.middleware.ReadonlyRetryMiddleware.on_call_tool",
          "level": 3,
          "text": "on_call_tool()"
        },
        {
          "id": "libtmux_mcp.middleware._TRUNCATION_HEADER_TEMPLATE",
          "level": 2,
          "text": "_TRUNCATION_HEADER_TEMPLATE"
        },
        {
          "id": "libtmux_mcp.middleware.TailPreservingResponseLimitingMiddleware",
          "level": 2,
          "text": "TailPreservingResponseLimitingMiddleware"
        },
        {
          "id": "libtmux_mcp.middleware.TailPreservingResponseLimitingMiddleware.on_call_tool",
          "level": 3,
          "text": "on_call_tool()"
        },
        {
          "id": "libtmux_mcp.middleware.TailPreservingResponseLimitingMiddleware._truncate_to_result",
          "level": 3,
          "text": "_truncate_to_result()"
        }
      ]
    },
    {
      "title": "Models",
      "description": "Pydantic models for MCP tool inputs and outputs.",
      "section": "Documentation",
      "url": "/reference/api/models/",
      "markdownUrl": "/reference/api/models.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Models"
        },
        {
          "id": "libtmux_mcp.models.SessionInfo",
          "level": 2,
          "text": "SessionInfo"
        },
        {
          "id": "libtmux_mcp.models.SessionInfo.session_id",
          "level": 3,
          "text": "session_id"
        },
        {
          "id": "libtmux_mcp.models.SessionInfo.session_name",
          "level": 3,
          "text": "session_name"
        },
        {
          "id": "libtmux_mcp.models.SessionInfo.window_count",
          "level": 3,
          "text": "window_count"
        },
        {
          "id": "libtmux_mcp.models.SessionInfo.session_attached",
          "level": 3,
          "text": "session_attached"
        },
        {
          "id": "libtmux_mcp.models.SessionInfo.session_created",
          "level": 3,
          "text": "session_created"
        },
        {
          "id": "libtmux_mcp.models.SessionInfo.active_pane_id",
          "level": 3,
          "text": "active_pane_id"
        },
        {
          "id": "libtmux_mcp.models.SessionInfo._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.SessionInfo.model_config",
          "level": 3,
          "text": "model_config"
        },
        {
          "id": "libtmux_mcp.models.WindowInfo",
          "level": 2,
          "text": "WindowInfo"
        },
        {
          "id": "libtmux_mcp.models.WindowInfo.window_id",
          "level": 3,
          "text": "window_id"
        },
        {
          "id": "libtmux_mcp.models.WindowInfo.window_name",
          "level": 3,
          "text": "window_name"
        },
        {
          "id": "libtmux_mcp.models.WindowInfo.window_index",
          "level": 3,
          "text": "window_index"
        },
        {
          "id": "libtmux_mcp.models.WindowInfo.session_id",
          "level": 3,
          "text": "session_id"
        },
        {
          "id": "libtmux_mcp.models.WindowInfo.session_name",
          "level": 3,
          "text": "session_name"
        },
        {
          "id": "libtmux_mcp.models.WindowInfo.pane_count",
          "level": 3,
          "text": "pane_count"
        },
        {
          "id": "libtmux_mcp.models.WindowInfo.window_layout",
          "level": 3,
          "text": "window_layout"
        },
        {
          "id": "libtmux_mcp.models.WindowInfo.window_active",
          "level": 3,
          "text": "window_active"
        },
        {
          "id": "libtmux_mcp.models.WindowInfo.window_width",
          "level": 3,
          "text": "window_width"
        },
        {
          "id": "libtmux_mcp.models.WindowInfo.window_height",
          "level": 3,
          "text": "window_height"
        },
        {
          "id": "libtmux_mcp.models.WindowInfo._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.WindowInfo.model_config",
          "level": 3,
          "text": "model_config"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo",
          "level": 2,
          "text": "PaneInfo"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_id",
          "level": 3,
          "text": "pane_id"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_index",
          "level": 3,
          "text": "pane_index"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_width",
          "level": 3,
          "text": "pane_width"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_height",
          "level": 3,
          "text": "pane_height"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_left",
          "level": 3,
          "text": "pane_left"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_top",
          "level": 3,
          "text": "pane_top"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_right",
          "level": 3,
          "text": "pane_right"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_bottom",
          "level": 3,
          "text": "pane_bottom"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_at_left",
          "level": 3,
          "text": "pane_at_left"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_at_right",
          "level": 3,
          "text": "pane_at_right"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_at_top",
          "level": 3,
          "text": "pane_at_top"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_at_bottom",
          "level": 3,
          "text": "pane_at_bottom"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_tty",
          "level": 3,
          "text": "pane_tty"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_current_command",
          "level": 3,
          "text": "pane_current_command"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_current_path",
          "level": 3,
          "text": "pane_current_path"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_pid",
          "level": 3,
          "text": "pane_pid"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_title",
          "level": 3,
          "text": "pane_title"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.pane_active",
          "level": 3,
          "text": "pane_active"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.window_id",
          "level": 3,
          "text": "window_id"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.session_id",
          "level": 3,
          "text": "session_id"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.is_caller",
          "level": 3,
          "text": "is_caller"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.PaneInfo.model_config",
          "level": 3,
          "text": "model_config"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch",
          "level": 2,
          "text": "PaneContentMatch"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.pane_id",
          "level": 3,
          "text": "pane_id"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.pane_left",
          "level": 3,
          "text": "pane_left"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.pane_top",
          "level": 3,
          "text": "pane_top"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.pane_right",
          "level": 3,
          "text": "pane_right"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.pane_bottom",
          "level": 3,
          "text": "pane_bottom"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.pane_at_left",
          "level": 3,
          "text": "pane_at_left"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.pane_at_right",
          "level": 3,
          "text": "pane_at_right"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.pane_at_top",
          "level": 3,
          "text": "pane_at_top"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.pane_at_bottom",
          "level": 3,
          "text": "pane_at_bottom"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.pane_tty",
          "level": 3,
          "text": "pane_tty"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.pane_current_command",
          "level": 3,
          "text": "pane_current_command"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.pane_current_path",
          "level": 3,
          "text": "pane_current_path"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.window_id",
          "level": 3,
          "text": "window_id"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.window_name",
          "level": 3,
          "text": "window_name"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.session_id",
          "level": 3,
          "text": "session_id"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.session_name",
          "level": 3,
          "text": "session_name"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.matched_lines",
          "level": 3,
          "text": "matched_lines"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.is_caller",
          "level": 3,
          "text": "is_caller"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.PaneContentMatch.model_config",
          "level": 3,
          "text": "model_config"
        },
        {
          "id": "libtmux_mcp.models.ServerInfo",
          "level": 2,
          "text": "ServerInfo"
        },
        {
          "id": "libtmux_mcp.models.ServerInfo.is_alive",
          "level": 3,
          "text": "is_alive"
        },
        {
          "id": "libtmux_mcp.models.ServerInfo.socket_name",
          "level": 3,
          "text": "socket_name"
        },
        {
          "id": "libtmux_mcp.models.ServerInfo.socket_path",
          "level": 3,
          "text": "socket_path"
        },
        {
          "id": "libtmux_mcp.models.ServerInfo.session_count",
          "level": 3,
          "text": "session_count"
        },
        {
          "id": "libtmux_mcp.models.ServerInfo.version",
          "level": 3,
          "text": "version"
        },
        {
          "id": "libtmux_mcp.models.ServerInfo._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.ServerInfo.model_config",
          "level": 3,
          "text": "model_config"
        },
        {
          "id": "libtmux_mcp.models.OptionResult",
          "level": 2,
          "text": "OptionResult"
        },
        {
          "id": "libtmux_mcp.models.OptionResult.option",
          "level": 3,
          "text": "option"
        },
        {
          "id": "libtmux_mcp.models.OptionResult.value",
          "level": 3,
          "text": "value"
        },
        {
          "id": "libtmux_mcp.models.OptionResult._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.OptionResult.model_config",
          "level": 3,
          "text": "model_config"
        },
        {
          "id": "libtmux_mcp.models.OptionSetResult",
          "level": 2,
          "text": "OptionSetResult"
        },
        {
          "id": "libtmux_mcp.models.OptionSetResult.option",
          "level": 3,
          "text": "option"
        },
        {
          "id": "libtmux_mcp.models.OptionSetResult.value",
          "level": 3,
          "text": "value"
        },
        {
          "id": "libtmux_mcp.models.OptionSetResult.status",
          "level": 3,
          "text": "status"
        },
        {
          "id": "libtmux_mcp.models.OptionSetResult._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.OptionSetResult.model_config",
          "level": 3,
          "text": "model_config"
        },
        {
          "id": "libtmux_mcp.models.EnvironmentResult",
          "level": 2,
          "text": "EnvironmentResult"
        },
        {
          "id": "libtmux_mcp.models.EnvironmentResult.variables",
          "level": 3,
          "text": "variables"
        },
        {
          "id": "libtmux_mcp.models.EnvironmentResult._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.EnvironmentResult.model_config",
          "level": 3,
          "text": "model_config"
        },
        {
          "id": "libtmux_mcp.models.EnvironmentSetResult",
          "level": 2,
          "text": "EnvironmentSetResult"
        },
        {
          "id": "libtmux_mcp.models.EnvironmentSetResult.name",
          "level": 3,
          "text": "name"
        },
        {
          "id": "libtmux_mcp.models.EnvironmentSetResult.value",
          "level": 3,
          "text": "value"
        },
        {
          "id": "libtmux_mcp.models.EnvironmentSetResult.status",
          "level": 3,
          "text": "status"
        },
        {
          "id": "libtmux_mcp.models.EnvironmentSetResult._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.EnvironmentSetResult.model_config",
          "level": 3,
          "text": "model_config"
        },
        {
          "id": "libtmux_mcp.models.WaitForTextResult",
          "level": 2,
          "text": "WaitForTextResult"
        },
        {
          "id": "libtmux_mcp.models.WaitForTextResult.found",
          "level": 3,
          "text": "found"
        },
        {
          "id": "libtmux_mcp.models.WaitForTextResult.matched_lines",
          "level": 3,
          "text": "matched_lines"
        },
        {
          "id": "libtmux_mcp.models.WaitForTextResult.pane_id",
          "level": 3,
          "text": "pane_id"
        },
        {
          "id": "libtmux_mcp.models.WaitForTextResult.elapsed_seconds",
          "level": 3,
          "text": "elapsed_seconds"
        },
        {
          "id": "libtmux_mcp.models.WaitForTextResult.risk_band_warned",
          "level": 3,
          "text": "risk_band_warned"
        },
        {
          "id": "libtmux_mcp.models.WaitForTextResult._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.WaitForTextResult.model_config",
          "level": 3,
          "text": "model_config"
        },
        {
          "id": "libtmux_mcp.models.CaptureSinceResult",
          "level": 2,
          "text": "CaptureSinceResult"
        },
        {
          "id": "libtmux_mcp.models.CaptureSinceResult.pane_id",
          "level": 3,
          "text": "pane_id"
        },
        {
          "id": "libtmux_mcp.models.CaptureSinceResult.cursor",
          "level": 3,
          "text": "cursor"
        },
        {
          "id": "libtmux_mcp.models.CaptureSinceResult.lines",
          "level": 3,
          "text": "lines"
        },
        {
          "id": "libtmux_mcp.models.CaptureSinceResult.elapsed_seconds",
          "level": 3,
          "text": "elapsed_seconds"
        },
        {
          "id": "libtmux_mcp.models.CaptureSinceResult.lines_missed",
          "level": 3,
          "text": "lines_missed"
        },
        {
          "id": "libtmux_mcp.models.CaptureSinceResult.truncated",
          "level": 3,
          "text": "truncated"
        },
        {
          "id": "libtmux_mcp.models.CaptureSinceResult.truncated_lines",
          "level": 3,
          "text": "truncated_lines"
        },
        {
          "id": "libtmux_mcp.models.CaptureSinceResult.truncated_bytes",
          "level": 3,
          "text": "truncated_bytes"
        },
        {
          "id": "libtmux_mcp.models.CaptureSinceResult._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.CaptureSinceResult.model_config",
          "level": 3,
          "text": "model_config"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot",
          "level": 2,
          "text": "PaneSnapshot"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.pane_id",
          "level": 3,
          "text": "pane_id"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.content",
          "level": 3,
          "text": "content"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.cursor_x",
          "level": 3,
          "text": "cursor_x"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.cursor_y",
          "level": 3,
          "text": "cursor_y"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.pane_width",
          "level": 3,
          "text": "pane_width"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.pane_height",
          "level": 3,
          "text": "pane_height"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.pane_left",
          "level": 3,
          "text": "pane_left"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.pane_top",
          "level": 3,
          "text": "pane_top"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.pane_right",
          "level": 3,
          "text": "pane_right"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.pane_bottom",
          "level": 3,
          "text": "pane_bottom"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.pane_at_left",
          "level": 3,
          "text": "pane_at_left"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.pane_at_right",
          "level": 3,
          "text": "pane_at_right"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.pane_at_top",
          "level": 3,
          "text": "pane_at_top"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.pane_at_bottom",
          "level": 3,
          "text": "pane_at_bottom"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.pane_tty",
          "level": 3,
          "text": "pane_tty"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.pane_in_mode",
          "level": 3,
          "text": "pane_in_mode"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.pane_mode",
          "level": 3,
          "text": "pane_mode"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.scroll_position",
          "level": 3,
          "text": "scroll_position"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.history_size",
          "level": 3,
          "text": "history_size"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.title",
          "level": 3,
          "text": "title"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.pane_current_command",
          "level": 3,
          "text": "pane_current_command"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.pane_current_path",
          "level": 3,
          "text": "pane_current_path"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.is_caller",
          "level": 3,
          "text": "is_caller"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.content_truncated",
          "level": 3,
          "text": "content_truncated"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.content_truncated_lines",
          "level": 3,
          "text": "content_truncated_lines"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.PaneSnapshot.model_config",
          "level": 3,
          "text": "model_config"
        },
        {
          "id": "libtmux_mcp.models.SearchPanesResult",
          "level": 2,
          "text": "SearchPanesResult"
        },
        {
          "id": "libtmux_mcp.models.SearchPanesResult.matches",
          "level": 3,
          "text": "matches"
        },
        {
          "id": "libtmux_mcp.models.SearchPanesResult.truncated",
          "level": 3,
          "text": "truncated"
        },
        {
          "id": "libtmux_mcp.models.SearchPanesResult.truncated_panes",
          "level": 3,
          "text": "truncated_panes"
        },
        {
          "id": "libtmux_mcp.models.SearchPanesResult.total_panes_matched",
          "level": 3,
          "text": "total_panes_matched"
        },
        {
          "id": "libtmux_mcp.models.SearchPanesResult.offset",
          "level": 3,
          "text": "offset"
        },
        {
          "id": "libtmux_mcp.models.SearchPanesResult.limit",
          "level": 3,
          "text": "limit"
        },
        {
          "id": "libtmux_mcp.models.SearchPanesResult._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.SearchPanesResult.model_config",
          "level": 3,
          "text": "model_config"
        },
        {
          "id": "libtmux_mcp.models.HookEntry",
          "level": 2,
          "text": "HookEntry"
        },
        {
          "id": "libtmux_mcp.models.HookEntry.hook_name",
          "level": 3,
          "text": "hook_name"
        },
        {
          "id": "libtmux_mcp.models.HookEntry.index",
          "level": 3,
          "text": "index"
        },
        {
          "id": "libtmux_mcp.models.HookEntry.command",
          "level": 3,
          "text": "command"
        },
        {
          "id": "libtmux_mcp.models.HookEntry._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.HookEntry.model_config",
          "level": 3,
          "text": "model_config"
        },
        {
          "id": "libtmux_mcp.models.HookListResult",
          "level": 2,
          "text": "HookListResult"
        },
        {
          "id": "libtmux_mcp.models.HookListResult.entries",
          "level": 3,
          "text": "entries"
        },
        {
          "id": "libtmux_mcp.models.HookListResult._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.HookListResult.model_config",
          "level": 3,
          "text": "model_config"
        },
        {
          "id": "libtmux_mcp.models.BufferRef",
          "level": 2,
          "text": "BufferRef"
        },
        {
          "id": "libtmux_mcp.models.BufferRef.buffer_name",
          "level": 3,
          "text": "buffer_name"
        },
        {
          "id": "libtmux_mcp.models.BufferRef.logical_name",
          "level": 3,
          "text": "logical_name"
        },
        {
          "id": "libtmux_mcp.models.BufferRef._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.BufferRef.model_config",
          "level": 3,
          "text": "model_config"
        },
        {
          "id": "libtmux_mcp.models.BufferContent",
          "level": 2,
          "text": "BufferContent"
        },
        {
          "id": "libtmux_mcp.models.BufferContent.buffer_name",
          "level": 3,
          "text": "buffer_name"
        },
        {
          "id": "libtmux_mcp.models.BufferContent.content",
          "level": 3,
          "text": "content"
        },
        {
          "id": "libtmux_mcp.models.BufferContent.content_truncated",
          "level": 3,
          "text": "content_truncated"
        },
        {
          "id": "libtmux_mcp.models.BufferContent.content_truncated_lines",
          "level": 3,
          "text": "content_truncated_lines"
        },
        {
          "id": "libtmux_mcp.models.BufferContent._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.BufferContent.model_config",
          "level": 3,
          "text": "model_config"
        },
        {
          "id": "libtmux_mcp.models.ContentChangeResult",
          "level": 2,
          "text": "ContentChangeResult"
        },
        {
          "id": "libtmux_mcp.models.ContentChangeResult.changed",
          "level": 3,
          "text": "changed"
        },
        {
          "id": "libtmux_mcp.models.ContentChangeResult.pane_id",
          "level": 3,
          "text": "pane_id"
        },
        {
          "id": "libtmux_mcp.models.ContentChangeResult.elapsed_seconds",
          "level": 3,
          "text": "elapsed_seconds"
        },
        {
          "id": "libtmux_mcp.models.ContentChangeResult._abc_impl",
          "level": 3,
          "text": "_abc_impl"
        },
        {
          "id": "libtmux_mcp.models.ContentChangeResult.model_config",
          "level": 3,
          "text": "model_config"
        }
      ]
    },
    {
      "title": "Server",
      "description": "FastMCP server instance for libtmux.",
      "section": "Documentation",
      "url": "/reference/api/server/",
      "markdownUrl": "/reference/api/server.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Server"
        },
        {
          "id": "libtmux_mcp.server._ServerCacheKey",
          "level": 2,
          "text": "_ServerCacheKey"
        },
        {
          "id": "libtmux_mcp.server._INSTR_SCOPE",
          "level": 2,
          "text": "_INSTR_SCOPE"
        },
        {
          "id": "libtmux_mcp.server._INSTR_HOOKS_GAP",
          "level": 2,
          "text": "_INSTR_HOOKS_GAP"
        },
        {
          "id": "libtmux_mcp.server._INSTR_BUFFERS_GAP",
          "level": 2,
          "text": "_INSTR_BUFFERS_GAP"
        },
        {
          "id": "libtmux_mcp.server._build_instructions",
          "level": 2,
          "text": "_build_instructions()"
        },
        {
          "id": "libtmux_mcp.server._RESPONSE_LIMITED_TOOLS",
          "level": 2,
          "text": "_RESPONSE_LIMITED_TOOLS"
        },
        {
          "id": "libtmux_mcp.server._lifespan",
          "level": 2,
          "text": "_lifespan()"
        },
        {
          "id": "libtmux_mcp.server._gc_mcp_buffers",
          "level": 2,
          "text": "_gc_mcp_buffers()"
        },
        {
          "id": "libtmux_mcp.server._register_all",
          "level": 2,
          "text": "_register_all()"
        },
        {
          "id": "libtmux_mcp.server._enable_allowed_tools",
          "level": 2,
          "text": "_enable_allowed_tools()"
        },
        {
          "id": "libtmux_mcp.server.build_mcp_server",
          "level": 2,
          "text": "build_mcp_server()"
        },
        {
          "id": "libtmux_mcp.server.run_server",
          "level": 2,
          "text": "run_server()"
        }
      ]
    },
    {
      "title": "Tools",
      "description": "MCP tools for tmux server operations.",
      "section": "Documentation",
      "url": "/reference/api/tools/",
      "markdownUrl": "/reference/api/tools.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Tools"
        },
        {
          "id": "module-libtmux_mcp.tools.server_tools",
          "level": 2,
          "text": "Server tools"
        },
        {
          "id": "libtmux_mcp.tools.server_tools.list_sessions",
          "level": 3,
          "text": "list_sessions()"
        },
        {
          "id": "libtmux_mcp.tools.server_tools.create_session",
          "level": 3,
          "text": "create_session()"
        },
        {
          "id": "libtmux_mcp.tools.server_tools.kill_server",
          "level": 3,
          "text": "kill_server()"
        },
        {
          "id": "libtmux_mcp.tools.server_tools.get_server_info",
          "level": 3,
          "text": "get_server_info()"
        },
        {
          "id": "libtmux_mcp.tools.server_tools._is_tmux_socket_live",
          "level": 3,
          "text": "_is_tmux_socket_live()"
        },
        {
          "id": "libtmux_mcp.tools.server_tools._probe_server_by_path",
          "level": 3,
          "text": "_probe_server_by_path()"
        },
        {
          "id": "libtmux_mcp.tools.server_tools.SOCKET_NAME_EXEMPT",
          "level": 3,
          "text": "SOCKET_NAME_EXEMPT"
        },
        {
          "id": "libtmux_mcp.tools.server_tools.list_servers",
          "level": 3,
          "text": "list_servers()"
        },
        {
          "id": "libtmux_mcp.tools.server_tools.register",
          "level": 3,
          "text": "register()"
        },
        {
          "id": "module-libtmux_mcp.tools.session_tools",
          "level": 2,
          "text": "Session tools"
        },
        {
          "id": "libtmux_mcp.tools.session_tools.list_windows",
          "level": 3,
          "text": "list_windows()"
        },
        {
          "id": "libtmux_mcp.tools.session_tools.get_session_info",
          "level": 3,
          "text": "get_session_info()"
        },
        {
          "id": "libtmux_mcp.tools.session_tools.create_window",
          "level": 3,
          "text": "create_window()"
        },
        {
          "id": "libtmux_mcp.tools.session_tools.rename_session",
          "level": 3,
          "text": "rename_session()"
        },
        {
          "id": "libtmux_mcp.tools.session_tools.kill_session",
          "level": 3,
          "text": "kill_session()"
        },
        {
          "id": "libtmux_mcp.tools.session_tools.select_window",
          "level": 3,
          "text": "select_window()"
        },
        {
          "id": "libtmux_mcp.tools.session_tools.register",
          "level": 3,
          "text": "register()"
        },
        {
          "id": "module-libtmux_mcp.tools.window_tools",
          "level": 2,
          "text": "Window tools"
        },
        {
          "id": "libtmux_mcp.tools.window_tools.list_panes",
          "level": 3,
          "text": "list_panes()"
        },
        {
          "id": "libtmux_mcp.tools.window_tools.get_window_info",
          "level": 3,
          "text": "get_window_info()"
        },
        {
          "id": "libtmux_mcp.tools.window_tools.split_window",
          "level": 3,
          "text": "split_window()"
        },
        {
          "id": "libtmux_mcp.tools.window_tools.rename_window",
          "level": 3,
          "text": "rename_window()"
        },
        {
          "id": "libtmux_mcp.tools.window_tools.kill_window",
          "level": 3,
          "text": "kill_window()"
        },
        {
          "id": "libtmux_mcp.tools.window_tools.select_layout",
          "level": 3,
          "text": "select_layout()"
        },
        {
          "id": "libtmux_mcp.tools.window_tools.resize_window",
          "level": 3,
          "text": "resize_window()"
        },
        {
          "id": "libtmux_mcp.tools.window_tools.move_window",
          "level": 3,
          "text": "move_window()"
        },
        {
          "id": "libtmux_mcp.tools.window_tools.register",
          "level": 3,
          "text": "register()"
        },
        {
          "id": "module-libtmux_mcp.tools.pane_tools",
          "level": 2,
          "text": "Pane tools"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.capture_pane",
          "level": 3,
          "text": "capture_pane()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.capture_since",
          "level": 3,
          "text": "capture_since()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.clear_pane",
          "level": 3,
          "text": "clear_pane()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.display_message",
          "level": 3,
          "text": "display_message()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.enter_copy_mode",
          "level": 3,
          "text": "enter_copy_mode()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.exit_copy_mode",
          "level": 3,
          "text": "exit_copy_mode()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.find_pane_by_position",
          "level": 3,
          "text": "find_pane_by_position()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.get_pane_info",
          "level": 3,
          "text": "get_pane_info()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.kill_pane",
          "level": 3,
          "text": "kill_pane()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.paste_text",
          "level": 3,
          "text": "paste_text()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.pipe_pane",
          "level": 3,
          "text": "pipe_pane()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.register",
          "level": 3,
          "text": "register()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.resize_pane",
          "level": 3,
          "text": "resize_pane()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.respawn_pane",
          "level": 3,
          "text": "respawn_pane()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.search_panes",
          "level": 3,
          "text": "search_panes()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.select_pane",
          "level": 3,
          "text": "select_pane()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.send_keys",
          "level": 3,
          "text": "send_keys()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.set_pane_title",
          "level": 3,
          "text": "set_pane_title()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.snapshot_pane",
          "level": 3,
          "text": "snapshot_pane()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.swap_pane",
          "level": 3,
          "text": "swap_pane()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.wait_for_content_change",
          "level": 3,
          "text": "wait_for_content_change()"
        },
        {
          "id": "libtmux_mcp.tools.pane_tools.wait_for_text",
          "level": 3,
          "text": "wait_for_text()"
        },
        {
          "id": "module-libtmux_mcp.tools.option_tools",
          "level": 2,
          "text": "Option tools"
        },
        {
          "id": "libtmux_mcp.tools.option_tools._resolve_option_target",
          "level": 3,
          "text": "_resolve_option_target()"
        },
        {
          "id": "libtmux_mcp.tools.option_tools.show_option",
          "level": 3,
          "text": "show_option()"
        },
        {
          "id": "libtmux_mcp.tools.option_tools.set_option",
          "level": 3,
          "text": "set_option()"
        },
        {
          "id": "libtmux_mcp.tools.option_tools.register",
          "level": 3,
          "text": "register()"
        },
        {
          "id": "module-libtmux_mcp.tools.env_tools",
          "level": 2,
          "text": "Environment tools"
        },
        {
          "id": "libtmux_mcp.tools.env_tools.show_environment",
          "level": 3,
          "text": "show_environment()"
        },
        {
          "id": "libtmux_mcp.tools.env_tools.set_environment",
          "level": 3,
          "text": "set_environment()"
        },
        {
          "id": "libtmux_mcp.tools.env_tools.register",
          "level": 3,
          "text": "register()"
        }
      ]
    },
    {
      "title": "Utilities",
      "description": "Shared utilities for libtmux MCP server.",
      "section": "Documentation",
      "url": "/reference/api/utils/",
      "markdownUrl": "/reference/api/utils.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Utilities"
        },
        {
          "id": "libtmux_mcp._utils.ExpectedToolError",
          "level": 2,
          "text": "ExpectedToolError"
        },
        {
          "id": "libtmux_mcp._utils.ExpectedToolError.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "libtmux_mcp._utils.CallerIdentity",
          "level": 2,
          "text": "CallerIdentity"
        },
        {
          "id": "libtmux_mcp._utils.CallerIdentity.socket_path",
          "level": 3,
          "text": "socket_path"
        },
        {
          "id": "libtmux_mcp._utils.CallerIdentity.server_pid",
          "level": 3,
          "text": "server_pid"
        },
        {
          "id": "libtmux_mcp._utils.CallerIdentity.session_id",
          "level": 3,
          "text": "session_id"
        },
        {
          "id": "libtmux_mcp._utils.CallerIdentity.pane_id",
          "level": 3,
          "text": "pane_id"
        },
        {
          "id": "libtmux_mcp._utils.CallerIdentity.__init__",
          "level": 3,
          "text": "__init__()"
        },
        {
          "id": "libtmux_mcp._utils._get_caller_identity",
          "level": 2,
          "text": "_get_caller_identity()"
        },
        {
          "id": "libtmux_mcp._utils._compute_is_caller",
          "level": 2,
          "text": "_compute_is_caller()"
        },
        {
          "id": "libtmux_mcp._utils._effective_socket_path",
          "level": 2,
          "text": "_effective_socket_path()"
        },
        {
          "id": "libtmux_mcp._utils._caller_is_on_server",
          "level": 2,
          "text": "_caller_is_on_server()"
        },
        {
          "id": "libtmux_mcp._utils._caller_is_strictly_on_server",
          "level": 2,
          "text": "_caller_is_strictly_on_server()"
        },
        {
          "id": "libtmux_mcp._utils.ANNOTATIONS_SHELL",
          "level": 2,
          "text": "ANNOTATIONS_SHELL"
        },
        {
          "id": "libtmux_mcp._utils.DISCOVERY_META",
          "level": 2,
          "text": "DISCOVERY_META"
        },
        {
          "id": "libtmux_mcp._utils.ANNOTATIONS_MUTATING_DESTRUCTIVE",
          "level": 2,
          "text": "ANNOTATIONS_MUTATING_DESTRUCTIVE"
        },
        {
          "id": "libtmux_mcp._utils._tmux_argv",
          "level": 2,
          "text": "_tmux_argv()"
        },
        {
          "id": "libtmux_mcp._utils._get_server",
          "level": 2,
          "text": "_get_server()"
        },
        {
          "id": "libtmux_mcp._utils._invalidate_server",
          "level": 2,
          "text": "_invalidate_server()"
        },
        {
          "id": "libtmux_mcp._utils._resolve_session",
          "level": 2,
          "text": "_resolve_session()"
        },
        {
          "id": "libtmux_mcp._utils._resolve_window",
          "level": 2,
          "text": "_resolve_window()"
        },
        {
          "id": "libtmux_mcp._utils._resolve_pane",
          "level": 2,
          "text": "_resolve_pane()"
        },
        {
          "id": "libtmux_mcp._utils._coerce_dict_arg",
          "level": 2,
          "text": "_coerce_dict_arg()"
        },
        {
          "id": "libtmux_mcp._utils._apply_filters",
          "level": 2,
          "text": "_apply_filters()"
        },
        {
          "id": "libtmux_mcp._utils._serialize_session",
          "level": 2,
          "text": "_serialize_session()"
        },
        {
          "id": "libtmux_mcp._utils._serialize_window",
          "level": 2,
          "text": "_serialize_window()"
        },
        {
          "id": "libtmux_mcp._utils._coerce_int",
          "level": 2,
          "text": "_coerce_int()"
        },
        {
          "id": "libtmux_mcp._utils._coerce_bool",
          "level": 2,
          "text": "_coerce_bool()"
        },
        {
          "id": "libtmux_mcp._utils._serialize_pane",
          "level": 2,
          "text": "_serialize_pane()"
        },
        {
          "id": "libtmux_mcp._utils._map_exception_to_tool_error",
          "level": 2,
          "text": "_map_exception_to_tool_error()"
        },
        {
          "id": "libtmux_mcp._utils.handle_tool_errors",
          "level": 2,
          "text": "handle_tool_errors()"
        },
        {
          "id": "libtmux_mcp._utils.handle_tool_errors_async",
          "level": 2,
          "text": "handle_tool_errors_async()"
        }
      ]
    },
    {
      "title": "Compatibility",
      "description": "Python",
      "section": "Reference",
      "url": "/reference/compatibility/",
      "markdownUrl": "/reference/compatibility.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Compatibility"
        },
        {
          "id": "python-versions",
          "level": 2,
          "text": "Python versions"
        },
        {
          "id": "tmux-versions",
          "level": 2,
          "text": "tmux versions"
        },
        {
          "id": "dependencies",
          "level": 2,
          "text": "Dependencies"
        },
        {
          "id": "mcp-clients",
          "level": 2,
          "text": "MCP clients"
        },
        {
          "id": "os-support",
          "level": 2,
          "text": "OS support"
        }
      ]
    },
    {
      "title": "Resources",
      "description": "MCP resources are addressable documents the server exposes at tmux:// URIs. Clients read them via resources/read. All libtmux-mcp resources are resource templates — each URI includes a {?socket_nam...",
      "section": "Use it",
      "url": "/resources/",
      "markdownUrl": "/resources.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Resources"
        },
        {
          "id": "available-resources",
          "level": 2,
          "text": "Available resources"
        },
        {
          "id": "sessions",
          "level": 2,
          "text": "Sessions"
        },
        {
          "id": "fastmcp-resource-template-get-sessions",
          "level": 3,
          "text": "get_sessions"
        },
        {
          "id": "fastmcp-resource-template-get-session",
          "level": 3,
          "text": "get_session"
        },
        {
          "id": "fastmcp-resource-template-get-session-windows",
          "level": 3,
          "text": "get_session_windows"
        },
        {
          "id": "windows",
          "level": 2,
          "text": "Windows"
        },
        {
          "id": "fastmcp-resource-template-get-window",
          "level": 3,
          "text": "get_window"
        },
        {
          "id": "panes",
          "level": 2,
          "text": "Panes"
        },
        {
          "id": "fastmcp-resource-template-get-pane",
          "level": 3,
          "text": "get_pane"
        },
        {
          "id": "fastmcp-resource-template-get-pane-content",
          "level": 3,
          "text": "get_pane_content"
        }
      ]
    },
    {
      "title": "Delete buffer",
      "description": "Delete an MCP-owned buffer.",
      "section": "Documentation",
      "url": "/tools/buffer/delete-buffer/",
      "markdownUrl": "/tools/buffer/delete-buffer.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Delete buffer"
        },
        {
          "id": "fastmcp-tool-delete-buffer",
          "level": 2,
          "text": "delete_buffer"
        }
      ]
    },
    {
      "title": "Buffer tools",
      "description": "tmux paste buffers are a server-global namespace shared by every client on the same socket. The buffer tools in libtmux-mcp expose a narrow, agent-namespaced subset: every allocation gets a UUID-sc...",
      "section": "Documentation",
      "url": "/tools/buffer/",
      "markdownUrl": "/tools/buffer/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Buffer tools"
        }
      ]
    },
    {
      "title": "Load buffer",
      "description": "Load text into a new agent-namespaced tmux paste buffer.",
      "section": "Documentation",
      "url": "/tools/buffer/load-buffer/",
      "markdownUrl": "/tools/buffer/load-buffer.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Load buffer"
        },
        {
          "id": "fastmcp-tool-load-buffer",
          "level": 2,
          "text": "load_buffer"
        },
        {
          "id": "paste",
          "level": 2,
          "text": "Paste"
        }
      ]
    },
    {
      "title": "Paste buffer",
      "description": "Paste an MCP-owned buffer into a pane.",
      "section": "Documentation",
      "url": "/tools/buffer/paste-buffer/",
      "markdownUrl": "/tools/buffer/paste-buffer.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Paste buffer"
        },
        {
          "id": "fastmcp-tool-paste-buffer",
          "level": 2,
          "text": "paste_buffer"
        },
        {
          "id": "inspect",
          "level": 2,
          "text": "Inspect"
        }
      ]
    },
    {
      "title": "Show buffer",
      "description": "Read back the contents of an MCP-owned buffer.",
      "section": "Documentation",
      "url": "/tools/buffer/show-buffer/",
      "markdownUrl": "/tools/buffer/show-buffer.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Show buffer"
        },
        {
          "id": "fastmcp-tool-show-buffer",
          "level": 2,
          "text": "show_buffer"
        },
        {
          "id": "clean-up",
          "level": 2,
          "text": "Clean up"
        }
      ]
    },
    {
      "title": "Hook tools",
      "description": "tmux hooks let you attach commands to lifecycle events — pane-exited, session-renamed, command-error, and so on. libtmux-mcp exposes read-only hook introspection so agents can audit what hooks the ...",
      "section": "Documentation",
      "url": "/tools/hook/",
      "markdownUrl": "/tools/hook/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Hook tools"
        },
        {
          "id": "why-no-set-hook",
          "level": 2,
          "text": "Why no set_hook?"
        },
        {
          "id": "inspect",
          "level": 2,
          "text": "Inspect"
        }
      ]
    },
    {
      "title": "Show hook",
      "description": "Look up a specific tmux hook by name.",
      "section": "Documentation",
      "url": "/tools/hook/show-hook/",
      "markdownUrl": "/tools/hook/show-hook.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Show hook"
        },
        {
          "id": "fastmcp-tool-show-hook",
          "level": 2,
          "text": "show_hook"
        }
      ]
    },
    {
      "title": "Show hooks",
      "description": "List configured tmux hooks at the given scope.",
      "section": "Documentation",
      "url": "/tools/hook/show-hooks/",
      "markdownUrl": "/tools/hook/show-hooks.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Show hooks"
        },
        {
          "id": "fastmcp-tool-show-hooks",
          "level": 2,
          "text": "show_hooks"
        }
      ]
    },
    {
      "title": "Tools",
      "description": "All tools accept an optional socket_name parameter for multi-server support. It defaults to the LIBTMUX_SOCKET env var. See configuration.",
      "section": "Use it",
      "url": "/tools/",
      "markdownUrl": "/tools/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Tools"
        },
        {
          "id": "which-tool-do-i-want",
          "level": 2,
          "text": "Which tool do I want?"
        },
        {
          "id": "inspect",
          "level": 2,
          "text": "Inspect"
        },
        {
          "id": "act",
          "level": 2,
          "text": "Act"
        },
        {
          "id": "destroy",
          "level": 2,
          "text": "Destroy"
        }
      ]
    },
    {
      "title": "Capture pane",
      "description": "Capture the visible contents of a tmux pane (terminal scrollback).",
      "section": "Documentation",
      "url": "/tools/pane/capture-pane/",
      "markdownUrl": "/tools/pane/capture-pane.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Capture pane"
        },
        {
          "id": "fastmcp-tool-capture-pane",
          "level": 2,
          "text": "capture_pane"
        }
      ]
    },
    {
      "title": "Capture since",
      "description": "Capture new tmux terminal scrollback since the previous cursor.",
      "section": "Documentation",
      "url": "/tools/pane/capture-since/",
      "markdownUrl": "/tools/pane/capture-since.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Capture since"
        },
        {
          "id": "fastmcp-tool-capture-since",
          "level": 2,
          "text": "capture_since"
        }
      ]
    },
    {
      "title": "Clear pane",
      "description": "Clear the contents of a tmux pane.",
      "section": "Documentation",
      "url": "/tools/pane/clear-pane/",
      "markdownUrl": "/tools/pane/clear-pane.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Clear pane"
        },
        {
          "id": "fastmcp-tool-clear-pane",
          "level": 2,
          "text": "clear_pane"
        }
      ]
    },
    {
      "title": "Evaluate tmux format string (display_message)",
      "description": "Evaluate a tmux format string against a target and return the expanded value.",
      "section": "Documentation",
      "url": "/tools/pane/display-message/",
      "markdownUrl": "/tools/pane/display-message.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Evaluate tmux format string (display_message)"
        },
        {
          "id": "fastmcp-tool-display-message",
          "level": 2,
          "text": "display_message"
        }
      ]
    },
    {
      "title": "Enter copy mode",
      "description": "Enter copy mode in a tmux pane, optionally scrolling up.",
      "section": "Documentation",
      "url": "/tools/pane/enter-copy-mode/",
      "markdownUrl": "/tools/pane/enter-copy-mode.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Enter copy mode"
        },
        {
          "id": "fastmcp-tool-enter-copy-mode",
          "level": 2,
          "text": "enter_copy_mode"
        }
      ]
    },
    {
      "title": "Exit copy mode",
      "description": "Exit copy mode in a tmux pane.",
      "section": "Documentation",
      "url": "/tools/pane/exit-copy-mode/",
      "markdownUrl": "/tools/pane/exit-copy-mode.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Exit copy mode"
        },
        {
          "id": "fastmcp-tool-exit-copy-mode",
          "level": 2,
          "text": "exit_copy_mode"
        }
      ]
    },
    {
      "title": "Find pane by position",
      "description": "Find the pane occupying a corner of a tmux window.",
      "section": "Documentation",
      "url": "/tools/pane/find-pane-by-position/",
      "markdownUrl": "/tools/pane/find-pane-by-position.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Find pane by position"
        },
        {
          "id": "fastmcp-tool-find-pane-by-position",
          "level": 2,
          "text": "find_pane_by_position"
        }
      ]
    },
    {
      "title": "Get pane info",
      "description": "Get detailed information about a tmux pane.",
      "section": "Documentation",
      "url": "/tools/pane/get-pane-info/",
      "markdownUrl": "/tools/pane/get-pane-info.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Get pane info"
        },
        {
          "id": "fastmcp-tool-get-pane-info",
          "level": 2,
          "text": "get_pane_info"
        }
      ]
    },
    {
      "title": "Pane tools",
      "description": "Pane-scoped tools — read and drive individual terminals, wait for output, copy mode, and channel sync.",
      "section": "Documentation",
      "url": "/tools/pane/",
      "markdownUrl": "/tools/pane/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Pane tools"
        }
      ]
    },
    {
      "title": "Kill pane",
      "description": "Kill (close) a tmux pane. Requires exact pane_id (e.g. ‘%5’).",
      "section": "Documentation",
      "url": "/tools/pane/kill-pane/",
      "markdownUrl": "/tools/pane/kill-pane.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Kill pane"
        },
        {
          "id": "fastmcp-tool-kill-pane",
          "level": 2,
          "text": "kill_pane"
        }
      ]
    },
    {
      "title": "Paste text",
      "description": "Paste multi-line text into a pane using tmux paste buffers.",
      "section": "Documentation",
      "url": "/tools/pane/paste-text/",
      "markdownUrl": "/tools/pane/paste-text.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Paste text"
        },
        {
          "id": "fastmcp-tool-paste-text",
          "level": 2,
          "text": "paste_text"
        },
        {
          "id": "destroy",
          "level": 2,
          "text": "Destroy"
        }
      ]
    },
    {
      "title": "Pipe pane",
      "description": "Log a pane’s live output to a file (or stop an active log).",
      "section": "Documentation",
      "url": "/tools/pane/pipe-pane/",
      "markdownUrl": "/tools/pane/pipe-pane.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Pipe pane"
        },
        {
          "id": "fastmcp-tool-pipe-pane",
          "level": 2,
          "text": "pipe_pane"
        }
      ]
    },
    {
      "title": "Resize pane",
      "description": "Resize a tmux pane.",
      "section": "Documentation",
      "url": "/tools/pane/resize-pane/",
      "markdownUrl": "/tools/pane/resize-pane.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Resize pane"
        },
        {
          "id": "fastmcp-tool-resize-pane",
          "level": 2,
          "text": "resize_pane"
        }
      ]
    },
    {
      "title": "Respawn pane",
      "description": "Restart a pane’s process in place, preserving pane_id and layout.",
      "section": "Documentation",
      "url": "/tools/pane/respawn-pane/",
      "markdownUrl": "/tools/pane/respawn-pane.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Respawn pane"
        },
        {
          "id": "fastmcp-tool-respawn-pane",
          "level": 2,
          "text": "respawn_pane"
        }
      ]
    },
    {
      "title": "Search panes",
      "description": "Search visible terminal text across all tmux panes.",
      "section": "Documentation",
      "url": "/tools/pane/search-panes/",
      "markdownUrl": "/tools/pane/search-panes.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Search panes"
        },
        {
          "id": "fastmcp-tool-search-panes",
          "level": 2,
          "text": "search_panes"
        }
      ]
    },
    {
      "title": "Select pane",
      "description": "Select (focus) a tmux pane by ID or direction.",
      "section": "Documentation",
      "url": "/tools/pane/select-pane/",
      "markdownUrl": "/tools/pane/select-pane.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Select pane"
        },
        {
          "id": "fastmcp-tool-select-pane",
          "level": 2,
          "text": "select_pane"
        }
      ]
    },
    {
      "title": "Send keys",
      "description": "Send keys (commands or text) to a tmux pane.",
      "section": "Documentation",
      "url": "/tools/pane/send-keys/",
      "markdownUrl": "/tools/pane/send-keys.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Send keys"
        },
        {
          "id": "fastmcp-tool-send-keys",
          "level": 2,
          "text": "send_keys"
        }
      ]
    },
    {
      "title": "Set pane title",
      "description": "Set the title of a tmux pane.",
      "section": "Documentation",
      "url": "/tools/pane/set-pane-title/",
      "markdownUrl": "/tools/pane/set-pane-title.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Set pane title"
        },
        {
          "id": "fastmcp-tool-set-pane-title",
          "level": 2,
          "text": "set_pane_title"
        }
      ]
    },
    {
      "title": "Signal channel",
      "description": "Signal a tmux wait-for channel, waking any blocked waiters.",
      "section": "Documentation",
      "url": "/tools/pane/signal-channel/",
      "markdownUrl": "/tools/pane/signal-channel.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Signal channel"
        },
        {
          "id": "fastmcp-tool-signal-channel",
          "level": 2,
          "text": "signal_channel"
        }
      ]
    },
    {
      "title": "Snapshot pane",
      "description": "Snapshot a tmux pane: visible terminal output, cursor, mode, scroll.",
      "section": "Documentation",
      "url": "/tools/pane/snapshot-pane/",
      "markdownUrl": "/tools/pane/snapshot-pane.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Snapshot pane"
        },
        {
          "id": "fastmcp-tool-snapshot-pane",
          "level": 2,
          "text": "snapshot_pane"
        }
      ]
    },
    {
      "title": "Swap pane",
      "description": "Swap the positions of two panes.",
      "section": "Documentation",
      "url": "/tools/pane/swap-pane/",
      "markdownUrl": "/tools/pane/swap-pane.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Swap pane"
        },
        {
          "id": "fastmcp-tool-swap-pane",
          "level": 2,
          "text": "swap_pane"
        }
      ]
    },
    {
      "title": "Wait for channel",
      "description": "tmux’s wait-for command exposes named, server-global channels that clients can signal and block on. These give agents an explicit synchronization primitive — strictly cheaper in agent turns than po...",
      "section": "Documentation",
      "url": "/tools/pane/wait-for-channel/",
      "markdownUrl": "/tools/pane/wait-for-channel.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Wait for channel"
        },
        {
          "id": "fastmcp-tool-wait-for-channel",
          "level": 2,
          "text": "wait_for_channel"
        }
      ]
    },
    {
      "title": "Wait for content change",
      "description": "Wait for any content change in a tmux pane.",
      "section": "Documentation",
      "url": "/tools/pane/wait-for-content-change/",
      "markdownUrl": "/tools/pane/wait-for-content-change.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Wait for content change"
        },
        {
          "id": "fastmcp-tool-wait-for-content-change",
          "level": 2,
          "text": "wait_for_content_change"
        }
      ]
    },
    {
      "title": "Wait for text",
      "description": "Wait for NEW text to appear in a tmux pane.",
      "section": "Documentation",
      "url": "/tools/pane/wait-for-text/",
      "markdownUrl": "/tools/pane/wait-for-text.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Wait for text"
        },
        {
          "id": "fastmcp-tool-wait-for-text",
          "level": 2,
          "text": "wait_for_text"
        }
      ]
    },
    {
      "title": "Create session",
      "description": "Create a new tmux session.",
      "section": "Documentation",
      "url": "/tools/server/create-session/",
      "markdownUrl": "/tools/server/create-session.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Create session"
        },
        {
          "id": "fastmcp-tool-create-session",
          "level": 2,
          "text": "create_session"
        }
      ]
    },
    {
      "title": "Get server info",
      "description": "Get information about the tmux server.",
      "section": "Documentation",
      "url": "/tools/server/get-server-info/",
      "markdownUrl": "/tools/server/get-server-info.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Get server info"
        },
        {
          "id": "fastmcp-tool-get-server-info",
          "level": 2,
          "text": "get_server_info"
        }
      ]
    },
    {
      "title": "Server tools",
      "description": "Server & process-level tools — discover sessions, control the tmux daemon, read/write server-scoped state.",
      "section": "Documentation",
      "url": "/tools/server/",
      "markdownUrl": "/tools/server/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Server tools"
        }
      ]
    },
    {
      "title": "Kill server",
      "description": "Kill the tmux server and all its sessions.",
      "section": "Documentation",
      "url": "/tools/server/kill-server/",
      "markdownUrl": "/tools/server/kill-server.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Kill server"
        },
        {
          "id": "fastmcp-tool-kill-server",
          "level": 2,
          "text": "kill_server"
        }
      ]
    },
    {
      "title": "List servers",
      "description": "Discover live tmux servers under the current user’s $TMUX_TMPDIR.",
      "section": "Documentation",
      "url": "/tools/server/list-servers/",
      "markdownUrl": "/tools/server/list-servers.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "List servers"
        },
        {
          "id": "fastmcp-tool-list-servers",
          "level": 2,
          "text": "list_servers"
        },
        {
          "id": "act",
          "level": 2,
          "text": "Act"
        }
      ]
    },
    {
      "title": "List sessions",
      "description": "List tmux sessions (terminal workspaces) on a tmux server.",
      "section": "Documentation",
      "url": "/tools/server/list-sessions/",
      "markdownUrl": "/tools/server/list-sessions.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "List sessions"
        },
        {
          "id": "fastmcp-tool-list-sessions",
          "level": 2,
          "text": "list_sessions"
        }
      ]
    },
    {
      "title": "Set environment",
      "description": "Set a tmux environment variable.",
      "section": "Documentation",
      "url": "/tools/server/set-environment/",
      "markdownUrl": "/tools/server/set-environment.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Set environment"
        },
        {
          "id": "fastmcp-tool-set-environment",
          "level": 2,
          "text": "set_environment"
        }
      ]
    },
    {
      "title": "Set option",
      "description": "Set a tmux option value.",
      "section": "Documentation",
      "url": "/tools/server/set-option/",
      "markdownUrl": "/tools/server/set-option.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Set option"
        },
        {
          "id": "fastmcp-tool-set-option",
          "level": 2,
          "text": "set_option"
        }
      ]
    },
    {
      "title": "Show environment",
      "description": "Show tmux environment variables.",
      "section": "Documentation",
      "url": "/tools/server/show-environment/",
      "markdownUrl": "/tools/server/show-environment.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Show environment"
        },
        {
          "id": "fastmcp-tool-show-environment",
          "level": 2,
          "text": "show_environment"
        },
        {
          "id": "act",
          "level": 2,
          "text": "Act"
        }
      ]
    },
    {
      "title": "Show option",
      "description": "Show a tmux option value.",
      "section": "Documentation",
      "url": "/tools/server/show-option/",
      "markdownUrl": "/tools/server/show-option.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Show option"
        },
        {
          "id": "fastmcp-tool-show-option",
          "level": 2,
          "text": "show_option"
        }
      ]
    },
    {
      "title": "Create window",
      "description": "Create a new window in a tmux session.",
      "section": "Documentation",
      "url": "/tools/session/create-window/",
      "markdownUrl": "/tools/session/create-window.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Create window"
        },
        {
          "id": "fastmcp-tool-create-window",
          "level": 2,
          "text": "create_window"
        }
      ]
    },
    {
      "title": "Get session info",
      "description": "Return metadata for a single tmux session (ID, name, window count, activity).",
      "section": "Documentation",
      "url": "/tools/session/get-session-info/",
      "markdownUrl": "/tools/session/get-session-info.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Get session info"
        },
        {
          "id": "fastmcp-tool-get-session-info",
          "level": 2,
          "text": "get_session_info"
        }
      ]
    },
    {
      "title": "Session tools",
      "description": "Session-scoped tools — enumerate windows, rename or kill a session, switch windows within it.",
      "section": "Documentation",
      "url": "/tools/session/",
      "markdownUrl": "/tools/session/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Session tools"
        }
      ]
    },
    {
      "title": "Kill session",
      "description": "Kill a tmux session.",
      "section": "Documentation",
      "url": "/tools/session/kill-session/",
      "markdownUrl": "/tools/session/kill-session.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Kill session"
        },
        {
          "id": "fastmcp-tool-kill-session",
          "level": 2,
          "text": "kill_session"
        }
      ]
    },
    {
      "title": "List windows",
      "description": "List tmux windows (terminal tabs) in a session, or across the server.",
      "section": "Documentation",
      "url": "/tools/session/list-windows/",
      "markdownUrl": "/tools/session/list-windows.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "List windows"
        },
        {
          "id": "fastmcp-tool-list-windows",
          "level": 2,
          "text": "list_windows"
        }
      ]
    },
    {
      "title": "Rename session",
      "description": "Rename a tmux session.",
      "section": "Documentation",
      "url": "/tools/session/rename-session/",
      "markdownUrl": "/tools/session/rename-session.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Rename session"
        },
        {
          "id": "fastmcp-tool-rename-session",
          "level": 2,
          "text": "rename_session"
        }
      ]
    },
    {
      "title": "Select window",
      "description": "Select (focus) a tmux window by ID, index, or direction.",
      "section": "Documentation",
      "url": "/tools/session/select-window/",
      "markdownUrl": "/tools/session/select-window.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Select window"
        },
        {
          "id": "fastmcp-tool-select-window",
          "level": 2,
          "text": "select_window"
        },
        {
          "id": "destroy",
          "level": 2,
          "text": "Destroy"
        }
      ]
    },
    {
      "title": "Get window info",
      "description": "Return metadata for a single tmux window (ID, name, layout, dimensions).",
      "section": "Documentation",
      "url": "/tools/window/get-window-info/",
      "markdownUrl": "/tools/window/get-window-info.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Get window info"
        },
        {
          "id": "fastmcp-tool-get-window-info",
          "level": 2,
          "text": "get_window_info"
        }
      ]
    },
    {
      "title": "Window tools",
      "description": "Window-scoped tools — enumerate panes, split / rename / relayout / resize / move / kill windows.",
      "section": "Documentation",
      "url": "/tools/window/",
      "markdownUrl": "/tools/window/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Window tools"
        }
      ]
    },
    {
      "title": "Kill window",
      "description": "Kill (close) a tmux window. Requires exact window_id (e.g. ‘@3’).",
      "section": "Documentation",
      "url": "/tools/window/kill-window/",
      "markdownUrl": "/tools/window/kill-window.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Kill window"
        },
        {
          "id": "fastmcp-tool-kill-window",
          "level": 2,
          "text": "kill_window"
        }
      ]
    },
    {
      "title": "List panes",
      "description": "List tmux panes (terminal multiplexer splits) in a window, session, or server.",
      "section": "Documentation",
      "url": "/tools/window/list-panes/",
      "markdownUrl": "/tools/window/list-panes.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "List panes"
        },
        {
          "id": "fastmcp-tool-list-panes",
          "level": 2,
          "text": "list_panes"
        },
        {
          "id": "act",
          "level": 2,
          "text": "Act"
        }
      ]
    },
    {
      "title": "Move window",
      "description": "Move a window to a different index or session.",
      "section": "Documentation",
      "url": "/tools/window/move-window/",
      "markdownUrl": "/tools/window/move-window.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Move window"
        },
        {
          "id": "fastmcp-tool-move-window",
          "level": 2,
          "text": "move_window"
        },
        {
          "id": "destroy",
          "level": 2,
          "text": "Destroy"
        }
      ]
    },
    {
      "title": "Rename window",
      "description": "Rename a tmux window.",
      "section": "Documentation",
      "url": "/tools/window/rename-window/",
      "markdownUrl": "/tools/window/rename-window.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Rename window"
        },
        {
          "id": "fastmcp-tool-rename-window",
          "level": 2,
          "text": "rename_window"
        }
      ]
    },
    {
      "title": "Resize window",
      "description": "Resize a tmux window.",
      "section": "Documentation",
      "url": "/tools/window/resize-window/",
      "markdownUrl": "/tools/window/resize-window.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Resize window"
        },
        {
          "id": "fastmcp-tool-resize-window",
          "level": 2,
          "text": "resize_window"
        }
      ]
    },
    {
      "title": "Select layout",
      "description": "Set the layout of a tmux window.",
      "section": "Documentation",
      "url": "/tools/window/select-layout/",
      "markdownUrl": "/tools/window/select-layout.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Select layout"
        },
        {
          "id": "fastmcp-tool-select-layout",
          "level": 2,
          "text": "select_layout"
        }
      ]
    },
    {
      "title": "Split window",
      "description": "Split a tmux window to create a new pane.",
      "section": "Documentation",
      "url": "/tools/window/split-window/",
      "markdownUrl": "/tools/window/split-window.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Split window"
        },
        {
          "id": "fastmcp-tool-split-window",
          "level": 2,
          "text": "split_window"
        }
      ]
    },
    {
      "title": "Architecture",
      "description": "For contributors who need to understand the codebase internals.",
      "section": "Documentation",
      "url": "/topics/architecture/",
      "markdownUrl": "/topics/architecture.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Architecture"
        },
        {
          "id": "source-layout",
          "level": 2,
          "text": "Source layout"
        },
        {
          "id": "request-flow",
          "level": 2,
          "text": "Request flow"
        },
        {
          "id": "key-design-decisions",
          "level": 2,
          "text": "Key design decisions"
        },
        {
          "id": "tool-registration",
          "level": 3,
          "text": "Tool registration"
        },
        {
          "id": "server-caching",
          "level": 3,
          "text": "Server caching"
        },
        {
          "id": "object-resolution",
          "level": 3,
          "text": "Object resolution"
        },
        {
          "id": "safety-middleware",
          "level": 3,
          "text": "Safety middleware"
        },
        {
          "id": "error-handling",
          "level": 3,
          "text": "Error handling"
        },
        {
          "id": "references",
          "level": 2,
          "text": "References"
        }
      ]
    },
    {
      "title": "Completion",
      "description": "libtmux-mcp inherits FastMCP’s built-in MCP completion behaviour. We don’t hand-author completion providers — the argument shapes on our prompts and resource templates are what the client sees.",
      "section": "Documentation",
      "url": "/topics/completion/",
      "markdownUrl": "/topics/completion.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Completion"
        },
        {
          "id": "what-the-spec-does",
          "level": 2,
          "text": "What the spec does"
        },
        {
          "id": "what-libtmux-mcp-currently-exposes",
          "level": 2,
          "text": "What libtmux-mcp currently exposes"
        },
        {
          "id": "workarounds-for-clients-that-need-live-enumeration",
          "level": 2,
          "text": "Workarounds for clients that need live enumeration"
        },
        {
          "id": "further-reading",
          "level": 2,
          "text": "Further reading"
        }
      ]
    },
    {
      "title": "Concepts",
      "description": "The mental model you need to use libtmux-mcp effectively.",
      "section": "Documentation",
      "url": "/topics/concepts/",
      "markdownUrl": "/topics/concepts.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Concepts"
        },
        {
          "id": "tmux-hierarchy",
          "level": 2,
          "text": "tmux hierarchy"
        },
        {
          "id": "identifiers",
          "level": 2,
          "text": "Identifiers"
        },
        {
          "id": "targeting",
          "level": 2,
          "text": "Targeting"
        },
        {
          "id": "discovery-vs-mutation",
          "level": 2,
          "text": "Discovery vs. mutation"
        },
        {
          "id": "agent-self-awareness",
          "level": 2,
          "text": "Agent self-awareness"
        },
        {
          "id": "server-caching",
          "level": 2,
          "text": "Server caching"
        },
        {
          "id": "filtering",
          "level": 2,
          "text": "Filtering"
        },
        {
          "id": "resources",
          "level": 2,
          "text": "Resources"
        }
      ]
    },
    {
      "title": "Gotchas",
      "description": "Things that will bite you if you don’t know about them in advance. For symptom-based debugging, see troubleshooting.",
      "section": "Documentation",
      "url": "/topics/gotchas/",
      "markdownUrl": "/topics/gotchas.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Gotchas"
        },
        {
          "id": "metadata-vs-content",
          "level": 2,
          "text": "Metadata vs. content"
        },
        {
          "id": "send-keys-sends-enter-by-default",
          "level": 2,
          "text": "send_keys sends Enter by default"
        },
        {
          "id": "capture-pane-after-send-keys-is-a-race-condition",
          "level": 2,
          "text": "capture_pane after send_keys is a race condition"
        },
        {
          "id": "repeated-capture-pane-calls-resend-old-output",
          "level": 2,
          "text": "Repeated capture_pane calls resend old output"
        },
        {
          "id": "window-names-are-not-unique-across-sessions",
          "level": 2,
          "text": "Window names are not unique across sessions"
        },
        {
          "id": "pane-ids-are-globally-unique-but-ephemeral",
          "level": 2,
          "text": "Pane IDs are globally unique but ephemeral"
        },
        {
          "id": "suppress-history-requires-shell-support",
          "level": 2,
          "text": "suppress_history requires shell support"
        },
        {
          "id": "clear-pane-is-not-fully-atomic",
          "level": 2,
          "text": "clear_pane is not fully atomic"
        },
        {
          "id": "gemini-cli-injects-wait-for-previous-into-tool-arguments",
          "level": 2,
          "text": "Gemini CLI injects wait_for_previous into tool arguments"
        }
      ]
    },
    {
      "title": "Topics",
      "description": "Explore libtmux-mcp’s core ideas and design at a high level.",
      "section": "Understand it",
      "url": "/topics/",
      "markdownUrl": "/topics/index.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Topics"
        },
        {
          "id": "mcp-protocol-utilities",
          "level": 2,
          "text": "MCP protocol utilities"
        }
      ]
    },
    {
      "title": "Logging",
      "description": "libtmux-mcp uses Python’s standard logging module under the libtmux_mcp.* namespace. FastMCP forwards server-side log records to connected MCP clients via the MCP logging capability. No manual wiri...",
      "section": "Documentation",
      "url": "/topics/logging/",
      "markdownUrl": "/topics/logging.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Logging"
        },
        {
          "id": "logger-hierarchy",
          "level": 2,
          "text": "Logger hierarchy"
        },
        {
          "id": "error-levels",
          "level": 2,
          "text": "Error levels"
        },
        {
          "id": "level-control",
          "level": 2,
          "text": "Level control"
        },
        {
          "id": "what-clients-see",
          "level": 2,
          "text": "What clients see"
        },
        {
          "id": "further-reading",
          "level": 2,
          "text": "Further reading"
        }
      ]
    },
    {
      "title": "Pagination",
      "description": "libtmux-mcp follows the MCP pagination spec: tools/list, prompts/list, resources/list, and resources/templates/list all return an opaque nextCursor when a page is truncated, and accept cursor on th...",
      "section": "Documentation",
      "url": "/topics/pagination/",
      "markdownUrl": "/topics/pagination.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Pagination"
        },
        {
          "id": "where-cursors-and-pages-show-up",
          "level": 2,
          "text": "Where cursors and pages show up"
        },
        {
          "id": "protocol-level-list-calls",
          "level": 3,
          "text": "Protocol-level list calls"
        },
        {
          "id": "tool-level-result-paging-on-search-panes",
          "level": 3,
          "text": "Tool-level result paging on search_panes"
        },
        {
          "id": "tool-level-observation-cursors-on-capture-since",
          "level": 3,
          "text": "Tool-level observation cursors on capture_since"
        },
        {
          "id": "why-separate-paths",
          "level": 2,
          "text": "Why separate paths"
        },
        {
          "id": "further-reading",
          "level": 2,
          "text": "Further reading"
        }
      ]
    },
    {
      "title": "Agent prompting guide",
      "description": "How to write effective instructions for AI agents using libtmux-mcp.",
      "section": "Documentation",
      "url": "/topics/prompting/",
      "markdownUrl": "/topics/prompting.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Agent prompting guide"
        },
        {
          "id": "what-the-server-tells-your-agent-automatically",
          "level": 2,
          "text": "What the server tells your agent automatically"
        },
        {
          "id": "activation-and-discovery",
          "level": 2,
          "text": "Activation and discovery"
        },
        {
          "id": "always-on-tool-listing-claude-code-only",
          "level": 3,
          "text": "Always-on tool listing (Claude Code only)"
        },
        {
          "id": "effective-prompt-patterns",
          "level": 2,
          "text": "Effective prompt patterns"
        },
        {
          "id": "anti-patterns-to-avoid",
          "level": 2,
          "text": "Anti-patterns to avoid"
        },
        {
          "id": "system-prompt-fragments",
          "level": 2,
          "text": "System prompt fragments"
        },
        {
          "id": "for-general-tmux-workflows",
          "level": 3,
          "text": "For general tmux workflows"
        },
        {
          "id": "for-safe-agent-behavior",
          "level": 3,
          "text": "For safe agent behavior"
        },
        {
          "id": "for-development-workflows",
          "level": 3,
          "text": "For development workflows"
        },
        {
          "id": "to-bias-activation-on-bare-pane-window-session",
          "level": 3,
          "text": "To bias activation on bare “pane” / “window” / “session”"
        },
        {
          "id": "tool-selection-heuristics",
          "level": 2,
          "text": "Tool selection heuristics"
        }
      ]
    },
    {
      "title": "Safety tiers",
      "description": "libtmux-mcp uses a three-tier safety system to control which tools are available to AI agents.",
      "section": "Documentation",
      "url": "/topics/safety/",
      "markdownUrl": "/topics/safety.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Safety tiers"
        },
        {
          "id": "overview",
          "level": 2,
          "text": "Overview"
        },
        {
          "id": "configuration",
          "level": 2,
          "text": "Configuration"
        },
        {
          "id": "how-it-works",
          "level": 2,
          "text": "How it works"
        },
        {
          "id": "dual-layer-gating",
          "level": 3,
          "text": "Dual-layer gating"
        },
        {
          "id": "tool-tags",
          "level": 3,
          "text": "Tool tags"
        },
        {
          "id": "fail-closed-design",
          "level": 3,
          "text": "Fail-closed design"
        },
        {
          "id": "self-kill-protection",
          "level": 2,
          "text": "Self-kill protection"
        },
        {
          "id": "macos-tmux-tmpdir-caveat",
          "level": 3,
          "text": "macOS TMUX_TMPDIR caveat"
        },
        {
          "id": "footguns-inside-the-mutating-tier",
          "level": 2,
          "text": "Footguns inside the mutating tier"
        },
        {
          "id": "pipe-pane",
          "level": 3,
          "text": "pipe_pane"
        },
        {
          "id": "set-environment",
          "level": 3,
          "text": "set_environment"
        },
        {
          "id": "respawn-pane",
          "level": 3,
          "text": "respawn_pane"
        },
        {
          "id": "send-keys-paste-text",
          "level": 3,
          "text": "send_keys / paste_text"
        },
        {
          "id": "audit-log",
          "level": 2,
          "text": "Audit log"
        },
        {
          "id": "tool-annotations",
          "level": 2,
          "text": "Tool annotations"
        }
      ]
    },
    {
      "title": "Troubleshooting",
      "description": "Symptom-based guide. Find your problem, follow the steps.",
      "section": "Documentation",
      "url": "/topics/troubleshooting/",
      "markdownUrl": "/topics/troubleshooting.md",
      "headings": [
        {
          "id": "",
          "level": 1,
          "text": "Troubleshooting"
        },
        {
          "id": "server-doesn-t-appear-in-client",
          "level": 2,
          "text": "Server doesn’t appear in client"
        },
        {
          "id": "tools-fail-with-no-sessions-found",
          "level": 2,
          "text": "Tools fail with “no sessions found”"
        },
        {
          "id": "wrong-tmux-socket",
          "level": 2,
          "text": "Wrong tmux socket"
        },
        {
          "id": "pane-targeting-mismatch",
          "level": 2,
          "text": "Pane targeting mismatch"
        },
        {
          "id": "command-works-in-shell-but-not-via-mcp",
          "level": 2,
          "text": "Command works in shell but not via MCP"
        },
        {
          "id": "silent-startup-failure",
          "level": 2,
          "text": "Silent startup failure"
        },
        {
          "id": "safety-tier-blocking-tools",
          "level": 2,
          "text": "Safety tier blocking tools"
        },
        {
          "id": "how-to-see-logs",
          "level": 2,
          "text": "How to see logs"
        }
      ]
    }
  ]
}
