Skip to main content
Glama
shyshlakov

pci-dss-mcp

by shyshlakov

pci-dss-mcp

用于 Go 支付服务代码库的静态分析 MCP 服务器。在代码发布前,将 Go 支付服务代码库中检测到的每个 PCI DSS v4.0.1 违规项映射到具体的合规要求编号。

Go Report Card License: MIT OpenSSF Scorecard MCP Registry pci-dss-mcp MCP server


功能概述

pci-dss-mcp 是一个 stdio MCP 服务器,它在 Go 支付服务代码库上运行 12 个扫描器、一个编排器和一个 AI 分诊引擎。每个发现结果都带有映射到特定 PCI DSS v4.0.1 条目的 requirement_id;请参阅 docs/requirement-mapping.md 获取规范的规则到要求对照表,并参阅 testdata/vulnerable-payment-service/EXPECTED-FINDINGS.md 获取实时黄金输出示例。

pci-dss-mcp 目前可捕获的内容

  • HTTP 框架输入流进入日志 / 错误 / panic 接收器。 一级框架(gin, chi, gorilla/mux, net/http (Go 1.22+), echo v4, fiber v2)和一级日志记录器(log/slog, logrus, zap, zerolog, logr, klog, hclog)已在 v0.7 中发布。二级(kratos, apex/log, charmbracelet/log)将在 v0.8 中发布。三级(fasthttp, beego, iris, httprouter, 项目内部)在发布后可通过 Phase 25 YAML 进行用户配置。请参阅 docs/http_input_taint.md。

pci-dss-mcp 不是什么

  • 不是广泛 SAST 工具的替代品。 请使用 Semgrep、CodeQL 或 gosec 来处理 OWASP Top-10 和语言无关的漏洞。

  • 不是基于 LLM 的代码审查的替代品。 pci-dss-mcp 将支付特定问题映射到 PCI DSS 要求 ID;LLM 代理通过推理捕获广泛的错误。这两个层级是互补的。

  • 不是语言无关的。 Go 特有的 AST 模式和污点流追踪是实现高精度的关键。

  • 不是 QSA 的替代品。 静态分析仅涵盖约 6% 的 PCI DSS v4.0.1 要求。其余部分必须由合格的安全评估员 (QSA) 进行确认。

Related MCP server: secureaudit-mcp

安装

Go 安装(首选)

需要 Go 1.25+:

go install github.com/shyshlakov/pci-dss-mcp@latest

二进制文件位于 $(go env GOPATH)/bin/pci-dss-mcp。请参阅 docs/install-from-source.md 获取 PATH 解析、macOS codesign 来源修复、cosign 验证以及 MCP 客户端 JSON 配置。

Docker(替代方案)

docker pull ghcr.io/shyshlakov/pci-dss-mcp:v0.6.2

适用于 CI 流水线、不在本地开发 Go 的 QSA 审计员,或任何没有宿主机 Go 工具链的环境。

MCP 注册表

在 registry.modelcontextprotocol.io 上列为 io.github.shyshlakov/pci-dss-mcp。每个标签都会自动发布。

使用方法

添加到您的 MCP 客户端配置中(Claude Desktop 为 claude_desktop_config.json,Cursor 为 .cursor/mcp.json,或 Claude Code 使用 claude mcp add):

{
  "mcpServers": {
    "pci-dss-mcp": {
      "command": "docker",
      "args": ["run", "-i", "--rm",
        "--mount", "type=bind,src=/Users/you/go/src,dst=/Users/you/go/src,readonly",
        "ghcr.io/shyshlakov/pci-dss-mcp:v0.6.2"]
    }
  }
}

src= 和 dst= 镜像相同的绝对路径,以便容器在宿主机使用的相同路径下看到您的代码;提示词传递正常的宿主机路径,无需转换。有关 go install 变体和各客户端示例,请参阅 docs/usage.md。

粘贴到您的 MCP 客户端中的两个提示词:

  1. Run pci-dss-mcp triage on /Users/you/payments-service. Use min_severity=MEDIUM and group findings by PCI DSS requirement.

  2. Generate a PCI DSS compliance report for /Users/you/payments-service in JSON format. Show requirement-level pass/fail status and severity counts.

工具

工具

用途

文档

triage_findings

所有扫描器 + AI 分类 + 文件:行上下文,一次调用完成

docs/triage_findings.md

generate_compliance_report

原始要求通过/失败报告(所有扫描器的编排器)

docs/generate_compliance_report.md

scan_pan_data

PAN/SAD 存储和日志记录 (3.3.1, 3.4.1, 3.5.1)

docs/scan_pan_data.md

check_encryption

弱哈希、硬编码密钥、明文 HTTP (4.2.1, 6.2.4)

docs/check_encryption.md

check_tls_config

不安全的 TLS 配置 (4.2.1)

docs/check_tls_config.md

check_secrets_in_configs

配置文件中的凭据 (8.6.2)

docs/check_secrets_in_configs.md

check_error_handling

泄露敏感上下文的错误响应 (6.2.4)

docs/check_error_handling.md

check_auth_strength

硬编码密码、弱策略、缺少 MFA、Webhook 签名 (8.3.1, 8.3.6, 8.4.2, 8.6.2)

docs/check_auth_strength.md

audit_log_coverage

支付流程中缺失的审计日志 (10.2.1)

docs/audit_log_coverage.md

check_data_retention

缺少 TTL、敏感存储、缺少清零 (3.2.1, 3.3.1)

docs/check_data_retention.md

check_payment_page_scripts

支付页面缺少 CSP/SRI/nonce (6.4.3, 11.6.1)

docs/check_payment_page_scripts.md

check_dependencies

通过 OSV (6.3.3) 查找易受攻击的 Go 依赖项;govulncheck 风格的隐私保护:不会向 OSV.dev 发送模块名称。请参阅 docs/check_dependencies.md。还涵盖 update_vulnerability_db。

docs/check_dependencies.md

generate_sbom

从 go.mod/go.sum 生成 CycloneDX 1.6 SBOM (6.3.2)

docs/generate_sbom.md

explain_requirement

按 ID 查询 PCI DSS v4.0.1 要求

docs/explain_requirement.md

所有工具都声明了类型化的 OutputSchema。请参阅 docs/tools.md 获取目录索引和迁移历史。

文档

状态

活跃开发中,v1.0 之前版本。请参阅 ROADMAP.md 和 CHANGELOG.md。

许可证

MIT,请参阅 LICENSE。


pci-dss-mcp 是一款静态分析工具。它不能替代合格的安全评估员 (QSA)。请将其输出作为合规流程的输入,而非合规本身。

Available Tools

15 tools
audit_log_coverageA

Scan Go source files for payment handlers missing structured audit logging (PCI DSS 10.2.1). Detects: missing logging, unstructured-only logging (fmt/log), and reports handlers with structured logging. Framework-aware: supports net/http, gin, echo handler signatures. Default: returns response_shape "summary" with by_severity counts, a capped by_rule histogram (top 10 + more_rules), and top 3 per severity findings - plus a pagination.next_cursor for drill-down. Prefer this for mixed queries; min_severity / rule_filter drop to response_shape "flat" but still carry summary.by_severity + summary.by_rule for full-scan context. Follow the cursor for the full paginated list. Use include_tests / exclude_patterns / min_severity / rule_filter for a filtered flat response.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesrequired,Path to the Go project directory to scan for missing audit logging in payment handlers
exclude_patternsNoOptional glob patterns to exclude. Default: vendor/ generated/ *.pb.go testdata/ mocks/
include_testsNoInclude _test.go files in scan results. Default false excludes test files per industry SAST consensus
include_untrackedNoScan all files including .gitignored. Default false scans only git-tracked files
cursorNoOpaque cursor token from a prior audit_log_coverage response. When set resumes pagination from the stored session cache (10-minute TTL). Leave empty for a fresh scan.
limitNoMaximum number of findings to return per call. Default 0 (summary-first response with next_cursor). To fetch more findings than fit in one response, follow next_cursor; do NOT raise this value to fetch all at once (server caps at the per-tool page size and rejects with LIMIT_EXCEEDS_PAGE_SIZE).
min_severityNoFilter by minimum severity (CRITICAL/HIGH/MEDIUM/LOW/INFO). Setting this forces the flat response shape.
rule_filterNoFilter by rule ID, comma list or /regex/. Setting this forces the flat response shape.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

No annotations are provided, but the description compensates fully by detailing the response structure (summary, histogram, top findings), pagination with 10-minute TTL, server caps on limit, and framework awareness. This exceeds expectations for behavioral disclosure.

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 comprehensive but slightly verbose; however, every sentence serves a purpose. It is well-organized and front-loaded with the core purpose.

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 (8 parameters, output schema exists), the description covers all necessary context: scanning scope, framework support, response shapes, pagination, and filtering. No gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, the description adds substantial context: cursor 10-minute TTL, limit server caps, include_tests industry consensus, and shape changes triggered by min_severity/rule_filter. These details enrich the schema descriptions significantly.

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 explicitly states 'Scan Go source files for payment handlers missing structured audit logging (PCI DSS 10.2.1)', providing a specific verb and resource. It clearly differentiates from sibling tools by focusing on audit logging compliance.

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 advises 'Prefer this for mixed queries' and explains pagination via cursor, as well as response shape changes with filters. However, it does not explicitly mention when to use alternative tools from the sibling list.

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

check_auth_strengthA

Scan Go source files for weak authentication: hardcoded passwords (PCI DSS 8.3.1), password policy with minimum length below 12 (PCI DSS 8.3.6), and payment routes missing MFA middleware (PCI DSS 8.4.2). Default: returns response_shape "summary" with by_severity counts, a capped by_rule histogram (top 10 + more_rules), and top 3 per severity findings - plus a pagination.next_cursor for drill-down. Prefer this for mixed queries; min_severity / rule_filter drop to response_shape "flat" but still carry summary.by_severity + summary.by_rule for full-scan context. Follow the cursor for the full paginated list. Use include_tests / exclude_patterns / min_severity / rule_filter for a filtered flat response. Maps findings to PCI DSS 8.3.1, 8.3.6, 8.4.2.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesrequired,Path to the Go project directory to scan for authentication strength violations
exclude_patternsNoOptional glob patterns to exclude. Supports directory patterns (vendor/) and file globs (*.pb.go). Default: vendor/ generated/ *.pb.go testdata/ mocks/
include_testsNoInclude _test.go files in scan results. Default false excludes test files per industry SAST consensus
include_untrackedNoScan all files including .gitignored. Default false scans only git-tracked files
cursorNoOpaque cursor token from a prior check_auth_strength response. When set resumes pagination from the stored session cache (10-minute TTL). Leave empty for a fresh scan.
limitNoMaximum number of findings to return per call. Default 0 (summary-first response with next_cursor). To fetch more findings than fit in one response, follow next_cursor; do NOT raise this value to fetch all at once (server caps at the per-tool page size and rejects with LIMIT_EXCEEDS_PAGE_SIZE).
min_severityNoFilter by minimum severity (CRITICAL/HIGH/MEDIUM/LOW/INFO). Setting this forces the flat response shape.
rule_filterNoFilter by rule ID, comma list or /regex/. Setting this forces the flat response shape.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries full burden. It discloses default response shape (summary with counts, histogram, top findings), pagination behavior, and how filters affect output. It does not mention authentication requirements, rate limits, or session cache TTL beyond 10 minutes, but covers the key behavioral aspects.

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 dense but well-structured, front-loading the purpose and then detailing response shapes and filtering. Some redundancy (e.g., repeated mention of PCI DSS mappings) could be trimmed, but overall it is informative without being overly verbose.

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?

Given the tool's complexity (8 parameters, required output schema), the description adequately explains default behavior, pagination, and filter effects. It references PCI DSS mappings but does not detail the output schema structure (since it exists separately). It is complete enough for reliable invocation.

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 baseline is 3. The description adds context about combined effects (e.g., filters force flat response) and default values, but each parameter's individual purpose is already well-documented in the schema. Minor added value.

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 explicitly states it scans Go source files for weak authentication, listing specific PCI DSS checks (8.3.1, 8.3.6, 8.4.2). This clearly distinguishes it from sibling tools like audit_log_coverage or check_dependencies, which target different compliance areas.

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 provides clear guidance on when to use this tool ('Prefer this for mixed queries') and how filters (min_severity, rule_filter) change the response shape. It explains pagination with cursor and limits but does not explicitly state when not to use it or list alternatives.

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

check_data_retentionA

