Skip to main content
Glama
robyroro

osint-mcp-server

by robyroro

osint-mcp

tests PyPI

MCP server that gives Claude (or any MCP client) a handful of passive recon lookups for domains and IPs. No API keys needed, everything comes from public sources.

I got tired of jumping between whois, crt.sh, the Wayback Machine and Shodan tabs when looking into a domain, so this lets the model do it and put the results together.

Tools

tool

what it does

source

recon_domain

all of the below at once + a list of highlights worth a look

everything

domain_whois

registrar, created/expires, nameservers, abuse contact

RDAP (rdap.org)

ip_whois

network owner, CIDR, country, abuse contact, PTR

RDAP + reverse DNS

dns_lookup

A, AAAA, CNAME, MX, NS, TXT, SOA, CAA (or pick your own)

your resolver or a custom one

subdomains

subdomains found in certificate transparency logs

crt.sh

wayback

archived snapshots of a URL, supports example.com/*

Wayback CDX API

http_headers

status, redirect chain, headers, missing security headers

direct request

shodan_internetdb

open ports, hostnames, CPEs, known CVEs

Shodan InternetDB (free)

email_security

SPF, DMARC, MTA-STS, TLS-RPT, DKIM, graded A-F

DNS

tls_certificate

issuer, expiry, SANs, TLS version, why a cert is invalid

direct connection

asn_lookup

which AS announces an IP, who owns it, all its prefixes

RIPEstat

Everything except http_headers and tls_certificate is passive, the target never sees your traffic. Those two just open a normal connection, same as visiting the site in a browser.

Related MCP server: DomainDetails MCP Server

Install

Needs Python 3.10+.

pip install osint-mcp-server

or if you use uv you don't need to install anything, just point the client at uvx (see below).

Claude Desktop

Add this to claude_desktop_config.json:

{
  "mcpServers": {
    "osint": {
      "command": "uvx",
      "args": ["osint-mcp-server"]
    }
  }
}

If you installed with pip, "command": "osint-mcp-server" with no args works too.

Claude Code

claude mcp add osint -- uvx osint-mcp-server

Cursor, Windsurf etc. take the same JSON as Claude Desktop.

Example prompts

  • "run recon on example.com and tell me what stands out"

  • "can someone spoof email from our domain? what should we fix first?"

  • "which of these 20 domains have certificates expiring this month?"

  • "what ip ranges does AS13335 announce?"

  • "check the security headers on these 5 sites and tell me which are worst"

  • "which of the subdomains of example.com resolve to something with open ports?"

  • "what did example.com/about look like in 2015?"

Caching

API responses (RDAP, crt.sh, Wayback, RIPEstat, InternetDB) are cached in sqlite for 6 hours at ~/.cache/osint-mcp/cache.sqlite3, mostly so crt.sh doesn't get hammered. DNS, TLS and HTTP checks are always live.

OSINT_MCP_CACHE=off           # disable
OSINT_MCP_CACHE_TTL=3600      # seconds
OSINT_MCP_CACHE_PATH=/tmp/x.db

Notes

  • crt.sh and the Wayback CDX API are slow and return 502/503 pretty often. The server retries a couple of times but sometimes you just have to try again later.

  • InternetDB isn't real-time and only has IPs Shodan has actually scanned.

  • DKIM selectors can't be listed, email_security tries the common ones. Pass dkim_selectors if you know yours.

  • .ro, .de and some other ccTLDs don't have public RDAP, so domain_whois can't do much for them.

Development

git clone https://github.com/robyroro/osint-mcp
cd osint-mcp
pip install -e . pytest
pytest

Tests don't hit the network, HTTP calls are mocked.

To poke at it with the MCP inspector:

npx @modelcontextprotocol/inspector osint-mcp

Be reasonable

This only pulls public data, but still: use it on your own stuff, bug bounty targets that are in scope, or for research. Don't use it to go after people.

License

MIT

Available Tools

11 tools
asn_lookupA

Look up an IP or AS number (e.g. "AS13335") via RIPEstat: which AS announces it, who holds the AS and every prefix it announces.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
include_prefixesNo

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It discloses that the lookup uses RIPEstat and lists the output components, but it does not mention rate limits, response size (e.g., 'every prefix' could be large), or failure 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?

A single, front-loaded sentence contains the action, resource, data source, and expected output with an example. No filler or repetition.

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?

For a two-parameter tool with no output schema, the description explains the query semantics and return content, but it omits include_prefixes and any warning about potentially large prefix lists. An agent can make a basic call but lacks full context for optional behavior.

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 coverage is 0%, and the description adds meaning for the required query parameter by specifying 'IP or AS number' with an example. It does not explain include_prefixes, though the default true aligns with the mention of 'every prefix'.

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

Purpose5/5

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

The description states a specific action ('Look up') and resource ('IP or AS number'), and enumerates the returned data: announcing AS, holder, and prefixes. This clearly differentiates it from sibling tools like ip_whois or dns_lookup.

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 conveys the intended use case—resolving IP/AS numbers to AS ownership and prefix data via RIPEstat—so an agent can infer when to call it. However, it does not explicitly mention exclusions or compare against sibling tools.

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

dns_lookupA

DNS records for a domain. Defaults to A, AAAA, CNAME, MX, NS, TXT, SOA, CAA. Pass nameserver (e.g. "1.1.1.1") to query a specific resolver.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
nameserverNo
record_typesNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It usefully discloses the default record set and the optional nameserver override, but it does not describe the output format, failure behavior, or whether the query is recursive/authoritative. Partial but not comprehensive disclosure.

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 the core purpose and immediately useful defaults. No filler or redundant restatement of the tool name.

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?

For a simple 3-parameter tool with no output schema and no annotations, the description covers basic invocation and default behavior. It is missing explicit semantics for record_types and return format, but an agent can still make a reasonable basic call.

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 adds meaning for nameserver with an example and communicates the default record types, which informs how record_types behaves. However, it does not explicitly explain the record_types parameter or list all accepted values, leaving a gap.

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 resource ('DNS records for a domain') and lists the default record types, making the tool's core function clear. It doesn't explicitly differentiate it from siblings like recon_domain or domain_whois, but the DNS-record focus is distinct enough.

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 when DNS records are needed and explains how to query a specific resolver. However, it does not mention when not to use it or name alternatives for broader recon or WHOIS lookups, leaving some routing decisions to the agent.

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

domain_whoisA

Registration info for a domain via RDAP: registrar, creation/expiry dates, nameservers, status and abuse contact.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It adds useful behavioral context by naming the protocol (RDAP) and listing the returned fields, which implies a read-only live lookup. It does not cover rate limits, auth, or edge cases, but for a simple read operation this is reasonably transparent.

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

Conciseness5/5

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

A single, focused sentence that front-loads the purpose and enumerates the output fields. No filler or redundant wording.

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 tool is simple (one required parameter, read-only lookup) and the description covers purpose, protocol, and expected data fields. There is no output schema, but the field list partially addresses return values. Missing details like error behavior are minor for this tool type.

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 description coverage is 0% and the description merely repeats the parameter name ('domain') without adding format, constraints, or examples (e.g., FQDN, no protocol, punycode). For a low-coverage schema, the description should compensate for the missing parameter semantics, but it does not.

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 the resource ('domain registration info') and specifies the data fields returned (registrar, dates, nameservers, status, abuse contact). It distinguishes from sibling tools like ip_whois by explicitly identifying domain and RDAP. However, it lacks an explicit verb (e.g., 'retrieve' or 'query') and does not name sibling tools for differentiation.

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 the tool: whenever domain registration details are needed. But it provides no explicit alternatives, exclusions, or conditions ('use ip_whois for IP addresses'). The context is clear but leaves the 'when not' to inference.

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

email_securityA

Grade (A-F) how well a domain is protected against being spoofed in email: SPF, DMARC, MTA-STS, TLS-RPT and DKIM. DKIM selectors can't be listed, so a set of common ones is tried unless you pass your own.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
dkim_selectorsNo

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are present, so the description carries the full burden. It discloses the A-F output, the five protocols checked, and the non-obvious DKIM selector fallback behavior. It does not explain grading methodology or data sources, but for a read-only grader this is reasonably transparent.

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

Conciseness5/5

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

Two sentences with no wasted words. The main purpose and output are front-loaded, and the second sentence adds the key parameter nuance about DKIM selectors.

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

Completeness4/5

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

For a simple two-parameter tool with no output schema, the description covers purpose, output, standards checked, and the one non-obvious parameter. Minor gaps remain around domain format and return structure, but nothing essential is missing.

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?

Schema description coverage is 0%, so the description must compensate. It explicitly explains dkim_selectors: common selectors are tried unless the caller passes their own. The domain parameter is self-evident from the surrounding text, though no format caveat is 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 opens with a specific verb ('Grade (A-F)') and a specific resource (a domain's email spoofing protection), then enumerates the exact standards checked. This clearly distinguishes it from sibling lookup/recon tools like dns_lookup or domain_whois.

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 intended use is implied clearly: use it when you need an email-security grade for a domain. However, it does not explicitly name alternatives or state when not to use it, leaving some routing judgment to the agent.

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

http_headersA

Fetch a URL and return status, redirect chain, response headers and which common security headers are missing.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It transparently states that this performs a live fetch and enumerates what is returned. It does not mention potential side effects like triggering requests on the target or rate limits, but 'Fetch a URL' makes the active network behavior clear.

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

Conciseness5/5

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

A single, well-structured sentence that front-loads the action and packs all key output details without wasted words. 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?

For a one-parameter tool with no output schema, the description covers the main behavior and return contents well. It lacks URL format expectations and error-handling notes, but these are minor for a simple HTTP header inspection tool.

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 description coverage is 0%, so the description must compensate. It only repeats the parameter name ('URL') without specifying accepted formats, whether a scheme is required, or whether IPs/domains are valid. The agent gets no additional meaning beyond the schema's 'url' string field.

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 names a specific verb ('Fetch'), a concrete resource ('a URL'), and the exact outputs: status, redirect chain, response headers, and missing security headers. This clearly distinguishes it from the DNS/whois/subdomain siblings.

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

Usage Guidelines4/5

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

The purpose is clear enough that an agent can infer when to use it: whenever HTTP-level response information is needed. It does not explicitly name alternatives or exclusions, but the sibling tools are sufficiently different in domain that the intended context is obvious.

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

ip_whoisA

Who owns an IP: network name, CIDR, country, org, abuse contact and reverse DNS (PTR).

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of behavioral disclosure. It implies a read-only lookup by saying 'Who owns an IP', but it does not explicitly state that it is non-mutating, mention external network dependencies, or note possible latency or failure modes.

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 a single compact sentence that front-loads the core question and then lists the useful output fields without wasted words. It is appropriately sized for a simple one-parameter tool.

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 the tool's low complexity and single parameter, the description covers the basic purpose and result fields. However, with no annotations and no output schema, it omits details about response structure, error conditions, and how this tool relates to nearby 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?

The schema gives no description for the single `ip` parameter, so the description must compensate. 'Who owns an IP' confirms the parameter expects an IP address, but it does not specify whether IPv4, IPv6, or CIDR-style inputs are accepted, leaving some ambiguity.

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 identifies the resource (an IP address) and the purpose (ownership lookup), and it enumerates the returned data: network name, CIDR, country, org, abuse contact, and reverse DNS. It is clear enough to distinguish from domain-oriented siblings, though it does not explicitly call out a sibling alternative.

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 the tool—when you need to know who owns an IP address—but it gives no explicit guidance about when not to use it or when to prefer siblings like domain_whois or asn_lookup. The usage context is inferable from the name and content, not directly stated.

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

recon_domainA

Passive overview of a domain in one call: whois, DNS, email security grade, TLS certificate, HTTP security headers, subdomains from CT logs, and ASN / reverse DNS / Shodan InternetDB for its first few IPs. Ends with a 'highlights' list of things worth a look. Takes 10-60s, mostly waiting on crt.sh, pass include_subdomains=false for a faster run.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes
include_subdomainsNo

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool is 'passive' (non-intrusive), has a 10-60s latency, and depends on external services (crt.sh). It mentions the output ends with a 'highlights' list, giving a sense of the return value. It does not mention rate limits or failure modes, but for a read-only aggregation tool, this is reasonably transparent.

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

Conciseness5/5

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

The description is two sentences with no redundancy. The first sentence packs the core functionality into a list without excess detail, and the second provides latency and an optimization hint. It is front-loaded with the purpose and scoping. Every word 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?

The tool is complex, aggregating many data sources, and the description covers its main components, latency, and a performance knob. It mentions the 'highlights' output but does not detail the full response structure. Since there is no output schema, a bit more on the output format could help, but the description is sufficient for an agent to decide when to call it. Missing edge-case behavior (e.g., invalid domains) is a minor 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 input schema has 0% description coverage, so the description must compensate. The description explains the 'include_subdomains' parameter indirectly by noting that passing false makes the run faster, implying it controls subdomain enumeration. The 'domain' parameter is self-evident from the tool name. It adds a performance nuance but does not fully describe the effect of include_subdomains on results (e.g., missing subdomain data). This is a partial compensation, hence a 3.

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

Purpose5/5

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

The description clearly states the tool's purpose as a 'Passive overview of a domain in one call' and enumerates the data sources (whois, DNS, email security, TLS, HTTP headers, CT-log subdomains, ASN, reverse DNS, Shodan). This distinguishes it from the sibling tools, which each cover a single data source. The verb 'recon' and resource 'domain' are specific, and the aggregation is explicit.

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 conveys when to use this tool: when a broad passive overview is needed in one call. It implies that specific tools (siblings) are for targeted queries, though it does not explicitly name alternatives. It provides a performance tip ('pass include_subdomains=false for a faster run') and a latency range (10-60s), which helps the agent decide. Missing explicit 'when not to use' guidance, but the context is clear enough for a 4.

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

shodan_internetdbA

Open ports, hostnames, CPEs, tags and known CVEs for an IP from Shodan's free InternetDB (no API key, data can be a few days old).

ParametersJSON Schema
NameRequiredDescriptionDefault
ipYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are present, so the description carries the full disclosure burden. It transparently notes that data can be a few days old and requires no API key, which are key behavioral traits. It does not cover error handling or rate limits, but for a simple read-only lookup this is adequate.

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 a single, well-structured sentence that front-loads the primary outputs, then notes the source and caveat. There is zero waste, and all information 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?

Given the low complexity (one param, no output schema, no annotations), the description is sufficiently complete. It explains what is returned, the data source, and the staleness caveat. Missing details like error handling or rate limits are minor for a tool of this simplicity.

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 single parameter 'ip' is a string with no schema description (0% coverage). The description adds that the tool works on an IP but does not specify format (IPv4/IPv6) or any validation. Since the parameter name and description align, meaning is clear, but the description adds minimal value beyond the 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 states a specific resource (open ports, hostnames, CPEs, tags, known CVEs) and the target (an IP), and distinguishes itself from sibling tools that are domain-oriented. It also names the source (Shodan's InternetDB) and the condition (free, no API key), leaving no ambiguity about what the tool does.

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 clearly implies usage for IP-based reconnaissance and highlights the free/no-key aspect, which differentiates it from paid or key-requiring alternatives. It does not explicitly name alternatives or exclusions, but the scope is evident given the sibling set (mostly domain tools).

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

subdomainsB

Subdomains seen in public TLS certificates (crt.sh). Can be slow for large domains.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral context. It does disclose that data comes from crt.sh public TLS certificates and warns about slowness. However, it does not mention output format, completeness limitations, or external dependency behavior, so it is only partially 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 a single concise sentence that front-loads the core purpose and includes a relevant performance warning. No filler or redundant content.

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?

For a one-parameter, read-only tool, the description covers the key purpose, source, and a performance warning. It is missing response format and parameter format details, but it is adequate for basic invocation. Clear gaps remain.

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

Parameters2/5

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

The schema has 0% description coverage for the single 'domain' parameter, and the description does not compensate. It does not specify the expected format (e.g., no scheme, whether subdomains are accepted, apex-only) or provide an example.

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 identifies what the tool returns (subdomains) and its data source (public TLS certificates via crt.sh). This distinguishes it from siblings like dns_lookup or tls_certificate, though it lacks an explicit verb such as 'List' or 'Enumerate'.

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 a performance caveat ('Can be slow for large domains') but gives no explicit guidance on when to use this tool versus alternatives like recon_domain, dns_lookup, or tls_certificate. Usage context is only implied, not stated.

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

tls_certificateA

Connect to host:port and read its TLS certificate: issuer, validity dates, days until expiry, SANs, negotiated TLS version. Invalid certs (expired, self-signed, wrong host) are reported with the reason.

ParametersJSON Schema
NameRequiredDescriptionDefault
hostYes
portNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It communicates that the tool performs a network connection (behavior) and reports specific information. It also mentions how invalid certs are handled (reported with reason), which is a behavioral nuance. It doesn't mention timeouts or error handling beyond invalid certs, but the core behavior is disclosed. The description does not contradict any annotations since none are provided.

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, two sentences, and front-loaded with the main action ('Connect to host:port and read its TLS certificate'). It lists key output details and then handles edge cases. There is no waste, but it could be more structured (e.g., separate sentences for parameters and outputs). Overall efficient.

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 complexity (network call, multiple output fields) and lack of output schema, the description is fairly complete. It covers what the tool does, the key outputs, and how invalid certs are reported. It doesn't mention timeouts or rate limits, but for a read-only tool, this is acceptable. It might benefit from noting that the connection is outbound and could require network access, but not essential.

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 coverage is 0%, so the description must compensate for parameters. The description implies the 'host' parameter is the target host and 'port' is the port to connect to (default 443), but does not explicitly detail these parameters. It adds some context by mentioning 'host:port' in the description, but for an agent, the parameter semantics are mostly clear from the schema names and defaults. The description could be more explicit about the meaning of each parameter, but it is adequate.

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 connects to a host:port and reads its TLS certificate, listing specific details like issuer, validity dates, days until expiry, SANs, and negotiated TLS version. It distinguishes itself from siblings by focusing on TLS certificate inspection, which is unique among the listed tools.

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

Usage Guidelines4/5

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

The description implies when to use it: when you need TLS certificate details for a given host and port. It does not explicitly mention alternatives, but among siblings, none are about certificates, so it is clear this is the tool for that task. It also notes invalid certs are reported with reason, providing context for edge cases.

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

waybackC

Archived snapshots of a URL from the Wayback Machine. Use a wildcard like "example.com/*" to list everything archived under a site.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes
limitNo
year_toNo
year_fromNo
newest_firstNo

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It does convey that the tool returns archived snapshots and that a wildcard lists everything under a site, but it does not describe response format, pagination, rate limits, or whether snapshots are metadata or content.

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 compact and front-loaded, with no filler. The wildcard example earns its place, though the first sentence is a fragment rather than a complete statement.

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?

For a tool with five parameters, no output schema, and no annotations, this description is too sparse. It omits response format, semantics for four parameters, and any broader usage context beyond the wildcard trick.

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 description coverage is 0%, so the description must compensate. It only clarifies the url parameter through the wildcard example; limit, year_to, year_from, and newest_first are left entirely to their self-explanatory names.

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 identifies the resource as archived snapshots from the Wayback Machine and mentions wildcard listing, which is specific enough to distinguish it from the sibling recon tools. However, it lacks an explicit verb like 'retrieve' or 'list,' so it reads as a noun phrase rather than a clear action.

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 choose this tool over alternatives such as dns_lookup or http_headers. The only usage hint is the wildcard example, which is about input syntax, not selection context.

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. 11 tool updatesv0.2.0
    • First observedasn_lookup
    • First observeddns_lookup
    • First observeddomain_whois
    • First observedemail_security
    • First observedhttp_headers
    • First observedip_whois
    • First observedrecon_domain
    • First observedshodan_internetdb
    • First observedsubdomains
    • First observedtls_certificate
    • First observedwayback

TDQS

A3.8/5.0

Scored across 11 tools

Disambiguation5/5

Each tool targets a distinct data source or type: recon_domain is an aggregated overview, while domain_whois, ip_whois, dns_lookup, subdomains, wayback, http_headers, shodan_internetdb, email_security, tls_certificate, and asn_lookup each focus on a unique aspect (e.g., registration, DNS, certificates, email). There is minimal overlap; for example, subdomains and asn_lookup are clearly separate.

Naming Consistency5/5

All tool names follow a consistent noun-based pattern (e.g., domain_whois, ip_whois, dns_lookup, tls_certificate). There is no mixing of styles or ambiguous verbs; the naming clearly indicates the data type being queried.

Tool Count5/5

With 11 tools, the collection is well-scoped for a recon/information-gathering server. Each tool serves a distinct purpose in the security recon workflow, and the number is within the ideal range, avoiding both redundancy and insufficiency.

Completeness4/5

The toolset covers the major security recon surfaces: domain info, IP info, DNS, subdomains, HTTP headers, TLS, email security, and ASN. Minor gaps include missing passive DNS history, port scanning beyond InternetDB, or vulnerability scanning APIs, but agents can achieve common recon goals with the provided tools.

Maintenance

ActivityNo data
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers