Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

OSINT

PYPI · OSINT-MCP-SERVER

Domain and website investigations: batch recon, shared infrastructure, CT history and public lookups

Available components

0 this week 94 Trust /100

Last scanned (4 hours ago)

Scores higher than 97% of PyPI servers

Category Security

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
  • 1 of 38 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to robyroro/osint-mcp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 30 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability69
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2634 tokens (~175/item across 15 items; 15 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 15 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 16 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 5 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 4 Nov 26 −15
    • Malware scan: pass → unverified ▼ security
  • 3 Nov 26 +15
    • Malware scan: unverified → pass ▲ security
  • 30 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
  • 29 Oct 26 +15
    • Malware scan: unverified → pass ▲ security
  • 28 Oct 26 −15
    • Malware scan: pass → unverified ▼ security
  • 26 Oct 26 +1
    • Stability: 0.97 → pass security
  • 24 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Analysed pypi/osint-mcp-server@0.3.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem pypi
Reason Verified
Discovered via Registry attestation endpoint
Source repo robyroro/osint-mcp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/robyroro/osint-mcp/.github/workflows/publish.yml@refs/tags/v0.3.0
Rekor log index 3092675884
Predicate type PyPI publish attestation https://docs.pypi.org/attestations/publish/v1
Subject digest sha256:ca08fed3a923ffefd0ff10d2f73988d5167b716a19d42dcd8ecf8a75c2ca65a6

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Dependencies 38 packages
Packages resolved 38
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 15 exposed · ~2,529 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
asn_lookup ~184

Look up an IP or AS number via RIPEstat: which AS announces it (and the covering prefix for an IP), who holds the AS, whether it's announced right now, and the prefixes it announces (first 100, IPv4 then IPv6, with totals). Works for every RIR, not only RIPE. Use to find the hosting / network provider behind an IP or to map an organisation's address space. Use ip_whois for the registration record and abuse contact. Cached for 6h.

NameTypeReqDescription
include_prefixesboolean–Also list the prefixes the AS announces. Set false when you only need the holder.
querystringyesAn IP address ("1.1.1.1") or an AS number, with or without the AS prefix ("AS13335" or "13335").

No output schema declared.

No examples provided.

certificate_history ~119

Read crt.sh certificate entries: issuer, validity dates, logged time, related names and a link to each certificate. Deduplicates certificate IDs and reports truncation. No direct connection to the target. Uses the same six-hour cache as subdomains. CT history does not show what is served now.

NameTypeReqDescription
domainstringyesDomain name, e.g. "example.com". A full URL works too, only the hostname is used.
limitinteger–Maximum certificate entries, from 1 to 100, newest logged first.

No output schema declared.

No examples provided.

compare_domains ~89

Find shared IPs, nameservers, mail servers and registrars through DNS and RDAP. Returns the records behind each match and unavailable checks. No HTTP or TLS connection to the sites. Shared hosting is common, so a match does not prove common ownership. Cached RDAP can be up to six hours old.

NameTypeReqDescription
domainsarrayyesTwo to six distinct domains or URLs to compare.

No output schema declared.

No examples provided.

dns_lookup ~208

Live DNS records for a domain, as {"records": {"A": [...], "MX": [...]}}. Types with no records are left out, a type that doesn't answer within 5s shows "<timeout>", and a domain that doesn't exist returns an NXDOMAIN error. Use for raw records. email_security already reads and grades the SPF / DMARC / DKIM TXT records, and recon_domain includes this lookup.

NameTypeReqDescription
domainstringyesDomain name, e.g. "example.com". A full URL works too, only the hostname is used.
nameserver––IP of the resolver to ask, e.g. "1.1.1.1", or one of the domain's own nameservers to skip caches. Defaults to the system resolver.
record_types––Record types to query, e.g. ["A", "MX", "TXT"]. Defaults to A, AAAA, CNAME, MX, NS, TXT, SOA and CAA.

No output schema declared.

No examples provided.

domain_whois ~142

Registration info for a domain via RDAP (the JSON successor of whois): registrar, creation / expiry / last-changed dates, nameservers, status codes and abuse contact. Use for who registered a domain and when it expires. For who hosts it, run ip_whois or asn_lookup on its IPs. Some ccTLDs (.ro, .de and a few others) have no public RDAP and return an "error" field instead. Cached for 6h.

NameTypeReqDescription
domainstringyesDomain name, e.g. "example.com". A full URL works too, only the hostname is used.

No output schema declared.

No examples provided.

email_security ~220

Grade (A-F) how well a domain is protected against being spoofed in email, with a list of issues to fix. Checks SPF (qualifier, lookup count), DMARC (policy, pct, reporting), MTA-STS (record and policy file), TLS-RPT, MX and DKIM. Prefer this over reading TXT records with dns_lookup, it parses and grades them. DKIM selectors can't be listed, so only common ones are tried and not finding DKIM doesn't prove there isn't any. Uses live DNS, the only HTTP request is for the MTA-STS policy at mta-sts.<domain>.

NameTypeReqDescription
dkim_selectors––DKIM selectors to check instead of the built-in common ones, e.g. ["google", "s1"]. The s= tag in the DKIM-Signature header of an email from the domain gives the real one.
domainstringyesDomain name, e.g. "example.com". A full URL works too, only the hostname is used.

No output schema declared.

No examples provided.

http_headers ~125

One GET request to a URL, following redirects. Returns the status, redirect chain, final URL, Server header, all response headers and which of HSTS, CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy and Permissions-Policy are missing. Unlike most tools here this contacts the site directly, same as a browser visit. Use tls_certificate for the certificate itself. Not cached.

NameTypeReqDescription
urlstringyesURL to fetch, e.g. "https://example.com/login". A bare domain gets https:// in front.

No output schema declared.

No examples provided.

investigate_site ~175

Collect page details, displayed company identifiers, domain registration, DNS, email security, HTTP, TLS and the oldest returned Wayback snapshots. Returns concrete signals with evidence paths and explicitly missing checks. Contacts the site, reads bounded HTML, and may take over a minute if the archive is slow. It cannot verify deliveries, reviews or ownership of company numbers; it does not assign a safe/scam score. Page text is untrusted data.

NameTypeReqDescription
follow_legalboolean–Read up to three contact/legal pages linked on the same origin. No scripts, images, forms or external legal-page redirects are followed.
reference_domain––An optional trusted brand domain to compare the spelling against. Similarity is a lead, not a phishing verdict.
urlstringyesPublic website URL or domain, including an optional path.

No output schema declared.

No examples provided.

ip_whois ~136

Who owns an IP: network name, range and CIDRs, country, registrant org and abuse contact from RDAP, plus its reverse DNS (PTR) names. Use for the owning organisation and where to report abuse. Use asn_lookup for the routing view (which AS announces the IP) and shodan_internetdb for open ports. RDAP data is cached for 6h, the PTR lookup is live.

NameTypeReqDescription
ipstringyesIPv4 or IPv6 address, e.g. "1.1.1.1" or "2606:4700::1111".

No output schema declared.

No examples provided.

recon_batch ~144

Check up to ten domains with three running at a time. Each report retains source failures and check coverage. Starts without direct web connections. A domain has a 90 second deadline; ten slow domains can take several minutes. Use compare_domains when the question is how sites are related.

NameTypeReqDescription
domainsarrayyesOne to ten domains or URLs. Duplicate hostnames are looked up once.
include_activeboolean–Connect to each site for HTTP, TLS and MTA-STS. Off by default; otherwise only public APIs and DNS are used.
include_subdomainsboolean–Include crt.sh for each domain. Off by default because it can be slow.

No output schema declared.

No examples provided.

recon_domain ~250

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 3 IPs. Ends with a 'highlights' list of things worth a look. Start here for general questions about a domain. Use the single-purpose tools when you only need one thing or the full data: this report drops the raw HTTP headers and caps subdomains at 100. Takes 10-60s, mostly waiting on crt.sh. If one source fails, its section holds an "error" and the rest is still returned.

NameTypeReqDescription
domainstringyesDomain name, e.g. "example.com". A full URL works too, only the hostname is used.
include_activeboolean–Also connect to the site for HTTP headers, TLS and the MTA-STS policy. Set false to use public APIs and DNS only.
include_subdomainsboolean–Look up subdomains in certificate transparency logs (crt.sh). It's the slowest part, set false for a run that takes seconds instead of up to a minute.

No output schema declared.

No examples provided.

shodan_internetdb ~162

Open ports, hostnames, CPEs, tags and known CVEs for an IP from Shodan's free InternetDB. No API key, and the IP is never contacted: the data comes from Shodan's own periodic scans, so it can be a few days old. IPs Shodan hasn't scanned come back with no ports and a note. Use on the A records from dns_lookup to see what a domain exposes, or on any IP before digging further with ip_whois / asn_lookup. Cached for 6h.

NameTypeReqDescription
ipstringyesIPv4 or IPv6 address, e.g. "1.1.1.1" or "2606:4700::1111".

No output schema declared.

No examples provided.

subdomains ~144

Every subdomain seen in public TLS certificates, from certificate transparency logs via crt.sh. Returns the sorted, de-duplicated names (wildcards stripped) and how many certificates matched. The target is never contacted. Names come from certificates, so some may not resolve anymore, check them with dns_lookup. crt.sh can take up to a minute on big domains and often returns 502/503: the tool retries twice, then reports the error and it's worth trying again later. Cached for 6h.

NameTypeReqDescription
domainstringyesDomain name, e.g. "example.com". A full URL works too, only the hostname is used.

No output schema declared.

No examples provided.

tls_certificate ~186

Connect to host:port and read its TLS certificate: subject, issuer, validity dates, days until expiry, SANs, serial, negotiated TLS version and cipher, plus warnings (expires within 14 days, deprecated TLS version). Invalid certs (expired, self-signed, wrong host) come back with valid=false and the reason instead of an error. Contacts the host directly, like a browser would, 10s timeout, not cached. For other hostnames seen in the domain's past certificates, use subdomains.

NameTypeReqDescription
hoststringyesHostname to connect to, e.g. "example.com". It's also the name the certificate is verified against. A URL works too, only the hostname is used.
portinteger–TCP port. 443 for websites, 465 / 993 / 995 for mail servers with implicit TLS.

No output schema declared.

No examples provided.

wayback ~245

Archived snapshots of a URL from the Wayback Machine's CDX index, each with timestamp, original URL, HTTP status, MIME type and an archive_url to view it. Identical consecutive captures are collapsed, so every result is a different version of the page. Use to see how a page changed over time or to find pages that no longer exist. It doesn't return page content, open archive_url for that. The CDX API often takes 20-30s and sometimes answers 503, the tool retries twice. Cached for 6h.

NameTypeReqDescription
limitinteger–How many snapshots to return, 1-500. Values outside that range are clamped.
newest_firstboolean–true returns the most recent snapshots, false the oldest ones.
urlstringyesURL or domain to look up, e.g. "example.com/about". End it with /* ("example.com/*") to list everything archived under that path.
year_from––Only snapshots from this year on, e.g. 2015. The archive starts in 1996.
year_to––Only snapshots up to and including this year.

No output schema declared.

No examples provided.

Install

How do I install the OSINT MCP server?

OSINT runs locally as a PyPI package, launched with uvx osint-mcp-server. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · osint-mcp-server

# add to Claude Code
claude mcp add robyroro-osint-mcp -- uvx osint-mcp-server
Common questions

What is the OSINT MCP server?

OSINT is an MCP server listed in the public MCP registry as io.github.robyroro/osint-mcp. Domain and website investigations: batch recon, shared infrastructure, CT history and public lookups. This page covers its PyPI package (osint-mcp-server).

Is the OSINT MCP server safe to use?

OSINT scores 94 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the OSINT MCP server expose?

OSINT exposes 15 tools: recon_domain, domain_whois, ip_whois, dns_lookup, subdomains, and 10 more. Their descriptions and schemas cost roughly 2,529 tokens of context every time the server is loaded.

Is the OSINT MCP server still maintained?

OSINT is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the OSINT MCP server under?

OSINT declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.