PentestMCP
Provides tools for Active Directory penetration testing using NetExec, Bloodhound, Nmap, Certipy, and John the Ripper, enabling network reconnaissance, credential attacks, hash cracking, certificate services enumeration, and attack path analysis. Repository is hosted on GitHub.
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., "@PentestMCPscan the network 192.168.1.0/24 for SMB services and check signing status"
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.
PentestMCP
This is an MCP server developed as part of a 2-month summer internship. This tool gives Large Language Models the ability to use active directory penetration testing tools. The goal is to save time, have the model analyze the result for you, decide the next step and the next tool/technique to use, but most importantly (for me and for the lazy red teamers out there at least) is that it documents findings for you.
π― Overview
The server provides a unified interface to tools like NetExec (CrackMapExec), Bloodhound, john, certipy and Nmap. This is an initial version that provides decent features but will always accept more tools so if you're looking for something that is able to compromise an active directory environment from 0 to 100 that's not it and I dont think that it'll be possible without human in the loop. The MCP server was tested locally with Claude Desktop as the MCP client. It's important to note that I used Claude Desktop for Debian (I used stdio as the transport layer). For installation instructions, see: https://github.com/aaddrick/claude-desktop-debian. For now only stdio transport layer is implemented and explained below, to use HTTP/SSE it's suggested that you download the repo, change the mcp.run() function in server.py to implement HTTP/SSE and change the mcp configuration file to fetch the target ip and port
Related MCP server: BloodyAD MCP
π οΈ Requirements
The MCP server was developed using the amazing FastMCP: https://github.com/jlowin/fastmcp
Core Dependencies
Python 3.10+ with UV package manager
NetExec (successor to CrackMapExec)
Bloodhound Community Edition
Nmap
Certipy
psudohash https://github.com/t3l3machus/psudohash for password list generation ( included in the package, you dont have to download it )
john
π¦ Installation
1. Install the MCP server
Using PIP
pip install pentestmcp
By cloning the repo
git clone https://github.com/YoussefSahnoun/PentestMCP.git
cd PentestMCP
pip install -e .
2. Install Required Tools
NetExec
# Via pipx (recommended)
pipx install netexec
# Or via pip
pip install netexecBloodhound Community Edition
# Download from official releases
wget https://github.com/SpecterOps/BloodHound/releases/latest/bloodhound-linux-x64.zip
unzip bloodhound-linux-x64.zip
# Follow BloodHound setup instructionsNmap
# Ubuntu/Debian
sudo apt install nmap
# CentOS/RHEL
sudo yum install nmapCertipy
pip install certipy-adJohn
https://github.com/openwall/john/blob/bleeding-jumbo/doc/INSTALL
3. Configure MCP Client
For Claude Desktop
Add to your ~/.config/claude-desktop/config.json:
{
"mcpServers": {
"pentestmcp": {
"command": "uv",
"args": ["run", "pentestmcp"]
}
}
}For Other MCP Clients
Configure according to your client's documentation, pointing to pentestmcp as the command.
π Usage Examples
Before you run your MCP client:
Start bloodhound
Visit
~/.local/lib/python3.13/site-packages/pentestmcp/config/(typical path on linux) to your configureconfig.json(bloodhound api creds, prject directory to save findings in, etc.){ "PROJECT_DIRECTORY": "add_absolute_path_for_your_project_directory", "BHE_DOMAIN": "127.0.0.1", "BHE_PORT": 8080, "BHE_TOKEN_ID": "", "BHE_TOKEN_KEY": "" }
Example Workflow
Start with Network Discovery
"Scan the network 192.168.1.0/24 for SMB services and check signing status"Enumerate Users
"Find all users in the domain at 192.168.1.10"Credential Attacks
"Try password spraying with common passwords against the discovered users"Bloodhound Analysis
"Collect Bloodhound data ingest it, upload zip to bloodhound and find attack paths to Domain Admins"π§ Available Tools
πΊοΈ Nmap (Network Reconnaissance)
run_nmap_scan: Network and service discovery with customizable flags
β‘ NetExec (SMB/LDAP Operations)
SMB Enumeration & Authentication:
check_SMB_signing: Check SMB signing configurationenumerate_domain_users: Discover Active Directory usersbruteforce_rid_users: RID cycling for user enumerationpassword_spray: Multi-target password attacks
Kerberos Attacks:
ASREPRoast: Extract AS-REP hashes for offline crackingkerberoast: Extract TGS tickets for service accounts
Post-Exploitation:
spider_smb_shares: Comprehensive share enumeration and file collectiondump_ntds_dit: Extract domain credential database (NTDS.dit)dump_sam_hashes: Local account hash extractioncommand_execution: Remote PowerShell command execution
Bloodhound Data Collection:
bloodhound_ingest: Collect AD data using NetExec's BloodHound module
Module System:
check_module: List available NetExec modules for protocols (SMB, LDAP, WinRM, etc.)check_options: View module-specific options and parametersuse_module: Execute NetExec modules with custom options
π©Έ Bloodhound (Attack Path Analysis)
test_bloodhound_connection: Verify API connectivity and versionupload_zip_to_bloodhound: Import collected data into Bloodhoundlist_saved_queries: View saved Cypher queriesrun_bloodhound_query: Execute custom Cypher queries for attack path discovery
π John the Ripper (Hash Cracking)
get_john_formats: List available hash formats for crackingjohn_the_ripper: Crack hashes with specified format and wordlist
ποΈ Certipy (Certificate Services)
certipy_scan: Enumerate AD CS vulnerabilities and misconfigurations
π Utility & Data Management
save_partial_finding: Organize and store assessment resultsget_project_directory_files: View files in current project directoryread_files: Access collected data and configuration filesgenerate_pwd_wordlist: Create custom password wordlists based on target information
π§ Available Resources
Custom Bloodhound Queries: Some custom bloodhound queries that you can include as a resource to your MCP client. Note that you can add any resources you want just follow this resource:
@mcp.resource("data://bloodhound_cypher_queries")
def get_custom_queries():
# Resolve path relative to this script (safer than relying on current working dir)
p = Path(__file__).parent / "custom_bloodhound_queries.json"
# use 'encoding' (not 'encode') and json.load for file -> python object (if your data isn't json load it normally)
with p.open("r", encoding="utf-8") as f:
return json.load(f)
π Security Considerations
Responsible Use
This tool is intended for authorized security assessments only
Ensure proper authorization before testing any systems
Follow responsible disclosure practices for discovered vulnerabilities
Troubleshooting
Common Issues
Clock Skew Errors:
# Sync time with domain controller (requires root)
sudo ntpdate domain-controller.local
Permission Errors:
Ensure NetExec has appropriate permissions
Check that output directories are writable
Verify Bloodhound API credentials
## π€ Contributing
### Adding New Tools
1. Create a new tool function following the MCP pattern
2. Add appropriate input validation
3. Update documentation and examples
Available Tools
26 toolsASREPRoastC
Retrieve the Kerberos 5 AS-REP etype 23 hash of users without or with Kerberos pre-authentication required
| Name | Required | Description | Default |
|---|---|---|---|
| ips | Yes | ||
| usernames | Yes | ||
| passwords | Yes |
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 implies a retrieval operation but does not disclose behavioral traits such as whether it requires authentication, potential network impact, rate limits, or what the output format is. The description is minimal and lacks critical operational context for a security 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 directly states the tool's purpose without unnecessary words. It is front-loaded with the core action, though it could benefit from slight elaboration for clarity. No wasted content.
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 (a security tool with 3 parameters), no annotations, no output schema, and 0% schema coverage, the description is incomplete. It lacks details on behavior, parameters, output, and usage context, making it inadequate for safe and effective tool invocation by an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does not explain the parameters ('ips', 'usernames', 'passwords') at all, leaving their purpose, format, and relationships undocumented. The description adds no meaning beyond the schema, failing to address the coverage gap.
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 the target resource ('Kerberos 5 AS-REP etype 23 hash of users'), specifying the condition ('without or with Kerberos pre-authentication required'). It distinguishes from siblings like 'Kerberoast' by focusing on AS-REP rather than TGS tickets. However, it could be more specific about the verb's scope (e.g., from which systems).
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 'Kerberoast' or 'enumerate_domain_users'. It mentions the condition for target users but does not explain prerequisites, scenarios, or exclusions, leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bloodhound_ingestC
use the netexec's bloodhound feature to extract the json data to be uploaded to bloodhound database
| Name | Required | Description | Default |
|---|---|---|---|
| ips | Yes | ||
| username | Yes | ||
| password | Yes | ||
| ntlm | No | ||
| kerberos | No |
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 'extract the json data' and 'upload to bloodhound database', implying a data collection and transfer operation, but lacks details on permissions required, potential side effects (e.g., network impact), rate limits, or output format. This is a significant gap for a tool with multiple parameters and no structured safety hints.
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 ('use netexec's bloodhound feature to extract json data') and purpose ('to be uploaded to bloodhound database'). There is no wasted verbiage, making it appropriately sized for 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 the tool's complexity (5 parameters, 3 required, no output schema, and no annotations), the description is incomplete. It lacks details on behavioral traits, parameter usage, and expected outcomes, which are crucial for an agent to operate this tool effectively. The conciseness comes at the cost of insufficient context for safe and accurate 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 0%, meaning parameters like 'ips', 'username', 'password', 'ntlm', and 'kerberos' are undocumented in the schema. The description adds no meaning beyond the schema, failing to explain what these parameters do, their formats, or how they interact (e.g., that 'ntlm' and 'kerberos' are authentication flags). This leaves the agent with minimal guidance for correct invocation.
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 the json data') and target ('to be uploaded to bloodhound database'), specifying the verb and resource. It distinguishes from siblings like 'test_bloodhound_connection' or 'upload_zip_to_bloodhound' by focusing on data extraction via netexec, though it doesn't explicitly contrast with all alternatives.
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 extracting data for Bloodhound, but it doesn't specify prerequisites, timing, or exclusions compared to siblings like 'run_blooodhound_query' or 'upload_zip_to_bloodhound', leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bruteforce_rid_usersC
Bruteforce rid to enumerate users
| Name | Required | Description | Default |
|---|---|---|---|
| ips | Yes |
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 'bruteforce', which suggests aggressive or potentially disruptive actions, but fails to detail critical traits like authentication needs, rate limits, network impact, or output format. This is inadequate for a tool with security 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, making it appropriately sized. However, it is front-loaded with minimal detail, which limits its helpfulness despite being concise.
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 implied by 'bruteforce' (a potentially invasive security operation), no annotations, no output schema, and 0% schema coverage, the description is severely incomplete. It lacks essential details on behavior, parameters, and results, making it inadequate for safe and effective tool 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 0%, so the description must compensate for the undocumented parameter 'ips'. It adds no information about the parameter's meaning, such as what IPs represent (e.g., target systems), expected format, or constraints. The description does not address parameters at all, leaving significant gaps.
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 'Bruteforce rid to enumerate users' states a vague purpose with the verb 'bruteforce' and resource 'rid' to 'enumerate users', but it lacks specificity on what 'rid' refers to (e.g., RID cycling in Active Directory) and does not distinguish it from sibling tools like 'enumerate_domain_users'. It is not tautological but remains ambiguous in scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as 'enumerate_domain_users' or other enumeration methods. It implies usage for user enumeration but offers no context on prerequisites, scenarios, or exclusions, leaving the agent without clear direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
certipy_scanC
Call this to enumerating Active Directory Certificate Services (AD CS) vulnerabilities. username syntax is: username@domain
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes | ||
| username | Yes | ||
| password | Yes | ||
| ntlm | No | ||
| kerberos | No |
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 only mentions username syntax and implies vulnerability scanning, but lacks details on authentication methods (e.g., NTLM/Kerberos flags), rate limits, output format, or potential impacts. This is inadequate for a tool with 5 parameters and security 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 brief and front-loaded with the main purpose, but the second sentence about username syntax feels tacked on without integrating into a cohesive structure. It's concise but could be more smoothly organized.
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 (5 parameters, security tool, no annotations, no output schema), the description is incomplete. It doesn't cover parameter meanings, behavioral traits, or output expectations, making it insufficient for safe and effective use by 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 0%, so the description must compensate for undocumented parameters. It only explains username syntax, leaving ip, password, ntlm, and kerberos parameters without semantic context. This fails to add meaningful meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose as 'enumerating Active Directory Certificate Services (AD CS) vulnerabilities,' which is a specific verb+resource combination. However, it doesn't explicitly differentiate this from sibling tools like 'check_module' or 'run_nmap_scan' that might also perform security assessments, so it misses full 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. It mentions username syntax but doesn't specify contexts, prerequisites, or exclusions, leaving the agent with no usage direction beyond the basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_moduleC
Call this before before using a module to check available exploit modules for a certain netexec supported protocol {rdp,ldap,winrm,smb,ssh,nfs,ftp,wmi,mssql,vnc} and based on the description of the modules chose one to perform
| Name | Required | Description | Default |
|---|---|---|---|
| prot | Yes |
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 the tool checks modules and allows choosing one based on descriptions, but lacks critical details: it doesn't specify what information is returned (e.g., list format, module IDs), whether it's read-only or has side effects, or any rate limits/authentication requirements. This leaves significant gaps for an agent to understand 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 run-on sentence with a typo ('before before') and could be more structured. While it conveys key information, it's not optimally front-loaded or polished. It earns a baseline score for being brief but loses points for lack of clarity in presentation.
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 (involves checking exploit modules for security protocols), no annotations, no output schema, and low schema coverage, the description is incomplete. It doesn't explain what the tool returns (e.g., a list of modules with descriptions), how to interpret results, or any prerequisites (e.g., network access). This makes it inadequate for an agent to use the tool effectively without additional 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 1 parameter with 0% description coverage, so the description must compensate. It adds some meaning by listing example protocol values (e.g., rdp, ldap) and indicating the parameter specifies the protocol to check. However, it doesn't fully document the parameter's semanticsβit doesn't clarify if the list is exhaustive, if case matters, or if other protocols are supported, leaving the agent with incomplete guidance.
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: to check available exploit modules for specific netexec protocols before using a module. It specifies the verb ('check'), resource ('available exploit modules'), and scope ('for a certain netexec supported protocol'). However, it doesn't explicitly distinguish this from sibling tools like 'use_module' or 'check_options', 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 implied usage guidance by stating 'Call this before before using a module,' suggesting it's a prerequisite step. However, it doesn't explicitly state when NOT to use this tool or name alternatives (e.g., 'use_module' for direct module execution or 'check_options' for other checks), leaving some ambiguity in tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_optionsC
After selecting the right module call this to check what options that module presents
| Name | Required | Description | Default |
|---|---|---|---|
| prot | Yes | ||
| module | Yes |
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 checking options but doesn't describe what the tool returns (e.g., a list, structured data), whether it's read-only or has side effects, or any constraints like rate limits or authentication needs. This leaves significant gaps in understanding how the tool behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded and efficient, with no wasted words. However, it could be more structured by explicitly naming parameters or outcomes, but it earns high marks for brevity and clarity within its limited 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?
Given the tool has 2 parameters with no schema descriptions, no annotations, and no output schema, the description is incomplete. It doesn't explain what 'options' are, how results are returned, or provide enough context for the agent to use the tool effectively in a complex environment with many siblings.
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 2 parameters with 0% description coverage, so the description must compensate. It mentions 'module' as a parameter but doesn't explain 'prot' or provide any details on what values are expected, formats, or examples. This adds minimal meaning beyond the schema, failing to address the coverage gap 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 is to 'check what options that module presents' after selecting a module, which provides a vague but understandable action. However, it doesn't specify what kind of options are checked (e.g., configuration parameters, available actions) or what resource is involved, making it less specific than ideal. It distinguishes from some siblings like 'check_module' but not clearly from others like 'use_module'.
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 by stating 'After selecting the right module call this', implying a sequence but not specifying when to use this tool versus alternatives. It doesn't mention prerequisites, exclusions, or compare to sibling tools like 'check_module' or 'use_module', leaving the agent with little context for decision-making.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_SMB_signingC
used to check smb signgings of an ip address or some range of ip addresses with the needed options
| Name | Required | Description | Default |
|---|---|---|---|
| ips | Yes |
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 vaguely describes behavior as 'checking' with 'options', but doesn't disclose critical traits like whether it's read-only, destructive, requires authentication, has rate limits, or what the output looks like. For a network security tool with no annotations, 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 run-on sentence with typos ('signgings'), making it somewhat unclear. It's front-loaded with the core purpose but could be more structured. While concise in length, the lack of clarity reduces its effectiveness, placing it at an average level.
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 low schema coverage (0%), the description is incomplete. It doesn't cover behavioral aspects, parameter details, or expected results. For a tool in a security context with siblings like network scanners, more context is needed to guide an 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 0%, so the description must compensate. It mentions 'ip address or some range of ip addresses' and 'needed options', which loosely relates to the 'ips' parameter (an array of strings). However, it doesn't explain parameter semantics, such as format (e.g., CIDR, single IPs), what 'options' entail, or any constraints. This adds minimal value beyond the bare 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 states the tool checks 'smb signgings' (likely SMB signing) for IP addresses or ranges, which gives a basic purpose. However, it's vague about what 'checking' entails (e.g., verification, enumeration, or testing) and doesn't differentiate from siblings like 'spider_smb_shares' or 'run_nmap_scan', which might involve similar network scanning. It avoids tautology by not just restating the name, 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 mentions checking IPs with 'needed options', implying some context, but provides no explicit guidance on when to use this tool versus alternatives. For example, it doesn't compare to 'run_nmap_scan' for network scanning or 'spider_smb_shares' for SMB-related tasks. There's no mention of prerequisites, exclusions, or specific scenarios, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
command_executionC
execute powershell commands if we have pwned the user, possible to use ntlm or password for authentication
| Name | Required | Description | Default |
|---|---|---|---|
| ips | Yes | ||
| username | Yes | ||
| password | Yes | ||
| command | Yes | ||
| ntlm | No | ||
| kerberos | No |
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 authentication methods (NTLM or password) and the prerequisite of having 'pwned the user', but fails to detail critical traits such as security implications, potential destructive effects, rate limits, or expected output format. This leaves significant gaps for a tool involving command execution and authentication.
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 sentence that is somewhat front-loaded with the core action, but it includes ambiguous phrasing like 'pwned the user' and mixes authentication details without clear structure. While concise, it could be more precise and organized to better guide the agent.
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 command execution tool with authentication parameters, no annotations, no output schema, and 0% schema coverage, the description is incomplete. It lacks details on prerequisites, behavioral risks, parameter interactions, and expected results, making it insufficient for safe and effective use by 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 0%, so the description must compensate for all 6 parameters. It only vaguely references 'ntlm or password for authentication', which partially relates to the 'ntlm', 'password', and possibly 'kerberos' parameters, but ignores 'ips', 'username', and 'command'. This adds minimal meaning beyond the schema, failing to adequately explain parameter roles or usage.
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 executes PowerShell commands and mentions authentication methods (NTLM or password), which provides a basic purpose. However, it doesn't specify what 'pwned the user' means operationally or distinguish this tool from other command execution or authentication-related siblings like 'bruteforce_rid_users' or 'password_spray', making it vague in context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when 'we have pwned the user' and mentions authentication options, but it lacks explicit guidance on when to use this tool versus alternatives like 'bruteforce_rid_users' for authentication or other execution tools. No exclusions or clear context for selection are provided, leaving the agent with minimal direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dump_ntds_ditC
dump NTdS.dit which contains users and their hashes if we have some valid credentials
| Name | Required | Description | Default |
|---|---|---|---|
| ips | Yes | ||
| username | Yes | ||
| password | Yes | ||
| ntlm | No | ||
| kerberos | No |
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 the need for 'valid credentials', which hints at authentication requirements, but does not disclose other critical traits such as whether this is a read-only or destructive operation, potential rate limits, network impact, or what happens upon execution (e.g., file creation, data extraction). This leaves significant gaps for a tool with 5 parameters and no output schema.
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 main purpose ('dump NTdS.dit') and adds a conditional clause ('if we have some valid credentials'). There is no wasted text, making it appropriately concise. However, it could be slightly improved by structuring it into clearer parts (e.g., separating purpose from prerequisites).
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 (5 parameters, no annotations, no output schema), the description is incomplete. It lacks details on behavioral traits, parameter meanings, output format, and how it differs from sibling tools. While it states the purpose and a prerequisite, it does not provide enough context for safe and effective use by an AI agent, especially for a tool that likely involves sensitive operations like dumping hashes.
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 0%, so the schema provides no parameter details. The description does not add any meaning to the parameters (ips, username, password, ntlm, kerberos) beyond implying credentials are needed. It fails to explain what 'ips' represents (e.g., target IP addresses), the purpose of 'ntlm' or 'kerberos' flags, or how parameters interact, which is insufficient given the low 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: 'dump NTdS.dit which contains users and their hashes'. It specifies the action (dump) and the target resource (NTdS.dit), and mentions the content (users and their hashes). However, it does not explicitly differentiate from sibling tools like 'dump_sam_hashes' or 'enumerate_domain_users', which reduces the score from a 5.
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 implied usage context by stating 'if we have some valid credentials', which suggests when to use the tool (when credentials are available). However, it does not explicitly guide when to use this tool versus alternatives (e.g., 'dump_sam_hashes' for SAM hashes or 'enumerate_domain_users' for user enumeration), and lacks clear exclusions or prerequisites beyond credentials.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
dump_sam_hashesC
dump sam hashes if we have some redentials using the sec dump which is similar to secretdump,use ntlm hash or normal password
| Name | Required | Description | Default |
|---|---|---|---|
| ips | Yes | ||
| username | Yes | ||
| password | Yes | ||
| ntlm | No | ||
| kerberos | No |
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 the tool dumps SAM hashes using credentials, which implies a read operation, but doesn't clarify if it's destructive, requires specific permissions, involves network access, or has rate limits. The comparison to 'secretdump' hints at a security tool behavior, but lacks details on output format, error handling, or side effects, leaving significant 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 run-on sentence with grammatical errors ('redentials', 'quereis' in sibling tools) and unclear phrasing ('sec dump which is similar to secretdump'). It's not front-loaded with key information and lacks structure, making it inefficient for quick comprehension. While brief, it sacrifices clarity for 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 complexity of a credential-based security tool with 5 parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what SAM hashes are, how the tool interacts with systems, what the output looks like, or potential risks. For a tool in a security context with siblings like 'dump_ntds_dit', more detail is needed to ensure safe and correct 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?
With 0% schema description coverage for 5 parameters, the description must compensate but only partially does so. It mentions using 'ntlm hash or normal password', which relates to the 'ntlm' and 'password' parameters, but doesn't explain 'ips', 'username', or 'kerberos'. This adds minimal meaning beyond the schema, failing to adequately document the parameters for effective tool invocation.
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 dumps SAM hashes using credentials, which indicates a specific action (dump) on a resource (SAM hashes). However, it's vague about what 'SAM hashes' are and doesn't clearly differentiate from sibling tools like 'dump_ntds_dit' or 'Kerberoast', which might involve similar credential-based attacks. The mention of 'sec dump' and 'secretdump' adds some context but lacks precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when credentials are available ('if we have some redentials'), but provides no explicit guidance on when to use this tool versus alternatives like 'dump_ntds_dit' or 'Kerberoast'. It mentions using NTLM hash or password, but doesn't specify scenarios or prerequisites, leaving the agent to infer usage from the tool name and parameters alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
enumerate_domain_usersC
enumerate users on an active directory domain, you can provide username or password if you have some
| Name | Required | Description | Default |
|---|---|---|---|
| ips | Yes | ||
| username | No | ||
| password | No |
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 authentication parameters (username/password) but fails to describe critical traits such as whether this is a read-only operation, potential impacts on the domain (e.g., detection risks), rate limits, or expected output format. This leaves significant gaps for a tool that interacts with Active Directory.
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 sentence that is somewhat front-loaded but includes unnecessary phrasing ('if you have some'). It could be more direct, e.g., 'Enumerate users on an Active Directory domain with optional authentication.' However, it avoids excessive 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 the complexity of domain enumeration, no annotations, no output schema, and low schema coverage, the description is inadequate. It lacks details on behavior, output, error handling, and security implications, making it incomplete for safe and effective use by 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 0%, so the description must compensate. It mentions 'username or password' but doesn't explain their purpose or format, and omits the 'ips' parameter entirely. This adds minimal value beyond the schema, failing to clarify semantics like what 'ips' represents (domain controllers?) or authentication requirements.
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 'enumerate' and the resource 'users on an active directory domain', which specifies what the tool does. It distinguishes itself from siblings like 'bruteforce_rid_users' or 'Kerberoast' by focusing on enumeration rather than attack techniques. However, it doesn't explicitly mention how it differs in scope or method from similar 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 minimal guidance with 'you can provide username or password if you have some', implying authentication is optional but not clarifying when to use this tool versus alternatives like 'bloodhound_ingest' or 'list_saved_quereis'. No explicit when/when-not scenarios or prerequisites are stated, leaving usage context vague.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_pwd_wordlistC
generate some password wordlist based on initial input of word(s), let this be the last resort if no other wordlist worked
| Name | Required | Description | Default |
|---|---|---|---|
| inp | Yes |
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 being a 'last resort' which hints at potential limitations or inefficiency, but doesn't disclose critical behavioral traits like whether it's read-only/destructive, performance characteristics, error handling, or output format. 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 brief (one sentence) and front-loaded with the core function, but it's somewhat awkwardly phrased ('generate some password wordlist') and could be more precise. While concise, it sacrifices clarity for brevity, making it less effective than it could be.
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 (a generation tool with no annotations, 0% schema coverage, and no output schema), the description is incomplete. It lacks details on how the wordlist is generated, what the output looks like, error conditions, or performance implications. The 'last resort' hint adds some context but doesn't compensate for the overall 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 0%, so the description must compensate. It mentions 'initial input of word(s)' which loosely maps to the 'inp' parameter (an array of strings), but provides no details on expected format, constraints, examples, or how the input influences generation. This adds minimal value beyond the bare 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 states the tool 'generate some password wordlist based on initial input of word(s)' which indicates the basic function, but it's vague about the generation method and doesn't distinguish from potential alternatives. It mentions 'wordlist' but not what type or format, leaving the purpose somewhat unclear beyond the general concept.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance: 'let this be the last resort if no other wordlist worked.' This clearly indicates when to use it (as a fallback) and implies alternatives exist, though it doesn't name specific sibling tools or detail when-not scenarios beyond the general last-resort advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_john_formatsC
check available john format before cracking a hash
| 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 the full burden of behavioral disclosure. It mentions 'check' which implies a read-only operation, but doesn't clarify if this requires specific permissions, what the output looks like, or any side effects. For a tool with zero annotation coverage, this leaves significant behavioral gaps unaddressed.
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 appropriately sized for a simple tool and front-loads the essential information, making every word earn 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 the complexity of security/hash-cracking tools, no annotations, and no output schema, the description is incomplete. It doesn't explain what 'john format' means, what the return value contains, or how this integrates with the sibling 'john_the_ripper' tool. For a tool in this domain, more context about formats and usage would be expected.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the absence of inputs. The description appropriately doesn't add parameter information beyond what's already covered, maintaining focus on the tool's purpose. This meets the baseline expectation for parameterless tools.
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 ('check available john format before cracking a hash'), which is clear but vague. It specifies the action ('check') and context ('before cracking a hash'), but doesn't clarify what 'john format' refers to or how this differs from the sibling tool 'john_the_ripper'. It avoids tautology but lacks specificity for full differentiation.
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 by implying usage 'before cracking a hash', but doesn't specify when to use this tool versus alternatives like 'john_the_ripper' or other hash-related tools. No explicit when-not-to-use or prerequisite information is given, leaving the agent with insufficient context for optimal tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_directory_filesC
read existing files from the project directory to see what findings and data have been saved
| 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 the full burden of behavioral disclosure. It mentions reading existing files but fails to detail critical aspects such as permissions required, whether it's a safe read operation, potential rate limits, or the format of returned data. 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 sentence that efficiently states the action and purpose without unnecessary words. It is front-loaded with the core function, though it could be slightly more structured by separating the action from the intent for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It does not explain what the tool returns (e.g., file list, content, metadata) or any behavioral traits like error handling. For a tool with no structured data support, more context is needed to guide effective usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter information is needed. The description does not add any parameter details, which is acceptable in this case, as there are no parameters to document, aligning with the baseline for zero 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 states the tool reads existing files from the project directory, which clarifies the verb (read) and resource (files). However, it's vague about the purpose ('to see what findings and data have been saved'), lacking specificity on what types of files or data are involved, and does not distinguish it from sibling tools like 'read_files' or 'spider_smb_shares'.
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 is provided on when to use this tool versus alternatives. The description implies usage for viewing saved findings and data, but it doesn't specify contexts, prerequisites, or exclusions, leaving the agent without clear direction compared to other file-related 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.
john_the_ripperC
cracking hashes using john based on format and a wordlist
| Name | Required | Description | Default |
|---|---|---|---|
| hashfile | Yes | ||
| format | Yes | ||
| wordlist | No | /usr/share/wordlists/rockyou.txt |
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 'cracking hashes', implying a write or destructive operation, but doesn't specify permissions, rate limits, or output behavior. The description lacks details on what happens during cracking, such as success/failure states or timeouts, making it insufficient for a tool with no annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with a single sentence: 'cracking hashes using john based on format and a wordlist'. It wastes no words, though it could benefit from more structure or elaboration given the tool's complexity. It's appropriately sized but slightly under-specified.
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 (hash cracking with 3 parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't cover behavioral aspects, parameter details, or usage context, making it inadequate for an AI agent to reliably invoke the tool. More information is needed to compensate for the missing structured data.
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 0%, so the description must compensate. It mentions 'format and a wordlist', which maps to two of the three parameters, but doesn't explain 'hashfile' or provide details on parameter usage, such as format examples or wordlist paths. The description adds minimal value beyond the schema, failing to fully address the coverage gap.
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: 'cracking hashes using john based on format and a wordlist'. It specifies the verb ('cracking'), resource ('hashes'), and method ('using john'), though it doesn't explicitly differentiate from sibling tools like 'dump_sam_hashes' or 'Kerberoast' which might also handle hashes. The purpose is clear but lacks 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. It doesn't mention prerequisites, such as needing a hashfile or specific formats, or compare it to sibling tools like 'get_john_formats' or 'generate_pwd_wordlist'. Usage is implied but not explicitly stated, leaving gaps for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
KerberoastD
The goal of Kerberoasting is to harvest TGS tickets for services that run on behalf of user accounts in the AD, not computer accounts. Thus, part of these TGS tickets is encrypted with keys derived from user passwords. As a consequence, their credentials could be cracked offline.
| Name | Required | Description | Default |
|---|---|---|---|
| ips | Yes | ||
| usernames | Yes | ||
| passwords | Yes | ||
| output_file | Yes |
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. The description explains what Kerberoasting achieves ('harvest TGS tickets', 'credentials could be cracked offline') but doesn't describe what the tool actually does behaviorally - whether it performs the attack, simulates it, tests for vulnerability, or something else. It doesn't disclose execution characteristics, side effects, or output 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 reasonably concise (3 sentences) and well-structured, explaining the technique's goal and consequences. However, it's entirely conceptual rather than functional - every sentence explains Kerberoasting as a technique rather than describing the tool's operation, so while concise, it's misdirected.
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 4-parameter tool with no annotations, no output schema, and 0% schema description coverage, the description is completely inadequate. It explains the concept of Kerberoasting but provides no information about tool operation, parameters, behavior, or output. Given the security context and potential destructive nature implied by the technique, this lack of operational detail is particularly problematic.
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 0%, so the description must compensate for undocumented parameters. The description provides no information about any of the 4 required parameters (ips, usernames, passwords, output_file). It doesn't explain what these parameters represent, their format, or how they're used in the Kerberoasting process.
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 explains what Kerberoasting is conceptually but doesn't state what this specific tool does. It describes the goal of Kerberoasting as a technique ('harvest TGS tickets') but doesn't specify the verb this tool performs (e.g., 'execute', 'perform', 'run'). The description is more educational about the technique than functional about the tool's operation.
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 any prerequisites, context for use, or comparison with sibling tools like ASREPRoast or other attack tools in the server. It's purely explanatory about the technique without operational guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_saved_quereisB
list already saved queries in bloodhound
| 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 offers minimal behavioral insight. It states what the tool does but doesn't disclose whether it requires authentication, returns structured data, handles errors, or has any side effects. For a 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 that directly states the tool's purpose without unnecessary 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 the lack of annotations and output schema, the description is insufficient. It doesn't explain what the output looks like (e.g., list format, error handling) or behavioral constraints. For a tool in a security context (BloodHound), more context on permissions or data sensitivity would be helpful.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters with 100% schema description coverage, so no parameter documentation is needed. The description appropriately doesn't discuss parameters, earning a baseline score of 4 for not introducing confusion or redundancy.
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 ('list') and resource ('already saved queries in bloodhound'), making the purpose immediately understandable. It doesn't explicitly differentiate from siblings like 'run_bloodhound_query' or 'test_bloodhound_connection', but the specificity of 'saved queries' provides inherent 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. The description doesn't mention prerequisites (e.g., needing an active BloodHound connection) or contrast with similar tools like 'run_bloodhound_query' for executing queries versus listing saved ones.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
password_sprayD
spray passwords on an account or several accounts
| Name | Required | Description | Default |
|---|---|---|---|
| ips | Yes | ||
| usernames | Yes | ||
| passwords | Yes | ||
| onelogin | No |
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 fails to do so. It doesn't explain what 'spray passwords' entails (e.g., network requests, authentication attempts, potential security impacts), whether it's destructive or safe, rate limits, or required permissions. This omission is critical for a tool with parameters like 'ips' and 'passwords' that suggest network or security operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with a single sentence, but it's under-specified rather than efficiently informative. While it avoids unnecessary words, it lacks the structure needed to convey purpose, usage, or parameters, making it ineffective despite its 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 tool's complexity (4 parameters, 0% schema coverage, no annotations, no output schema, and security-related context from sibling tools), the description is severely incomplete. It doesn't address behavioral aspects, parameter meanings, or usage scenarios, failing to provide the minimal information required for safe and effective tool 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 0%, meaning no parameters are documented in the schema. The description adds no information about parameters, failing to explain what 'ips', 'usernames', 'passwords', or 'onelogin' mean or how they should be used. This leaves all four parameters completely undocumented, which is inadequate for tool invocation.
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 'spray passwords on an account or several accounts' restates the tool name 'password_spray' with minimal elaboration, making it tautological. It vaguely suggests testing passwords against accounts but lacks specificity about the action's nature (e.g., authentication attempts, security testing). Compared to siblings like 'bruteforce_rid_users' or 'Kerberoast', it doesn't clearly differentiate its purpose.
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 context, prerequisites, or exclusions, and it doesn't reference sibling tools like 'bruteforce_rid_users' or 'Kerberoast' for comparison. This leaves the agent with no information to make informed decisions about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_filesD
read a file
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
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. 'read a file' implies a read operation but doesn't specify what gets read (e.g., content, binary data, metadata), whether it requires specific permissions, if there are rate limits, or what the output looks like. 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 extremely concise with just three words, making it front-loaded and free of unnecessary verbiage. However, this conciseness comes at the cost of under-specification, but based solely on structure and brevity, it earns a high score as every word contributes directly to the core message.
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 (a file reading tool in a security testing context), lack of annotations, no output schema, and low parameter coverage, the description is completely inadequate. It doesn't explain what the tool returns, how errors are handled, or any behavioral nuances, making it insufficient for an agent to use the tool 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 1 parameter with 0% description coverage, and the tool description provides no information about parameters. 'read a file' doesn't mention the 'path' parameter or explain its semantics (e.g., what format the path should be in, if it's absolute or relative, or any constraints). With low schema coverage, the description fails to compensate, leaving parameters undocumented.
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 'read a file' is a tautology that essentially restates the tool name 'read_files' without adding meaningful specificity. It doesn't distinguish this tool from any potential siblings or clarify what type of reading operation it performs (e.g., reading content, metadata, or permissions). While it includes a verb ('read') and resource ('file'), it lacks the specificity needed for clear differentiation.
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 any context, prerequisites, or exclusions, and given the sibling tools list includes various security/penetration testing tools (e.g., 'get_project_directory_files'), there's no indication of how this tool differs or when it's appropriate. This leaves the agent without any usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_blooodhound_queryB
Run a bloodhound cypher query of your choice (use this to collect information about the network and potentially identify attack vectors)
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes |
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 limited behavioral insight. It mentions the tool can 'collect information' and 'identify attack vectors', hinting at read-only or investigative use, but doesn't disclose critical traits like whether it requires specific permissions, has rate limits, affects system state, or returns structured vs. raw data. For a tool with zero annotation coverage, this leaves significant gaps in understanding its operational impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the core action and purpose. It avoids redundancy and wastes no words, though it could be slightly more structured (e.g., separating usage context). Every part earns its place by explaining what the tool does and why.
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 (running custom queries in a security tool), no annotations, no output schema, and low schema coverage, the description is incomplete. It lacks details on behavioral traits (e.g., safety, performance), parameter specifics, and expected outputs, which are crucial for an AI agent to use it effectively in a network reconnaissance 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 1 parameter with 0% description coverage, so the description must compensate. It adds meaning by specifying the parameter is a 'bloodhound cypher query of your choice', clarifying it's a custom query string rather than a predefined option. However, it doesn't provide syntax examples, format details, or constraints (e.g., query length, supported cypher features), leaving the agent to infer from context. Baseline is 3 as it adds some value but not fully.
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 a bloodhound cypher query') and the resource ('information about the network'), with a specific purpose ('collect information... and potentially identify attack vectors'). It distinguishes from siblings like 'test_bloodhound_connection' or 'upload_zip_to_bloodhound' by focusing on query execution rather than setup or data ingestion. However, it doesn't explicitly differentiate from 'list_saved_quereis' (likely a typo for 'queries'), which might be related.
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 information gathering and attack vector identification, suggesting it's for reconnaissance phases. It doesn't provide explicit when-not-to-use guidance or name alternatives among siblings (e.g., not specifying when to use this vs. 'list_saved_quereis' or other tools). The context is clear but lacks exclusions or comparative advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_nmap_scanC
run an nmap scan on an ip or ip range (use the right nmap flags based on the first response)
| Name | Required | Description | Default |
|---|---|---|---|
| ips | Yes | ||
| flags | Yes |
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 using flags based on a 'first response', hinting at a multi-step or feedback-driven process, but doesn't disclose critical behavioral traits like whether this is a read-only scan, potential network impact, authentication needs, rate limits, or output format. This leaves significant gaps for a tool that performs network 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 brief and to the point, but the second part 'use the right nmap flags based on the first response' is somewhat vague and could be more clearly integrated. It's front-loaded with the main action, but the overall structure is minimal without wasting words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of network scanning, no annotations, no output schema, and low parameter coverage, the description is incomplete. It lacks details on behavior, output, error handling, and security implications, making it inadequate for safe and effective use by 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 0%, so the description must compensate. It mentions 'ips' and 'flags' implicitly, but doesn't explain what these parameters mean beyond the schema's basic types. For example, it doesn't clarify the format of IPs (e.g., CIDR notation) or valid flag values, leaving parameters largely undocumented.
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 an nmap scan') and target ('on an ip or ip range'), which is specific and unambiguous. However, it doesn't distinguish this tool from potential siblings like 'check_module' or 'command_execution' that might also involve scanning or execution, so it doesn't fully differentiate from alternatives.
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 context with 'use the right nmap flags based on the first response', suggesting iterative or adaptive use, but it doesn't explicitly state when to use this tool versus alternatives like 'check_SMB_signing' or 'certipy_scan' for different scanning purposes. No clear exclusions or prerequisites are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_partial_findingB
save partial findings for later use (like open ports, used protocols, versions etc.) if finding data is too long or already exists in another file dont save it
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses behavioral traits such as conditional saving based on data length or duplication, but lacks details on permissions, error handling, or response format. For a tool with no annotations, this is insufficient as it doesn't cover critical aspects like what happens on success/failure or storage 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 run-on sentence that could be better structured. It front-loads the purpose but includes conditional logic ('if...dont save it') that makes it slightly verbose. While not wasteful, it lacks clarity in phrasing and could be more concise by separating concepts.
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, 0% schema coverage, and no output schema, the description is incomplete. It covers the basic purpose and usage conditions but misses parameter details, behavioral context, and output information. For a tool with two parameters and conditional logic, 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 0%, so the description must compensate. It does not add any meaning beyond the input schema, which only lists 'filename' and 'content' with no details. The description mentions 'finding data' but doesn't explain parameter semantics, formats, or constraints. This leaves parameters largely undocumented.
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: 'save partial findings for later use' with examples like 'open ports, used protocols, versions etc.' It specifies the verb ('save') and resource ('partial findings'), but does not explicitly differentiate from sibling tools, which include other data processing tools like 'read_files' or 'upload_zip_to_bloodhound'. The purpose is specific but lacks 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 clear context for when to use this tool: 'if finding data is too long or already exists in another file dont save it'. This gives explicit conditions for usage (data length or duplication) but does not mention alternatives or when not to use it relative to sibling tools. The guidance is helpful but not comprehensive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
test_bloodhound_connectionB
connect to bloodhoundapi and get version
| 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 connecting and getting version, but lacks details on authentication requirements, error handling, network behavior (e.g., timeouts), or output format. For a connection 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 that directly states the tool's purpose without any fluff or redundancy. It is front-loaded with the core action and resource, making it easy to understand at a glance. Every word earns its place in conveying the essential 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 a connection tool (which may involve network operations and authentication), the description is incomplete. No annotations exist to cover behavioral aspects, and there's no output schema to explain return values. The description only states what it does, not how it behaves or what it returns, leaving critical gaps for agent 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 tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it appropriately avoids mentioning any. A baseline of 4 is applied as it handles the zero-parameter case correctly without 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 verb 'connect to' and resource 'bloodhoundapi', with the additional action 'get version'. It specifies what the tool does (establish connection and retrieve version information), though it doesn't explicitly differentiate from sibling tools like 'upload_zip_to_bloodhound' or 'run_blooodhound_query' which involve different 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., network access, credentials), timing (e.g., initial setup verification), or exclusions (e.g., not for data ingestion). Without such context, users must infer usage from the purpose alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_zip_to_bloodhoundB
Upload data zip to bloodhound to ingest and analyze (wait until it gets ingested before testing queries)
| Name | Required | Description | Default |
|---|---|---|---|
| zip_path | Yes |
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 that the tool waits for ingestion before queries can be tested, which adds useful behavioral context about timing and dependencies. However, it lacks details on permissions needed, error handling, rate limits, or what 'ingested' means operationally. For a mutation 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 front-loads the main purpose. It could be slightly more structured by separating the action from the behavioral note, but it's appropriately sized with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and 0% schema coverage, the description is incomplete. It covers the basic purpose and a timing note but misses critical details for a mutation tool: what happens on success/failure, output format, security implications, or error conditions. The context signals indicate high complexity that isn't addressed.
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 0% (no descriptions in schema), and there is 1 parameter. The description doesn't mention the 'zip_path' parameter at all, failing to add any semantic meaning beyond what the bare schema provides. However, with only 1 parameter, the baseline is higher, but the description doesn't compensate for the lack of schema 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 ('upload data zip') and purpose ('to ingest and analyze'), with the resource being Bloodhound. It distinguishes from siblings like 'bloodhound_ingest' by specifying zip upload, but doesn't explicitly differentiate from all siblings. The description is specific but could be more precise about what distinguishes it from similar 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 implied usage guidance with 'wait until it gets ingested before testing queries', suggesting this is a prerequisite step. However, it doesn't explicitly state when to use this vs. alternatives like 'bloodhound_ingest' or 'test_bloodhound_connection', nor does it mention any exclusions or prerequisites beyond the waiting advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
use_moduleC
Call this to use the module with the right options and make sure to satisfy the need of certain variables like credentials etc.If no credentials are needed for the module or no valid credentials are found leave the username and password default (empty). Options syntax is ["option1=value1","options2=value2",...]
| Name | Required | Description | Default |
|---|---|---|---|
| ips | Yes | ||
| prot | Yes | ||
| module | Yes | ||
| options | Yes | ||
| username | Yes | ||
| password | Yes | ||
| kerberos | No | ||
| ntlm | No |
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 credential handling and options syntax, but fails to describe critical behaviors: what the tool actually does (execution, scanning, etc.), whether it's destructive or read-only, authentication requirements beyond credentials, rate limits, or output format. The description is insufficient for a tool with 8 parameters and 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 relatively concise (two sentences) but poorly structured. The first sentence is vague and circular ('use the module with the right options'). The second sentence provides some credential guidance but buries the options syntax detail at the end. While not verbose, the content doesn't earn its place effectively.
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 high complexity (8 parameters, 6 required, 0% schema coverage, no annotations, no output schema, 24 sibling tools), the description is completely inadequate. It fails to explain the tool's purpose, when to use it, most parameter meanings, behavioral traits, or expected outcomes. This leaves the agent with insufficient information to select or invoke the tool correctly.
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 0%, so the description must compensate. It only vaguely mentions credentials and options syntax, ignoring 6 other parameters (ips, prot, module, kerberos, ntlm). The description adds minimal meaning beyond the bare schema, failing to explain what parameters like 'ips', 'prot', or 'module' represent or how they interact.
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 vaguely states 'use the module with the right options' but doesn't specify what the tool actually does (e.g., execute a security module, run a scan, perform an attack). It mentions credentials but doesn't clarify the core action. This is a tautology that mostly restates the name 'use_module' without providing meaningful purpose.
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 about credentials ('If no credentials are needed... leave username and password default'), but offers no context on when to use this tool versus the 24 sibling tools (e.g., run_nmap_scan, Kerberoast, command_execution). There's no explicit when/when-not guidance or alternative tool recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
26 tool updates
v1.0.0- First observed
ASREPRoast - First observed
bloodhound_ingest - First observed
bruteforce_rid_users - First observed
certipy_scan - First observed
check_module - First observed
check_options - First observed
check_SMB_signing - First observed
command_execution - First observed
dump_ntds_dit - First observed
dump_sam_hashes - First observed
enumerate_domain_users - First observed
generate_pwd_wordlist - First observed
get_john_formats - First observed
get_project_directory_files - First observed
john_the_ripper - First observed
Kerberoast - First observed
list_saved_quereis - First observed
password_spray - First observed
read_files - First observed
run_blooodhound_query - First observed
run_nmap_scan - First observed
save_partial_finding - First observed
spider_smb_shares - First observed
test_bloodhound_connection - First observed
upload_zip_to_bloodhound - First observed
use_module
TDQS
Scored across 26 tools
The tools cover distinct pentesting tasks like ASREPRoast, Kerberoast, and nmap scanning, but there is significant overlap between some tools. For example, dump_ntds_dit and dump_sam_hashes both handle credential dumping with similar descriptions, and check_module/check_options/use_module form a confusing workflow that could lead to misselection. Descriptions help clarify, but the boundaries are not always clear.
Naming is highly inconsistent with mixed conventions: some use snake_case (bloodhound_ingest), others use camelCase (ASREPRoast), and some are verbose (get_project_directory_files). There is no predictable pattern across the set, making it hard for agents to infer tool purposes from names alone. This inconsistency reduces usability and coherence.
With 26 tools, the count is excessive for a single server, leading to a bloated and overwhelming interface. Many tools could be consolidated (e.g., the multiple hash-dumping and module-checking tools). This heavy toolset will likely confuse agents and increase the risk of misselection, detracting from the server's effectiveness.
The toolset provides comprehensive coverage for pentesting workflows, including reconnaissance (nmap scans), exploitation (module usage), credential attacks (ASREPRoast, Kerberoast), and data analysis (Bloodhound integration). Minor gaps exist, such as lacking tools for post-exploitation cleanup or reporting, but agents can work around these with the available tools for most attack scenarios.
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
Offline methodology engine for authorized penetration testing, CTF, and security research.
AI pentesting: run scans, triage vulnerabilities, review PRs, manage schedules and assets.
MEOK MCP Hardening MCP β automated security red-team for any MCP server. Maps OWASP LLM Top 10
Related MCP Servers
- 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.43MIT
- AlicenseNot gradedqualityCmaintenanceEnables Active Directory enumeration and abuse operations through the bloodyAD tool. Supports LDAP queries, user/group management, DNS operations, and security testing directly from AI assistants.16MIT
- AlicenseNot gradedqualityFmaintenanceEnables AI agents to perform autonomous penetration testing on any Linux distribution via SSH with persistent tmux sessions, supporting interactive tools like Metasploit, reverse shells, and complex multi-step security workflows.18MIT
- FlicenseNot gradedqualityDmaintenanceAutonomous penetration testing powered by a local LLM, automating tool chaining for recon, vulnerability scanning, exploit research, and reporting.1-