Skip to main content
Glama

Feldspar free repository security scan

Server Details

Free deterministic security scan of public git repos: OSV.dev vulnerable deps, secrets, config lint.

Ownership verified
Status
Healthy
Uptime
99.8% over 61 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
project-feldspar-resources/feldspar-scan
GitHub Stars
0
Server Listing
feldspar-scan
ChatGPT
–
Claude
–

TDQS

A4.1/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one returns paid audit pricing information, while the other performs the actual repository security scan. An agent should have no trouble selecting between them based on the user's request.

Naming Consistency4/5

Both names use snake_case and are readable, but the naming patterns are not fully parallel: scan_repository is a clear verb_noun action, while audit_pricing is more noun_noun and could be read as auditing pricing rather than retrieving audit pricing.

Tool Count3/5

Two tools is thin for a server whose stated purpose is repository security scanning. The core scan is present, but the only other tool is ancillary pricing information, making the surface feel under-scoped.

Completeness3/5

scan_repository covers the main scan operation in detail, including multiple ecosystems and finding severities. However, there are notable gaps around follow-up workflows such as report retrieval, scan history, private repository support, or deeper remediation guidance.

Available Tools

2 tools
audit_pricingPaid code audits: scope, prices and termsA
Read-onlyIdempotent
Inspect

Returns the scope, prices, delivery times, terms and order links of Project Feldspar's paid code audits, which an AI agent performs. Use it when the user asks about a paid code audit. No arguments.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered structurally. The description adds a little context: the audits are performed by an AI agent, and the result is informational content retrieved with no arguments. It stops short of adding anything about the shape or currency of the returned pricing data, so this is a modest supplement on top of rich annotations.

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 short sentences with zero filler; the returned content is front-loaded and the usage trigger follows immediately. Every clause 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?

With no output schema, the description usefully enumerates what comes back (scope, prices, delivery times, terms, order links), which is effectively an inline return-value summary. It does not say how that information is formatted or whether prices are currency-qualified, but nothing essential for correct invocation is missing.

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?

The tool takes zero parameters, which is the baseline-4 case. The description reinforces this with an explicit 'No arguments', leaving no ambiguity about invocation.

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 (returns) and a precisely enumerated resource (scope, prices, delivery times, terms and order links of paid code audits). The subject matter is unmistakably distinct from the sibling scan_repository, so an agent can select 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?

Explicitly names the triggering condition: 'Use it when the user asks about a paid code audit.' That is clear positive guidance, but there is no stated exclusion or alternative route for adjacent questions (e.g. free audits or general repo questions), which would be needed for a 5.

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

scan_repositoryScan a public repositoryA
Read-onlyIdempotent
Inspect

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.

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

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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedscan_repository3 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. 1 tool update
    • Changedscan_repository1 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)"

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.