Scan Go source and config files for unsafe data retention: Redis/DB storage of CVV/PAN without TTL (PCI DSS 3.2.1), config files missing TTL on sensitive keys (PCI DSS 3.3.1), and incorrect memory zeroing timing after authorization. Scans .go, .yaml, .json, .toml files. Default: returns response_shape "summary" with by_severity counts, a capped by_rule histogram (top 10 + more_rules), and top 3 per severity findings - plus a pagination.next_cursor for drill-down. Prefer this for mixed queries; min_severity / rule_filter drop to response_shape "flat" but still carry summary.by_severity + summary.by_rule for full-scan context. Follow the cursor for the full paginated list. Use include_tests / exclude_patterns / min_severity / rule_filter for a filtered flat response. Maps findings to PCI DSS 3.2.1, 3.3.1.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesrequired,Path to scan for unsafe data retention patterns (Redis/DB without TTL, config missing TTL, memory zeroing timing)
exclude_patternsNoOptional glob patterns to exclude. Default: vendor/ generated/ *.pb.go testdata/ mocks/
include_testsNoInclude _test.go files in scan results. Default false excludes test files per industry SAST consensus
include_untrackedNoScan all files including .gitignored. Default false scans only git-tracked files
cursorNoOpaque cursor token from a prior check_data_retention response. When set resumes pagination from the stored session cache (10-minute TTL). Leave empty for a fresh scan.
limitNoMaximum number of findings to return per call. Default 0 (summary-first response with next_cursor). To fetch more findings than fit in one response, follow next_cursor; do NOT raise this value to fetch all at once (server caps at the per-tool page size and rejects with LIMIT_EXCEEDS_PAGE_SIZE).
min_severityNoFilter by minimum severity (CRITICAL/HIGH/MEDIUM/LOW/INFO). Setting this forces the flat response shape.
rule_filterNoFilter by rule ID, comma list or /regex/. Setting this forces the flat response shape.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description fully carries transparency. It discloses file types scanned (.go, .yaml, .json, .toml), default response shape, pagination via cursor, and effects of filter parameters. It implies read-only scanning. There is no contradiction, and the behavior is well-explained.

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 detailed but not excessively verbose given the tool's complexity. It front-loads the purpose and then explains response shapes and pagination. Each sentence adds value, though some redundancy exists (e.g., mentioning response shapes multiple times). Overall well-structured.

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?

The description covers all essential aspects: scanning scope, file types, response shapes, pagination, filtering, and PCI DSS mapping. Since an output schema exists, the description doesn't need to detail return fields. It provides sufficient context for an AI agent to correctly invoke the tool.

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?

All 8 parameters have detailed schema descriptions (100% coverage), so baseline is 3. The description adds value by explaining how parameters like min_severity and rule_filter change the response shape from summary to flat, and clarifies pagination behavior with cursor and limit. This context goes beyond schema descriptions.

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 clearly states the tool scans for unsafe data retention patterns (CVV/PAN without TTL, missing TTL in configs, memory zeroing timing) in Go source and config files. It specifically names PCI DSS requirements, distinguishing it from sibling tools like check_secrets_in_configs or check_encryption.

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 provides guidance on when to use this tool (prefer for mixed queries) and how to use it (pagination, filtering, response shapes). It explains the default summary response and how parameters like min_severity affect the shape. However, it does not explicitly state when not to use it or compare to specific siblings.

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

check_dependenciesA

Scan go.mod dependencies for known vulnerabilities (PCI DSS 6.3.3). Bulk-downloads the public OSV Go vulnerability snapshot and intersects locally against go.mod, matching the govulncheck privacy model. No module names are sent to OSV.dev. Cache TTL: 24h fresh, 24h-7d revalidate via ETag, >7d force-refresh. Run update_vulnerability_db first to bootstrap the cache for air-gapped environments. Default: returns response_shape "summary" with by_severity counts, a capped by_rule histogram (top 10 + more_rules), and top 1 per severity findings - plus a pagination.next_cursor for drill-down. Prefer this for mixed queries; min_severity / rule_filter drop to response_shape "flat" but still carry summary.by_severity + summary.by_rule for full-scan context. Follow the cursor for the full paginated list. Use min_severity / rule_filter / positive limit for a filtered flat response. Maps findings to PCI DSS 6.3.3.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesrequired,Path to the project directory containing go.mod to scan for vulnerable dependencies
modeNoScan mode: only 'auto' (default) is supported after v0.6.3. Empty value is treated as 'auto'.
cursorNoOpaque cursor token from a prior check_dependencies response. When set resumes pagination from the stored session cache (10-minute TTL). Leave empty for a fresh scan.
limitNoMaximum number of findings to return per call. Default 0 (summary-first response with next_cursor). To fetch more findings than fit in one response, follow next_cursor; do NOT raise this value to fetch all at once (server caps at the per-tool page size and rejects with LIMIT_EXCEEDS_PAGE_SIZE).
min_severityNoFilter by minimum severity (CRITICAL/HIGH/MEDIUM/LOW/INFO). Setting this forces the flat response shape.
rule_filterNoFilter by rule ID, comma list or /regex/. Setting this forces the flat response shape.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Given no annotations, the description covers key behaviors: bulk-downloads OSV snapshot, no module names sent (privacy), Cache TTL details, response shape defaults, and pagination. It lacks mention of auth requirements or rate limits but is otherwise thorough.

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 dense and front-loaded with the purpose. It covers caching, privacy, shapes, and parameters efficiently, though some sentences could be tightened. It earns its place without redundancy.

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 an output schema present, the description focuses on behavioral and usage context. It explains prerequisite, caching policy, response shape variants, pagination, and filtering. All aspects of a complex tool are addressed, making it self-sufficient for agent invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already has 100% parameter descriptions, but the description adds critical meaning: default mode, cursor usage for pagination, limit capping, and how min_severity/rule_filter change the response shape. This goes beyond schema documentation.

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 clearly states the tool scans go.mod for vulnerabilities (PCI DSS 6.3.3). It specifies the resource ('go.mod dependencies') and action ('scan for vulnerabilities'), distinguishing it from sibling tools like update_vulnerability_db or check_tls_config.

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 provides clear usage steps: run update_vulnerability_db first for air-gapped environments, use cursor for pagination, and apply min_severity/rule_filter for filtered responses. However, it does not explicitly contrast with other sibling tools beyond the prerequisite note.

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

check_encryptionA

Scan Go source files for encryption violations: weak hash algorithms (md5/sha1) with context scoring, hardcoded encryption keys/IVs, and plain HTTP URLs. Default: returns response_shape "summary" with by_severity counts, a capped by_rule histogram (top 10 + more_rules), and top 3 per severity findings - plus a pagination.next_cursor for drill-down. Prefer this for mixed queries; min_severity / rule_filter drop to response_shape "flat" but still carry summary.by_severity + summary.by_rule for full-scan context. Follow the cursor for the full paginated list. Use include_tests / exclude_patterns / min_severity / rule_filter for a filtered flat response. Maps findings to PCI DSS 6.2.4, 4.2.1.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesrequired,Path to the Go project directory to scan for encryption violations
exclude_patternsNoOptional glob patterns to exclude. Supports directory patterns (vendor/) and file globs (*.pb.go). Default: vendor/ generated/ *.pb.go testdata/ mocks/
include_testsNoInclude _test.go files in scan results. Default false excludes test files per industry SAST consensus
include_untrackedNoScan all files including .gitignored. Default false scans only git-tracked files
cursorNoOpaque cursor token from a prior check_encryption response. When set resumes pagination from the stored session cache (10-minute TTL). Leave empty for a fresh scan.
limitNoMaximum number of findings to return per call. Default 0 (summary-first response with next_cursor). To fetch more findings than fit in one response, follow next_cursor; do NOT raise this value to fetch all at once (server caps at the per-tool page size and rejects with LIMIT_EXCEEDS_PAGE_SIZE).
min_severityNoFilter by minimum severity (CRITICAL/HIGH/MEDIUM/LOW/INFO). Setting this forces the flat response shape.
rule_filterNoFilter by rule ID, comma list or /regex/. Setting this forces the flat response shape.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

