{
  "schema_version": "cmdhub.website.command_catalog.v1",
  "tool": "telegram",
  "title": "Telegram CLI",
  "description": "Telegram chats, messages, search, and safe send workflows.",
  "auth_mode": "private_session",
  "auth_scopes": {},
  "markdown_url": "/cli/telegram/index.md",
  "commands": [
    {
      "id": "cmd-telegram-auth",
      "path": "telegram auth",
      "name": "auth",
      "short": "Manage authentication",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram auth --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-auth-configure",
      "path": "telegram auth configure",
      "name": "configure",
      "short": "Store Telegram API ID/hash for the selected profile",
      "long": "Store the Telegram API ID and Telegram API hash from my.telegram.org/apps for the selected profile.\n\nThese are Telegram application credentials, not a normal Telegram account password, not a Bot API token, and not a session string.",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram auth configure --api-id 12345 --api-hash <api-hash> --phone +1555010100",
      "flags": [
        {
          "name": "api-hash",
          "type": "string",
          "usage": "Telegram API hash from my.telegram.org/apps"
        },
        {
          "name": "api-id",
          "type": "int",
          "usage": "Telegram API ID from my.telegram.org/apps"
        },
        {
          "name": "phone",
          "type": "string",
          "usage": "Telegram account phone number in international format"
        }
      ]
    },
    {
      "id": "cmd-telegram-auth-continue",
      "path": "telegram auth continue",
      "name": "continue",
      "short": "Continue an interrupted Telegram phone-code login",
      "long": "Continue an interrupted Telegram phone-code or 2FA login.\n\nResumes the stored Telegram phone-code hash or pending 2FA step without resending a login code when Telegram still accepts the pending authorization.",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram auth continue --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-auth-login",
      "path": "telegram auth login",
      "name": "login",
      "short": "Login with Telegram QR login",
      "long": "Login to Telegram with the provider-supported QR flow by default.\n\nUse --method phone only when no already logged-in Telegram app is available. Telegram API ID/hash are application credentials, not a normal account password and not a Bot API token.",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram auth login\ntelegram auth login --help\ntelegram auth login --method phone",
      "flags": [
        {
          "name": "api-hash",
          "type": "string",
          "usage": "Telegram API hash from my.telegram.org/apps"
        },
        {
          "name": "api-id",
          "type": "int",
          "usage": "Telegram API ID from my.telegram.org/apps"
        },
        {
          "name": "method",
          "type": "string",
          "default": "qr",
          "usage": "Telegram login method: qr or phone"
        },
        {
          "name": "phone",
          "type": "string",
          "usage": "Telegram account phone number in international format"
        }
      ]
    },
    {
      "id": "cmd-telegram-auth-logout",
      "path": "telegram auth logout",
      "name": "logout",
      "short": "Remove the stored Telegram private session",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram auth logout --help",
      "flags": [
        {
          "name": "revoke-provider-session",
          "type": "bool",
          "usage": "also revoke the provider-side Telegram authorization when supported"
        }
      ]
    },
    {
      "id": "cmd-telegram-auth-refresh",
      "path": "telegram auth refresh",
      "name": "refresh",
      "short": "Validate the stored Telegram private session",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram auth refresh --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-auth-status",
      "path": "telegram auth status",
      "name": "status",
      "short": "Show Telegram private session status",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram auth status --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-auth-whoami",
      "path": "telegram auth whoami",
      "name": "whoami",
      "short": "Show the active Telegram account",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram auth whoami --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-capabilities",
      "path": "telegram capabilities",
      "name": "capabilities",
      "short": "Describe capabilities",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram capabilities --help",
      "flags": [
        {
          "name": "section",
          "type": "string",
          "usage": "Show one capability section: scopes, schemas, or commands"
        }
      ]
    },
    {
      "id": "cmd-telegram-chat",
      "path": "telegram chat",
      "name": "chat",
      "short": "Find and inspect Telegram chats",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram chat --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-chat-archive",
      "path": "telegram chat archive",
      "name": "archive",
      "short": "Preview or archive a Telegram chat",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram chat archive --help\ntelegram chat archive c1 --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without changing Telegram"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-chat-get",
      "path": "telegram chat get",
      "name": "get",
      "short": "Inspect a Telegram chat",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram chat get\ntelegram chat get c1 --view full",
      "flags": []
    },
    {
      "id": "cmd-telegram-chat-leave",
      "path": "telegram chat leave",
      "name": "leave",
      "short": "Preview or leave a Telegram chat",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram chat leave --help\ntelegram chat leave c1 --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without changing Telegram"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-chat-list",
      "path": "telegram chat list",
      "name": "list",
      "short": "List recent Telegram chats",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram chat list\ntelegram chat list --limit 20\ntelegram chat list --query project",
      "flags": [
        {
          "name": "archived",
          "type": "bool",
          "usage": "Only archived chats"
        },
        {
          "name": "folder",
          "type": "string",
          "usage": "Telegram folder name or ID"
        },
        {
          "name": "muted",
          "type": "bool",
          "usage": "Only muted chats"
        },
        {
          "name": "pinned",
          "type": "bool",
          "usage": "Only pinned chats"
        },
        {
          "name": "query",
          "type": "string",
          "usage": "Filter chats by title or username"
        },
        {
          "name": "type",
          "type": "string",
          "usage": "Filter chat type"
        },
        {
          "name": "unread",
          "type": "bool",
          "usage": "Only unread chats"
        }
      ]
    },
    {
      "id": "cmd-telegram-chat-mute",
      "path": "telegram chat mute",
      "name": "mute",
      "short": "Preview or mute a Telegram chat",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram chat mute --help\ntelegram chat mute c1 --dry-run\ntelegram chat mute c1 --until 1h --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without changing Telegram"
        },
        {
          "name": "until",
          "type": "string",
          "usage": "Mute duration or timestamp"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-chat-pin",
      "path": "telegram chat pin",
      "name": "pin",
      "short": "Preview or pin a Telegram chat",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram chat pin --help\ntelegram chat pin c1 --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without changing Telegram"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-chat-read",
      "path": "telegram chat read",
      "name": "read",
      "short": "Preview or mark a Telegram chat read",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram chat read --help\ntelegram chat read c1 --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without changing Telegram"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-chat-search",
      "path": "telegram chat search",
      "name": "search",
      "short": "Search Telegram chats",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram chat search\ntelegram chat search --query project",
      "flags": [
        {
          "name": "archived",
          "type": "bool",
          "usage": "Only archived chats"
        },
        {
          "name": "folder",
          "type": "string",
          "usage": "Telegram folder name or ID"
        },
        {
          "name": "muted",
          "type": "bool",
          "usage": "Only muted chats"
        },
        {
          "name": "pinned",
          "type": "bool",
          "usage": "Only pinned chats"
        },
        {
          "name": "query",
          "type": "string",
          "usage": "Filter chats by title or username"
        },
        {
          "name": "type",
          "type": "string",
          "usage": "Filter chat type"
        },
        {
          "name": "unread",
          "type": "bool",
          "usage": "Only unread chats"
        }
      ]
    },
    {
      "id": "cmd-telegram-chat-unarchive",
      "path": "telegram chat unarchive",
      "name": "unarchive",
      "short": "Preview or unarchive a Telegram chat",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram chat unarchive --help\ntelegram chat unarchive c1 --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without changing Telegram"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-chat-unmute",
      "path": "telegram chat unmute",
      "name": "unmute",
      "short": "Preview or unmute a Telegram chat",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram chat unmute --help\ntelegram chat unmute c1 --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without changing Telegram"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-chat-unpin",
      "path": "telegram chat unpin",
      "name": "unpin",
      "short": "Preview or unpin a Telegram chat",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram chat unpin --help\ntelegram chat unpin c1 --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without changing Telegram"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-chat-unread",
      "path": "telegram chat unread",
      "name": "unread",
      "short": "Preview or mark a Telegram chat unread",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram chat unread --help\ntelegram chat unread c1 --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without changing Telegram"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-config",
      "path": "telegram config",
      "name": "config",
      "short": "Inspect local configuration",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram config --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-config-explain",
      "path": "telegram config explain",
      "name": "explain",
      "short": "Explain resolved configuration",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram config explain --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-contact",
      "path": "telegram contact",
      "name": "contact",
      "short": "Find and inspect Telegram contacts",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram contact --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-contact-get",
      "path": "telegram contact get",
      "name": "get",
      "short": "Inspect a Telegram contact",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram contact get\ntelegram contact get u1",
      "flags": []
    },
    {
      "id": "cmd-telegram-contact-list",
      "path": "telegram contact list",
      "name": "list",
      "short": "List Telegram contacts",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram contact list\ntelegram contact list --limit 20",
      "flags": [
        {
          "name": "query",
          "type": "string",
          "usage": "Filter contacts"
        }
      ]
    },
    {
      "id": "cmd-telegram-contact-search",
      "path": "telegram contact search",
      "name": "search",
      "short": "Search Telegram contacts",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram contact search\ntelegram contact search --query alex",
      "flags": [
        {
          "name": "query",
          "type": "string",
          "usage": "Search text"
        }
      ]
    },
    {
      "id": "cmd-telegram-doctor",
      "path": "telegram doctor",
      "name": "doctor",
      "short": "Run diagnostics",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram doctor --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-mcp",
      "path": "telegram mcp",
      "name": "mcp",
      "short": "Run the MCP server",
      "long": "Run a stdio Model Context Protocol server for this adapter.\n\nThe server exposes read-only resource commands by default. Mutating commands are listed only when explicitly allowed with --allow and remain gated by the command contract safety class.",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "mcp\nmcp --print-config",
      "flags": [
        {
          "name": "allow",
          "type": "stringArray",
          "default": "[]",
          "usage": "Allow mutating command keys such as gmail.message.archive or gmail.message.label.*"
        },
        {
          "name": "allow-dangerous",
          "type": "bool",
          "usage": "Allow --allow wildcards to include destructive or sends_external commands"
        },
        {
          "name": "concurrency",
          "type": "int",
          "usage": "Maximum concurrent MCP subprocesses"
        },
        {
          "name": "max-output",
          "type": "int64",
          "default": "0",
          "usage": "Maximum stdout/stderr bytes captured per MCP command"
        },
        {
          "name": "print-config",
          "type": "bool",
          "usage": "Print MCP tool configuration and exit"
        },
        {
          "name": "timeout",
          "type": "duration",
          "default": "0s",
          "usage": "Per-command MCP subprocess timeout, for example 45s or 2m"
        }
      ]
    },
    {
      "id": "cmd-telegram-media",
      "path": "telegram media",
      "name": "media",
      "short": "Find, inspect, and download Telegram media",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram media --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-media-download",
      "path": "telegram media download",
      "name": "download",
      "short": "Download Telegram media to a path",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram media download --help\ntelegram media download f1 --output ./file.bin",
      "flags": [
        {
          "name": "output",
          "type": "string",
          "usage": "Output path"
        },
        {
          "name": "overwrite",
          "type": "bool",
          "usage": "Overwrite an existing output path"
        }
      ]
    },
    {
      "id": "cmd-telegram-media-get",
      "path": "telegram media get",
      "name": "get",
      "short": "Inspect Telegram media",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram media get\ntelegram media get f1 --view full",
      "flags": []
    },
    {
      "id": "cmd-telegram-media-list",
      "path": "telegram media list",
      "name": "list",
      "short": "List Telegram media in a chat",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram media list\ntelegram media list --chat c1 --limit 20",
      "flags": [
        {
          "name": "chat",
          "type": "string",
          "usage": "Chat selector"
        },
        {
          "name": "type",
          "type": "string",
          "usage": "Media type filter"
        }
      ]
    },
    {
      "id": "cmd-telegram-message",
      "path": "telegram message",
      "name": "message",
      "short": "Find, inspect, and send Telegram messages",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram message --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-message-delete",
      "path": "telegram message delete",
      "name": "delete",
      "short": "Preview or delete a Telegram message",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram message delete --help\ntelegram message delete m1 --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without changing Telegram"
        },
        {
          "name": "for-everyone",
          "type": "bool",
          "usage": "Delete for everyone when Telegram permits it"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-message-forward",
      "path": "telegram message forward",
      "name": "forward",
      "short": "Preview or forward a Telegram message",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram message forward --help\ntelegram message forward m1 --to c2 --dry-run",
      "flags": [
        {
          "name": "chat",
          "type": "string",
          "usage": "Destination chat selector"
        },
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without forwarding"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-message-get",
      "path": "telegram message get",
      "name": "get",
      "short": "Inspect a Telegram message",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram message get\ntelegram message get m1 --view full",
      "flags": []
    },
    {
      "id": "cmd-telegram-message-list",
      "path": "telegram message list",
      "name": "list",
      "short": "List recent Telegram messages in a chat or Saved Messages",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram message list\ntelegram message list --chat c1 --limit 20\ntelegram message list --saved --limit 20",
      "flags": [
        {
          "name": "chat",
          "type": "string",
          "usage": "Chat selector from telegram chat list"
        },
        {
          "name": "from",
          "type": "string",
          "usage": "Sender user selector"
        },
        {
          "name": "query",
          "type": "string",
          "usage": "Filter messages by text"
        },
        {
          "name": "saved",
          "type": "bool",
          "usage": "List Saved Messages"
        },
        {
          "name": "since",
          "type": "string",
          "usage": "Only show messages at or after this time"
        },
        {
          "name": "topic",
          "type": "string",
          "usage": "Forum topic selector"
        },
        {
          "name": "type",
          "type": "string",
          "usage": "Message type filter"
        },
        {
          "name": "until",
          "type": "string",
          "usage": "Only show messages before this time"
        },
        {
          "name": "with-media",
          "type": "bool",
          "usage": "Only show messages with media"
        }
      ]
    },
    {
      "id": "cmd-telegram-message-pin",
      "path": "telegram message pin",
      "name": "pin",
      "short": "Preview or pin a Telegram message",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram message pin --help\ntelegram message pin m1 --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without changing Telegram"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-message-read",
      "path": "telegram message read",
      "name": "read",
      "short": "Preview or mark a Telegram message read",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram message read --help\ntelegram message read m1 --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without changing Telegram"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-message-reply",
      "path": "telegram message reply",
      "name": "reply",
      "short": "Preview or reply to a Telegram message",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram message reply --help\ntelegram message reply m1 --text \"hello\" --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without sending"
        },
        {
          "name": "parse",
          "type": "string",
          "default": "plain",
          "usage": "Parse mode: plain, markdown, or html"
        },
        {
          "name": "text",
          "type": "string",
          "usage": "Text reply to send"
        },
        {
          "name": "text-file",
          "type": "string",
          "usage": "Read reply text from a file"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-message-search",
      "path": "telegram message search",
      "name": "search",
      "short": "Search Telegram messages",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram message search\ntelegram message search --chat c1 --query invoice\ntelegram message search --query invoice",
      "flags": [
        {
          "name": "chat",
          "type": "string",
          "usage": "Optional chat selector from telegram chat list"
        },
        {
          "name": "from",
          "type": "string",
          "usage": "Sender user selector"
        },
        {
          "name": "query",
          "type": "string",
          "usage": "Text to search for"
        },
        {
          "name": "saved",
          "type": "bool",
          "usage": "Search Saved Messages"
        },
        {
          "name": "since",
          "type": "string",
          "usage": "Only show messages at or after this time"
        },
        {
          "name": "topic",
          "type": "string",
          "usage": "Forum topic selector"
        },
        {
          "name": "type",
          "type": "string",
          "usage": "Message type filter"
        },
        {
          "name": "until",
          "type": "string",
          "usage": "Only show messages before this time"
        },
        {
          "name": "with-media",
          "type": "bool",
          "usage": "Only show messages with media"
        }
      ]
    },
    {
      "id": "cmd-telegram-message-send",
      "path": "telegram message send",
      "name": "send",
      "short": "Preview or send a Telegram text message",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram message send --chat c1 --text \"hello\" --dry-run\ntelegram message send --chat c1 --text \"hello\" --yes\ntelegram message send --help",
      "flags": [
        {
          "name": "chat",
          "type": "string",
          "usage": "Destination chat selector from telegram chat list"
        },
        {
          "name": "disable-link-preview",
          "type": "bool",
          "usage": "Disable link preview"
        },
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without sending"
        },
        {
          "name": "parse",
          "type": "string",
          "default": "plain",
          "usage": "Parse mode: plain, markdown, or html"
        },
        {
          "name": "silent",
          "type": "bool",
          "usage": "Send without notification"
        },
        {
          "name": "text",
          "type": "string",
          "usage": "Text message to send"
        },
        {
          "name": "text-file",
          "type": "string",
          "usage": "Read message text from a file"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-message-unpin",
      "path": "telegram message unpin",
      "name": "unpin",
      "short": "Preview or unpin a Telegram message",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram message unpin --help\ntelegram message unpin m1 --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without changing Telegram"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-message-unread",
      "path": "telegram message unread",
      "name": "unread",
      "short": "Preview or mark a Telegram message unread",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram message unread --help\ntelegram message unread m1 --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without changing Telegram"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-profile",
      "path": "telegram profile",
      "name": "profile",
      "short": "Manage provider profiles",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram profile --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-profile-create",
      "path": "telegram profile create",
      "name": "create",
      "short": "Create an unauthenticated provider profile",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram profile create --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-profile-delete",
      "path": "telegram profile delete",
      "name": "delete",
      "short": "Delete a local provider profile",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram profile delete --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-profile-list",
      "path": "telegram profile list",
      "name": "list",
      "short": "List provider profiles",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram profile list --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-profile-rename",
      "path": "telegram profile rename",
      "name": "rename",
      "short": "Rename a local provider profile",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram profile rename --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-profile-use",
      "path": "telegram profile use",
      "name": "use",
      "short": "Set the default provider profile",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram profile use --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-reaction",
      "path": "telegram reaction",
      "name": "reaction",
      "short": "Inspect and change Telegram message reactions",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram reaction --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-reaction-add",
      "path": "telegram reaction add",
      "name": "add",
      "short": "Preview or add a reaction",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram reaction add --help\ntelegram reaction add m1 --emoji \ud83d\udc4d --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without changing Telegram"
        },
        {
          "name": "emoji",
          "type": "string",
          "usage": "Reaction emoji"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-reaction-list",
      "path": "telegram reaction list",
      "name": "list",
      "short": "List reactions on a Telegram message",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram reaction list\ntelegram reaction list m1",
      "flags": []
    },
    {
      "id": "cmd-telegram-reaction-remove",
      "path": "telegram reaction remove",
      "name": "remove",
      "short": "Preview or remove a reaction",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram reaction remove --help\ntelegram reaction remove m1 --emoji \ud83d\udc4d --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without changing Telegram"
        },
        {
          "name": "emoji",
          "type": "string",
          "usage": "Reaction emoji"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-resolve",
      "path": "telegram resolve",
      "name": "resolve",
      "short": "Resolve a local ref, short id, or URL alias",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram resolve --help\ntelegram resolve <ref>",
      "flags": []
    },
    {
      "id": "cmd-telegram-saved",
      "path": "telegram saved",
      "name": "saved",
      "short": "Work with Telegram Saved Messages",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram saved --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-saved-add",
      "path": "telegram saved add",
      "name": "add",
      "short": "Preview or add a Saved Message",
      "long": "",
      "mutates": true,
      "safe_discovery": false,
      "supports_dry_run": true,
      "example": "telegram saved add --help\ntelegram saved add --text \"note\" --dry-run",
      "flags": [
        {
          "name": "dry-run",
          "type": "bool",
          "usage": "Preview without saving"
        },
        {
          "name": "file",
          "type": "string",
          "usage": "File path to save"
        },
        {
          "name": "parse",
          "type": "string",
          "default": "plain",
          "usage": "Parse mode for --text: plain, markdown, or html"
        },
        {
          "name": "text",
          "type": "string",
          "usage": "Text to save"
        },
        {
          "name": "yes",
          "type": "bool",
          "usage": "Confirm destructive operation"
        }
      ]
    },
    {
      "id": "cmd-telegram-saved-list",
      "path": "telegram saved list",
      "name": "list",
      "short": "List Saved Messages",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram saved list\ntelegram saved list --limit 20",
      "flags": [
        {
          "name": "query",
          "type": "string",
          "usage": "Filter Saved Messages"
        },
        {
          "name": "type",
          "type": "string",
          "usage": "Message type filter"
        }
      ]
    },
    {
      "id": "cmd-telegram-saved-search",
      "path": "telegram saved search",
      "name": "search",
      "short": "Search Saved Messages",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram saved search\ntelegram saved search --query token",
      "flags": [
        {
          "name": "query",
          "type": "string",
          "usage": "Search text"
        },
        {
          "name": "type",
          "type": "string",
          "usage": "Message type filter"
        }
      ]
    },
    {
      "id": "cmd-telegram-schema",
      "path": "telegram schema",
      "name": "schema",
      "short": "Emit schema hints",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram schema --help",
      "flags": [
        {
          "name": "in",
          "type": "bool",
          "usage": "Show input schema"
        },
        {
          "name": "input",
          "type": "bool",
          "usage": "Show input schema"
        },
        {
          "name": "out",
          "type": "bool",
          "usage": "Show output schema"
        }
      ]
    },
    {
      "id": "cmd-telegram-topic",
      "path": "telegram topic",
      "name": "topic",
      "short": "Find and inspect Telegram forum topics",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram topic --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-topic-get",
      "path": "telegram topic get",
      "name": "get",
      "short": "Inspect a Telegram forum topic",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram topic get\ntelegram topic get t1",
      "flags": []
    },
    {
      "id": "cmd-telegram-topic-list",
      "path": "telegram topic list",
      "name": "list",
      "short": "List Telegram forum topics",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram topic list\ntelegram topic list --chat c1",
      "flags": [
        {
          "name": "chat",
          "type": "string",
          "usage": "Chat selector"
        }
      ]
    },
    {
      "id": "cmd-telegram-user",
      "path": "telegram user",
      "name": "user",
      "short": "Find and inspect Telegram users",
      "long": "",
      "mutates": false,
      "safe_discovery": false,
      "supports_dry_run": false,
      "example": "telegram user --help",
      "flags": []
    },
    {
      "id": "cmd-telegram-user-get",
      "path": "telegram user get",
      "name": "get",
      "short": "Inspect a known Telegram user",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram user get\ntelegram user get u1",
      "flags": []
    },
    {
      "id": "cmd-telegram-user-search",
      "path": "telegram user search",
      "name": "search",
      "short": "Search known Telegram users",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram user search\ntelegram user search --query alex",
      "flags": [
        {
          "name": "query",
          "type": "string",
          "usage": "Search text"
        }
      ]
    },
    {
      "id": "cmd-telegram-version",
      "path": "telegram version",
      "name": "version",
      "short": "Show version information",
      "long": "",
      "mutates": false,
      "safe_discovery": true,
      "supports_dry_run": false,
      "example": "telegram version --help",
      "flags": []
    }
  ]
}
