Skip to main content
Glama

Secrets Scanner

detect-secrets-scanner
Read-onlyIdempotent

Scan text (config, code, env files) for leaked API keys, tokens, passwords, and private keys, plus static code-risk findings such as dynamic code execution, wildcard CORS, unsafe HTML sinks, process spawning and removed security guards. Returns findings with redacted matches and severity classification.

Input Schema

NameRequiredDescriptionDefault
textYesConfig, code, or env file content to scan. Do not submit live production secrets; rotate any real credential that appears here.

Output Schema

NameRequiredDescriptionDefault
findingsYes
severityYes
next_stepYes
types_foundYes
finding_countYes
next_step_urlYes
why_follow_upYes
interpretationYes
code_risk_countYes
affiliate_contextNo
computation_basisYes
code_risk_findingsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / text / maxLength
      Previous value: -200000New value: +8192
  2. Changed2 schema fields changed
    • changedInput schema / properties / text / description
      Previous value: -"Config, code, or env file content to scan for secrets"New value: +"Config, code, or env file content to scan. Do not submit live production secrets; rotate any real credential that appears here."
    • addedInput schema / properties / text / maxLength
      Added value: +200000
  3. Changed4 schema fields changed
    • addedInput schema / properties / text / examples
      Added value: +[
      +  "example"
      +]
    • addedOutput schema / properties / code_risk_count
      Added value: +{
      +  "type": "number"
      +}
    • addedOutput schema / properties / code_risk_findings
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "code": {
      +        "type": "string"
      +      },
      +      "evidence_excerpt": {
      +        "type": "string"
      +      },
      +      "severity": {
      +        "enum": [
      +          "HIGH",
      +          "MEDIUM",
      +          "LOW"
      +        ],
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "code",
      +      "evidence_excerpt",
      +      "severity"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / required
      Previous value: -[
      -  "computation_basis",
      -  "finding_count",
      -  "findings",
      -  "interpretation",
      -  "next_step",
      -  "next_step_url",
      -  "severity",
      -  "types_found",
      -  "why_follow_up"
      -]New value: +[
      +  "code_risk_count",
      +  "code_risk_findings",
      +  "computation_basis",
      +  "finding_count",
      +  "findings",
      +  "interpretation",
      +  "next_step",
      +  "next_step_url",
      +  "severity",
      +  "types_found",
      +  "why_follow_up"
      +]
  4. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": false,
      +  "properties": {
      +    "affiliate_context": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "affiliate": {
      +          "type": "string"
      +        },
      +        "cta_label": {
      +          "type": "string"
      +        },
      +        "disclosure": {
      +          "type": "string"
      +        },
      +        "framing": {
      +          "type": "string"
      +        },
      +        "posture": {
      +          "enum": [
      +            "secondary"
      +          ],
      +          "type": "string"
      +        },
      +        "slot_id": {
      +          "type": "string"
      +        },
      +        "url": {
      +          "type": "string"
      +        },
      +        "variant": {
      +          "type": "string"
      +        }
      +      },
      +      "required": [
      +        "affiliate",
      +        "cta_label",
      +        "disclosure",
      +        "framing",
      +        "posture",
      +        "slot_id",
      +        "url",
      +        "variant"
      +      ],
      +      "type": "object"
      +    },
      +    "computation_basis": {
      +      "type": "string"
      +    },
      +    "finding_count": {
      +      "type": "number"
      +    },
      +    "findings": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "line": {
      +            "type": "number"
      +          },
      +          "redacted": {
      +            "type": "string"
      +          },
      +          "type": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "line",
      +          "redacted",
      +          "type"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "interpretation": {
      +      "type": "string"
      +    },
      +    "next_step": {
      +      "type": "string"
      +    },
      +    "next_step_url": {
      +      "type": "string"
      +    },
      +    "severity": {
      +      "type": "string"
      +    },
      +    "types_found": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "why_follow_up": {
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "computation_basis",
      +    "finding_count",
      +    "findings",
      +    "interpretation",
      +    "next_step",
      +    "next_step_url",
      +    "severity",
      +    "types_found",
      +    "why_follow_up"
      +  ],
      +  "type": "object"
      +}
  5. Changed1 schema field changed
    • addedInput schema / additionalProperties
      Added value: +false
  6. First observed

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds genuinely new behavioral context: findings are returned with redacted matches and a severity classification, which tells the agent how output is shaped and that secrets are not echoed back in the clear.

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?

One dense sentence, front-loaded with the primary secret-detection purpose before the secondary static-risk enumeration. It is longer than strictly necessary due to the list of risk categories, but each clause maps to a real capability of the tool rather than filler.

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 an output schema present, the description need not detail return values, and it still summarizes them (redacted matches, severity). Input requirements are covered by the schema, and the description supplies enough scope for an agent to call this correctly without opening anything else.

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 single 'text' parameter is fully documented, including a maxLength and a warning about live production secrets. The description adds no syntax, format, or size guidance beyond what the schema already provides, so the baseline of 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?

The description names a specific verb (scan) and resource (text/config/code/env content), then enumerates both the target artifacts (API keys, tokens, passwords, private keys) and the secondary static-risk checks. This clearly distinguishes it from sibling linters like dockerfile-linter or kubernetes-manifest-linter, which operate on specific manifest formats rather than arbitrary text.

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 parenthetical '(config, code, env files)' implies the intended input contexts, so an agent can infer when the tool applies. However, it never states when to prefer it over adjacent tools such as known-vulnerability-checker, nor does it list any exclusions or prerequisites. Usage is implied rather than directed.

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.

Resources