No annotations provided, so description carries full burden. It transparently explains response shapes (summary vs flat), pagination with cursor and TTL, limit cap behavior, and filtering effects. Also mentions mapping to PCI DSS standards.

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?

Description is detailed and informative but on the longer side. It front-loads the main purpose and then structures details about response shapes and parameters. Could be slightly more concise but remains clear.

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 full schema coverage and output schema present, the description thoroughly explains response shapes, pagination, and behavior under various parameter combinations. It is sufficiently complete for an AI agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Adds significant meaning beyond schema: cursor has 10-min TTL, limit default yields summary and warns against raising it, exclude_patterns defaults, and min_severity/rule_filter force flat response. Schema coverage is 100% but description enriches understanding.

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 clearly states it scans Go source files for encryption violations (weak hashes, hardcoded keys, plain HTTP URLs). It distinguishes from siblings like check_auth_strength and check_secrets_in_configs by focusing on encryption-specific issues in Go code, with unique response shape behavior.

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?

Provides guidance on preferring this for mixed queries, describes when to use min_severity and rule_filter for flat responses, and explains pagination with cursor. However, it does not explicitly state when not to use this tool or mention alternatives among siblings.

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

check_error_handlingA

Scan Go source files for payment handler error disclosure: detects err.Error() in http.Error, fmt.Fprintf with error variables, w.Write with error bytes, and json.Encode of errors. Default: returns response_shape "summary" with by_severity counts, a capped by_rule histogram (top 10 + more_rules), and top 3 per severity findings - plus a pagination.next_cursor for drill-down. Prefer this for mixed queries; min_severity / rule_filter drop to response_shape "flat" but still carry summary.by_severity + summary.by_rule for full-scan context. Follow the cursor for the full paginated list. Use include_tests / exclude_patterns / min_severity / rule_filter for a filtered flat response. Maps findings to PCI DSS 6.2.4.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesrequired,Path to the Go project directory to scan for error handling violations in payment handlers
exclude_patternsNoOptional glob patterns to exclude. Supports directory patterns (vendor/) and file globs (*.pb.go). Default: vendor/ generated/ *.pb.go testdata/ mocks/
include_testsNoInclude _test.go files in scan results. Default false excludes test files per industry SAST consensus
include_untrackedNoScan all files including .gitignored. Default false scans only git-tracked files
cursorNoOpaque cursor token from a prior check_error_handling response. When set resumes pagination from the stored session cache (10-minute TTL). Leave empty for a fresh scan.
limitNoMaximum number of findings to return per call. Default 0 (summary-first response with next_cursor). To fetch more findings than fit in one response, follow next_cursor; do NOT raise this value to fetch all at once (server caps at the per-tool page size and rejects with LIMIT_EXCEEDS_PAGE_SIZE).
min_severityNoFilter by minimum severity (CRITICAL/HIGH/MEDIUM/LOW/INFO). Setting this forces the flat response shape.
rule_filterNoFilter by rule ID, comma list or /regex/. Setting this forces the flat response shape.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Explains default response shape, effect of min_severity/rule_filter on response shape, pagination cursor TTL and usage, and server limit cap. No annotations provided, so description fully carries behavioral info.

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?

Information-dense yet well-structured: purpose first, then behavior, then parameter-specific guidance. Could be slightly more concise but clear.

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?

Comprehensively covers purpose, behavior, all parameters, response shapes, pagination, and filtering. Output schema exists, so return values are covered. No gaps for a scanning tool of this complexity.

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 already covers all 8 parameters. Description adds extra context for limit, cursor, min_severity, rule_filter, and response shape changes, exceeding schema descriptions.

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?

Clearly states verb 'Scan...detects' and resource 'Go source files for payment handler error disclosure'. Distinguishes from sibling tools which cover other security checks.

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?

Provides guidance on when to use defaults vs filtered responses, and pagination. However, does not explicitly mention alternative tools or when not to use this tool.

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

check_payment_page_scriptsA

Scan Go source files and HTML templates for payment page script security violations (PCI DSS 6.4.3, 11.6.1). Detects: missing Content-Security-Policy headers in Go payment handlers, unsafe-inline/unsafe-eval in CSP, external scripts without SRI (integrity attribute) in HTML templates, inline scripts without nonce attribute. Framework-aware: supports net/http, gin, echo handler signatures. Default: returns response_shape "summary" with by_severity counts, a capped by_rule histogram (top 10 + more_rules), and top 3 per severity findings - plus a pagination.next_cursor for drill-down. Prefer this for mixed queries; min_severity / rule_filter drop to response_shape "flat" but still carry summary.by_severity + summary.by_rule for full-scan context. Follow the cursor for the full paginated list. Use include_tests / exclude_patterns / min_severity / rule_filter for a filtered flat response. Maps findings to PCI DSS 6.4.3, 11.6.1.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesrequired,Path to the project directory to scan for payment page script security violations (CSP headers in Go handlers and SRI/nonce in HTML templates)
exclude_patternsNoOptional glob patterns to exclude. Default: vendor/ generated/ *.pb.go testdata/ mocks/
include_testsNoInclude _test.go files in scan results. Default false excludes test files per industry SAST consensus
include_untrackedNoScan all files including .gitignored. Default false scans only git-tracked files
cursorNoOpaque cursor token from a prior check_payment_page_scripts response. When set resumes pagination from the stored session cache (10-minute TTL). Leave empty for a fresh scan.
limitNoMaximum number of findings to return per call. Default 0 (summary-first response with next_cursor). To fetch more findings than fit in one response, follow next_cursor; do NOT raise this value to fetch all at once (server caps at the per-tool page size and rejects with LIMIT_EXCEEDS_PAGE_SIZE).
min_severityNoFilter by minimum severity (CRITICAL/HIGH/MEDIUM/LOW/INFO). Setting this forces the flat response shape.
rule_filterNoFilter by rule ID, comma list or /regex/. Setting this forces the flat response shape.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

