Tool tree
gradeNot graded
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": {}
}
}