Skip to main content
Glama
security-use

Security-Use MCP Server

by security-use

Security-Use MCP Server

An MCP (Model Context Protocol) server that gives AI assistants like Cursor, Claude, and other MCP-compatible tools the ability to scan for security vulnerabilities and automatically fix them.

What It Does

This MCP server exposes powerful security tools to your AI assistant:

Core Security Tools

Tool

Description

scan_dependencies

Scans your project's dependencies for known vulnerabilities using the OSV database

scan_iac

Scans Infrastructure as Code files for security misconfigurations

fix_vulnerability

Automatically updates vulnerable packages to secure versions

fix_iac

Generates and applies fixes for IaC security issues

SBOM & Compliance Tools

Tool

Description

generate_sbom

Generate Software Bill of Materials in CycloneDX or SPDX format

check_compliance

Check against SOC2, HIPAA, PCI-DSS, NIST 800-53, CIS, and ISO 27001

Runtime Security Tools

Tool

Description

detect_vulnerable_endpoints

Find API endpoints using vulnerable packages

analyze_request

Analyze HTTP requests for SQL injection, XSS, and other attacks

get_sensor_config

Generate SecurityMiddleware configuration for FastAPI/Flask

GitHub Integration

Tool

Description

create_fix_pr

Create a GitHub PR with security fixes

Related MCP server: Security MCP Server

Supported Formats

Dependency Scanning

  • Python: requirements.txt, pyproject.toml, Pipfile, Pipfile.lock, poetry.lock, setup.py

  • JavaScript/Node.js: package.json, package-lock.json, yarn.lock

  • Java: pom.xml, build.gradle

  • .NET: csproj, packages.config

  • PHP: composer.json, composer.lock

  • Conda: environment.yml

Infrastructure as Code

  • Terraform (.tf files)

  • AWS CloudFormation (.yaml, .yml, .json)

  • AWS SAM templates

  • AWS CDK synthesized output

IaC Security Rules

The scanner checks for misconfigurations across multiple cloud providers:

AWS

  • S3 buckets with public access or missing encryption

  • Security groups with unrestricted ingress

  • RDS/EBS without encryption

  • CloudTrail not enabled

  • IAM users without MFA

Azure

  • Storage accounts with public access

  • Network security group issues

  • Key Vault misconfigurations

GCP

  • Cloud Storage bucket permissions

  • Firewall rules

  • KMS configurations

Kubernetes

  • Container security contexts

  • Network policies

  • RBAC configurations

Compliance Frameworks

  • SOC 2 Type II controls

  • HIPAA Security Rule

  • PCI-DSS v4.0

  • NIST 800-53

  • CIS Benchmarks (AWS, Azure, GCP, Kubernetes)

  • ISO 27001

Installation

From PyPI

pip install security-use-mcp

From Source

git clone https://github.com/security-use/mcp.git
cd mcp
pip install -e .

Quick Setup for Cursor

  1. Install the package (see above)

  2. Add to Cursor's MCP configuration (~/.cursor/mcp.json):

{
  "mcpServers": {
    "security-use": {
      "command": "security-use-mcp",
      "args": [],
      "env": {}
    }
  }
}

If you installed from source or use a virtual environment:

{
  "mcpServers": {
    "security-use": {
      "command": "python",
      "args": ["-m", "security_use_mcp.server"],
      "env": {}
    }
  }
}
  1. Restart Cursor

  2. Test it - Open Cursor's AI chat and ask:

    "Scan this project for security vulnerabilities"

Usage Examples

Once configured, you can ask your AI assistant things like:

Dependency Scanning

  • "Scan this project for vulnerable dependencies"

  • "Check if my Python packages have any CVEs"

  • "Are there any security issues in my requirements.txt?"

IaC Scanning

  • "Scan my Terraform files for security issues"

  • "Check this CloudFormation template for misconfigurations"

  • "Are my S3 buckets configured securely?"

Fixing Vulnerabilities

  • "Fix the requests vulnerability"

  • "Update django to a secure version"

  • "Fix the S3 bucket public access issue in main.tf"

Compliance Checking

  • "Check this project against SOC2 requirements"

  • "Are we compliant with HIPAA security controls?"

  • "Run a PCI-DSS compliance check on our infrastructure"

SBOM Generation

  • "Generate an SBOM for this project"

  • "Create a CycloneDX bill of materials"

  • "Generate an SPDX software inventory"

Runtime Security

  • "Find vulnerable endpoints in this Flask app"

  • "Analyze this request for SQL injection: GET /api/users?id=1' OR '1'='1"

  • "Generate security middleware config for my FastAPI app"

GitHub Integration

  • "Create a PR with these security fixes"

  • "Open a draft PR for the vulnerability fix"

Example Output

Dependency Scan Results

## Dependency Security Scan Results

**Found 2 vulnerabilities**

### CRITICAL (1)

#### requests (2.25.0)
- **ID**: GHSA-xxxx-yyyy-zzzz
- **Title**: CVE-2023-32681 - Unintended leak of Proxy-Authorization header
- **Fixed in**: 2.31.0

### HIGH (1)

#### django (3.1.0)
- **ID**: CVE-2023-xxxxx
- **Title**: SQL Injection in QuerySet.values()
- **Fixed in**: 3.2.19

Compliance Check Results

## Compliance Check Results

**Framework**: SOC 2 Type II
**Files Scanned**: 15

### Summary
- **Total IaC Findings**: 8
- **Findings Mapped to SOC 2**: 6

