Security-Use MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Security-Use MCP Serverscan my project for security vulnerabilities"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| Scans your project's dependencies for known vulnerabilities using the OSV database |
| Scans Infrastructure as Code files for security misconfigurations |
| Automatically updates vulnerable packages to secure versions |
| Generates and applies fixes for IaC security issues |
SBOM & Compliance Tools
Tool | Description |
| Generate Software Bill of Materials in CycloneDX or SPDX format |
| Check against SOC2, HIPAA, PCI-DSS, NIST 800-53, CIS, and ISO 27001 |
Runtime Security Tools
Tool | Description |
| Find API endpoints using vulnerable packages |
| Analyze HTTP requests for SQL injection, XSS, and other attacks |
| Generate SecurityMiddleware configuration for FastAPI/Flask |
GitHub Integration
Tool | Description |
| 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.pyJavaScript/Node.js:
package.json,package-lock.json,yarn.lockJava:
pom.xml,build.gradle.NET:
csproj,packages.configPHP:
composer.json,composer.lockConda:
environment.yml
Infrastructure as Code
Terraform (
.tffiles)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-mcpFrom Source
git clone https://github.com/security-use/mcp.git
cd mcp
pip install -e .Quick Setup for Cursor
Install the package (see above)
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": {}
}
}
}Restart Cursor
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.19Compliance 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: HIGHRequest 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 validationConfiguration Options
Environment Variables
Variable | Description | Default |
| Logging level (DEBUG, INFO, WARN, ERROR) | INFO |
| Directory for caching vulnerability data | System temp |
| 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-useRunning Tests
# Run all tests
pytest
# Run with coverage
pytest --cov=security_use_mcp
# Run specific test file
pytest tests/test_handlers.py -vLinting
# Check code style
ruff check src/ tests/
# Auto-fix issues
ruff check src/ tests/ --fixTesting 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-mcpTroubleshooting
Server Not Starting
Check Python version (requires 3.10+):
python --versionVerify installation:
pip show security-use-mcp pip show security-useTest the server directly:
python -c "from security_use_mcp.server import server; print('OK')"
Tools Not Appearing in Cursor
Restart Cursor after changing
mcp.jsonCheck that the JSON is valid
Look for errors in Cursor's Developer Tools (Help > Toggle Developer Tools)
Scan Returns No Results
Make sure you have dependency files (requirements.txt, package.json, etc.) or IaC files (.tf, .yaml) in your project
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 testsThe 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
Related Projects
security-use - Core security scanning library
security-use-vscode - VS Code extension
MCP Specification - Model Context Protocol documentation
License
MIT
Available Tools
18 toolsacknowledge_alertA
Mark a security alert as reviewed/acknowledged. Removes the alert from active alerts list.
| Name | Required | Description | Default |
|---|---|---|---|
| alert_id | Yes | ID of the alert to acknowledge. | |
| notes | No | Notes about the acknowledgment. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | HTTP method (GET, POST, etc.). | |
| path | Yes | Request path (e.g., '/api/users'). | |
| query_params | No | Query parameters as key-value pairs. | |
| headers | No | Request headers as key-value pairs. | |
| body | No | Request body content. | |
| source_ip | No | Source IP address of the request. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ip_address | Yes | IP address to block. | |
| duration | No | Block duration (e.g., '1h', '24h', 'permanent'). Defaults to '24h'. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the project directory. Defaults to current working directory. | |
| framework | Yes | Compliance framework to check against. Options: soc2, hipaa, pci-dss, nist-800-53, cis-aws, cis-azure, cis-gcp, cis-kubernetes, iso-27001. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| sensitivity | No | Detection sensitivity (low, medium, high). | |
| patterns | No | Custom detection patterns to add. | |
| rate_limits | No | Rate limiting configuration. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| repo | No | Repository path or owner/name. Defaults to current working directory. | |
| vulnerability_id | No | Vulnerability ID to reference in the PR. | |
| iac_finding_id | No | IaC finding ID to reference in the PR. | |
| branch_name | No | Target branch name. Auto-generated if not specified. | |
| draft | No | Create as draft PR. Defaults to true. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the project directory. Defaults to current working directory. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the project directory. Defaults to current working directory. | |
| min_risk_score | No | Minimum risk score threshold (0.0-1.0). Defaults to 0.3. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to the IaC file containing the issue. | |
| line_number | No | Line number where the issue is located. | |
| rule_id | Yes | ID of the security rule that was violated. | |
| auto_apply | No | If true, automatically apply the fix. If false, only return the suggested fix. Defaults to false. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| package_name | Yes | Name of the vulnerable package to fix. | |
| target_version | No | Specific version to update to. If not provided, updates to the minimum safe version. | |
| path | No | Path to the project directory. Defaults to current working directory if not specified. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the project directory. Defaults to current working directory. | |
| format | No | Output format (cyclonedx, spdx). Defaults to cyclonedx. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| alert_id | Yes | ID of the alert to retrieve. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| time_range | No | Time range to query (e.g., '1h', '24h', '7d'). Defaults to '24h'. | |
| severity | No | Filter by severity level (critical, high, medium, low). | |
| attack_type | No | Filter by attack type (e.g., 'sql_injection', 'xss'). |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| framework | No | Target framework (fastapi, flask). Defaults to fastapi. | |
| block_on_detection | No | Whether to block malicious requests. Defaults to true. | |
| watch_paths | No | Specific paths to monitor. | |
| api_key | No | Dashboard API key for alerting. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the project directory. Defaults to current working directory. | |
| inject_middleware | No | Whether to inject SecurityMiddleware into the app. Defaults to true. | |
| setup_precommit | No | Whether to set up pre-commit hooks. Defaults to true. | |
| dry_run | No | If true, preview changes without modifying files. Defaults to false. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the project directory to scan. Defaults to current working directory if not specified. |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Path to the directory or file to scan. Defaults to current working directory if not specified. |
TDQS
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.
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.
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.
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.
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.
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.
18 tool updates
v0.1.0- First observed
acknowledge_alert - First observed
analyze_request - First observed
block_ip - First observed
check_compliance - First observed
configure_sensor - First observed
create_fix_pr - First observed
detect_project - First observed
detect_vulnerable_endpoints - First observed
fix_iac - First observed
fix_vulnerability - First observed
generate_sbom - First observed
get_alert_details - First observed
get_blocked_ips - First observed
get_security_alerts - First observed
get_sensor_config - First observed
init_project - First observed
scan_dependencies - First observed
scan_iac
TDQS
Scored across 18 tools
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.
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.
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.
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
Related MCP Connectors
Threat modeling, code/cloud/pipeline scanning, shadow-AI discovery, compliance checks and fixes.
Deep security scans of repos you own from your editor: dependency CVEs, SAST, git-history secrets.
Zero-config MCP security scanner for AI-generated apps. 25K+ vulnerability patterns.
Generate SBOMs, scan vulnerabilities, and analyze dependencies from local projects or Git repos.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables 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 npm2MIT
- AlicenseNot gradedqualityDmaintenanceEnables security scanning of codebases through integrated tools for secret detection, SCA, SAST, and DAST vulnerabilities, with AI-powered remediation suggestions based on findings.MIT

Cybrium MCP Serverofficial
AlicenseNot gradedqualityBmaintenanceProvides AI coding assistants with real-time security scanning superpowers, including SAST, secrets detection, dependency CVE scanning, and web vulnerability assessment.10 npmApache 2.0
Apiiro Guardian Agent MCPofficial
AlicenseNot gradedqualityDmaintenanceEnables 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.4Apache 2.0