CLI & MCP Security Scanner for AI Agents - Detects CVEs, malware & supply chain attacks in React/Next.js/npm projects. Integrates with Claude, Copilot, Gemini.
The Shellockolm server has 8 tools with mixed definition quality. Naming is generally clear and verb-based (find_, quick_scan, scan_, analyze_, patch_, verify_, generate_), but there are critical issues: (1) duplicate tool names ('scan_directory' appears twice with different descriptions), creating severe ambiguity; (2) descriptions vary wildly in quality, some are detailed (find_packages at 127 chars with use-case guidance), others are generic (analyze_project at 75 chars); (3) input schemas are visible and properly typed with JSON Schema, which is good, but descriptions within schemas sometimes lack specificity about constraints (e.g., max_depth defaults to 3 but no rationale); (4) no output schemas are documented, tools like quick_scan and scan_directory return results but the response structure is not declared, forcing LLMs to guess what fields exist; (5) tool annotations are completely absent (no readOnlyHint, destructiveHint, idempotentHint despite clear risk classification); (6) error handling guidance is not visible in any tool description; (7) patch_project has a dry_run parameter (good pattern), but the description doesn't explain what to do if dry_run=true fails or succeeds; (8) generate_report accepts output_path as optional but no guidance on what format is produced or where it goes if omitted. The server shows structural competence (proper schemas, mostly sensible parameters) but lacks the polish and detail needed for robust agent use.
Analyze a specific project for CVE-2025-55182 & CVE-2025-66478 vulnerability details
FAST: Find npm packages (package.json files) in a directory. By default excludes node_modules (40x faster). Returns list in ~0.1 seconds. Use this when user asks to 'find' or 'list' packages.
Generate a comprehensive vulnerability report
Apply security patches to a vulnerable project
MEDIUM SPEED: Quick CVE scan of npm packages (2-3 minutes). Only checks package.json/lock files against CVE database. Skips deep file analysis, malware detection, and secrets scanning. Use when user wants fast vulnerability check.
Scan a directory for vulnerable React projects affected by CVE-2025-55182 & CVE-2025-66478
Duplicate tool name: 'scan_directory' defined twice with conflicting descriptions (one deep/thorough, one React-specific CVE check). LLMs cannot disambiguate and will select unpredictably.
No output schemas documented for any tool. LLMs cannot infer response structure. Tools like 'quick_scan' and 'scan_directory' return results but what fields? Do they return JSON objects, arrays, counts, file paths? Without documented schemas, agents cannot reliably chain calls or extract data.
No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk classifications. patch_project and generate_report are marked WRITE but have no destructiveHint annotation. find_packages, quick_scan, analyze_project, verify_fix are READ_ONLY but have no readOnlyHint. Agents need explicit hints to plan safely.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 55 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 0 | - | v1 |
SLOW BUT THOROUGH: Deep security scan (10+ minutes for large codebases). Scans for CVEs, malware, secrets, obfuscation, backdoors. Use only when user explicitly asks for 'deep scan', 'full scan', or 'complete security audit'.
Verify that a patch was successfully applied
Parameter descriptions lack specificity on constraints and formats. E.g., 'path' parameter appears in 6 tools but descriptions never specify: Is it absolute or relative? Does it accept ~/ expansion? What if path doesn't exist, error or create? max_depth defaults to 3 with no explanation of why or what happens at boundary. LLMs need explicit constraints.
patch_project has dry_run and backup flags but descriptions don't explain interaction: If dry_run=true, are backup files still created? What is returned, a diff, a summary, or nothing? If backup=true but the backup fails, does patching abort or proceed? Undocumented dependencies cause silent misuse.
No error handling guidance in any tool description. Tools like 'scan_directory' that run 10+ minutes have no timeout or progress description. If a deep scan hangs or fails, what should the agent do? Retry? Cancel? No guidance.
generic descriptions on 'analyze_project' (75 chars) and 'verify_fix' (45 chars). They state WHAT but not WHEN or WHY to call them vs alternatives. Should analyze_project be called before patch_project? After scan_directory? LLMs cannot reason about sequencing without explicit guidance.
generate_report accepts optional output_path but description is silent on default behavior: If omitted, where does the report go? stdout? /tmp/? A temp file in current dir? Format, JSON, HTML, markdown, plaintext? Agents cannot make informed decisions without this.