← WebMCP Directory

Tool tree

webmcp-unitwatch.mbrush-ltd.workers.dev

Developer ToolsTools verified
Website
Paste a systemctl status blob. Unitwatch parses it, proposes a Restart= drop-in, a TCP watchdog timer, and a rollback — on the page for humans, as WebMCP tools for agents.
Explore capabilities
    parse_systemd_statusAnswer

    Parse a pasted systemctl status or journalctl snippet. Extracts unit name, Active/Loaded state, result (exit-code, start-limit-hit, watchdog), PIDs, drop-ins, and issues. Use this first when the human pasted a blob. Does not contact any host.

    View tool JSON
    {
      "name": "parse_systemd_status",
      "kind": "answer",
      "impl": "imperative",
      "description": "Parse a pasted systemctl status or journalctl snippet. Extracts unit name, Active/Loaded state, result (exit-code, start-limit-hit, watchdog), PIDs, drop-ins, and issues. Use this first when the human pasted a blob. Does not contact any host.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "statusBlob": {
            "type": "string",
            "description": "Raw output of systemctl status UNIT or a journalctl snippet. If omitted, uses the blob currently in the page workspace."
          }
        }
      }
    }
    propose_restart_dropinAction

    Generate a systemd drop-in that sets Restart=, RestartSec=, and StartLimitIntervalSec= for a unit. Default policy is Restart=always, RestartSec=5, StartLimitIntervalSec=0. Updates the files shown on the page. Does not install anything on a host.

    View tool JSON
    {
      "name": "propose_restart_dropin",
      "kind": "act",
      "impl": "imperative",
      "description": "Generate a systemd drop-in that sets Restart=, RestartSec=, and StartLimitIntervalSec= for a unit. Default policy is Restart=always, RestartSec=5, StartLimitIntervalSec=0. Updates the files shown on the page. Does not install anything on a host.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "unit": {
            "type": "string",
            "description": "Unit name, with or without .service. Defaults to the parsed workspace unit."
          },
          "restart": {
            "type": "string",
            "enum": [
              "no",
              "on-success",
              "on-failure",
              "on-abnormal",
              "on-watchdog",
              "on-abort",
              "always"
            ],
            "description": "systemd Restart= policy. Default always."
          },
          "restartSec": {
            "type": "number",
            "description": "RestartSec in seconds. Default 5."
          },
          "startLimitIntervalSec": {
            "type": "number",
            "description": "StartLimitIntervalSec in seconds. Default 0 (disable start limit)."
          },
          "startLimitBurst": {
            "type": "number",
            "description": "StartLimitBurst. Default 0 when interval is 0."
          }
        }
      }
    }
    propose_watchdog_timerAction

    Generate a systemd oneshot service plus timer that checks a TCP port (bash /dev/tcp) and restarts the target unit when the port is closed. Default host 127.0.0.1, port 8080, interval 30s. Updates the files shown on the page. Does not install anything on a host.

    View tool JSON
    {
      "name": "propose_watchdog_timer",
      "kind": "act",
      "impl": "imperative",
      "description": "Generate a systemd oneshot service plus timer that checks a TCP port (bash /dev/tcp) and restarts the target unit when the port is closed. Default host 127.0.0.1, port 8080, interval 30s. Updates the files shown on the page. Does not install anything on a host.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "unit": {
            "type": "string",
            "description": "Target unit to restart when the port is down."
          },
          "host": {
            "type": "string",
            "description": "TCP host to check. Default 127.0.0.1."
          },
          "port": {
            "type": "number",
            "description": "TCP port to check. Default 8080 or guessed from the status blob."
          },
          "intervalSec": {
            "type": "number",
            "description": "Timer interval in seconds. Default 30. Minimum 5."
          }
        },
        "required": []
      }
    }
    propose_rollbackAction

    Generate a root shell script that deletes the Unitwatch restart drop-in and optionally disables/removes the TCP watchdog timer and service, then runs daemon-reload. Does not restart the unit. Updates the files shown on the page.

    View tool JSON
    {
      "name": "propose_rollback",
      "kind": "act",
      "impl": "imperative",
      "description": "Generate a root shell script that deletes the Unitwatch restart drop-in and optionally disables/removes the TCP watchdog timer and service, then runs daemon-reload. Does not restart the unit. Updates the files shown on the page.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "unit": {
            "type": "string",
            "description": "Unit the drop-in belonged to."
          },
          "includeWatchdog": {
            "type": "boolean",
            "description": "Also remove the TCP watchdog units. Default true."
          }
        }
      }
    }
    propose_hardening_planAction

    One-shot: parse the status blob if provided, then generate the restart drop-in, TCP watchdog timer, and rollback script together and show them on the page. Prefer this when the human wants a complete proposal. Does not install anything on a host.

    View tool JSON
    {
      "name": "propose_hardening_plan",
      "kind": "act",
      "impl": "imperative",
      "description": "One-shot: parse the status blob if provided, then generate the restart drop-in, TCP watchdog timer, and rollback script together and show them on the page. Prefer this when the human wants a complete proposal. Does not install anything on a host.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "statusBlob": {
            "type": "string",
            "description": "Optional systemctl status / journal snippet to parse first."
          },
          "unit": {
            "type": "string",
            "description": "Override unit name."
          },
          "restart": {
            "type": "string",
            "description": "Restart= policy. Default always."
          },
          "host": {
            "type": "string",
            "description": "Watchdog host. Default 127.0.0.1."
          },
          "port": {
            "type": "number",
            "description": "Watchdog TCP port."
          },
          "intervalSec": {
            "type": "number",
            "description": "Watchdog interval seconds."
          },
          "restartSec": {
            "type": "number",
            "description": "RestartSec seconds. Default 5."
          }
        }
      }
    }
    get_workspaceAnswer

    Read the current Unitwatch page workspace: pasted blob, unit name, Restart= policy, watchdog host/port, parsed diagnosis, and the files currently shown to the human. Call this to see what the person already entered before generating files.

    View tool JSON
    {
      "name": "get_workspace",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read the current Unitwatch page workspace: pasted blob, unit name, Restart= policy, watchdog host/port, parsed diagnosis, and the files currently shown to the human. Call this to see what the person already entered before generating files.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      }
    }