The description thoroughly discloses behavioral traits beyond annotations (none provided): it describes the default summary response shape with by_severity counts, by_rule histogram, top findings, and a pagination cursor. It mentions caching with a 10-minute TTL and server caps on limit (LIMIT_EXCEEDS_PAGE_SIZE). It also notes framework awareness (net/http, gin, echo), which is critical for accurate scanning.

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 dense but efficient, front-loading the core action and violations. It is a single paragraph that could be broken into sections, but it is not excessively long (about 150 words). Every sentence provides valuable information, with minimal redundancy.

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 (8 parameters, output schema present, diverse detection rules), the description is complete. It covers detection rules, PCI DSS mapping, framework support, response shapes, pagination, caching, server caps, and filter behavior. No gaps are evident.

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?

Input schema has 100% parameter description coverage, so the description only adds marginal value, such as clarifying default exclude patterns and the effect of min_severity/rule_filter on response shape. Since the schema already documents each parameter adequately, a score of 3 is 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?

The description clearly states it scans Go source files and HTML templates for payment page script security violations (PCI DSS 6.4.3, 11.6.1). It lists specific detection types (missing CSP headers, unsafe-inline/unsafe-eval, external scripts without SRI, inline scripts without nonce), making the tool's purpose highly specific and distinct from sibling tools like check_auth_strength or check_encryption.

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 advises preferring this tool for mixed queries and explains how response shape changes with filters (min_severity / rule_filter forces flat response). It provides guidance on pagination (follow cursor) and filter usage. However, it does not explicitly state when not to use this tool or name alternatives, though the sibling list implies other tools for different checks.

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

check_secrets_in_configsA

Scan configuration files (.env, .yaml, .json, .toml) for hardcoded secrets: API keys, passwords, tokens, and connection strings with embedded credentials. Default: returns response_shape "summary" with by_severity counts, a capped by_rule histogram (top 10 + more_rules), and top 3 per severity findings - plus a pagination.next_cursor for drill-down. Prefer this for mixed queries; min_severity / rule_filter drop to response_shape "flat" but still carry summary.by_severity + summary.by_rule for full-scan context. Follow the cursor for the full paginated list. Use include_tests / exclude_patterns / min_severity / rule_filter for a filtered flat response. Maps findings to PCI DSS 8.6.2.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesrequired,Path to the project directory to scan for hardcoded secrets in config files (.env .yaml .json .toml)
exclude_patternsNoOptional glob patterns to exclude. Supports directory patterns (vendor/) and file globs (*.env). Default: vendor/ generated/ *.pb.go testdata/ mocks/
include_testsNoInclude _test.go files in scan results. Default false excludes test files per industry SAST consensus
include_untrackedNoScan all files including .gitignored. Default false scans only git-tracked files
cursorNoOpaque cursor token from a prior check_secrets_in_configs response. When set resumes pagination from the stored session cache (10-minute TTL). Leave empty for a fresh scan.
limitNoMaximum number of findings to return per call. Default 0 (summary-first response with next_cursor). To fetch more findings than fit in one response, follow next_cursor; do NOT raise this value to fetch all at once (server caps at the per-tool page size and rejects with LIMIT_EXCEEDS_PAGE_SIZE).
min_severityNoFilter by minimum severity (CRITICAL/HIGH/MEDIUM/LOW/INFO). Setting this forces the flat response shape.
rule_filterNoFilter by rule ID, comma list or /regex/. Setting this forces the flat response shape.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries full burden. It thoroughly details response shapes (summary vs flat), pagination via cursor with TTL, page size caps, and the effects of filters. All important behaviors are disclosed.

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 well-organized and front-loaded with purpose. It is fairly long but each sentence adds necessary context. Minor redundancy could be trimmed, but overall it's efficient.

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 with multiple response shapes, pagination, and filters, the description covers all aspects including when to use default vs flat, how to paginate, and the effect of each parameter on the output. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, but the description adds significant value beyond the schema by explaining the overall workflow, response shapes, and how parameters interact (e.g., min_severity forces flat response). It does not merely repeat schema.

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 clearly states the tool scans configuration files for hardcoded secrets like API keys, passwords, etc. It uses a specific verb and resource, and the purpose is distinct from sibling tools which focus on other audit areas.

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 explains the default response shape, how filtering changes it, and pagination behavior. It suggests using the default for mixed queries and provides guidance on filters. However, it doesn't explicitly mention when to avoid this tool in favor of siblings.

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

check_tls_configA

Scan Go source files for TLS configuration violations: InsecureSkipVerify, weak MinVersion (below TLS 1.2), missing MinVersion, and prohibited cipher suites (RC4, 3DES, NULL). Default: returns response_shape "summary" with by_severity counts, a capped by_rule histogram (top 10 + more_rules), and top 3 per severity findings - plus a pagination.next_cursor for drill-down. Prefer this for mixed queries; min_severity / rule_filter drop to response_shape "flat" but still carry summary.by_severity + summary.by_rule for full-scan context. Follow the cursor for the full paginated list. Use include_tests / exclude_patterns / min_severity / rule_filter for a filtered flat response. Maps findings to PCI DSS 4.2.1.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesrequired,Path to the Go project directory to scan for TLS configuration violations
exclude_patternsNoOptional glob patterns to exclude. Supports directory patterns (vendor/) and file globs (*.pb.go). Default: vendor/ generated/ *.pb.go testdata/ mocks/
include_testsNoInclude _test.go files in scan results. Default false excludes test files per industry SAST consensus
include_untrackedNoScan all files including .gitignored. Default false scans only git-tracked files
cursorNoOpaque cursor token from a prior check_tls_config response. When set resumes pagination from the stored session cache (10-minute TTL). Leave empty for a fresh scan.
limitNoMaximum number of findings to return per call. Default 0 (summary-first response with next_cursor). To fetch more findings than fit in one response, follow next_cursor; do NOT raise this value to fetch all at once (server caps at the per-tool page size and rejects with LIMIT_EXCEEDS_PAGE_SIZE).
min_severityNoFilter by minimum severity (CRITICAL/HIGH/MEDIUM/LOW/INFO). Setting this forces the flat response shape.
rule_filterNoFilter by rule ID, comma list or /regex/. Setting this forces the flat response shape.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

No annotations provided, so description covers all behaviors: default response shape, pagination via cursor (10-minute TTL), server caps on limit, and response shape forced by filters. This is thorough for a security scanning tool.

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 long but well-structured: starts with purpose, then details defaults and behaviors, then usage guidance. Every sentence provides necessary information, though it could be slightly more concise.

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 8 parameters, no annotations, and an output schema, the description fully covers all aspects: scanning behavior, filtering, pagination, response shapes, and PCI DSS mapping. It leaves no significant gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but description adds substantial value: explains default exclusion patterns, cursor behavior, limit cap, and how min_severity/rule_filter change the response shape. This goes well beyond the schema's basic descriptions.

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 clearly states the tool scans Go source files for TLS configuration violations, listing specific issues. It is distinct from sibling tools like check_auth_strength or check_data_retention, which target different compliance areas.

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?

