Skip to main content
Glama
goklab

guardvibe

by goklab

GuardVibe

npm version License: Apache-2.0 Node.js CI npm provenance codecov

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 intel daily 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_prompt acts 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 guardvibe and you're scanning

  • No 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_code tool 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; dangerouslyAllowBrowser flags → drop; sandbox bypass flags (unsafe/noSandbox/allowEval) → drop; agent loops → add maxSteps; 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 VG1274 the git-diff OS command injection through gitDiff() below 2.0.7 (CVE-2026-110634), VG1275 the 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), VG1276 the postal-mime quadratic RFC 2047 decoding DoS (GHSA-f2hq-32vh-53cc), VG1277 the Electron compromised eMudhra intermediates residual window (CVE-2026-115570) and VG1278 the 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 VG1268 the zod unbounded array issue accumulation memory exhaustion below 4.6.6 (CVE-2023-54404), VG1269 the @graphql-tools/utils mergeIncrementalResult prototype pollution residual pin (CVE-2026-114604), VG1270 the undici excessive content-encodings process crash residual window (CVE-2026-109869), VG1271 the body-parser trailing-bytes decoder crash (CVE-2026-111181), VG1272 the multer pending async fileFilter crash residual window (CVE-2026-113872) and VG1273 the @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 VG1263 the Next.js residual window for the Image Optimization RCE, the use cache typed-array RCE and the Server Actions DoS (GHSA-2464-fhr4-w9xw, GHSA-673q-mjm6-r5xr, CVE-2026-94482), VG1264 and VG1265 the DOMPurify SAFE_FOR_TEMPLATES shadow-root bypass and IN_PLACE hook-detached subtree XSS (GHSA-cg2g-xh64-v4q7, GHSA-mrv2-3pqr-j5jr), VG1266 the @sentry/nextjs middleware bypass under the tunnel route (CVE-2026-114139) and VG1267 the 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 VG1261 the 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, and VG1262 the 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 VG1256 the MCP TypeScript SDK HTTP-server memory exhaustion, cross-session task access and cross-client message delivery (CVE-2026-111768 / 111767 / 111770), VG1257 the follow-redirects credential-header leak on cross-origin redirects (CVE-2026-111756 / 111755), VG1258 the markdown-it quadratic-time rendering DoS pair (CVE-2026-111758 / 111759), VG1259 the Vite / launch-editor dev-server command injection on Windows (CVE-2026-112942 / 112943) and VG1260 the 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 VG1254 the Qwik server crash from a single unauthenticated request carrying a resource thenable in the qwik-json body (CVE-2026-84994) and VG1255 the 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 VG1249 the Backstage Sentry Scaffolder actions SSRF and integration token disclosure (CVE-2026-106459), VG1250 the Actual Sync Server CORS proxy GitHub allowlist prefix bypass that leaks private repositories (CVE-2026-57449), VG1251 the JHipster generated-app reactive sort SQL injection and Blob ContentType stored XSS across generator-jhipster and react-jhipster (CVE-2026-107375, CVE-2026-107303), VG1252 the PraisonAI AgentOS unauthenticated network-exposed default (CVE-2026-61426) and VG1253 the 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 VG1244 the TanStack Start unauthenticated reflected XSS through server-function responses across start-server-core, react-start, solid-start and vue-start (CVE-2026-102989), VG1245 the OpenNext Cloudflare cache interception middleware bypass via percent-encoded paths (CVE-2026-100409), VG1246 the Claude Code plugin hash pin bypass for 2.1.64–2.1.178 (CVE-2026-86063), VG1247 the Ghost cluster of eight advisories fixed in 6.67.0 (bookmark card and theme translation RCE, stored XSS, invite token disclosure) and VG1248 the 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 VG1239 the Handlebars own-property prototype check bypass on the end-of-life 3.x line (CVE-2026-106445), VG1240 the shell-quote quote() newline-in-operator command injection for 1.1.0–1.8.3 (CVE-2026-9277), VG1241 the Backstage Scaffolder task state validation residual window (CVE-2026-106500), VG1242 the OpenZeppelin Confidential Contracts encrypted handle disclosure (GHSA-29h2-jr22-frmh) and VG1243 the 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 VG1234 the TinaCMS self-hosted auth bypass that accepts tokens from any TinaCloud app (CVE-2026-63506), VG1235 the File Viewer legacy DOC renderer DOM XSS (CVE-2026-91127), VG1236 the BSV wallet toolbox unchecked storage-supplied output scripts (CVE-2026-56744), VG1237 the Flowise Python validator bypass and NodeVM puppeteer sandbox escape (CVE-2026-73487, CVE-2026-73483) and VG1238 the 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 VG1229 the fast-jwt algorithm confusion, unsigned token acceptance and claim-validator bypass cluster (CVE-2026-107722, CVE-2026-107720, CVE-2026-107723, CVE-2026-107724), VG1230 the mariadb connector SQL injection and memory disclosure residual window (CVE-2026-107385, CVE-2026-107384, CVE-2026-107383), VG1231 the msgpack5 streaming decoder stack exhaustion and truncated map32 crash (CVE-2026-107300, CVE-2026-107302), VG1232 the Vendure Admin Dashboard stored XSS (CVE-2026-63459) and VG1233 the 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 VG1224 the Backstage Scaffolder task data exposure and action input authorization bypass (CVE-2026-106501, CVE-2026-106503), VG1225 the Backstage TechDocs mkdocs.yml code execution and SSRF cluster (CVE-2026-106558, CVE-2026-106510, CVE-2026-106455 and three more), VG1226 the Backstage backend-defaults service credential restriction bypass (CVE-2026-106492), VG1227 the Backstage catalog placeholder resolution SSRF (CVE-2026-106498) and VG1228 the 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 VG1219 the 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), VG1220 Payload 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), VG1221 the Quasar SSR meta-tag XSS, User-Agent ReDoS, dev error page environment disclosure and Icon Genie path traversal cluster (CVE-2026-106102 to 106107), VG1222 the Next.js Image Optimization SSRF residual window 16.3.6–16.3.7 (CVE-2026-94483) and VG1223 the 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 VG1213 the 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), VG1216 Nx command injection through git revisions and @nx/docker release config plus the world-accessible daemon socket (CVE-2026-104854, CVE-2026-104859), VG1217 shell-quote quote() command injection after a comment token (CVE-2026-102422) and VG1218 MCP 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 VG1208 Strapi unauthenticated private-field filtering that leaks admin password-reset tokens (CVE-2023-22894, in CISA KEV), VG1209 Capacitor Android/iOS remote content loaded at the app origin through the internal HTTP proxy path (CVE-2026-103922), VG1210 compression memory-leak DoS on premature response close (CVE-2026-87776), VG1211 prosemirror-view XSS through pasted HTML (CVE-2026-104847) and VG1212 @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 VG1203 source-map-js indexed source-map offset event-loop DoS (CVE-2026-93749), VG1204 proxy-addr IP spoofing through an IPv4-mapped IPv6 trust subnet that matches every client (CVE-2026-90711), VG1205 simple-git unsafe-operation guard bypasses — trailer command config, config includes, abbreviated long options and the VISUAL editor (CVE-2026-102826/102827/102828/102829), VG1206 Seroval fromJSON thenable assimilation and unbounded TypedArray allocation (CVE-2026-104846/104845) and VG1207 Tinypool 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 VG1198 figlet whitespaceBreak infinite-loop DoS (CVE-2026-96780), VG1199 @yeger/turbo-graph unauthenticated network-exposed task execution via /api/run (CVE-2026-59160), VG1200 Payload alt-text plugin authorization bypass through an omitted overrideAccess (CVE-2026-59965), VG1201 Mockoon unauthenticated admin API with wildcard CORS (CVE-2026-59148) and VG1202 libp2p 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: VG1195 Next.js 10.x–11.x for the AVIF/libheif image-optimizer RCE (GHSA-2xp9-vwfh-vxw4, critical), VG1196 end-of-life @angular/router lines (19.x and older) for the SSR matrix-parameter DoS (CVE-2026-101896), and VG1197 the original mcp-from-openapi / FrontMCP $ref SSRF 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 VG1190 basic-ftp quadratic directory-listing parser DoS (CVE-2026-102990), VG1191 @a2ui/web_core openUrl javascript: URI execution from agent-supplied buttons (CVE-2026-10032, critical), VG1192 Trigger.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) and VG1194 probe-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), VG1187 vm2 sandbox escape cluster residual window (12 advisories, critical), VG1188 Piscina ThreadPool options prototype-pollution RCE (CVE-2026-102992, critical) and VG1189 devalue 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 VG1180 NestJS microservices nested message pattern crash (CVE-2026-102281), VG1181 axios prototype-pollution gadget / fetch maxRedirects / HTTP/2 / ReDoS cluster residual window (7 advisories), VG1182 @grpc/grpc-js getAuthContext unauthorized certificate (CVE-2026-101916), VG1183 Fastify not-found auth bypass and validation bypass cluster (4 advisories) and VG1184 Angular 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 VG1175 Next.js next/og ImageResponse remote code execution residual window (GHSA-vcvr-r3jv-pc5j, critical), VG1176 Nodemailer addressparser quadratic backtracking DoS past 9.1.0 (2 advisories), VG1177 engine.io protocol revision mismatch crash (CVE-2026-102599), VG1178 webpack-dev-middleware publicPath path traversal (CVE-2026-76844) and VG1179 Electron 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 VG1170 Cline Hub dashboard cross-origin WebSocket hijacking (CVE-2026-59723), VG1171 @xhmikosr/decompress symlink-chain path traversal (CVE-2026-101894, critical), VG1172 brace-expansion stack-exhaustion DoS on nested and comma-chained braces (2 advisories), VG1173 undici WebSocket crash / BalancedPool TLS check drop / cache poisoning (3 advisories) and VG1174 joi isoDate() quadratic regex DoS (GHSA-6h2x-m376-mqjq).

