openosint
OfficialYou can run passive OSINT reconnaissance and investigation from an MCP client using third-party data sources, local lookups, and an optional entity graph.
Domain/registration/DNS: WHOIS, RDAP, comprehensive DNS records, email-auth misconfiguration checks (SPF/DMARC/DKIM), and Google dork generation.
IP intelligence: geolocation/ASN via ipinfo.io and IP2Location, abuse reputation, plus Shodan and Censys infrastructure data.
Emails/usernames/social/web: HaveIBeenPwned breach checks, Pastebin search, GitHub search, live Google dorks, and footprint collection via Bright Data.
Threat intelligence: VirusTotal checks for IPs, domains, URLs, or hashes; Shodan and Censys lookups.
News/geolocation: GDELT geolocated news search with optional bounding box, timespan, and point limits.
Entity graph: export FollowTheMoney graph data, traverse neighbors, and review/accept/reject same-as candidates locally.
Multi-target investigation: run parallel OSINT reports for up to 10 targets (requires ANTHROPIC_API_KEY and inherits passive/active mode).
Many tools are passive and keyless; others require API keys such as HIBP, Shodan, Censys, VirusTotal, AbuseIPDB, IP2Location, Bright Data, or an optional GitHub token.
Provides tools for searching GitHub profiles, repositories, and emails via the GitHub REST API.
Provides tools for checking files and domains against VirusTotal's database for security analysis.
mcp-name: io.github.OpenOSINT/openosint

A real Claude Code session, nothing mocked: install the plugin and run a passive recon on example.com. Sharper MP4.
Quickstart
Needs uv. No API keys for the default flow.
Claude Code plugin (skills plus a passive MCP server):
/plugin marketplace add OpenOSINT/OpenOSINT
/plugin install openosint@openosint
/openosint:osint example.comAny agent (Codex, Gemini CLI, Cursor and other Agent Skills clients):
npx skills add OpenOSINT/OpenOSINTMCP server or pip (other clients):
claude mcp add openosint -- uvx --from openosint openosint-mcp
pip install openosint && openosint exposure example.comRelated MCP server: OSINT Tools MCP Server
OpenOSINT Cloud
The same engine as a hosted chat: ask about a domain, an IP address or a company. Every answer shows which public sources were checked, when, and a source on every claim. No install, no API keys.
What you can do
Real output, captured 2026-11-04 on v2.37.0 and trimmed. None of these commands needs an API key or an AI provider.
$ openosint exposure example.com
Grade: B Score: 88/100
Checks: email OK [passive] · registration OK [passive] · tls OK [touches target] · http_headers OK [touches target]
[LOW] DMARC has no aggregate report address (dmarc_no_rua)
[LOW] Strict-Transport-Security header missing (hsts_missing)
[INFO] Domain registered 31.2 years ago (domain_age)
$ openosint dns example.com
[DNS] NS: elliott.ns.cloudflare.com., hera.ns.cloudflare.com.
[DNS] SPF: v=spf1 -all
[DNS] DMARC: "v=DMARC1;p=reject;sp=reject;adkim=s;aspf=s"
[DNS] DKIM not checked: selector probing is enumeration (needs --allow-active).
$ openosint rdap example.com
[+] Registrar: RESERVED-Internet Assigned Numbers Authority
[+] Registered: 1995-08-14T04:00:00Z
[+] Expires: 2027-08-13T04:00:00Z
[+] Name servers: elliott.ns.cloudflare.com, hera.ns.cloudflare.com
$ openosint ip 8.8.8.8
[+] Hostname: dns.google
[+] Org: AS15169 Google LLC
[+] City: Mountain View
$ openosint gdelt example.com
No geolocated coverage found for 'example.com'. Coverage: the last 15 min (...)
$ openosint gdelt ukraine
[+] White House, District Of Columbia, United States (38.8951, -77.0364) — 1 article(s)The same commands are what the skill runs for an agent. All of them are in the CLI reference.
Why OpenOSINT
Real tool executions. Tools are Python code; only their actual output reaches the model.
Provenance. Every finding is shown with the tool call that produced it. AI summaries are leads to verify, not proof.
Passive by default, with noise labels. Tools that touch the target or are noisy are not even offered to the agent until you opt in.
Works with no keys.
exposure,dns,rdap,whois,ip,gdeltanddorksneed no account.
Prompt-only OSINT skills | SpiderFoot | OpenOSINT | |
What runs the lookups | Nothing: the skill is instructions, and the agent improvises | Its own 200+ modules | Python tools shipped with it |
Breadth | Whatever the agent can reach | Much broader: 200+ modules and a correlation engine, per its README | A focused tool set |
Built to be driven by an agent | Yes, that is the format | Web UI or CLI, per its README | Agent Skill, Claude Code plugin, MCP server, CLI and web UI |
Passive/noisy labels, off by default | No | Not claimed here | Yes, per tool |
License | Varies | MIT | MIT |
SpiderFoot is the better choice when you want a large standalone scanner. OpenOSINT is for agents that need a small set of real, labelled tools.
Tools
Level is the noise label: passive tools are on by default; anything else needs --allow-active. Per-tool docs: openosint.tech/tools.
Tool | Source | Level | Key needed |
dnspython (built-in) | passive | No | |
RDAP (IANA bootstrap) | passive | No | |
python-whois | passive | No | |
ipinfo.io | passive | Optional | |
IP2Location API (sponsored) | passive | Required | |
GDELT 15-minute GKG feed | passive | No | |
built-in | passive | No | |
psbdmp.ws | passive | No | |
GitHub REST API | passive | Optional | |
HaveIBeenPwned API | passive | Required | |
Shodan API | passive | Required | |
Censys API | passive | Required | |
VirusTotal API | passive | Required | |
AbuseIPDB v2 API | passive | Required | |
passive | Required | ||
passive | Required | ||
touches target | Required | ||
sherlock | noisy | No | |
holehe | noisy | No | |
sublist3r | noisy | No | |
phoneinfoga | unverified | No |
Sherlock, holehe, sublist3r and phoneinfoga are wrapped as local binaries; install them yourself and enable active tools to use them.
Setting up the three Bright Data tools: Using OpenOSINT with Bright Data.
Passive by default
Agents and MCP clients are only offered tools that query third-party data sources or compute locally. Anything that touches the target or sends many requests from your IP is off until you opt in, and is not listed in an MCP client's tools/list at all.
Level | Meaning |
passive | Queries third-party sources or computes locally; nothing is sent to the target's own infrastructure (standard DNS goes through your resolver) |
touches target | The target's infrastructure can see the request |
noisy | High request volume; expect rate limits, blocks and alerts |
unverified | Network behavior not yet confirmed by a traffic capture; treated as non-passive |
inherits | A fan-out tool that only runs what the current mode allows |
Enable active tools with openosint --allow-active …, OPENOSINT_ALLOW_ACTIVE=1, Web UI Settings (loopback only), or openosint-mcp --allow-active. Passive is not private: every service you query sees the query. Per-tool "what it sends" table and the tool-call cap: Safety.
Go deeper
Web UI + globe
openosint web starts a local browser app with streaming chat, tool cards, a news globe and a graph view. Docs.