Gives clear guidance on when to use the default summary mode vs flat response with filters, and explains that limit should not be raised arbitrarily. However, it does not explicitly contrast with sibling tools or state when not to use this tool.

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

explain_requirementA

Look up a PCI DSS v4.0.1 requirement by ID. Returns title, description, and testing procedure.

ParametersJSON Schema
NameRequiredDescriptionDefault
requirement_idYesPCI DSS v4.0.1 requirement ID (e.g. 3.3.1 or 8.3.6)

Output Schema

ParametersJSON Schema
NameRequiredDescription
requirementYesPCI DSS v4.0.1 requirement record (title, description, testing procedure, detectability, accuracy metadata)

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description fully carries the behavioral transparency burden. It explicitly states that it returns title, description, and testing procedure for a given requirement ID, implying no side effects.

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?

The description is two sentences, front-loaded with the action, and every word is necessary. No fluff.

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?

For a simple lookup tool with full schema coverage and an output schema, the description covers purpose, input, and output completely. No gaps.

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 baseline is 3. The description adds 'by ID' which is redundant with the parameter name and schema description. No additional meaning is added.

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 clearly states the verb 'look up' and the resource 'PCI DSS v4.0.1 requirement', and specifies the output fields (title, description, testing procedure). This distinguishes it from sibling tools which are about auditing or checking.

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 implies usage when needing requirement details, but does not explicitly mention when not to use or provide alternatives. For a simple lookup tool, the context is clear.

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

generate_compliance_reportA

Raw PCI DSS v4.0.1 compliance report without AI triage — intended for CI gates, audit artifacts, and requirement-level pass/fail lists. For interactive "scan this project" prompts call triage_findings instead. Default unfiltered call returns a compact summary (metadata, totals, requirement_statuses, top 20 findings per severity, cursor for follow-up). Supply min_severity / rule_filter / limit to get a paged flat list (60 per page with cursor), or cursor= to resume a prior session (10-minute TTL). min_severity / rule_filter drop the response to shape "flat" but still carry summary.by_severity + summary.by_rule for full-scan context. Taint analysis is ON by default; set include_taint=false for fast dev iteration.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the Go project to scan for PCI DSS compliance. If empty, uses current directory (.)
dep_scan_modeNoDependency scanner mode: only 'auto' (default) is supported after v0.6.3. Empty value is treated as 'auto'.
include_testsNoInclude _test.go files in scan results. Default false excludes test files per industry SAST consensus
include_taintNoEnable flow-based severity adjustment via go/packages type analysis. When true, panscanner downgrades PAN-KEYWORD and suppresses PAN-TYPE findings for transit-only CHD fields (request/response DTOs, API client models) per and the PCI SSC FAQ on non-persistent memory. Adds 5-30 seconds to scan time. Default true (production-grade precision). Set false for fast dev iteration. Requires 'go' binary on PATH; falls back to AST-only scanning on failure.
min_severityNoFilter findings by minimum severity. One of CRITICAL / HIGH / MEDIUM / LOW / INFO (case-insensitive). Default: no severity filter. Useful for AI clients that only need HIGH-or-above results.
rule_filterNoFilter findings by rule ID. Comma-separated list for exact match (e.g. PAN-KEYWORD,PAN-TYPE) OR a single regex in leading/trailing slashes (e.g. /PAN-.*/). Default: no rule filter.
limitNoMaximum number of findings to return per call. Default 0 (summary-first response with next_cursor). To fetch more findings than fit in one response, follow next_cursor; do NOT raise this value to fetch all at once (server caps at the per-tool page size and rejects with LIMIT_EXCEEDS_PAGE_SIZE).
cursorNoOpaque cursor token from a prior response. When set, resumes pagination from the stored session cache (10-minute TTL). Leave empty for a fresh scan.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: default output structure, effect of filters on response shape, cursor TTL (10 minutes), taint analysis default behavior, dependency on 'go' binary, and fallback to AST-only. It details taint analysis logic (downgrading PAN-KEYWORD, suppressing PAN-TYPE) and suggests when to disable it.

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?

The description is well-structured and front-loaded with purpose and usage guidance. Every sentence adds necessary information without redundancy. Despite length, it remains concise and informative.

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 (8 parameters, no annotations, output schema exists), the description is highly complete. It covers response shape, pagination, taint analysis details, fallback behavior, and when to use sibling tool. The output schema handles return value details, so the description focuses on high-level behavior and usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds significant value: explains default path behavior, provides rationale for include_taint, warns against raising limit, describes cursor TTL, and gives usage examples for min_severity and rule_filter syntax. This enriches the schema descriptions.

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 clearly states the tool generates a 'Raw PCI DSS v4.0.1 compliance report without AI triage' for CI gates and audit artifacts, and distinguishes it from triage_findings for interactive use. The verb 'generate' and resource 'compliance report' are explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides explicit guidance: 'For interactive prompts call triage_findings instead.' It explains when to use different parameters (min_severity, rule_filter, limit, cursor) and the default summary-first response vs. paginated flat list. It also warns against raising limit above server cap and describes cursor TTL.

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

generate_sbomA

Generate a CycloneDX v1.6 SBOM for a Go project. Default behavior: writes sbom.json (or sbom.xml when format=xml) next to the scanned go.mod and returns metadata only (output_path, size_bytes, component_count, unknown_licenses). Override the destination with output_path (must be absolute). Pass inline=true to return the serialized SBOM in the MCP response instead (capped at 64 KB; returns SBOM_TOO_LARGE above that). Parses go.mod + go.sum offline against the local GOMODCACHE; cache-miss modules surface as UNKNOWN-LICENSE. Satisfies PCI DSS 6.3.2 (software inventory, mandatory since March 2025).

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesrequired,Absolute path to the Go project directory containing go.mod (and go.sum)
formatNoOutput format: json (default) or xml
output_pathNoAbsolute path where the SBOM file should be written. Default: {path}/sbom.json or {path}/sbom.xml. Ignored when inline=true.
inlineNoIf true, return serialized SBOM inline in the response (64 KB cap, SBOM_TOO_LARGE on overflow). Default: false, write to file and return metadata only.
fixed_serialNoOverride generated serialNumber. Accepts bare UUID v4 or urn:uuid: form. Use for VEX linking and audit pipeline reproducibility.
no_timestampNoIf true, omit metadata.timestamp for reproducible builds.

Output Schema