New in v3.44.x

  • SSR, package-manager and dev-tool gaps closed — v3.44.0 adds VG1165 Angular SSR infinite-loop DoS on a malformed DOCTYPE (CVE-2026-101895, the releases that fixed last month's SSR advisories), VG1166 pnpm 12 pre-release lockfile symlink escape (GHSA-2rx9-3g3h-c2jv), VG1167 claude-code-templates Studio server unauthenticated command injection (CVE-2026-73222), VG1168 OpenClaw Feishu per-account disablement bypass (2 advisories) and VG1169 DOCX 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 VG1160 smol-toml six-byte infinite-loop DoS (CVE-2026-85730), VG1161 n8n expression sandbox escape / SSRF / ReDoS / OAuth registration cluster (5 advisories), VG1162 FrontMCP / mcp-from-openapi $ref SSRF fix bypass (CVE-2026-59973), VG1163 node-opcua client socket leak (CVE-2026-68904) and VG1164 Plate DOCX export SSRF (CVE-2026-65842).

  • Widest-reach gaps of the month closed — v3.42.0 adds VG1153 nanoid size-overflow that freezes every later ID to one constant string (CVE-2026-73086), VG1154 mysql2 plaintext-password auth downgrade, VG1159 Nodemailer addressparser quadratic DoS, VG1157 toml prototype pollution + recursion crash, VG1158 SVGO removeScripts XSS bypass, and residual windows for the September pnpm path-traversal / proxy-secret cluster (VG1155) and Orval $ref SSRF (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: VG1141 js-yaml merge-key CPU exhaustion, VG1136 browserslist custom-stats prototype write, VG1135 engine.io WebTransport crash, VG1137 faker helpers.fake() code execution, VG1134 mariadb 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 VG1129 Orval generated-client code-injection RCE cluster (11 advisories, CVE-2026-62681 and more), VG1130 Astro AVIF/libheif image-optimization RCE (GHSA-26w7-cxv4-gfx2, CVSS 9.8), VG1131 Vendure external-auth account takeover (CVE-2026-63472), VG1132 MapLibre GL DOM.sanitize() zero-click XSS (CVE-2026-85061, CVSS 10.0), and VG1133 yayson prototype pollution (CVE-2026-61534). v3.37.0 added VG1128 ws memory-exhaustion DoS + uninitialized memory disclosure (CVE-2026-48779 / CVE-2026-45736) and corrected VG917's caret/tilde matching. v3.36.0 added VG1124 @bytebase/dbhub MCP-server DNS-rebinding SQL execution + read-only bypass (CVE-2026-61742/-61788), VG1125 Unleash missing-await permission bypass + cross-project IDOR (CVE-2026-77426), VG1126 Elysia multipart quadratic-CPU DoS (CVE-2026-56669), and VG1127 request-filtering-agent process crash (CVE-2026-62985). v3.35.0 added VG1119 SunEditor sanitizer-bypass stored XSS (CVE-2026-59167, CVSS 10.0), VG1120 sharp bundled-libheif RCE residual window (GHSA-rgj7-g3m4-5g8c, 0.33.3–0.35.3), VG1121 @roomi-fields/notebooklm-mcp MCP-tool path traversal (CVE-2026-61647), VG1122 9router LLM-router auth-bypass cluster (CVE-2026-56681/-56675/-56676/-56679), and VG1123 deepstream PATCH_MULTI permission-bypass residual (CVE-2026-63116). v3.34.0 added VG1115 Next.js AVIF/libheif RCE + Windows-hosted RCE (GHSA-2xp9-vwfh-vxw4 / CVE-2026-75604, CVSS 9.5), VG1116 @clerk/clerk-react 5.x org/billing/reverification authorization bypass (CVE-2026-42349), VG1117 @zereight/mcp-gitlab unauthenticated file read / SSRF / DNS rebinding (CVE-2026-61560/-61559/-61568), and VG1118 PostCSS sourceMappingURL residual window (GHSA-fxqj-rqcc-2cmp / GHSA-r28c-9q8g-f849). v3.32-3.33 added VG1109-VG1114: crypto-js WordArray.random() insufficient entropy, jsii-diff command injection, the keyv/cacheable "ChainDrop" npm supply-chain worm, React2Shell react-server-dom-* RCE, @trigger.dev/core prototype 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/@injectivelabs IOCs, 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 more

  • OWASP MCP Top 10 alignment — VG1068 flags MCP / AI tool definitions whose description, instructions, or systemPrompt fields carry prompt-injection markers (ignore previous instructions, you are now, jailbreak mode, system prompt:, override safety, …); pair with VG1063 which catches dangerouslyDisableSandbox: true in agent runtimes

  • Inline suppress — // guardvibe-ignore VG001 silences individual findings per-line

  • CLI-first approach — npx guardvibe audit, npx guardvibe scan, npx guardvibe doctor all work standalone without MCP

  • Embedded remediation plan — remediation_plan generates a section-by-section fix checklist after every audit

  • Score reflects all sections — security score now factors code, dependencies, config, secrets, auth coverage, and taint analysis

  • Gitignored secrets excluded — files matched by .gitignore are automatically skipped during secret scanning

  • Taint 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

npx guardvibe

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)

guardvibe doctor

Not supported

Not supported

Auto-fix suggestions for AI agents

fix_code tool

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 claude

Creates .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 cursor

Creates .cursor/mcp.json and .cursorrules with security rules. Restart Cursor after setup.

Gemini CLI

npx guardvibe init gemini

Creates ~/.gemini/settings.json MCP config and GEMINI.md security rules.

Codex (OpenAI)

codex mcp add guardvibe -- npx -y guardvibe

VS 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 + Gemini

Pre-commit hook

npx guardvibe hook install   # Blocks commits with critical/high findings
npx guardvibe hook uninstall # Remove hook

CI/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 comments

What 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 unchanged

  • LIGHT_MOD — intent is clear but security constraints are missing → inject requirements only

  • HEAVY_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 app

After (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

check_code

Analyze a code snippet for security issues

check_project

Scan multiple files with security scoring (A-F)

scan_directory

Scan a project directory from disk

scan_staged

Pre-commit scan of git-staged files — diff-aware (blocks only newly-staged lines; diff_aware:false for whole files)

scan_dependencies

Check all dependencies for known CVEs (OSV) — annotates each vulnerable package with reachability (is it actually imported in your source?)

scan_secrets

Detect leaked secrets, API keys, tokens

check_dependencies

Check individual packages against OSV

check_package_health

Typosquat detection, maintenance status, adoption metrics

compliance_report

Map security findings to compliance controls (SOC2, PCI-DSS, HIPAA, GDPR, ISO27001, EU AI Act)

export_sarif

SARIF v2.1.0 export for CI/CD integration

get_security_docs

Security best practices and guides

fix_code

Auto-fix suggestions with concrete patches for AI agents

secure_this

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_config

Audit project configuration files for cross-file security misconfigurations

generate_policy

Detect project stack and generate tailored security policies (CSP, CORS, RLS)

review_pr

Review PR diff for security issues with severity gating

scan_secrets_history

Scan git history for leaked secrets (active and removed)

policy_check

Check project against compliance policies defined in .guardviberc

analyze_dataflow

Track tainted data flows from user input to dangerous sinks

analyze_cross_file_dataflow

Cross-file taint analysis — track tainted data across module boundaries

check_command

Analyze shell commands for security risks before execution

scan_config_change

Compare config file versions to detect security downgrades

repo_security_posture

Assess overall repository security posture and map sensitive areas

explain_remediation

Get detailed remediation guidance with exploit scenarios and fix strategies

scan_file

Real-time single-file scan — designed for post-edit hooks

scan_changed_files

Scan only git-changed files — for PRs and incremental CI; diff-aware (only newly-added lines; diff_aware:false for whole files)

security_stats

Cumulative security dashboard — scans, fixes, grade trend over time

guardvibe_doctor

Host security audit — CVE-2025-59536, CVE-2026-21852, MCP config, env scanner

audit_mcp_config

Audit MCP server configurations for hook injection, file:// abuse, sensitive paths

scan_host_config

Scan shell profiles, .env files for base URL hijack and credential sniffing

verify_fix

Verify a security fix was applied correctly — returns fixed/still_vulnerable/new_issues

security_workflow

Get recommended tool workflow for your current task (writing, pre-commit, PR review, etc.)

auth_coverage

Auth coverage map — enumerate routes, parse middleware matchers, detect auth guards, report coverage %

deep_scan

LLM-powered deep analysis — IDOR, business logic, race conditions, auth bypass. Defaults to Claude Haiku 4.5 (~cents/scan). Pass model: 'sonnet' for deeper analysis. CLI: npx guardvibe deep-scan <file> --focus idor

full_audit

Single source of truth — runs ALL checks in one call, returns PASS/FAIL/WARN verdict + score + coverage % + deterministic result hash

remediation_plan

Remediation plan — generates section-by-section fix checklist after audit

verify_remediation

Remediation verification — compares before/after audit, flags skipped sections

secure_prompt

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

scan_hallucinated_packages

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: npx guardvibe slopscan [path] --offline

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 every package.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-awesome

Plugins 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

id

string

Yes

Unique rule ID (e.g., "CUSTOM001")

name

string

Yes

Human-readable rule name

severity

string

Yes

critical, high, medium, low, or info

owasp

string

Yes

OWASP category mapping

description

string

Yes

What the rule detects

pattern

RegExp

Yes

Regex pattern to match vulnerable code (use /g flag)

languages

string[]

Yes

File types to scan

fix

string

Yes

How to fix the issue

fixCode

string

No

Copy-paste secure code example

compliance

string[]

No

SOC2/PCI-DSS/HIPAA control IDs

Loading Plugins

Plugins are loaded from three sources:

  1. Auto-discovery: Any installed npm package matching guardvibe-rules-* or @guardvibe/rules-*

  2. Config-specified: Packages listed in .guardviberc plugins array

  3. Local paths: Relative paths in .guardviberc plugins array

// .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 production

Performance

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:

  1. 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.

  2. Check the config path. Run npx guardvibe init claude again and verify the output shows the correct config file location (.mcp.json in your project root for Claude Code, .cursor/mcp.json for Cursor).

  3. Re-run init to upgrade. When upgrading GuardVibe, re-run npx guardvibe init claude — .mcp.json is 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 to npx guardvibe hook install and npx guardvibe ci github (since v3.1.3) — both are version-pinned at install/generate time and re-run to upgrade.

  4. 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.

  5. Verify Node.js version. GuardVibe requires Node.js >= 18.0.0. Check with node --version.

  6. Check npx cache. If you upgraded GuardVibe and the old version is cached, run npx -y guardvibe@latest to 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 VG001 on the same line, or // guardvibe-ignore-next-line VG001 on the line above. Supports //, #, and <!-- --> comment styles.

  • Config exclusion: Add the rule ID to rules.disable in .guardviberc:

    { "rules": { "disable": ["VG030"] } }
  • Path exclusion: Add directories to scan.exclude in .guardviberc:

    { "scan": { "exclude": ["fixtures/", "test-data/"] } }

Pre-commit hook issues

  • Hook not running: Verify the hook file exists at .git/hooks/pre-commit and is executable (chmod +x .git/hooks/pre-commit).

  • Hook blocking valid commits: Use git commit --no-verify to 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_dependencies and check_dependencies tools 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

rules.disable

string[]

[]

Rule IDs to skip during scanning

rules.severity

Record<string, string>

{}

Override severity for specific rules

scan.exclude

string[]

[]

Glob patterns for directories/files to skip

scan.maxFileSize

number

512000

Maximum file size in bytes (files larger than this are skipped)

plugins

string[]

[]

npm package names or local paths to load as plugins

compliance.frameworks

string[]

--

Compliance frameworks to map against (SOC2, PCI-DSS, HIPAA, GDPR, ISO27001)

compliance.failOn

string

"high"

Minimum severity that causes compliance failure

compliance.exceptions

PolicyException[]

[]

Approved exceptions with expiration dates

compliance.requiredControls

string[]

--

Controls that must pass regardless of exceptions

scoring.densityModel

"linear" | "exponential"

"linear"

Score decay curve. linear matches pre-v3.0.50 (cliff at density 5). exponential keeps resolution past density 5 — smoother decay for large repos. Severity caps (1+ critical → max C/60, 1+ high → max B/75) apply under both.

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 signatures

  • 2FA 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-pushed

  • Minimal CI permissions — GitHub Actions workflows use permissions: contents: read only

  • Minimal, 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 tools
analyze_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: '...'}]})

