VulneraMCP
VulneraMCP is an AI-powered MCP server for bug bounty hunting and security testing, accessible via MCP-compatible clients like Cursor or Claude Desktop. Here's what you can do:
Reconnaissance
Discover subdomains (Subfinder, Amass), check live hosts (HTTPx), resolve DNS records, find URLs (gau), fuzz endpoints (ffuf), and run full automated recon workflows.
JavaScript Analysis
Download, beautify, and analyze JS files; extract API endpoints, URLs, and secrets (API keys, tokens).
Security Testing
Test for XSS, SQL injection, IDOR, CSRF, CSP misconfigurations, and authentication bypass.
API Testing
GraphQL introspection, rate limit testing, BOLA/IDOR, mass assignment detection, and Swagger/OpenAPI enumeration.
Authentication Testing
JWT none algorithm/confusion attacks, OAuth misconfigurations, session fixation, password reset host header poisoning, and MFA bypass.
Cloud Security
Enumerate S3/Azure/GCP buckets, scan for exposed secrets in JS/HTML/env files, and detect Terraform state file leaks.
Browser Rendering
Take screenshots, extract DOM structure and HTML forms, and execute custom JavaScript in page context via Puppeteer.
OWASP ZAP Integration
Start spider and active scans, retrieve/filter alerts, send custom requests, proxy through AI-enhanced layer, and manage scanning contexts.
Caido Integration
Query HTTPQL and discover endpoints.
Scanner Orchestration & Graph Analysis
Normalize targets, orchestrate coordinated scans, correlate findings, build knowledge graphs in PostgreSQL, detect patterns, and generate/rank attack paths (JSON/GraphML).
Database Management
Save and retrieve findings and test results in PostgreSQL; view aggregated statistics.
AI Training & Pattern Matching
Import training data from HackTheBox and PortSwigger Academy, extract patterns from bug bounty writeups, match current tests against learned patterns, and retrieve CSRF exploitation techniques.
Reporting & Wordlists
Generate Markdown reports from findings and create custom wordlists for directories, files, and parameters.
Web Dashboard
Access real-time statistics, manage findings, and track testing progress visually.
Integrates with Burp Suite for security testing and traffic analysis as part of the bug bounty hunting platform.
Provides comprehensive integration with OWASP ZAP for automated web crawling (spider scans), active vulnerability scanning, proxy integration, alert management, and security context configuration.
Supports importing training data from PortSwigger labs to enhance AI-powered pattern matching and exploit detection capabilities.
Uses PostgreSQL for persistent storage of vulnerability findings, security test results, statistics, and bug bounty research data.
Leverages Puppeteer for webpage rendering capabilities including screenshots, DOM extraction, form analysis, and JavaScript execution in page context.
Provides optional Redis integration for caching and working memory to improve performance of security testing operations.
Offers full integration with OWASP ZAP proxy for processing requests, conducting spider scans, performing active security scanning, and managing vulnerability alerts.
Click on "Install 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., "@VulneraMCPrun a full security scan on example.com and show me the top 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.
VulneraMCP
An AI-Powered Bug Bounty MCP Server — recon, vulnerability testing, API/auth/cloud scanning, graph analysis, and reporting for security researchers and bug bounty hunters.
VulneraMCP is a Model Context Protocol (MCP) server for bug bounty hunting and security testing. It integrates OWASP ZAP, optional Caido/Burp Suite, and CLI tools (subfinder, httpx, gau, ffuf) for reconnaissance, JavaScript analysis, XSS/SQLi/IDOR/CSRF testing, API and auth misconfiguration checks, cloud bucket and secret scanning, orchestrated scan flows, knowledge-graph analysis, wordlist generation, and Markdown reporting — with PostgreSQL storage for findings and test results.
🎬 Demo
Watch the VulneraMCP demonstration on YouTube: https://youtu.be/wlUvBVNyh74
Related MCP server: Bug Bounty MCP Server
🌟 Features
🔍 Reconnaissance Tools
Subdomain Discovery: Subfinder, Amass integration
Live Host Detection: HTTPx for checking active endpoints
DNS Resolution: DNS record enumeration (A, AAAA, CNAME, MX, TXT)
URL Discovery: Gau (Get All URLs) from archives and crawlers
Fuzzing: ffuf for directory, file, and parameter discovery
Full Recon Workflow: Automated multi-tool reconnaissance
🔐 Security Testing
XSS Testing: Automated cross-site scripting detection
SQL Injection: SQLi vulnerability testing with sqlmap fallback
IDOR Detection: Insecure Direct Object Reference testing
CSP Analysis: Content Security Policy misconfiguration detection
Auth Bypass: Authentication bypass attempt testing
CSRF Testing: Cross-Site Request Forgery detection with advanced techniques
🌐 API Testing
GraphQL: Introspection and misconfiguration checks
Rate Limiting: Endpoint rate limit testing
BOLA / IDOR: Broken object level authorization tests
Mass Assignment: Unsafe field assignment detection
Swagger/OpenAPI: API documentation enumeration
🔑 Authentication Testing
JWT: None algorithm and algorithm confusion attacks
OAuth: Misconfiguration detection
Session: Fixation and cookie flag analysis
Password Reset: Host header poisoning tests
MFA: Bypass signal detection and testing
☁️ Cloud Security
Storage: S3/Azure/GCP bucket enumeration and permission probes
Secrets: Exposed key scanning in JS, HTML, and env files
Terraform: State file leak detection
🎯 Scanner Orchestration
Target Normalization: Standardize targets for multi-tool flows
Run Flow: Orchestrated scanning across API, auth, and cloud tools
Finding Correlation: Link and correlate results across tests
📈 Graph Analysis
Knowledge Graph: Store targets, findings, and relationships in PostgreSQL
Pattern Detection: Extract patterns and find similar findings
Attack Graphs: Generate, rank, and export attack paths (JSON, GraphML)
📝 Reporting & Wordlists
Report Generation: Markdown reports from findings
Wordlist Generation: Directories, files, parameters, and combined lists
📜 JavaScript Analysis
JS Download: Download and analyze JavaScript files
Code Beautification: Format and beautify minified JS
Endpoint Extraction: Find API endpoints and URLs in JS
Secret Detection: Heuristic API key and token extraction
Full Analysis: Combined download, beautify, and analyze workflow
🕷️ Integration
Spider Scans: Automated web crawling
Active Scanning: Vulnerability scanning
Proxy Integration: Process requests through ZAP proxy
Alert Management: Retrieve and analyze security alerts
Context Management: Define scanning contexts
💾 Database Integration
PostgreSQL: Store findings, test results, and scores
Redis: Working memory and caching (optional)
Finding Management: Save and retrieve bug findings
Test Result Storage: Track all security tests with statistics
🖼️ Rendering Tools
Screenshots: Capture webpage screenshots with Puppeteer
DOM Extraction: Extract and analyze page structure
Form Extraction: Find and analyze web forms
JavaScript Execution: Execute JS in page context
🤖 AI Training & Pattern Matching
Training Data Import: Import from HTB, PortSwigger labs
Pattern Matching: Learn from successful exploits
Writeup Analysis: Extract patterns from bug bounty writeups
CSRF Patterns: Pre-loaded CSRF exploitation patterns
📊 Web Dashboard
Real-time Statistics: View test results and findings
Finding Management: Browse and analyze discovered vulnerabilities
Visual Analytics: Track testing progress and success rates
🚀 Quick Start
Prerequisites
Node.js 20+ and npm
PostgreSQL 18+ (or Docker)
Redis (optional, for caching)
ZAP (optional, for active scanning)
Caido (optional, for traffic analysis)
Installation
# Clone the repository
git clone https://github.com/telmon95/VulneraMCP.git
cd VulneraMCP
# Install dependencies
npm install
# Build the project
npm run buildConfiguration
Copy environment template:
cp mcp.json.example mcp.jsonConfigure your environment variables:
Set up PostgreSQL connection details
Configure Caido API token (if using)
Set ZAP API URL (default: http://localhost:8081)
Initialize the database:
node init-db.js
Running the Server
# Start the MCP server
npm start
# Start the dashboard (in another terminal)
npm run dashboard
# Access dashboard at http://localhost:3000Docker Setup
# Start all services with Docker Compose
docker-compose up -d
# Or use the startup script
./start-services.sh📖 Usage
Via MCP Client (Cursor, Claude Desktop, etc.)
The server provides MCP tools that can be called through any MCP-compatible client:
Reconnaissance:
recon.subfinder domain: example.com
recon.httpx input: example.com,subdomain.example.com
recon.full domain: example.comSecurity Testing:
security.test_xss url: https://example.com/search?q=<script>
security.test_sqli url: https://example.com/user?id=1
security.test_csrf url: https://example.com/profile/updateJavaScript Analysis:
js.analyze url: https://example.com/static/app.js
js.extract_secrets source: <javascript_code>ZAP Integration:
zap.start_spider url: https://example.com
zap.start_active_scan url: https://example.com
zap.get_alerts baseURL: https://example.comCaido Integration:
caido.query httpql: "req.host.cont:\"example.com\" AND req.path.cont:\"api\""
caido.agent_discover_endpoints host: example.comRate Limiting & Best Practices
When testing bug bounty programs, always respect rate limits:
// Example: 2 requests/second limit
const rateLimiter = require('./hunting/rate-limiter');
const limiter = rateLimiter(2); // 2 req/sec
await limiter();
// Make your request🏗️ Project Structure
VulneraMCP/
├── src/
│ ├── integrations/ # External service integrations
│ │ ├── zap.ts # OWASP ZAP integration
│ │ ├── caido.ts # Caido integration
│ │ ├── postgres.ts # PostgreSQL database
│ │ └── redis.ts # Redis caching
│ ├── tools/ # MCP tools (recon, security, etc.)
│ ├── mcp/ # MCP server implementation
│ └── index.ts # Main entry point
├── public/ # Dashboard frontend
├── hunting/ # Bug bounty hunting scripts
├── dist/ # Compiled TypeScript output
└── dashboard-server.js # Dashboard API server🔧 Configuration
MCP Server Configuration (mcp.json)
{
"name": "vulneramcp",
"command": "node",
"args": ["dist/index.js"],
"env": {
"POSTGRES_HOST": "localhost",
"POSTGRES_PORT": "5433",
"POSTGRES_USER": "postgres",
"POSTGRES_DB": "bugbounty"
}
}Environment Variables
# PostgreSQL
POSTGRES_HOST=localhost
POSTGRES_PORT=5433
POSTGRES_USER=postgres
POSTGRES_PASSWORD=your_password
POSTGRES_DB=bugbounty
# ZAP
ZAP_API_URL=http://localhost:8081
# Caido
CAIDO_API_TOKEN=your_token
# Redis (optional)
REDIS_HOST=localhost
REDIS_PORT=6379📊 Dashboard
The web dashboard provides:
Statistics: Test results, success rates, vulnerability distribution
Findings: Detailed view of discovered vulnerabilities
Search & Filter: Find specific findings by target, type, severity
Access at: http://localhost:3000
💖 Sponsor
If VulneraMCP helps your bug bounty or security research workflow, consider sponsoring development on GitHub Sponsors.
Your support helps fund new features, documentation, security testing, and long-term maintenance of this open source project.
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Fork the repository
Create your feature branch (
git checkout -b feature/AmazingFeature)Commit your changes (
git commit -m 'Add some AmazingFeature')Push to the branch (
git push origin feature/AmazingFeature)Open a Pull Request
📝 License
This project is licensed under the MIT License - see the LICENSE file for details.
⚠️ Disclaimer
This tool is for authorized security testing only. Always:
Get proper authorization before testing
Respect rate limits and terms of service
Follow responsible disclosure practices
Never use on systems you don't own or have explicit permission to test
🙏 Acknowledgments
ZAP for vulnerability scanning
The bug bounty community for inspiration and feedback
📚 Documentation
🐛 Issues
Found a bug? Have a feature request? Please open an issue on GitHub.
📧 Contact
GitHub: @telmon95
Sponsors: GitHub Sponsors
Issues: GitHub Issues
Available Tools
47 toolsdb.get_findingsC
Retrieve bug findings from the database
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Filter by target | |
| limit | No | Maximum number of results |
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 'Retrieve bug findings' but doesn't clarify aspects like whether this is a read-only operation, if it requires authentication, how results are returned (e.g., pagination), or any rate limits. This leaves significant gaps in understanding the tool's behavior.
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 directly states the tool's purpose without unnecessary words. It's front-loaded and easy to parse, though it could be slightly more informative without sacrificing brevity.
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 lack of annotations and output schema, the description is incomplete. It doesn't cover behavioral traits, return values, or usage context, making it insufficient for a tool that retrieves data from a database with parameters, despite the clear schema coverage.
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 clear documentation for 'target' (filter by target) and 'limit' (maximum number of results). The description doesn't add any meaning beyond this, such as explaining what 'target' refers to or usage examples, but the schema provides adequate baseline information.
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 ('bug findings from the database'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'db.get_statistics' or 'db.get_test_results', which might also retrieve data from the database but for different resources.
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 sibling tools like 'db.get_statistics' or 'db.save_finding', nor does it specify contexts or prerequisites for retrieving bug findings, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db.get_statisticsC
Get statistics about test results
| 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 full burden for behavioral disclosure. It states this is a 'Get' operation, implying read-only behavior, but doesn't specify what statistics are included, format of return data, potential side effects, or error conditions. For a 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 a single, efficient sentence with no wasted words. It's appropriately sized for a simple tool and front-loads the core purpose immediately.
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 has no output schema and no annotations, the description is incomplete for effective use. It doesn't explain what statistics are returned, their format, or how this differs from similar sibling tools. For a data retrieval operation in a context with multiple statistical tools, more context is needed.
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 (empty schema). The description doesn't need to explain parameters since none exist, and it correctly doesn't mention any. This meets expectations for a parameterless tool.
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 'Get statistics about test results' clearly states the verb ('Get') and resource ('statistics about test results'), providing a basic purpose. However, it doesn't distinguish this from sibling tools like 'db.get_test_results' or 'training.stats', leaving ambiguity about what specific statistics are retrieved or how this differs from other data retrieval tools.
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. With siblings like 'db.get_test_results' and 'training.stats' available, there's no indication of context, prerequisites, or exclusions. This forces the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db.get_test_resultsB
Retrieve test results with success/failure and scores
| Name | Required | Description | Default |
|---|---|---|---|
| target | No | Filter by target | |
| testType | No | Filter by test type | |
| success | No | Filter by success status | |
| limit | No | Maximum number of results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but lacks behavioral details. It doesn't disclose if this is a read-only operation, requires authentication, has rate limits, returns paginated results, or what happens with no filters. 'Retrieve' implies reading, but specifics are missing.
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 with no wasted words. It front-loads the core purpose ('Retrieve test results') and adds key details ('with success/failure and scores') concisely.
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 read operation with 4 parameters and 100% schema coverage but no output schema or annotations, the description is minimally adequate. It states what is retrieved but lacks context on behavior, output format, or usage scenarios, leaving gaps for an AI 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 fully documents all 4 parameters. The description adds no parameter-specific information beyond implying filtering by success/failure and scores, which is already covered in the schema. Baseline 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 action ('Retrieve') and resource ('test results'), specifying they include 'success/failure and scores'. It distinguishes from siblings like 'db.get_findings' or 'db.get_statistics' by focusing on test results, though it doesn't explicitly contrast them.
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?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites, context (e.g., after running tests), or comparisons to siblings like 'db.get_findings' for different data types.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db.initA
Initialize database tables (run once on first setup)
| 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 full burden. It mentions the tool initializes tables but lacks details on behavioral traits like whether it's idempotent, requires specific permissions, destroys existing data, or handles errors. This is inadequate for a setup tool 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 a single, efficient sentence that front-loads the purpose ('Initialize database tables') and adds necessary context ('run once on first setup'). Every word earns its place with no waste.
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 database initialization tool with no annotations and no output schema, the description is incomplete. It doesn't explain what 'initialize' entails (e.g., creates tables, sets up schemas), potential side effects, or return values, leaving gaps for safe 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?
There are 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description doesn't add param info, but that's acceptable here. Baseline is 4 for zero parameters, as it avoids unnecessary details.
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 action ('Initialize') and resource ('database tables'), specifying it's for first-time setup. However, it doesn't explicitly differentiate from siblings like db.get_findings or db.save_finding, which are for querying/inserting data rather than schema setup.
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?
It provides clear context for usage ('run once on first setup'), which implies this is a one-time initialization tool. However, it doesn't explicitly state when not to use it or name alternatives, such as whether to re-run it after errors or if other tools handle schema updates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
db.save_findingC
Save a bug finding to the database
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Target URL or domain | |
| type | Yes | Vulnerability type | |
| severity | Yes | Severity level | |
| description | Yes | Finding description | |
| payload | No | Payload used | |
| response | No | Response data | |
| score | No | Severity score (0-10) |
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 'Save' which implies a write/mutation operation, but doesn't disclose critical behavioral traits: whether this creates new records or updates existing ones, authentication requirements, potential side effects, error conditions, or what happens on success/failure. The description is minimal and lacks necessary operational context.
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 at just 6 words, front-loading the essential action and resource. There's zero wasted language or unnecessary elaboration. Every word earns its place in conveying the core functionality.
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 write operation tool with 7 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address what the tool returns, error handling, success conditions, or how it differs from sibling tools. The minimal description leaves significant gaps in understanding the tool's full behavior and integration context.
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 all parameters are documented in the schema. The description adds no additional parameter semantics beyond what's in the schema - it doesn't explain relationships between parameters (e.g., how 'score' relates to 'severity'), format expectations, or usage examples. The baseline of 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 action ('Save') and resource ('a bug finding to the database'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'db.get_findings' or 'db.get_statistics', which would require mentioning this is specifically for creating/adding new findings rather than retrieving existing ones.
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 a valid bug finding to save), nor does it differentiate from sibling tools like 'db.get_findings' (for retrieval) or other database operations. Usage context is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
js.analyzeA
Download, beautify, and analyze a JavaScript file - extract endpoints and secrets
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL of the JS file to analyze |
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 mentions actions (download, beautify, analyze) but does not specify behavioral traits such as whether the download is cached, if beautification alters the original file, what analysis entails (e.g., static or dynamic), error handling, or rate limits. This leaves gaps in understanding the tool's operational behavior.
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 all key actions and outcomes without unnecessary words. It uses a dash to separate the action from the purpose, making it easy to parse. Every part of the sentence contributes directly to understanding the tool's function.
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 (multiple actions: download, beautify, analyze) and no annotations or output schema, the description is somewhat complete but lacks details on behavioral aspects and output format. It covers the high-level purpose but does not address how results are returned or what happens in edge cases, leaving room for improvement in contextual coverage.
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 'url' fully documented in the schema. The description does not add any parameter-specific details beyond what the schema provides, such as URL format requirements or supported protocols. Since the schema handles the parameter documentation adequately, the baseline score of 3 is appropriate.
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 actions ('Download, beautify, and analyze') and the target resource ('a JavaScript file'), with explicit outcomes ('extract endpoints and secrets'). It distinguishes from siblings like js.download (download only), js.beautify (beautify only), js.find_endpoints (endpoints only), and js.extract_secrets (secrets only) by combining these functions into a comprehensive workflow.
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 analyzing JS files to extract endpoints and secrets, but does not explicitly state when to use this tool versus alternatives like js.find_endpoints or js.extract_secrets. It provides context for the tool's purpose but lacks specific guidance on exclusions or prerequisites, such as whether it should be used for initial reconnaissance versus targeted extraction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
js.beautifyC
Beautify and format JavaScript source code
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | JavaScript source code | |
| indentSize | No | Indentation size |
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 'beautifies and formats' code, implying a read-only transformation, but doesn't clarify if it modifies the original source, handles errors, or has any side effects. It lacks details on output format, performance characteristics, or limitations.
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—a single, clear sentence that front-loads the core purpose without unnecessary words. Every part of the sentence earns its place by directly communicating the tool's function.
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 tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the formatted output looks like, whether it preserves comments, handles different JavaScript versions, or has any error handling. Given the complexity of code formatting and lack of structured data, more context is needed.
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 in the schema, which has 100% coverage. It doesn't explain what 'beautify' entails in terms of the source parameter or provide context for indentSize values. Since the schema fully documents parameters, the baseline score of 3 is appropriate.
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 a specific verb ('beautify and format') and resource ('JavaScript source code'), making it immediately understandable. However, it doesn't differentiate from sibling tools like js.analyze or render.execute_js, which might also process JavaScript code in different ways.
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 when to prefer js.beautify over js.analyze for formatting needs, or when to use it in conjunction with other tools like js.extract_secrets. There's no context about prerequisites or typical workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
js.downloadC
Download JavaScript file from URL
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL of the JS file |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the action (download) but lacks critical behavioral details: whether it handles authentication, rate limits, error conditions (e.g., invalid URLs), output format (e.g., file content or saved path), or network constraints. For a download 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 a single, efficient sentence with zero waste. It's front-loaded with the core action and resource, making it easy to parse. Every word earns its place without 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 tool's complexity (a download operation with potential network/security implications), no annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like error handling, output format, or integration context, leaving gaps for an AI agent to understand how 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 'url' parameter fully documented. The description adds no additional parameter semantics beyond what the schema provides (e.g., no details on URL validation or supported protocols). With high schema coverage, the baseline score of 3 is appropriate as the description doesn't compensate but doesn't detract either.
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 'Download JavaScript file from URL' clearly states the action (download) and resource (JavaScript file from URL). It distinguishes from siblings like js.analyze or js.beautify by focusing on retrieval rather than analysis or transformation. However, it doesn't explicitly differentiate from potential similar tools like render.execute_js which might also fetch JS content.
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., valid URL format), when not to use it (e.g., for non-JS files), or suggest sibling tools for related tasks like js.extract_secrets or js.find_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.
js.extract_secretsC
Heuristically extract potential API keys, tokens, and secrets from JS
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | JavaScript source code |
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 'heuristically extract,' implying an approximate or pattern-based method, but doesn't detail accuracy, limitations, output format, or performance characteristics (e.g., speed, resource usage). This leaves significant gaps for a tool performing security-sensitive extraction.
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 directly states the tool's purpose without unnecessary words. It's front-loaded with the core action and resource, making it easy to understand at a glance.
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 tool with no annotations and no output schema, the description is insufficient. It lacks details on behavioral traits (e.g., what 'heuristically' entails, error handling), usage context, and output expectations. Given the complexity of secret extraction and the absence of structured data, more comprehensive guidance is needed.
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 'source' parameter clearly documented as 'JavaScript source code.' The description adds no additional parameter semantics beyond this, as it doesn't specify format requirements, size limits, or examples. Given the high schema coverage, a baseline score of 3 is appropriate.
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 a specific verb ('extract') and resource ('potential API keys, tokens, and secrets'), and specifies the source material ('from JS'). However, it doesn't explicitly differentiate from sibling tools like 'js.analyze' or 'training.extract_from_writeup', which might have overlapping functionality.
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., for security testing vs. code analysis), or compare it to siblings like 'js.analyze' or 'security.test_*' tools that might handle similar tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
js.find_endpointsC
Extract API endpoints, URLs, and paths from JavaScript code
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | JavaScript source code |
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 ('Extract API endpoints, URLs, and paths') but doesn't describe how it behaves—for example, whether it returns raw strings, structured data, handles errors, or has performance constraints like rate limits. This leaves significant gaps for an agent to understand the tool's operation.
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 target. It wastes no words and directly communicates the tool's function without unnecessary elaboration, making it easy for an agent to parse quickly.
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 (extracting structured data from code), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what the output looks like (e.g., list of strings, JSON objects), error handling, or any behavioral nuances, leaving the agent with insufficient context to use the tool effectively beyond basic invocation.
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 single parameter 'source' documented as 'JavaScript source code'. The description adds no additional semantic context beyond this, such as examples of valid input or output format. 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 with a specific verb ('Extract') and target resources ('API endpoints, URLs, and paths'), and specifies the source material ('from JavaScript code'). However, it doesn't explicitly differentiate from sibling tools like js.extract_secrets or js.analyze, which might have overlapping domains in code analysis.
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, such as needing valid JavaScript code, or compare it to similar tools like js.extract_secrets for different extraction purposes or js.analyze for broader code analysis.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recon.amassC
Run amass for passive/active subdomain enumeration
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Target domain | |
| passive | No | Passive mode only |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It mentions passive/active modes but doesn't disclose execution characteristics (e.g., time requirements, resource usage, output format, or potential side effects). For a tool performing network enumeration, this leaves significant gaps in understanding its behavior.
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—a single sentence that directly states the tool's purpose without unnecessary words. Every element ('Run amass', 'passive/active', 'subdomain enumeration') contributes essential information.
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 network reconnaissance tool with no annotations and no output schema, the description is insufficient. It doesn't explain what results to expect, how enumeration differs between passive/active modes, or how this tool relates to other recon tools in the server. The agent would lack critical context for proper tool selection and invocation.
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 parameters are well-documented in the schema itself. The description adds no additional parameter context beyond what's already in the schema (domain target and passive mode). This meets the baseline expectation when schema coverage is complete.
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 action ('Run amass') and purpose ('for passive/active subdomain enumeration'), specifying the tool's function. However, it doesn't explicitly differentiate from sibling recon tools like 'recon.dns' or 'recon.subfinder', which likely have overlapping subdomain enumeration capabilities.
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 mentions 'passive/active' modes but provides no guidance on when to use this tool versus alternatives like 'recon.dns' or 'recon.subfinder'. There's no indication of prerequisites, constraints, or typical use cases beyond the basic functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recon.dnsB
Resolve DNS records for a domain or subdomain
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Domain to resolve | |
| recordType | No | DNS record type (A, AAAA, CNAME, MX, TXT) | A |
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 doesn't describe how it behaves: e.g., whether it performs recursive lookups, handles errors, returns multiple records, or has rate limits. This leaves significant gaps for a tool with potential operational implications.
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 directly states the tool's function without any wasted words. It's appropriately sized and front-loaded, making it easy to parse quickly.
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 (DNS resolution with 2 parameters) and no annotations or output schema, the description is minimally adequate. It covers the basic purpose but lacks behavioral details and usage context, leaving the agent to infer operational aspects from the schema alone.
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 thoroughly. The description adds no additional meaning beyond what's in the schema (e.g., it doesn't explain domain format constraints or recordType usage nuances), 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 verb 'resolve' and resource 'DNS records for a domain or subdomain', making the purpose specific and understandable. However, it doesn't explicitly differentiate from sibling tools like 'recon.amass' or 'recon.subfinder' which might also perform DNS-related reconnaissance, 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. There are multiple sibling tools (e.g., recon.amass, recon.subfinder) that might handle DNS resolution or broader reconnaissance, but the description lacks any context about use cases, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recon.fullC
Run full reconnaissance workflow: subfinder -> httpx -> amass
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Target domain |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the workflow sequence (subfinder -> httpx -> amass) but doesn't disclose behavioral traits like execution time, resource requirements, output format, error handling, or what 'full reconnaissance' actually produces. For a tool that likely performs network scanning, this is a substantial transparency 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 extremely concise - a single sentence that efficiently communicates the core functionality. It's front-loaded with the main purpose and wastes no words. Every element (workflow nature, tool sequence) earns its place.
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, no output schema, and a tool that performs a multi-step reconnaissance workflow, the description is incomplete. It doesn't explain what results to expect, how the tools interact, error conditions, or practical considerations for use. For a security reconnaissance tool, this leaves too many questions unanswered.
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 one parameter (domain) clearly documented. The description adds no parameter information beyond what the schema provides. With high schema coverage and only one parameter, the baseline of 3 is appropriate - the description doesn't compensate but doesn't need to given the schema's completeness.
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: 'Run full reconnaissance workflow' with specific tools listed (subfinder, httpx, amass). It distinguishes from siblings like recon.subfinder, recon.httpx, and recon.amass by indicating this is a composite workflow rather than individual tools. However, it doesn't specify what 'full reconnaissance' entails beyond tool names.
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?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention prerequisites, when this workflow is appropriate, or what distinguishes it from running the individual tools separately. With siblings like recon.subfinder, recon.httpx, and recon.amass available, this gap is significant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recon.httpxC
Run httpx to check which hosts are live and get status codes
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | Input file path or comma-separated URLs | |
| statusCode | No | Show status codes | |
| title | No | Extract page titles |
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 the tool runs httpx to check host liveness and get status codes, but lacks details on behavioral traits such as execution time, output format, error handling, or any side effects. This is a significant gap 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 directly states the tool's function without unnecessary words. It is appropriately sized and front-loaded, making it easy to understand quickly.
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 incomplete. It lacks information on behavioral traits, usage context, and output details, which are crucial for a tool that performs network reconnaissance. This leaves significant gaps in understanding how to effectively use the tool.
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 (input, statusCode, title). The description does not add any meaning beyond what the schema provides, such as explaining parameter interactions or usage examples. 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 tool's purpose with a specific verb ('run httpx') and resource ('hosts'), explaining it checks which hosts are live and gets status codes. It distinguishes from some siblings like recon.dns or recon.subfinder by focusing on host liveness and status codes, though it doesn't explicitly differentiate from all recon tools.
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?
No explicit guidance on when to use this tool versus alternatives is provided. The description mentions what the tool does but doesn't indicate scenarios for its use, prerequisites, or comparisons with sibling tools like recon.full or other security testing tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recon.subfinderC
Run subfinder to discover subdomains for a domain
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Target domain | |
| silent | No | Silent mode |
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 'run subfinder' which implies execution, but doesn't describe what happens during execution (e.g., network activity, time taken, output format), potential side effects, or any constraints like rate limits. This leaves significant gaps in understanding the tool's behavior.
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 directly states the tool's purpose without any unnecessary words. It's front-loaded and wastes no space, making it easy to parse quickly.
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 tool that runs an external command (subfinder) with no annotations and no output schema, the description is insufficient. It doesn't explain what the output looks like (e.g., list of subdomains, errors), how results are returned, or any dependencies. For a tool with potential behavioral nuances, more context is needed.
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, so the schema already documents both parameters ('domain' and 'silent'). The description doesn't add any meaning beyond this, such as explaining what 'silent mode' entails or providing examples. With high schema coverage, 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 action ('run subfinder') and the resource ('to discover subdomains for a domain'), making the purpose immediately understandable. It doesn't explicitly differentiate from sibling recon tools like 'recon.amass' or 'recon.dns', 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 like 'recon.amass' or 'recon.full', nor does it mention any prerequisites or context for usage. It simply states what the tool does without indicating appropriate scenarios or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render.execute_jsC
Execute JavaScript in the context of a webpage
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to load | |
| script | Yes | JavaScript code to execute |
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 states the basic behavior but lacks critical details: it doesn't specify if this requires network access, what permissions are needed, whether it's read-only or destructive, how errors are handled, or what the output looks like (e.g., return value or side effects). For a tool that executes arbitrary JavaScript, 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 a single, efficient sentence that directly states the tool's purpose without any fluff or redundancy. It's appropriately sized and front-loaded, making it easy to understand at a glance.
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 executing JavaScript in a webpage (which involves network requests, potential security implications, and dynamic behavior), the description is insufficient. No annotations or output schema exist to compensate, leaving gaps in understanding behavioral traits, error handling, and return values. It should provide more context about execution environment and results.
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 ('url' and 'script'). The description adds no additional meaning beyond the schema, such as format examples or constraints (e.g., URL must be accessible, script execution scope). With high schema coverage, the 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 action ('Execute JavaScript') and the context ('in the context of a webpage'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'js.analyze' or 'js.beautify', which may also involve JavaScript processing but in different contexts.
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?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a webpage loaded), exclusions, or comparisons to sibling tools like 'render.extract_dom' or 'render.screenshot', which might be used in similar web rendering contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render.extract_domC
Extract and return the DOM structure of a webpage
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to extract DOM from | |
| waitTime | No | Wait time in ms |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden but only states the basic action without disclosing behavioral traits. It doesn't mention potential side effects (e.g., network requests, rendering overhead), authentication needs, rate limits, or error handling, leaving significant gaps for a tool that interacts with external webpages.
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 directly states the tool's function without unnecessary words. It is front-loaded and wastes no space, making it easy to parse quickly.
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 extracting DOM from webpages, no annotations, and no output schema, the description is insufficient. It doesn't explain what the returned DOM structure includes (e.g., HTML format, depth), error scenarios, or dependencies, leaving the agent with incomplete context for 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 ('url' and 'waitTime') adequately. The description adds no additional meaning beyond what the schema provides, such as explaining the DOM extraction process or format, 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 action ('extract and return') and resource ('DOM structure of a webpage'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'render.extract_forms' or 'render.screenshot' that also operate on webpages, missing explicit distinction.
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?
No guidance is provided on when to use this tool versus alternatives such as 'render.extract_forms' for form extraction or 'render.screenshot' for visual capture. The description lacks context about use cases or prerequisites, offering no help in tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render.extract_formsB
Extract all forms from a webpage
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to extract forms from |
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 'Extract' implies a read operation, it doesn't specify whether this requires authentication, what happens with dynamic forms, rate limits, or what the output format looks like. For a tool with zero annotation coverage, this leaves significant behavioral questions unanswered.
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 states the core purpose without unnecessary words. It's appropriately sized for a simple tool and front-loads the essential information immediately.
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 tool with good schema coverage but no annotations or output schema, the description is minimally adequate. It states what the tool does but lacks important context about behavioral traits, usage scenarios, and output format that would be needed for optimal 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?
The schema has 100% description coverage, with the single parameter 'url' clearly documented in the schema. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline of 3 for high schema coverage without providing additional semantic 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 action ('Extract') and target resource ('all forms from a webpage'), providing a specific verb+resource combination. It doesn't explicitly differentiate from sibling tools like 'render.extract_dom' or 'render.execute_js', but the focus on forms is reasonably distinct within the render category.
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. There are multiple sibling tools that might be relevant for webpage analysis (e.g., render.extract_dom, render.screenshot, js.analyze), but no indication of when form extraction is specifically needed or what prerequisites exist.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
render.screenshotC
Take a screenshot of a webpage
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to screenshot | |
| fullPage | No | Capture full page | |
| waitTime | No | Wait time in ms before screenshot |
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. 'Take a screenshot' implies a read operation, but it doesn't specify whether this requires specific permissions, what format the screenshot returns, if there are rate limits, or potential side effects like triggering security mechanisms. The description is minimal and lacks important behavioral context.
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 - a single six-word phrase that communicates the core function without any wasted words. It's perfectly front-loaded with the essential information, though this brevity comes at the cost of completeness in other dimensions.
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 tool with no annotations and no output schema, the description is inadequate. It doesn't explain what the tool returns (image format, size, encoding), doesn't mention potential limitations or requirements, and provides no context about how this fits with sibling tools. The minimal description leaves significant gaps for the agent to navigate.
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 mentions no parameters, but schema description coverage is 100% - all three parameters (url, fullPage, waitTime) are fully documented in the schema with clear descriptions. The baseline score of 3 is appropriate since the schema does the heavy lifting, though 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 action ('Take a screenshot') and target resource ('of a webpage'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'render.extract_dom' or 'render.execute_js' that also interact with webpages, so it doesn't reach the highest clarity level.
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. There's no mention of when screenshotting is appropriate compared to other render tools or security testing tools that might analyze webpage content differently. The agent must 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.
security.test_auth_bypassC
Test for authentication bypass vulnerabilities
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Protected endpoint URL | |
| method | No | GET |
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. 'Test for authentication bypass vulnerabilities' implies this performs potentially intrusive security testing, but doesn't specify whether it's passive or active, what permissions are needed, what side effects it might have, or what the output looks like. For a security testing tool with zero annotation coverage, this is insufficient.
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 states the core purpose without unnecessary words. It's appropriately sized for what it communicates, though it could benefit from additional context.
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 testing tool with 2 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the tool actually does (how it tests), what results to expect, or provide enough context for safe and effective use. The agent would need to guess about the tool's behavior and output.
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 50% (only the 'url' parameter has a description). The tool description doesn't mention any parameters or provide additional context about what the 'method' parameter means in the context of authentication bypass testing. The description doesn't compensate for the 50% coverage gap, so it meets the baseline but doesn't add value.
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 'Test for authentication bypass vulnerabilities' states the general purpose (testing for a specific security vulnerability) but lacks specificity about what resource or system it acts upon. It doesn't distinguish from sibling tools like security.test_csp or security.test_xss beyond the vulnerability type.
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?
No guidance is provided about when to use this tool versus alternatives. The description doesn't mention prerequisites, target contexts, or when other security testing tools might be more appropriate. It simply states what the tool does without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security.test_cspC
Test Content Security Policy configuration
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Target URL |
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. 'Test' implies a read-only diagnostic operation, but the description doesn't specify whether this is passive scanning, active testing, what permissions are required, what the output format might be, or any rate limits. For a security testing tool, this leaves significant behavioral questions unanswered.
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 phrase that communicates the core purpose without any wasted words. It's appropriately sized for a tool with one simple parameter and gets straight to the point.
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 testing tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'testing' entails, what kind of results to expect, whether this modifies the target system, or how it integrates with other security tools in the sibling list. The description leaves too many contextual questions unanswered.
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 'url' parameter clearly documented as 'Target URL'. The description adds no additional parameter information beyond what's already in the schema. With complete schema coverage, the baseline score of 3 is appropriate.
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 'Test Content Security Policy configuration' clearly states the verb ('Test') and resource ('Content Security Policy configuration'), making the purpose immediately understandable. However, it doesn't distinguish this tool from sibling security testing tools like 'security.test_auth_bypass' or 'security.test_xss' beyond the CSP focus.
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. There's no mention of prerequisites, typical use cases, or how it differs from other security testing tools in the sibling list. The agent must 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.
security.test_csrfC
Test for CSRF vulnerabilities using advanced techniques
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Target URL | |
| method | No | POST | |
| params | No | Parameters to test | |
| testTechniques | No | Techniques to test (basic, content-type, method, token-bypass, referrer) |
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 mentions 'advanced techniques' but doesn't specify what these entail operationally (e.g., whether it performs actual attacks, requires authentication, has rate limits, or returns structured findings). The description lacks critical behavioral details needed for a security testing tool with potential destructive implications.
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 with no wasted words. It's appropriately front-loaded with the core purpose. However, it could be more structured by separating purpose from technique details, but this is minor given the brevity.
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 testing tool with 4 parameters, no annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like safety (could this trigger actual CSRF attacks?), output format, error handling, or integration with sibling tools (e.g., 'db.save_finding'). The context signals indicate significant complexity that the description doesn't adequately cover.
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 75% (3 of 4 parameters have descriptions), so the baseline is 3. The description adds no additional parameter semantics beyond what's in the schema—it doesn't explain how 'testTechniques' relate to 'advanced techniques', provide examples for 'params', or clarify URL format expectations. The description fails to compensate for the 25% coverage gap 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 'Test for CSRF vulnerabilities using advanced techniques' states the general purpose (testing CSRF vulnerabilities) but lacks specificity about what resources are targeted or what 'advanced techniques' entail. It distinguishes from some siblings like 'security.test_xss' by focusing on CSRF, but doesn't clearly differentiate from other security testing tools in terms of scope or methodology.
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?
No guidance is provided on when to use this tool versus alternatives like 'security.test_auth_bypass' or 'security.test_xss'. The description doesn't mention prerequisites, target contexts (e.g., authenticated endpoints), or comparison with sibling tools. Usage is implied only by the tool name and general security testing context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
security.test_idorC
Test for IDOR (Insecure Direct Object Reference) vulnerabilities
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Target URL with ID parameter | |
| idParam | No | ID parameter name | id |
| testIds | No | IDs to test (e.g., [1, 2, 3]) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral insight. It states what the tool does (tests for IDOR) but doesn't disclose how it behaves: whether it makes HTTP requests, what HTTP methods it uses, whether it requires authentication, what constitutes a positive finding, rate limits, or potential side effects. For a security testing tool with zero annotation coverage, this is inadequate.
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 with zero wasted words. It's appropriately sized for a tool with a clear, narrow purpose and doesn't bury key information. Every word earns its place by directly stating the tool's function.
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 this is a security testing tool with 3 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns (success/failure indicators, vulnerability details), what side effects it might have (e.g., generating traffic, triggering alerts), or operational constraints. For a tool that likely makes network requests and analyzes responses, more context is needed.
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 all parameters are documented in the schema. The description adds no parameter semantics beyond what's already in the schema (e.g., it doesn't explain what constitutes a valid 'url' format, how 'testIds' should be chosen, or what 'idParam' mapping means). Baseline 3 is appropriate when the schema does all the parameter documentation work.
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: 'Test for IDOR (Insecure Direct Object Reference) vulnerabilities' - a specific verb ('Test') with a specific security vulnerability type. It distinguishes from siblings like 'security.test_sqli' or 'security.test_xss' by focusing on IDOR. However, it doesn't specify what resource or target it tests (e.g., web applications, APIs), which prevents a perfect 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 (e.g., needing authenticated sessions, specific application states), nor does it differentiate from similar security testing tools like 'security.test_auth_bypass' or 'security.test_csrf'. The agent must infer usage context 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.
security.test_sqliC
Test for SQL injection vulnerabilities
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Target URL | |
| param | No | Parameter name to test | id |
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 tests for SQL injection vulnerabilities but doesn't describe how it behaves—e.g., whether it performs automated scans, sends payloads, requires authentication, has rate limits, or what output to expect. This leaves critical behavioral traits unspecified for a security testing 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 a single, efficient sentence with zero wasted words. It's front-loaded with the core purpose, making it easy to scan and understand quickly. Every word earns its place by directly stating the tool's function.
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 testing (which involves mutation and potential side effects), no annotations, and no output schema, the description is incomplete. It lacks details on behavior, safety considerations (e.g., whether testing is passive or active), and expected results, making it inadequate for informed tool selection in a security context.
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 clear documentation for both parameters ('url' and 'param'). The description adds no additional meaning beyond what the schema provides, such as explaining parameter interactions or testing methodologies. 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 'Test for SQL injection vulnerabilities' clearly states the tool's purpose with a specific verb ('Test') and target ('SQL injection vulnerabilities'), which is better than a tautology. However, it doesn't distinguish this tool from sibling security testing tools like security.test_auth_bypass or security.test_xss, leaving the scope vague regarding what exactly gets tested (e.g., automated scanning vs manual probing).
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 a target URL), exclusions (e.g., not for non-web targets), or comparisons to sibling tools like security.test_xss for different vulnerability types. Without such context, users must 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.
security.test_xssC
Test for XSS vulnerabilities (non-destructive payloads)
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Target URL | |
| params | No | Parameters to test (key-value pairs) | |
| method | No | HTTP method | GET |
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 mentions 'non-destructive payloads,' which hints at safety but doesn't fully describe behavioral traits like whether it requires authentication, what the output format is, if it has rate limits, or how it handles errors. This leaves significant gaps for an agent to understand how to invoke it effectively.
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: 'Test for XSS vulnerabilities (non-destructive payloads).' It's front-loaded with the core purpose and includes a useful qualifier without unnecessary details. Every word earns its place, making it easy for an agent to parse quickly.
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 security testing tool with no annotations and no output schema, the description is incomplete. It lacks details on what the tool returns, how to interpret results, prerequisites, or error handling. While it states the purpose, it doesn't provide enough context for an agent to use it confidently in a security testing workflow.
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 (url, params, method) with descriptions and enums. The description adds no additional parameter semantics beyond what's in the schema, such as explaining the format of 'params' or typical usage patterns. 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: 'Test for XSS vulnerabilities' with the qualifier 'non-destructive payloads.' It specifies both the action (test) and the resource (XSS vulnerabilities), distinguishing it from other security testing tools like security.test_sqli or security.test_csrf. However, it doesn't explicitly differentiate from security.test_auth_bypass or security.test_idor beyond the vulnerability type.
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 minimal guidance: it implies usage for XSS testing with non-destructive payloads, but offers no explicit when-to-use rules, alternatives, or exclusions. For example, it doesn't clarify if this is for initial reconnaissance vs. deep testing, or when to use this versus other XSS-related tools that might exist in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
training.extract_from_writeupC
Extract training patterns from bug bounty writeup text
| Name | Required | Description | Default |
|---|---|---|---|
| writeupText | Yes | Bug bounty writeup text | |
| vulnerabilityType | Yes | Type of vulnerability | |
| source | No | Source of writeup | custom |
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 action ('Extract') but lacks details on what 'training patterns' entail, how extraction is performed, potential limitations, or output format. This leaves significant gaps in understanding the tool's behavior beyond the basic operation.
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 with no wasted words. It's front-loaded with the core action and resource, making it easy to grasp quickly 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 complexity of extracting patterns from text, no annotations, and no output schema, the description is incomplete. It doesn't explain what 'training patterns' are, how they're formatted, or any behavioral traits, leaving the agent with insufficient context for 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 all parameters. The description doesn't add any meaning beyond the schema, such as explaining the relationship between parameters or providing 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 action ('Extract training patterns') and the resource ('from bug bounty writeup text'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'training.match' or 'training.get_csrf_patterns', which might have overlapping or related 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, or exclusions, such as whether it's for initial analysis or post-processing, or how it differs from other training tools like 'training.import' or 'training.match'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
training.getC
Retrieve training data for learning patterns
| Name | Required | Description | Default |
|---|---|---|---|
| vulnerabilityType | No | Filter by vulnerability type | |
| source | No | Filter by source (htb, portswigger) | |
| limit | No | Maximum number of results |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'Retrieve' but doesn't disclose behavioral traits such as whether this is a read-only operation, if it requires authentication, rate limits, pagination, or what the return format looks like. The description is minimal and lacks critical operational context.
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 with no wasted words. It's front-loaded with the core purpose, though it could be more informative given the tool's complexity. It earns a 4 for being concise but loses a point for under-specification.
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 incomplete for a tool with 3 parameters and multiple siblings. It doesn't explain what 'training data' includes, how results are returned, or behavioral aspects like safety or performance. For a retrieval tool in a security context, this leaves significant gaps.
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 (vulnerabilityType, source, limit) with descriptions. The description adds no additional meaning beyond the schema, such as explaining relationships between parameters or usage examples. Baseline 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 'Retrieve training data for learning patterns' states a clear verb ('Retrieve') and resource ('training data'), but it's vague about what 'training data' specifically entails and doesn't differentiate from sibling tools like 'training.get_csrf_patterns' or 'training.extract_from_writeup'. It provides a basic purpose but lacks specificity.
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 offers no guidance on when to use this tool versus alternatives. With sibling tools like 'training.get_csrf_patterns' (specific to CSRF) and 'training.extract_from_writeup' (extraction-focused), there's no indication of context, prerequisites, or exclusions for this general retrieval tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
training.get_csrf_patternsC
Get all CSRF exploitation patterns from training data
| Name | Required | Description | Default |
|---|---|---|---|
| technique | No | Specific CSRF technique | all |
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 retrieving data but lacks details on permissions, rate limits, data format, or potential side effects. This is inadequate for a tool that accesses training data, leaving the agent uncertain about its behavior.
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 with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly.
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 incomplete. It doesn't explain what 'patterns' entail, their format, or how they're returned. For a tool with one parameter but complex data retrieval, more context is needed to guide the agent 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 fully documents the 'technique' parameter with enum values and default. The description adds no additional meaning beyond implying retrieval of patterns, which is already covered by the tool's purpose. Baseline 3 is appropriate as 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 action ('Get') and resource ('all CSRF exploitation patterns from training data'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'training.get' or 'training.extract_from_writeup', which also retrieve training data, so it's not fully specific.
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?
No guidance is provided on when to use this tool versus alternatives. Sibling tools like 'security.test_csrf' or 'training.match' might overlap in context, but the description offers no explicit when/when-not instructions or prerequisites for usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
training.importC
Import training data from HTB or PortSwigger labs
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Source of training data | |
| sourceId | No | ID from source (e.g., lab name) | |
| vulnerabilityType | Yes | Type of vulnerability (XSS, SQLi, IDOR, etc.) | |
| targetPattern | Yes | Pattern to match target URLs | |
| payloadPattern | Yes | Pattern for successful payloads | |
| successPattern | No | Pattern indicating success in response | |
| failurePattern | No | Pattern indicating failure in response | |
| contextData | No | Additional context data | |
| score | No | Score for this training example (0-10) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It states the action ('Import') but doesn't describe what 'import' entails—e.g., whether it creates new records, overwrites existing data, requires authentication, has side effects like database writes, or handles errors. This is inadequate for a tool with 9 parameters and potential data mutation.
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 directly states the tool's purpose without unnecessary words. It's front-loaded and wastes no space, making it easy to parse quickly.
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 (9 parameters, no annotations, no output schema), the description is insufficient. It lacks details on behavior, output format, error handling, or integration with sibling tools, leaving significant gaps for an agent to use this tool effectively in a security training context.
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%, providing clear documentation for all parameters. The description adds no additional parameter semantics beyond implying 'source' values ('HTB or PortSwigger labs'), which partially overlaps with the schema's enum. This meets the baseline for high schema coverage but doesn't enhance understanding.
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 action ('Import') and resource ('training data'), specifying the sources ('HTB or PortSwigger labs'). It distinguishes from siblings like 'training.import_htb' and 'training.import_portswigger' by being more general, but doesn't explicitly differentiate from 'training.import_all' or 'training.extract_from_writeup', leaving some 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?
No guidance is provided on when to use this tool versus alternatives. It doesn't mention prerequisites, compare to sibling tools like 'training.import_all' or 'training.extract_from_writeup', or specify scenarios for use, leaving the agent to infer context 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.
training.import_allC
Import all pre-loaded training data from Intigriti, PortSwigger, and other sources
| Name | Required | Description | Default |
|---|---|---|---|
| sources | No | Sources to import (csrf, xss, sqli, registration, dorking, all) |
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 states 'Import all pre-loaded training data' but doesn't disclose behavioral traits such as whether this is a read-only or destructive operation, what permissions are required, if it overwrites existing data, or how long it takes. For a tool with potential data mutation implications, 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 a single, efficient sentence that directly states the tool's function without unnecessary words. It is appropriately sized and front-loaded, making it easy to understand at a glance.
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, no output schema, and a single parameter with full schema coverage, the description is incomplete. It doesn't explain what 'import' entails (e.g., data storage, format, success indicators) or behavioral aspects, which is inadequate for a tool that likely involves data processing or mutation.
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 'sources' parameter documented as an array of strings with default values and examples. The description adds no additional parameter semantics beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without adding value.
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 'Import' and the resource 'all pre-loaded training data from Intigriti, PortSwigger, and other sources', making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'training.import' or 'training.import_portswigger', which appear to be more specific import operations.
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 'training.import' or 'training.import_portswigger'. It mentions 'all pre-loaded training data' but doesn't clarify if this is for bulk initialization, one-time setup, or other contexts, leaving usage ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
training.import_htbB
Import training data from HackTheBox challenge
| Name | Required | Description | Default |
|---|---|---|---|
| challengeName | Yes | Name of the HTB challenge | |
| challengeUrl | No | URL of the challenge | |
| vulnerabilityType | Yes | Type of vulnerability | |
| exploit | Yes | Exploit data with payloads and steps |
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 the action ('Import') but doesn't describe what happens during import (e.g., data transformation, validation, storage location), whether it's idempotent, what permissions are required, or what happens on failure. 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 a single, efficient sentence with zero wasted words. It's appropriately sized for a tool with good schema documentation and gets straight to the point 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?
For a mutation tool with no annotations and no output schema, the description is minimally adequate but has clear gaps. It states what the tool does but doesn't cover behavioral aspects, error conditions, or what happens after import. The 100% schema coverage helps, but more context about the import operation would be beneficial.
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 4 parameters thoroughly. The description doesn't add any parameter-specific details beyond what's in the schema (like explaining relationships between parameters or providing 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 action ('Import training data') and source ('from HackTheBox challenge'), which is specific and unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'training.import', 'training.import_all', or 'training.import_portswigger', which appear to perform similar import functions from different sources.
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 'training.import' or 'training.import_portswigger'. It doesn't mention prerequisites, constraints, or typical scenarios for importing HTB data versus other training sources.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
training.import_portswiggerC
Import training data from PortSwigger Academy lab solution
| Name | Required | Description | Default |
|---|---|---|---|
| labName | Yes | Name of the PortSwigger lab | |
| labUrl | No | URL of the lab | |
| vulnerabilityType | Yes | Type of vulnerability | |
| solution | Yes | Solution data with payloads and steps |
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 'Import' implies a write operation, the description doesn't specify whether this creates new records, updates existing ones, requires authentication, has side effects, or what happens on success/failure. For a tool with complex parameters and no 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 a single, clear sentence that efficiently communicates the core purpose without unnecessary words. It's front-loaded with the essential information and contains zero waste, making it easy to parse quickly.
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 (4 parameters including a nested object, no annotations, no output schema), the description is incomplete. It doesn't explain what the tool returns, how errors are handled, or the implications of the import operation. For a tool that likely modifies data, more context about behavior and outcomes is needed.
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 four parameters with descriptions. The description doesn't add any additional meaning about parameters beyond what's in the schema, such as format examples or constraints. With high schema coverage, the baseline score of 3 is appropriate as the schema handles 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 action ('Import') and resource ('training data from PortSwigger Academy lab solution'), making the purpose immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'training.import', 'training.import_htb', or 'training.import_all', which all appear to handle different import sources or methods.
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 it's appropriate compared to other import tools (e.g., 'training.import' or 'training.import_htb'), or any specific conditions for its use. This leaves the agent without context for tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
training.matchC
Match current test against learned patterns
| Name | Required | Description | Default |
|---|---|---|---|
| vulnerabilityType | Yes | Type of vulnerability to match | |
| target | Yes | Target URL | |
| payload | Yes | Payload used | |
| response | Yes | Response received |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'match' but doesn't disclose behavioral traits such as whether this is read-only or mutative, what 'learned patterns' refers to (e.g., from training imports), expected output format, or error handling. The description is minimal and lacks critical operational context for a tool with 4 required parameters.
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 with no wasted words. It's front-loaded with the core action ('Match'), though it could be more structured by explicitly linking parameters to the purpose. The brevity is appropriate but borders on under-specification given the tool's complexity.
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, no output schema, and 4 required parameters, the description is incomplete. It doesn't explain what 'matching' entails (e.g., returns boolean, score, or details), how patterns are learned, or the tool's role in the training workflow. For a parameter-rich tool in a security testing context, more context is needed to guide 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 all 4 parameters (vulnerabilityType, target, payload, response) with basic descriptions. The description adds no additional meaning beyond implying these parameters relate to a 'current test' and 'learned patterns', but it doesn't explain their interrelationships or usage nuances. Baseline 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 'Match current test against learned patterns' states a general purpose (matching tests to patterns) but is vague about what constitutes 'current test' or 'learned patterns'. It doesn't specify the resource being matched (e.g., vulnerability data) or distinguish from siblings like training.extract_from_writeup or training.get_csrf_patterns. The verb 'match' is clear but lacks specificity.
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?
No explicit guidance on when to use this tool versus alternatives is provided. The description implies usage for testing against patterns, but it doesn't mention prerequisites, context (e.g., after training import), or exclusions. Sibling tools like training.get or security.test_xss suggest overlapping domains without differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
training.statsB
Get statistics about test results and training data
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states it 'gets statistics', implying a read-only operation without details on permissions, rate limits, output format, or behavioral traits like whether it aggregates data or returns raw results. This is inadequate for a tool 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 a single, efficient sentence with zero waste—it directly states the tool's purpose without redundancy or fluff. It's appropriately sized and front-loaded, making it easy to parse quickly.
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 tool with no annotations, no output schema, and no parameters, the description is incomplete—it lacks details on what statistics are returned, how data is structured, or any behavioral context. Given the complexity implied by 'statistics' and the absence of structured data, more information is needed for adequate 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?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, which is appropriate here, but it also doesn't compensate for any gaps since there are none—earning a baseline score for tools with no parameters.
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 action ('Get statistics') and the resource ('about test results and training data'), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools like 'db.get_statistics' or 'training.get', leaving some ambiguity about scope or focus.
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?
No guidance is provided on when to use this tool versus alternatives like 'db.get_statistics' or 'training.get'. The description implies usage for statistical analysis but offers no context on prerequisites, exclusions, or comparative scenarios with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zap.create_contextC
Create a scanning context in ZAP
| Name | Required | Description | Default |
|---|---|---|---|
| contextName | Yes | Name for the context |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. 'Create' implies a write operation, but the description doesn't disclose what happens after creation (e.g., whether the context becomes active, if it's persistent, what permissions are needed, or potential side effects). This leaves significant behavioral gaps for a 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 a single, efficient sentence that states the core functionality without unnecessary words. It's appropriately sized for a simple creation tool and front-loads the essential information.
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 mutation tool with no annotations and no output schema, the description is insufficient. It doesn't explain what a 'scanning context' entails, what happens after creation, or what the tool returns. Given the complexity implied by the ZAP security testing domain, more context is needed for 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%, with the single parameter 'contextName' clearly documented in the schema. The description adds no additional parameter information beyond what's already in the structured schema, which meets the baseline expectation when schema coverage is complete.
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 action ('Create') and the resource ('a scanning context in ZAP'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'zap.include_in_context' or 'zap.start_active_scan', which might also involve context operations.
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. With multiple ZAP-related tools in the sibling list (like zap.start_active_scan, zap.include_in_context), there's no indication of prerequisites, sequencing, or when this specific creation tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zap.get_active_scan_statusC
Get the status of an active scan
| Name | Required | Description | Default |
|---|---|---|---|
| scanId | Yes | Active scan ID |
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 retrieves status, implying a read-only operation, but does not specify if it requires authentication, rate limits, error conditions, or what the status output includes (e.g., progress, results). This is a significant gap 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, direct sentence: 'Get the status of an active scan'. It is front-loaded with the core action and resource, with zero wasted words. This makes it highly concise and well-structured for its purpose.
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 (status retrieval with no output schema) and lack of annotations, the description is incomplete. It does not explain what 'status' returns (e.g., progress percentage, alerts), how to interpret results, or dependencies on other tools like 'zap.start_active_scan'. This leaves critical context gaps for effective 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?
The input schema has 100% description coverage, with 'scanId' documented as 'Active scan ID'. The description does not add any meaning beyond this, such as format examples or source context (e.g., from 'zap.start_active_scan'). With high schema coverage, the baseline score of 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 states the tool's purpose as 'Get the status of an active scan', which is clear but vague. It specifies the verb ('Get') and resource ('status of an active scan'), but does not distinguish it from sibling tools like 'zap.get_spider_status' or explain what 'status' entails. This makes it minimally adequate but lacking specificity.
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 does not mention prerequisites (e.g., needing an active scan ID from 'zap.start_active_scan'), exclusions, or comparisons to siblings like 'zap.get_spider_status'. This leaves usage context entirely implied, resulting in a low score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zap.get_alertsB
Get all security alerts from ZAP
| Name | Required | Description | Default |
|---|---|---|---|
| baseURL | No | Filter alerts by base URL (optional) | |
| start | No | Start index for pagination (optional) | |
| count | No | Number of alerts to return (optional) | |
| riskId | No | Filter by risk level: 0=Informational, 1=Low, 2=Medium, 3=High, 4=Critical (optional) |
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 'Get all security alerts' but doesn't clarify if this is a read-only operation, whether it requires authentication, what the response format is, or any rate limits. The description is minimal and leaves key behavioral traits unspecified.
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 with zero waste. It is front-loaded with the core purpose ('Get all security alerts from ZAP'), making it easy to scan and understand quickly 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 (4 parameters, no output schema, no annotations), the description is incomplete. It lacks details on behavioral traits, usage context, and output format, which are critical for a security tool. However, the schema provides good parameter coverage, preventing a lower score.
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 four parameters with clear descriptions, including optional filters and pagination. The description adds no additional meaning beyond the schema, such as default values or usage examples, but the schema provides adequate baseline information.
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 ('all security alerts from ZAP'), making the purpose immediately understandable. It distinguishes from siblings like 'zap.get_alerts_summary' by specifying 'all' alerts rather than a summary, though it doesn't explicitly contrast with other alert-related tools.
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 'zap.get_alerts_summary' or other security testing tools. It lacks context about prerequisites, such as whether ZAP must be running or configured first, or any exclusions for when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zap.get_alerts_summaryC
Get summary of alerts by risk level
| Name | Required | Description | Default |
|---|---|---|---|
| baseURL | No | Filter by base URL (optional) |
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 'Get summary' implying a read-only operation, but doesn't cover aspects like authentication needs, rate limits, error handling, or what the summary format includes (e.g., counts, risk breakdown). This leaves significant gaps for a tool in a security context.
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, clear sentence with no wasted words, making it easy to parse and front-loaded. It efficiently conveys the core purpose without unnecessary elaboration, earning a high score for conciseness.
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 security tool with no annotations and no output schema, the description is incomplete. It lacks details on what the summary includes, how risk levels are defined, or any behavioral traits, making it inadequate for an AI agent to fully understand the tool's operation in context.
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 for its single parameter 'baseURL', which is documented as 'Filter by base URL (optional)'. The description doesn't add any extra meaning beyond this, such as examples or constraints, but the schema is sufficient, so a baseline score of 3 is appropriate.
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 the resource 'summary of alerts by risk level', making the purpose understandable. However, it doesn't differentiate from sibling tools like 'zap.get_alerts' (which might return detailed alerts vs. a summary), leaving room for improvement in specificity.
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 'zap.get_alerts' for detailed alerts or other security tools. There's no mention of prerequisites, context, or exclusions, which limits its utility for an AI agent in selecting the right tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zap.get_sitesB
Get list of discovered sites from ZAP
| 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 of behavioral disclosure. It states the action ('Get list') but doesn't describe what 'discovered sites' means, whether this is a read-only operation, if it requires authentication, or how results are formatted. For a 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 a single, efficient sentence with no wasted words. It's front-loaded with the core action and resource, making it easy to parse quickly. Every word earns its place by conveying essential information.
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 has 0 parameters, no output schema, and no annotations, the description is minimally adequate but incomplete. It states what the tool does but lacks details on behavior, output format, or differentiation from siblings. For a simple retrieval tool, it's passable but leaves gaps an agent would need to infer.
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, and the input schema has 100% description coverage (though empty). The description doesn't need to explain parameters, so it meets the baseline expectation. No additional parameter information is required or provided.
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 ('list of discovered sites from ZAP'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'zap.get_urls' or 'zap.get_alerts', which also retrieve data from ZAP, leaving some ambiguity about what specifically distinguishes this tool.
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. With siblings like 'zap.get_urls' and 'zap.get_alerts' that also retrieve ZAP data, there's no indication of context, prerequisites, or exclusions, leaving the agent to guess based on tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zap.get_spider_statusC
Get the status of a spider scan
| Name | Required | Description | Default |
|---|---|---|---|
| scanId | Yes | Spider scan ID |
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 but only states the basic action. It doesn't cover what the status includes (e.g., progress percentage, completion state, errors), whether it's a read-only operation, potential side effects, or error handling. This is a significant gap for a tool with no annotation support.
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 without any wasted words. It's appropriately sized for a simple tool with one parameter and no complex behavioral nuances to explain.
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 lack of annotations and output schema, the description is incomplete. It doesn't explain what the status response includes (e.g., JSON structure, key fields like 'progress' or 'state'), nor does it address error cases or dependencies on other tools like 'zap.start_spider'. For a status-checking tool in a security testing context, this leaves critical gaps.
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 the single parameter 'scanId' clearly documented in the schema as 'Spider scan ID'. The description adds no additional parameter semantics beyond what the schema provides, such as format examples or where to obtain the scan ID. This 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 tool's purpose with a specific verb ('Get') and resource ('status of a spider scan'), making it immediately understandable. However, it doesn't differentiate from sibling tools like 'zap.get_active_scan_status' or 'zap.start_spider', which would require more specific context about what distinguishes a spider scan from other scan types.
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 a scan ID from 'zap.start_spider'), nor does it clarify the relationship with other status-checking tools like 'zap.get_active_scan_status'. This leaves the agent to infer usage context 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.
zap.get_urlsB
Get list of discovered URLs from ZAP
| Name | Required | Description | Default |
|---|---|---|---|
| baseURL | No | Filter by base URL (optional) |
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 'discovered URLs' but doesn't specify if this is a read-only operation, requires prior scans, includes pagination, rate limits, or authentication needs. This leaves significant gaps in understanding how the tool behaves in practice.
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, clear sentence with no wasted words, making it easy to parse and front-loaded with the core purpose. It efficiently communicates the essential information 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 low complexity (1 optional parameter, no output schema, no annotations), the description is minimally adequate. However, it lacks details on behavior, output format, and differentiation from siblings, which could hinder an agent's ability to use it correctly in a security testing context.
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 optional 'baseURL' parameter. The description doesn't add any additional meaning beyond what's in the schema, such as examples or context for filtering. This meets the baseline for high schema coverage but doesn't enhance parameter understanding.
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 action ('Get list') and resource ('discovered URLs from ZAP'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'zap.get_sites' or 'zap.get_alerts', which might also retrieve URL-related data, leaving some ambiguity about what specifically distinguishes this tool.
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?
No guidance is provided on when to use this tool versus alternatives. For example, it doesn't specify if this is for post-scan results, real-time monitoring, or how it differs from 'zap.get_sites' or 'zap.get_alerts', leaving the agent to infer usage context without explicit direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zap.health_checkB
Check if ZAP is running and accessible
| 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 of behavioral disclosure. It mentions checking if ZAP is 'running and accessible,' which implies a read-only, non-destructive operation, but does not specify behavioral traits such as error handling (e.g., timeouts, connection failures), output format, or any side effects (e.g., logging, triggering alerts). For a 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 a single, clear sentence with no wasted words. It is front-loaded with the core purpose ('Check if ZAP is running and accessible'), making it easy for an agent to parse quickly. Every part of the sentence earns its place by specifying the action and target.
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 (0 parameters, no annotations, no output schema), the description is minimally adequate. It covers the basic purpose but lacks details on behavioral aspects (e.g., what 'accessible' means, expected output) that would help an agent invoke it correctly. Without annotations or an output schema, the description should do more to compensate, but it only meets the bare minimum for such a simple tool.
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, and the input schema has 100% description coverage (though empty). The description does not need to add parameter semantics, as there are none to document. A baseline score of 4 is appropriate since no parameters exist, and the description does not incorrectly imply any.
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 a specific verb ('Check') and resource ('ZAP'), indicating it verifies the running status and accessibility of the ZAP tool. It distinguishes from siblings like 'zap.get_active_scan_status' or 'zap.get_sites' by focusing on operational health rather than data retrieval or actions. However, it could be more precise about what 'accessible' entails (e.g., network reachability, API responsiveness).
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 does not mention prerequisites (e.g., before performing scans), exclusions (e.g., if ZAP is already confirmed running), or related tools (e.g., 'zap.get_active_scan_status' for monitoring ongoing tasks). This leaves the agent to infer usage context based on 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.
zap.include_in_contextC
Include a URL pattern in a context
| Name | Required | Description | Default |
|---|---|---|---|
| contextName | Yes | Context name | |
| regex | Yes | URL regex pattern to include |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions 'include' but doesn't disclose behavioral traits such as whether this is a read or write operation, what permissions are needed, if it's idempotent, or how errors are handled. This is inadequate for a tool with potential mutation effects.
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, clear sentence with zero waste. It's appropriately sized and front-loaded, efficiently stating the tool's 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 lack of annotations and output schema, the description is incomplete. It doesn't explain what 'context' means in this system, the impact of inclusion, or return values. For a tool that likely modifies system state, this leaves significant gaps in 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%, so the schema already documents both parameters ('contextName' and 'regex'). The description adds no meaning beyond what the schema provides, such as explaining what constitutes a valid context name or regex pattern. Baseline 3 is appropriate when 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 states the action ('include') and resource ('URL pattern in a context'), which clarifies the basic purpose. However, it's vague about what 'context' means in this system and doesn't distinguish this tool from sibling tools like 'zap.create_context' or explain how inclusion relates to other ZAP operations.
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., whether a context must exist first), exclusions, or relationships to sibling tools like 'zap.create_context' or 'zap.get_urls', leaving the agent with no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zap.proxy_processC
Process a request through the MCP proxy layer (enhances with AI intelligence)
| Name | Required | Description | Default |
|---|---|---|---|
| method | Yes | HTTP method | |
| url | Yes | Target URL | |
| headers | No | HTTP headers (optional) | |
| body | No | Request body (optional) |
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 mentions 'enhances with AI intelligence' but doesn't explain what this means in practice—e.g., whether it modifies requests/responses, adds headers, handles errors, or has rate limits. For a tool with no annotations and potential side effects, 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 a single, efficient sentence that states the core purpose. However, the phrase 'enhances with AI intelligence' is vague and could be more specific to earn its place, slightly reducing clarity. Overall, it's front-loaded and avoids unnecessary verbosity.
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, no output schema, and a vague description, the tool's behavior is inadequately explained. The description hints at AI enhancement but doesn't detail what this means for inputs, outputs, or side effects. For a tool with 4 parameters and potential complexity, this leaves significant gaps in understanding how 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 input schema already documents all parameters (method, url, headers, body) with basic descriptions. The description doesn't add any meaning beyond this, such as explaining how 'AI intelligence' affects parameter usage or providing 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 states the tool 'Process a request through the MCP proxy layer' which provides a verb ('process') and resource ('request'), but it's vague about what 'enhances with AI intelligence' means operationally. It doesn't distinguish from sibling tools like 'zap.send_request' which might handle similar HTTP operations, leaving ambiguity about when to use one versus the other.
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?
No guidance is provided on when to use this tool versus alternatives. The description mentions 'enhances with AI intelligence' but doesn't clarify what this enhancement entails or when it's beneficial compared to other HTTP request tools in the sibling list, such as 'zap.send_request'. There's no explicit context or exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zap.send_requestC
Send a custom HTTP request through ZAP proxy
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Target URL | |
| method | No | HTTP method (GET, POST, PUT, DELETE, etc.) | GET |
| headers | No | HTTP headers (optional) | |
| body | No | Request body (optional) |
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 mentions the tool sends requests 'through ZAP proxy' which implies potential interception or logging, but doesn't specify whether this requires ZAP to be running, what authentication or permissions are needed, if there are rate limits, or what the response format looks like. 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 a single, efficient sentence that states the core purpose without unnecessary words. It's appropriately sized and front-loaded with the essential information.
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 tool that sends HTTP requests through a security proxy with 4 parameters and no annotations or output schema, the description is insufficient. It doesn't explain what 'through ZAP proxy' means operationally, what the tool returns, or any prerequisites for using ZAP functionality, leaving the agent with significant uncertainty.
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 doesn't add any meaningful parameter semantics beyond what's in the schema descriptions, maintaining the baseline score 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 action ('send a custom HTTP request') and the resource ('through ZAP proxy'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from potential alternatives like direct HTTP libraries or other proxy tools, which prevents a perfect 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 scenarios where ZAP proxy's interception, logging, or security testing features are beneficial compared to direct HTTP requests or other tools in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zap.start_active_scanC
Start an active vulnerability scan on a target URL
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Target URL to scan | |
| recurse | No | Whether to recurse into subdirectories (optional) | |
| inScopeOnly | No | Only scan URLs in scope (optional) | |
| scanPolicyName | No | Scan policy name to use (optional) | |
| method | No | HTTP method (optional) | |
| postData | No | POST data (optional) |
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 'Start an active vulnerability scan' implies a potentially resource-intensive, intrusive operation, it doesn't specify important behavioral traits like whether this requires authentication, what permissions are needed, whether it's destructive to the target, typical runtime, rate limits, or what happens after initiation. The description is too minimal for a tool that performs active security scanning.
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, clear sentence that efficiently communicates the core purpose. There's no wasted language or unnecessary elaboration. It's appropriately sized for what it communicates, though what it communicates is limited in scope.
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 tool that initiates active vulnerability scanning with 6 parameters and no output schema, the description is insufficient. It doesn't explain what the tool returns, what happens after scanning starts, how to monitor progress (though 'zap.get_active_scan_status' exists as a sibling), or important behavioral considerations. With no annotations and no output schema, the description should provide more context about this significant operation.
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%, so all parameters are documented in the input schema. The description doesn't add any parameter-specific information beyond what's already in the schema descriptions. It mentions 'target URL' which aligns with the required 'url' parameter, but provides no additional context about parameter usage, relationships, or best practices.
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 action ('Start an active vulnerability scan') and the target ('on a target URL'), making the purpose immediately understandable. However, it doesn't differentiate this tool from its sibling 'zap.start_spider' which also initiates scanning activities, so it doesn't achieve the highest score for sibling distinction.
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 'zap.start_spider' or other security testing tools. There's no mention of prerequisites, typical use cases, or when this type of active scanning is appropriate versus other approaches.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
zap.start_spiderB
Start a spider (crawler) scan on a target URL
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Target URL to spider | |
| maxChildren | No | Maximum number of children to crawl (optional) | |
| recurse | No | Whether to recurse into subdirectories (optional) | |
| contextName | No | Context name to use (optional) |
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 mentions starting a scan but doesn't describe what the spider does (e.g., crawling web pages, discovering links), potential side effects (e.g., generating traffic, consuming resources), authentication needs, rate limits, or what happens after starting (e.g., asynchronous operation, how to check status). The description is minimal and lacks crucial operational context.
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 gets straight to the point with zero wasted words. It's appropriately sized for a tool with a clear primary function and doesn't bury key information. The structure is front-loaded with the core action and target.
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 tool that initiates a potentially resource-intensive scanning operation with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., scan ID, status), how to monitor progress, error conditions, or behavioral implications. The context signals indicate complexity (4 parameters, no output schema) that warrants more comprehensive description than 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 all parameters are documented in the schema. The description adds no additional parameter semantics beyond implying the 'url' parameter is required. It doesn't explain relationships between parameters (e.g., how 'maxChildren' and 'recurse' interact) or provide 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 specific action ('Start a spider (crawler) scan') and the target resource ('on a target URL'), using precise technical terminology. It distinguishes this tool from other spider-related tools like 'zap.get_spider_status' by focusing on initiating the scan rather than checking its status.
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 related tools like 'zap.start_active_scan' for different scanning approaches, nor does it specify prerequisites (e.g., whether the target must be accessible or if ZAP must be running). Usage context is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The tools are well-organized into clear functional categories (db, js, recon, render, security, training, zap), which helps disambiguation significantly. However, within categories like 'training' there are multiple import tools (import, import_all, import_htb, import_portswigger) that could cause confusion about which to use for specific scenarios. The overall structure prevents major misselection issues.
Excellent naming consistency throughout. All tools follow a consistent 'category.action' pattern (e.g., 'db.get_findings', 'js.analyze', 'security.test_xss'). The verb_noun structure is maintained within each category, and there's no mixing of naming conventions. This predictability makes the tool set easy to navigate.
With 47 tools, this server feels overloaded for a single MCP server. While the domain (vulnerability assessment) is broad, the tool count creates cognitive overhead and suggests the server might be trying to do too much. A more focused approach with 15-25 tools would likely be more appropriate for agent usability.
The tool surface provides comprehensive coverage of the vulnerability assessment domain. It includes database operations, JavaScript analysis, reconnaissance, rendering, security testing, training data management, and ZAP integration. The tools support complete workflows from reconnaissance through testing to result analysis, with no obvious gaps in the core functionality.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI pentesting: run scans, triage vulnerabilities, review PRs, manage schedules and assets.
Hunt zero-days by talking to binaries. 40+ tools. Hosted, OAuth + SSO, invite: hi@byteray.ai
AI-powered threat intelligence, smart contract auditing, and cybersecurity OSINT.
Offline methodology engine for authorized penetration testing, CTF, and security research.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceAI-powered cybersecurity automation platform with 150+ security tools and 12+ autonomous AI agents for penetration testing, vulnerability assessment, and bug bounty hunting. Enables comprehensive security testing through intelligent tool selection and automated workflows.2
- AlicenseCqualityDmaintenanceEnables AI agents to generate and manage specialized bug bounty hunting workflows including reconnaissance, vulnerability testing, OSINT gathering, and file upload testing. Provides REST API endpoints for comprehensive security assessments with intelligence-driven vulnerability prioritization.402MIT
- AlicenseNot gradedqualityDmaintenanceEnables comprehensive security testing and penetration testing through natural language conversations with 92+ tools for reconnaissance, vulnerability assessment, web application testing, OSINT, and reporting. Designed for authorized bug bounty hunting and security assessments.41MIT
- AlicenseCqualityDmaintenanceAn automated penetration testing framework that enables intelligent security assessments through reconnaissance, vulnerability scanning, and controlled exploitation. Features AI-driven workflow management with comprehensive reporting for authorized security testing.252797BSD 3-Clause
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/telmon95/VulneraMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server