An agent investigation landing live on the globe; click a point to pivot. Sharper MP4 · Live demo (bring your own key, no signup).
Entity graph
A FollowTheMoney entity graph with statement-level provenance and a human review queue for same_as candidates. Docs.
External exposure report (beta)
openosint exposure example.com grades email authentication, TLS, registration and security headers A to F. Docs.
Installation
pip install openosint, or run without installing: uvx openosint web. Python 3.10+. Install guide.
MCP Server
Works in Claude Desktop, Claude Code, Cursor and any MCP client: uvx --from openosint openosint-mcp. Client configs.
Configuration
Keys go in the web UI Settings, ~/.openosint/config.env or the environment; the app starts with none. All variables · CLI reference · Limitations.
Docker
docker compose up --build, then open http://localhost:8080. Docker notes.
Moved from this README: per-tool details are at openosint.tech/tools; CLI flags (old
#cli-reference) at /docs/cli; limitations (#limitations) at /docs/troubleshooting; integrations (#integrations) at /tools; the graph module (#graph-module-optional) at /docs/entity-graph.
Hosted versions
Built on this engine. The open-source project stays free and MIT-licensed.
Cloud: chat about a domain, an IP address or a company, with sourced answers. Details above.
Monitor: domain security monitoring (SPF, DKIM, DMARC, TLS). Free for one domain.
Diligence: UK and LEI company checks against registries and sanctions lists.
API access (by request): hosted REST and MCP API. Email commercial@openosint.tech.
Sponsors
Featured Integrations
IP2Location.io — powers search_ip2location · Integration guide
Enhanced IP geolocation, ISP, VPN/Proxy/Tor, and datacenter detection
TestMu AI (formerly LambdaTest) is an AI-native testing cloud platform built for modern engineering teams. It covers everything from autonomous test creation and fast execution to testing AI agents, chatbots and voice assistants.
Open: Breach / Compromised-Credential Data · Email / Identity Lookup · Residential Proxies — see SPONSORSHIP.md.
Sponsor on Open Collective · tiers in SPONSORSHIP.md · commercial license and support: COMMERCIAL.md.
Contributing
Issues and pull requests are welcome. See CONTRIBUTING.md (workflow, demo regeneration, conventions) and read DISCLAIMER.md first. Maintainer: Tommaso Bertocchi · @openosint_oss · commercial@openosint.tech. Contributors: @consocio (#6).
License
MIT. See LICENSE. For authorized security research only; see DISCLAIMER.md.
¹ Bright Data links in this README are affiliate/referral links: OpenOSINT earns a commission if you sign up through them, at no extra cost to you.
OpenOSINT v2.38.0 — November 2026
Star History
Available Tools
20 toolsgenerate_dorksA
Generate targeted Google dork URLs for any target (name, email, username, domain). [passive] Builds Google search URLs locally; sends nothing.
Inputs: target (required), json_output.
graph_exportA
Export the additive FollowTheMoney entity graph (openosint.graph) as newline-delimited JSON, one FtM entity per line (.ftm-compatible). Optionally exclude whole datasets, e.g. exclude_datasets=['openosint:hibp'] to omit every breach-derived fact. Requires the 'graph' extra: pip install 'openosint[graph]'. [passive] Reads the local graph database only.
Inputs: json_output, exclude_datasets.
graph_neighborsA
Traverse the FollowTheMoney entity graph from one entity id out to a given depth, returning entities, edges, and per-edge provenance (collection method, confidence, run id). Set cross_layer=true to also surface bridge links into the raw infra correlation graph (IPs, domains, hashes). Requires the 'graph' extra: pip install 'openosint[graph]'. [passive] Reads the local graph database only.
Inputs: entity_id (required), depth, cross_layer, json_output.
graph_review_candidatesA
Human review queue for suggested same_as entity matches produced by graph-dedup cross-referencing. action='list' shows pending candidates (score, identifying properties, human-readable match explanation), filterable by schema/score range/dataset. action='decide' records a human verdict on one pair: decision='accept' merges it (judgement='positive'), decision='reject' permanently excludes it from future suggestions (judgement='negative'). Nothing in this project ever auto-merges — only this action can write judgement='positive'. [passive] Reads the local graph database only.
Inputs: action (required), schema, dataset, decision, +6 more.
investigate_multiA
Investigate multiple targets in parallel using the full OSINT tool chain. Each target gets its own report file. A summary report is also generated. Maximum 10 targets. Uses ANTHROPIC_API_KEY env var. [inherits] Runs one agent per target under a shared tool-call cap; passive unless active is enabled.
Inputs: targets (required).
search_abuseipdbA
Check an IP address against the AbuseIPDB v2 API for abuse reputation. Returns abuse confidence score (0–100%), total reports, country, ISP, domain, and last reported timestamp. Shows a warning when score exceeds 50%. Uses ABUSEIPDB_API_KEY env var. [passive] One request to api.abuseipdb.com.
Inputs: ip (required), json_output.
search_breachA
Check if an email appears in data breaches via HaveIBeenPwned. Uses HIBP_API_KEY env var. [passive] One request to haveibeenpwned.com.
Inputs: email (required), json_output.
search_censysA
Search Censys for internet-facing infrastructure data. IP address → open ports, services, ASN, country. Domain → certificate history, SANs, issuer, first/last seen. Uses CENSYS_API_ID and CENSYS_SECRET env vars. [passive] Censys API; returns data Censys already holds.
Inputs: target (required), json_output.
search_dnsA
Comprehensive DNS record enumeration (A, AAAA, MX, NS, TXT, CNAME, SOA). Highlights email security misconfigurations: missing SPF, weak SPF policy, missing or unenforced DMARC, and absent DKIM across common selectors. No external API or credentials required. [passive; DKIM selector probes (enumeration) run only with active tools enabled.] Record lookups go through your DNS resolver; the target's nameservers see the resolver, not you.
Inputs: domain (required), json_output.
search_dorks_liveA
Execute Google dork queries for a target via the Bright Data SERP API, returning live structured results (title, URL, snippet). Runs up to 5 dorks by default — each is a billable API call. Uses BRIGHTDATA_API_KEY and BRIGHTDATA_SERP_ZONE env vars. [passive] Google results via Bright Data; the target is sent to those two services.
Inputs: target (required), json_output.
search_footprintA
Collect a target's public search-engine footprint via the Bright Data SERP API. Detects entity type (email, username, domain, phone, or full name) and runs entity-type-aware Google queries, returning structured results and Entity Correlation Graph nodes/edges for discovered domains and profiles. Uses BRIGHTDATA_API_KEY and BRIGHTDATA_SERP_ZONE env vars. [passive] Up to 3 Google queries via Bright Data; the target is sent to those two services.
Inputs: target (required), json_output, max_queries.
search_gdelt_geoA
Search recent, geolocated worldwide news from GDELT's 15-minute article feed (headlines/URLs matched against the query). No API key required. Returns a text summary plus a GeoJSON FeatureCollection, and says how far back it covers (the first call may cover only the last 15 minutes while older articles load). Optionally scope to a bounding box; query "*" lists everything inside it. [passive] Downloads GDELT's public news feed and filters it locally; your search term never leaves your machine.
Inputs: query (required), bbox, timespan, maxpoints, +1 more.
search_githubA
Search GitHub for a username, email, or keyword. For exact username matches: returns full profile, recent repos, and emails discovered from commit history. For other queries: top 5 matching accounts. Optional GITHUB_TOKEN env var raises rate limit from 60 to 5000 req/h. [passive] A few requests to api.github.com.
Inputs: query (required), json_output.
search_ipB
Retrieve geolocation and ASN data for an IP address via ipinfo.io. [passive] One request to ipinfo.io.
Inputs: ip (required), json_output.
search_ip2locationB
Enhanced IP intelligence using IP2Location Security Plan. Returns geolocation, ISP, ASN, and detects VPN, proxy, Tor exit nodes, and datacenter hosting. Sponsored integration. Uses IP2LOCATION_API_KEY env var. [passive] One request to api.ip2location.io.
Inputs: ip (required), json_output.
search_pasteB
Search Pastebin dumps for an email or username via psbdmp.ws. [passive] One request to psbdmp.ws.
Inputs: query (required), json_output.
search_rdapA
Structured domain registration lookup via RDAP (the machine-readable successor to WHOIS): registrar, registration and expiry dates, name servers and status codes. Registrant contact details are redacted by policy. No API key required. [passive] Queries IANA and the registry's RDAP server, not the target.
Inputs: domain (required), json_output.
search_shodanA
Query Shodan for host intelligence or banner search. IP address → host lookup (open ports, org, CVEs). Any other string → keyword/service search. Uses SHODAN_API_KEY env var. [passive] Shodan API; reads Shodan's existing index, requests no new scan.
Inputs: query (required), json_output.
search_virustotalA
Check IP, domain, URL, or file hash against VirusTotal's 70+ antivirus engines and threat intelligence. Auto-detects input type. Uses VIRUSTOTAL_API_KEY env var. [passive] IP, domain and hash lookups read VirusTotal's existing data. URL submission is a separate active mode, off by default: it makes VirusTotal fetch the URL and makes it visible to the VirusTotal community.
Inputs: target (required), json_output.
search_whoisA
Retrieve WHOIS registration data for a domain. [passive] Queries the registry/registrar WHOIS server, not the target.
Inputs: domain (required), json_output.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 20 tools
Most tools target distinct data sources and actions, but IP geolocation tools (search_ip, search_ip2location, and partly search_abuseipdb) and domain-registration tools (search_rdap, search_whois) have overlapping purposes. Descriptions help, but an agent may still deliberate over which source to pick.
All names use snake_case with consistent category prefixes: search_* for data lookups, graph_* for graph operations, generate_* for local generation, and investigate_* for orchestration. Minor variation in whether the suffix is a source name (abuseipdb) or data type (dns) is acceptable.
20 tools is heavy for a single MCP server; while many integrations are genuinely distinct, tools like search_ip and search_ip2location or search_rdap and search_whois could be consolidated or grouped. Each tool has a plausible role, but the count sits in the borderline-heavy range.
The surface covers a wide passive OSINT lifecycle: collection from many sources, DNS/domain/IP enrichment, breach and paste checks, graph correlation, export, human review, and multi-target orchestration. Gaps remain for phone/social-media-specific lookups and some non-GitHub username enumeration, but core OSINT workflows are well supported.
Maintenance
Related MCP Connectors
Hyperion — MCP tool marketplace for AI agents: web, OSINT, security, research via one key.
AI Visibility and Content Intelligence tools for Claude and MCP-compatible agents.
Hosted Web Crawler MCP server for Claude, ChatGPT and Cursor, with each action switched per account.
454 OSINT recon tools + server-side entity correlation & person sweeps. Keyless.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceAn MCP server that exposes a 60+ tool security and threat-intel stack to AI agents, enabling secret scanning, Sigma rule generation, ransomware lookup, OSINT, and deep research.1MIT
- AlicenseNot gradedqualityDmaintenanceA comprehensive MCP server that exposes multiple OSINT tools to AI assistants like Claude, enabling sophisticated reconnaissance and information gathering tasks using industry-standard OSINT tools.249MIT
- AlicenseNot gradedqualityDmaintenanceMCP server that exposes 108+ omega-cli OSINT tools for reconnaissance, web analysis, threat intelligence, and reporting, enabling AI assistants to perform comprehensive open-source intelligence tasks.MIT
- AlicenseNot gradedqualityDmaintenanceAI-driven penetration testing MCP server that equips Claude with 13 tools for automated reconnaissance, analysis, vulnerability validation, and exploitation.4GPL 3.0