NameRequiredDescriptionDefault
pathNoProject directory path. When provided, auto-discovers all JS/TS files — no need to pass file contents manually.
filesNoList of files to analyze (ignored when path is provided)
formatNoOutput formatmarkdown

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

NameRequiredDescriptionDefault
codeYesCode to analyze for tainted data flows
formatNoOutput formatmarkdown
languageYesLanguage (JS/TS only)

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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: '.'})

NameRequiredDescriptionDefault
pathYesProject root directory to audit
formatNoOutput formatmarkdown

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
pathNoProject root directory to scan.
formatNoOutput formatmarkdown

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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: '...'})

NameRequiredDescriptionDefault
pathNoProject directory path. When provided, auto-discovers all route, page, layout, and middleware files — no need to pass file contents manually.
filesNoRoute and page files from app/ directory (ignored when path is provided)
formatNoOutput formatmarkdown
middlewareNoContent of middleware.ts file (ignored when path is provided)

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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'})

NameRequiredDescriptionDefault
codeYesThe code snippet to analyze
formatNoOutput format: markdown (human) or json (machine-readable for agents)markdown
languageYesProgramming language of the code
frameworkNoFramework context (e.g. express, nextjs, fastapi, react, django)

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

NameRequiredDescriptionDefault
cwdNoCurrent working directory.
branchNoCurrent git branch (for branch-specific risk)
formatNoOutput formatjson
commandYesShell command to analyze

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
formatNoOutput format: markdown (human) or json (machine-readable for agents)markdown
packagesYesList of packages to check: [{name, version, ecosystem}]

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
formatNoOutput format: markdown (human) or json (machine-readable for agents)markdown
packagesYesList of package names to check (e.g. ['lodash', 'expres', 'react-qeury'])

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
filesYesList of files to scan: [{path, content}]
formatNoOutput format: markdown (human) or json (machine-readable for agents)markdown

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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'})

