Skip to main content
Glama

MCP Recon

A comprehensive Model Context Protocol (MCP) server for web security reconnaissance and analysis. This toolkit provides cybersecurity professionals with essential reconnaissance capabilities through Python-native implementations, following the standard cybersecurity reconnaissance methodology.

šŸš€ Features

šŸ“Š 1. Information Gathering (Passive Reconnaissance)

  • WHOIS Information: Domain registration and ownership details

  • Domain History: Reputation and historical data analysis

šŸ” 2. DNS Analysis (Infrastructure Discovery)

  • DNS Records Lookup: Comprehensive DNS enumeration (A, AAAA, MX, NS, TXT, SPF, DMARC)

  • Reverse DNS Lookup: IP to hostname resolution

  • Passive Subdomain Enumeration: Certificate Transparency logs discovery via crt.sh (stealth)

  • Active Subdomain Enumeration: DNS brute-force discovery using wordlist from subdomains.txt

🌐 3. Network Reconnaissance (Active Scanning)

  • IP Information: Geolocation, ISP, and network details

  • Alive Check: HTTP/HTTPS connectivity testing with response analysis

  • Port Scanning: Advanced Nmap integration with multiple scan modes

šŸ”’ 4. Web Application Analysis (Application Layer)

  • TLS Certificate Analysis: SSL/TLS certificate inspection and validation

  • HTTP Headers Analysis: Security headers assessment and information disclosure detection

  • Technology Detection: Web framework and technology fingerprinting

  • URL Extraction: Web crawling and link discovery

-----------------------------------------------------

Related MCP server: OSINT MCP Server

šŸ›  Installation

Prerequisites

  • Python 3.10+

  • UV Package Manager (automatically installed by script)

  • Nmap (automatically installed by script)

Quick Installation

Windows (PowerShell)

.\install.ps1

Linux/macOS

chmod +x install.sh
./install.sh

Claude Desktop Configuration

Add this configuration to your Claude Desktop settings to connect the MCP Web Reconnaissance Server:

Windows Configuration

{
  "mcpServers": {
    "recon": {
      "command": "C:\\Users\\YOUR_USERNAME\\.local\\bin\\uv.exe",
      "args": [
        "--directory",
        "C:\\Users\\YOUR_USERNAME\\path\\to\\MCP_Recon",
        "run",
        "python",
        "main.py"
      ]
    }
  }
}

Linux/macOS Configuration

{
  "mcpServers": {
    "recon": {
      "command": "/home/YOUR_USERNAME/.local/bin/uv",
      "args": [
        "--directory",
        "/home/YOUR_USERNAME/path/to/MCP_Recon",
        "run",
        "python",
        "main.py"
      ]
    }
  }
}

Replace the following placeholders:

  • YOUR_USERNAME with your actual username

  • path/to/MCP_Recon with the actual path to your cloned repository

Configuration file locations:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

-----------------------------------------------------

šŸš€ Usage

Available Tools (Following Reconnaissance Methodology)

1. Information Gathering (Passive Reconnaissance)

  • whois_info - Get WHOIS information

  • domain_history - Check domain reputation and history

2. DNS Analysis (Infrastructure Discovery)

  • dns_records - Get all DNS records for a domain

  • reverse_dns - Perform reverse DNS lookup

  • subdomain_enum_passive - Passive subdomain discovery via Certificate Transparency (crt.sh)

  • subdomain_enum_active - Active subdomain enumeration using DNS brute force

3. Network Reconnaissance (Active Scanning)

  • ip_information - Get comprehensive IP information

  • check_alive - Check if hosts respond via HTTP/HTTPS

  • port_scan - Advanced port scanning with Nmap

4. Web Application Analysis (Application Layer)

  • tls_certificate - Analyze TLS certificates

  • http_headers - Analyze HTTP security headers

  • detect_technologies - Detect web technologies

  • extract_urls - Extract URLs from web pages

-----------------------------------------------------

šŸ”§ Configuration

Custom User-Agent

For bug bounty programs requiring specific identification, HTTP-based tools support an optional user_agent parameter. When provided, it replaces the default User-Agent for all HTTP requests to the target.

Examples:

# Default User-Agent
http_headers("https://example.com")

# Custom User-Agent for bug bounty programs
http_headers("https://example.com", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36 bug-bounty")

Tools supporting custom User-Agent:

  • http_headers - HTTP headers analysis

  • detect_technologies - Technology fingerprinting

  • extract_urls - URL extraction/crawling

  • check_alive - Host connectivity check

-----------------------------------------------------

šŸ”§ Wordlists

Subdomain Wordlist Customization

You can customize subdomain enumeration in two ways:

1. Edit the wordlist file

Modify the subdomains.txt file in the project root to add/remove subdomains:

www
api
admin
test
dev
staging
# Add your custom subdomains here

2. Provide custom wordlist in Claude Desktop chat

Port Scanning Options

The port scanner supports various modes optimized for different scenarios:

  • "common": Common services (21,22,23,25,53,80,443,etc.)

  • "top100": Top 100 most common ports (recommended for initial reconnaissance)

  • "top1000": Top 1000 ports (comprehensive discovery)

  • "80,443,8080": Specific ports (targeted scanning)

  • "1-1000": Port range (internal network scanning)

-----------------------------------------------------

šŸ— Architecture

Project Structure

mcp-recon/
ā”œā”€ā”€ main.py                 # MCP server entry point with organized tool categories
ā”œā”€ā”€ subdomains.txt          # Default subdomain wordlist (customizable)
ā”œā”€ā”€ tools/
│   ā”œā”€ā”€ info_tools.py       # Information gathering utilities (WHOIS, domain history)
│   ā”œā”€ā”€ dns_tools.py        # DNS and domain reconnaissance
│   ā”œā”€ā”€ network_tools.py    # Network scanning and analysis
│   └── web_tools.py        # Web application analysis
ā”œā”€ā”€ install.ps1            # Windows installation script
ā”œā”€ā”€ install.sh             # Linux/macOS installation script
ā”œā”€ā”€ pyproject.toml          # Python project configuration
└── README.md              # This documentation

-----------------------------------------------------

šŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

-----------------------------------------------------

āš ļø Disclaimer

This tool is intended for legitimate security research, penetration testing, and bug bounty activities only. Users are responsible for ensuring they have proper authorization before scanning or testing any networks, systems, or applications. The authors are not responsible for any misuse of this tool.

Always follow responsible disclosure practices and respect scope limitations in bug bounty programs.

Available Tools

13 tools
check_aliveA

Check if targets are alive using HTTP/HTTPS connectivity testing.

Args: targets: List of target domains/URLs user_agent: Optional custom User-Agent string

Example: check_alive(["example.com", "test.com"]) check_alive(["example.com"], "Mozilla/5.0... bug-bounty")

ParametersJSON Schema
NameRequiredDescriptionDefault
targetsYes
user_agentNo

TDQS

A3.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions 'HTTP/HTTPS connectivity testing' but omits details like timeout behavior, result format, or side effects. An agent cannot infer what 'alive' means technically.

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 very concise, with no redundant sentences. Structured Args and Example are front-loaded, making it easy to parse.

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

Completeness3/5

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

Given no output schema, the description should explain return values or behavior. It lacks information on what constitutes 'alive' and error handling, leaving an agent uncertain about expectations.

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 description adds meaning beyond the schema: it explains 'targets' as domains/URLs and 'user_agent' as custom string. The example demonstrates usage, compensating for 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 the tool checks if targets are alive via HTTP/HTTPS, specifying the verb 'Check' and resource 'targets'. It distinguishes from sibling tools like port_scan or subdomain_enum by focusing on HTTP/HTTPS connectivity.

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 structured Args and an Example showing how to call the tool. While it doesn't explicitly state when not to use or compare to siblings, the example provides clear invocation guidance.

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

detect_technologiesB

Detect technologies, frameworks, and libraries used by a website.

Args: url: Target URL user_agent: Optional custom User-Agent string

Example: detect_technologies("https://example.com") detect_technologies("https://example.com", "Mozilla/5.0... bug-bounty")

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
user_agentNo

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It only mentions detecting technologies and an optional user agent, but omits critical details like that the tool likely fetches the website, may be noisy, respects robots.txt or not, or is read-only. The example hints at custom user agents for bug bounty but doesn't explain implications.

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 short and front-loaded with the purpose. It lists parameters and an example without extraneous text. However, it could benefit from a structured format separating purpose, usage, and output, though it remains efficient.

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

Completeness2/5

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

Given the absence of output schema and annotations, and the likelihood that this tool performs a network scan, the description is incomplete. It does not explain what detection entails (e.g., parsing HTML, headers, or JS), how results are returned, or whether the tool is passive or active. The example lacks output illustration.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It provides basic descriptions: url is 'Target URL' and user_agent is 'Optional custom User-Agent string'. This adds minimal meaning beyond the schema's type information. The example shows usage but no parameter details beyond placeholders.

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 detects technologies, frameworks, and libraries used by a website. This specific verb+resource distinguishes it from sibling tools like whois_info or dns_records, which deal with domain registration or DNS data.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention that it is ideal for reconnaissance or that it should be avoided for simple domain queries. The agent gets no context for tool selection.

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

dns_recordsA

Perform comprehensive DNS lookups for all record types Example: dns_records("example.com")

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. Describes core function and gives example but does not disclose response format, error handling, rate limits, or other behavioral traits. Adequate but minimal.

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?

Two sentences: purpose statement and example. No wasted words, front-loaded with core action.

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?

Tool is simple with one parameter and no output schema. Description covers purpose and provides example. Missing detail on record types but still adequate for straightforward DNS lookup.

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?

Schema coverage 0% and description only mentions 'domain' in example without adding meaning beyond the schema. Does not specify format constraints or expected input details.

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?

Description clearly states 'Perform comprehensive DNS lookups for all record types' with a specific verb and resource. Distinguishes from sibling tools like whois_info, reverse_dns, and subdomain enumeration.

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

Usage Guidelines2/5

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

No explicit when-to-use or when-not-to-use guidance. Sibling tools are listed but not referenced in the description, leaving the agent to infer usage context.

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

domain_historyC

Check domain history and reputation indicators Example: domain_history("example.com")

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It only states a read operation without mentioning rate limits, data sources, or potential side effects. Minimal transparency.

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 very short (two lines) and front-loaded with the action and an example. However, it omits crucial details, making it under-specified rather than optimally concise.

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

Completeness2/5

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

Given the tool has one parameter, no output schema, and many siblings, the description is incomplete. It does not explain what history or indicators are checked, nor the return format, limiting its usefulness for an AI agent.

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?

Schema coverage is 0%, so the description must add meaning. It provides only an example ('example.com') but no explanation of format, constraints, or expected input. The parameter name 'domain' is self-explanatory but not elaborated.

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 checks domain history and reputation indicators, providing a specific verb and resource. However, it does not distinguish this from sibling tools like whois_info or dns_records, which could also provide domain-related information.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool over alternatives or under what conditions it is appropriate. The example only shows syntax, not context for selection.

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

extract_urlsA

Extract all URLs from a website using Python web crawler.

Args: url: Target URL depth: Crawl depth (default: 2) user_agent: Optional custom User-Agent string

Example: extract_urls("https://example.com") extract_urls("https://example.com", 2, "Mozilla/5.0... bug-bounty")

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
depthNo
user_agentNo

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description bears full responsibility for behavioral disclosure. It mentions 'Python web crawler', implying network requests, but lacks details on rate limiting, robots.txt respect, or potential impact. This is partially transparent but insufficient for a crawl tool.

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

Conciseness5/5

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

The description is concise with a clear purpose statement, structured Args section, and a practical example. Every sentence contributes meaning with no redundancy.

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

Completeness3/5

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

The description lacks information about return value format and error behavior. Given no output schema and the complexity of web crawling, this is a notable gap. However, it does cover parameters and provides a usage example.

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 explaining each parameter: url as target URL, depth with default, and user_agent as optional. The example further clarifies usage, adding significant value 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 the tool extracts all URLs from a website using a Python web crawler. This is a specific verb-resource combination that distinguishes it from sibling tools like whois_info or dns_records.

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

Usage Guidelines3/5

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

The description implies usage for extracting URLs but does not provide explicit guidance on when to use or avoid this tool. No alternative tools are suggested, but the sibling list shows it is the only URL extraction tool.

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

http_headersB

Analyze HTTP headers for security and information disclosure.

Args: url: Target URL to analyze user_agent: Optional custom User-Agent string

Example: http_headers("https://example.com") http_headers("https://example.com", "Mozilla/5.0... bug-bounty")

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
user_agentNo

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only states the tool 'analyzes' headers but does not disclose behavioral traits such as whether it makes network requests, follows redirects, handles errors, or any rate limits. The description is minimally transparent.

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 concise and well-structured: a one-sentence purpose followed by clearly labeled Args with brief explanations and an example. Every sentence is necessary; no waste.

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

Completeness2/5

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

Given no output schema and no return value description, the description is incomplete. It does not explain what the result of the analysis looks like (e.g., a list of headers, a security assessment). For a tool that returns data, this is a significant gap.

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

Parameters3/5

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

The description adds meaning to both parameters beyond the schema: 'url' is a target URL, 'user_agent' is an optional custom string. An example demonstrates typical usage. However, with 0% schema description coverage, more detail (e.g., formatting rules) would improve clarity.

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 analyzes HTTP headers for security and information disclosure. The name and description together specify the verb (analyze) and resource (HTTP headers). Sibling tools like whois_info or dns_records are distinct in purpose, so differentiation is clear.

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

Usage Guidelines3/5

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

The description implies when to use (to analyze HTTP headers) but does not explicitly contrast with siblings or provide exclusions. It lacks guidance like 'use this when you need to inspect response headers for security issues' versus other tools that deal with different aspects of a domain.

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

ip_informationA

Get comprehensive IP information including geolocation Example: ip_information("example.com") or ip_information("1.1.1.1")

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYes

TDQS

A3.9/5.0
Behavior3/5

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

Without annotations, the description must carry the full behavioral burden. It mentions 'comprehensive IP information including geolocation' but does not detail what else is returned (e.g., ISP, organization) or any potential side effects, rate limits, or authentication requirements.

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

Conciseness5/5

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

The description is two sentences, front-loaded with the main purpose, and includes an example. Every part is useful, and there is no redundancy.

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 is mostly complete for a simple lookup tool with one parameter, but it omits details about the return format or fields included beyond geolocation. Given no output schema, adding a hint about the response structure would improve completeness.

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 only defines a required string parameter 'target' with 0% coverage. The description compensates by providing examples ('example.com', '1.1.1.1'), clarifying that both hostnames and IP addresses are acceptable inputs.

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 'Get comprehensive IP information including geolocation', providing a specific verb and resource. Examples show usage with both hostnames and IPs, and the tool is clearly distinct from sibling tools that focus on domains or DNS.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus sibling tools like whois_info or dns_records. There are no context signals about prerequisites or when not to use it.

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

port_scanA

Advanced port scan using nmap Ports options: "common", "top100", "top1000", "80,443,8080", "1-1000" Example: port_scan("example.com", "top100")

ParametersJSON Schema
NameRequiredDescriptionDefault
portsNotop100
targetYes

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It does not mention potential network impact, speed, stealth options, or legal considerations of port scanning.

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 brief and includes an example, but lacks a clear structure. It is efficient but could be more organized with headings or bullet points.

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

Completeness3/5

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

Given no output schema, no annotations, and schema coverage 0%, the description covers purpose and parameter options but lacks behavioral context and return value explanation.

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 description adds significant value by explaining acceptable values for the 'ports' parameter (common, top100, top1000, custom lists) and providing a usage example, which the schema lacks.

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 'Advanced port scan using nmap' and provides examples of port options, distinguishing it from siblings like whois_info and dns_records 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 Guidelines3/5

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

No explicit guidance on when to use this tool vs alternatives. While the sibling list shows different tools, the description fails to suggest contexts or scenarios where port scanning is appropriate.

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

reverse_dnsA

Perform reverse DNS lookup on IP address Example: reverse_dns("8.8.8.8")

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYes

TDQS

A3.5/5.0
Behavior2/5

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

No annotations provided, so description must disclose behavioral traits. Only states basic operation; no info on error handling, rate limits, or response format.

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?

Two sentences, front-loaded with purpose and example. No wasted words.

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

Completeness3/5

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

Adequate for a simple single-parameter tool, but lacks mention of return value or constraints. Could be more complete.

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

Parameters3/5

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

Schema has 0% description coverage. Description adds example '8.8.8.8' but no further details (e.g., format validation). Provides some value but incomplete.

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?

Clear verb+resource: 'Perform reverse DNS lookup on IP address'. Distinguishes from siblings like dns_records (forward lookup) and ip_information (general info).

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?

Implied usage via description, but no explicit when-to-use, when-not-to-use, or alternatives mentioned.

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

subdomain_enum_activeB

Enumerate subdomains using DNS brute force (active reconnaissance) Can use default wordlist from subdomains.txt file or custom wordlist provided Example: subdomain_enum_active("example.com") or subdomain_enum_active("example.com", ["www", "api", "admin"])

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
wordlistNo

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It mentions DNS brute force and wordlist defaults but omits critical details like return format, rate limiting, error handling, or potential impact on the target. The user cannot infer what the tool outputs or how invasive it is.

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 with three sentences and an example line, no redundant information. It could be more structured but is efficient and front-loads the key action.

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

Completeness2/5

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

Given no output schema and moderate complexity (DNS brute force), the description lacks completeness: no indication of return values, error conditions, or when to prefer passive enumeration. The example is helpful but not sufficient for a realistic use case.

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

Parameters3/5

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

The schema has 0% description coverage, so the description must compensate. It explains the domain parameter via examples and mentions default and custom wordlists. However, it does not define domain format (e.g., no protocol) or clarify that wordlist items are subdomain prefixes. The example partially fills the 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 clearly states the tool enumerates subdomains using DNS brute force (active reconnaissance), distinguishing it from the passive sibling subdomain_enum_passive. The verb 'enumerate' and resource 'subdomains' are specific, and examples clarify usage.

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

Usage Guidelines3/5

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

The description implies active reconnaissance but does not explicitly contrast with subdomain_enum_passive or provide when-not-to-use guidance. It gives examples but lacks context on selecting active vs passive enumeration.

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

subdomain_enum_passiveA

Passive subdomain enumeration using Certificate Transparency logs Non-intrusive reconnaissance that doesn't generate logs on target servers Example: subdomain_enum_passive("example.com")

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses the tool is non-intrusive and uses CT logs. It could mention limitations (e.g., only finds subdomains with certificates), but the provided details are sufficient for understanding the tool's behavior.

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

Conciseness5/5

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

The description is three lines, front-loaded with the core purpose, followed by a behavioral note and an example. Every sentence adds value, and there is no unnecessary verbosity.

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 simplicity (one parameter, no output schema), the description covers purpose, method, and usage. However, it does not describe the return format (e.g., list of subdomains), which would be helpful for completeness.

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

Parameters3/5

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

The input schema has 0% description coverage. The description provides an example call but no additional semantic detail about the 'domain' parameter format or constraints. The example helps, but schema coverage is low, and the description does not fully compensate.

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 it performs 'passive subdomain enumeration using Certificate Transparency logs', which is a specific verb and resource. It distinguishes itself from the sibling 'subdomain_enum_active' by emphasizing passivity and non-intrusiveness.

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 implies usage for reconnaissance without generating logs on target servers, contrasting with active enumeration. However, it does not explicitly state when to use or avoid this tool compared to alternatives like 'subdomain_enum_active'.

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

tls_certificateC

Check TLS certificate details and security using Python SSL Example: tls_certificate("example.com")

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

TDQS

C2.6/5.0
Behavior2/5

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

No annotations are present, and the description provides minimal behavioral context. It implies a read-only operation ('check'), but does not disclose potential blocking, rate limits, error conditions, or the depth of security analysis. The description leaves the agent uninformed about side effects or limitations.

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

Conciseness3/5

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

The description is very short (two sentences) and front-loaded with a clear purpose. However, its brevity sacrifices necessary detail, making it under-specified rather than efficiently concise. Every sentence earns its place, but there are too few sentences to be fully effective.

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

Completeness2/5

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

Given the tool's simplicity (one parameter, no output schema, no annotations), the description is incomplete. It does not describe the return format, specific details returned (e.g., expiration, issuer), or what constitutes 'security' checks. More information is needed for an agent to reliably invoke and interpret results.

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?

Schema coverage is 0%, and the description only offers an example ('example.com') for the required 'domain' parameter. It does not explain the expected format (e.g., protocol prefix, IP addresses) or any constraints. The description fails to compensate for the lack of schema documentation.

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

Purpose4/5

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

The description states 'Check TLS certificate details and security' with an example, clearly indicating the tool's function of inspecting TLS certificates. It differentiates from siblings like whois_info or dns_records by focusing on certificate-level inspection, though the scope of 'security' is vague.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives. Only an example is provided, implying usage for a given domain, but no criteria or exclusions are mentioned.

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

whois_infoB

Get comprehensive WHOIS information for a domain Example: whois_info("example.com")

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations exist, so the description carries full weight. It only states the action without disclosing behavioral traits such as potential rate limits, authentication needs, or error handling (e.g., invalid domain). The example adds no behavioral context.

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

Conciseness5/5

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

The description is extremely concise, using only two short sentences with zero wasted words. It includes a clear verb and an illustrative example, making it optimally compact.

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

Completeness3/5

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

Given 13 sibling tools and no output schema, the description is minimal. While adequate for a simple WHOIS lookup, it lacks details on the scope of data returned (e.g., registrar, dates) which could help agents differentiate from similar tools. It is functional but not rich enough for full contextual understanding.

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?

With 0% schema description coverage, the description must compensate. It merely provides an example ('whois_info("example.com")') which implies the parameter is a domain string, but does not add meaning beyond the schema's type definition. No constraints or formatting details are given.

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 'Get comprehensive WHOIS information for a domain' with an example, making the purpose specific and unambiguous. It distinguishes from sibling tools like domain_history or dns_records by focusing solely on WHOIS data.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like domain_history or reverse_dns. There are no hints about prerequisites or contexts where this tool is best applied.

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

TDQS

A3.6/5.0
Disambiguation5/5

Each tool targets a distinct aspect of reconnaissance (WHOIS, DNS, subdomains, IP, ports, TLS, headers, tech detection, URL extraction), with clear descriptions preventing overlap. The active/passive subdomain tools are differentiated by method.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (e.g., whois_info, dns_records, port_scan, detect_technologies), with no mixing of conventions or vague verbs.

Tool Count5/5

13 tools is well-scoped for a reconnaissance server, covering essential operations without being overwhelming. Each tool serves a clear purpose and earns its place.

Completeness4/5

The tool set covers all major reconnaissance areas (domain, DNS, subdomains, IP, network, TLS, HTTP, technology) with both active and passive methods. Minor gaps like email harvesting or web screenshot are not essential for a general-purpose recon server.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    D
    quality
    D
    maintenance
    A comprehensive MCP server providing tools for IP, domain, email, and image-based open-source intelligence. It integrates services like Shodan, VirusTotal, and HaveIBeenPwned to facilitate advanced security research and data gathering.
    56
    48
    ISC
  • A
    license
    A
    quality
    F
    maintenance
    A comprehensive security testing MCP server providing 51 tools for penetration testing, network forensics, memory analysis, and vulnerability assessment. It enables automated security audits and technical investigations across web applications, cloud environments, and network captures.
    51
    71
    23
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that provides passive and low-impact active reconnaissance tools for authorized bug bounty and security assessments, enabling LLMs to perform structured recon and generate reports.
    11
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/sundayz-hunter/MCP_Recon'

If you have feedback or need assistance with the MCP directory API, please join our Discord server