Skip to main content
Glama

Feldspar free repository security scan

Scan a public repository

scan_repository
Read-onlyIdempotent

Clone a public git repository and run feldspar-scan: OSV.dev advisories for pinned dependencies in lockfiles (npm, pnpm, yarn, pip/uv/poetry, Cargo, Go, Gemfile.lock), secret patterns with redacted evidence, and configuration lint. Returns a JSON report with summary counts and per-finding severity, file, line, advisory id and fixed versions. Deterministic, no LLM involved. Takes 2-90 s depending on repository size. Returns the most severe findings first, 25 unless max_findings asks for more (up to 200); the summary counts cover every finding, and large per-file breakdowns are left out and named under omitted.

Input Schema

NameRequiredDescriptionDefault
urlYesThe repository URL only, e.g. https://github.com/owner/repo (also gitlab.com, codeberg.org, bitbucket.org)
categoryNoReturn only findings of this category (default: all).
max_findingsNoHow many findings to return, most severe first (default 25, at most 200).
min_severityNoReturn only findings of this severity or higher (default: all severities).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / category
      Added value: +{
      +  "description": "Return only findings of this category (default: all).",
      +  "enum": [
      +    "dependency-vuln",
      +    "secret",
      +    "config"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / max_findings
      Added value: +{
      +  "default": 25,
      +  "description": "How many findings to return, most severe first (default 25, at most 200).",
      +  "maximum": 200,
      +  "minimum": 1,
      +  "type": "integer"
      +}
    • addedInput schema / properties / min_severity
      Added value: +{
      +  "description": "Return only findings of this severity or higher (default: all severities).",
      +  "enum": [
      +    "critical",
      +    "high",
      +    "medium",
      +    "low"
      +  ],
      +  "type": "string"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / url / description
      Previous value: -"https://github.com/owner/repo (also gitlab.com, codeberg.org, bitbucket.org)"New value: +"The repository URL only, e.g. https://github.com/owner/repo (also gitlab.com, codeberg.org, bitbucket.org)"
  3. First observed

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations (which already declare read-only, idempotent, non-destructive, open-world), it discloses determinism, no LLM involvement, latency range, severity ordering, and — critically — that the default 25-finding cap does not truncate the summary counts while large per-file breakdowns are dropped and named under 'omitted'. That truncation contract is exactly the kind of behavior an agent cannot infer elsewhere.

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?

Purpose and scan scope are front-loaded, and every sentence carries information (lockfile ecosystems, output shape, runtime, truncation). It is a single dense run-on paragraph, though, so the truncation and ordering rules are buried mid-stream rather than separated out.

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?

With no output schema, the description takes on the full burden and delivers: it names the report structure, the per-finding fields (severity, file, line, advisory id, fixed versions), ordering, and truncation semantics. An agent knows what it will get back and how complete it will be.

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 still adds value by explaining how max_findings interacts with the summary counts and the 'omitted' section, and by implying severity-first ordering. It adds no extra detail on category or min_severity beyond the enum descriptions, keeping it below a 5.

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 chain (clone + run feldspar-scan) and enumerates exactly what is scanned: OSV.dev advisories for pinned dependencies across named lockfile formats, secret patterns, and config lint. The tool is distinguishable from the only sibling, audit_pricing, which is an unrelated pricing audit.

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?

Implies when it applies through hard constraints — public repositories only, supported hosts listed in the schema, and a 2-90 s runtime that tells an agent to expect latency. It never states an explicit exclusion or names an alternative path, but no sibling overlaps meaningfully, so the gap is minor.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.