NameRequiredDescriptionDefault
modeNoReport mode: full (detailed) or executive (C-level summary)full
pathYesDirectory to scan
formatNoOutput format: markdown (human) or json (machine-readable for agents)markdown
frameworkYesCompliance framework

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
codeYesCode to analyze
focusNoFocus area — narrows the prompt to a specific vulnerability classall
modelNoLLM model. haiku = fast & cheap (default), sonnet = deeper analysishaiku
formatNoOutput formatmarkdown
contextNoAdditional context (e.g., 'This is a payment endpoint')
languageYesProgramming language
maxBytesNoMax prompt size in bytes — caps cost. Code over this limit is truncated.
existingFindingsNoAlready-detected findings to avoid duplicating

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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'})

NameRequiredDescriptionDefault
codeNoAffected code snippet for context
formatNoOutput formatmarkdown
rule_idYesGuardVibe rule ID (e.g. VG001, VG402)

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
pathYesDirectory to scan

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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'})

NameRequiredDescriptionDefault
codeYesThe code snippet to analyze and fix
formatNoOutput format: json (for agent auto-fix) or markdown (human review)json
languageYesProgramming language of the code
frameworkNoFramework context (e.g. express, nextjs, fastapi, react, django)

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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: '.'})

NameRequiredDescriptionDefault
pathNoProject root directory.
formatNoOutput formatmarkdown
skipDepsNoSkip dependency vulnerability check
skipSecretsNoSkip secret scanning

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
pathYesProject root directory to scan
formatNoOutput formatmarkdown