ParametersJSON Schema
NameRequiredDescription
modeYes
bom_formatYes
spec_versionYes
component_countYes
unknown_licensesNo
formatYes
generated_atYesRFC3339 UTC
project_pathYesAbsolute scanned path
output_pathNo
size_bytesNo
serialized_bomNo
fixed_serialNoOverride generated serialNumber (urn:uuid: or bare 36-char form)
no_timestampNoOmit metadata.timestamp for reproducible builds

TDQS

A4.8/5.0
Behavior5/5

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

Despite no annotations, description fully discloses behaviors: default file write, inline option with 64KB cap, cache-miss handling, compliance standard. No contradictions.

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?

Efficiently packed with information in a logical order (purpose, defaults, overrides, inline behavior, edge cases, compliance). Every sentence adds value.

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 no annotations and complex functionality, description covers all key aspects: input, output, behavior, limitations, compliance. No gaps for an AI agent to misunderstand.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and description adds significant meaning: default output path, inline size cap, UUID override, timestamp omission. Adds value beyond schema.

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?

Clearly states it generates a CycloneDX v1.6 SBOM for a Go project, with specific version and project type. Differentiates from sibling tools (other compliance/security tools) by focusing on SBOM generation.

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?

Provides clear context for use (PCI DSS compliance, software inventory) and explains default behavior. Lacks explicit alternatives or when-not-to-use scenarios, but context is strong.

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

scan_pan_dataA

Default: returns response_shape "summary" with by_severity counts, a capped by_rule histogram (top 10 + more_rules), and top 3 per severity findings - plus a pagination.next_cursor for drill-down. Prefer this for mixed queries; min_severity / rule_filter drop to response_shape "flat" but still carry summary.by_severity + summary.by_rule for full-scan context. Follow the cursor for the full paginated list. Use include_tests / exclude_patterns for a filtered flat response. Maps findings to PCI DSS 3.3.1, 3.4.1, 3.5.1.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesrequired,Path to the Go project directory to scan for PAN/CVV data exposure
exclude_patternsNoOptional glob patterns to exclude. Supports directory patterns (vendor/) and file globs (*.pb.go). Default: vendor/ generated/ *.pb.go testdata/ mocks/
include_testsNoInclude _test.go files in scan results. Default false excludes test files per industry SAST consensus
include_untrackedNoScan all files including .gitignored. Default false scans only git-tracked files
include_taintNoEnable flow-based severity adjustment using go/packages type analysis. When true PAN-KEYWORD/PAN-TYPE findings on transit-only struct fields are downgraded or suppressed. Adds 5-30 seconds. Default false (opt-in for accuracy vs speed)
cursorNoOpaque cursor token from a prior scan_pan_data response. When set resumes pagination from the stored session cache (10-minute TTL). Leave empty for a fresh scan.
limitNoMaximum number of findings to return per call. Default 0 (summary-first response with next_cursor). To fetch more findings than fit in one response, follow next_cursor; do NOT raise this value to fetch all at once (server caps at the per-tool page size and rejects with LIMIT_EXCEEDS_PAGE_SIZE).
min_severityNoFilter by minimum severity (CRITICAL/HIGH/MEDIUM/LOW/INFO). Setting this forces the flat response shape.
rule_filterNoFilter by rule ID, comma list or /regex/. Setting this forces the flat response shape.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations, the description fully discloses the two response shapes, the effect of parameters like min_severity/rule_filter, pagination mechanics (session cache TTL, cursor handling), performance implications of include_taint, and the server-enforced cap on limit. No contradictions.

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 a dense single paragraph that packs a lot of information. While efficient, it could benefit from bullet points or section breaks for easier scanning. Nonetheless, every sentence is meaningful and earns its place.

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 complexity of 9 parameters and an output schema, the description covers all key aspects: default vs. flat response, filtering, pagination, performance trade-offs, and mapping to PCI DSS. It is complete for an AI agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds significant value by explaining default behavior, conditional response shapes, pagination details, and performance costs. For example, it clarifies that include_taint adds 5-30 seconds and that limit exceeding the page size is rejected.

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 clearly states the tool scans for PAN/CVV data exposure and provides a detailed breakdown of the default response shape (summary with counts, histogram, top findings, and pagination cursor). It distinguishes itself from sibling tools by its specific focus and behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description gives explicit guidance on when to use default vs. filtered modes, how to follow cursors for pagination, and how to use include_tests/exclude_patterns for flat responses. It also mentions mapping to PCI DSS, providing context for compliance use.

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

triage_findingsA

Run all PCI DSS v4.0.1 scanners + AI-assisted prioritization + file:line enrichment on a Go project in a single call. Default: response_shape "summary" with by_severity counts, a capped by_rule histogram (top 10 + more_rules), and top 1 per severity enriched finding, plus pagination.next_cursor for drill-down. min_severity / rule_filter drop the response to shape "flat" but still carry summary.by_severity + summary.by_rule for full-scan context. Follow the cursor for the full paginated list.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYesPath to the Go project to triage. If empty, uses current directory (.)
dep_scan_modeNoDependency scanner mode: only 'auto' (default) is supported after v0.6.3. Empty value is treated as 'auto'.
include_testsNoInclude _test.go files in scan results. Default false
include_taintNoEnable flow-based severity adjustment via go/packages type analysis. When true, panscanner downgrades PAN-KEYWORD and suppresses PAN-TYPE findings for transit-only CHD fields. Adds 5-30 seconds to scan time. Default true (production-grade precision, matches generate_compliance_report). Set false for fast dev iteration. Requires 'go' binary on PATH; falls back to AST-only scanning on failure.
min_severityNoFilter findings by minimum severity. One of CRITICAL / HIGH / MEDIUM / LOW / INFO (case-insensitive). Default: no severity filter. Applied BEFORE enrichment to save context-collection cost.
rule_filterNoFilter findings by rule ID. Comma-separated list for exact match (e.g. PAN-KEYWORD,PAN-TYPE) OR a single regex in leading/trailing slashes (e.g. /PAN-.*/). Default: no rule filter.
limitNoMaximum number of findings to enrich per call. Default 0 (summary-first response with next_cursor). To fetch more findings than fit in one response, follow next_cursor; do NOT raise this value to fetch all at once (server caps at the per-tool page size and rejects with LIMIT_EXCEEDS_PAGE_SIZE).
cursorNoOpaque cursor token from a prior triage_findings response. When set, resumes pagination from the stored session cache (10-minute TTL). Leave empty for a fresh scan.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A5/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavioral traits: response shapes, pagination with cursor, parameter effects (min_severity/rule_filter on shape), limit caps, include_taint's time cost and fallback, and TTL for cursor. This goes beyond what annotations typically provide.

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?

