Skip to main content
Glama

Security Scan

scan
Read-onlyIdempotent

Discover AI supply chain vulnerabilities and generate an AI-BOM report. Identify CVEs, config risks, and blast radius from repos, images, packages, or local MCP clients.

Instructions

Run a full AI supply chain security scan and return an AI-BOM.

    Point it at a target with one of:
      • repo_url     — a public git repo URL (cloned + scanned, no checkout)
      • config_path  — a local project / MCP-config directory
      • image        — a Docker image
      • sbom_path    — an existing CycloneDX/SPDX SBOM
      • package      — a single package or MCP launch command (pair it with
                       ``ecosystem`` when the spec names no launcher)
    With none of these, it auto-discovers local MCP clients (Claude Desktop,
    Cursor, Windsurf, VS Code Copilot, OpenClaw, etc.).

    It extracts package dependencies, queries OSV.dev for CVEs, assesses
    config security (credential exposure, tool access), computes blast
    radius, and returns structured results. Scanning is fully static and
    read-only — repository and image contents are parsed, never executed.

    Returns:
        JSON with the complete AI-BOM report including agents, packages,
        vulnerabilities, blast radius, and remediation guidance.
    

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
imageNoDocker image to scan (e.g. 'nginx:1.25', 'ghcr.io/org/app:v1').
enrichNoEnable NVD CVSS, EPSS probability, and CISA KEV enrichment.
policyNoPolicy object to evaluate alongside scan results, e.g. {"rules": [{"id": "no-critical", "severity_gte": "critical", "action": "fail"}]}.
offlineNoUse the local vulnerability DB only and skip registry, OSV, GHSA, and NVIDIA network lookups.
packageNoDirect package or MCP launch command to scan, e.g. 'npx @modelcontextprotocol/server-filesystem@2025.1.14' or '@modelcontextprotocol/server-filesystem'. A bare 'name@version' spec is assumed to be npm — pass ``ecosystem`` for anything else.
repo_urlNoPublic git repository URL to clone and scan, e.g. 'https://github.com/org/repo'. Maps the repo's dependencies, project structure, secrets, IaC, and AI/MCP usage into an AI-BOM. Static and read-only: the repository is shallow-cloned into a temporary directory, scanned without ever executing its code, then deleted. The fastest way to point this tool at a target — no local checkout required.
ecosystemNoEcosystem of ``package`` when the spec does not name a launcher: 'npm', 'pypi', 'go', 'cargo', 'maven', 'nuget', 'rubygems', 'composer', 'swift', 'pub', 'hex', 'conda', 'deb', 'apk', or 'rpm'. Omitted, the ecosystem is inferred from the spec (PEP 440 specifiers such as 'flask==0.12.2' are PyPI) and any assumption is reported in the result warnings.
sbom_pathNoPath to existing CycloneDX or SPDX JSON SBOM file to ingest.
scorecardNoEnrich packages with OpenSSF Scorecard scores (requires resolvable GitHub repos).
db_sourcesNoComma-separated DB sources to sync before scanning (e.g. 'nvd,ghsa,osv,epss,kev').
transitiveNoResolve transitive dependencies for npx/uvx packages.
config_pathNoLocal directory to scan — a project root or an MCP client config directory. Auto-discovers all installed MCP clients if omitted. Mutually exclusive with repo_url.
fail_severityNoReturn failure status if vulns at this severity or higher: critical, high, medium, low.
output_formatNoOutput format: 'json' (default), 'sarif', 'cyclonedx', 'spdx', 'junit', 'csv', or 'markdown'.json
warn_severityNoReturn warning status (gate_status=warn, exit 0) when vulns at this severity or higher exist. Use with fail_severity for two-tier CI gates, e.g. warn_severity='medium', fail_severity='critical'.
auto_update_dbNoExplicitly refresh the local vuln DB when older than the daily freshness target before scanning.
verify_integrityNoVerify package SHA-256/SRI hashes and SLSA provenance against registries.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even though annotations already declare readOnlyHint=true and destructiveHint=false, the description adds substantial behavioral detail: 'Scanning is fully static and read-only — repository and image contents are parsed, never executed.' It also reveals that repository scanning uses a temporary directory that is deleted afterward, which is important side-effect information. The description enriches beyond the annotations without contradicting them.

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 organized with a clear top-line purpose, a bulleted list of target modes, a paragraph on what the scan performs, and a Returns section. While it is fairly long, the structure keeps it scannable and each part serves a distinct informational need. A few sentences, such as the 'fastest way' note, are somewhat extra but still useful.

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?

Given the tool's complexity (17 optional parameters, multiple scan targets, and an output schema), the description covers all essential aspects: what it does, how to specify different targets, auto-discovery behavior, what analyses it performs, its static/read-only safety profile, and the shape of the returned AI-BOM report. The presence of a rich output schema means return-value detail is already structured, so the description need not expand further.

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 input schema covers 100% of parameters with per-parameter descriptions, so the baseline is 3. The main description only lists target parameter names without adding new semantic detail beyond what the schema already provides. For instance, the schema already explains that package can be a launch command and that ecosystem is recorded when inferred. The description adds no further parameter-level meaning.

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 and resource: 'Run a full AI supply chain security scan and return an AI-BOM.' This clearly distinguishes it from sibling scan tools like code_scan or fleet_scan by emphasizing the AI supply chain scope and the AI-BOM output. The subsequent enumeration of supported targets (repo, config, image, SBOM, package) further pins down its exact function.

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 description gives clear context on how to invoke the tool by listing five mutually identifiable target types and explaining auto-discovery when none is provided. It also offers a practical tip that repo_url is the fastest path since no local checkout is required. However, it does not explicitly contrast with sibling scan tools or state when this tool should NOT be used, stopping short of full when/when-not guidance.

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

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/msaad00/agent-bom'

If you have feedback or need assistance with the MCP directory API, please join our Discord server