guardvibe
GuardVibe is a security MCP server that scans AI-written code for vulnerabilities, secrets, CVEs, and misconfigurations — 100% locally, with 39 tools spanning the whole coding lifecycle.
Scan code —
check_code,scan_file,scan_directory,check_project,scan_staged,scan_changed_files(with JSON/SARIF/agent output and A–F scores)Audit everything —
full_auditruns code, secrets, deps, config, taint, and auth coverage in one PASS/FAIL call;remediation_plan+verify_remediationclose the loopFix issues —
fix_code,secure_this(applies only verified fixes),verify_fix,explain_remediationDetect secrets —
scan_secretsandscan_secrets_history(active and removed secrets in git)Check dependencies —
check_dependencies,scan_dependencies(OSV),check_package_health,scan_hallucinated_packages(slopsquat/phantom imports)Analyze dataflow —
analyze_dataflowandanalyze_cross_file_dataflowfor cross-module taintMap auth & posture —
auth_coverage,repo_security_postureCompliance —
compliance_report(SOC2, PCI-DSS, HIPAA, GDPR, ISO27001, EUAIACT),policy_checkConfig & CI —
audit_config,scan_config_change,generate_policy,export_sarif,review_prAI host security —
guardvibe_doctor,audit_mcp_config,scan_host_config(MCP hooks, base-URL hijack CVEs)Prompt-level shift-left —
secure_promptanalyzes a coding prompt before code is writtenCommand safety —
check_commandreturns allow/ask/deny with blast radiusGuidance & stats —
get_security_docs,security_workflow,security_statsOptional LLM deep scan —
deep_scanfor IDOR, business logic, race conditions, auth bypass
Provides security analysis for Clerk authentication, including auth coverage and secure configuration detection.
Provides security analysis for Drizzle ORM, including SQL injection detection and CVE version detection.
Provides security analysis for Express.js applications, including vulnerability scanning and best practices.
Provides security analysis for FastAPI applications, including vulnerability detection and secure coding patterns.
Integrates with GitHub Actions for CI/CD security scanning, including SARIF report generation and PR review annotations.
Provides security analysis for Hono applications, including CVE version detection and secure configuration.
Provides security analysis and remediation for Next.js applications, including auth coverage, config audit, and vulnerability scanning for App Router and Pages Router.
Integrates with pre-commit hooks to block insecure code before it reaches the repository.
Provides security analysis for Prisma ORM, including SQL injection detection and secure query patterns.
Provides security analysis for React applications, including XSS prevention and secure coding patterns.
Provides security analysis for Stripe integrations, including webhook signature verification, secrets detection, and secure coding patterns.
Provides security analysis for Supabase projects, including RLS policy generation, auth detection, and secret scanning.
Provides security analysis for tRPC applications, including vulnerability detection and CVE version intelligence.
GuardVibe
Security infrastructure your AI can't be. No matter how good your coding agent gets, it can't know the CVE published after its training cutoff, it can't deterministically guarantee the same check every run, it can't hold your whole repo in context, and it can't objectively review its own code. GuardVibe does all four — the deterministic, post-cutoff-current, whole-repo, author-independent verification layer for AI-written code.
🗓️ Knows what your AI doesn't. CVE rules refreshed daily from GHSA / OSV.dev / CISA KEV — GuardVibe flags vulnerable dependencies published after your model's training cutoff. (254 CVE rules,
npm run inteldaily triage.)🎯 Deterministic, not probabilistic. Same code = same result, every run (content-hashed). Your AI guesses; GuardVibe doesn't.
🗺️ Sees the whole repo. Cross-file taint + auth-coverage across every route — catches the unprotected endpoint your agent's narrow context missed.
🔍 An independent second pair of eyes. The thing that wrote the code can't review itself. GuardVibe is the outside checker on AI-written code — in the loop while your AI codes (real-time edit hook), not after.
⬅️ NEW: Starts before the first line of code. Every scanner on earth — including your agent reviewing itself — acts after the code exists.
secure_promptacts before: it analyzes the coding prompt itself, detects the stack and attack surfaces it implies, and embeds severity-ranked GuardVibe requirements into the prompt your AI executes. The vulnerability is prevented, not caught. Deterministic, zero LLM calls — and if the prompt is already secure, it passes through untouched.
The security MCP built for vibe coding. 629 security rules, 39 tools covering the entire AI-generated code journey — from the prompt itself to production deployment.
Works with Claude Code, Cursor, Gemini CLI, Codex, VS Code (Copilot), Windsurf, and any MCP-compatible coding agent.
Why a tool, when your AI is so good?
"More rules" was never the moat — a strong model already knows most security rules by heart. What it can't do is be deterministic, know the CVE published after its training cutoff, hold your whole repo in context, or objectively review the code it just wrote. Those four gaps are structural; they don't close as models improve. GuardVibe is the layer that fills them — running while your AI codes, not in a separate audit later. And since v3.19, it runs before your AI codes too: secure_prompt rewrites the task itself so the security requirements are in the prompt, not in the post-mortem.
Related MCP server: supership-scan
Why GuardVibe
Most security tools are built for enterprise security teams. GuardVibe is built for you — the developer using AI to build and ship web apps fast.
629 security rules, 39 tools purpose-built for the stacks AI agents generate
Zero setup friction —
npx guardvibeand you're scanningNo account required — runs 100% locally, no API keys, no cloud
Understands your stack — not generic SAST, but rules that know Next.js, Supabase, Stripe, Clerk, and the tools you actually use
CVE version intelligence — detects 254 known vulnerable package versions in package.json, refreshed every day from GHSA / OSV.dev / CISA KEV
AI agent & MCP security — detects MCP server vulnerabilities, tool-description prompt injection (OWASP MCP Top 10), model-controlled sandbox-disable flags, excessive AI permissions, indirect prompt injection
Auto-fix suggestions —
fix_codetool returns concrete patches and structured edits the AI agent can apply mechanically. Coverage: hardcoded credentials → env-var migration; public-prefix LLM keys (NEXT_PUBLIC_/VITE_/EXPO_PUBLIC_/REACT_APP_) → prefix removal; CORS wildcards → env allowlist;dangerouslyAllowBrowserflags → drop; sandbox bypass flags (unsafe/noSandbox/allowEval) → drop; agent loops → addmaxSteps; raw-HTML React props →<ReactMarkdown>; missing auth checks → insert auth guard; SQL injection → parameterized queries; missing rate limiters / CSRF / security headers → snippet templates.Pre-commit hook — block insecure code before it reaches your repo
CI/CD ready — GitHub Actions workflow with SARIF upload to Security tab
Agent-friendly output — JSON format for AI agents, Markdown for humans, SARIF for CI/CD
Plugin system — extend with community or premium rule packs
New in v3.67.x
git-diff, happy-dom, postal-mime, Electron and undici gaps closed — v3.67.0 adds
VG1274the git-diff OS command injection through gitDiff() below 2.0.7 (CVE-2026-110634),VG1275the happy-dom ESM import-alias and export-name code injection plus iframe / stylesheet SSRF below 21.0.4 (CVE-2026-115895 / CVE-2026-33943 / CVE-2026-118660),VG1276the postal-mime quadratic RFC 2047 decoding DoS (GHSA-f2hq-32vh-53cc),VG1277the Electron compromised eMudhra intermediates residual window (CVE-2026-115570) andVG1278the undici Agent TLS callback drop and TLS 1.2 renegotiation crash residual window on 5.x / 6.11 (CVE-2026-109383 / CVE-2026-87018).
New in v3.66.x
zod, undici, body-parser, multer, GraphQL Tools and MSAL Node gaps closed — v3.66.0 adds
VG1268the zod unbounded array issue accumulation memory exhaustion below 4.6.6 (CVE-2023-54404),VG1269the @graphql-tools/utils mergeIncrementalResult prototype pollution residual pin (CVE-2026-114604),VG1270the undici excessive content-encodings process crash residual window (CVE-2026-109869),VG1271the body-parser trailing-bytes decoder crash (CVE-2026-111181),VG1272the multer pending async fileFilter crash residual window (CVE-2026-113872) andVG1273the @azure/msal-node auth code flow parameter disclosure (CVE-2026-109461). 249 CVE version-pin rules.
New in v3.65.x
Next.js, DOMPurify, Sentry and toml gaps closed — v3.65.0 adds
VG1263the Next.js residual window for the Image Optimization RCE, theuse cachetyped-array RCE and the Server Actions DoS (GHSA-2464-fhr4-w9xw, GHSA-673q-mjm6-r5xr, CVE-2026-94482),VG1264andVG1265the DOMPurify SAFE_FOR_TEMPLATES shadow-root bypass and IN_PLACE hook-detached subtree XSS (GHSA-cg2g-xh64-v4q7, GHSA-mrv2-3pqr-j5jr),VG1266the @sentry/nextjs middleware bypass under the tunnel route (CVE-2026-114139) andVG1267the toml quadratic and unbounded-integer DoS cluster (CVE-2026-114141 / 114143 / 114144). 243 CVE version-pin rules.
New in v3.64.x
Storybook and ApostropheCMS gaps closed — v3.64.0 adds
VG1261the Storybook dev-server code injection from a malicious website via missing origin validation (CVE-2026-114125, critical) across storybook 8.x–10.x and the @storybook/core, core-server, experimental-addon-test, addon-vitest and addon-mcp packages, andVG1262the ApostropheCMS denial-of-service cluster — pre-auth import uploads, leaked CSV temp files and prototype-member deletion (CVE-2026-113711 / 113658 / 113666). 238 CVE version-pin rules.
New in v3.63.x
MCP SDK, follow-redirects, markdown-it, Vite and Angular router gaps closed — v3.63.0 adds
VG1256the MCP TypeScript SDK HTTP-server memory exhaustion, cross-session task access and cross-client message delivery (CVE-2026-111768 / 111767 / 111770),VG1257the follow-redirects credential-header leak on cross-origin redirects (CVE-2026-111756 / 111755),VG1258the markdown-it quadratic-time rendering DoS pair (CVE-2026-111758 / 111759),VG1259the Vite / launch-editor dev-server command injection on Windows (CVE-2026-112942 / 112943) andVG1260the Angular router SSR DoS pair (CVE-2026-111751 / 111752). 236 CVE version-pin rules.
New in v3.62.x
Qwik and TinaCMS CLI gaps closed — v3.62.0 adds
VG1254the Qwik server crash from a single unauthenticated request carrying a resource thenable in the qwik-json body (CVE-2026-84994) andVG1255the TinaCMS CLI code injection through an unescaped Git branch name in the generated client (CVE-2026-108259). 231 CVE version-pin rules.
New in v3.61.x
TinaCMS, JHipster, PraisonAI, Actual and Backstage gaps closed — v3.61.0 adds
VG1249the Backstage Sentry Scaffolder actions SSRF and integration token disclosure (CVE-2026-106459),VG1250the Actual Sync Server CORS proxy GitHub allowlist prefix bypass that leaks private repositories (CVE-2026-57449),VG1251the JHipster generated-app reactivesortSQL injection and Blob ContentType stored XSS across generator-jhipster and react-jhipster (CVE-2026-107375, CVE-2026-107303),VG1252the PraisonAI AgentOS unauthenticated network-exposed default (CVE-2026-61426) andVG1253the TinaCMS admin preview iframe origin takeover of the content API across tinacms and @tinacms/app (CVE-2026-108261, critical). 229 CVE version-pin rules.
New in v3.60.x
TanStack Start, OpenNext Cloudflare, Claude Code, Ghost and Backstage gaps closed — v3.60.0 adds
VG1244the TanStack Start unauthenticated reflected XSS through server-function responses across start-server-core, react-start, solid-start and vue-start (CVE-2026-102989),VG1245the OpenNext Cloudflare cache interception middleware bypass via percent-encoded paths (CVE-2026-100409),VG1246the Claude Code plugin hash pin bypass for 2.1.64–2.1.178 (CVE-2026-86063),VG1247the Ghost cluster of eight advisories fixed in 6.67.0 (bookmark card and theme translation RCE, stored XSS, invite token disclosure) andVG1248the Backstage confluence-to-markdown Scaffolder action path traversal (CVE-2026-106560). 224 CVE version-pin rules.
New in v3.59.x
Template engine, shell quoting, Backstage and confidential contract gaps closed — v3.59.0 adds
VG1239the Handlebars own-property prototype check bypass on the end-of-life 3.x line (CVE-2026-106445),VG1240the shell-quote quote() newline-in-operator command injection for 1.1.0–1.8.3 (CVE-2026-9277),VG1241the Backstage Scaffolder task state validation residual window (CVE-2026-106500),VG1242the OpenZeppelin Confidential Contracts encrypted handle disclosure (GHSA-29h2-jr22-frmh) andVG1243the Backstage Bitbucket pull-request action path validation bypass (CVE-2026-106486). 219 CVE version-pin rules.
New in v3.58.x
CMS, document viewer, wallet and AI workflow gaps closed — v3.58.0 adds
VG1234the TinaCMS self-hosted auth bypass that accepts tokens from any TinaCloud app (CVE-2026-63506),VG1235the File Viewer legacy DOC renderer DOM XSS (CVE-2026-91127),VG1236the BSV wallet toolbox unchecked storage-supplied output scripts (CVE-2026-56744),VG1237the Flowise Python validator bypass and NodeVM puppeteer sandbox escape (CVE-2026-73487, CVE-2026-73483) andVG1238the Backstage OIDC provider unverified-email sign-in (CVE-2026-106488). 214 CVE version-pin rules.
New in v3.57.x
JWT, database driver and MessagePack gaps closed — v3.57.0 adds
VG1229the fast-jwt algorithm confusion, unsigned token acceptance and claim-validator bypass cluster (CVE-2026-107722, CVE-2026-107720, CVE-2026-107723, CVE-2026-107724),VG1230the mariadb connector SQL injection and memory disclosure residual window (CVE-2026-107385, CVE-2026-107384, CVE-2026-107383),VG1231the msgpack5 streaming decoder stack exhaustion and truncated map32 crash (CVE-2026-107300, CVE-2026-107302),VG1232the Vendure Admin Dashboard stored XSS (CVE-2026-63459) andVG1233the libp2p gossipsub StrictSign peer impersonation (CVE-2026-86038). 209 CVE version-pin rules.
New in v3.56.x
Backstage and Handlebars gaps closed — v3.56.0 adds
VG1224the Backstage Scaffolder task data exposure and action input authorization bypass (CVE-2026-106501, CVE-2026-106503),VG1225the Backstage TechDocs mkdocs.yml code execution and SSRF cluster (CVE-2026-106558, CVE-2026-106510, CVE-2026-106455 and three more),VG1226the Backstage backend-defaults service credential restriction bypass (CVE-2026-106492),VG1227the Backstage catalog placeholder resolution SSRF (CVE-2026-106498) andVG1228the Handlebars JavaScript injection via AST type confusion and own-property prototype check bypass (CVE-2026-106446, CVE-2026-106445). 204 CVE version-pin rules.
New in v3.55.x
Payload CMS, Quasar, Next.js and sharp gaps closed — v3.55.0 adds
VG1219the Payload core cluster fixed in 3.90.0 (unauthorized document updates, auth-collection field access bypass, SQL injection, first-register RCE and upload issues — CVE-2026-105859, CVE-2026-105845 and twelve more),VG1220Payload plugins and database adapters (form builder RCE CVE-2026-105857, import/export prototype pollution CVE-2026-105844, SQLite/Postgres SQL injection CVE-2026-105856, MCP API key, multi-tenant, S3, MongoDB and ecommerce issues),VG1221the Quasar SSR meta-tag XSS, User-Agent ReDoS, dev error page environment disclosure and Icon Genie path traversal cluster (CVE-2026-106102 to 106107),VG1222the Next.js Image Optimization SSRF residual window 16.3.6–16.3.7 (CVE-2026-94483) andVG1223the sharp 0.35.4 bundled librsvg residual window (GHSA-wq5f-xc86-pv6w). 199 CVE version-pin rules.
New in v3.54.x
vm2, GraphQL Tools, Nx, shell-quote and MCP SDK gaps closed — v3.54.0 adds
VG1213the vm2 3.11.7–3.12.1 sandbox-escape residual window (CVE-2026-93605, CVE-2026-100721 and six more, fixed 3.12.2),VG1214@graphql-tools/utils mergeDeep prototype-pollution DoS in federated gateways (CVE-2026-104852),VG1215@graphql-tools/executor-legacy-ws TLS certificate validation disabled (CVE-2026-103921),VG1216Nx command injection through git revisions and @nx/docker release config plus the world-accessible daemon socket (CVE-2026-104854, CVE-2026-104859),VG1217shell-quotequote()command injection after a comment token (CVE-2026-102422) andVG1218MCP TypeScript SDK OAuth client sending credentials to a server-chosen authorization server (CVE-2026-104850). 194 CVE version-pin rules.
New in v3.53.x
CISA KEV Strapi, Capacitor, compression, ProseMirror and Vue SSR gaps closed — v3.53.0 adds
VG1208Strapi unauthenticated private-field filtering that leaks admin password-reset tokens (CVE-2023-22894, in CISA KEV),VG1209Capacitor Android/iOS remote content loaded at the app origin through the internal HTTP proxy path (CVE-2026-103922),VG1210compression memory-leak DoS on premature response close (CVE-2026-87776),VG1211prosemirror-view XSS through pasted HTML (CVE-2026-104847) andVG1212@vue/server-renderer SSR XSS through a carriage return in dynamic attribute names (GHSA-g2v6-rqmx-r4w6). 188 CVE version-pin rules.
New in v3.52.x
Widely installed dependency gaps closed — v3.52.0 adds
VG1203source-map-js indexed source-map offset event-loop DoS (CVE-2026-93749),VG1204proxy-addr IP spoofing through an IPv4-mapped IPv6 trust subnet that matches every client (CVE-2026-90711),VG1205simple-git unsafe-operation guard bypasses — trailer command config, config includes, abbreviated long options and theVISUALeditor (CVE-2026-102826/102827/102828/102829),VG1206SerovalfromJSONthenable assimilation and unbounded TypedArray allocation (CVE-2026-104846/104845) andVG1207Tinypool prototype-pollution gadgets to RCE (CVE-2026-104848/104849). 183 CVE version-pin rules.
New in v3.51.x
figlet, Mockoon, libp2p and dev-tool gaps closed — v3.51.0 adds
VG1198figletwhitespaceBreakinfinite-loop DoS (CVE-2026-96780),VG1199@yeger/turbo-graph unauthenticated network-exposed task execution via/api/run(CVE-2026-59160),VG1200Payload alt-text plugin authorization bypass through an omittedoverrideAccess(CVE-2026-59965),VG1201Mockoon unauthenticated admin API with wildcard CORS (CVE-2026-59148) andVG1202libp2p PeerStore accepting attacker-signed PeerRecords for a victim peer ID (CVE-2026-86039). 183 CVE version-pin rules.
New in v3.50.x
Coverage audit of every CVE rule — each version rule is now compared with the advisories it cites on every published npm release. v3.50.0 closes the three windows that audit found uncovered:
VG1195Next.js 10.x–11.x for the AVIF/libheif image-optimizer RCE (GHSA-2xp9-vwfh-vxw4, critical),VG1196end-of-life @angular/router lines (19.x and older) for the SSR matrix-parameter DoS (CVE-2026-101896), andVG1197the original mcp-from-openapi / FrontMCP$refSSRF window (CVE-2026-39885).
New in v3.49.x
basic-ftp, A2UI, Trigger.dev, @fastify/busboy and probe-image-size gaps closed — v3.49.0 adds
VG1190basic-ftp quadratic directory-listing parser DoS (CVE-2026-102990),VG1191@a2ui/web_coreopenUrljavascript: URI execution from agent-supplied buttons (CVE-2026-10032, critical),VG1192Trigger.dev default secrets / cross-tenant SQL injection / replay IDOR / webhook SSRF cluster (6 advisories, critical),VG1193@fastify/busboy prototype-named header and oversized boundary DoS (CVE-2026-19481, CVE-2026-19484) andVG1194probe-image-size quadratic SVG parser DoS (CVE-2026-104861).
New in v3.48.x
NestJS, Astro, vm2, Piscina and devalue gaps closed — v3.48.0 adds
VG1185@nestjs/platform-fastify absolute-form middleware bypass (GHSA-9c5c-9qcx-q35q),VG1186@astrojs/node malformed Host port crash (CVE-2026-102984),VG1187vm2 sandbox escape cluster residual window (12 advisories, critical),VG1188Piscina ThreadPool options prototype-pollution RCE (CVE-2026-102992, critical) andVG1189devalue shared-memory / uneval expansion / stringifyAsync rejection cluster (3 advisories).
New in v3.47.x
Axios, Fastify, gRPC, NestJS and Angular SSR gaps closed — v3.47.0 adds
VG1180NestJS microservices nested message pattern crash (CVE-2026-102281),VG1181axios prototype-pollution gadget / fetch maxRedirects / HTTP/2 / ReDoS cluster residual window (7 advisories),VG1182@grpc/grpc-js getAuthContext unauthorized certificate (CVE-2026-101916),VG1183Fastify not-found auth bypass and validation bypass cluster (4 advisories) andVG1184Angular router SSR numeric matrix parameter DoS (CVE-2026-101896).
New in v3.46.x
Next.js og-image RCE and widely installed dependency gaps closed — v3.46.0 adds
VG1175Next.jsnext/ogImageResponse remote code execution residual window (GHSA-vcvr-r3jv-pc5j, critical),VG1176Nodemailer addressparser quadratic backtracking DoS past 9.1.0 (2 advisories),VG1177engine.io protocol revision mismatch crash (CVE-2026-102599),VG1178webpack-dev-middleware publicPath path traversal (CVE-2026-76844) andVG1179Electron sandbox inheritance / webview worker / protocol CORS / preload cache cluster (5 advisories).
New in v3.45.x
Widely installed dependency gaps closed — v3.45.0 adds
VG1170Cline Hub dashboard cross-origin WebSocket hijacking (CVE-2026-59723),VG1171@xhmikosr/decompress symlink-chain path traversal (CVE-2026-101894, critical),VG1172brace-expansion stack-exhaustion DoS on nested and comma-chained braces (2 advisories),VG1173undici WebSocket crash / BalancedPool TLS check drop / cache poisoning (3 advisories) andVG1174joiisoDate()quadratic regex DoS (GHSA-6h2x-m376-mqjq).
New in v3.44.x
SSR, package-manager and dev-tool gaps closed — v3.44.0 adds
VG1165Angular SSR infinite-loop DoS on a malformed DOCTYPE (CVE-2026-101895, the releases that fixed last month's SSR advisories),VG1166pnpm 12 pre-release lockfile symlink escape (GHSA-2rx9-3g3h-c2jv),VG1167claude-code-templates Studio server unauthenticated command injection (CVE-2026-73222),VG1168OpenClaw Feishu per-account disablement bypass (2 advisories) andVG1169DOCX editor font-name CSS injection / print XSS (GHSA-x7m8-jrm8-hpvx).
New in v3.43.x
Parser, workflow and MCP gaps closed — v3.43.0 adds
VG1160smol-toml six-byte infinite-loop DoS (CVE-2026-85730),VG1161n8n expression sandbox escape / SSRF / ReDoS / OAuth registration cluster (5 advisories),VG1162FrontMCP / mcp-from-openapi$refSSRF fix bypass (CVE-2026-59973),VG1163node-opcua client socket leak (CVE-2026-68904) andVG1164Plate DOCX export SSRF (CVE-2026-65842).Widest-reach gaps of the month closed — v3.42.0 adds
VG1153nanoid size-overflow that freezes every later ID to one constant string (CVE-2026-73086),VG1154mysql2 plaintext-password auth downgrade,VG1159Nodemailer addressparser quadratic DoS,VG1157toml prototype pollution + recursion crash,VG1158SVGOremoveScriptsXSS bypass, and residual windows for the September pnpm path-traversal / proxy-secret cluster (VG1155) and Orval$refSSRF (VG1156).30-day backlog cleared — every uncovered high/critical advisory of the last month on a package with real reach now has a rule (v3.40.0–v3.41.0): js-yaml, browserslist, multer, engine.io, @xmldom/xmldom, faker, adm-zip, @tiptap/core, @angular/platform-server SSR, @sap/cds-mtxs, mariadb and more. Older hand-written xmldom, RSC and MikroORM rules were regenerated so ranges that resolve past the fix are no longer flagged.
Backlog worked by reach — the daily run now ranks uncovered advisories by how many projects actually install the package. v3.40.0 closed the widest-reach gaps of the last month:
VG1141js-yaml merge-key CPU exhaustion,VG1136browserslist custom-stats prototype write,VG1135engine.io WebTransport crash,VG1137fakerhelpers.fake()code execution,VG1134mariadb password-before-TLS-validation, plus link-preview-js, TOON and LiquidJS.Advisory-accurate version rules — every CVE version-pin rule is checked against the GitHub Advisory Database on every published npm release: ranges that resolve past the fix are never flagged (v3.37.2), releases outside a cited advisory are no longer flagged and missed ones are added, and three rules with no advisory behind them were removed (v3.38.0).
Daily threat-intel pipeline — rule set tracks GHSA / OSV.dev / CISA KEV every day. Latest shipments (v3.39.0) added
VG1129Orval generated-client code-injection RCE cluster (11 advisories, CVE-2026-62681 and more),VG1130Astro AVIF/libheif image-optimization RCE (GHSA-26w7-cxv4-gfx2, CVSS 9.8),VG1131Vendure external-auth account takeover (CVE-2026-63472),VG1132MapLibre GLDOM.sanitize()zero-click XSS (CVE-2026-85061, CVSS 10.0), andVG1133yayson prototype pollution (CVE-2026-61534). v3.37.0 addedVG1128ws memory-exhaustion DoS + uninitialized memory disclosure (CVE-2026-48779 / CVE-2026-45736) and corrected VG917's caret/tilde matching. v3.36.0 addedVG1124@bytebase/dbhubMCP-server DNS-rebinding SQL execution + read-only bypass (CVE-2026-61742/-61788),VG1125Unleash missing-await permission bypass + cross-project IDOR (CVE-2026-77426),VG1126Elysia multipart quadratic-CPU DoS (CVE-2026-56669), andVG1127request-filtering-agent process crash (CVE-2026-62985). v3.35.0 addedVG1119SunEditor sanitizer-bypass stored XSS (CVE-2026-59167, CVSS 10.0),VG1120sharp bundled-libheif RCE residual window (GHSA-rgj7-g3m4-5g8c, 0.33.3–0.35.3),VG1121@roomi-fields/notebooklm-mcpMCP-tool path traversal (CVE-2026-61647),VG11229router LLM-router auth-bypass cluster (CVE-2026-56681/-56675/-56676/-56679), andVG1123deepstream PATCH_MULTI permission-bypass residual (CVE-2026-63116). v3.34.0 addedVG1115Next.js AVIF/libheif RCE + Windows-hosted RCE (GHSA-2xp9-vwfh-vxw4 / CVE-2026-75604, CVSS 9.5),VG1116@clerk/clerk-react5.x org/billing/reverification authorization bypass (CVE-2026-42349),VG1117@zereight/mcp-gitlabunauthenticated file read / SSRF / DNS rebinding (CVE-2026-61560/-61559/-61568), andVG1118PostCSSsourceMappingURLresidual window (GHSA-fxqj-rqcc-2cmp / GHSA-r28c-9q8g-f849). v3.32-3.33 addedVG1109-VG1114: crypto-jsWordArray.random()insufficient entropy, jsii-diff command injection, the keyv/cacheable "ChainDrop" npm supply-chain worm, React2Shellreact-server-dom-*RCE,@trigger.dev/coreprototype pollution, and an axios Basic-auth injection window. Earlier: Auth.js v5 beta fail-open, Next.js/PostCSS July residual windows,@asyncapi/*supply-chain IOC, Clerk 5.x middleware bypass, jscrambler/@injectivelabsIOCs, n8n-mcp cross-tenant isolation, Next.js May 2026 13-advisory cluster, Drizzle ORM SQL identifier injection (CVE-2026-39356),@tanstack/*Mini Shai-Hulud supply-chain attack, Kysely JSON-path traversal, and moreOWASP MCP Top 10 alignment —
VG1068flags MCP / AI tool definitions whosedescription,instructions, orsystemPromptfields carry prompt-injection markers (ignore previous instructions,you are now,jailbreak mode,system prompt:,override safety, …); pair withVG1063which catchesdangerouslyDisableSandbox: truein agent runtimesInline suppress —
// guardvibe-ignore VG001silences individual findings per-lineCLI-first approach —
npx guardvibe audit,npx guardvibe scan,npx guardvibe doctorall work standalone without MCPEmbedded remediation plan —
remediation_plangenerates a section-by-section fix checklist after every auditScore reflects all sections — security score now factors code, dependencies, config, secrets, auth coverage, and taint analysis
Gitignored secrets excluded — files matched by
.gitignoreare automatically skipped during secret scanningTaint sanitizer recognition — dataflow analysis recognizes common sanitizers (DOMPurify, escape functions, parameterized queries) and stops propagation
How GuardVibe Compares
GuardVibe is purpose-built for the AI coding workflow. Traditional tools are excellent for enterprise CI/CD pipelines — GuardVibe fills a different gap.
Capability | GuardVibe | Traditional SAST | Dependency Scanners |
Runs inside AI agents (MCP) | Native | Not supported | Not supported |
Zero config setup |
| Account + config required | Built-in (limited) |
Vibecoding stack rules (Next.js, Supabase, Clerk, tRPC, Hono) | 100+ dedicated | Generic patterns | Not applicable |
AI/LLM security (prompt injection, MCP, tool abuse) | 68 rules | Experimental/None | None |
AI host security (CVE-2025-59536, CVE-2026-21852) |
| Not supported | Not supported |
Auto-fix suggestions for AI agents |
| CLI autofix | Not supported |
CVE version detection | 254 packages, refreshed daily | Extensive | Extensive |
Compliance mapping (SOC2, PCI-DSS, HIPAA) | Built-in | Paid tier | None |
SARIF CI/CD export | Yes | Yes | Limited |
Rule count | 629 (focused, 68 AI-native) | 5000+ (broad) | N/A |
When to use GuardVibe: You're building with AI agents and want security scanning integrated into your coding workflow — no dashboard, no account, no CI setup.
When to use traditional tools: You need deep AST analysis, enterprise dashboards, org-wide policy enforcement, or coverage across hundreds of languages.
Quick Start
Claude Code
npx guardvibe init claudeCreates .mcp.json MCP config (pinned to current version), .claude/settings.json auto-scan hooks, and CLAUDE.md security rules. Restart Claude Code after setup.
Cursor
npx guardvibe init cursorCreates .cursor/mcp.json and .cursorrules with security rules. Restart Cursor after setup.
Gemini CLI
npx guardvibe init geminiCreates ~/.gemini/settings.json MCP config and GEMINI.md security rules.
Codex (OpenAI)
codex mcp add guardvibe -- npx -y guardvibeVS Code (GitHub Copilot)
Create .vscode/mcp.json in your project:
{
"servers": {
"guardvibe": {
"command": "npx",
"args": ["-y", "guardvibe"]
}
}
}Note: VS Code uses
"servers", not"mcpServers".
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"guardvibe": {
"command": "npx",
"args": ["-y", "guardvibe"]
}
}
}All platforms at once
npx guardvibe init all # Claude + Cursor + GeminiPre-commit hook
npx guardvibe hook install # Blocks commits with critical/high findings
npx guardvibe hook uninstall # Remove hookCI/CD (GitHub Actions)
npx guardvibe ci github # Generates .github/workflows/guardvibe.yml (SARIF scan)
npx guardvibe ci github --pr # + a diff-aware PR review workflow that posts inline commentsWhat GuardVibe Scans
Application Code
Next.js App Router, Server Actions, Server Components, React, Express, Hono, tRPC, GraphQL, FastAPI, Go
Authentication & Authorization
Clerk, Auth.js (NextAuth), Supabase Auth, OAuth/OIDC (state parameter, PKCE) — middleware checks, secret exposure, session handling, SSR cookie auth, admin method protection
Database & ORM
Supabase (RLS, anon vs service role), Prisma (raw query injection, CVEs), Drizzle (SQL injection — including CVE-2026-39356 identifier-injection), MikroORM (CVE-2026-44680 runtime-identifier injection), Kysely (CVE-2026-44635 JSON-path traversal), Turso/LibSQL (client exposure, SQL injection), Convex (auth bypass, internal function exposure)
Payments
Stripe (webhook signatures, replay protection, secret keys), Polar.sh, LemonSqueezy
Third-Party Services
Resend (email HTML injection), Upstash Redis, Pinecone, PostHog, Google Analytics (PII tracking), Uploadthing (auth, file type/size)
AI / LLM Security
Prompt injection detection, LLM output sinks, system prompt leaks, MCP server SSRF/path traversal/command injection, MCP tool description prompt-injection markers (OWASP MCP Top 10 alignment, VG1068), model-controlled sandbox-disable flags (dangerouslyDisableSandbox, VG1063), AI agent unrestricted shell/database access, dangerouslyAllowBrowser, missing maxTokens, agent loop without maxSteps, AI API key client exposure, indirect prompt injection via external data, RAG/vector poisoning, public-prefix LLM key leaks (NEXT_PUBLIC_*, VITE_*, EXPO_PUBLIC_*)
AI Host Security
guardvibe doctor — unified host hardening scanner detecting CVE-2025-59536 (hook injection via .claude/settings.json), CVE-2026-21852 (API key exfiltration via ANTHROPIC_BASE_URL override), MCP config audit, environment scanner, permission analysis. Supports Claude, Cursor, VS Code, Gemini, Windsurf. Host-specific remediation with platform-tailored fix steps.
OWASP API Security
BOLA/IDOR (Broken Object Level Authorization), mass assignment (spread request body, Object.assign), missing pagination, rate limiting, admin endpoint authorization, verbose error leaks
Modern Stack
Zod .passthrough() mass assignment, z.any() bypass, file upload validation, server-only import guard, webhook replay protection, CSP headers, unsafe-inline/unsafe-eval detection, cron endpoint auth
Mobile
React Native, Expo — AsyncStorage secrets, deep link token exposure, hardcoded API URLs, ATS configuration
Firebase
Firestore security rules, Firebase Admin SDK exposure, storage rules, custom token validation
CVE Version Intelligence (254 CVEs, refreshed daily)
Frameworks: Next.js (CVE-2024-34351, CVE-2024-46982, CVE-2025-29927, CVE-2026-23869, CVE-2026-44573 / 44574 / 44575 / 44578 / 44579 / 45109 May 2026 cluster), React + react-server-dom-* (CVE-2025-55182, CVE-2026-23870), Express, Hono pre-4.12.18 cluster, @vitejs/plugin-rsc, Strapi content-type-builder (CVE-2026-22599)
Auth: Clerk middleware bypass (GHSA-vqx2), Clerk has() org/billing/reverification bypass (GHSA-w24r), Clerk clerkFrontendApiProxy SSRF (CVE-2026-34076), NextAuth.js (2 CVEs), jsonwebtoken
ORMs / SQL: Drizzle SQL identifier injection (CVE-2026-39356) + Drizzle sql.raw interpolation (VG1073), MikroORM SQL injection (CVE-2026-44680), Prisma raw-query call-form, Kysely JSON-path traversal (CVE-2026-44635)
AI ecosystem: @anthropic-ai/sdk (CVE-2026-34451 + memory tool path escape), Vercel AI SDK file-type bypass (CVE-2025-48985), LangSmith untrusted prompt manifest (CVE-2026-45134), OpenClaude sandbox bypass (CVE-2026-42074), @nyariv/sandboxjs Function.caller escape (CVE-2026-43898)
HTTP / parsing: Axios pre-1.15.2 cluster (SSRF + prototype-pollution + DoS + CRLF) + axios proxy-auth redirect leak (VG1071), Hono setCookie attribute injection (VG1072, override pinned ^4.12.21), fast-uri path traversal + host confusion (CVE-2026-6321 / 6322), fast-xml-parser CDATA injection, xmldom CDATA, protobuf.js multi-CVE cluster, undici (2 CVEs), ws
Tools / supply chain: node-ipc protestware (VG1069), Miasma @redhat-cloud-services namespace compromise IOC (VG1074), Session messenger exfil endpoint IOC (VG1075), @tanstack/* Mini Shai-Hulud (84 malicious versions, May 2026), @wdio/browserstack-service command injection (CVE-2026-25244), @babel/plugin-transform-modules-systemjs arbitrary code (CVE-2026-44728), @opentelemetry exporter-prometheus DoS (CVE-2026-44902), systeminformation Linux cmd injection (CVE-2026-44724), velocityjs prototype pollution, defu, sharp, lodash, node-fetch, tar, xml2js, crypto-js, angular-expressions RCE, i18next-http-backend, vm2 sandbox breakouts
Deployment & Config
Vercel (vercel.json, cron secrets, headers), Next.js config, Docker, Docker Compose, Fly.io, Render, Netlify, Cloudflare
Infrastructure
Dockerfile security, GitHub Actions CI/CD, Terraform (S3, IAM, RDS, security groups)
Secrets & Environment
API keys (AWS, GitHub, Stripe, OpenAI, Resend, Turso), .env management, .gitignore coverage, high-entropy detection, NEXT_PUBLIC exposure
Compliance Control Mapping
Maps security findings to SOC2, PCI-DSS, HIPAA, GDPR, ISO27001, and EU AI Act (EUAIACT) controls. Identifies which code-level vulnerabilities are relevant to specific compliance requirements. Not a substitute for professional compliance audits.
Supply Chain
Malicious postinstall scripts, unpinned GitHub Actions, CI npm provenance / --ignore-scripts hardening (VG1070), typosquat detection, node-ipc protestware versions (VG1069), Miasma @redhat-cloud-services namespace compromise IOC (VG1074, RHSB-2026-006), Session messenger exfil endpoint IOC (VG1075, filev2.getsession.org), @tanstack/* Mini Shai-Hulud mass-malware versions (May 2026), @wdio/browserstack-service command injection via git branch names (CVE-2026-25244), lockfile poisoning patterns
Prompt-Level Security (Shift Left)
Most vulnerabilities in AI-generated code are born in the prompt: "add login to my app" says nothing about password hashing, session handling, or rate limiting — so the model picks defaults, and the defaults are where the CVEs live. secure_prompt moves the security gate to before code generation: it analyzes the raw prompt, detects the stack and attack surfaces it implies, matches them against GuardVibe's rule set, and returns a directive the host LLM uses to rewrite the prompt with security requirements embedded.
This is not a prompt beautifier. It is deterministic (no LLM, no network), it never restructures intent, and its first job is do no harm: a prompt that is already specific and security-aware gets verdict NO_MOD and passes through untouched.
NO_MOD— prompt is already specific and security-aware → proceed with the original prompt unchangedLIGHT_MOD— intent is clear but security constraints are missing → inject requirements onlyHEAVY_MOD— prompt is vague and security-relevant → inject requirements + surface clarifying questions (never invent the answers)
Before (what the user typed):
add login to my appAfter (what the host LLM executes, having applied the secure_prompt directive):
Add login to my app, with these security requirements:
- [VG001] Use environment variables or a secrets manager — never hardcode credentials.
- [VG1008] Always verify the caller has admin privileges before allowing role elevation.
- [VG105] Always specify allowed algorithms explicitly in jwt.verify().
Before implementing, confirm: which framework/stack is this for, and which auth
provider should be used (e.g. Clerk, Auth.js/NextAuth, Supabase Auth, custom JWT)?Same user intent — but the model now generates auth code with the guardrails stated up front, instead of GuardVibe catching the missing pieces after the fact.
Tools (39 MCP tools)
Tool | What it does |
| Analyze a code snippet for security issues |
| Scan multiple files with security scoring (A-F) |
| Scan a project directory from disk |
| Pre-commit scan of git-staged files — diff-aware (blocks only newly-staged lines; |
| Check all dependencies for known CVEs (OSV) — annotates each vulnerable package with reachability (is it actually imported in your source?) |
| Detect leaked secrets, API keys, tokens |
| Check individual packages against OSV |
| Typosquat detection, maintenance status, adoption metrics |
| Map security findings to compliance controls (SOC2, PCI-DSS, HIPAA, GDPR, ISO27001, EU AI Act) |
| SARIF v2.1.0 export for CI/CD integration |
| Security best practices and guides |
| Auto-fix suggestions with concrete patches for AI agents |
| Close the loop — scan, apply only the fixes that verifiably land (each re-scanned, rolled back on regression), return the verified code + a definition-of-done gate |
| Audit project configuration files for cross-file security misconfigurations |
| Detect project stack and generate tailored security policies (CSP, CORS, RLS) |
| Review PR diff for security issues with severity gating |
| Scan git history for leaked secrets (active and removed) |
| Check project against compliance policies defined in .guardviberc |
| Track tainted data flows from user input to dangerous sinks |
| Cross-file taint analysis — track tainted data across module boundaries |
| Analyze shell commands for security risks before execution |
| Compare config file versions to detect security downgrades |
| Assess overall repository security posture and map sensitive areas |
| Get detailed remediation guidance with exploit scenarios and fix strategies |
| Real-time single-file scan — designed for post-edit hooks |
| Scan only git-changed files — for PRs and incremental CI; diff-aware (only newly-added lines; |
| Cumulative security dashboard — scans, fixes, grade trend over time |
| Host security audit — CVE-2025-59536, CVE-2026-21852, MCP config, env scanner |
| Audit MCP server configurations for hook injection, file:// abuse, sensitive paths |
| Scan shell profiles, .env files for base URL hijack and credential sniffing |
| Verify a security fix was applied correctly — returns fixed/still_vulnerable/new_issues |
| Get recommended tool workflow for your current task (writing, pre-commit, PR review, etc.) |
| Auth coverage map — enumerate routes, parse middleware matchers, detect auth guards, report coverage % |
| LLM-powered deep analysis — IDOR, business logic, race conditions, auth bypass. Defaults to Claude Haiku 4.5 (~cents/scan). Pass |
| Single source of truth — runs ALL checks in one call, returns PASS/FAIL/WARN verdict + score + coverage % + deterministic result hash |
| Remediation plan — generates section-by-section fix checklist after audit |
| Remediation verification — compares before/after audit, flags skipped sections |
| Prompt-level security (shift left) — analyze a coding prompt BEFORE code is written; deterministic triage (NO_MOD/LIGHT_MOD/HEAVY_MOD), stack + attack-surface detection, severity-ranked GuardVibe requirements embedded via a rewrite directive |
| Slopsquat / AI-hallucination detector — flags phantom imports (imported but in no manifest) and typosquats fully offline + deterministic; opt-in online tier adds npm-registry truth (404 = nonexistent, brand-new low-download = slopsquat pattern). CLI: |
All scanning tools support format: "json" for machine-readable output.
Slopsquat / hallucinated-package detection
AI assistants invent package names — ~20% of AI-generated code references packages that don't exist, and attackers register those hallucinated names ("slopsquatting"). Commodity SCA scans known, published packages against vuln databases; it can't see a name that doesn't exist yet, was never installed, or was published yesterday. scan_hallucinated_packages / slopscan targets exactly that seam, at code-gen/PR time:
Offline (deterministic, air-gapped):
phantom_import(a package imported in source but absent from everypackage.json— a classic LLM tell) and typosquats of popular packages. Statement-anchored + comment/template-aware, so example imports in docs/strings are never miscounted.Online (opt-in, graceful degrade): npm-registry truth —
nonexistent(404), brand-new + low-download (slopsquat-registration pattern), deprecated/unmaintained.
The offline tier is also a full_audit section (online never runs inside the audit, keeping the result hash deterministic). Allowlist intentional unpublished/workspace names via .guardviberc:
{ "slopscan": { "online": true, "allow": ["@myorg/internal-pkg"] } }Security Rules (629 rules across 25 modules)
Category | Rules | Coverage |
Core OWASP | 39 | SQL injection, XSS, CSRF, command injection, CORS, SSRF, hardcoded secrets |
Next.js App Router | 18 | Server Actions, secret exposure, auth bypass, CSP, redirects |
Auth (Clerk / Auth.js / Supabase Auth) | 17 | Middleware, secret keys, session storage, role checks, SSR cookies |
Database (Supabase / Prisma / Drizzle) | 13 | Raw queries, client exposure, service role leaks, NoSQL injection, Drizzle identifier injection (CVE-2026-39356) |
OWASP API Security | 11 | BOLA/IDOR, mass assignment, pagination, rate limiting, error leaks |
Modern Stack | 47 | Zod, tRPC, Hono, GraphQL, Uploadthing, Turso, Convex, OAuth, CSP, webhooks, AI SDK, React Server Action validation (React2Shell) |
Deployment Config | 21 | Vercel, Next.js config, Docker Compose, Fly, Render, Netlify, Cloudflare, K8s secrets |
Payments (Stripe / Polar / Lemon) | 9 | Webhook signatures, key exposure, price manipulation |
Services (Resend / Upstash / Pinecone / PostHog) | 11 | API key leaks, PII tracking, email injection |
Web Security | 20 | Webhooks, CSP, .env safety, AI key exposure, cookie handling |
React Native / Expo | 10 | AsyncStorage secrets, deep links, ATS, hardcoded URLs |
Firebase | 7 | Firestore rules, admin SDK, storage, custom tokens |
AI / LLM Security | 33 | Prompt injection, MCP SSRF, excessive agency, indirect injection |
AI Host Security | 14 | CVE-2025-59536 hook injection, CVE-2026-21852 base URL hijack, MCP config audit |
AI Tool Runtime | 14 | MCP tool output sanitization, obfuscated descriptions, safety bypass |
CVE Version Intelligence | 254 | Known vulnerable versions in package.json — incl. Vite dev-server cmd injection (CVE-2024-52011), React Router 7 cluster (CVE-2026-33245/42211/42342), DOMPurify XSS (CVE-2026-47423), Better Auth bypass (CVE-2026-45337), Axios supply-chain backdoor |
Shell / Bash | 5 | Pipe to bash, chmod 777, rm -rf, sudo password |
SQL | 4 | DROP/DELETE without WHERE, stacked queries, GRANT ALL |
Supply Chain | 19 | Malicious install scripts, lockfile integrity, dependency confusion, typosquat detection |
Go | 6 | SQL injection, command injection, template escaping |
Dockerfile | 7 | Root user, secrets in ENV, untagged images, non-root user |
CI/CD (GitHub Actions) | 8 | Secrets interpolation, unpinned actions, write-all permissions |
Terraform | 6 | Public S3, open security groups, IAM wildcards |
Advanced Security | 31 | ReDoS, CRLF injection, race conditions, XXE, brute force, audit logging |
Other Services | 5 | AWS, GCP, MongoDB, Convex, Sentry, Twilio |
CLI Commands
# Scanning
npx guardvibe scan [path] # Scan a directory for security issues
npx guardvibe scan . --format json # JSON output for automation
npx guardvibe check <file> # Scan a single file
npx guardvibe diff [base] # Scan changed files — reports only newly-introduced issues
npx guardvibe diff [base] --all-lines # Include pre-existing findings in changed files too
# Close the loop — scan, apply verified fixes, re-verify
npx guardvibe secure-this <file> # Dry run: show the fixes that would land + remaining manual work
npx guardvibe secure-this <file> --write # Apply only the fixes that re-verify clean (rolled back on regression)
npx guardvibe secure-this <file> --format json
# Full security audit
npx guardvibe audit [path] # Full audit with PASS/FAIL verdict + hash
npx guardvibe audit . --format json # JSON output for CI pipelines
npx guardvibe audit --skip-deps # Skip dependency CVE check
npx guardvibe audit --full # Disable MCP-output truncation (full finding set)
# Host security audit
npx guardvibe doctor # Host hardening audit (project scope)
npx guardvibe doctor --scope host # + shell profiles, global MCP configs
npx guardvibe doctor --scope full # + home dir configs
npx guardvibe doctor --format json # JSON output
# LLM-powered deep scan (IDOR, business logic, race conditions, auth bypass)
npx guardvibe deep-scan <file> # Default: Haiku 4.5, all focus areas
npx guardvibe deep-scan <file> --focus idor # Narrow to IDOR
npx guardvibe deep-scan <file> --model sonnet # Deeper analysis (more expensive)
npx guardvibe deep-scan <file> --max-bytes 5000 # Truncate input for cost control
# Requires ANTHROPIC_API_KEY or OPENAI_API_KEY env var
# Setup
npx guardvibe init <platform> # Setup MCP server (claude, cursor, gemini, all)
npx guardvibe hook install # Install pre-commit hook
npx guardvibe hook uninstall # Remove pre-commit hook
npx guardvibe ci github # Generate GitHub Actions workflow
# Pre-commit / CI
npx guardvibe-scan # Scan staged files (for pre-commit)
npx guardvibe-scan --format sarif --output results.sarif # CI mode
# Options (scan commands)
# --format <type> scan / diff: markdown|json|sarif
# check: markdown|json|sarif|buddy|agent
# agent = guardvibe.agent.v1 — per finding: { id, severity, confidence, exactEdit, manualFix, verify }
# so an AI agent can apply the exact edit and run the verify step to prove the fix
# (an unsupported format errors rather than silently falling back to markdown)
# --output <file> Write results to file
# --fail-on <level> critical|high|medium|low|none — exit 1 when a finding at/above this level exists
# check, audit, and the pre-commit gate (guardvibe-scan / scan --staged) gate on
# critical by DEFAULT; scan and diff are reports (exit 0) unless --fail-on is passed
# --full Bypass response-size caps (50 JSON / 30 markdown / 200-file taint)Plugin System
Extend GuardVibe with custom or community rule packs.
npm install guardvibe-rules-awesomePlugins matching guardvibe-rules-*, @guardvibe/rules-*, or @guardvibe-pro/rules-* are discovered automatically.
Writing a Plugin
A plugin is an npm package that exports a GuardVibePlugin object:
// index.ts
import type { GuardVibePlugin } from "guardvibe/plugins";
const plugin: GuardVibePlugin = {
name: "my-rules",
version: "1.0.0",
description: "My custom security rules",
rules: [
{
id: "CUSTOM001",
name: "My Custom Rule",
severity: "high", // "critical" | "high" | "medium" | "low" | "info"
owasp: "A01:2025 Broken Access Control",
description: "What this rule detects and why it's dangerous",
pattern: /vulnerable_pattern_here/g, // RegExp with global flag
languages: ["javascript", "typescript"], // which file types to scan
fix: "How to fix the vulnerability",
fixCode: "// Copy-paste secure code example",
compliance: ["SOC2:CC6.1"], // optional compliance mapping
},
],
};
export default plugin;Plugin Rule Schema
Field | Type | Required | Description |
| string | Yes | Unique rule ID (e.g., "CUSTOM001") |
| string | Yes | Human-readable rule name |
| string | Yes |
|
| string | Yes | OWASP category mapping |
| string | Yes | What the rule detects |
| RegExp | Yes | Regex pattern to match vulnerable code (use |
| string[] | Yes | File types to scan |
| string | Yes | How to fix the issue |
| string | No | Copy-paste secure code example |
| string[] | No | SOC2/PCI-DSS/HIPAA control IDs |
Loading Plugins
Plugins are loaded from three sources:
Auto-discovery: Any installed npm package matching
guardvibe-rules-*or@guardvibe/rules-*Config-specified: Packages listed in
.guardvibercpluginsarrayLocal paths: Relative paths in
.guardvibercpluginsarray
// .guardviberc
{
"plugins": [
"guardvibe-rules-awesome",
"./my-local-rules"
]
}Configuration
Create a .guardviberc file in your project root:
{
"rules": {
"disable": ["VG030"],
"severity": {
"VG002": "medium"
}
},
"scan": {
"exclude": ["fixtures/", "coverage/"],
"maxFileSize": 1048576
},
"plugins": ["guardvibe-rules-awesome"]
}Inline Suppression
const key = process.env.API_KEY; // guardvibe-ignore VG001
// guardvibe-ignore-next-line VG002
app.get("/api/health", (req, res) => res.json({ ok: true }));Supports //, #, and <!-- --> comment styles.
GuardVibe Scans Itself
We run GuardVibe on its own codebase as a pre-commit hook. Every commit is scanned before it reaches the repository — the same workflow GuardVibe enables for your projects.
How It Works
You write code with AI
|
AI agent calls GuardVibe MCP tools
|
GuardVibe scans locally (no cloud, no API)
|
Returns findings with severity, OWASP mapping, and fix suggestions
|
AI agent fixes issues before they reach productionPerformance
Tested on real AI-built projects (837 files, Next.js + Supabase + Clerk):
Scan time: ~1.2s (837 files)
False positive rate: near zero — context-aware detection (React Native, Supabase client/server, static innerHTML, git-aware secrets)
Detection rate: 100% on known vulnerability patterns
Security score: A (99/100) on production projects
Troubleshooting
MCP connection issues
If your AI agent cannot connect to GuardVibe:
Restart your IDE/agent. MCP servers are started by the host application. After running
npx guardvibe init, restart Claude Code, Cursor, or Gemini CLI for the config to take effect.Check the config path. Run
npx guardvibe init claudeagain and verify the output shows the correct config file location (.mcp.jsonin your project root for Claude Code,.cursor/mcp.jsonfor Cursor).Re-run
initto upgrade. When upgrading GuardVibe, re-runnpx guardvibe init claude—.mcp.jsonis pinned to a specific version (e.g.guardvibe@3.1.36) at init time for fast deterministic startup. As of v3.1.2 the re-run also rewrites stale pins automatically (Upgraded GuardVibe pin (3.1.27 → 3.1.28)); since v3.1.27 the PostToolUse hook command is pinned to the same version (was@latest) and re-run upgrades a stale hook too. The same applies tonpx guardvibe hook installandnpx guardvibe ci github(since v3.1.3) — both are version-pinned at install/generate time and re-run to upgrade.Pre-3.1.1 users won't see the auto-update banner. GuardVibe started writing a once-per-day "newer version available" notice to stderr in v3.1.1. If your install predates that, you'll never see it — run
npx -y guardvibe@latest init <host>once to bake in the latest pin and start receiving banners on subsequent sessions.Verify Node.js version. GuardVibe requires Node.js >= 18.0.0. Check with
node --version.Check npx cache. If you upgraded GuardVibe and the old version is cached, run
npx -y guardvibe@latestto force the latest version.
Node.js version requirements
GuardVibe requires Node.js >= 18.0.0. Earlier versions will fail with syntax errors or missing APIs. Node.js 22 LTS is recommended.
False positives
If a rule triggers on safe code:
Inline suppression: Add
// guardvibe-ignore VG001on the same line, or// guardvibe-ignore-next-line VG001on the line above. Supports//,#, and<!-- -->comment styles.Config exclusion: Add the rule ID to
rules.disablein.guardviberc:{ "rules": { "disable": ["VG030"] } }Path exclusion: Add directories to
scan.excludein.guardviberc:{ "scan": { "exclude": ["fixtures/", "test-data/"] } }
Pre-commit hook issues
Hook not running: Verify the hook file exists at
.git/hooks/pre-commitand is executable (chmod +x .git/hooks/pre-commit).Hook blocking valid commits: Use
git commit --no-verifyto skip the hook temporarily, then investigate the findings.Removing the hook: Run
npx guardvibe hook uninstall.
Security Model
GuardVibe is designed for use on sensitive and proprietary codebases:
100% local execution. All scanning happens on your machine. No code, findings, or metadata are sent to any server.
No accounts, no API keys, no telemetry. There is no signup, no cloud dashboard, and no usage tracking of any kind.
One optional network call. The
scan_dependenciesandcheck_dependenciestools query the OSV API to check for known CVEs. This is opt-in -- you only call it when you explicitly use those tools. No other tool makes network requests.Safe for air-gapped environments. All code analysis rules run entirely offline. Only dependency vulnerability checks require network access.
Configuration (.guardviberc)
Create a .guardviberc JSON file in your project root to customize GuardVibe behavior.
Full example
{
"rules": {
"disable": ["VG030", "VG045"],
"severity": {
"VG002": "medium",
"VG010": "low"
}
},
"scan": {
"exclude": ["fixtures/", "coverage/", "dist/", "vendor/"],
"maxFileSize": 1048576
},
"plugins": [
"guardvibe-rules-awesome",
"./my-local-rules"
],
"compliance": {
"frameworks": ["SOC2", "HIPAA"],
"failOn": "high",
"exceptions": [
{
"ruleId": "VG030",
"reason": "Accepted risk per security review 2026-03",
"approvedBy": "security-team",
"expiresAt": "2026-12-31",
"files": ["src/legacy/**"]
}
],
"requiredControls": ["SOC2:CC6.1"]
},
"scoring": {
"densityModel": "exponential"
}
}Configuration fields
Field | Type | Default | Description |
|
|
| Rule IDs to skip during scanning |
|
|
| Override severity for specific rules |
|
|
| Glob patterns for directories/files to skip |
|
|
| Maximum file size in bytes (files larger than this are skipped) |
|
|
| npm package names or local paths to load as plugins |
|
| -- | Compliance frameworks to map against ( |
|
|
| Minimum severity that causes compliance failure |
|
|
| Approved exceptions with expiration dates |
|
| -- | Controls that must pass regardless of exceptions |
|
|
| Score decay curve. |
Security
GuardVibe takes supply chain security seriously:
npm provenance — every published version is cryptographically signed via Sigstore, linking the package to this exact GitHub repo and commit. Verify with
npm audit signatures2FA enabled — npm account protected with two-factor authentication
Branch protection — force push disabled on main, admin enforcement enabled
Tag protection — version tags (
v*) cannot be deleted or force-pushedMinimal CI permissions — GitHub Actions workflows use
permissions: contents: readonlyMinimal, fully-audited runtime dependencies — only three direct dependencies: the MCP SDK, Zod, and the TypeScript compiler (used for AST-based dataflow analysis). Zod and TypeScript are zero-sub-dependency, pure-JS packages. The MCP SDK pulls a small set of widely-used, audited transitive packages (e.g.
express,cors,ajv) for its optional HTTP transport — GuardVibe itself runs over stdio. No native bindings anywhere in the tree, and all code analysis runs 100% locally and offline
To report a vulnerability, please email info@goklab.com or open a GitHub issue.
License
Apache 2.0 — open source, patent-safe, enterprise-ready. Built by GokLab.
Available Tools
39 toolsanalyze_cross_file_dataflowA
Track user input flowing across module boundaries — detects injection vulnerabilities spanning multiple files. Pass files array with file contents. For single-file analysis, use analyze_dataflow instead. Example: analyze_cross_file_dataflow({files: [{path: 'src/api.ts', content: '...'}, {path: 'src/db.ts', content: '...'}]})
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Project directory path. When provided, auto-discovers all JS/TS files — no need to pass file contents manually. | |
| files | No | List of files to analyze (ignored when path is provided) | |
| format | No | Output format | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full disclosure burden. It does explain the analysis semantics (taint flow spanning files, injection detection), but says nothing about cost, file-count limits, permissions, or what happens when neither path nor files are supplied despite zero required parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then routing, then a concrete invocation example. The example earns its place by showing the nested file object shape; no sentence is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description is the only source of behavioral information, and it omits the return shape (findings structure, markdown vs json differences) and the file-count or performance envelope. Sufficient to invoke correctly, not sufficient to interpret results or anticipate cost.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with per-parameter descriptions, so the baseline is 3. The description reinforces the files array with a concrete example, but it instructs the agent to 'pass files array with file contents' while never mentioning the path auto-discovery mode, which the schema presents as the preferred option — a mild steer toward the more verbose input mode. It also ignores the format enum.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource ('track user input flowing across module boundaries') plus the concrete vulnerability class it targets (cross-file injection). It is immediately distinguishable from the sibling analyze_dataflow, which it explicitly excludes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the condition that selects the alternative: 'For single-file analysis, use analyze_dataflow instead.' This is the when/when-not/alternative pattern, resolved in one sentence with no inference required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
analyze_dataflowA
Track user input (request body, URL params, form data) flowing into dangerous sinks (SQL queries, eval, file operations, redirects). Detects injection vulnerabilities that regex rules miss by following variable assignments through code.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Code to analyze for tainted data flows | |
| format | No | Output format | markdown |
| language | Yes | Language (JS/TS only) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It usefully discloses the analysis mechanism (following variable assignments rather than matching patterns), which explains result characteristics like fewer false positives on obfuscated flows. It says nothing about depth limits, what counts as a reported flow, or that analysis is static/local within a single file.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core mechanism and immediately followed by the differentiator. No filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a fairly simple two-required-parameter tool with full schema coverage, but it omits scope (single file vs project) and the boundary with analyze_cross_file_dataflow, which matters for tool selection in a 38-tool server.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both enums are documented, so the standard is the baseline. The description adds conceptual value by enumerating source and sink categories that shape findings, but adds no detail about the code/format/language parameters themselves.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific analysis: tracking user-controlled inputs (request body, URL params, form data) into dangerous sinks (SQL, eval, file ops, redirects). It also implicitly distinguishes itself from regex-based checks. However it does not distinguish itself from the sibling analyze_cross_file_dataflow, which sounds like the closest alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied ('detects injection vulnerabilities that regex rules miss'), which hints that an agent should prefer this over check_code-style regex scanning. But there is no explicit when-to-use/when-not, no mention of JS/TS-only scope in the description, and no routing to analyze_cross_file_dataflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_configA
Audit application config files (next.config, middleware, .env, vercel.json) for cross-file security gaps: missing headers, unprotected routes, exposed secrets. NOT the same as guardvibe_doctor which checks AI host security (MCP configs, hooks). Example: audit_config({path: '.'})
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Project root directory to audit | |
| format | No | Output format | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. The audit verb and the enumerated read-only targets imply a non-destructive scan, and the cross-file scope is a genuine behavioral trait worth knowing, but the description never states that nothing is written, what permission or environment prerequisites exist, or how findings are surfaced.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, followed by the sibling exclusion and then an example — a sensible information order with essentially no filler. The parenthetical file list is dense but earns its place by making the scan surface concrete.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description should carry more of the behavioral and result-shape burden. It tells the agent what to pass and what categories are checked, but says nothing about what a result looks like, whether findings include severity or file locations, or what the json format yields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are documented inline, so the baseline is 3. The example audit_config({path: '.'}) usefully demonstrates that path should be the project root, but the format parameter's effect (markdown vs json) receives no added meaning beyond the schema's one-word description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (audit) plus the exact resource (application config files) and enumerates the concrete artifacts checked (next.config, middleware, .env, vercel.json) and the gap classes found (missing headers, unprotected routes, exposed secrets). It explicitly contrasts itself with the sibling guardvibe_doctor, so an agent can route between them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit exclusion ("NOT the same as guardvibe_doctor which checks AI host security") and a concrete invocation example, which gives clear usage context. It does not, however, position itself against the many other audit-adjacent siblings such as full_audit, check_project, or scan_config_change, so the agent still has to infer that boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
audit_mcp_configA
Scan MCP configuration files (.claude/settings.json, .cursor/mcp.json, .vscode/mcp.json) for security issues: malicious hooks (CVE-2025-59536), suspicious MCP servers, overly permissive tool access, and shell injection patterns. Use this to verify MCP configurations are safe before use.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Project root directory to scan | . |
| format | No | Output format | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full behavioral burden. 'Scan' implies a read-only inspection and the description discloses the detection categories and a specific CVE (2025-59536), which is genuinely useful context. However, it never confirms the operation is non-mutating, says nothing about what happens if a config file is missing, and does not describe what a finding or report looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences: the detection scope with concrete file paths and issue categories comes first, the usage cue second. No filler, no restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no annotations, but the enumerated issue categories effectively tell the agent what kinds of findings come back, and the file list scopes the behavior. The remaining gap is that the format parameter's consequence (markdown report vs JSON) is never explained, which matters for a tool whose primary product is a report.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two self-documenting parameters (path with default '.', format enum with default markdown), so the baseline is 3. The description adds no parameter-level meaning beyond implying the default path is a project root; it never mentions that output can be JSON or markdown, which is the one parameter choice an agent would benefit from guidance on.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Scan') and a precisely bounded resource: MCP config files, with the three concrete paths (.claude/settings.json, .cursor/mcp.json, .vscode/mcp.json) enumerated, plus the four issue classes it looks for. This is far more specific than a generic 'audit' sibling like audit_config or audit_config, though it never explicitly contrasts itself with scan_host_config or scan_config_change, which an agent could plausibly confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this to verify MCP configurations are safe before use' gives a clear triggering context (pre-adoption verification of MCP configs). It does not name exclusions or point to alternatives such as audit_config for broader scope or remediation_plan once issues are found, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
auth_coverageA
Analyze authentication coverage across Next.js App Router routes. Detects auth guards (Clerk, NextAuth, Supabase, custom) and reports protected vs unprotected routes. Pass files array with route file contents and middleware content. Example: auth_coverage({files: [{path: 'app/api/users/route.ts', content: '...'}], middleware: '...'})
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Project directory path. When provided, auto-discovers all route, page, layout, and middleware files — no need to pass file contents manually. | |
| files | No | Route and page files from app/ directory (ignored when path is provided) | |
| format | No | Output format | markdown |
| middleware | No | Content of middleware.ts file (ignored when path is provided) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does disclose what is reported (protected vs unprotected routes, which providers are detected), which is valuable given there is no output schema. However, it says nothing about read-only/static-analysis nature, behavior when no input is supplied, or the fact that files/middleware are ignored when path is given.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose and then detection scope, with a compact example at the end that pays for itself by showing the exact input shape. Minor waste is the repetition of 'auth coverage' framing that the tool name already conveys.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations and no output schema, the description partially compensates by describing what the report contains. But with four params and zero required, the guidance to 'pass files array' skips the primary no-arg/`path` workflow, leaving an agent without the complete picture of how to invoke it in the simplest case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3; the schema already explains `path`, `files`, `format`, and `middleware` including the 'ignored when path is provided' rule. The description adds a concrete usage example for the files/middleware combination but omits `path` and `format` entirely, so it neither enhances nor fully mirrors the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (analyze authentication coverage across Next.js App Router routes) and names the concrete capability: detecting Clerk/NextAuth/Supabase/custom auth guards and reporting protected vs unprotected routes. An agent can tell this apart from generic siblings like check_code or full_audit without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (you have route files and middleware you want analyzed) but gives no explicit when-not or alternatives among the many sibling scanners. Worse, it frames input as 'Pass files array with route file contents and middleware content,' which understates the more convenient `path` auto-discovery option documented in the schema, so guidance is partially misleading rather than absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_codeA
Analyze inline code for security vulnerabilities (OWASP Top 10, XSS, SQL injection, insecure patterns). Pass code as a string parameter. For scanning files on disk, use scan_file instead. Example: check_code({code: 'app.get(...)', language: 'javascript'})
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The code snippet to analyze | |
| format | No | Output format: markdown (human) or json (machine-readable for agents) | markdown |
| language | Yes | Programming language of the code | |
| framework | No | Framework context (e.g. express, nextjs, fastapi, react, django) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It implies a non-executing static analysis of a string and shows the caller controls output format via the example/schema, but it says nothing about how findings are produced (heuristics vs. rules), whether anything leaves the machine, or what the report contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the purpose, then the alternative, then an example. The trailing example is slightly redundant given how complete the schema is, but it costs little and clarifies the call shape.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All four parameters are documented and the routing to scan_file is clear, but with no output schema and no annotations the description never says what a result looks like (findings list, severities, CWEs, pass/fail). For a scanning tool whose value is its report, that is a real gap an agent must guess at.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (code, language enum, framework, format all documented), so baseline is 3. The description adds a small but real increment by tying 'pass code as a string' and the example call shape to the code/language pair, reinforcing that a snippet, not a path, is expected.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Analyze inline code') plus concrete scope (OWASP Top 10, XSS, SQL injection, insecure patterns). It explicitly contrasts itself with scan_file, so an agent can distinguish it from that sibling without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit input mode ('Pass code as a string parameter') and names the alternative with its selecting condition ('For scanning files on disk, use scan_file instead'). Nothing about when to pick this vs. a file-based scan is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_commandA
Analyze a shell command for security risks before execution. Returns allow/ask/deny verdict with blast radius, safer alternatives, and context-aware risk assessment. Detects: destructive ops, git history rewrites, secret exposure, data exfiltration, deploy triggers, privilege escalation, database drops.
| Name | Required | Description | Default |
|---|---|---|---|
| cwd | No | Current working directory | . |
| branch | No | Current git branch (for branch-specific risk) | |
| format | No | Output format | json |
| command | Yes | Shell command to analyze |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses the return contract (allow/ask/deny verdict, blast radius, safer alternatives) and enumerates the risk categories detected. The one notable gap is that it never explicitly states the command is not executed by this tool, leaving the agent to infer that from 'analyze'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, both dense with information, front-loaded with the purpose and verdict semantics followed by detection categories. No filler and no repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must explain returns, and it does by naming the verdict scale and the accompanying payload fields. It is nearly complete for a moderately simple 4-param tool; only the non-execution guarantee and the meaning of the 'ask' verdict for the caller are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents command, cwd, branch, and format, making 3 the baseline. 'Context-aware risk assessment' hints that branch and cwd affect the verdict, but the description adds no format or syntax guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description leads with a specific verb and resource ('Analyze a shell command for security risks') and names the timing constraint ('before execution'). This clearly separates it from siblings like check_code, check_project, or scan_staged, which operate on files or repos rather than a single command string.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Before execution' tells the agent exactly where this tool sits in a workflow, which is real usage guidance. It stops short of naming alternatives or stating when not to use it (e.g. to use check_code instead for source files), so it is clear context without exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_dependenciesA
Check npm, PyPI, or Go packages for known security vulnerabilities (CVEs) using the OSV database. Use this before adding new dependencies or to audit existing ones.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format: markdown (human) or json (machine-readable for agents) | markdown |
| packages | Yes | List of packages to check: [{name, version, ecosystem}] |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden; it does disclose the data source (OSV database), which is genuinely useful context. However, it never states that the operation is read-only with no side effects, nor anything about network calls, rate limits, or batch size limits for the packages array.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero filler, with the capability stated first and the usage trigger second. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description never indicates what comes back beyond the implication of CVEs — no mention of severity, fixed versions, or whether transitive dependencies are covered. An agent can tell what the tool does but not whether its results will answer the question it has.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the nested package object documents name, version, and ecosystem with examples, so the schema does the heavy lifting. The description adds no parameter meaning beyond the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: checking npm/PyPI/Go packages for known CVEs against the OSV database. That is concrete and actionable, but it does not differentiate itself from the near-identical sibling scan_dependencies, leaving an agent to guess which of the two to call.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this before adding new dependencies or to audit existing ones" gives two clear triggering scenarios. It stops short of naming exclusions or pointing to the obvious alternative (scan_dependencies), so it is clear context without routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_package_healthA
Check npm packages for typosquat risk, maintenance status, adoption metrics, and deprecation. Use this before adding new dependencies to catch suspicious or risky packages.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format: markdown (human) or json (machine-readable for agents) | markdown |
| packages | Yes | List of package names to check (e.g. ['lodash', 'expres', 'react-qeury']) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It implies a read-only inspection of registry metadata, but never states that nothing is modified, whether it hits the network, or how long a multi-package check takes; it also does not describe what the result contains beyond the four categories named.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler; the capability statement comes first and the usage trigger second. Every clause carries information an agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-only checker with no output schema, the description covers what is inspected and when to run it. It stops short of telling the agent how to interpret or act on results (e.g. what counts as risky), which is the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters (packages list, format enum) are already fully documented in the schema, including the markdown-vs-json intent. The description adds no syntax, batching, or format guidance beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (check) and resource (npm packages) and enumerates the four risk dimensions examined: typosquat, maintenance, adoption, deprecation. It does not distinguish itself from close siblings like scan_hallucinated_packages or check_dependencies, so an agent must infer the split.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger: 'Use this before adding new dependencies to catch suspicious or risky packages.' That is clear context for invocation, but no when-not-to-use condition and no named alternative among the many dependency-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_projectA
Scan multiple files for security vulnerabilities and generate a project-wide security report with a security score. Use this for comprehensive security audits.
| Name | Required | Description | Default |
|---|---|---|---|
| files | Yes | List of files to scan: [{path, content}] | |
| format | No | Output format: markdown (human) or json (machine-readable for agents) | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the outcome (a project-wide report plus a numeric security score) and implies a non-mutating analysis, but says nothing about file-count or size limits, whether it needs network access, or how large projects are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the capability and output stated up front and no filler. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter read-style tool whose schema is fully documented and whose deliverable is named, this is largely complete. The remaining gap is routing against the many overlapping scan/audit siblings, not the call mechanics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters — the files array with path/content and the markdown/json format enum — are fully documented in the schema. The description adds no meaning beyond that, which makes the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and scope: scan multiple files across a project and produce a report with a security score. That is clear, but it never distinguishes itself from siblings like full_audit, deep_scan, or check_code, which read as overlapping capabilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this for comprehensive security audits" hints at the appropriate context, but with 35 sibling tools including full_audit and deep_scan, the description never says which to pick or when this one is wrong. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compliance_reportA
Map security findings to compliance controls (SOC2, PCI-DSS, HIPAA, GDPR, ISO27001, EUAIACT). Scans a directory and groups issues by control. Output includes a summary section at the top; for large projects, findings are truncated to top 50. Use mode=executive for C-level summary. Example: compliance_report({path: '.', framework: 'SOC2'})
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | Report mode: full (detailed) or executive (C-level summary) | full |
| path | Yes | Directory to scan | |
| format | No | Output format: markdown (human) or json (machine-readable for agents) | markdown |
| framework | Yes | Compliance framework |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does meaningful work: it discloses output structure (summary section at top), a truncation limit (top 50 findings on large projects), and an output-shaping mode. It does not state that the scan is read-only/no-write, nor anything about permissions or runtime cost, leaving some behavioral gaps for a directory-scanning tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core action, then output behavior, then the mode hint and a compact example. Every sentence is functional, though the framework enumeration and example add length that could be trimmed given the schema already lists the enum values.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by explaining the report's shape (summary at top, truncation cap) and the executive mode. Remaining gaps are minor: what a finding entry looks like, and whether the operation is purely read-only.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (mode, path, format, framework) are already documented, including enums. The description only echoes the mode=executive meaning and shows an example invocation, adding little beyond the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: map security findings to compliance controls, and enumerates the supported frameworks (SOC2, PCI-DSS, HIPAA, GDPR, ISO27001, EUAIACT). The scope (scan a directory, group issues by control) is concrete. It does not explicitly contrast itself with siblings like check_project or full_audit, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear usage context ('Scans a directory and groups issues by control') and a concrete trigger for a variant ('Use mode=executive for C-level summary'), plus a worked example call. It stops short of stating when-not to use it or which sibling (e.g. generate_policy, audit_config) covers adjacent needs, so no explicit alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deep_scanA
LLM-powered deep security analysis for vulnerabilities that pattern-matching cannot detect: IDOR, business logic flaws, race conditions, stale auth, mass assignment, privilege escalation. Defaults to Claude Haiku 4.5 (~cents per scan); pass model: 'sonnet' for deeper analysis at higher cost. Requires ANTHROPIC_API_KEY or OPENAI_API_KEY env var.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Code to analyze | |
| focus | No | Focus area — narrows the prompt to a specific vulnerability class | all |
| model | No | LLM model. haiku = fast & cheap (default), sonnet = deeper analysis | haiku |
| format | No | Output format | markdown |
| context | No | Additional context (e.g., 'This is a payment endpoint') | |
| language | Yes | Programming language | |
| maxBytes | No | Max prompt size in bytes — caps cost. Code over this limit is truncated. | |
| existingFindings | No | Already-detected findings to avoid duplicating |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden well: it discloses cost ('~cents per scan'), the auth requirement (ANTHROPIC_API_KEY / OPENAI_API_KEY), and the truncation behavior tied to maxBytes. It stops short of describing return structure or failure modes, but the operational context is solid.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tightly packed sentences, front-loaded with the distinguishing capability, then cost/model guidance, then the prerequisite. No wasted phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-param tool with full schema coverage and no output schema, the description supplies the key missing operational facts (cost, auth, model choice). Return-shape expectations are somewhat unaddressed, but the format enum covers output form adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 8 parameters. The description adds model-cost tradeoff context but largely repeats what the schema conveys, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (LLM-powered deep security analysis) and enumerates exactly the vulnerability classes it targets (IDOR, business logic, race conditions, etc.). This clearly distinguishes it from pattern-matching siblings like check_code or scan_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The framing 'vulnerabilities that pattern-matching cannot detect' implicitly tells the agent when to reach for this instead of the pattern-based siblings, and the model guidance (haiku default vs sonnet for depth) aids selection. It doesn't explicitly name alternative tools or state when NOT to use it, keeping it short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_remediationA
Pass a GuardVibe rule ID (e.g. VG154) to get a detailed explanation: risk assessment, exploit scenario, minimum fix, secure alternative, and test strategy. Optionally pass the affected code snippet for context-aware guidance. Example: explain_remediation({rule_id: 'VG402'})
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | Affected code snippet for context | |
| format | No | Output format | markdown |
| rule_id | Yes | GuardVibe rule ID (e.g. VG001, VG402) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does well on response substance by listing exactly what the explanation contains, but says nothing about whether the tool is purely read-only, any auth or rate-limit expectations, or how the format parameter changes the payload shape beyond the enum.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences plus an example, front-loaded with the required input and immediately followed by what comes back. The trailing example is mildly redundant with the schema's own VG402 example, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must convey return values — and it does, enumerating all five explanation components and noting the markdown/json format choice. What remains thin is how the optional code snippet actually alters the guidance returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already documented in structured data. The description adds only the code-snippet rationale ('context-aware guidance') and repeats an example call whose rule ID duplicates the schema's own example — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — explaining a GuardVibe rule's remediation — and enumerates the five deliverables (risk assessment, exploit scenario, minimum fix, secure alternative, test strategy). That enumeration implicitly separates it from action-oriented siblings like fix_code and remediation_plan, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly establishes the trigger condition (you have a rule ID and want an explanation) and the optional enrichment path (pass the code snippet for context-aware guidance). It offers no exclusions or explicit alternatives, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_sarifB
Scan a directory and export results in SARIF v2.1.0 format for CI/CD integration (GitHub, GitLab, Azure DevOps). Returns JSON string.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Directory to scan |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full disclosure burden and only tells us the output format and that a string is returned. It does not say whether 'export' writes a file to disk or only returns the string, whether the operation is read-only, what rules/engine back the scan, or what happens on an unscannable path - all material for a scan+export tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences with no filler; the core action and output format are front-loaded before the return-type note. Nothing repeats the title and nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Without an output schema, the description does its minimum duty by stating 'Returns JSON string', and the SARIF version is a useful detail. However, for a tool with no annotations and no output schema, the file-vs-string ambiguity and the lack of any scope/safety statement leave it only partially complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter whose schema description ('Directory to scan') already covers it at 100% coverage, which sets the baseline at 3. The prose adds no extra semantics such as whether the path must be absolute, whether it recurses, or how it relates to the working directory.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Scan'), resource ('a directory') and a concrete output artifact ('SARIF v2.1.0 format for CI/CD integration'), which is far more informative than a bare name restatement. It stops short of differentiating itself from the similarly-scoped sibling scan_directory, so an agent still has to guess which one produces SARIF.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'for CI/CD integration (GitHub, GitLab, Azure DevOps)' implies the consumption context, but the description never says when to choose this over scan_directory, full_audit, or deep_scan, nor does it state prerequisites (e.g. whether a prior scan or config is needed). Usage is inferred rather than directed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fix_codeA
Pass vulnerable code as a string and get fix suggestions with before/after patches. Returns structured edit instructions (line numbers, severity, confidence). Use verify_fix afterwards to confirm the fix resolved the issue. Example: fix_code({code: '...', language: 'typescript'})
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The code snippet to analyze and fix | |
| format | No | Output format: json (for agent auto-fix) or markdown (human review) | json |
| language | Yes | Programming language of the code | |
| framework | No | Framework context (e.g. express, nextjs, fastapi, react, django) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose meaningful behavior: it returns structured edit instructions rather than applying changes, and it reports line numbers, severity, and confidence. It still doesn't state explicitly that no files are modified (read-only), nor any limits on code size or latency, so a small gap remains for a no-annotation tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads purpose and output shape in the first sentence, then workflow and an example. Every sentence contributes; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description usefully summarizes the return value (before/after patches, line numbers, severity, confidence). Combined with 100% schema coverage, an agent has nearly everything needed; only an explicit read-only/does-not-modify-files statement is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters including the format enum tradeoff (json for agent auto-fix vs markdown for human review). The description adds only a usage example with code and language, not new meaning about format or framework, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('fix_code' → get fix suggestions with before/after patches) and clarifies the input form (code as a string) and output shape (structured edit instructions with line numbers, severity, confidence). An agent can distinguish it from detection-only siblings like check_code and from the follow-up verifier verify_fix without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names the follow-up step ('Use verify_fix afterwards to confirm the fix resolved the issue'), which gives a clear workflow position. However, it does not state when to prefer fix_code over check_code, secure_this, or explain_remediation, so the initial routing decision is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
full_auditA
Single command that runs ALL checks: code scan (429 rules), secret detection, dependency CVEs, config audit, taint analysis, and auth coverage. Returns PASS/FAIL/WARN verdict with deterministic hash. IMPORTANT: If verdict is FAIL or WARN, you MUST call remediation_plan next to get a section-by-section fix checklist — do NOT skip any section. After fixing, call verify_remediation to confirm ALL sections are addressed. Example: full_audit({path: '.'})
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Project root directory | . |
| format | No | Output format | markdown |
| skipDeps | No | Skip dependency vulnerability check | |
| skipSecrets | No | Skip secret scanning |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does substantial work: it discloses the return verdict vocabulary (PASS/FAIL/WARN), the deterministic hash, the full set of checks performed, and a mandatory follow-up chain. It omits things an agent would still want, such as whether the scan is strictly read-only and the expected runtime/cost of running all checks at once.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the capability list, then the critical workflow rule, then an example — a sensible ordering. Slight redundancy between 'do NOT skip any section' and 'confirm ALL sections are addressed', and the '429 rules' detail is decorative, but nothing is wasted at length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry return semantics, and it does at the verdict level (PASS/FAIL/WARN plus hash). For a tool that aggregates six analyses, it says nothing about the structure or size of the report body, which is the main remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters (path, format, skipDeps, skipSecrets) are already documented in the schema. The description only demonstrates path usage via the example and never mentions the skip flags or output format, so it adds little beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (single command running ALL checks) and enumerates exactly what those checks are: code scan with 429 rules, secret detection, dependency CVEs, config audit, taint analysis, and auth coverage. An agent can tell this is the aggregate entry point rather than one of the single-purpose scanners like scan_secrets or check_dependencies.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Very explicit about the downstream workflow: on FAIL/WARN you MUST call remediation_plan, and after fixing, verify_remediation. That is strong conditional routing. It does not, however, say when to prefer this over siblings such as deep_scan, check_project, or security_workflow, so entry-point selection is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_policyB
Auto-detect project stack (Next.js, Supabase, Stripe, Clerk, Prisma, etc.) and generate tailored security policies. Outputs ready-to-use CSP headers, CORS configuration, Supabase RLS policies, rate limiting rules, and security headers based on detected frameworks.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Project root directory to scan | |
| format | No | Output format | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must carry the behavioral burden. It does disclose the key behavior that detection is based on scanning the project stack and that outputs are framework-tailored, which is valuable beyond structured fields. But it leaves critical ambiguity unresolved: whether policies are written to disk or merely returned, whether existing config files are overwritten, and what happens when detection fails.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the detection mechanism followed by the concrete deliverables. The enumeration of output types is dense but every item carries information; nothing is padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description is the only source of behavioral detail. It does well on what artifacts are produced, but omits side-effect semantics (write vs. return), error behavior on unrecognized stacks, and scope of the directory scan required for a two-parameter generation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with only two parameters, both documented in the schema (path as project root, format enum with default). The description adds no syntax, constraints, or meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Uses a specific verb ('generate tailored security policies') plus the mechanism (auto-detect stack) and enumerates the concrete artifacts produced: CSP headers, CORS, RLS policies, rate limiting, security headers. An agent knows exactly what it gets; however, it never contrasts itself with close siblings like policy_check or remediation_plan.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No statement of when to use this versus policy_check (which presumably validates existing policies) or full_audit/remediation_plan. The only usage signal is implicit: you pass a project root and get policies, so the reader must infer the scenario themselves.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_security_docsA
Get security best practices and remediation guidance for a specific topic, framework, or vulnerability type. Covers OWASP Top 10, framework-specific hardening (Next.js, Supabase, Stripe), and secure coding patterns. Returns actionable guidance with code examples.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | Security topic to look up (e.g. "express authentication", "sql injection prevention", "nextjs csrf", "react xss", "owasp top 10") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does disclose the return shape ('Returns actionable guidance with code examples'), which is valuable, but it never clarifies that this is a static knowledge-base lookup rather than an inspection of the caller's repository — a materially ambiguous point given fifteen scan_* siblings that do operate on code.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, generously front-loaded with the purpose and coverage scope before the return-value note. No filler and no redundancy with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter reference lookup with no output schema and no annotations, this covers the what, the topical breadth, and the response format. The one real gap is whether the answer considers the caller's actual codebase or is purely generic reference material.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'topic' parameter already carries a strong enumerated example list, so the schema does the heavy lifting. The description broadens the framing to 'topic, framework, or vulnerability type,' which adds a little taxonomic guidance but no syntax, casing, or granularity advice beyond the examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Get') and resource ('security best practices and remediation guidance'), then enumerates the exact scope: OWASP Top 10, framework-specific hardening for Next.js/Supabase/Stripe, and secure coding patterns. Against a sibling set dominated by scan_*/check_*/audit_* tools, this reads unmistakably as a static reference lookup rather than a scanner.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage context ('for a specific topic, framework, or vulnerability type') but never states when to prefer it over near-neighbors like explain_remediation or remediation_plan, which plausibly overlap on remediation guidance. An agent can infer this is the lookup step, but no explicit routing rule or exclusion is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
guardvibe_doctorA
Check AI host security: MCP configurations, hooks, base URL hijacking, environment variable exposure. NOT the same as audit_config which checks application config files (next.config, .env, headers). Use scope=project (default) for project-only, scope=host to include shell profiles and global AI configs. Example: guardvibe_doctor({scope: 'project'})
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Project root directory | . |
| scope | No | Scan scope: project (default, .claude.json + .cursor/ + .vscode/ + .env), host (+ shell profiles + global MCP configs), full (+ home dir configs) | project |
| format | No | Output format: markdown (human) or json (machine-readable) | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. “Check” implies a read-only diagnostic, and scope-specific scanning behavior is described, but the description does not explicitly confirm that no files are modified or state permission/read-access requirements for host-level scans.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the security purpose, follows with a sibling comparison, then scope guidance and a compact example. No wasted sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, sibling distinction, scope selection, and an example for a moderately complex diagnostic tool. Since there is no output schema, it could say more about what the diagnostic returns, but the core invocation guidance is complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are already documented. The description reinforces scope semantics and provides a usage example, but adds no parameter meaning beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource set: checking AI host security across MCP configurations, hooks, base URL hijacking, and environment variable exposure. It clearly distinguishes itself from audit_config, but does not differentiate from closer-sounding siblings like audit_mcp_config or scan_host_config.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says this is NOT audit_config and gives concrete guidance on scope selection: project by default, host to include shell profiles and global AI configs. It lacks guidance on when to prefer this over overlapping siblings such as audit_mcp_config or scan_host_config.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
policy_checkA
Check project against compliance policies defined in .guardviberc. Use this in CI/CD pipelines to enforce security gates, or before releases to verify compliance requirements are met. Validates custom framework requirements, severity thresholds, required controls, and risk exceptions. Returns pass/fail status with detailed findings per control.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Project root directory | |
| format | No | Output format | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It implicitly signals a read-only validation and describes output shape (pass/fail plus per-control findings), but omits CI-critical behavior such as what happens when .guardviberc is absent or malformed, and whether a failing check surfaces a non-zero exit code.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences, front-loaded with the purpose and then usage, validation scope, and return shape — no filler. The middle enumeration of validated rule types is slightly list-like but each item is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description does the necessary work of stating the return value (pass/fail with detailed findings per control) and the config source. Remaining gaps — missing-config handling and CI exit-code behavior — are minor but real for a gate used in pipelines.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both `path` and `format` are already documented with defaults and an enum. The description only indirectly touches these (the .guardviberc reference relates to `path`) and adds no new semantics, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — check a project against compliance policies defined in .guardviberc — and enumerates what is validated (custom frameworks, severity thresholds, required controls, risk exceptions). That is far more specific than the sibling compliance_report or full_audit, though it never names those siblings to draw the boundary explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives two concrete invocation contexts: CI/CD security gates and pre-release compliance verification. This is clear usage guidance, but there are no exclusions or explicit pointers to alternatives (e.g., when to prefer compliance_report or full_audit instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remediation_planA
Generate a mandatory section-by-section remediation plan from full_audit results. MUST be called after full_audit when verdict is FAIL or WARN. Returns ordered steps for ALL 6 sections (secrets, code, dependencies, config, taint, auth-coverage) with specific tool calls and actions. AI assistants MUST complete every section — skipping sections is not allowed. Example: remediation_plan({path: '.'})
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Project root directory | . |
| format | No | Output format: json for agents (recommended), markdown for humans | json |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden and does well: it discloses the return shape (ordered steps for all 6 named sections with specific tool calls and actions), the mandatory-completion behavior, and the format-driven output. It omits permission/side-effect details, but as a plan generator that is minor.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the core purpose, the sequencing precondition, and the return content, with a concrete example at the end. Slightly repetitive with two MUST statements about section completeness, but every sentence carries routing or behavioral information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, yet the description explains what the result contains (ordered steps across the 6 sections with tool calls) and how format affects it, which is enough for an agent to call it correctly. Permission and error behavior remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with only 2 optional parameters, so the schema already documents path and format (including the enum and default). The description's example call ({path: '.'}) and format note add marginal value but no new semantics; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Generate) and resource (section-by-section remediation plan) with its source (full_audit results) and enumerates the exact 6 sections produced. This clearly differentiates it from siblings like explain_remediation and verify_remediation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger condition: must be called after full_audit when verdict is FAIL or WARN, plus the constraint that all sections must be completed. It does not name alternative sibling tools (e.g. explain_remediation) or state when not to use it, so it falls short of the top mark.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repo_security_postureB
Analyze a repository's overall security posture. Maps sensitive areas (auth, payments, PII, admin, API, infrastructure), identifies high-risk workflows, recommends guard mode, and lists priority fixes.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Repository root path | |
| format | No | Output format | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the analysis outputs and uses 'recommends' and 'lists' to imply a read-only advisory operation rather than a mutating one, but it never states that no files are modified, whether a git repository is required, or whether the analysis is expensive/slow for large repos.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the core purpose first and the deliverables after. The parenthetical area list (auth, payments, PII, admin, API, infrastructure) is dense but each item earns its place by telling the agent what the scan covers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description must carry more weight. It partially compensates by enumerating what the analysis reports, but it does not describe the shape of the result, the guard-mode concept it references, or how the recommended fixes relate to the fix_code/remediation_plan siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with only two simple parameters ('path' as repository root, 'format' enum with default), so the schema already does the work. The description adds nothing about path expectations (absolute vs relative, monorepo roots) or when to choose JSON over markdown, so it stays at baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Analyze a repository's overall security posture') and enumerates the concrete artifacts produced (sensitive-area map, high-risk workflows, guard-mode recommendation, priority fixes). This clearly reads as an aggregate/overview analysis rather than a single-target scan like scan_secrets or check_dependencies, though it never names a sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The 'overall security posture' framing implies this is a high-level entry point rather than a targeted check, which is enough to distinguish it in spirit from scan_file or check_code. However, with near-identical siblings like full_audit, deep_scan, and security_workflow present, the description gives no explicit when-to-use or when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
review_prA
Review a pull request for security issues. Scans only changed lines (diff-only mode) and produces output for GitHub Check Runs, PR comments, or inline annotations. Supports severity gating to block PRs.
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | Base branch to diff against | main |
| path | No | Repository root path | . |
| format | No | Output: markdown (PR comment), json (structured), annotations (GitHub Check Runs) | markdown |
| fail_on | No | Block PR if findings at this severity or above exist | high |
| diff_only | No | Only report findings in changed lines (true) or all findings in changed files (false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it discloses diff-only scanning semantics, the three output surfaces (Check Runs, PR comments, inline annotations) and severity-based blocking. It omits whether the tool mutates anything, what permissions/CI auth it needs, and how blocking is signalled to the caller.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with purpose, then scope, then output and gating. No filler and every clause carries information the agent needs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description covers the return surfaces well enough to act on; all five parameters are schema-documented. What is missing for a CI-integrated mutation-adjacent tool is auth/permission expectations and how the blocking outcome is reported.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both enums are documented there, so the baseline is 3. The description reinforces diff_only and fail_on conceptually ('diff-only mode', 'severity gating to block PRs') but adds no format or semantics beyond the schema, and its 'scans only changed lines' phrasing slightly oversimplifies diff_only=false.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Review a pull request for security issues') and scopes the work to changed lines, which distinguishes it from repo-wide siblings like full_audit, check_project and audit_config. It does not explicitly name the sibling it replaces, so it stops short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'pull request' plus 'diff-only mode', which signals a PR-scoped review, but the description never says when to choose this over scan_staged, scan_changed_files, check_code or full_audit, nor when not to use it. The reader must infer the routing decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_changed_filesA
Scan only files that have changed since a given git ref (branch, commit, or HEAD~N). Ideal for PR checks, pre-push hooks, and incremental CI. Diff-aware by default: returns only findings on newly-added lines (set diff_aware:false for whole changed files).
| Name | Required | Description | Default |
|---|---|---|---|
| base | No | Git ref to diff against (e.g. 'main', 'HEAD~3', commit SHA) | HEAD~1 |
| path | No | Repository root path | . |
| format | No | Output format | markdown |
| diff_aware | No | Report only newly-introduced findings on added lines (true, default) vs. all findings in changed files (false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does explain the key behavioral trait: diff-aware mode is on by default and reports only findings on newly-added lines, with instructions to set diff_aware:false for whole-file scanning. It does not state the read-only/non-destructive nature of the scan or any prerequisites such as needing a git repository, which is a minor gap for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each doing distinct work: scope, use cases, then default behavior with the opt-out. The scoping constraint is front-loaded and nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a four-parameter scan tool with no output schema and no annotations, the description covers purpose, usage context, default behavior, and roughly what is returned. It lacks any safety/read-only statement and repository prerequisite, which would complete the picture given the annotation gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all four parameters are already documented. The description adds a few examples for 'base' (branch, commit, HEAD~N) and clarifies the diff_aware default, but mostly restates what the schema provides; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('scan') applied to a well-scoped resource ('only files that have changed since a given git ref'), so the purpose is unambiguous. However, it never names or contrasts with the closest sibling, scan_staged, which also targets uncommitted changes, leaving the boundary to be inferred.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies concrete use cases ('PR checks, pre-push hooks, and incremental CI'), giving the agent clear when-to-use context. It gives no explicit when-not-to-use or 'use X instead' alternatives, so it falls short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_config_changeA
Compare before/after versions of a config file to detect security downgrades: CORS relaxation, CSP weakening, HSTS removal, debug mode, cookie flag changes, TLS disabling, new hardcoded secrets, removed security headers.
| Name | Required | Description | Default |
|---|---|---|---|
| after | Yes | New config file content | |
| before | Yes | Previous config file content | |
| format | No | Output format | json |
| file_path | No | Config file path for context | config |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses the detection scope and that the operation is a comparison, but it omits whether the tool is read-only, whether it writes anything, whether it requires repository context, and what kind of response it produces.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with a compact, readable list of detection categories. Every element contributes to the tool's purpose, with no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description adequately covers the tool's purpose and detection surface, and the schema fully documents the four parameters. However, with no annotations and no output schema, it should say more about usage boundaries, read-only behavior, and/or expected result shape to be fully complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so before, after, format, and file_path are already documented in the schema. The description does not add any parameter-level meaning beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource: 'Compare before/after versions of a config file to detect security downgrades.' It also enumerates concrete detection categories (CORS relaxation, CSP weakening, HSTS removal, etc.), making the tool's scope clear. It does not explicitly differentiate itself from close siblings such as audit_config or scan_changed_files.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The before/after comparison framing implies when the tool is appropriate, but there is no explicit when-to-use guidance, no exclusions, and no named alternatives. An agent can infer that this tool applies to versioned config comparisons, but must still guess against siblings like audit_config or scan_host_config.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_dependenciesA
Parse a lockfile or manifest (package.json, package-lock.json, requirements.txt, go.mod) and check all dependencies for known CVEs via the OSV database. Reads the file directly. Use this after installing dependencies, during CI, or when auditing existing projects for vulnerable packages.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format: markdown (human) or json (machine-readable for agents) | markdown |
| manifest_path | Yes | Path to manifest file (e.g. 'package.json', 'requirements.txt', 'go.mod') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden; it does disclose that the file is read directly and that lookups go to the OSV database, which implies an outbound network call and a read-only posture. It says nothing about permissions, rate limits, size limits, or whether results are cached, and never clarifies that nothing is modified on disk.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: what it does, what it reads, and when to use it. No filler and the core action is front-loaded in the first clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description should say more about what comes back (CVE ids, severity, affected packages) or about network/auth requirements. The format parameter hints at output shape but the content of a finding is never described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so manifest_path and the format enum are already documented; the description adds only a slightly broader format list (adding package-lock.json) and does not explain path resolution or how the markdown vs json choice affects downstream parsing. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource chain: parse a lockfile/manifest and check dependencies for CVEs via OSV, with the supported file types enumerated. An agent immediately knows what it does, but the description never differentiates it from close siblings such as check_dependencies, check_package_health, or scan_directory, which sound near-identical.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit temporal triggers: after installing dependencies, during CI, or when auditing existing projects. However, it offers no when-not conditions and never names an alternative tool, so an agent facing both scan_dependencies and check_dependencies has no routing rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_directoryA
Scan all files in a directory on disk for security vulnerabilities. Pass a directory path — reads files from filesystem. Returns security score (A-F) and findings. Results may be truncated for large projects — check fileRanking in JSON output for top files. Example: scan_directory({path: './src'})
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Directory path to scan (e.g. './src', '.') | |
| format | No | Output format: markdown (human) or json (machine-readable for agents) | markdown |
| exclude | No | Additional directories to exclude | |
| baseline | No | Path to a previous scan JSON output file for baseline comparison (new/fixed/unchanged findings) | |
| recursive | No | Scan subdirectories |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It helpfully discloses that it reads files from the filesystem, returns a security score and findings, and may truncate results for large projects, but it does not clarify permissions, side effects, or whether any files are modified.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action, followed by concise usage, return, truncation, and example information. Every sentence serves a purpose and there is no unnecessary repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description gives a useful return overview: security score (A-F), findings, possible truncation, and where to check top files in JSON output. It is mostly complete, though a bit more detail on findings structure would help.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains path, format, exclude, baseline, and recursive. The description adds an example path and notes fileRanking in JSON output, but does not add meaning to the other parameters beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: scanning all files in a directory for security vulnerabilities. It is clear what the tool does, though it does not explicitly name sibling alternatives such as scan_file or check_project to sharpen the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Pass a directory path' and the example, but there are no explicit when-to-use versus when-not-to-use guidelines and no mention of alternatives like scan_file for single files or check_project for whole-project checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_fileA
Scan a single file on disk by path for security vulnerabilities. Pass a file path — the tool reads the file itself. For inline code snippets, use check_code instead. The 'agent' format returns the structured guardvibe.agent.v1 contract (finding + exact edit + confidence + verify step). Example: scan_file({file_path: 'src/api/route.ts', format: 'agent'})
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format. 'agent' = machine-actionable guardvibe.agent.v1 (exact edits + confidence + verify) | json |
| file_path | Yes | Absolute or relative path to the file to scan |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations the description must carry the behavioral load, and it does disclose that the tool reads the file itself and what the 'agent' format contract contains (finding, exact edit, confidence, verify step). It omits any mention of output for the other formats and of side effects, but for a read-only-looking scan tool this is solid disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences plus an example; the core action and scope come first, the alternative second, and the format payoff last. Nothing is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description covers the most consequential return case ('agent' format) with enough detail to call correctly. It leaves markdown/json outputs undescribed, a minor gap for a two-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description goes further by explaining the semantic value of the 'agent' enum value (machine-actionable contract with exact edits and confidence) beyond the schema's own wording, plus a concrete usage example.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Scan a single file on disk by path for security vulnerabilities') and makes the scope explicit ('single file', 'by path'), which cleanly separates it from scan_directory and full_audit without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes inline snippets to check_code and clarifies that the caller passes a path rather than code. That is a clear when/when-not split, though it does not distinguish against the many other scan_* siblings (scan_staged, scan_secrets, deep_scan).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_hallucinated_packagesA
Detect AI-hallucinated and slopsquatted packages in a repo — the supply-chain seam commodity SCA misses. OFFLINE (deterministic): flags phantom imports (a package imported in source but absent from every package.json — a classic LLM hallucination tell) and typosquats of popular packages. ONLINE (opt-in, default on; gracefully degrades offline): adds npm-registry truth — packages that return 404 (definitive hallucination) and brand-new low-download packages (slopsquat-registration pattern). Run on AI-generated code at PR time, before npm install. Pass online:false for a fully deterministic, air-gapped scan.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Repository root to scan (default current directory) | . |
| format | No | Output format: markdown (human) or json (guardvibe.slopscan.v1 for agents) | markdown |
| online | No | Query the npm registry for existence/age/downloads. false = deterministic offline-only (phantom imports + typosquats). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load and does so: it discloses the default-on network call, graceful degradation to offline, which checks run in each mode, and what each signal means (404 = definitive hallucination, new low-download = slopsquat pattern). The network/determinism tradeoff is the key behavioral trait an agent needs before calling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then structured as OFFLINE / ONLINE blocks with the opt-out instruction last — easy to scan. Slightly dense with marketing flavor ('supply-chain seam', parenthetical asides), but no sentence is redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, and the description says what is flagged but not the shape of findings or severity levels; the schema's guardvibe.slopscan.v1 hint partially covers this. For a 3-param, zero-required scan tool it is otherwise complete enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns an extra point by explaining the consequence of `online` (registry truth vs deterministic phantom+typosquat checks) and by noting the json output is versioned for agents. `path` and `format` remain schema-only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
A concrete verb ('Detect') plus a specific resource ('AI-hallucinated and slopsquatted packages in a repo'), with the phantom-import and typosquat/404/new-package signatures spelled out. The 'supply-chain seam commodity SCA misses' line separates it cleanly from the generic dependency scanners in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context — run on AI-generated code at PR time, before `npm install` — and states the online:false alternative for air-gapped runs. It stops short of naming sibling tools (e.g. scan_dependencies, check_dependencies) that an agent might otherwise pick, so the routing guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_host_configB
Scan host environment for AI security issues: API base URL hijacking (CVE-2026-21852), credential exposure in shell profiles, .env file leaks, and environment variable sniffing. Checks .env files at project scope; add scope=host to also check shell profiles and global AI configs.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Project root directory | . |
| scope | No | Scan scope: project (.env files only), host (+ shell profiles, global configs), full (+ home dir) | project |
| format | No | Output format | markdown |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden, and it does disclose the concrete categories of checks performed, including a named CVE. It still omits whether the tool is strictly read-only, whether it touches or writes any config, permission requirements, and any runtime/performance characteristics for host-scope scans.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the security-issue inventory before the scope escalation note, with no filler. Slightly list-heavy, but every item conveys a distinct check the agent could not otherwise infer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Three optional parameters, no annotations, and no output schema, so the description must carry more weight than it does. It covers what is scanned and scope escalation, but says nothing about the return shape beyond the `format` param and omits the `full` scope, leaving meaningful gaps for a security-scanning tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both enums are documented in the schema, so the baseline is 3. The description reinforces the project-vs-host distinction for `scope`, but never mentions the third enum value `full` (home dir) or the `format` parameter, so it adds only partial value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Scan host environment for AI security issues') and enumerates the exact issues covered: API base URL hijacking (CVE-2026-21852), credential exposure in shell profiles, .env leaks, and env var sniffing. This clearly separates it from broad scanners like scan_secrets or full_audit, though it never names a sibling to reinforce the distinction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives real escalation guidance: project scope checks .env files, and scope=host adds shell profiles and global AI configs. However, it never says when to prefer this over scan_secrets, audit_config, or scan_config_change, nor when not to run it, leaving the sibling-routing decision to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_secretsB
Scan files and directories for leaked secrets, API keys, tokens, and credentials. Detects high-entropy strings, known API key patterns (AWS, Stripe, OpenAI, GitHub, Supabase), exposed .env files, and missing .gitignore coverage. Returns findings with exact line numbers and remediation steps.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | File or directory path to scan | |
| format | No | Output format: markdown (human) or json (machine-readable for agents) | markdown |
| recursive | No | Scan subdirectories |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It usefully discloses detection scope (entropy heuristics, vendor key patterns, .env exposure, .gitignore gaps) and that findings include line numbers plus remediation steps, but it never states that the operation is read-only/non-mutating, whether it traverses ignored or binary files, or how it behaves on very large trees.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with purpose, then detection coverage, then return shape. Every sentence contributes and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description compensates by describing the return payload (findings with exact line numbers and remediation steps). Detection scope is well covered; the remaining gap is the lack of any read-only/side-effect statement and no mention of scan limits or skip rules.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and all three parameters (path, format, recursive) are documented in the schema, including the enum semantics. The description adds no parameter-level information beyond what the schema already provides, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('Scan files and directories for leaked secrets') and enumerates the detection classes, so the agent knows exactly what it does. It fails to distinguish itself from close siblings such as scan_secrets_history, scan_staged, or scan_file, leaving ambiguity about which secret-scanning entry point to pick.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no mention of alternatives despite several overlapping siblings (scan_secrets_history, scan_staged, scan_changed_files). Usage is only implied by the word 'scan'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_secrets_historyA
Scan git history for leaked secrets. Finds secrets that were committed in the past — even if they were later removed. Marks each finding as 'active' (still in code) or 'removed' (in git history only, needs rotation).
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Repository root path | |
| format | No | Output format | markdown |
| max_commits | No | Maximum number of commits to scan |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full load, and it does disclose a real behavioral trait: findings are labeled 'active' vs 'removed' and 'removed' implies rotation is needed. That is genuinely useful output semantics. It omits what an agent would want to know for an unannotated tool — whether it's read-only (implied but unstated), cost/runtime on large repos, and that the default max_commits=100 truncates the scan.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with the core action, followed by the differentiating detail and the finding classification. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequate for a simple read-only, three-parameter tool with a fully documented schema: the agent knows what it does and what findings look like. It stops short of routing the agent among the many sibling scan tools and doesn't note the commit-cap limitation, so it's viable but not complete for a crowded tool family.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with all three parameters documented, including the enum for format and the default of 100 commits, so the schema does the work. The description adds no parameter-level detail such as what the path must point to or the consequences of raising max_commits. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb+resource ("Scan git history for leaked secrets") with an explicit scope statement that it finds secrets "committed in the past — even if they were later removed." That scope cleanly separates it from the sibling scan_secrets (working-tree scan) without needing to name it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is strongly implied by "in the past — even if they were later removed," so an agent can infer this is the history counterpart to a current-code scan. But no sibling is named and there is no explicit when-not guidance (e.g., use scan_secrets for the working tree, or that the default 100-commit cap limits coverage).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scan_stagedA
Scan git-staged files for security vulnerabilities before committing. Run this before every commit to catch issues early. No input needed — automatically reads staged files. Diff-aware by default: reports only issues on newly-staged lines (set diff_aware:false for whole staged files).
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Output format: markdown (human) or json (machine-readable for agents) | markdown |
| diff_aware | No | Report only findings on newly-staged lines (true, default) vs. all lines in staged files (false) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. It discloses that no input is needed, that staged files are read automatically, and that diff awareness defaults to true, but it does not state whether the scan is read-only, what the output contains, or any repo/permission constraints.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded with the core action and timing. The only minor inefficiency is that 'before committing' and 'before every commit' restate the same timing point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low-complexity schema and no output schema, the description gives enough for an agent to invoke it correctly. It could say more about the return shape or the format parameter, but the schema covers those details adequately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description mentions diff_aware behavior, but this largely repeats the schema's own explanation and does not add syntax, defaults, or edge-case guidance beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: scanning git-staged files for security vulnerabilities. The scope ('git-staged files', 'before committing') clearly separates it from sibling tools that scan directories, changed files, dependencies, or full projects.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to run it before every commit, giving a clear usage occasion. It does not name alternatives or exclusion cases, such as when to prefer scan_changed_files or full_audit instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
secure_promptA
Shift-left security at the prompt level: analyze a raw coding prompt BEFORE any code is written and return a structured enhancement directive that embeds GuardVibe security requirements (auth checks, input validation, webhook signature verification, SQL injection prevention, secrets handling) into the prompt you are about to execute. Deterministic — no LLM, no network: triage verdict NO_MOD (prompt already specific and security-aware → proceed with the ORIGINAL prompt unchanged), LIGHT_MOD (inject missing security constraints only), or HEAVY_MOD (also surface clarifying questions — never invent answers to them). Detects stack (Next.js, Supabase, Clerk, Stripe, Prisma, Express, Hono...) and attack surfaces (auth, payments, file upload, user input, SQL, secrets, redirects) from the prompt text, matches them against GuardVibe's rule set, and returns verdict + intent summary + numbered [rule-id] requirements + rewrite directive. Call this with the user's prompt before generating code; prevents vulnerabilities before code generation instead of scanning after. Example: secure_prompt({raw_prompt: 'add login to my app'})
| Name | Required | Description | Default |
|---|---|---|---|
| context | No | Known stack/framework context if the client has it (e.g. 'Next.js app router, Supabase, Stripe') | |
| raw_prompt | Yes | The user's original coding prompt, verbatim |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so well: deterministic, no LLM, no network, plus the three verdicts and what each implies (NO_MOD proceeds unchanged, HEAVY_MOD surfaces but never invents answers). It omits any mention of latency/limits or how rules are configured, which keeps it just short of the top.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action, then behavior, then example — a logical order with no filler. It is a dense single paragraph, though, and the parenthetical framework/attack-surface lists add bulk that could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description compensates by enumerating the return shape (verdict + intent summary + numbered [rule-id] requirements + rewrite directive). Combined with the verdict semantics and detection scope, an agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description adds value by showing a concrete example invocation and emphasizing that raw_prompt is the verbatim pre-code prompt to be analyzed, clarifying the intended input beyond the schema's 'verbatim' note.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ('analyze a raw coding prompt BEFORE any code is written') and states the concrete return ('structured enhancement directive'). It explicitly distinguishes itself from the sibling scan/check tools by being pre-generation rather than post-hoc scanning.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Call this with the user's prompt before generating code; prevents vulnerabilities before code generation instead of scanning after' names both the trigger and the alternative it replaces. The example call anchors the usage in a concrete scenario.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
secure_thisA
Close the loop on vulnerabilities in code: scan, apply only the fixes that VERIFIABLY land (each candidate edit is re-scanned and rolled back if it fails to resolve the issue or introduces a new one), and return the verified code plus a definition-of-done gate. Prefer this over fix_code+verify_fix when you want a guarantee the fix landed — not just a suggestion. Returns { status: clean|secured|partial|no_autofix, fixedCode, applied[], remaining[], definitionOfDone:{passed,message}, proofTest }. Write fixedCode to disk, then require definitionOfDone.passed before claiming the task complete; anything in remaining[] needs a manual fix. When fixes were applied, proofTest is a runnable regression test (GuardVibe-as-oracle) you can drop into the project to guard against regressions. Example: secure_this({code: '...', language: 'typescript'})
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The code to scan and secure | |
| filePath | No | File path for context-aware analysis (the file is NOT written; apply fixedCode yourself) | |
| language | Yes | Programming language of the code | |
| framework | No | Framework context (e.g. express, nextjs, react) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden, and it does: it discloses that candidate edits are re-scanned and rolled back if they don't resolve the issue or introduce a new one, that the tool does not write files itself, and what the response contains. It also defines the status vocabulary (clean|secured|partial|no_autofix) and the meaning of remaining[] and proofTest, which are exactly the behaviors an agent could not infer.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core purpose and the alternative-route are front-loaded, then return shape, then required workflow, then an example — a sensible ordering. It is dense but slightly overstuffed: the return shape and the 'write fixedCode to disk' instruction overlap, and the example adds little given a 100%-covered schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must describe the return payload, and it does in detail: status enum, fixedCode, applied[], remaining[], definitionOfDone, proofTest. Combined with rollback semantics and the disk-write convention, an agent has everything needed to invoke and act on results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both required parameters and the two optional ones are already documented; the description adds only an example call with code and language. It does not explain how framework or filePath change analysis behavior beyond what the schema states, so this sits at the baseline appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb chain (scan, apply verified fixes, return verified code plus a definition-of-done gate) applied to a concrete resource: vulnerabilities in code. It explicitly names the sibling combination it supersedes (fix_code+verify_fix), so an agent can distinguish it without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit selection rule — 'Prefer this over fix_code+verify_fix when you want a guarantee the fix landed — not just a suggestion' — plus a post-call workflow: write fixedCode to disk, gate completion on definitionOfDone.passed, and treat remaining[] as manual work. When-to-use, when-to-prefer-an-alternative, and what to do next are all stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security_statsA
Show cumulative security statistics, grade trend, and vulnerability fix progress for this project. Use this to demonstrate the value of GuardVibe security scanning over time. Data is stored locally in .guardvibe/stats.json.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Project root path | . |
| format | No | Output format | markdown |
| period | No | Time period for stats | month |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It usefully discloses the data source ('stored locally in .guardvibe/stats.json'), which implies a read of prior scan history rather than a live scan, but it never states that the call is read-only, what happens when no stats file exists yet, or whether prior scans are a prerequisite.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the output content, then the use case, then the storage detail. The middle sentence is slightly promotional but still carries usage signal, so there is little waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no annotations, the description does name the three categories of returned data and the storage location, which is close to sufficient for a read-only reporting tool. The main remaining gap is the empty-state / prerequisite condition (stats only exist after prior scans).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and both enums (format, period) are documented in the schema, so the baseline is 3. The description adds nothing about how 'period' interacts with cumulative totals or what 'path' means relative to the stats file location.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Show') plus three concrete resources: cumulative security statistics, grade trend, and vulnerability fix progress, scoped to 'this project'. That is enough to distinguish it from action-oriented siblings like full_audit or fix_code, though it does not explicitly contrast with reporting siblings such as compliance_report or repo_security_posture.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this to demonstrate the value of GuardVibe security scanning over time' gives a use case, but it is framed as a motivation rather than a decision rule. There is no when-not guidance and no named alternative among the many reporting/audit siblings, so the agent must infer whether this or compliance_report/repo_security_posture fits.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security_workflowA
Get the recommended GuardVibe tool sequence for your current task. Returns which tools to call, in what order, and with what parameters. Use this when unsure which tool to use. Example: security_workflow({task: 'pre_commit'})
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | Current task: writing_code (after edits), pre_commit (before commit), pr_review (reviewing PR), new_project (initial setup), fix_vulnerabilities (fixing known issues), compliance_mapping (audit against framework), dependency_check (check deps), merge_to_main (pre-merge gate), publish_package (pre-publish checks), security_audit (comprehensive audit), incident_response (post-breach investigation), full_remediation (fix ALL security issues across all 6 sections — secrets, code, deps, config, taint, auth) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the return shape (an ordered tool sequence with parameters), which tells the agent this is advisory. However, it never states that it performs no scanning itself, whether the recommendation is static or state-dependent, or what happens if the agent deviates from the sequence — the things an agent most needs to know for a router tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: what it returns, when to use it, and a concrete example — front-loaded with zero waste. The example earns its place by demonstrating invocation, not padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter router with a fully documented enum and no output schema, the description is nearly sufficient — the agent knows what it gets back and when to ask. The remaining gap is that its advisory, non-executing nature and the presence of the direct-execution siblings are implied rather than stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single `task` parameter has 100% schema description coverage including a 12-value enum with per-value parenthetical guidance, so the schema already does the heavy lifting. The description adds an illustrative valid value ('pre_commit') and the framing 'your current task', but contributes no semantics beyond the enum documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Get the recommended GuardVibe tool sequence') and explicitly names the payload: which tools, in what order, with what parameters. This cleanly distinguishes it from the ~38 sibling scanning/fixing tools, which do the actual work rather than route.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this when unsure which tool to use' gives a clear positive trigger, and the example call shows the invocation shape. It stops short of an exclusion (e.g. 'skip this if you already know the right tool'), so an agent must infer that it is a fallback rather than a mandatory first step for every request.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_fixB
Verify that a specific security fix was applied correctly. Re-scans the updated code and checks if the target vulnerability (by rule ID) is resolved. Returns 'fixed', 'still_vulnerable', or 'new_issues' status with details.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Updated code after applying the fix | |
| ruleId | Yes | Rule ID to verify (e.g. VG402) | |
| filePath | No | File path for context-aware analysis | |
| language | Yes | Programming language |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full burden. It does useful work by disclosing the three possible outcomes ('fixed', 'still_vulnerable', 'new_issues') and the fact that it re-scans rather than trusting prior results, but it never says whether the scan is read-only, what permissions or cost/latency are involved, or what 'details' contain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with the purpose, mechanism, and return values front-loaded in that order. No filler, though the final sentence listing statuses could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter tool with no annotations and no output schema, the description covers purpose and outcome vocabulary but omits the sibling disambiguation (verify_remediation) and any statement about side effects or return detail structure. Adequate but with visible gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the four parameters are already documented in the schema and the baseline is 3. The description reinforces that ruleId targets the vulnerability and that code should be the post-fix version, but adds nothing about filePath or language beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Verify') with a concrete resource ('a specific security fix') and states the mechanism (re-scan of updated code, matched by rule ID). It is clear on its own, but it does not distinguish itself from the closely named sibling verify_remediation, leaving ambiguity for an agent choosing between the two.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: call this after applying a fix to confirm the vulnerability is gone. There is no explicit when-to-use/when-not guidance and no mention of the overlapping sibling verify_remediation, so an agent must infer the routing decision from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_remediationA
Compare before/after audit results to verify ALL sections were addressed. MUST be called after completing remediation to confirm success. Runs a fresh audit and compares against the before snapshot. Explicitly flags skipped sections and refuses to return 'complete' status unless every section is addressed. Pass the before audit hash or let it re-run. Example: verify_remediation({path: '.', before_hash: 'abc123'})
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Project root directory | . |
| format | No | Output format | json |
| before_hash | No | Result hash from the initial full_audit (for tracking) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it discloses that a fresh audit is executed (a non-trivial side effect), that a before-snapshot is compared, that skipped sections are flagged, and that 'complete' is withheld unless everything is addressed. It omits cost/runtime and whether the tool writes anything to disk, which keeps it below 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and the mandatory-call rule before the mechanics, and almost every sentence adds information. The trailing example is somewhat redundant given 100% schema coverage and three short parameters, costing a bit of tightness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description partially compensates by describing what the result conveys (skipped-section flags, refusal of 'complete' status). It does not sketch the actual return shape or the format parameter's effect, leaving a small gap for a verification tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds real meaning: it explains that before_hash may be supplied 'or let it re-run', clarifying the consequence of omitting an optional parameter beyond the schema's terse 'for tracking' note. The example call reinforces which keys matter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Compare before/after audit results to verify ALL sections were addressed', which is clearly distinct from full_audit and remediation_plan. It does not, however, differentiate itself from the close sibling verify_fix, which an agent could easily confuse with this tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'MUST be called after completing remediation to confirm success' gives an unambiguous trigger condition, and 'Pass the before audit hash or let it re-run' resolves the optionality decision. It stops short of naming when-not-to-use cases or pointing at verify_fix/explain_remediation as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
39 tool updates
v3.66.0- Changed
analyze_cross_file_dataflow2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / files / items / additionalPropertiesRemoved value: -false
- Changed
analyze_dataflow1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
audit_config1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
audit_mcp_config1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
auth_coverage2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / files / items / additionalPropertiesRemoved value: -false
- Changed
check_code1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
check_command1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
check_dependencies2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / packages / items / additionalPropertiesRemoved value: -false
- Changed
check_package_health1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
check_project2 fields changed- removed
Input schema / additionalPropertiesRemoved value: -false - removed
Input schema / properties / files / items / additionalPropertiesRemoved value: -false
- Changed
compliance_report1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
deep_scan1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
explain_remediation1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
export_sarif1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
fix_code1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
full_audit1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
generate_policy1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
get_security_docs1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
guardvibe_doctor1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
policy_check1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
remediation_plan1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
repo_security_posture1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
review_pr1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
scan_changed_files1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
scan_config_change1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
scan_dependencies1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
scan_directory1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
scan_file1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
scan_hallucinated_packages1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
scan_host_config1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
scan_secrets1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
scan_secrets_history1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
scan_staged1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
secure_prompt1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
secure_this1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
security_stats1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
security_workflow1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
verify_fix1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
- Changed
verify_remediation1 field changed- removed
Input schema / additionalPropertiesRemoved value: -false
18 tool updates
v3.35.1- Added
analyze_cross_file_dataflow - Added
analyze_dataflow - Added
auth_coverage - Added
check_dependencies - Added
check_project - Added
deep_scan - Added
explain_remediation - Added
full_audit - Added
generate_policy - Added
get_security_docs - Added
guardvibe_doctor - Added
policy_check - Added
scan_changed_files - Added
scan_config_change - Added
scan_dependencies - Added
scan_host_config - Added
scan_secrets - Added
security_stats
18 tool updates
v3.30.0- Removed
analyze_cross_file_dataflow - Removed
analyze_dataflow - Removed
auth_coverage - Removed
check_dependencies - Removed
check_project - Removed
deep_scan - Removed
explain_remediation - Removed
full_audit - Removed
generate_policy - Removed
get_security_docs - Removed
guardvibe_doctor - Removed
policy_check - Removed
scan_changed_files - Removed
scan_config_change - Removed
scan_dependencies - Removed
scan_host_config - Removed
scan_secrets - Removed
security_stats
1 tool update
v3.27.0- Changed
check_dependencies1 field changed- added
Input schema / properties / formatAdded value: +{ + "default": "markdown", + "description": "Output format: markdown (human) or json (machine-readable for agents)", + "enum": [ + "markdown", + "json" + ], + "type": "string" +}
TDQS
Scored across 39 tools
The descriptions make an effort to distinguish similar tools, e.g. scan_file vs check_code and audit_config vs guardvibe_doctor. However, the set still contains many overlapping scan/audit entry points such as full_audit, check_project, scan_directory, deep_scan, scan_staged, scan_changed_files, and review_pr, which could easily be misselected. Boundaries are documented but not clean enough for high confidence.
Many tools follow a verb_noun pattern (scan_file, scan_secrets, check_dependencies, generate_policy), but the set also includes noun_verb forms (compliance_report, policy_check, security_stats, auth_coverage) and other styles like full_audit, secure_this, guardvibe_doctor, and deep_scan. The names are generally readable, but the convention is mixed rather than predictable.
39 tools is heavy for an MCP server and likely exceeds what an agent can reliably navigate without a routing layer. While security auditing is broad, the surface includes many closely related scanners and verifiers that could be consolidated. The count feels oversized relative to the core workflows.
The surface covers a very broad security lifecycle: prompt hardening, code/config/secret/dependency scanning, dataflow and auth analysis, remediation planning, fix application, verification, compliance reporting, and CI export. Coverage is strong, with only minor gaps around consolidated workflows or direct runtime/dynamic testing. Overall it is complete for a static application-security auditing domain.
Maintenance
Related MCP Connectors
Zero-config MCP security scanner for AI-generated apps. 25K+ vulnerability patterns.
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
Security scanner for AI-written code: SAST, secrets, dependencies, IaC, containers and DAST.
Zero-install security baseline for AI coding agents — OWASP/CWE-cited rules over MCP.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceSecurity scanner for MCP servers and AI-generated code. Detects leaked API keys, PII, prompt injection, and MCP misconfigs with A-F security grades.MIT
- AlicenseNot gradedqualityFmaintenancePredeploy security scanner for AI-generated code. 80+ vulnerability patterns across secrets, auth, injection, config, Supabase, and logging. Runs locally, code never leaves your machine. Optional x402 witnessed attestation.66 npmApache 2.0
- AlicenseNot gradedqualityCmaintenanceOpen-source AI code review MCP server for local git diff auditing with deterministic security rules and AI-powered analysis using any OpenAI-compatible model.4MIT
- AlicenseNot gradedqualityCmaintenanceSecurity scanner for MCP servers — vet an MCP before you wire it into an agent. Detects prompt-injection, credential exfiltration (via taint analysis), RCE, and supply-chain risks, and catches cross-server exfil chains no single server reveals. Zero-dependency local CLI, SARIF output, CI-gateable, no account.32 npmMIT