Skip to main content
Glama
dewhush
by dewhush

pathfinder-mcp

MCP server exposing offensive recon tooling to LLM agents — Claude Code, OpenCode, Codex, Hermes, any MCP client.

Pathfinder wraps the recon CLI tools security researchers already use (subfinder, httpx, nmap, ffuf, nuclei) into a single MCP server, so an LLM agent can plan and execute reconnaissance itself — not just tell you which commands to run.

  • Phase 1: passive subdomain enum, DNS, WAF detection, tech fingerprint, wayback discovery

  • Phase 2: active port scan, origin-bypass checks, nuclei templates

  • Phase 3: session state — the agent chains outputs across tools (scan_result tokens) instead of re-parsing raw text

  • Phase 4: HTML/JSON report export, target diffing (today vs. yesterday)

Quick start

One command, no clone, no venv (needs uv):

uvx --from "git+https://github.com/dewhush/pathfinder-mcp" pathfinder

Or the classic way:

git clone https://github.com/dewhush/pathfinder-mcp.git
cd pathfinder-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e .

Related MCP server: Bug Bounty Assistant MCP

Requirements

Pathfinder wraps these CLIs. It degrades gracefully — a tool that can't find its binary reports MISSING_TOOL rather than crashing. Install the ones you want:

Tool

Used by

Install

subfinder

subdomain_enum

go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest

httpx

http_probe, tech_detect, waf_detect

go install -v github.com/projectdiscovery/httpx/cmd/httpx@latest

nmap

port_scan

apt install nmap

ffuf

endpoint_discover

apt install ffuf or go install github.com/ffuf/ffuf/v2@latest

nuclei

nuclei_scan

go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest

No external API keys required. Everything is local or free public APIs (CertSpotter, HackerTarget, AlienVault OTX, urlscan.io, Wayback).

Connect to your agent

Claude Code (local Python):

claude mcp add pathfinder -- python -m pathfinder.server

Claude Code (uvx — no local Python, no clone):

claude mcp add pathfinder -- uvx --from "git+https://github.com/dewhush/pathfinder-mcp" pathfinder

Claude Code (Docker — no local Python needed):

# pull the release tarball and load it (no registry auth needed)
curl -L -o /tmp/pathfinder.tar.gz \
  https://github.com/dewhush/pathfinder-mcp/releases/download/v0.1.0/pathfinder.tar.gz
gunzip /tmp/pathfinder.tar.gz
docker load -i /tmp/pathfinder.tar
claude mcp add pathfinder -- docker run --rm -i ghcr.io/dewhush/pathfinder-mcp:0.1.0

Any MCP client (Docker, manual command): docker run --rm -i ghcr.io/dewhush/pathfinder-mcp:0.1.0

The Docker image bundles subfinder, httpx, nmap, ffuf and nuclei — the full toolset works with zero local installs. Local Python still needs those CLIs on PATH; anything missing degrades to MISSING_TOOL instead of crashing.

Hermes:

hermes mcp add pathfinder --command "python -m pathfinder.server"

OpenCode / Codex / other MCP clients: add to your config:

{
  "mcpServers": {
    "pathfinder": {
      "command": "python",
      "args": ["-m", "pathfinder.server"]
    }
  }
}

Scope: Pathfinder is a tool-wrapper. You are responsible for running it only against infrastructure you own or are authorized to test.

Tools

Passive

subdomain_enum — passive subdomain enumeration (CertSpotter + HackerTarget + OTX + urlscan + subfinder if present).

subdomain_enum(domain="example.com", source="all")
subdomain_enum(domain="example.com", source="otx")

dns_resolve — A / AAAA / MX / TXT / NS / CNAME records for a host.

dns_resolve(host="example.com", record_type="A")

tech_detect — web technology fingerprint via httpx.

tech_detect(url="https://example.com")

wayback_discover — historical URLs from the Wayback Machine for a host.

wayback_discover(host="example.com", limit=500)

Active

http_probe — probe a list of hosts for live HTTP(S) services.

http_probe(hosts=["sub.example.com", "api.example.com"])

port_scan — nmap top-N ports on a host.

port_scan(host="example.com", top_ports=1000)

waf_detect — WAF/CDN identification from response headers, TLS cert, and WAF fingerprints (Cloudflare, Akamai, AWS, Sucuri, Imperva, Cloudfront).

waf_detect(url="https://example.com")

origin_bypass_check — check whether a WAF-protected host resolves directly to its origin IP, bypassing the WAF. Resolves the host, compares the IP against known WAF/CDN ranges, and reports ORIGIN_EXPOSED / WAF_PROTECTED / UNKNOWN.

