Skip to main content
Glama
bsahane

kali-mcp-server

by bsahane

Kali Ethical Hacking MCP Server

Python 3.12+ License: Apache 2.0

A personal, advanced Model Context Protocol (MCP) server for authorized penetration testing and ethical hacking. It lets an MCP client (Claude Desktop, Claude Code) drive the standard Kali/pentest toolchain — reconnaissance, scanning, web application testing, exploitation support, credential work, and reporting — with authorization scoping, exploitation gating, and audit logging enforced on every action.

Built on the Red Hat template-mcp-server (FastMCP, tools-first architecture).

⚠️ Authorized use only

This server operates real offensive security tooling. Use it only against systems you own or have explicit, written authorization to test. Unauthorized scanning, exploitation, or credential attacks are illegal in most jurisdictions. The server enforces an engagement scope and refuses to act on targets you have not declared as authorized — keep REQUIRE_SCOPE=True. You are responsible for operating within the law and your rules of engagement.

Related MCP server: Kali MCP Server

How it works

Claude (MCP client)  ──►  Kali MCP Server  ──►  ┌─ host binary (nmap on PATH)        [mode: host]
                          (scope + audit)        └─ Kali container (docker exec ...)  [mode: docker]
  • Hybrid execution — each tool runs on a host binary if present, otherwise inside a persistent kalilinux/kali-rolling container the server starts on demand (missing tools are apt-installed into it automatically). Controlled by EXECUTION_MODE (auto | host | docker).

  • Scope enforcement — every active tool validates its target against your declared engagement scope (ScopeManager). Out-of-scope targets are refused.

  • Exploitation gating — active exploitation / brute-force tools (sqlmap, hydra) additionally require ALLOW_EXPLOITATION=True.

  • Audit logging — every invocation is appended to ~/.kali-mcp/audit.jsonl.

  • Engagement session — scans and findings are recorded and can be rendered into a report.

Tool catalog (24 tools)

Category

Tools

Recon & Scanning

nmap_scan, masscan_scan, host_discovery, dns_recon, subdomain_enum, whois_lookup

OSINT (passive)

username_osint (Sherlock), email_harvest (theHarvester)

Web App Testing

nikto_scan, dir_bruteforce, vhost_enum, whatweb_fingerprint, nuclei_scan, sqlmap_test†, wpscan_scan

Exploitation & Creds

searchsploit_lookup, hash_identify, hash_crack, hydra_bruteforce

Reporting & Workflow

scope_manage, list_tools_status, record_finding, session_summary, generate_report

† Gated behind ALLOW_EXPLOITATION=True and an in-scope target.

Requirements

  • Python 3.12+ and uv

  • Docker (for the Kali fallback). No security tools need to be installed on the host — they run in the Kali container. If you do have tools on your PATH, they're used directly.

Install

uv venv --python 3.12
source .venv/bin/activate
uv pip install -e ".[dev]"
cp .env.example .env   # then review the settings

Run

stdio (local — for Claude Desktop / Claude Code):

MCP_TRANSPORT_PROTOCOL=stdio kali-mcp-server

HTTP (shared / remote):

MCP_TRANSPORT_PROTOCOL=http MCP_PORT=5001 kali-mcp-server

Connect it to Claude

Claude Code:

claude mcp add kali-ethical -- /ABSOLUTE/PATH/ethical-mcp/.venv/bin/kali-mcp-server

Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "kali-ethical": {
      "command": "/ABSOLUTE/PATH/ethical-mcp/.venv/bin/kali-mcp-server",
      "env": { "MCP_TRANSPORT_PROTOCOL": "stdio", "EXECUTION_MODE": "auto" }
    }
  }
}

Typical workflow

  1. Authorize the engagement — record who approved it and the reference:

    scope_manage(action="set_engagement", client="Acme", authorized_by="J. Smith", ticket="PT-42")
  2. Declare scope — only targets you're permitted to test:

    scope_manage(action="add", targets=["10.0.0.0/24", "app.acme.com"])
  3. Check toolinglist_tools_status() shows host vs Docker availability.

  4. Recon & scannmap_scan("app.acme.com", "service"), subdomain_enum("acme.com"), …

  5. Web testingnikto_scan(...), nuclei_scan(...), dir_bruteforce(...).

  6. Exploitation (only with ALLOW_EXPLOITATION=True) — sqlmap_test(...), hydra_bruteforce(...).

  7. Record & reportrecord_finding(...) then generate_report("markdown").

Anything against a target not in scope is refused; gated tools are refused unless explicitly enabled.

Configuration

Key settings (see .env.example for all):

Variable

Default

Purpose

MCP_TRANSPORT_PROTOCOL

stdio

stdio, http, streamable-http, sse

EXECUTION_MODE

auto

auto | host | docker

KALI_DOCKER_IMAGE

kalilinux/kali-rolling

Fallback toolbox image

REQUIRE_SCOPE

True

Refuse out-of-scope targets

ALLOW_EXPLOITATION

False

Enable active exploitation/brute-force tools

TOOL_TIMEOUT_SECONDS

300

Per-run timeout

DATA_DIR

~/.kali-mcp

Scope, audit log, outputs, wordlists

Safety model

  • No target contact without scope. Recon/scan/exploit tools call the scope gate first.

  • Two-key exploitation. sqlmap/hydra need ALLOW_EXPLOITATION=True and an in-scope target.

  • Rate limits. masscan packet rate is capped to avoid turning a scan into a flood.

  • Full audit trail. ~/.kali-mcp/audit.jsonl records every command (incl. blocked attempts).

  • No DoS / mass-internet scanning helpers. The toolset is engagement-scoped by design.

Development

make test     # run the test suite
make lint     # ruff + formatting checks
pytest tests/ # scope, executor, gating, reporting tests

License

Apache-2.0. This tool is provided for authorized security testing and education only.

Available Tools

24 tools
dir_bruteforceA

Brute-force web content paths/directories (gobuster dir mode).