### CC6.1: Logical and Physical Access Controls
- **CKV_AWS_23**: Security group allows unrestricted ingress
  - File: `sg.tf:8`
  - Severity: HIGH

### CC6.6: System Operations - Encryption
- **CKV_AWS_19**: S3 bucket without encryption
  - File: `s3.tf:15`
  - Severity: HIGH

Request Analysis Results

## Request Security Analysis

**Method**: GET
**Path**: /api/users
**Source IP**: 192.168.1.100

### āš ļø 1 Potential Threat(s) Detected

#### šŸ”“ SQL_INJECTION
- **Severity**: CRITICAL
- **Confidence**: 95%
- **Description**: SQL injection attempt detected in query parameter
- **Location**: query
- **Field**: id
- **Matched Value**: `1' OR '1'='1`

### Recommendations
1. Block this request if in production
2. Log the source IP for monitoring
3. Review application input validation

Configuration Options

Environment Variables

Variable

Description

Default

SECURITY_USE_LOG_LEVEL

Logging level (DEBUG, INFO, WARN, ERROR)

INFO

SECURITY_USE_CACHE_DIR

Directory for caching vulnerability data

System temp

SECURITY_USE_API_KEY

API key for dashboard alerting

None

Example configuration with environment variables:

{
  "mcpServers": {
    "security-use": {
      "command": "security-use-mcp",
      "args": [],
      "env": {
        "SECURITY_USE_LOG_LEVEL": "DEBUG",
        "SECURITY_USE_API_KEY": "your-api-key"
      }
    }
  }
}

Development

Setup

# Clone the repository
git clone https://github.com/security-use/mcp.git
cd mcp

# Create virtual environment
python -m venv .venv
source .venv/bin/activate

# Install with dev dependencies
pip install -e ".[dev]"

# Also install the core security-use package
pip install -e ../security-use

Running Tests

# Run all tests
pytest

# Run with coverage
pytest --cov=security_use_mcp

# Run specific test file
pytest tests/test_handlers.py -v

Linting

# Check code style
ruff check src/ tests/

# Auto-fix issues
ruff check src/ tests/ --fix

Testing the Server

You can test the MCP server directly:

# Start the server (it communicates via stdin/stdout)
python -m security_use_mcp.server

# Or use the entry point
security-use-mcp

Troubleshooting

Server Not Starting

  1. Check Python version (requires 3.10+):

    python --version
  2. Verify installation:

    pip show security-use-mcp
    pip show security-use
  3. Test the server directly:

    python -c "from security_use_mcp.server import server; print('OK')"

Tools Not Appearing in Cursor

  1. Restart Cursor after changing mcp.json

  2. Check that the JSON is valid

  3. Look for errors in Cursor's Developer Tools (Help > Toggle Developer Tools)

Scan Returns No Results

  1. Make sure you have dependency files (requirements.txt, package.json, etc.) or IaC files (.tf, .yaml) in your project

  2. Check that the path is correct when scanning specific directories

Architecture

security-use-mcp/
ā”œā”€ā”€ src/security_use_mcp/
│   ā”œā”€ā”€ server.py          # MCP server implementation
│   ā”œā”€ā”€ models.py          # Data models for results
│   └── handlers/          # Tool handlers
│       ā”œā”€ā”€ dependency_handler.py  # Dependency scanning/fixing
│       ā”œā”€ā”€ iac_handler.py         # IaC scanning/fixing
│       ā”œā”€ā”€ github_handler.py      # GitHub PR creation
│       ā”œā”€ā”€ sbom_handler.py        # SBOM generation
│       ā”œā”€ā”€ compliance_handler.py  # Compliance checking
│       └── sensor_handler.py      # Runtime security tools
└── tests/
    ā”œā”€ā”€ test_server.py         # Server tests
    ā”œā”€ā”€ test_handlers.py       # Handler unit tests
    ā”œā”€ā”€ test_new_handlers.py   # New handler tests
    └── test_integration.py    # Integration tests

The MCP server wraps the security-use Python package, which provides:

  • Dependency scanning via the OSV (Open Source Vulnerabilities) database

  • IaC scanning with configurable security rules for AWS, Azure, GCP, and Kubernetes

  • SBOM generation in CycloneDX and SPDX formats

  • Compliance framework mapping (SOC2, HIPAA, PCI-DSS, NIST, CIS, ISO 27001)

  • Runtime attack detection (SQL injection, XSS, path traversal, command injection)

  • Automated fixing capabilities

License

MIT

Available Tools

18 tools
acknowledge_alertA

Mark a security alert as reviewed/acknowledged. Removes the alert from active alerts list.

ParametersJSON Schema
NameRequiredDescriptionDefault
alert_idYesID of the alert to acknowledge.
notesNoNotes about the acknowledgment.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action ('Mark... as reviewed/acknowledged') and effect ('Removes... from active alerts list'), but lacks details on permissions required, whether the action is reversible, rate limits, or what the response looks like. For a mutation tool with zero annotation coverage, this is a significant gap.

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 concise sentences with zero waste: the first states the action and resource, and the second clarifies the effect. It is front-loaded and efficiently communicates the core purpose without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (a mutation with 2 parameters), no annotations, and no output schema, the description is minimally adequate. It covers the purpose and effect but lacks details on behavioral aspects like error handling or return values, leaving room for improvement in completeness.

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%, with clear descriptions for both parameters ('alert_id' and 'notes') in the input schema. The description does not add any additional meaning or context beyond what the schema provides, such as format examples or usage tips, so it meets the baseline for high schema coverage.

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 specific action ('Mark a security alert as reviewed/acknowledged') and the resource ('security alert'), with explicit mention of the effect ('Removes the alert from active alerts list'). It distinguishes from siblings like 'get_security_alerts' (which retrieves alerts) and 'get_alert_details' (which provides details), making the purpose unambiguous.

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 description implies usage when an alert needs to be marked as reviewed, but does not explicitly state when to use this tool versus alternatives (e.g., 'fix_vulnerability' for remediation or 'block_ip' for blocking). No guidance on prerequisites or exclusions is provided, leaving usage context partially inferred.

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

analyze_requestC

Analyze an HTTP request for potential attacks. Detects SQL injection, XSS, path traversal, command injection, and other attack patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
methodYesHTTP method (GET, POST, etc.).
pathYesRequest path (e.g., '/api/users').
query_paramsNoQuery parameters as key-value pairs.
headersNoRequest headers as key-value pairs.
bodyNoRequest body content.
source_ipNoSource IP address of the request.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While it states what the tool detects, it doesn't describe important behavioral aspects: what format the analysis results take, whether this is a read-only analysis or has side effects, performance characteristics, or error handling. For a security analysis tool with 6 parameters, this leaves significant gaps in understanding how the tool behaves.

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 efficiently structured in two sentences that directly state the purpose and scope. There's no wasted language or redundancy. However, it could be slightly more front-loaded by immediately stating it's for HTTP request analysis rather than starting with 'Analyze an HTTP request'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a security analysis tool with 6 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the analysis returns, how results are formatted, whether this is a blocking operation, or what happens with incomplete inputs. The agent would need to guess about the tool's behavior and outputs based solely on the parameter schema.

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

Parameters3/5

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

The description adds no parameter-specific information beyond what's already in the schema (which has 100% coverage). It doesn't explain how parameters interact, provide examples of valid inputs, or clarify edge cases. With complete schema coverage, the baseline score of 3 is appropriate since the schema does the heavy lifting, but the description adds no additional parameter context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/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: 'Analyze an HTTP request for potential attacks' with specific examples of attack patterns detected (SQL injection, XSS, etc.). It uses a specific verb ('analyze') and identifies the resource ('HTTP request'), but doesn't explicitly differentiate from sibling tools like 'detect_vulnerable_endpoints' or 'check_compliance' that might have overlapping security functions.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, timing considerations, or how it differs from sibling tools like 'detect_vulnerable_endpoints' or 'check_compliance' that also appear to handle security analysis. The agent receives no usage context beyond the basic purpose statement.

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

block_ipB

Block a source IP address. Adds the IP to the sensor's block list for the specified duration.

ParametersJSON Schema
NameRequiredDescriptionDefault
ip_addressYesIP address to block.
durationNoBlock duration (e.g., '1h', '24h', 'permanent'). Defaults to '24h'.

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions adding to a 'block list' and specifies duration, but omits critical details like required permissions, whether the block is reversible, rate limits, or error handling. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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 front-loaded with the core purpose in the first sentence and adds essential context in the second. Every sentence earns its place by clarifying the action and scope, with zero wasted words, making it highly efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity as a mutation operation with no annotations and no output schema, the description is incomplete. It fails to address behavioral aspects like side effects (e.g., network impact), success/failure responses, or integration with sibling tools (e.g., 'get_blocked_ips'). More detail is needed for safe and effective use.

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 schema already documents both parameters ('ip_address' and 'duration') thoroughly. The description adds no additional meaning beyond what the schema provides, such as format examples for 'ip_address' or implications of 'permanent' duration. Baseline 3 is appropriate when the schema handles parameter 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 specific action ('Block a source IP address') and resource ('IP address'), distinguishing it from siblings like 'get_blocked_ips' (which retrieves) or 'configure_sensor' (which modifies settings). It precisely conveys the tool's function without ambiguity.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, such as 'acknowledge_alert' for handling alerts or 'configure_sensor' for broader sensor settings. It lacks context about prerequisites (e.g., needing sensor access) or exclusions (e.g., not for internal IPs), leaving usage decisions unclear.

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

check_complianceC

Check project against a compliance framework. Scans IaC files and maps findings to compliance controls. Supports SOC2, HIPAA, PCI-DSS, NIST 800-53, CIS, and ISO 27001.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath to the project directory. Defaults to current working directory.
frameworkYesCompliance framework to check against. Options: soc2, hipaa, pci-dss, nist-800-53, cis-aws, cis-azure, cis-gcp, cis-kubernetes, iso-27001.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions scanning and mapping but doesn't describe what the tool returns (e.g., a report, pass/fail status, detailed findings), whether it's read-only or has side effects, performance characteristics, or error handling. For a compliance-checking tool with zero annotation coverage, this leaves significant gaps in understanding how it behaves.

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 appropriately sized and front-loaded: the first sentence states the core purpose, followed by specific actions and supported frameworks. There's no wasted text, and each sentence adds value. It could be slightly more structured (e.g., separating purpose from details), but it's efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of compliance checking (involving multiple frameworks and IaC scanning), no annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns, how findings are presented, whether it's idempotent, or any error conditions. For a tool with 2 parameters and significant operational context, this leaves the agent under-informed.

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 schema already documents both parameters ('path' and 'framework') with descriptions and options. The description adds no additional parameter semantics beyond what's in the schema—it doesn't explain parameter interactions, default behaviors beyond the schema's note, or usage examples. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/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: 'Check project against a compliance framework' with specific actions ('Scans IaC files and maps findings to compliance controls') and supported frameworks listed. It distinguishes itself from siblings like 'scan_iac' or 'detect_project' by focusing on compliance mapping rather than general scanning or detection. However, it doesn't explicitly differentiate from all potential alternatives in the sibling list.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when not to use it, or compare it to siblings like 'scan_iac' or 'fix_iac' that might handle similar IaC-related tasks. The agent must infer usage from the purpose alone without explicit direction.

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

configure_sensorC

Update runtime sensor configuration. Modify detection sensitivity, patterns, and rate limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
sensitivityNoDetection sensitivity (low, medium, high).
patternsNoCustom detection patterns to add.
rate_limitsNoRate limiting configuration.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While 'Update' implies a mutation operation, it doesn't specify whether this requires elevated permissions, if changes are reversible, potential side effects on system performance, or what the response looks like. This is inadequate for a configuration mutation tool.

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 extremely concise with just two sentences that directly state the tool's purpose and the specific fields that can be modified. Every word earns its place with no redundancy or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a configuration mutation tool with no annotations and no output schema, the description is insufficient. It doesn't address important contextual aspects like permission requirements, whether all parameters are optional (as indicated by required: []), what happens when parameters are omitted, or what the tool returns upon success/failure.

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 schema already documents all three parameters thoroughly. The description adds minimal value by listing the same fields (sensitivity, patterns, rate limits) without providing additional context like format examples or constraints beyond what's in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Update' and resource 'runtime sensor configuration', specifying what fields can be modified (detection sensitivity, patterns, rate limits). However, it doesn't explicitly distinguish this from sibling tools like 'get_sensor_config' or 'configure_sensor' alternatives that might exist elsewhere.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get_sensor_config' for reading configuration, or prerequisites such as needing admin permissions. It only states what the tool does, not when it should be selected.

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

create_fix_prA

Create a GitHub Pull Request with security fixes. Commits pending changes, pushes to a new branch, and opens a PR. Use after applying fixes with fix_vulnerability or fix_iac.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoNoRepository path or owner/name. Defaults to current working directory.
vulnerability_idNoVulnerability ID to reference in the PR.
iac_finding_idNoIaC finding ID to reference in the PR.
branch_nameNoTarget branch name. Auto-generated if not specified.
draftNoCreate as draft PR. Defaults to true.

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it mentions committing, pushing, and opening a PR, it lacks details on permissions required, error handling, rate limits, or what happens if the branch already exists. For a mutation tool with zero annotation coverage, this is a significant gap in transparency.

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 front-loaded with the core purpose in the first sentence, followed by a concise usage guideline. Both sentences earn their place by providing essential context without redundancy, making it efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a mutation tool with no annotations and no output schema, the description is adequate but incomplete. It covers purpose and usage well but lacks behavioral details like error cases or response format. The high schema coverage helps, but more context on the tool's operation would improve completeness.

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 schema already documents all 5 parameters thoroughly. The description does not add any parameter-specific information beyond what the schema provides, such as explaining interactions between vulnerability_id and iac_finding_id. Baseline 3 is appropriate when the schema does the heavy lifting.

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 specific action ('Create a GitHub Pull Request with security fixes') and resource ('GitHub Pull Request'), distinguishing it from siblings like fix_vulnerability or fix_iac by focusing on the PR creation step rather than applying fixes. It explicitly mentions committing, pushing, and opening a PR, which adds operational clarity.

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 on when to use this tool ('Use after applying fixes with fix_vulnerability or fix_iac'), naming specific sibling tools as prerequisites. This clearly distinguishes it from alternatives and sets a clear context for its application in a security fix workflow.

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

detect_projectA

Detect project framework and configuration without making changes. Analyzes a project to identify web framework, dependency files, IaC files, and existing security configuration. Useful for understanding a project before initializing.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath to the project directory. Defaults to current working directory.

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states 'without making changes' which is crucial for a detection tool, and mentions it 'analyzes a project' which implies read-only behavior. However, it doesn't disclose other behavioral aspects like performance characteristics, error handling, or what specific outputs to expect beyond the listed analysis targets.

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 efficiently structured in two sentences: the first states the core purpose and analysis targets, the second provides usage context. Every phrase adds value with zero wasted words, and the most important information ('Detect... without making changes') is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter detection tool with no annotations and no output schema, the description provides adequate coverage of purpose and usage context. However, it doesn't describe what the output will contain (beyond listing analysis targets) or potential limitations, which would be helpful given the lack of structured output documentation.

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

Parameters3/5

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

The schema description coverage is 100% with a single optional parameter 'path' that's well-documented in the schema. The description doesn't add any parameter-specific information beyond what's already in the schema (which states it's the project directory path with a default). This meets the baseline expectation when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/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: 'Detect project framework and configuration without making changes' with specific details about what it analyzes (web framework, dependency files, IaC files, security configuration). It distinguishes from siblings like 'init_project' by emphasizing it's for detection/analysis rather than initialization. However, it doesn't explicitly differentiate from all analysis-focused siblings like 'analyze_request' or 'scan_dependencies'.

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 context for when to use this tool: 'Useful for understanding a project before initializing' which implicitly suggests using it before 'init_project'. It doesn't explicitly state when NOT to use it or provide alternatives for similar analysis tasks, but the context is reasonably clear for its primary use case.

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

detect_vulnerable_endpointsC

Detect vulnerable API endpoints in a project. Analyzes code to find endpoints using vulnerable packages or high-risk code patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath to the project directory. Defaults to current working directory.
min_risk_scoreNoMinimum risk score threshold (0.0-1.0). Defaults to 0.3.

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool 'analyzes code' and detects vulnerabilities, implying a read-only analysis operation, but doesn't specify whether it modifies files, requires specific permissions, has rate limits, or what the output format looks like. For a security analysis tool with zero annotation coverage, this is a significant gap in transparency.

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 efficiently structured in two sentences: the first states the core purpose, and the second elaborates on the analysis method. It's front-loaded with the main action and avoids unnecessary details, though it could be slightly more concise by combining the sentences without losing clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of vulnerability detection, lack of annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., a list of endpoints, risk scores, remediation suggestions), how it handles errors, or any behavioral constraints. For a tool with 2 parameters and security implications, this leaves critical gaps for an agent to use it effectively.

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 schema already documents both parameters ('path' and 'min_risk_score') with their types, descriptions, and defaults. The description adds no additional parameter semantics beyond what's in the schema, such as explaining how 'min_risk_score' affects detection sensitivity or what constitutes a 'project directory' for the 'path' parameter. Baseline 3 is appropriate when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/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: 'Detect vulnerable API endpoints in a project' with the specific action 'analyzes code to find endpoints using vulnerable packages or high-risk code patterns.' It distinguishes from siblings like 'scan_dependencies' or 'fix_vulnerability' by focusing on endpoint detection rather than general scanning or remediation. However, it doesn't explicitly differentiate from 'detect_project' which might have overlapping scope.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'scan_dependencies' for package analysis or 'fix_vulnerability' for remediation. It mentions the analysis scope but doesn't specify prerequisites, ideal contexts, or exclusions, leaving the agent to infer usage from the tool name alone.

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

fix_iacA

Fix an Infrastructure as Code security misconfiguration. Can either suggest a fix (default) or apply it automatically. Returns before/after code for review.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the IaC file containing the issue.
line_numberNoLine number where the issue is located.
rule_idYesID of the security rule that was violated.
auto_applyNoIf true, automatically apply the fix. If false, only return the suggested fix. Defaults to false.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds useful context beyond basic functionality by describing the two modes (suggest vs. apply) and the return format (before/after code for review). However, it lacks details on permissions needed, rate limits, error handling, or whether changes are reversible, which are important for a mutation tool like this.

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 front-loaded with the core purpose in the first sentence, followed by operational details in a second sentence. Every sentence earns its place by conveying essential information without redundancy, making it efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (mutation with optional auto-apply) and no output schema, the description is somewhat complete but has gaps. It explains the tool's purpose and behavior but lacks details on output structure, error cases, or prerequisites. With no annotations, it should provide more behavioral context to fully guide an agent.

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 schema already documents all parameters thoroughly. The description does not add any additional meaning or examples beyond what the schema provides (e.g., it doesn't clarify parameter interactions or usage tips). Baseline score of 3 is appropriate as the schema does the heavy lifting.

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 specific action ('Fix an Infrastructure as Code security misconfiguration'), the resource involved (IaC files), and distinguishes it from siblings by specifying it addresses security misconfigurations rather than general analysis or other security tasks like 'scan_iac' or 'fix_vulnerability'. It includes the verb 'fix' and details the scope of fixing IaC security issues.

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 context on when to use this tool by specifying it's for fixing IaC security misconfigurations and mentions the default behavior (suggest a fix) versus alternative (apply automatically). However, it does not explicitly state when not to use it or name specific sibling alternatives like 'create_fix_pr' or 'scan_iac', which could help differentiate further.

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

fix_vulnerabilityA

Fix a detected dependency vulnerability by updating to a safe version. Modifies requirements.txt or pyproject.toml with the patched version. Returns a diff of changes for review.

ParametersJSON Schema
NameRequiredDescriptionDefault
package_nameYesName of the vulnerable package to fix.
target_versionNoSpecific version to update to. If not provided, updates to the minimum safe version.
pathNoPath to the project directory. Defaults to current working directory if not specified.

TDQS

A4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behaviors: it modifies files ('Modifies requirements.txt or pyproject.toml'), specifies the action ('updating to a safe version'), and indicates the output ('Returns a diff of changes for review'). However, it misses details like error handling, permissions needed, or side effects, which would elevate the score.

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 front-loaded with the core purpose in the first sentence, followed by implementation details and output. Each sentence adds value: the first defines the action, the second specifies file modifications, and the third describes the return. There is no wasted text, making it highly efficient and well-structured.

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 (modifying files to fix vulnerabilities) and lack of annotations or output schema, the description is reasonably complete. It covers the action, target files, and output format. However, it could improve by mentioning error cases or dependencies, but it's adequate for the context provided.

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 schema already documents all parameters thoroughly. The description adds no additional meaning beyond what the schema provides (e.g., it doesn't clarify parameter interactions or constraints). Baseline 3 is appropriate as the schema handles the heavy lifting without description enhancement.

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 specific action ('Fix a detected dependency vulnerability'), the resource ('dependency vulnerability'), and the mechanism ('by updating to a safe version'). It distinguishes from siblings like 'create_fix_pr' (which creates a PR) and 'acknowledge_alert' (which acknowledges without fixing), making the purpose explicit and differentiated.

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 description implies usage when a vulnerability is detected and needs fixing, but provides no explicit guidance on when to use this tool versus alternatives like 'create_fix_pr' (for PR-based fixes) or 'acknowledge_alert' (for non-fix actions). It lacks clear exclusions or prerequisites, leaving usage context somewhat vague.

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

generate_sbomC

Generate a Software Bill of Materials (SBOM) for the project. Supports CycloneDX and SPDX formats.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath to the project directory. Defaults to current working directory.
formatNoOutput format (cyclonedx, spdx). Defaults to cyclonedx.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does but lacks details on permissions, side effects (e.g., file generation), rate limits, or output handling. For a tool that likely creates files or reports, this is insufficient, though it doesn't contradict any annotations.

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 concise and front-loaded, stating the core purpose in the first sentence and adding format details in the second. There's no wasted text, but it could be slightly more structured (e.g., clarifying output location). Overall, it's efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (generating an SBOM likely involves file I/O and format specifics), no annotations, and no output schema, the description is incomplete. It doesn't explain what the output is (e.g., file path, JSON data), error conditions, or dependencies. For a tool with potential side effects, this leaves significant gaps for the agent.

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

Parameters3/5

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

The input schema has 100% description coverage, documenting both parameters ('path' and 'format') with defaults. The description adds minimal value by mentioning format options (CycloneDX, SPDX), which aligns with the schema. Since schema coverage is high, the baseline is 3, and the description doesn't significantly enhance parameter understanding beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/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: 'Generate a Software Bill of Materials (SBOM) for the project.' It specifies the verb ('Generate') and resource ('SBOM'), and mentions supported formats (CycloneDX, SPDX). However, it doesn't explicitly differentiate from sibling tools like 'scan_dependencies' or 'detect_project', which might have overlapping functionality, so it doesn't reach the highest score.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context (e.g., after scanning dependencies), or exclusions. With sibling tools like 'scan_dependencies' and 'detect_project', there's a clear gap in distinguishing use cases, leaving the agent to infer usage.

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

get_alert_detailsB

Get full details of a specific security alert. Returns attack payload, source IP, and matched patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
alert_idYesID of the alert to retrieve.

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool returns 'attack payload, source IP, and matched patterns', which adds some context about output content. However, it lacks critical details like whether this is a read-only operation, authentication requirements, rate limits, or error handling for invalid alert IDs. The description is insufficient for a tool with no annotation coverage.

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 a single, efficient sentence that front-loads the core purpose and includes key return details. Every word earns its place with no redundancy or unnecessary elaboration, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (1 parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and output content but lacks completeness in behavioral context (e.g., safety, errors) and usage guidelines. Without annotations or output schema, more detail would improve agent understanding.

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%, with the single parameter 'alert_id' fully documented in the schema. The description doesn't add any parameter-specific information beyond what the schema provides (e.g., format examples or validation rules). Baseline 3 is appropriate as the schema handles parameter documentation adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('full details of a specific security alert'), making the purpose explicit. It distinguishes from siblings like 'get_security_alerts' (plural) by specifying retrieval of a single alert. However, it doesn't explicitly mention how it differs from other alert-related tools like 'acknowledge_alert'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an alert ID from 'get_security_alerts'), exclusions, or comparisons to siblings like 'analyze_request' or 'detect_vulnerable_endpoints'. Usage is implied but not explicitly defined.

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

get_blocked_ipsA

List all currently blocked IP addresses. Shows IP, duration, and expiration time.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool lists blocked IPs with details (IP, duration, expiration time), which adds behavioral context beyond the input schema. However, it does not cover aspects like permissions needed, rate limits, or response format, leaving gaps for a tool with no annotation coverage.

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 core action ('List all currently blocked IP addresses') and followed by additional detail on output fields. Every sentence adds value, with no wasted words or unnecessary elaboration, making it highly efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description provides basic purpose and output fields but lacks details on behavioral traits like error handling, permissions, or data format. For a read-only tool with zero structured metadata, it is minimally adequate but leaves significant context gaps that could hinder agent usage.

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 has 0 parameters with 100% schema description coverage, so the baseline is 4. The description does not need to add parameter details, and it appropriately focuses on the tool's purpose without redundant parameter explanations.

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 specific action ('List all currently blocked IP addresses') and resource ('blocked IP addresses'), distinguishing it from siblings like 'block_ip' (which blocks IPs) and 'get_security_alerts' (which retrieves alerts). It provides a precise verb+resource combination with no ambiguity.

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 description implies usage when needing to view blocked IPs, but does not explicitly state when to use this tool versus alternatives like 'get_security_alerts' for broader security data or 'block_ip' for blocking actions. It lacks explicit when-not or alternative guidance, leaving usage context inferred rather than defined.

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

get_security_alertsC

Retrieve recent security alerts from the runtime sensor. Returns alerts with severity, attack type, and source information.

ParametersJSON Schema
NameRequiredDescriptionDefault
time_rangeNoTime range to query (e.g., '1h', '24h', '7d'). Defaults to '24h'.
severityNoFilter by severity level (critical, high, medium, low).
attack_typeNoFilter by attack type (e.g., 'sql_injection', 'xss').

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It states it 'retrieves' and 'returns' data, implying a read-only operation, but doesn't clarify permissions needed, rate limits, pagination, or whether it's real-time vs cached. The mention of 'recent' and runtime sensor hints at timeliness but lacks specifics on data freshness or system impact.

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 single, efficient sentence that front-loads the core action and output. It avoids redundancy and wastes no words, though it could be slightly more structured by separating purpose from return details. Every part contributes value, making it appropriately concise for a retrieval tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 parameters with full schema coverage but no annotations or output schema, the description is minimally adequate. It covers purpose and return fields (severity, attack type, source information), but lacks behavioral context like error handling, data format, or integration with siblings. For a security alert retrieval tool in a complex sibling set, more guidance would improve completeness.

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 schema fully documents all three parameters (time_range, severity, attack_type) with descriptions and defaults. The description adds no parameter-specific information beyond what's in the schema, such as examples for attack_type beyond 'sql_injection' or 'xss'. Baseline 3 is appropriate when schema handles parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'retrieve' and resource 'recent security alerts from the runtime sensor', specifying what the tool does. It distinguishes from some siblings like 'acknowledge_alert' or 'configure_sensor' by focusing on retrieval rather than modification or configuration. However, it doesn't explicitly differentiate from 'get_alert_details' which might retrieve specific alert information.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like 'get_alert_details' or 'analyze_request'. It mentions what it returns but doesn't specify use cases, prerequisites, or exclusions. This leaves the agent without contextual direction for tool selection among the many security-related siblings.

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

get_sensor_configC

Generate sensor configuration for framework integration. Creates code snippets for adding SecurityMiddleware to FastAPI or Flask applications.

ParametersJSON Schema
NameRequiredDescriptionDefault
frameworkNoTarget framework (fastapi, flask). Defaults to fastapi.
block_on_detectionNoWhether to block malicious requests. Defaults to true.
watch_pathsNoSpecific paths to monitor.
api_keyNoDashboard API key for alerting.

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'Generates' configuration and 'Creates code snippets', implying a read-only or generation operation, but doesn't clarify if this modifies any state, requires authentication, has side effects, or details output format. For a tool with no annotation coverage, this leaves significant behavioral gaps.

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 extremely concise with two sentences that directly state the purpose and output. Every word earns its place, and it's front-loaded with the core function. There's no redundancy or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of generating configuration code and the lack of annotations and output schema, the description is incomplete. It doesn't explain what the generated output looks like (e.g., code format, structure), potential errors, or integration steps. For a tool with no structured behavioral data, this leaves too much unspecified for reliable agent use.

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 schema fully documents all 4 parameters. The description adds no parameter-specific information beyond implying the 'framework' parameter targets FastAPI or Flask. Since the schema already covers this, the description provides minimal additional value, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/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: 'Generate sensor configuration for framework integration' and specifies it 'Creates code snippets for adding SecurityMiddleware to FastAPI or Flask applications.' This is a specific verb+resource combination that tells what the tool produces and for which frameworks. However, it doesn't explicitly differentiate from sibling tools like 'configure_sensor' or 'init_project', which might have overlapping domains.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context for integration, or compare it to siblings like 'configure_sensor' or 'init_project'. The agent must infer usage from the purpose alone, which is insufficient for optimal tool selection in a server with multiple security-related tools.

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

init_projectA

Initialize security-use for a project with zero configuration. Auto-detects the framework (FastAPI, Flask, Django) and sets up runtime middleware, pre-commit hooks, and configuration files. The easiest way to add security scanning to any Python project.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath to the project directory. Defaults to current working directory.
inject_middlewareNoWhether to inject SecurityMiddleware into the app. Defaults to true.
setup_precommitNoWhether to set up pre-commit hooks. Defaults to true.
dry_runNoIf true, preview changes without modifying files. Defaults to false.

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: auto-detects frameworks, modifies files (implied by 'sets up'), and offers a dry-run option. However, it lacks details on permissions needed, error handling, or specific security features added, which are important for a tool that modifies project files.

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 front-loaded with the core purpose in the first sentence, followed by supporting details. Every sentence adds value: the first explains what it does, the second lists specific actions, and the third provides usage context. It's efficient with zero wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description is moderately complete. It covers the tool's purpose and high-level behavior but lacks details on return values, error cases, or specific security implementations. For a tool that modifies project files, more behavioral transparency would improve completeness.

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 schema fully documents all 4 parameters. The description adds no additional parameter semantics beyond implying the tool works on Python projects, which is already clear from context. This meets the baseline of 3 for high schema coverage.

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 with specific verbs ('initialize', 'auto-detects', 'sets up') and resources ('security-use for a project', 'runtime middleware', 'pre-commit hooks', 'configuration files'). It distinguishes itself from siblings by focusing on project initialization for security scanning, unlike tools like 'scan_dependencies' or 'detect_project' which perform different functions.

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 context for when to use this tool ('easiest way to add security scanning to any Python project'), implying it's for initial setup. However, it doesn't explicitly state when not to use it or name alternatives among siblings (e.g., 'configure_sensor' might be for existing projects), leaving some ambiguity.

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

scan_dependenciesB

Scan the project for dependency vulnerabilities. Analyzes requirements.txt, pyproject.toml, and other dependency files to find known security vulnerabilities (CVEs) in installed packages.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath to the project directory to scan. Defaults to current working directory if not specified.

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions analyzing files and finding vulnerabilities, but doesn't disclose key behavioral traits such as whether the scan is read-only or has side effects, performance implications (e.g., time-intensive), authentication needs, rate limits, or error handling. This leaves significant gaps for an agent to understand operational risks.

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 appropriately sized with two sentences that efficiently convey the core functionality. It's front-loaded with the main action ('scan... for dependency vulnerabilities') and avoids unnecessary details. However, it could be slightly more structured by explicitly separating purpose from file specifics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of security scanning and the lack of annotations and output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., vulnerability list, severity levels), error conditions, or behavioral constraints. For a tool with no structured safety or output information, this leaves the agent with insufficient context to use it effectively.

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

Parameters3/5

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

The input schema has 100% description coverage, with the 'path' parameter well-documented in the schema itself. The description doesn't add any meaningful semantics beyond what the schema provides (e.g., it doesn't clarify path formats or constraints). Since schema coverage is high, the baseline score of 3 is appropriate, as the description doesn't compensate but also doesn't detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/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: scanning for dependency vulnerabilities by analyzing specific dependency files. It uses specific verbs ('scan', 'analyzes') and resources ('project', 'dependency files', 'packages'), making the action concrete. However, it doesn't explicitly distinguish itself from sibling tools like 'scan_iac' or 'detect_vulnerable_endpoints', which might involve overlapping security scanning domains.

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 description implies usage by specifying what files are analyzed (e.g., requirements.txt, pyproject.toml), suggesting it's for projects with such dependencies. However, it lacks explicit guidance on when to use this tool versus alternatives like 'scan_iac' or 'detect_vulnerable_endpoints', and doesn't mention prerequisites or exclusions (e.g., project structure requirements).

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

scan_iacA

Scan Infrastructure as Code files for security misconfigurations. Supports Terraform (.tf), CloudFormation (.yaml/.json), and other IaC formats. Detects issues like open S3 buckets, overly permissive IAM, missing encryption.

ParametersJSON Schema
NameRequiredDescriptionDefault
pathNoPath to the directory or file to scan. Defaults to current working directory if not specified.

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It mentions scanning and detection but fails to disclose critical behavioral traits such as whether this is a read-only operation, if it requires authentication, potential rate limits, output format, or error handling. The description is insufficient for a mutation-sensitive context with zero annotation coverage.

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 front-loaded with the core purpose, followed by specific details (supported formats, example issues) in a single, efficient sentence. Every element adds value without redundancy, making it appropriately sized and well-structured for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (security scanning with one parameter) and lack of annotations/output schema, the description covers the purpose and scope but is incomplete. It misses behavioral details like output format, error cases, and security implications. Without structured fields to compensate, it should provide more context for safe and effective use.

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 schema already documents the single parameter 'path' with its type and default. The description adds no additional parameter semantics beyond what the schema provides, such as format constraints or examples. Baseline 3 is appropriate when the schema handles parameter documentation adequately.

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 with specific verbs ('scan', 'detects') and resources ('Infrastructure as Code files'), and distinguishes it from siblings like 'fix_iac' (remediation) and 'scan_dependencies' (different scope). It explicitly lists supported formats and example issues, making the purpose unambiguous.

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 description implies usage for IaC security scanning but lacks explicit guidance on when to use this tool versus alternatives like 'check_compliance' or 'detect_vulnerable_endpoints'. It mentions supported formats, which provides some context, but does not specify prerequisites, exclusions, or direct comparisons to sibling tools.

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. 18 tool updatesv0.1.0
    • First observedacknowledge_alert
    • First observedanalyze_request
    • First observedblock_ip
    • First observedcheck_compliance
    • First observedconfigure_sensor
    • First observedcreate_fix_pr
    • First observeddetect_project
    • First observeddetect_vulnerable_endpoints
    • First observedfix_iac
    • First observedfix_vulnerability
    • First observedgenerate_sbom
    • First observedget_alert_details
    • First observedget_blocked_ips
    • First observedget_security_alerts
    • First observedget_sensor_config
    • First observedinit_project
    • First observedscan_dependencies
    • First observedscan_iac

TDQS

A3.5/5.0

Scored across 18 tools

Disambiguation4/5

Most tools have distinct purposes, such as acknowledge_alert for alert management, analyze_request for attack detection, and fix_vulnerability for dependency fixes. However, some overlap exists between detect_project and detect_vulnerable_endpoints, as both involve project analysis, which could cause minor confusion for an agent.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case, such as acknowledge_alert, analyze_request, and block_ip. This predictability makes it easy for agents to understand and select tools without naming confusion.

Tool Count4/5

With 18 tools, the count is slightly high but reasonable for a comprehensive security server covering alert management, vulnerability scanning, compliance, and project initialization. It supports various workflows without feeling overly bloated, though it borders on being heavy.

Completeness5/5

The tool set provides complete coverage for security operations, including detection (e.g., scan_dependencies, scan_iac), analysis (e.g., analyze_request, check_compliance), remediation (e.g., fix_vulnerability, create_fix_pr), and management (e.g., configure_sensor, get_security_alerts). No obvious gaps exist, enabling agents to handle end-to-end security tasks effectively.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables comprehensive security scanning of code repositories to detect secrets, vulnerabilities, dependency issues, and configuration problems. Provides real-time security checks and best practice recommendations to help developers identify and prevent security issues.
    3 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables security scanning of codebases through integrated tools for secret detection, SCA, SAST, and DAST vulnerabilities, with AI-powered remediation suggestions based on findings.
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides AI coding assistants with real-time security scanning superpowers, including SAST, secrets detection, dependency CVE scanning, and web vulnerability assessment.
    10 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI coding assistants to leverage Application Security Posture Management (ASPM) capabilities, allowing developers to write secure code, query security risks, trigger diff scans, and manage security findings directly from their AI assistant.
    4
    Apache 2.0