origin_bypass_check(host="example.com")

This is the technique documented in WAF origin bypass via direct IP access. If a host reports ORIGIN_EXPOSED, the origin IP can be reached directly with a spoofed Host header:

curl -H "Host: example.com" https://<origin-ip>/

endpoint_discover — fuzz common paths with ffuf.

endpoint_discover(url="https://example.com", wordlist="raft-small")

Built-in wordlists: raft-small (default), raft-medium, raft-big, common, seclists (expects /usr/share/seclists). Use wordlist="/abs/path" for a custom file.

nuclei_scan — run nuclei templates against a target.

nuclei_scan(target="https://example.com", templates=["cves", "exposures"])
nuclei_scan(target="https://example.com", severity=["high", "critical"])

Session chaining

Every tool returns structured JSON plus a scan_token. Pass it back into any other tool as from_token — Pathfinder resolves the token to the relevant hosts/URLs from the current session, so the agent chains steps without you re-typing targets:

1. subdomain_enum(domain="example.com")      → scan_token=abc123, 42 hosts
2. http_probe(from_token="abc123")           → scan_token=def456, 7 live
3. waf_detect(from_token="def456")           → 1 origin exposed
4. origin_bypass_check(from_token="def456")  → origin IP confirmed

Sessions are per-process and in-memory — nothing leaves the machine.

Development

pip install -e ".[dev]"
pytest                       # unit tests, no network, all tools mocked
ruff check src tests
ruff format src tests

License

MIT — 0xDew. Authorized use only.

Available Tools

10 tools
dns_resolveDns ResolveC

Resolve DNS records for a host.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYesHostname, e.g. "example.com".
from_tokenNoOptional scan_token from an earlier call.
record_typeNoA, AAAA, MX, TXT, NS, CNAME, or ALL.A

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.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 the full behavioral burden. 'Resolve' implies a read-only lookup, but the description says nothing about rate limits, error behavior on NXDOMAIN, or how from_token chaining affects the call. With no annotations this is a significant gap for a tool whose behavior is only partly self-evident.

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?

A single front-loaded sentence with no wasted words. It is appropriately sized, though almost too terse to be maximally useful.

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?

An output schema exists, so return values need not be explained. However, with three parameters, no annotations, and many overlapping sibling tools, the description omits the usage context and behavioral hints an agent would need to call it confidently.

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 100%, so the schema already documents host, from_token, and record_type (including the A/AAAA/MX/TXT/NS/CNAME/ALL set and the default of A). The description adds nothing beyond the schema, so the baseline 3 applies.

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 a specific verb and resource ('Resolve DNS records for a host'), so an agent knows exactly what the tool does. It does not distinguish itself from siblings like subdomain_enum or http_probe, but the purpose itself is unambiguous.

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?

There is no guidance on when to use this tool versus alternatives such as subdomain_enum (which also involves DNS enumeration) or when not to use it. The agent must infer usage purely from the name.

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

endpoint_discoverEndpoint DiscoverC

Fuzz common paths on a URL with ffuf.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesBase URL, e.g. "https://example.com".
wordlistNoNamed list (raft-small, raft-medium, raft-big, common, seclists) or an absolute path to a wordlist file.raft-small
from_tokenNoOptional scan_token from an earlier call.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.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 the full behavioral burden, and it discloses almost nothing beyond naming ffuf. It omits that this is an active, noisy, authorization-requiring scan, and says nothing about resumption via from_token or rate/impact considerations.

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?

A single front-loaded sentence with zero filler, correctly placing the action and target first. It is arguably too terse for the tool's complexity, but nothing in it is wasted.

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?

An output schema exists, so return values need not be explained, but the definition still leaves major gaps: no usage routing against wayback_discover, no disclosure that this is an active fuzzing scan, and no behavioral context for a tool with zero annotations.

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 100%, so url, wordlist, and from_token are already fully documented in the schema (including the raft-* list names and the resume semantics of from_token). The description adds no parameter detail, so the baseline 3 applies.

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?

States a specific verb (fuzz) and resource (common paths on a URL) and names the underlying engine (ffuf), so the agent knows this is path/endpoint brute-forcing. It does not differentiate from the sibling wayback_discover, which also surfaces endpoints, leaving some overlap unresolved.

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 gives no when-to-use context: nothing about when to prefer this over wayback_discover or http_probe, no prerequisites, and no mention of authorization or scan-noise expectations. The agent must infer usage entirely from the name and siblings.

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

http_probeHttp ProbeC

Probe hosts for live HTTP(S) services.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostsNoList of hostnames/URLs. Required unless from_token is given.
from_tokenNoReuse hosts discovered by an earlier call (e.g. subdomain_enum).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and provides almost nothing: no note on network traffic generation, rate limits, whether the probe is non-destructive, timeouts, or concurrency. For an active network-probing tool, that is a significant gap.

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

Conciseness4/5

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

A single front-loaded sentence with zero filler. It is efficient, though brevity here edges toward under-specification rather than crisp conciseness.

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 output schema exists, so return values need not be explained, and both parameters are documented. What is missing is the when-to-use context and any behavioral notes for a tool that generates live network traffic.

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 100%, so both parameters are fully documented in the schema and the baseline of 3 applies. The description adds no extra syntax or semantics beyond what the schema already provides.

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 a specific verb (Probe) and resource (hosts for live HTTP(S) services), so the agent knows it is an HTTP liveness check. However, it does not distinguish itself from siblings like port_scan or tech_detect, which also touch live services.

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 on when to use this tool versus port_scan, tech_detect, or dns_resolve. The presence of a from_token parameter chaining from subdomain_enum is a usage hint, but it lives in the schema, not the description.

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

nuclei_scanNuclei ScanC

Run nuclei templates against a target.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetYesURL or host, e.g. "https://example.com".
severityNoFilter by severity, e.g. ["high", "critical"].
templatesNoTemplate dirs or IDs, e.g. ["cves", "exposures"].
from_tokenNoOptional scan_token from an earlier call.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.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 the full burden. It states the action but omits key behavioral traits: whether the scan is read-only, whether it sends network requests, authorization requirements, rate limits, or potential impact on the target. This is a significant gap for a security scanning tool.

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

Conciseness4/5

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

The description is a single front-loaded sentence with zero wasted words. However, its extreme brevity leaves important context unaddressed, which is captured under other dimensions.

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?

An output schema exists, so return values need not be explained. Yet with no annotations, the description should at least hint at usage context or behavioral traits. It does not, leaving the agent with insufficient information to confidently select or invoke this tool among many security scanning siblings.

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 100%, so the schema already documents all four parameters thoroughly. The description only implicitly references target and templates. Baseline 3 applies when the schema does the heavy lifting with no added meaning from the description.

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 a specific verb ('Run') and resource ('nuclei templates against a target'), making the core action clear. It does not differentiate the tool from sibling scanning tools like port_scan or http_probe, so it falls short of a 5.

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

Usage Guidelines2/5

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

No when-to-use guidance is provided. The description does not mention alternatives, prerequisites, or when this tool should be chosen over siblings such as tech_detect or waf_detect.

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

origin_bypass_checkOrigin Bypass CheckA

Check whether a WAF-protected host resolves directly to its origin IP.

If the A record lands outside known WAF/CDN ranges, the origin is exposed and the WAF can be bypassed by hitting that IP with a spoofed Host header.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYesHostname, e.g. "example.com".
from_tokenNoOptional scan_token from an earlier call.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations provided, the description carries the full behavioral burden, and it does disclose the semantics of the outcome: an A record landing outside known WAF/CDN ranges means the origin is exposed and bypassable. It does not state that this is a non-mutating remote lookup, nor mention rate limits or any auth/scope constraints.

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, zero filler, with the core action front-loaded in the first sentence and the interpretive payoff in the second. Every clause earns its place.

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?

An output schema exists, so return values need not be described, and the description usefully explains how to interpret a positive result. It is nearly complete, though it omits prerequisites (e.g., that discovery should precede it) and any note on the read-only nature of the check given the absence of annotations.

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 100%, so the schema already documents both 'host' and the optional 'from_token'. The description adds no parameter-level detail such as format, chaining behavior of the token, or what the tool does when the token is omitted, so the baseline of 3 applies.

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?

States a specific verb and resource ('Check whether a WAF-protected host resolves directly to its origin IP') and even explains the mechanism that makes the result meaningful. It does not explicitly distinguish itself from overlapping siblings like dns_resolve or waf_detect, so an agent must infer the difference from the security framing alone.

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 by describing the precondition ('WAF-protected host') and what a positive finding means (WAF can be bypassed via spoofed Host header). However, it never states when to reach for this tool versus dns_resolve or waf_detect, nor any ordering or exclusion guidance.

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

port_scanPort ScanC

nmap top-N port scan of a host.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYesHostname or IP.
top_portsNoHow many common ports to scan (default 1000).
from_tokenNoOptional scan_token from an earlier call.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it says nothing about the intrusive nature of an active scan, authorization requirements, expected runtime, or rate limiting. The presence of a from_token parameter strongly implies a resumable/long-running scan, but the description never explains that behavior.

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

Conciseness4/5

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

A single front-loaded fragment with zero filler, which is efficient. It is arguably under-specified rather than bloated, so it scores well on size but is not a model of helpful structure.

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?

An output schema exists, so return values need not be described, and the schema fully documents parameters. What is missing is the behavioral and routing context an agent needs: when this scan is appropriate, its intrusive character, and the resumption semantics implied by from_token.

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 100%, so host, top_ports, and from_token are already documented in the schema. The description's 'top-N' phrasing loosely echoes top_ports but adds no format, range, or usage nuance beyond the schema.

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

Purpose4/5

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

States a specific verb and resource ('port scan of a host') and adds the scanner family ('nmap top-N'), which is more than a restatement of the name. However, it does nothing to distinguish itself from the other scanning siblings such as nuclei_scan or http_probe, which an agent must disambiguate.

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?

There is no indication of when to run a port scan versus nuclei_scan, http_probe, or waf_detect, and no prerequisites or ordering guidance (e.g. after dns_resolve or subdomain_enum). Usage is left entirely to inference.

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

subdomain_enumSubdomain EnumC

Passive subdomain enumeration for a domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesRoot domain, e.g. "example.com".
sourceNoWhich source(s) to query. Default "all" merges everything: certspotter (CT log), hackertarget (hostsearch), otx (AlienVault passive DNS), urlscan (scan archive), plus the local "subfinder" binary if installed. Any single name can be passed to use one source only.all
from_tokenNoOptional scan_token from an earlier call.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries full behavioral burden. It discloses only that enumeration is 'passive' (no direct target contact), but says nothing about external source dependencies, rate limits, or whether results are merged/deduplicated. For a 3-param recon tool with zero annotation coverage, this is thin.

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?

A single front-loaded sentence with zero waste, but for a tool with three parameters and no annotations it crosses from concise into under-specified. Efficiency here reflects absence of content rather than disciplined editing.

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?

Schema is fully documented and an output schema exists, so return values need not be explained. However, for a recon tool with no annotations, the description omits any behavioral context (passive-source guarantees, environment/binary dependencies) that an agent would need to call it confidently.

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 100%, and the source parameter's schema text already documents the merge behavior and each source name in detail. The description adds no parameter meaning beyond the schema, so baseline 3 applies.

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?

Specific verb+resource: 'Passive subdomain enumeration for a domain' tells an agent exactly what the tool returns. The 'passive' qualifier distinguishes it from active siblings like dns_resolve or port_scan, but no sibling is named explicitly.

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 when-to-use guidance, no prerequisites, and no routing to alternatives such as endpoint_discover or dns_resolve. The agent must infer context from the tool name and siblings alone.

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

tech_detectTech DetectC

Fingerprint web technology behind a URL (httpx tech-detect).

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesTarget URL, e.g. "https://example.com".
from_tokenNoOptional scan_token from an earlier call.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.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 the full behavioral burden, and it adds almost nothing: it does not state that it actively connects to and fetches the target URL, does not confirm it is read-only/non-destructive, and gives no hints about rate limits, timeouts, or failure modes. The output schema covers return values, but the operational profile is undocumented.

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?

A single front-loaded sentence with no waste and the core capability stated immediately. It is perhaps too terse for the tool's role, but there is no padding or 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?

With an output schema present and 100% parameter coverage, the structured data does much of the work, so the description is minimally viable. Still, for a network-touching tool with no annotations and three closely related sibling scanners, the absence of usage and behavioral guidance leaves meaningful gaps.

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 100%, so both `url` and `from_token` are already explained in the schema, including that `from_token` is an optional scan_token from an earlier call. The description adds no extra parameter meaning, so the baseline 3 applies.

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?

'Fingerprint web technology behind a URL' names a concrete verb (fingerprint) and resource (web tech stack at a URL), and the parenthetical '(httpx tech-detect)' anchors it to a known capability. However, it never distinguishes itself from siblings like http_probe or waf_detect, which an agent must disambiguate against.

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?

There is no when-to-use, when-not-to-use, or alternative routing guidance at all. An agent facing http_probe, waf_detect, and tech_detect has nothing in the description to decide between them.

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

waf_detectWaf DetectC

Detect a WAF/CDN in front of a URL from headers and response body.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesTarget URL, e.g. "https://example.com".
from_tokenNoOptional scan_token from an earlier call.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.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 the full burden. It discloses the detection method but says nothing about whether the call performs live network requests, whether it is read-only or safe to repeat, or how the optional from_token affects behavior.

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

Conciseness4/5

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

A single efficient sentence with no wasted words, and the key information (target and method) is front-loaded. It could have used the space to add usage context instead of stopping so early.

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?

An output schema exists, so return values need not be explained. However, for a detection tool with no annotations, the description omits the when-to-use context and any behavioral notes about live probing, leaving it only minimally 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 description coverage is 100%, so both parameters are already documented in the schema, including the example URL format and the from_token's origin. The description adds no additional parameter meaning beyond that baseline.

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?

States a specific verb ('Detect') and resource ('WAF/CDN in front of a URL') plus the method used (headers and response body). It is clearly distinguishable from siblings like tech_detect or http_probe by naming the detection target, though it does not explicitly contrast itself with them.

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 on when to use this versus tech_detect, http_probe, or origin_bypass_check, and no mention of prerequisites such as needing the target to be reachable. The agent must infer the use case from the name alone.

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

wayback_discoverWayback DiscoverB

Pull historical URLs for a host from the Wayback Machine.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYesHostname, e.g. "example.com".
limitNoMax URLs to return (default 500).
from_tokenNoOptional scan_token from an earlier call.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 carries the full behavioral burden. It implies a read-only external lookup but does not disclose rate limits, authentication needs, whether results are deduplicated, how pagination works, or what side effects exist.

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?

A single, front-loaded sentence with no wasted words. It states the core operation and source immediately.

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 output schema exists, so return values need not be explained, and the input schema is fully documented. However, with no annotations, the description still omits enough behavioral and usage context that an agent lacks guidance on when to choose this over sibling tools.

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 100%, so all three parameters are already documented in the input schema. The description adds no parameter meaning beyond what the schema provides, making the baseline 3 appropriate.

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?

States a specific verb ('Pull'), resource ('historical URLs'), target ('for a host'), and source ('from the Wayback Machine'). It clearly distinguishes itself from the sibling recon tools by naming the archive source, but it does not explicitly contrast itself with tools like endpoint_discover or subdomain_enum.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no exclusions, and no alternatives. It implies the tool is for gathering historical URLs, but it does not tell an agent when this is preferable to endpoint_discover, subdomain_enum, or other siblings.

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

Tool Schema Changelog

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

  1. 1 tool update
    • Changedsubdomain_enum1 field changed
      • changedInput schema / properties / source / description
        Previous value: -"\"crtsh\" (certificate transparency, no deps),\n    \"subfinder\" (needs the subfinder binary),\n    or \"all\" (default — merge both)."New value: +"Which source(s) to query. Default \"all\" merges everything:\n    certspotter (CT log), hackertarget (hostsearch),\n    otx (AlienVault passive DNS), urlscan (scan archive),\n    plus the local \"subfinder\" binary if installed.\n    Any single name can be passed to use one source only."
  2. 10 tool updatesv0.1.0
    • First observeddns_resolve
    • First observedendpoint_discover
    • First observedhttp_probe
    • First observednuclei_scan
    • First observedorigin_bypass_check
    • First observedport_scan
    • First observedsubdomain_enum
    • First observedtech_detect
    • First observedwaf_detect
    • First observedwayback_discover

TDQS

B3.4/5.0

Scored across 10 tools

Disambiguation4/5

Most tools target distinct phases of reconnaissance (enumeration, probing, detection, scanning). Slight overlap exists between tech_detect and waf_detect, both analyzing URL response characteristics, and between http_probe and port_scan in service discovery, but descriptions clarify boundaries.

Naming Consistency5/5

All tool names follow a consistent snake_case noun_verb pattern (tech_detect, port_scan, dns_resolve, etc.), making the set highly predictable and readable.

Tool Count5/5

10 tools is well-scoped for a reconnaissance toolkit, covering the essential discovery, fingerprinting, and scanning operations without redundancy or bloat.

Completeness4/5

The set covers subdomain enumeration, DNS resolution, port scanning, HTTP probing, technology/WAF detection, origin bypass checks, historical URL discovery, endpoint fuzzing, and vulnerability scanning. Minor gaps include whois/ASN lookups or SSL/TLS inspection, but core recon workflows are well supported.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    A scope-aware bug-bounty & reconnaissance MCP server that works out of the box on the Python standard library and augments itself with your favourite CLI tools when they're present.
    22
    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
  • A
    license
    Not graded
    quality
    C
    maintenance
    An MCP server providing 15 OSINT tools over free, public sources for AI agents, enabling domain reconnaissance, subdomain discovery, DNS lookups, host profiling, CVE search, and more without API keys.
    MIT