TOOL_NAME=dir_bruteforce DISPLAY_NAME=Directory/Content Brute-Force USECASE=Discover hidden directories and files on an in-scope web app using a wordlist INSTRUCTIONS=1. Ensure host is in scope, 2. Provide the base URL, 3. Optionally set wordlist/extensions, 4. Call INPUT_DESCRIPTION=target (base URL, e.g. http://host); wordlist (path, default common.txt); extensions (e.g. "php,txt,html") OUTPUT_DESCRIPTION=Dict with status, discovered paths in output, command and mode EXAMPLES=dir_bruteforce("http://10.0.0.5", extensions="php,html") PREREQUISITES=Host authorized and in scope; wordlist available (mount into /wordlists for the container) RELATED_TOOLS=vhost_enum, nikto_scan

Args: target: Base URL to enumerate (must be in scope). wordlist: Path to a wordlist (defaults to a common list). extensions: Comma-separated file extensions to append.

Returns: Structured result dict.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
wordlistNo
extensionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses the tool's underlying mode (gobuster dir), output structure (dict with status, discovered paths, command, mode), and operational prerequisites (wordlist mounted into /wordlists, host authorized). It does not mention potential aggressive network behavior or rate limits, but the core behavior is clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections (USECASE, INSTRUCTIONS, INPUT_DESCRIPTION, etc.) and front-loaded with a clear summary. There is slight redundancy between sections (e.g., INPUT_DESCRIPTION vs Args), but each section adds value like examples and prerequisites.

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

Completeness5/5

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

Given the tool's complexity (brute-forcing with wordlists and extensions), the description covers prerequisites, input parameters, output structure, an example invocation, and related tools. The presence of an output schema also reduces the need to explain return values, but the description already does.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully explains each parameter: target (base URL, must be in scope), wordlist (path, default common.txt), extensions (comma-separated). This adds significant meaning beyond the bare type information in the input schema.

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

Purpose5/5

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

The description clearly states a specific action: 'Brute-force web content paths/directories (gobuster dir mode)' and its use case 'Discover hidden directories and files on an in-scope web app using a wordlist.' This distinguishes it from sibling tools like vhost_enum or nikto_scan.

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

Usage Guidelines4/5

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

The description provides clear usage context: 'Ensure host is in scope, Provide the base URL, Optionally set wordlist/extensions, Call.' It also lists prerequisites and related tools. However, it does not explicitly compare when to use this tool versus alternatives beyond naming them.

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

dns_reconA

Enumerate DNS records for an in-scope domain (dnsrecon).

TOOL_NAME=dns_recon DISPLAY_NAME=DNS Reconnaissance USECASE=Enumerate DNS records (A, MX, NS, SOA, SRV, zone transfer attempts) for a domain INSTRUCTIONS=1. Ensure domain is in scope, 2. Choose scan_type, 3. Call INPUT_DESCRIPTION=domain (e.g. example.com); scan_type (std|axfr|brt|srv) OUTPUT_DESCRIPTION=Dict with status, raw dnsrecon output, command and mode EXAMPLES=dns_recon("example.com", "std") PREREQUISITES=Domain authorized and in scope RELATED_TOOLS=subdomain_enum, whois_lookup

Args: domain: Domain to enumerate (must be in scope). scan_type: dnsrecon scan type (std, axfr, brt, srv).

Returns: Structured result dict.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
scan_typeNostd

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavior. It mentions zone transfer attempts, scan type options, and the requirement for authorization. However, it does not explicitly state whether the tool is read-only, potential network impact, or error behavior, leaving some gaps in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with metadata fields and a docstring, providing all essential info. Some redundancy exists between USECASE and the main description, but it is well-organized and front-loaded.

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

Completeness4/5

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

Given the tool's moderate complexity (2 params, output schema exists), the description covers scope, parameters, return values, prerequisites, and related tools. It lacks details on edge cases or when to choose this over related tools, but is otherwise complete.

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

Parameters5/5

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

Schema coverage is 0%, but the description fully compensates by explaining both parameters: 'domain' must be in scope, and 'scan_type' lists valid values (std, axfr, brt, srv). The example invocation further clarifies parameter usage.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Enumerate DNS records for an in-scope domain (dnsrecon)' and expands on the record types. It is distinct from sibling tools like subdomain_enum and whois_lookup, with a specific verb and resource.

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

Usage Guidelines4/5

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

The description provides clear usage context, including prerequisites ('domain authorized and in scope') and steps ('Choose scan_type, Call'). It lists related tools for context but does not explicitly state when to use this tool over alternatives, so it falls short of a 5.

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

email_harvestA

Harvest emails, subdomains and hosts for a domain (theHarvester, passive).

TOOL_NAME=email_harvest DISPLAY_NAME=Email/Host Harvester (theHarvester) USECASE=Collect public emails, subdomains and hosts for an in-scope domain from search engines and CT logs INSTRUCTIONS=1. Ensure the domain is in the engagement scope, 2. Optionally pick sources/limit, 3. Call INPUT_DESCRIPTION=domain (apex domain); sources (comma-separated theHarvester -b sources); limit (max results) OUTPUT_DESCRIPTION=Dict with status, parsed 'emails' list, raw output, command and mode EXAMPLES=email_harvest("example.com") PREREQUISITES=Domain authorized and in scope RELATED_TOOLS=subdomain_enum, dns_recon, username_osint

Args: domain: Apex domain to harvest (must be in scope). sources: Comma-separated theHarvester data sources (free/no-key sources by default). limit: Maximum number of results to request.

Returns: Structured result dict including a parsed emails list.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
domainYes
sourcesNoduckduckgo,crtsh,hackertarget,otx,rapiddns

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'passive' and 'free/no-key sources', which hints at non-intrusive behavior, but does not explicitly state that the tool is read-only or what side effects (if any) it might have. It also does not mention rate limits or permission requirements beyond scope authorization, leaving some transparency gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a concise first line followed by key-value metadata and an Args section. There is some redundancy between INPUT_DESCRIPTION and Args, and the USECASE largely repeats the first line, but overall it is efficient and front-loaded. Slightly longer than necessary due to redundancy, but still a solid 4.

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

Completeness5/5

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

The description covers all essential aspects: purpose, use case, instructions, prerequisites, input parameters, output structure (Structured result dict including parsed emails), examples, and related tools. Given the tool's moderate complexity (3 parameters, 1 required), this is comprehensive and provides enough context for an AI agent to know when and how to invoke it.

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

Parameters5/5

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

The input schema has 0% description coverage, but the description's Args section fully compensates by explaining each parameter: domain (apex domain, must be in scope), sources (comma-separated theHarvester sources, default free/no-key), and limit (max results). This exceeds what the schema provides and gives essential guidance for using the tool correctly.

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

Purpose5/5

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

The first line clearly states the verb (harvest), resource (emails, subdomains, hosts), and method (theHarvester, passive), making the purpose immediately obvious. The USECASE adds more detail about collecting from search engines and CT logs, which also distinguishes it from sibling tools like dns_recon or subdomain_enum by emphasizing email discovery.

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

Usage Guidelines4/5

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

The description provides clear usage context: 'Collect public emails, subdomains and hosts for an in-scope domain', along with instructions and prerequisites (domain must be in scope). It also mentions related tools (subdomain_enum, dns_recon) but does not explicitly say when NOT to use this tool versus those alternatives, so it falls short of a perfect 5.

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

generate_reportA

Generate an engagement report from recorded scans and findings.

TOOL_NAME=generate_report DISPLAY_NAME=Engagement Report Generator USECASE=Produce a shareable markdown or JSON report of scope, activity and findings INSTRUCTIONS=1. Record findings during testing, 2. Call with report_format markdown|json INPUT_DESCRIPTION=report_format (markdown|json) OUTPUT_DESCRIPTION=Dict with status, the report content, and the path it was written to under the output directory EXAMPLES=generate_report("markdown") PREREQUISITES=None (more useful after findings are recorded) RELATED_TOOLS=record_finding, session_summary

Args: report_format: markdown or json.

Returns: Structured result dict with the report content and file path.

ParametersJSON Schema
NameRequiredDescriptionDefault
report_formatNomarkdown

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the tool writes a report to an output directory and returns a dict with status, content, and path, which informs the agent of side effects. It does not mention overwrite behavior or error handling, but for a report generator this is reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core sentence, but the embedded structured metadata (TOOL_NAME, DISPLAY_NAME, USECASE, etc.) includes some redundancy (e.g., TOOL_NAME duplicates the tool name). It is not excessively long, but the repetition prevents a 5.

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

Completeness5/5

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

This is a low-complexity tool with one optional parameter and an output schema. The description covers purpose, usage, prerequisites, related tools, input format, output format, and an example, making it highly complete for selecting and invoking the tool.

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

Parameters5/5

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

The input schema has one parameter with no description (0% coverage). The description compensates by explicitly documenting accepted values: 'report_format: markdown or json.' It also provides an example call, making parameter usage unambiguous.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'Generate an engagement report from recorded scans and findings.' The USECASE further clarifies that it produces a shareable markdown or JSON report, distinguishing it from sibling tools like record_finding and session_summary.

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

Usage Guidelines4/5

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

The description provides clear usage context: it instructs to record findings before calling, and notes that it is 'more useful after findings are recorded.' It lists related tools (record_finding, session_summary) but does not explicitly state when not to use it or provide explicit alternatives, so a 4.

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

hash_crackA

Crack supplied hashes offline with a wordlist (John the Ripper).

TOOL_NAME=hash_crack DISPLAY_NAME=Offline Hash Cracker USECASE=Recover plaintext for hashes you already possess, using a wordlist, fully offline INSTRUCTIONS=1. Paste one or more hashes (one per line), 2. Optionally set wordlist and john format, 3. Call INPUT_DESCRIPTION=hashes (newline-separated hash strings); wordlist (path, default rockyou); hash_format (john --format value, e.g. "raw-md5"); name (label for the temp file) OUTPUT_DESCRIPTION=Dict with status, cracked credentials (john --show), command and mode EXAMPLES=hash_crack("5f4dcc3b5aa765d61d8327deb882cf99", hash_format="raw-md5") PREREQUISITES=None — operates only on hashes you supply; no target contact RELATED_TOOLS=hash_identify

Args: hashes: Newline-separated hash strings to crack. wordlist: Wordlist path (defaults to rockyou in the container). hash_format: Optional john --format value. name: Base label for the temporary hash file written under output_dir.

Returns: Structured result dict. Not network-gated (offline), but writes the hashes to a file under the engagement output directory.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNohashes
hashesYes
wordlistNo
hash_formatNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It explicitly discloses the tool is offline ('Not network-gated'), writes hashes to a temporary file under the output directory, and returns a structured dict with status, cracked credentials, command, and mode. The default wordlist (rockyou) and use of John the Ripper are also stated, providing solid behavioral expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with headers (USECASE, INSTRUCTIONS, INPUT_DESCRIPTION, etc.) and an Args/Returns block. It has some redundancy between the two parameter sections, but each part conveys useful information and the overall organization aids scanning.

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

Completeness4/5

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

Given the lack of schema descriptions and annotations, the description compensates well: it explains inputs, output, example, prerequisites, related tool, offline behavior, and file-writing side effect. It could provide more detail on the result dict structure, but it enumerates the key fields and the output schema is indicated as available. This is robust for a 4-parameter tool.

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

Parameters5/5

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

Schema descriptions are absent (0% coverage), so the description's parameter explanations are essential. The INPUT_DESCRIPTION and Args block define each parameter: hashes (newline-separated), wordlist (path with default), hash_format (--format value), and name (temp file label). The example further illustrates usage with a real hash and format, making parameter semantics clear.

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

Purpose5/5

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

The description opens with a specific action: 'Crack supplied hashes offline with a wordlist (John the Ripper).' It clearly identifies the resource (hashes) and method (offline wordlist cracking), distinguishing it from sibling tools like hash_identify (which identifies hash types) and hydra_bruteforce (online attacks). The USECASE section reinforces this by specifying 'hashes you already possess'.

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

Usage Guidelines4/5

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

The USECASE states 'Recover plaintext for hashes you already possess' and PREREQUISITES adds 'operates only on hashes you supply; no target contact,' clarifying the offline, owned-data context. RELATED_TOOLS points to hash_identify, suggesting a potential preceding step, though it does not explicitly say when to use hash_identify instead; the context is generally sufficient.

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

hash_identifyA

Identify the likely algorithm(s) of a hash string (hashid).

TOOL_NAME=hash_identify DISPLAY_NAME=Hash Type Identifier USECASE=Determine which hashing algorithm produced a given hash before cracking INSTRUCTIONS=1. Provide the hash string, 2. Call INPUT_DESCRIPTION=hash_value (the hash to identify) OUTPUT_DESCRIPTION=Dict with status, candidate hash types, command and mode EXAMPLES=hash_identify("5f4dcc3b5aa765d61d8327deb882cf99") PREREQUISITES=None — offline, no target contact RELATED_TOOLS=hash_crack

Args: hash_value: The hash string to identify.

Returns: Structured result dict. Not scope-gated (offline).

ParametersJSON Schema
NameRequiredDescriptionDefault
hash_valueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses offline operation and 'no target contact', and the phrase 'likely algorithm(s)' conveys probabilistic/multiple-candidate behavior. However, it does not address error handling or behavior with invalid hashes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with labeled sections (USECASE, INSTRUCTIONS, PREREQUISITES) and front-loaded with the primary purpose. Minor redundancy exists (INPUT_DESCRIPTION repeats Args, OUTPUT_DESCRIPTION repeats Returns), but overall it is scannable and not overlong.

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

Completeness5/5

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

For a simple single-parameter tool with an output schema, the description covers purpose, usage context, example, prerequisites, related tool, and parameter semantics. It is complete enough for an agent to select and invoke the tool correctly.

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

Parameters5/5

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

Schema coverage is 0%, but the description fully compensates with 'Args: hash_value: The hash string to identify' and a matching INPUT_DESCRIPTION. This gives the agent complete understanding of the parameter.

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

Purpose5/5

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

The description opens with 'Identify the likely algorithm(s) of a hash string (hashid)', which is a specific verb and resource. It clearly distinguishes this from sibling tools like hash_crack by focusing on identification rather than cracking.

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

Usage Guidelines5/5

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

The USECASE field states 'Determine which hashing algorithm produced a given hash before cracking' and PREREQUISITES notes 'None — offline, no target contact', providing explicit context for when to use. RELATED_TOOLS lists hash_crack as an alternative, making the workflow clear.

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

host_discoveryA

Ping-sweep a host or range to find live hosts (nmap -sn).

TOOL_NAME=host_discovery DISPLAY_NAME=Live Host Discovery USECASE=Enumerate which hosts in an in-scope range are up, without port scanning INSTRUCTIONS=1. Ensure target/range is in scope, 2. Call with a host or CIDR INPUT_DESCRIPTION=target (host/IP/CIDR) OUTPUT_DESCRIPTION=Dict with status, raw output listing live hosts, command and mode EXAMPLES=host_discovery("10.0.0.0/24") PREREQUISITES=Target authorized and in scope RELATED_TOOLS=nmap_scan, masscan_scan

Args: target: Host, IP or CIDR to sweep (must be in scope).

Returns: Structured result dict.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden. It discloses the method (nmap -sn, a ping sweep), the return type (structured dict with status, raw output, command, and mode), and prerequisites (target authorized and in scope). It does not elaborate on network side effects or permission requirements beyond scope, but for a read-only ping sweep, the disclosure is adequate and adds meaningful detail beyond the tool's name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description opens with a concise one-line summary, then provides structured fields (TOOL_NAME, USECASE, INSTRUCTIONS, etc.) for easy parsing. Some redundancy exists (e.g., TOOL_NAME repeats the tool name, DISPLAY_NAME is redundant), and the block contains repeated scope reminders, but the overall structure is organized and front-loaded. It is verbose but not wasteful enough to earn a 3.

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

Completeness5/5

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

For a one-parameter tool with an output schema, the description covers all necessary context: input description, output description, an example (host_discovery("10.0.0.0/24")), prerequisites, and related tools. It also outlines the structured result fields. This is complete for the tool's complexity.

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

Parameters5/5

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

The input schema has zero description coverage, but the description fully compensates: 'target: Host, IP or CIDR to sweep (must be in scope).' It clarifies the type (host/IP/CIDR) and the constraint (in-scope). This is exactly what an agent needs to correctly populate the parameter.

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

Purpose5/5

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

The description clearly states the tool's function: 'Ping-sweep a host or range to find live hosts (nmap -sn).' It uses a specific verb ('sweep') and resource ('host or range'), and mentions the scope of the operation ('without port scanning'), effectively differentiating it from sibling tools like nmap_scan and masscan_scan.

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

Usage Guidelines4/5

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

The USECASE field provides clear context: 'Enumerate which hosts in an in-scope range are up, without port scanning,' implying when to use it. RELATED_TOOLS lists nmap_scan and masscan_scan, but without explicit comparative guidance. There is no direct 'when not to use' statement, but the 'without port scanning' phrase suggests a boundary. This is strong but not fully explicit.

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

hydra_bruteforceA

Brute-force a network login service (hydra). GATED — active exploitation.

TOOL_NAME=hydra_bruteforce DISPLAY_NAME=Hydra Login Brute-Forcer USECASE=Test credential strength against an in-scope network service (ssh, ftp, http-*, etc.) INSTRUCTIONS=1. Enable ALLOW_EXPLOITATION, 2. Ensure target in scope, 3. Provide service + username(s) + password(s)/list, 4. Call INPUT_DESCRIPTION=target (host/IP); service (e.g. ssh, ftp, http-post-form); username OR userlist path; password OR passwordlist path; port (optional) OUTPUT_DESCRIPTION=Dict with status, any valid credentials found, command and mode; blocked if exploitation disabled EXAMPLES=hydra_bruteforce("10.0.0.5", "ssh", username="admin", passwordlist="/wordlists/pw.txt") PREREQUISITES=ALLOW_EXPLOITATION=true AND target authorized and in scope RELATED_TOOLS=nmap_scan, hash_crack

Args: target: Host/IP running the service (must be in scope). service: hydra service module name. username: Single username to try. userlist: Path to a username wordlist (alternative to username). password: Single password to try. passwordlist: Path to a password wordlist (alternative to password). port: Optional service port.

Returns: Structured result dict (blocked if exploitation is disabled).

ParametersJSON Schema
NameRequiredDescriptionDefault
portNo
targetYes
serviceYes
passwordNo
userlistNo
usernameNo
passwordlistNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does disclose key behavior: "GATED — active exploitation", prerequisite ALLOW_EXPLOITATION, and that it returns 'blocked' if exploitation is disabled. It does not mention potential side effects like account lockouts, but the 'active exploitation' framing provides sufficient warning.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but well-structured with labeled sections (USECASE, INSTRUCTIONS, INPUT_DESCRIPTION, etc.). It front-loads the core purpose and provides examples, though some redundancy exists between INSTRUCTIONS and PREREQUISITES.

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

Completeness5/5

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

For a high-risk exploitation tool, the description is comprehensive: it covers purpose, usage prerequisites, input semantics, output format (structured dict with status, credentials, command, mode), and an example. The presence of an output schema also supports completeness, and the description explicitly states the blocked behavior.

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

Parameters5/5

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

Schema coverage is 0%, but the Args section thoroughly defines each parameter: target with scope note, service as hydra module, username/userlist alternatives, password/passwordlist alternatives, and optional port. This fully compensates for the minimal schema and adds practical semantics.

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

Purpose5/5

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

The description states a specific verb+resource: "Brute-force a network login service (hydra)" and includes a USECASE that distinguishes it from siblings like dir_bruteforce or hash_crack. The examples and related tools further clarify its unique role.

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

Usage Guidelines5/5

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

The INSTRUCTIONS and PREREQUISITES sections explicitly state when to use the tool: enable ALLOW_EXPLOITATION, ensure target is in scope, and provide service, username(s), password(s)/list. It also references RELATED_TOOLS (nmap_scan, hash_crack), giving context for alternatives.

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

list_tools_statusA

Report which security tools are available on the host and via Kali/Docker.

TOOL_NAME=list_tools_status DISPLAY_NAME=Tool Availability Status USECASE=See, per tool, whether it is installed on the host and whether the Kali container backend is available INSTRUCTIONS=1. Call with no arguments INPUT_DESCRIPTION=None OUTPUT_DESCRIPTION=Dict with per-tool availability grouped by category, plus backend status and current execution mode EXAMPLES=list_tools_status() PREREQUISITES=None RELATED_TOOLS=scope_manage

Returns: Structured result dict describing tool and backend availability.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so description carries full burden. It discloses that it returns a dict with per-tool availability grouped by category, backend status, and execution mode, and indicates no arguments are needed. It does not explicitly state it is read-only, but the nature of a status report implies it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is verbose and repetitive, with the first sentence restating the USECASE and OUTPUT_DESCRIPTION duplicating the Returns section. While structured, it contains redundancy that could be trimmed.

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

Completeness5/5

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

Despite being a simple tool, the description covers use case, instructions, input/output, example, prerequisites, and related tools. It fully specifies behavior and return value, so it's complete.

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

Parameters4/5

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

Tool has 0 parameters, so baseline is 4. Description explicitly states 'Call with no arguments' and INPUT_DESCRIPTION=None, fully clarifying parameter semantics.

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

Purpose5/5

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

The description uses a specific verb 'Report' and resource 'security tools' with scope 'on the host and via Kali/Docker'. It clearly distinguishes from sibling tools that perform scans/recon, as this is a status/availability reporting tool.

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

Usage Guidelines4/5

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

The USECASE field explicitly states 'See, per tool, whether it is installed on the host and whether the Kali container backend is available', providing clear context. It also lists RELATED_TOOLS=scope_manage. However, it does not explicitly state when not to use it or alternatives, so score 4.

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

masscan_scanA

Run a fast masscan port sweep against an authorized target.

TOOL_NAME=masscan_scan DISPLAY_NAME=Masscan Port Sweeper USECASE=Rapidly identify open TCP ports across an in-scope host or range INSTRUCTIONS=1. Ensure target/range is in scope, 2. Set ports and a sane rate, 3. Call INPUT_DESCRIPTION=target (host/IP/CIDR); ports (e.g. "1-65535" or "80,443"); rate (packets/sec, capped at 5000) OUTPUT_DESCRIPTION=Dict with status, raw stdout/stderr, command and execution mode EXAMPLES=masscan_scan("10.0.0.0/24", ports="1-1000", rate=1000) PREREQUISITES=Target authorized and in scope; masscan needs root (runs as root in Kali container) RELATED_TOOLS=nmap_scan, host_discovery

Args: target: Host, IP or CIDR to scan (must be in scope). ports: Port specification. rate: Packets per second; capped at 5000 to avoid flooding.

Returns: Structured result dict.

ParametersJSON Schema
NameRequiredDescriptionDefault
rateNo
portsNo1-1000
targetYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that masscan needs root, runs as root in a Kali container, caps rate at 5000 to avoid flooding, and summarizes output structure via OUTPUT_DESCRIPTION. It could further detail potential side effects, but what is provided is transparent about execution requirements and output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a one-line summary followed by organized fields (USECASE, INSTRUCTIONS, PREREQUISITES, etc.). There is minor redundancy between the first sentence and USECASE, but overall it is efficient and each section adds value.

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

Completeness4/5

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

The description covers purpose, usage, prerequisites, input descriptions, output format, examples, and related tools. For a network scanning tool, this is quite complete. It lacks some edge-case behaviors (timeouts, error handling), but the essentials are well covered.

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

Parameters5/5

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

The input schema has zero description coverage, so the description must compensate. The Args section thoroughly explains each parameter: target as host/IP/CIDR, ports with examples (e.g., '1-65535' or '80,443'), and rate with a cap and purpose. This adds significant meaning beyond the raw schema.

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

Purpose5/5

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

The description clearly states 'Run a fast masscan port sweep against an authorized target' and USECASE 'Rapidly identify open TCP ports across an in-scope host or range', which fully captures the tool's function. It is also distinct from siblings like nmap_scan (detailed scan) and host_discovery due to the 'fast' and 'port sweep' emphasis.

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

Usage Guidelines3/5

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

The description provides prerequisites (target authorization, root requirement) and lists related tools (nmap_scan, host_discovery), but does not explicitly say when to use this tool versus alternatives. The USECASE implies a particular scenario, but exclusions or direct comparisons are missing.

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

nikto_scanA

Scan a web server for known vulnerabilities and misconfigurations (nikto).

TOOL_NAME=nikto_scan DISPLAY_NAME=Nikto Web Server Scanner USECASE=Identify dangerous files, outdated servers, and misconfigurations on an in-scope web host INSTRUCTIONS=1. Ensure host is in scope, 2. Provide target (host or URL) and optional port, 3. Call INPUT_DESCRIPTION=target (host or URL); port (optional int, default 80/from URL) OUTPUT_DESCRIPTION=Dict with status, raw nikto findings, command and mode EXAMPLES=nikto_scan("http://testphp.vulnweb.com"), nikto_scan("10.0.0.5", port=8080) PREREQUISITES=Host authorized and in scope RELATED_TOOLS=whatweb_fingerprint, nuclei_scan, dir_bruteforce

Args: target: Web host or URL (must be in scope). port: Optional explicit port.

Returns: Structured result dict.

ParametersJSON Schema
NameRequiredDescriptionDefault
portNo
targetYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of disclosure. It states that the tool performs a scan (active network behavior) and requires scope/authorization. It also mentions returning 'raw nikto findings' and a 'command and mode' in the output, which hints at execution details. However, it does not disclose potential side effects such as network traffic volume, duration, or alerting, which is important for a scanning tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with distinct metadata sections (USECASE, INSTRUCTIONS, INPUT_DESCRIPTION, OUTPUT_DESCRIPTION, EXAMPLES, PREREQUISITES, RELATED_TOOLS). It is somewhat lengthy but every section provides useful context. The opening line is concise and action-oriented, and the Args/Returns summary at the end is clear.

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

Completeness4/5

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

The description covers prerequisites, instructions, examples, related tools, input semantics, and output structure. It gives sufficient context for an agent to understand what the tool does and how to use it. It does not exhaustively describe all possible return values, but the presence of an output schema (even if not detailed in the prompt) and explicit OUTPUT_DESCRIPTION mitigate that gap.

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

Parameters4/5

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

The input schema has 0% description coverage, so the description must compensate. It does so by explaining target is a 'Web host or URL (must be in scope)' and port as 'Optional explicit port' with the INPUT_DESCRIPTION adding the default behavior ('default 80/from URL'). This adds valuable meaning beyond the bare schema types.

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

Purpose5/5

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

The description starts with a specific verb+resource: 'Scan a web server for known vulnerabilities and misconfigurations (nikto).' This clearly distinguishes it from sibling tools like whatweb_fingerprint (fingerprinting) or dir_bruteforce (directory brute force), and the USECASE reinforces the purpose.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool via USECASE ('Identify dangerous files, outdated servers, and misconfigurations on an in-scope web host'), INSTRUCTIONS (ensure scope, provide target), and PREREQUISITES (host authorized and in scope). It lists related tools but does not explicitly differentiate when to choose this over alternatives, so it stops short of a perfect score.

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

nmap_scanA

Run an nmap scan against an authorized target.

TOOL_NAME=nmap_scan DISPLAY_NAME=Nmap Network Scanner USECASE=Discover open ports, services, versions, OS and run NSE vuln scripts on an in-scope host INSTRUCTIONS=1. Ensure the target is in the engagement scope (scope_manage), 2. Pick a profile, 3. Optionally set ports/extra_args, 4. Call INPUT_DESCRIPTION=target (host/IP/CIDR); profile (quick|full|service|os|aggressive|vuln|top-ports); ports (e.g. "22,80,443" or "1-1000"); extra_args (list of raw nmap flags) OUTPUT_DESCRIPTION=Dict with status, parsed open_ports list, raw stdout/stderr, command and execution mode EXAMPLES=nmap_scan("scanme.nmap.org", "quick"), nmap_scan("10.0.0.5", "service", ports="1-1024") PREREQUISITES=Target authorized and added to scope; nmap available on host or via Kali container RELATED_TOOLS=host_discovery, masscan_scan, nikto_scan

Args: target: Host, IP or CIDR to scan (must be in the authorized scope). profile: One of the predefined nmap profiles. ports: Optional explicit port specification (overrides profile ports). extra_args: Optional list of additional raw nmap arguments.

Returns: Structured result dict including parsed open_ports.

ParametersJSON Schema
NameRequiredDescriptionDefault
portsNo
targetYes
profileNoquick
extra_argsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description must disclose behavioral traits. It mentions the need for authorization and scope, and describes the output structure. However, it does not warn that NSE vuln scripts may be intrusive or that scans can be detected, nor does it mention rate limits or potential side effects. Some transparency is present, but significant details are omitted.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a concise opening sentence followed by labeled sections (USECASE, INSTRUCTIONS, INPUT_DESCRIPTION, etc.). It is front-loaded with the core purpose and every section provides actionable information without fluff. The format is easy to parse and understand.

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

Completeness5/5

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

For a tool with 4 parameters, no annotations, but an output schema, the description is highly complete. It covers purpose, usage instructions, parameter semantics, prerequisites, examples, output format, and related tools. Nothing critical is missing for an agent to select and invoke the tool correctly.

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

Parameters5/5

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

The input schema has no descriptions (0% coverage), so the description fully compensates. It explains each parameter in detail: target as host/IP/CIDR with scope requirement, profile listing allowed values (quick|full|service|os|aggressive|vuln|top-ports), ports with syntax and override behavior, and extra_args as raw nmap flags. This adds substantial meaning beyond the schema.

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

Purpose4/5

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

The description clearly states 'Run an nmap scan against an authorized target' and the USECASE adds 'Discover open ports, services, versions, OS and run NSE vuln scripts'. This is a specific verb+resource with a clear purpose, but it does not explicitly differentiate from sibling tools like masscan_scan or host_discovery, so it falls short of a 5.

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

Usage Guidelines4/5

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

The description provides step-by-step instructions (INSTRUCTIONS), prerequisites (ensure target in scope, nmap available), and examples. It gives clear context on how and when to use the tool, but it does not explicitly state when to use this tool instead of alternatives or when not to use it, so no exclusions are given.

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

nuclei_scanA

Run template-based vulnerability checks against an in-scope target (nuclei).

TOOL_NAME=nuclei_scan DISPLAY_NAME=Nuclei Vulnerability Scanner USECASE=Detect known CVEs, misconfigurations and exposures using nuclei templates INSTRUCTIONS=1. Ensure host is in scope, 2. Provide URL, 3. Optionally filter by severity/tags, 4. Call INPUT_DESCRIPTION=target (URL); severity (e.g. "critical,high"); tags (e.g. "cve,exposure") OUTPUT_DESCRIPTION=Dict with status, matched findings in output, command and mode EXAMPLES=nuclei_scan("https://example.com", severity="critical,high") PREREQUISITES=Host authorized and in scope; nuclei templates present (auto-updated in container) RELATED_TOOLS=nikto_scan, whatweb_fingerprint

Args: target: URL to scan (must be in scope). severity: Optional comma-separated severity filter. tags: Optional comma-separated template tag filter.

Returns: Structured result dict.

ParametersJSON Schema
NameRequiredDescriptionDefault
tagsNo
targetYes
severityNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses that it executes vulnerability scans, returns a structured dict with status, findings, command and mode, and requires templates to be present. It also states prerequisites about host authorization. However, it does not mention potential side effects like active network traffic, but 'vulnerability check' implies that. With no annotations, it carries the burden and does so reasonably.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description contains redundant metadata sections that repeat the same information (INPUT_DESCRIPTION vs Args, OUTPUT_DESCRIPTION vs Returns, USECASE vs first sentence). While the core one-liner is front-loaded and effective, the overall block is longer than necessary.

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

Completeness5/5

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

The description covers all essential aspects: purpose, usage instructions, prerequisites, parameter descriptions, output format, and an example. Given the presence of an output schema and the scanner's complexity, it is fully complete.

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

Parameters5/5

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

The schema lacks descriptions, but the description provides complete parameter semantics: target is a URL that must be in scope, severity and tags are optional comma-separated filters, with an example. This fully compensates for the 0% schema coverage.

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

Purpose5/5

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

The description clearly states 'Run template-based vulnerability checks against an in-scope target (nuclei)' and identifies the use case as detecting known CVEs, misconfigurations and exposures. This distinguishes it from sibling scanners like nikto_scan and nmap_scan.

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

Usage Guidelines4/5

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

The description provides explicit usage instructions (ensure in scope, provide URL, optionally filter by severity/tags) and prerequisites (templates present). It lists related tools but does not explicitly contrast when to use this vs alternatives, though the specific purpose implies when.

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

record_findingA

Record a security finding in the engagement session.

TOOL_NAME=record_finding DISPLAY_NAME=Record Finding USECASE=Capture a vulnerability/observation with severity and evidence for the final report INSTRUCTIONS=1. Provide title, severity, target, 2. Add description/evidence/recommendation, 3. Call INPUT_DESCRIPTION=title; severity (info|low|medium|high|critical); target; description; evidence; recommendation; references (list of URLs/CVEs) OUTPUT_DESCRIPTION=Dict with status and the stored finding EXAMPLES=record_finding("Anonymous FTP enabled","medium","10.0.0.5",evidence="230 Login successful") PREREQUISITES=None RELATED_TOOLS=generate_report, session_summary

Args: title: Short finding title. severity: One of info, low, medium, high, critical. target: Affected target. description: Detailed description. evidence: Supporting evidence/output. recommendation: Remediation guidance. references: List of references (CVEs, URLs).

Returns: Structured result dict with the stored finding.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
targetYes
evidenceNo
severityYes
referencesNo
descriptionNo
recommendationNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that a finding is stored, lists steps, and describes the return dict, but does not detail side effects such as whether the finding is appended, whether existing data is overwritten, or any error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with distinct sections (USECASE, INSTRUCTIONS, INPUT_DESCRIPTION, etc.) and an example. However, INPUT_DESCRIPTION and OUTPUT_DESCRIPTION are somewhat redundant with the Args and Returns sections.

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

Completeness4/5

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

The description covers purpose, usage, parameters, output, example, and prerequisites. Related tools are listed but not explained, and side effects are not fully specified, but the tool is simple and the provided information is sufficient.

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

Parameters5/5

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

The Args section provides meaningful descriptions for all 7 parameters, including allowed severity values and reference types (CVEs, URLs). Since the schema properties have no descriptions, this fully compensates for the 0% schema coverage.

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

Purpose5/5

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

The opening sentence clearly states the tool records a security finding in the engagement session. The USECASE further specifies it captures vulnerabilities/observations for the final report, distinguishing it from scan/enumeration siblings.

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

Usage Guidelines4/5

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

The USECASE provides clear context for when to use the tool (capturing vulnerabilities for the final report), and RELATED_TOOLS names related tools. However, it does not explicitly state when not to use it or how it differs from generate_report/session_summary beyond the implicit purpose.

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

scope_manageA

Manage the authorized engagement scope (the master authorization gate).

TOOL_NAME=scope_manage DISPLAY_NAME=Engagement Scope Manager USECASE=Declare which targets are authorized, set engagement metadata, and review current scope INSTRUCTIONS=1. Use action=set_engagement with client/authorized_by/ticket, 2. action=add with targets you are permitted to test, 3. action=show to review INPUT_DESCRIPTION=action (show|add|remove|set_engagement|clear); targets (list of IP/CIDR/host/domain for add/remove); client/authorized_by/ticket/start_date/end_date/notes for set_engagement OUTPUT_DESCRIPTION=Dict with status and the resulting scope snapshot EXAMPLES=scope_manage("set_engagement", client="Acme", authorized_by="J. Smith", ticket="PT-42"), scope_manage("add", targets=["10.0.0.0/24","app.acme.com"]) PREREQUISITES=Only add targets you have written authorization to test RELATED_TOOLS=nmap_scan, generate_report, session_summary

Args: action: One of show, add, remove, set_engagement, clear. targets: Targets to add/remove (IPs, CIDRs, hostnames, domains). client: Client/organization name (set_engagement). authorized_by: Person who authorized the test (set_engagement). ticket: Engagement/authorization reference (set_engagement). start_date: Engagement window start (set_engagement). end_date: Engagement window end (set_engagement). notes: Free-text notes (set_engagement).

Returns: Structured result dict with the resulting scope snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNo
actionNoshow
clientNo
ticketNo
targetsNo
end_dateNo
start_dateNo
authorized_byNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavior. It does explain the output format ('Dict with status and the resulting scope snapshot') and prerequisites ('Only add targets you have written authorization to test'). However, it does not disclose side effects of destructive actions like 'clear' or whether set_engagement overwrites existing scope. With no annotations, this gap is notable.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is structured with headings and is generally front-loaded with the primary purpose. However, it contains redundancy, e.g., OUTPUT_DESCRIPTION and Returns say nearly the same thing, and the TOOL_NAME/DISPLAY_NAME lines are unnecessary metadata. Overall, it's readable but could be trimmed.

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

Completeness5/5

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

For a tool with 8 params, no schema descriptions, and no annotations, this description is exceptionally complete. It includes use cases, instructions, examples, prerequisites, related tools, parameter semantics, and output format. The only minor gap is explicit alternative-selection guidance, but the RELATED_TOOLS line helps.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates by providing an Args section that explains each parameter: action, targets, client, authorized_by, ticket, start_date, end_date, notes. This adds meaning beyond the bare schema types and helps the agent invoke the tool correctly.

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

Purpose5/5

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

The first sentence 'Manage the authorized engagement scope (the master authorization gate)' clearly states the tool's verb and resource. The USECASE further details it: 'Declare which targets are authorized, set engagement metadata, and review current scope.' This distinguishes it from sibling scanning tools by positioning it as the authorization gatekeeper.

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

Usage Guidelines4/5

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

The description provides clear usage context through INSTRUCTIONS and PREREQUISITES, e.g., '1. Use action=set_engagement with client/authorized_by/ticket, 2. action=add with targets you are permitted to test, 3. action=show to review.' It also lists RELATED_TOOLS like nmap_scan, generate_report, session_summary. However, it doesn't explicitly say 'use this instead of X when...' or provide exclusion criteria, so it falls short of a 5.

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

searchsploit_lookupA

Search the offline Exploit-DB for known exploits (searchsploit).

TOOL_NAME=searchsploit_lookup DISPLAY_NAME=Exploit-DB Search USECASE=Find public exploits/PoCs matching a product, version or CVE, fully offline INSTRUCTIONS=1. Provide search terms (product/version/CVE), 2. Call INPUT_DESCRIPTION=query (e.g. "apache 2.4.49" or "CVE-2021-41773") OUTPUT_DESCRIPTION=Dict with status, matching exploit titles/paths, command and mode EXAMPLES=searchsploit_lookup("vsftpd 2.3.4"), searchsploit_lookup("CVE-2021-41773") PREREQUISITES=None — offline database lookup, no target contact RELATED_TOOLS=nuclei_scan, sqlmap_test

Args: query: Free-text search terms.

Returns: Structured result dict. Not scope-gated (offline, no target contact).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states the tool works offline, makes no target contact, and returns a structured result dict with status/titles/paths/command/mode. It also notes it is 'not scope-gated'. This is significant behavioral context, though it doesn't cover potential error conditions or database freshness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a brief opening summary, followed by labeled fields (USECASE, INSTRUCTIONS, INPUT_DESCRIPTION, etc.) that are efficient and informative. It is slightly verbose with repeated mentions of 'offline' and 'no target contact', but every section provides useful guidance.

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

Completeness5/5

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

For a single-parameter lookup tool, the description covers all key aspects: purpose, usage instructions, input examples, output structure, safety characteristics, and related tools. The presence of an output schema and the description's own output details make it fully complete for the tool's complexity.

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

Parameters5/5

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

Schema coverage is 0% for the query parameter, but the description compensates with a clear definition ('Free-text search terms') and concrete examples ('apache 2.4.49', 'CVE-2021-41773'). This adds meaning beyond the bare schema, fully clarifying the expected input format.

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

Purpose5/5

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

The description clearly states the tool searches the offline Exploit-DB for known exploits, using specific verbs ('Search', 'Find') and a specific resource. It distinguishes from siblings by highlighting the offline lookup capability and the use case of matching product/version/CVE, which is unique among the sibling tools.

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

Usage Guidelines4/5

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

The description provides clear context on when to use the tool (offline exploit lookup, no target contact) and includes examples and related tools (nuclei_scan, sqlmap_test) indicating alternatives. However, it does not explicitly state when not to use it or directly contrast with alternatives, so it stops short of a 5.

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

session_summaryA

Summarize the current engagement: scope, scans, findings, recent audit.

TOOL_NAME=session_summary DISPLAY_NAME=Engagement Summary USECASE=Get a quick status view of the engagement (scope, counts, recent activity) INSTRUCTIONS=1. Call with no arguments INPUT_DESCRIPTION=None OUTPUT_DESCRIPTION=Dict with scope snapshot, session summary counts, and recent audit events EXAMPLES=session_summary() PREREQUISITES=None RELATED_TOOLS=generate_report, scope_manage

Returns: Structured result dict summarizing the engagement.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It explicitly states 'Call with no arguments', describes the output ('Dict with scope snapshot, session summary counts, and recent audit events'), and lists prerequisites as None. This exceeds the typical transparency level, though it doesn't explicitly mention read-only semantics, which are implied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise but has slight redundancy: the opening sentence, OUTPUT_DESCRIPTION, and Returns section all convey similar information. The structured key-value layout is efficient and front-loads the core purpose, but the duplication prevents a perfect score.

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

Completeness4/5

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

Given the zero-parameter signature, the description covers the use case, output format, and example call adequately. The output schema is present, so it doesn't need to detail return values, but it still provides a high-level summary. Minimal guidance on alternative tools is provided, but the simplicity of the tool makes this sufficient.

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

Parameters4/5

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

The tool has zero parameters, so the baseline is 4. The description adds clarity by explicitly stating 'Call with no arguments' and INPUT_DESCRIPTION=None, ensuring the agent knows no input is required.

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

Purpose5/5

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

The description clearly states 'Summarize the current engagement: scope, scans, findings, recent audit,' naming a specific verb and resource. This distinguishes it from sibling tools, which are all individual recon/scan utilities, making its purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides a USECASE ('Get a quick status view of the engagement') and lists RELATED_TOOLS (generate_report, scope_manage), giving context on when to use the tool. It does not explicitly state when not to use it, but the use case and related tools imply the appropriate context.

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

sqlmap_testA

Test a URL/parameter for SQL injection (sqlmap). GATED — exploitation.

TOOL_NAME=sqlmap_test DISPLAY_NAME=SQLMap Injection Tester USECASE=Detect and exploit SQL injection in an authorized web app parameter INSTRUCTIONS=1. Enable ALLOW_EXPLOITATION, 2. Ensure host in scope, 3. Provide the URL (with parameter) and optional POST data, 4. Call INPUT_DESCRIPTION=target (URL incl. query param); data (POST body, optional); level (1-5); risk (1-3) OUTPUT_DESCRIPTION=Dict with status, sqlmap output, command and mode; blocked if exploitation disabled EXAMPLES=sqlmap_test("http://host/item.php?id=1", level=1, risk=1) PREREQUISITES=ALLOW_EXPLOITATION=true AND target authorized and in scope RELATED_TOOLS=nuclei_scan, searchsploit_lookup

Args: target: URL including the parameter to test (must be in scope). data: Optional POST data string. level: sqlmap test level (1-5). risk: sqlmap risk level (1-3).

Returns: Structured result dict (blocked if exploitation is disabled).

ParametersJSON Schema
NameRequiredDescriptionDefault
dataNo
riskNo
levelNo
targetYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It does a good job by revealing the gated nature ("GATED — exploitation"), the need for ALLOW_EXPLOITATION, and the blocked result when exploitation is disabled. It also indicates that the target must be in scope, implying a safety boundary. It does not mention potential side effects like payload delivery, but the 'exploitation' label and gating already signal high-impact behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (USECASE, INSTRUCTIONS, INPUT_DESCRIPTION, etc.) and front-loads the core purpose. It is slightly verbose—some information is repeated between the initial sentence and the structured block—but every section contributes functional guidance. The length is justified because there are no annotations or schema descriptions to lean on.

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

Completeness5/5

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

Despite no annotations and a minimal schema, the description covers all critical aspects: use case, step-by-step instructions, prerequisites, input/output formats, an example, and related tools. It even explains the return value includes a 'blocked' status. For a tool of this complexity (gated exploitation, four parameters, custom output), this is a complete and self-sufficient description.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. The Args section effectively explains each parameter: target is the URL with parameter and must be in scope, data is an optional POST body, level and risk are described with their sqlmap-specific ranges (1-5 and 1-3). An example call further clarifies usage, providing complete semantic meaning beyond the bare schema types and defaults.

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

Purpose5/5

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

The description clearly states the tool's purpose: "Test a URL/parameter for SQL injection (sqlmap)." The verb 'test' plus the specific resource (URL/parameter) and tool (sqlmap) leaves no ambiguity. It also distinguishes itself from siblings by focusing on SQL injection exploitation, whereas other tools like nuclei_scan or nikto_scan cover broader vulnerability scanning.

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

Usage Guidelines4/5

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

The description provides explicit usage context: USECASE is "Detect and exploit SQL injection in an authorized web app parameter," and PREREQUISITES clearly state that ALLOW_EXPLOITATION must be true and the target must be authorized and in scope. However, it does not explicitly state when NOT to use this tool or which sibling tools should be chosen for other vulnerability types, only listing RELATED_TOOLS without explanation.

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

subdomain_enumA

Discover subdomains of an in-scope domain (subfinder, passive).

TOOL_NAME=subdomain_enum DISPLAY_NAME=Subdomain Enumeration USECASE=Passively discover subdomains of an authorized domain from public sources INSTRUCTIONS=1. Ensure domain is in scope, 2. Call with the apex domain INPUT_DESCRIPTION=domain (e.g. example.com) OUTPUT_DESCRIPTION=Dict with status, discovered subdomains list, raw output, command and mode EXAMPLES=subdomain_enum("example.com") PREREQUISITES=Domain authorized and in scope RELATED_TOOLS=dns_recon, whatweb_fingerprint

Args: domain: Apex domain to enumerate (must be in scope).

Returns: Structured result dict including a subdomains list.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing behavior. It says the tool is 'passive' and uses 'public sources', which implies read-only, non-intrusive behavior. It also reveals the output contains 'command and mode', indicating it runs a subprocess. However, it doesn't discuss potential side effects, rate limits, or reliance on third-party APIs, leaving some behavioral aspects opaque.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core description is a single, front-loaded sentence. The additional metadata block is structured and informative, though some entries (e.g., TOOL_NAME, DISPLAY_NAME) repeat the tool name and add little. The format is clear and scannable, but minor redundancy prevents a perfect score.

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

Completeness4/5

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

For a one-parameter tool with an output schema, the description is quite complete. It covers purpose, use case, instructions, prerequisites, input semantics, output structure, and examples. It lacks explicit guidance on choosing this over sibling tools and does not mention error handling or edge cases, but overall it provides sufficient context for correct invocation.

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

Parameters4/5

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

The schema only states 'domain' is a required string (0% coverage). The description adds meaningful semantics: 'Args: domain: Apex domain to enumerate (must be in scope).' It also provides an example 'example.com' and clarifies the domain should be an apex domain, which compensates well for the sparse schema.

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

Purpose4/5

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

The description clearly states the tool's function: 'Discover subdomains of an in-scope domain (subfinder, passive).' It includes a specific verb ('discover'), a resource ('subdomains'), and scope ('in-scope domain'). While it doesn't explicitly differentiate from siblings like dns_recon, the mention of 'passive' and 'subfinder' conveys its unique approach.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool via metadata: 'USECASE=Passively discover subdomains of an authorized domain from public sources', 'INSTRUCTIONS=1. Ensure domain is in scope, 2. Call with the apex domain', and 'PREREQUISITES=Domain authorized and in scope'. It gives situational guidance but does not explicitly contrast with alternatives (e.g., when to use dns_recon instead).

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

username_osintA

Enumerate which public platforms a username exists on (Sherlock).

TOOL_NAME=username_osint DISPLAY_NAME=Username Footprint (Sherlock) USECASE=Discover which websites/social platforms a username is registered on, from public profile pages INSTRUCTIONS=1. Provide the username/handle (e.g. your own for a footprint check), 2. Call INPUT_DESCRIPTION=username (the handle to search); timeout (optional seconds override) OUTPUT_DESCRIPTION=Dict with status, a 'found' list of {site, url}, a count, raw output, command and mode EXAMPLES=username_osint("sudesh.khandekar") PREREQUISITES=None — passive queries to public profile URLs; run on handles you are authorized to profile (e.g. your own) RELATED_TOOLS=email_harvest, whois_lookup, subdomain_enum

Args: username: The handle to search across platforms. timeout: Optional override for the run timeout (Sherlock checks many sites and can take a few minutes).

Returns: Structured result dict including a found list of {site, url}.

Note: Passive OSINT against public profile pages; not network-scope-gated, but the subject is recorded in the audit log for accountability.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutNo
usernameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and does so well. It discloses passivity, public scope, audit-log recording, long runtimes ('can take a few minutes'), and the structured return shape. This gives the agent realistic expectations beyond a simple 'lookup'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized using clear subheadings and front-loads the core purpose. There is some repetition between the USECASE, description, and Args sections, but it remains concise enough for an agent to parse quickly and each section adds distinct value.

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

Completeness5/5

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

The tool has moderate complexity, and the description covers prerequisites, authorization guidance, related tools, an example, and the return structure (including the 'found' list of {site, url}). The presence of an output schema reduces the need to fully document return values, but the description still provides sufficient context.

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

Parameters5/5

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

Schema description coverage is 0%, so the description fully compensates. The INPUT_DESCRIPTION names both parameters, and the Args section elaborates that username is the handle to search and timeout is an optional seconds override, even noting why it might be needed (Sherlock checks many sites).

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

Purpose5/5

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

The description opens with a clear verb and resource: 'Enumerate which public platforms a username exists on (Sherlock).' The USECASE further clarifies it discovers registered platforms from public profile pages. This distinguishes it from sibling tools like email_harvest or subdomain_enum.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool, including prerequisites ('run on handles you are authorized to profile') and that it is passive and not network-scope-gated. However, it does not explicitly contrast alternatives beyond listing RELATED_TOOLS, so it stops short of an explicit when-not-to-use.

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

vhost_enumA

Brute-force virtual hosts on a web server (gobuster vhost mode).

TOOL_NAME=vhost_enum DISPLAY_NAME=Virtual Host Enumeration USECASE=Discover name-based virtual hosts served by an in-scope web server INSTRUCTIONS=1. Ensure host/domain is in scope, 2. Provide base URL and apex domain, 3. Call INPUT_DESCRIPTION=target (base URL); domain (apex domain for candidate vhosts); wordlist (optional) OUTPUT_DESCRIPTION=Dict with status, discovered vhosts in output, command and mode EXAMPLES=vhost_enum("http://10.0.0.5", "example.com") PREREQUISITES=Host/domain authorized and in scope RELATED_TOOLS=dir_bruteforce, subdomain_enum

Args: target: Base URL of the server (must be in scope). domain: Apex domain used to build candidate vhost names. wordlist: Path to a wordlist (defaults to a common list).

Returns: Structured result dict.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
targetYes
wordlistNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations, the description must fully disclose behavioral traits. It mentions the prerequisite that the target must be in scope and describes the return structure, but does not discuss potential side effects such as high request volume or noise. This is adequate but not rich, warranting a 3.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with a concise one-liner and then organized into structured metadata sections. There is some redundancy between the initial line, USECASE, and INPUT_DESCRIPTION, but the additional instructions, prerequisites, and examples are valuable, so it remains appropriately concise.

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

Completeness5/5

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

The description covers purpose, instructions, prerequisites, an example invocation, and the output structure (status, discovered vhosts, command, mode). With an output schema and three parameters, this is complete enough for an agent to select and invoke the tool correctly.

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

Parameters5/5

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

Schema description coverage is 0%, but the description thoroughly explains each parameter: target as the base URL, domain as the apex domain for vhost candidates, and wordlist as optional with a default. This adds complete meaning beyond the bare schema types.

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

Purpose5/5

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

The description clearly states the tool's function: 'Brute-force virtual hosts on a web server (gobuster vhost mode).' This specifies the verb, resource, and method, and distinguishes it from sibling tools like subdomain_enum and dir_bruteforce through the focus on virtual host discovery.

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

Usage Guidelines4/5

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

The description provides clear context: 'Discover name-based virtual hosts served by an in-scope web server' and includes prerequisites and related tools. However, it does not explicitly state when not to use this tool or when to prefer a related tool like subdomain_enum, so it lacks direct exclusions.

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

whatweb_fingerprintA

Fingerprint web technologies used by an in-scope site (whatweb).

TOOL_NAME=whatweb_fingerprint DISPLAY_NAME=Web Technology Fingerprinter USECASE=Identify CMS, frameworks, servers, and libraries used by a target web app INSTRUCTIONS=1. Ensure host is in scope, 2. Provide URL and optional aggression level, 3. Call INPUT_DESCRIPTION=target (URL); aggression (1=stealthy .. 3=aggressive, default 1) OUTPUT_DESCRIPTION=Dict with status, fingerprint output, command and mode EXAMPLES=whatweb_fingerprint("https://example.com") PREREQUISITES=Host authorized and in scope RELATED_TOOLS=nikto_scan, nuclei_scan

Args: target: URL to fingerprint (must be in scope). aggression: whatweb aggression level (1-4).

Returns: Structured result dict.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
aggressionNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing behavioral traits. It does not mention that this is an active network scanner that sends HTTP requests, nor does it explain potential side effects, rate limiting, or the meaning of aggression levels. It also does not clarify whether the tool is read-only or could have any impact, leaving the agent to infer the operational behavior from the tool name and 'whatweb' reference.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-organized with labeled sections (USECASE, INSTRUCTIONS, INPUT_DESCRIPTION, OUTPUT_DESCRIPTION, EXAMPLES, PREREQUISITES, RELATED_TOOLS) and front-loads the core purpose. It is a bit verbose and repeats some information (e.g., in-scope requirement mentioned multiple times), but the structure makes it scannable and each section earns its place. It could be trimmed, but it is not bloated.

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

Completeness4/5

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

Given the tool's moderate complexity, the description is quite complete: it includes use cases, step-by-step instructions, prerequisites, an example, related tools, and expected output structure. However, the lack of clarity on the aggression range and the absence of behavioral transparency (e.g., network activity) leave gaps. The presence of an output schema reduces the need to detail return values, but the description still provides some. Overall, it is above average but not perfect.

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

Parameters2/5

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

The schema descriptions are entirely absent (0% coverage), so the description must compensate. It does explain 'target' as 'URL to fingerprint (must be in scope)' and 'aggression' as 'whatweb aggression level (1-4)' or '1=stealthy .. 3=aggressive' in different sections. However, these two ranges (1-4 vs 1-3) contradict each other, which degrades clarity and could mislead an agent about valid inputs. The inconsistency prevents the description from fully compensating for the schema gap.

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

Purpose5/5

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

The description opens with a specific verb+resource: 'Fingerprint web technologies used by an in-scope site (whatweb).' It clearly identifies the tool's function as identifying CMS, frameworks, servers, and libraries, distinguishing it from sibling tools like nikto_scan and nuclei_scan which focus on vulnerability scanning.

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

Usage Guidelines4/5

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

The description provides clear usage context: ensure host is in scope, provide URL and optional aggression level, and call. PREREQUISITES explicitly states 'Host authorized and in scope.' RELATED_TOOLS lists related utilities, but there is no explicit when-not-to-use guidance or criteria for choosing this tool over alternatives, so it lacks full exclusionary guidance.

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

whois_lookupA

Look up WHOIS registration data for a domain or IP.

TOOL_NAME=whois_lookup DISPLAY_NAME=WHOIS Lookup USECASE=Retrieve registrar/ownership/allocation data for a domain or IP (public registry data) INSTRUCTIONS=1. Provide a domain or IP, 2. Call INPUT_DESCRIPTION=target (domain or IP) OUTPUT_DESCRIPTION=Dict with status, raw WHOIS output, command and mode EXAMPLES=whois_lookup("example.com") PREREQUISITES=None — queries public WHOIS servers, not the target host RELATED_TOOLS=dns_recon, subdomain_enum

Args: target: Domain or IP to look up.

Returns: Structured result dict.

Note: WHOIS contacts registry servers, not the target itself, so it is not scope-gated.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the essential behavior: WHOIS 'contacts registry servers, not the target itself' and is 'not scope-gated'. It also hints at the output structure (status, raw output, command, mode). This is solid disclosure for a simple lookup tool, though it does not mention potential rate limits or redacted WHOIS data.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections, but it is repetitive: the opener and USECASE overlap, and the Args/Returns sections duplicate INPUT_DESCRIPTION/OUTPUT_DESCRIPTION. The INSTRUCTIONS line ('1. Provide a domain or IP, 2. Call') adds little value. It could be tightened without losing information.

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

Completeness4/5

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

For a single-parameter tool with an output schema present, the description covers the essential context: purpose, usage, prerequisites, example, related tools, and behavior. It notes that WHOIS is not scope-gated, which is valuable for engagement context. The output schema itself would cover return details, so lack of deep retvalue explanation is acceptable.

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

Parameters4/5

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

With schema coverage at 0%, the description compensates well: INPUT_DESCRIPTION states 'target (domain or IP)' and the Args section repeats 'target: Domain or IP to look up'. The example 'whois_lookup("example.com")' clarifies the expected format. This adds meaning beyond the bare schema string type.

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

Purpose5/5

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

The description opens with 'Look up WHOIS registration data for a domain or IP' and the USECASE specifies 'Retrieve registrar/ownership/allocation data', giving a specific verb, resource, and data category. This clearly distinguishes it from sibling tools like dns_recon or subdomain_enum, which serve different purposes.

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

Usage Guidelines4/5

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

The description includes a USECASE, PREREQUISITES ('queries public WHOIS servers, not the target host'), and a Note that the tool is 'not scope-gated'. It also lists RELATED_TOOLS, implying context for alternatives. However, it does not explicitly state when not to use this tool compared to those alternatives, so it falls just short of a 5.

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

wpscan_scanA

Scan a WordPress site for vulnerabilities (wpscan).

TOOL_NAME=wpscan_scan DISPLAY_NAME=WordPress Security Scanner USECASE=Enumerate vulnerable plugins/themes/users on an in-scope WordPress site INSTRUCTIONS=1. Ensure host is in scope, 2. Provide the site URL, 3. Optionally set enumerate options/API token, 4. Call INPUT_DESCRIPTION=target (WordPress URL); enumerate (wpscan --enumerate arg, e.g. "vp,vt,u"); api_token (optional WPScan API token) OUTPUT_DESCRIPTION=Dict with status, wpscan output, command and mode EXAMPLES=wpscan_scan("https://blog.example.com", enumerate="vp,vt,u") PREREQUISITES=Host authorized and in scope RELATED_TOOLS=nuclei_scan, dir_bruteforce

Args: target: WordPress site URL (must be in scope). enumerate: wpscan enumerate specification. api_token: Optional WPScan API token for vulnerability data.

Returns: Structured result dict.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes
api_tokenNo
enumerateNovp

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool runs wpscan, returns a structured result dict, and uses an optional API token. It could be more explicit about network behavior or potential impact, but the command and output structure are clear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with labeled sections (TOOL_NAME, USECASE, INSTRUCTIONS, INPUT_DESCRIPTION, OUTPUT_DESCRIPTION, EXAMPLES, PREREQUISITES, RELATED_TOOLS, Args). Every section adds value without unnecessary repetition, making it both thorough and efficient.

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

Completeness5/5

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

Given the tool has 3 parameters and no annotations, the description is remarkably complete. It covers purpose, prerequisites, step-by-step instructions, input/output formats, examples, and related tools. This provides all context an agent needs to select and invoke the tool correctly.

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

Parameters5/5

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

The input schema has 0% description coverage, but the description fully compensates by explaining each parameter: 'target (WordPress URL)', 'enumerate (wpscan --enumerate arg, e.g. "vp,vt,u")', and 'api_token (optional WPScan API token)'. Examples and defaults are also provided.

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

Purpose5/5

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

The description clearly states the tool scans WordPress sites for vulnerabilities using wpscan, with the use case 'Enumerate vulnerable plugins/themes/users on an in-scope WordPress site'. This specific verb+resource combination distinguishes it from sibling tools like nuclei_scan or dir_bruteforce.

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

Usage Guidelines5/5

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

Provides explicit instructions ('Ensure host is in scope, Provide the site URL, Optionally set enumerate options/API token'), prerequisites ('Host authorized and in scope'), and related tools (nuclei_scan, dir_bruteforce). This clearly guides when and how to use the tool.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 24 tool updatesv0.1.0
    • First observeddir_bruteforce
    • First observeddns_recon
    • First observedemail_harvest
    • First observedgenerate_report
    • First observedhash_crack
    • First observedhash_identify
    • First observedhost_discovery
    • First observedhydra_bruteforce
    • First observedlist_tools_status
    • First observedmasscan_scan
    • First observednikto_scan
    • First observednmap_scan
    • First observednuclei_scan
    • First observedrecord_finding
    • First observedscope_manage
    • First observedsearchsploit_lookup
    • First observedsession_summary
    • First observedsqlmap_test
    • First observedsubdomain_enum
    • First observedusername_osint
    • First observedvhost_enum
    • First observedwhatweb_fingerprint
    • First observedwhois_lookup
    • First observedwpscan_scan

TDQS

A4/5.0

Scored across 24 tools

Disambiguation4/5

Most tools have clearly distinct purposes (e.g., nmap_scan vs masscan_scan vs host_discovery). However, dns_recon with scan_type 'brt' overlaps with subdomain_enum, and several *scan tools could be confused by target type, though descriptions clarify.

Naming Consistency4/5

All tool names use snake_case and mostly follow a '{object}_{action}' pattern (dns_recon, nmap_scan, hash_crack). Exceptions like list_tools_status, generate_report, and record_finding start with a verb, creating minor inconsistency but still predictable.

Tool Count4/5

24 tools is above the typical 3-15 range, but the server covers a full pentest workflow (recon, scanning, exploitation, reporting, scope management). Each tool serves a distinct function, so the count feels slightly heavy but justified for a Kali MCP server.

Completeness4/5

The toolset covers the core lifecycle: recon (dns_recon, subdomain_enum), scanning (nmap_scan, nikto_scan), exploitation (sqlmap_test, hydra_bruteforce), and reporting (record_finding, generate_report). Minor gaps like traffic capture or wireless testing exist, but the main engagement flow is complete.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables LLMs to execute Kali Linux security tools like nmap, sqlmap, and hydra in a secure, sandboxed environment. Provides both MCP and HTTP API interfaces for penetration testing and security assessment tasks.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides access to 20+ Kali Linux penetration testing tools including nmap, sqlmap, nikto, and hydra for authorized security testing and vulnerability assessment through a Docker-based MCP interface.
    1
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables AI agents to perform professional penetration testing through a containerized Kali Linux environment, exposing industry-standard offensive security tools as structured MCP tools.
    45
    4
    MIT