MCP Recon
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Reconperform a passive subdomain enumeration on example.com"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.ps1Linux/macOS
chmod +x install.sh
./install.shClaude 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_USERNAMEwith your actual usernamepath/to/MCP_Reconwith the actual path to your cloned repository
Configuration file locations:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json

š Usage
Available Tools (Following Reconnaissance Methodology)
1. Information Gathering (Passive Reconnaissance)
whois_info- Get WHOIS informationdomain_history- Check domain reputation and history
2. DNS Analysis (Infrastructure Discovery)
dns_records- Get all DNS records for a domainreverse_dns- Perform reverse DNS lookupsubdomain_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 informationcheck_alive- Check if hosts respond via HTTP/HTTPSport_scan- Advanced port scanning with Nmap
4. Web Application Analysis (Application Layer)
tls_certificate- Analyze TLS certificateshttp_headers- Analyze HTTP security headersdetect_technologies- Detect web technologiesextract_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 analysisdetect_technologies- Technology fingerprintingextract_urls- URL extraction/crawlingcheck_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 here2. 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 toolscheck_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")
| Name | Required | Description | Default |
|---|---|---|---|
| targets | Yes | ||
| user_agent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions '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.
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.
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.
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.
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.
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")
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| user_agent | No |
TDQS
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.
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.
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.
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.
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.
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")
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes |
TDQS
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.
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.
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.
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.
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.
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")
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes |
TDQS
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.
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.
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.
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.
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.
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")
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| depth | No | ||
| user_agent | No |
TDQS
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.
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.
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.
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.
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.
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")
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| user_agent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It 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.
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.
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.
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.
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.
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")
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes |
TDQS
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.
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.
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.
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.
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.
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")
| Name | Required | Description | Default |
|---|---|---|---|
| ports | No | top100 | |
| target | Yes |
TDQS
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.
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.
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.
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.
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.
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")
| Name | Required | Description | Default |
|---|---|---|---|
| ip | Yes |
TDQS
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.
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.
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.
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.
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.
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"])
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | ||
| wordlist | No |
TDQS
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.
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.
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.
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.
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.
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")
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes |
TDQS
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.
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.
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.
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.
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.
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")
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes |
TDQS
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.
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.
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.
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.
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.
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")
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
Cybersecurity MCP server for URL scanning, threat intelligence, and domain reputation.
MCP server for ScanMalware.com URL scanning, malware detection, and analysis.
MCP server for Pentest-Tools.com: run scans, manage findings and reports via your preffered LLM.
Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceMCP server to perform various OSINT tasks by leveraging common network reconnaissance tools.48
- AlicenseDqualityDmaintenanceA 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.5648ISC

operant-mcpofficial
AlicenseAqualityFmaintenanceA 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.517123MIT- AlicenseAqualityBmaintenanceAn 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.11Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/sundayz-hunter/MCP_Recon'
If you have feedback or need assistance with the MCP directory API, please join our Discord server