Skip to main content
Glama
Jambozx

OnlineCyberTools MCP (280+ filterable tools)

by Jambozx

linux_user_group_manager

Read-onlyIdempotent

Build Linux and FreeBSD user/group administration commands from structured input, parse /etc/passwd and /etc/group files, and audit for security issues like UID 0 imposters, duplicates, and orphan groups.

Instructions

Linux User and Group Manager Command Builder. Build Linux (and FreeBSD) user/group administration command lines from a structured form, parse pasted /etc/passwd and /etc/group text, and audit that parsed state for problems such as UID 0 imposters, duplicate UIDs/GIDs, orphan primary groups, and system accounts with login shells. The generate action emits useradd / usermod / userdel / groupadd / groupmod / groupdel / chage / passwd / chpasswd (or pw on FreeBSD) command text with per-command explanations and safety warnings; use linux_command_builder instead when you need general find/grep/rsync/tar/ssh commands rather than account management. BUILDS command text only - it never executes any command and never touches the local system. Runs locally on the input you provide (read-only, non-destructive, contacts no external service) and is rate-limited (30 requests/minute for anonymous callers). Returns generated commands plus warnings and an explanation, or parsed user/group rows, or audit findings, or curated pr

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
actionNoWhich operation to run. generate builds command lines from input; parsePasswd/parseGroup parse pasted file text; audit cross-checks both files; presets returns the curated input presets.generate
inputNoUsed only when action is generate. The account specification to build commands from.
textNoPasted /etc/passwd (action parsePasswd) or /etc/group (action parseGroup) content, one record per colon-separated line.
passwdNo/etc/passwd content for the audit action.
groupNo/etc/group content for the audit action.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
successNoWhether the request succeeded.
actionNoThe action that was executed.
resultNoAction-specific payload. generate returns commands/warnings/explanation; parsePasswd returns users; parseGroup returns groups; audit returns findings; presets returns presets.

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed11 schema fields changedv0.5.1
    • addedInput schema / additionalProperties
      Added value: +false
    • addedInput schema / properties / action
      Added value: +{
      +  "default": "generate",
      +  "description": "Which operation to run. generate builds command lines from input; parsePasswd/parseGroup parse pasted file text; audit cross-checks both files; presets returns the curated input presets.",
      +  "enum": [
      +    "generate",
      +    "parsePasswd",
      +    "parseGroup",
      +    "audit",
      +    "presets"
      +  ],
      +  "type": "string"
      +}
    • removedInput schema / properties / distro
      Removed value: -{
      -  "type": "string"
      -}
    • addedInput schema / properties / group
      Added value: +{
      +  "description": "/etc/group content for the audit action.",
      +  "type": "string"
      +}
    • addedInput schema / properties / input
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Used only when action is generate. The account specification to build commands from.",
      +  "properties": {
      +    "distro": {
      +      "default": "debian",
      +      "description": "Target OS family. freebsd emits pw(8) commands; the others emit the standard shadow-utils commands. Unknown values fall back to debian.",
      +      "enum": [
      +        "debian",
      +        "rhel",
      +        "arch",
      +        "alpine",
      +        "freebsd"
      +      ],
      +      "type": "string"
      +    },
      +    "group": {
      +      "additionalProperties": false,
      +      "description": "Group fields (used by the group-oriented operations).",
      +      "properties": {
      +        "gid": {
      +          "description": "Numeric GID passed to -g. Values below 1000 trigger a system-group warning.",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "members": {
      +          "description": "Initial member usernames (each gets a usermod -aG follow-up on Linux). Accepts an array or comma-separated string.",
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "name": {
      +          "description": "Group name. Validated against the same POSIX pattern as usernames.",
      +          "type": "string"
      +        },
      +        "systemAccount": {
      +          "default": false,
      +          "description": "Add -r to groupadd to allocate a system-range GID.",
      +          "type": "boolean"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "operation": {
      +      "description": "The account task to generate commands for. Required for the generate action.",
      +      "enum": [
      +        "create-user",
      +        "modify-user",
      +        "delete-user",
      +        "create-group",
      +        "modify-group",
      +        "delete-group",
      +        "set-password",
      +        "lock-user",
      +        "unlock-user"
      +      ],
      +      "type": "string"
      +    },
      +    "password": {
      +      "description": "Optional cleartext password for set-password / create-user; piped via chpasswd (or pw -h 0). A warning is always added about command-line password exposure.",
      +      "type": "string"
      +    },
      +    "user": {
      +      "additionalProperties": false,
      +      "description": "User account fields (used by the user-oriented operations).",
      +      "properties": {
      +        "comment": {
      +          "description": "GECOS / full-name comment passed to -c.",
      +          "type": "string"
      +        },
      +        "createHome": {
      +          "default": true,
      +          "description": "Add -m to create the home directory on create-user (ignored for system accounts).",
      +          "type": "boolean"
      +        },
      +        "expiry": {
      +          "description": "Account expiry date passed to -e (YYYY-MM-DD).",
      +          "type": "string"
      +        },
      +        "gid": {
      +          "description": "Primary group ID or name passed to -g.",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "home": {
      +          "description": "Home directory path passed to -d.",
      +          "type": "string"
      +        },
      +        "name": {
      +          "description": "Login name. Validated against the POSIX pattern (lowercase letter or underscore first, then lowercase letters/digits/underscores/hyphens, max 32 chars).",
      +          "type": "string"
      +        },
      +        "passwordExpireDays": {
      +          "description": "Maximum password age in days; emits a follow-up chage -M command.",
      +          "minimum": 0,
      +          "type": "integer"
      +        },
      +        "removeHome": {
      +          "default": false,
      +          "description": "Add -r to userdel so delete-user also removes the home directory and mail spool.",
      +          "type": "boolean"
      +        },
      +        "shell": {
      +          "description": "Login shell passed to -s. Shells outside the common /etc/shells set raise a warning.",
      +          "type": "string"
      +        },
      +        "supplementaryGroups": {
      +          "description": "Supplementary groups for -G (append via -aG on modify). Accepts an array of names or a comma-separated string.",
      +          "items": {
      +            "type": "string"
      +          },
      +          "type": "array"
      +        },
      +        "systemAccount": {
      +          "default": false,
      +          "description": "Add -r to allocate a system-range UID/GID with no home/ageing.",
      +          "type": "boolean"
      +        },
      +        "uid": {
      +          "description": "Numeric UID. Values below 1000 trigger a system-account warning; 0 triggers a root-imposter warning.",
      +          "minimum": 0,
      +          "type": "integer"
      +        }
      +      },
      +      "type": "object"
      +    }
      +  },
      +  "type": "object"
      +}
    • removedInput schema / properties / operation
      Removed value: -{
      -  "type": "string"
      -}
    • addedInput schema / properties / passwd
      Added value: +{
      +  "description": "/etc/passwd content for the audit action.",
      +  "type": "string"
      +}
    • addedInput schema / properties / text
      Added value: +{
      +  "description": "Pasted /etc/passwd (action parsePasswd) or /etc/group (action parseGroup) content, one record per colon-separated line.",
      +  "type": "string"
      +}
    • removedInput schema / properties / user
      Removed value: -{
      -  "properties": {
      -    "comment": {
      -      "type": "string"
      -    },
      -    "createHome": {
      -      "type": "boolean"
      -    },
      -    "name": {
      -      "type": "string"
      -    },
      -    "shell": {
      -      "type": "string"
      -    },
      -    "supplementaryGroups": {
      -      "items": {
      -        "type": "string"
      -      },
      -      "type": "array"
      -    }
      -  },
      -  "required": [
      -    "name",
      -    "shell",
      -    "supplementaryGroups",
      -    "createHome",
      -    "comment"
      -  ],
      -  "type": "object"
      -}
    • removedInput schema / required
      Removed value: -[
      -  "operation",
      -  "distro",
      -  "user"
      -]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "action": {
      +      "description": "The action that was executed.",
      +      "type": "string"
      +    },
      +    "result": {
      +      "description": "Action-specific payload. generate returns commands/warnings/explanation; parsePasswd returns users; parseGroup returns groups; audit returns findings; presets returns presets.",
      +      "properties": {
      +        "commands": {
      +          "description": "Generated command lines (generate action).",
      +          "items": {
      +            "properties": {
      +              "command": {
      +                "description": "The shell command text to run manually.",
      +                "type": "string"
      +              },
      +              "explanation": {
      +                "description": "What the command does and which files it touches.",
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "explanation": {
      +          "description": "Overall explanation notes for the generate result.",
      +          "type": "string"
      +        },
      +        "findings": {
      +          "description": "Audit findings (audit action).",
      +          "items": {
      +            "properties": {
      +              "issue": {
      +                "description": "The detected problem.",
      +                "type": "string"
      +              },
      +              "severity": {
      +                "description": "Severity of the finding.",
      +                "enum": [
      +                  "info",
      +                  "warning",
      +                  "critical"
      +                ],
      +                "type": "string"
      +              },
      +              "suggestion": {
      +                "description": "How to remediate it.",
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "groups": {
      +          "description": "Parsed /etc/group rows (parseGroup action).",
      +          "items": {
      +            "properties": {
      +              "gid": {
      +                "description": "Group ID.",
      +                "type": "integer"
      +              },
      +              "members": {
      +                "description": "Supplementary member usernames.",
      +                "items": {
      +                  "description": "A member username.",
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "name": {
      +                "description": "Group name.",
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "presets": {
      +          "description": "Curated input presets (presets action).",
      +          "items": {
      +            "properties": {
      +              "description": {
      +                "description": "What the preset does.",
      +                "type": "string"
      +              },
      +              "id": {
      +                "description": "Preset identifier.",
      +                "type": "string"
      +              },
      +              "input": {
      +                "description": "The generate input the preset fills in.",
      +                "type": "object"
      +              },
      +              "name": {
      +                "description": "Human-readable preset name.",
      +                "type": "string"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "users": {
      +          "description": "Parsed /etc/passwd rows (parsePasswd action).",
      +          "items": {
      +            "properties": {
      +              "gecos": {
      +                "description": "GECOS comment field.",
      +                "type": "string"
      +              },
      +              "gid": {
      +                "description": "Primary group ID.",
      +                "type": "integer"
      +              },
      +              "home": {
      +                "description": "Home directory.",
      +                "type": "string"
      +              },
      +              "name": {
      +                "description": "Login name.",
      +                "type": "string"
      +              },
      +              "shell": {
      +                "description": "Login shell.",
      +                "type": "string"
      +              },
      +              "uid": {
      +                "description": "User ID.",
      +                "type": "integer"
      +              }
      +            },
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "warnings": {
      +          "description": "Safety warnings for the generated commands.",
      +          "items": {
      +            "description": "A single warning message.",
      +            "type": "string"
      +          },
      +          "type": "array"
      +        }
      +      },
      +      "type": "object"
      +    },
      +    "success": {
      +      "description": "Whether the request succeeded.",
      +      "type": "boolean"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observedv0.1.0

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint, destructiveHint, idempotentHint, openWorldHint. Description adds that it never executes commands, is read-only, non-destructive, and rate-limited. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured and front-loaded, but slightly verbose and has a cut-off trailing phrase. Could be more concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers overall functionality, safety, and return types (though cut off). Given complexity and presence of output schema, description is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. Description provides high-level context but doesn't add meaning beyond schema for individual parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool builds Linux/FreeBSD user/group admin command lines, parses /etc/passwd and /etc/group, and audits for problems. It distinguishes from sibling linux_command_builder by specifying it is for account management only.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use linux_command_builder instead for general commands. Also mentions rate limits. Lacks explicit when-not-to-use beyond sibling differentiation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Jambozx/onlinecybertools-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server