Skip to main content
Glama
1mr0-tech

PwnBridge

Official
by 1mr0-tech

sast_scan

Run static application security testing on local code: upload it to Kali, run Semgrep, Bandit, Gitleaks, and Graudit in parallel, then save a versioned report and delete uploaded code.

Instructions

Perform Static Application Security Testing (SAST) on a local code directory. Syncs code to Kali Linux via SFTP, runs Semgrep (multi-language), Bandit (Python), Gitleaks (secrets), and Graudit (language-targeted pattern matching) in parallel, then generates a versioned consolidated security report saved to the Kali machine. Uploaded source code is deleted after scanning.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
toolsNoWhich SAST tools to run. Defaults to all four. Bandit is automatically skipped when no Python files are found regardless of this setting.
local_pathYesAbsolute path to the local code directory to scan. Example: "/Users/me/projects/myapp"
project_nameYesProject name used to organise versioned reports. Example: "myapp" or "backend-api"
exclude_patternsNoFile/directory names to exclude from upload and scanning.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

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 full burden and does well: it discloses that source is synced off-machine to Kali over SFTP, that the consolidated report is written to the Kali host (not locally), and that uploaded source is deleted after scanning — materially important side effects. It omits prerequisites such as Kali connectivity/credentials and failure behavior, so it falls short of a 5.

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 with the core action front-loaded, followed by execution mechanics and cleanup semantics. No filler or restatement of the tool name, and every clause conveys operational information.

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 tool that depends on external infrastructure (Kali host, SFTP) there are no annotations or output schema to fill gaps, and the description never says what the caller receives back, where the versioned report lives, or what happens on connection failure. It covers the pipeline well but leaves the calling contract and prerequisites underspecified.

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 tool enum and Bandit's Python-skip behavior. The description only echoes the engine list and adds no parameter-level meaning, making the baseline 3 appropriate.

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 (Perform SAST) plus precise resource (a local code directory), and the description enumerates the exact engines run (Semgrep, Bandit, Gitleaks, Graudit). This cleanly separates it from the dynamic/network siblings like dast_scan, nikto_scan, and nmap_scan 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 Guidelines3/5

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

"Local code directory" implies the usage context (source you own, on disk) versus the remote-target siblings, but the description never explicitly states when to prefer this over dast_scan or names any alternative. No prerequisites or exclusions are given, leaving routing to inference.

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