Skip to main content
Glama
openosint

openosint

Official
by OpenOSINT

mcp-name: io.github.OpenOSINT/openosint

Release PyPI downloads License MIT MCP Registry Sponsored by IP2Location Sponsored by TestMu AI

OpenOSINT in Claude Code: add the marketplace, install the plugin, run /openosint:osint example.com and get a report where every finding cites its tool call, ending with leads to verify

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.com

Any agent (Codex, Gemini CLI, Cursor and other Agent Skills clients):

npx skills add OpenOSINT/OpenOSINT

MCP server or pip (other clients):

claude mcp add openosint -- uvx --from openosint openosint-mcp
pip install openosint && openosint exposure example.com

Related 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.

Try it: 10 free messages

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, gdelt and dorks need 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

search_dns

dnspython (built-in)

passive

No

search_rdap

RDAP (IANA bootstrap)

passive

No

search_whois

python-whois

passive

No

search_ip

ipinfo.io

passive

Optional

search_ip2location

IP2Location API (sponsored)

passive

Required

search_gdelt_geo

GDELT 15-minute GKG feed

passive

No

generate_dorks

built-in

passive

No

search_paste

psbdmp.ws

passive

No

search_github

GitHub REST API

passive

Optional

search_breach

HaveIBeenPwned API

passive

Required

search_shodan

Shodan API

passive

Required

search_censys

Censys API

passive

Required

search_virustotal

VirusTotal API

passive

Required

search_abuseipdb

AbuseIPDB v2 API

passive

Required

search_dorks_live

Bright Data SERP API¹

passive

Required

search_footprint

Bright Data SERP API¹

passive

Required

scrape_url

Bright Data Web Unlocker¹

touches target

Required

search_username

sherlock

noisy

No

search_email

holehe

noisy

No

search_domain

sublist3r

noisy

No

search_phone

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.

OpenOSINT globe view: an agent investigation lands as a point on an interactive 3D globe, clicking it pivots into a follow-up investigation, and the new entity appears in the entity graph

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

IP2Location.io — powers search_ip2location · Integration guide

Enhanced IP geolocation, ISP, VPN/Proxy/Tor, and datacenter detection

TestMu AI

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

Star History Chart

Available Tools

20 tools
generate_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

    A3.7/5.0

    Scored across 20 tools

    Disambiguation4/5

    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.

    Naming Consistency5/5

    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.

    Tool Count3/5

    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.

    Completeness4/5

    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

    ActivityNo data
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      A
      maintenance
      An 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.
      1
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      A 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.
      249
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      MCP 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