TDQS

B3.3/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

NameRequiredDescriptionDefault
topicYesSecurity topic to look up (e.g. "express authentication", "sql injection prevention", "nextjs csrf", "react xss", "owasp top 10")

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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'})

NameRequiredDescriptionDefault
pathNoProject root directory.
scopeNoScan scope: project (default, .claude.json + .cursor/ + .vscode/ + .env), host (+ shell profiles + global MCP configs), full (+ home dir configs)project
formatNoOutput format: markdown (human) or json (machine-readable)markdown

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
pathYesProject root directory
formatNoOutput formatmarkdown

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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: '.'})

NameRequiredDescriptionDefault
pathNoProject root directory.
formatNoOutput format: json for agents (recommended), markdown for humansjson

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
pathYesRepository root path
formatNoOutput formatmarkdown

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
baseNoBase branch to diff againstmain
pathNoRepository root path.
formatNoOutput: markdown (PR comment), json (structured), annotations (GitHub Check Runs)markdown
fail_onNoBlock PR if findings at this severity or above existhigh
diff_onlyNoOnly report findings in changed lines (true) or all findings in changed files (false)

TDQS

A3.8/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
baseNoGit ref to diff against (e.g. 'main', 'HEAD~3', commit SHA)HEAD~1
pathNoRepository root path.
formatNoOutput formatmarkdown
diff_awareNoReport only newly-introduced findings on added lines (true, default) vs. all findings in changed files (false)

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
afterYesNew config file content
beforeYesPrevious config file content
formatNoOutput formatjson
file_pathNoConfig file path for contextconfig

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
formatNoOutput format: markdown (human) or json (machine-readable for agents)markdown
manifest_pathYesPath to manifest file (e.g. 'package.json', 'requirements.txt', 'go.mod')

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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'})

NameRequiredDescriptionDefault
pathYesDirectory path to scan (e.g. './src', '.')
formatNoOutput format: markdown (human) or json (machine-readable for agents)markdown
excludeNoAdditional directories to exclude
baselineNoPath to a previous scan JSON output file for baseline comparison (new/fixed/unchanged findings)
recursiveNoScan subdirectories

TDQS

A3.6/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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'})

NameRequiredDescriptionDefault
formatNoOutput format. 'agent' = machine-actionable guardvibe.agent.v1 (exact edits + confidence + verify)json
file_pathYesAbsolute or relative path to the file to scan

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
pathNoRepository root to scan (default current directory).
formatNoOutput format: markdown (human) or json (guardvibe.slopscan.v1 for agents)markdown
onlineNoQuery the npm registry for existence/age/downloads. false = deterministic offline-only (phantom imports + typosquats).

TDQS

A4.5/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
pathNoProject root directory.
scopeNoScan scope: project (.env files only), host (+ shell profiles, global configs), full (+ home dir)project
formatNoOutput formatmarkdown

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

NameRequiredDescriptionDefault
pathYesFile or directory path to scan
formatNoOutput format: markdown (human) or json (machine-readable for agents)markdown
recursiveNoScan subdirectories

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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).

NameRequiredDescriptionDefault
pathYesRepository root path
formatNoOutput formatmarkdown
max_commitsNoMaximum number of commits to scan

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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).

