swag — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited swag (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
MCP mode (preferred): Use when mcp__swag-mcp__swag tool is available. The server manages nginx proxy configuration files directly (local or remote via SSH).
HTTP fallback: No meaningful curl equivalent — SWAG config management requires direct filesystem access. If MCP server is unavailable, surface the issue to the user and suggest restarting it.
MCP URL: ${user_config.swag_mcp_url}
Single tool: mcp__swag-mcp__swag with an action parameter.
mcp__swag-mcp__swag
action: "list"Returns all proxy configurations with their status (enabled/disabled).
mcp__swag-mcp__swag
action: "create"
server_name: (required) Service name, e.g. "jellyfin", "sonarr"
type: (required) "subdomain" or "subfolder"
upstream_url: (required) Backend URL, e.g. "http://192.168.1.10:8096"
auth_method: (optional) "authelia", "authentik", "basic", "none" — default from server config
enable_quic: (optional) true/falsemcp__swag-mcp__swag
action: "view"
server_name: (required) Service namemcp__swag-mcp__swag
action: "edit"
server_name: (required) Service name
changes: (required) Description of changes to applymcp__swag-mcp__swag
action: "update"
server_name: (required) Service name
upstream_url: (required) New backend URLmcp__swag-mcp__swag
action: "remove"
server_name: (required) Service nameDESTRUCTIVE — removes the nginx config file. Always confirm with user before executing.
mcp__swag-mcp__swag
action: "logs"
log_type: (optional) "access", "error", "fail2ban", "letsencrypt" — default "error"mcp__swag-mcp__swag
action: "backups"Lists available configuration backups.
mcp__swag-mcp__swag
action: "health_check"
server_name: (optional) Check specific service — omit for allProbes whether proxied services are accessible.
action: "list" — confirm no existing config for the serviceaction: "create" — create the config with upstream URL and auth methodaction: "health_check" — verify the service is accessibleaction: "view" — confirm current configaction: "update" — set new upstream URLaction: "health_check" — verifyaction: "health_check" — check what's failingaction: "logs" — review error/access logsAlways confirm before:
action: "remove" — permanently deletes the proxy configaction: "edit" — modifies existing config (non-reversible without backup)The server manages configs at the path configured via SWAG_MCP_PROXY_CONFS_PATH or the SSH URI in SWAG_MCP_PROXY_CONFS_URI. Plugin userConfig is projected through swag setup repair into ~/.swag-mcp/.env; existing local secrets are preserved unless a replacement option is supplied.
subdomain configs require a wildcard DNS entry or per-subdomain record pointing to SWAGsubfolder configs proxy via path prefix (e.g. https://domain.com/sonarr/)authelia and authentik require those services to be running and configured~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.