The description is dense but appropriately structured. It front-loads the main purpose, then explains default response shape and pagination, followed by parameter details. Every sentence contributes meaningful information without redundancy.

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 (8 parameters, no annotations, output schema present), the description covers all aspects: purpose, response shapes, pagination, parameter interactions, and caveats. It is complete and leaves no major gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, but the description adds substantial meaning beyond the schema: default behavior for path, dep_scan_mode version info, include_taint effects and fallback, min_severity timing, rule_filter regex syntax, limit cap warning, and cursor TTL. Each parameter explanation adds unique value.

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 clearly states the tool's purpose: running all PCI DSS v4.0.1 scanners with AI prioritization and enrichment on a Go project. It specifies the verb 'run' and resource 'Go project,' and differentiates from sibling tools (which are individual checks) by offering a comprehensive single-call triage.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

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

The description provides clear guidance on when to use this tool: for a full triage scan. It explains default behavior and pagination, and implicitly contrasts with sibling tools that focus on single checks. It also advises on parameter usage (e.g., limit, cursor) for fetching more findings.

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

update_vulnerability_dbA

Download fresh OSV Go vulnerability snapshot to local cache for offline scanning. Downloads from gs://osv-vulnerabilities/Go/all.zip (~7.5MB). This is the ONLY tool that makes network requests. Cache stored at PCI_MCP_CACHE_DIR or ~/.pci-dss-mcp/vuln-cache/ by default.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathNoOptional path to save the vulnerability cache. Default: ~/.pci-dss-mcp/vuln-cache/go-osv-{date}.json

Output Schema

ParametersJSON Schema
NameRequiredDescription
cache_pathYesAbsolute path to the refreshed OSV cache file
vuln_countYesNumber of vulnerabilities indexed in the new cache
download_size_bytesYesRaw download size in bytes
previous_cache_dateNoDate of the previous cache (YYYY-MM-DD), empty when no prior cache existed
custom_pathNoTrue when the caller supplied a non-default output_path

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description fully bears the burden of behavioral transparency. It discloses the download source (gs://osv-vulnerabilities/Go/all.zip), file size (~7.5MB), and default cache location. It does not mention whether old cache is overwritten or if the operation is atomic, but the 'fresh' keyword implies replacement.

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 sentences, each serving a distinct purpose: action, source/size, and unique differentiator with cache path. No redundant words, front-loaded with the key action.

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?

Given the simplicity of the tool (one optional parameter, no annotations), the description covers the essential aspects: what it does, where data comes from, and its unique network requirement. An output schema exists, so return values need not be described. A minor gap is the lack of mention about error handling or prerequisites like internet access, but the uniqueness claim implies it.

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% for the single parameter, but the description adds value by specifying the default output path and file naming pattern (go-osv-{date}.json). This provides actionable context beyond the schema's description of the parameter.

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?

Description clearly states the tool downloads a fresh OSV Go vulnerability snapshot to local cache for offline scanning. The phrase 'This is the ONLY tool that makes network requests' strongly differentiates it from sibling tools, many of which are audit/check tools that operate locally.

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 implies usage when offline scanning is needed and when a network request is required. It explicitly says 'This is the ONLY tool that makes network requests,' guiding the agent to use it for network-dependent operations. However, it does not explicitly mention when not to use it or provide alternatives.

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. 3 tool updatesv0.7.1
    • Changedcheck_dependencies1 field changed
      • changedInput schema / properties / mode / description
        Previous value: -"Scan mode: auto (default - try online then offline), online (OSV API only), offline (local cache only)"New value: +"Scan mode: only 'auto' (default) is supported after v0.6.3. Empty value is treated as 'auto'."
    • Changedgenerate_compliance_report1 field changed
      • changedInput schema / properties / dep_scan_mode / description
        Previous value: -"Dependency scanner mode: auto (default), online, offline. Controls network behavior for vulnerability checking"New value: +"Dependency scanner mode: only 'auto' (default) is supported after v0.6.3. Empty value is treated as 'auto'."
    • Changedtriage_findings1 field changed
      • changedInput schema / properties / dep_scan_mode / description
        Previous value: -"Dependency scanner mode: auto (default), online, offline"New value: +"Dependency scanner mode: only 'auto' (default) is supported after v0.6.3. Empty value is treated as 'auto'."
  2. 15 tool updatesv0.6.2
    • First observedaudit_log_coverage
    • First observedcheck_auth_strength
    • First observedcheck_data_retention
    • First observedcheck_dependencies
    • First observedcheck_encryption
    • First observedcheck_error_handling
    • First observedcheck_payment_page_scripts
    • First observedcheck_secrets_in_configs
    • First observedcheck_tls_config
    • First observedexplain_requirement
    • First observedgenerate_compliance_report
    • First observedgenerate_sbom
    • First observedscan_pan_data
    • First observedtriage_findings
    • First observedupdate_vulnerability_db

TDQS

A4.6/5.0

Scored across 15 tools

Disambiguation5/5

Each tool targets a distinct security check or utility: audit log coverage, authentication strength, data retention, dependencies, encryption, error handling, payment page scripts, secrets, TLS, requirement lookup, compliance report, SBOM, PAN data scan, triage, and vulnerability DB update. No two tools have overlapping purposes.

Naming Consistency5/5

Tool names follow a clear verb_noun pattern (e.g., check_*, generate_*, explain_*, update_*, scan_*, triage_). All use consistent snake_case, and the verb clearly indicates the action. The slight deviation of 'audit_log_coverage' is minor and still descriptive.

Tool Count5/5

15 tools is well-scoped for a PCI DSS compliance server. It covers a wide range of checks (authentication, encryption, secrets, etc.) plus utilities (SBOM, report, requirement lookup), without being excessive or too few.

Completeness5/5

The tool set comprehensively covers PCI DSS requirements relevant to Go source code and configuration, including authentication (8.3), data retention (3.2, 3.3), encryption (4.2, 6.2), error handling (6.2), TLS (4.2), secrets (8.6), dependencies (6.3), and software inventory (6.3). The triage and report tools tie everything together.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    An AppSec-focused MCP server that performs static analysis scans on C/C++ source code for memory-safety vulnerabilities and parses compiled PE/ELF binary headers locally to audit active defensive compiler mitigations (ASLR, DEP/NX, PIE).
    4
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Agent-native "safe to ship?" security gate for AI-generated code. Uses real parsers and inter-rocedural taint analysis (JS/TS, Python, Go) to flag the classes AI coding agents get wrong — secrets, SQL injection, SS, SSRF, path traversal, command injection, weak JWT/CORS — and ranks findings by confidence. Exposes a scan tool over MCP.
    1
    10 npm
    2
    MIT