NameRequiredDescriptionDefault
formatNoOutput format: markdown (human) or json (machine-readable for agents)markdown
diff_awareNoReport only findings on newly-staged lines (true, default) vs. all lines in staged files (false)

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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'})

NameRequiredDescriptionDefault
contextNoKnown stack/framework context if the client has it (e.g. 'Next.js app router, Supabase, Stripe')
raw_promptYesThe user's original coding prompt, verbatim

TDQS

A4.6/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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'})

NameRequiredDescriptionDefault
codeYesThe code to scan and secure
filePathNoFile path for context-aware analysis (the file is NOT written; apply fixedCode yourself)
languageYesProgramming language of the code
frameworkNoFramework context (e.g. express, nextjs, react)

TDQS

A4.6/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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.

NameRequiredDescriptionDefault
pathNoProject root path.
formatNoOutput formatmarkdown
periodNoTime period for statsmonth

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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'})

NameRequiredDescriptionDefault
taskYesCurrent 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

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

NameRequiredDescriptionDefault
codeYesUpdated code after applying the fix
ruleIdYesRule ID to verify (e.g. VG402)
filePathNoFile path for context-aware analysis
languageYesProgramming language

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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'})

NameRequiredDescriptionDefault
pathNoProject root directory.
formatNoOutput formatjson
before_hashNoResult hash from the initial full_audit (for tracking)

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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.

  1. 39 tool updatesv3.66.0
    • Changedanalyze_cross_file_dataflow2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / files / items / additionalProperties
        Removed value: -false
    • Changedanalyze_dataflow1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedaudit_config1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedaudit_mcp_config1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedauth_coverage2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / files / items / additionalProperties
        Removed value: -false
    • Changedcheck_code1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcheck_command1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcheck_dependencies2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / packages / items / additionalProperties
        Removed value: -false
    • Changedcheck_package_health1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedcheck_project2 fields changed
      • removedInput schema / additionalProperties
        Removed value: -false
      • removedInput schema / properties / files / items / additionalProperties
        Removed value: -false
    • Changedcompliance_report1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changeddeep_scan1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedexplain_remediation1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedexport_sarif1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfix_code1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedfull_audit1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedgenerate_policy1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedget_security_docs1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedguardvibe_doctor1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedpolicy_check1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedremediation_plan1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedrepo_security_posture1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedreview_pr1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedscan_changed_files1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedscan_config_change1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedscan_dependencies1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedscan_directory1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedscan_file1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedscan_hallucinated_packages1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedscan_host_config1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedscan_secrets1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedscan_secrets_history1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedscan_staged1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedsecure_prompt1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedsecure_this1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedsecurity_stats1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedsecurity_workflow1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedverify_fix1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
    • Changedverify_remediation1 field changed
      • removedInput schema / additionalProperties
        Removed value: -false
  2. 18 tool updatesv3.35.1
    • Addedanalyze_cross_file_dataflow
    • Addedanalyze_dataflow
    • Addedauth_coverage
    • Addedcheck_dependencies
    • Addedcheck_project
    • Addeddeep_scan
    • Addedexplain_remediation
    • Addedfull_audit
    • Addedgenerate_policy
    • Addedget_security_docs
    • Addedguardvibe_doctor
    • Addedpolicy_check
    • Addedscan_changed_files
    • Addedscan_config_change
    • Addedscan_dependencies
    • Addedscan_host_config
    • Addedscan_secrets
    • Addedsecurity_stats
  3. 18 tool updatesv3.30.0
    • Removedanalyze_cross_file_dataflow
    • Removedanalyze_dataflow
    • Removedauth_coverage
    • Removedcheck_dependencies
    • Removedcheck_project
    • Removeddeep_scan
    • Removedexplain_remediation
    • Removedfull_audit
    • Removedgenerate_policy
    • Removedget_security_docs
    • Removedguardvibe_doctor
    • Removedpolicy_check
    • Removedscan_changed_files
    • Removedscan_config_change
    • Removedscan_dependencies
    • Removedscan_host_config
    • Removedscan_secrets
    • Removedsecurity_stats
  4. 1 tool updatev3.27.0
    • Changedcheck_dependencies1 field changed
      • addedInput schema / properties / format
        Added value: +{
        +  "default": "markdown",
        +  "description": "Output format: markdown (human) or json (machine-readable for agents)",
        +  "enum": [
        +    "markdown",
        +    "json"
        +  ],
        +  "type": "string"
        +}

TDQS

B3.4/5.0

Scored across 39 tools

Disambiguation3/5

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.

Naming Consistency3/5

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.

Tool Count2/5

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.

Completeness4/5

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

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    Predeploy 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 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    C
    maintenance
    Security 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 npm
    MIT