
OpenOSINT
io.github.SonoTommyPublished by GitHub account SonoTommyv2.15.2Updated Nov 3, 2026
AI-powered OSINT agent & MCP server. 16 tools: email, breach, IP, WHOIS, DNS, Shodan, GitHub & more.
The publisher's own server: osint.foundation
Overview
OpenOSINT is a local OSINT engine whose MCP server lets an assistant run passive investigation tools on emails, domains, IPs, usernames and breaches.
- What you can do
- Run domain and network lookups: WHOIS, RDAP, DNS records with SPF/DMARC/DKIM analysis, IP geolocation and abuse reputation
- Check exposure: breach lookups, paste dumps, VirusTotal verdicts, Shodan and Censys infrastructure data
- Profile identities: GitHub profiles and commit-discovered emails, username presence, phone and email enumeration (off by default)
- Build search leads: Google dork URLs generated locally, live dork search and entity footprint results
- Chain tools automatically from a seed target, run several targets in parallel, and read or export a local entity graph
- When to use it
- Useful for security researchers, analysts and due-diligence work that needs public-source lookups on a domain, IP, email or username, with the assistant choosing and chaining tools. Not needed for routine coding or non-investigative tasks.
- Requirements
- Runs locally as a Python package (Python 3.10+) or via uvx; stdio transport. Keyless tools work immediately; AI-driven chaining needs ANTHROPIC_API_KEY or a local Ollama/OpenAI-compatible endpoint. Individual tools need their own keys: HIBP_API_KEY, SHODAN_API_KEY, VIRUSTOTAL_API_KEY, CENSYS_API_ID and CENSYS_SECRET, ABUSEIPDB_API_KEY, IP2LOCATION_API_KEY; IPINFO_TOKEN and GITHUB_TOKEN are optional. Some tools need external binaries (holehe, sherlock, sublist3r, phoneinfoga) on PATH. Network…
Installation
In SourceWeft
- Open OpenOSINT in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
mcp-name: io.github.OpenOSINT/openosint
OpenOSINT
An OSINT (Open Source Intelligence) agent for security researchers and analysts: 21 investigation tools behind a natural-language interface, plus an MCP (Model Context Protocol) server so any MCP-compatible AI client can drive them directly.
Use it as a REPL, CLI, MCP server, or browser Web UI.
Tool results come from real executions, and every finding is shown with the tool call that produced it. AI summaries are leads to verify, not proof.
[Release] [PyPI] [PyPI downloads] [License MIT] [MCP] [MCP Registry] [Sponsored by IP2Location] [Sponsored by TestMu AI]
Hosted versions, built on this engine:
- Monitor: scheduled external checks of your domain's email authentication, TLS, security headers and lookalike domains, with an email when something gets worse. Free for one domain.
- Diligence: due-diligence signals for UK companies and any company with an LEI, from official registries and sanctions lists, each with its source and retrieval time.
Docs: https://openosint.tech/docs/
OpenOSINT is an open-source engine for passive checks of public information; the hosted products are built on it, and everything below is free and MIT-licensed.
Self-host (free, MIT)
Try the live demo → — bring your own Anthropic / OpenRouter / Ollama key, no signup.
Usage
Start the REPL and investigate any target — the agent decides which tools to run and chains them on findings:
Features
[OpenOSINT globe view: an agent investigation triggered from a chat prompt lands as a point on an interactive 3D globe, clicking the point pivots into a follow-up investigation, and the new entity appears in the entity graph] Investigation results land live on the globe — click a point to pivot. Watch the sharper MP4.
Deterministic, synthetic-data demo — every entity shown is fictional; regenerate with demo/web_demo.py.
The entities are seeded at the statement layer, not produced by today's mappers — see demo/README.md.
Legal Disclaimer: OpenOSINT is intended for legal and authorized use only. Users are solely responsible for ensuring their use complies with all applicable laws and regulations. The authors accept no liability for misuse. See DISCLAIMER.md.
Tools
Full per-tool documentation, CLI flags, and output formats: openosint.tech.
Passive by default
OpenOSINT starts in passive mode: agents and MCP clients are only offered tools that query third-party data sources or compute locally. Tools that touch the target's infrastructure, or that send many requests about the target from your IP, are off until you opt in. They are not just refused when called; they are not offered to the model at all, and an MCP client does not see them in tools/list.
Passive is not private. Every third-party service you query sees what you searched for, and usually your API key or IP. Treat queries to Shodan, HIBP, VirusTotal, Bright Data and similar services as visible to those providers.
Enable active tools explicitly (each is labeled with its noise level):
A publicly reachable or demo instance can never enable active tools, whatever the settings. If a disabled tool is requested anyway it returns a structured disabled_in_passive_mode result that says how to enable it.
Tool-call cap. Each user request is limited by OPENOSINT_MAX_TOOL_CALLS (default: 15 calls; each new message resets it). investigate_multi shares one cap across all targets (OPENOSINT_MAX_TOOL_CALLS_MULTI, default 30). When the cap is reached the investigation stops with an explicit message. An MCP client that drives the tools itself is not capped by the server; only investigate_multi is.
This table says what each tool does according to its code. It is not a guarantee about what a remote service, or a third-party binary such as holehe, sherlock, sublist3r or phoneinfoga, does with a request.
search_email
Enumerates online services linked to an email address using holehe. Off by default because it is noisy: it needs the holehe binary installed and --allow-active (or OPENOSINT_ALLOW_ACTIVE=1).
search_username
Searches for a username across 400+ platforms using sherlock.
search_breach
Checks data breach exposure via HaveIBeenPwned v3 API. Requires HIBP_API_KEY.
search_whois
Retrieves WHOIS data using python-whois.
search_ip
Retrieves geolocation and ASN data via ipinfo.io. Free tier: 50k/month.
search_domain
Enumerates subdomains using sublist3r.
generate_dorks
Generates 12 targeted Google dork URLs for any target. No network calls.
search_paste
Searches Pastebin dumps via psbdmp.ws.
search_phone
Gathers phone intelligence using phoneinfoga. Use E.164 format.
search_shodan
IPv4 input → host lookup (open ports, org, CVEs). Any other query → banner/keyword search. Requires SHODAN_API_KEY.
search_virustotal
Checks an IP, domain, URL, or file hash against VirusTotal's 70+ engines. Auto-detects input type. Requires VIRUSTOTAL_API_KEY.
search_ip2location
Queries IP2Location.io for enhanced IP intelligence: geolocation, ISP, ASN, and — on the Security Plan — VPN/Proxy/Tor/datacenter detection. Sponsored integration. Requires IP2LOCATION_API_KEY.
search_censys
IPv4 → host view (open ports, services, ASN). Domain → certificate search (SANs, issuer). Requires CENSYS_API_ID and CENSYS_SECRET.
search_abuseipdb
Checks an IP against AbuseIPDB v2. Returns abuse confidence score, total reports, country, ISP, and last reported timestamp. Requires ABUSEIPDB_API_KEY.
Warning appears when abuseConfidenceScore exceeds 50%.
search_github
Queries GitHub REST API. Username → profile, repos, commit-discovered emails. Keyword → user/repo search. Optional GITHUB_TOKEN raises rate limit from 60 to 5000 req/h.
search_dns
Queries A/AAAA/MX/NS/TXT/CNAME/SOA records and analyzes SPF, DMARC, and DKIM configuration using dnspython (no external API).
search_rdap
Looks up a domain's registrar, registration and expiry dates, name servers and status codes over RDAP, the machine-readable successor to WHOIS. Keyless: it asks the IANA bootstrap registry which server owns the TLD, then queries that server. Registrant contact details are redacted by registry policy and are never returned.
search_gdelt_geo
Recent, geolocated worldwide news. The old GDELT GEO 2.0 API was retired (it answers HTTP 404), so this tool reads GDELT's 15-minute GKG article feed (data.gdeltproject.org, keyless, no account) and keeps the last 6 hours of articles in memory. Each article carries its headline, link and the places it mentions; the query is matched against headlines and URLs (quoted phrases and OR work; * means everything), and results are grouped by place for the globe. Country-level mentions are dropped so dots mark cities and regions, not the middle of a country.
Nothing is downloaded until the tool is first used, so a local install that never opens the globe never fetches a GDELT file. The first search loads only the newest 15-minute file and answers from it; older files load in the background, and the result (and the globe) says how far back it covers, for example News: last 15 min — older articles still loading. After that, upstream traffic is one small file per 15 minutes however many searches you run.
Select an area on the globe (Shift+drag) to search only inside it. Failures (feed down, oversized or corrupt file) return one [service_unavailable] search_gdelt_geo result, and the globe shows a notice instead of an empty layer.
Attribution and terms. News data: The GDELT Project. GDELT's terms of use say: "all datasets released by the GDELT Project are available for unlimited and unrestricted use for any academic, commercial, or governmental use of any kind without fee." and "any use or redistribution of the data must include a citation to the GDELT Project and a link to this website (https://www.gdeltproject.org/)." (quoted 2026-10-06). The globe keeps the GDELT credit in its map attribution. Headlines and links come from third-party news sites and are shown as plain text.
search_dorks_live
Executes live Google dork queries through the Bright Data SERP API¹, returning structured results (title, URL, snippet). Defaults to 5 dorks per run; each is a separate billable API call. Requires BRIGHTDATA_API_KEY and BRIGHTDATA_SERP_ZONE.
scrape_url
Fetches any public URL through Bright Data Web Unlocker¹, bypassing Cloudflare/CAPTCHA. Returns clean Markdown. Requires BRIGHTDATA_API_KEY and BRIGHTDATA_UNLOCKER_ZONE.
search_footprint
Collects a target's public search-engine footprint via Bright Data SERP API¹. Detects entity type (email, username, domain, phone, or full name) and runs entity-type-aware Google queries, returning structured results plus Entity Correlation Graph nodes/edges for discovered domains and profiles. Requires BRIGHTDATA_API_KEY and BRIGHTDATA_SERP_ZONE.
Graph module (optional)
An additive FollowTheMoney entity graph —
statement-level provenance, an append-only store, non-destructive same_as
deduplication, and a human review queue — sits alongside the tools above
without changing anything about them. The store, the /graph page, the
/api/graph/* routes and the graph_neighbors / graph_review_candidates
MCP tools work in a plain uvx openosint web install, with no compiler and no
extra. The graph extra (pip install "openosint[graph]", builds PyICU) adds
the real FollowTheMoney library: graph_export and .ftm export. The
graph-dedup extra (Python 3.11+) adds same_as scoring. Without the extra,
ids are produced by a vendored copy that a CI test proves byte-identical to
FollowTheMoney's, so a graph.db is readable either way. Nothing in the web
UI or the agent writes to this store: it is filled through the Python API
(see docs/graph.md for the full guide and a worked example);
the GRAPH tab in the main UI is a separate, client-side view of the current
chat.
The same workflow is shown end to end — including the .ftm export that
passes ftm validate — in the terminal demo in
docs/graph.md; the web UI walkthrough is the demo at the top
of this README.
External exposure report (beta)
openosint exposure checks one domain from the outside and gives it an A-F grade. It is point-in-time: organisation-level checks of email authentication, TLS, domain registration and security headers, plus optional lookalike domains. The email, registration and lookalike checks are passive (DNS and RDAP only); the TLS and security-header checks make one connection to the target on port 443. No AI provider or API key is needed.
--checks takes any of email, registration, tls, http_headers (default: all four). A selection is not graded: the report has no letter and no score, because a grade from some of the checks would read like a full result. In Python: run_exposure("example.com", checks=PASSIVE_CHECKS) (both names import from openosint.exposure.api); the report's not_run lists what was left out.
Want this every week, with history and an email when the grade drops? OpenOSINT Monitor runs it for you, free for one domain.
It does not scan ports, log in to anything, or collect personal data. The grade is not a certification and not proof of NIS2 or any other compliance. Lookalikes are found by DNS only and are never part of the grade.
This feature is beta: checks, scoring and the report format may change between releases. The HTML report footer shows its report_version.
Interfaces
Web UI
Browser-based AI chat with streaming tool output, inline result cards, light/dark theme toggle. Supports local inference via Ollama or any OpenAI-compatible endpoint — no Anthropic API key required.
Which hosts and sites may talk to the server. On a loopback bind the server only answers requests whose Host is 127.0.0.1, localhost or ::1. Every /api/* request from a browser must come from the UI's own origin; cross-site requests are refused (scripts and curl, which send no Origin, are unaffected).
Try the live demo → — bring your own Anthropic / OpenRouter / Ollama key, no signup.
Breaking change (v2.28+): key usage now follows bind address, not an env var. Bound to
127.0.0.1/localhost(the default) — no change: keys in your.envwork as before. Bound to any other interface (--host 0.0.0.0, which already requires--allow-remote) — the web UI never uses a key from your environment to serve a request; every caller must supply their own, and breach lookups (search_breach) are disabled outright. This applies regardless of any env var, includingOPENOSINT_DEMO_MODE, which can only add restriction, never remove it. If you were exposing the web UI on a LAN with your own keys and no per-caller auth in front of it, that access pattern no longer works.Running behind a reverse proxy? A loopback bind (
127.0.0.1) only means the OS accepted the connection from this machine — it says nothing about who can reach it if something in front (nginx, Caddy, a Docker/K8s sidecar, a tunnel) forwards requests to it from elsewhere. By default, a request that carries proxy-forwarding headers (X-Forwarded-For,X-Forwarded-Proto,X-Forwarded-Host,Forwarded,CF-Connecting-IP) is treated exactly like a non-loopback bind: your local keys are never used, breach lookups are blocked, and the caller is told why. If you deliberately serve this through a reverse proxy and want it to behave like a normal local instance for requests relayed by that proxy, setOPENOSINT_TRUSTED_PROXY=true. This is a separate variable from the existingTRUSTED_PROXY(which only affects which IP a rate-limit bucket is attributed to — a low-stakes, already-loosely-scoped setting some self-hosters already have on). Reusing that flag here would have silently upgraded an existing rate-limit-only configuration into one that also permits credentialed access, without asking.OPENOSINT_TRUSTED_PROXYgets its own explicit opt-in for that reason. Setting it does not blindly trust the forwarded headers' content — internally inconsistent values (e.g. two disagreeingX-Forwarded-Protovalues on one request) are still treated as public regardless. SettingOPENOSINT_TRUSTED_PROXY=truemeans you are choosing to serve credentialed lookups to whoever your reverse proxy relays to this instance — you are the controller for their queries, the same way any operator of a hosted service is for its users. Put real authentication in front of it if "whoever the proxy relays" is broader than you intend.
Interactive REPL
Run openosint with no arguments to start the AI-powered REPL:
REPL commands:
All sessions are auto-saved to ~/.openosint/history/. Browse with openosint history.
For the REPL/CLI with an OpenAI-compatible backend:
Live Documentation
Full per-tool reference, CLI flags, and configuration options at openosint.tech.
MCP Server
Expose OpenOSINT to any MCP-compatible AI client with no separate install step. uv must be installed; uvx then fetches and runs openosint on demand. By default the server lists 20 entries (the 16 passive tools plus 4 graph and batch helpers), and 25 with --allow-active (see Passive by default).
The command every client runs is the same:
GUI clients (Claude Desktop, Cursor) often launch with a minimal PATH that does not include uvx. If the server fails to start, replace "uvx" with the absolute path from which uvx (macOS/Linux) or where uvx (Windows).
Claude Code:
Add API keys (-e flags go before the --):
Optional, enables active tools: append
--allow-activeafteropenosint-mcp, or add-e OPENOSINT_ALLOW_ACTIVE=1. This exposes the noisy and target-touching tools (25 listed instead of 20); see the noise table first.
Claude Desktop — edit claude_desktop_config.json, then restart the app:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Optional, enables active tools: add
"--allow-active"toargs, or add"OPENOSINT_ALLOW_ACTIVE": "1"toenv. This exposes the noisy and target-touching tools (25 listed instead of 20); see the noise table first.
Cursor — add the same block to ~/.cursor/mcp.json (global) or .cursor/mcp.json (per project); the optional active-tools change above applies here too:
API keys go in the client's env block. MCP hosts launch the server with a cwd unrelated to your project, so a .env file is not picked up reliably; to use one, set "OPENOSINT_ENV_FILE": "/absolute/path/to/.env" in the same env block.
By default the server lists passive tools only, so a client LLM cannot see the noisy ones. Each tool description carries its noise label. Pin a release with --from openosint==2.36.1. Running from a source checkout instead: "command": "python", "args": ["-m", "openosint.mcp_server"].
Agentic use via Claude Code:
Installation
Quickstart — web UI in one command
Install uv once. It runs OpenOSINT in its own isolated environment, so there is no Python setup:
Then start OpenOSINT (open a new terminal first if uvx is not found):
You should see:
Your browser opens automatically; if it doesn't, open http://127.0.0.1:8080/. No .env file and no API keys are needed to start — keyless tools work immediately, and AI chat needs a provider key (ANTHROPIC_API_KEY) or a local Ollama.
Alternatives
External binaries (must be in PATH):
If a binary is absent, the corresponding tool returns a descriptive error. All other tools remain operational.
Optional Python packages:
Configuration
Easiest: open the web UI. On a local install, Settings saves your keys on this
computer by default ("Save on this computer"), as does the first-run panel; "Use only
for this browser session" is a secondary option that keeps a key in the tab only. On the
public demo, keys stay in the browser. Keys are written to config.env in the data directory
(~/.openosint/config.env, or $OPENOSINT_HOME/config.env), never inside the
installed package, with user-only permissions (0600) where the OS supports it.
Values are never logged or sent back to the browser; the UI only shows which keys
are configured and where each value came from.
Precedence, highest first:
- real environment variables (a saved value cannot override one; the UI says so)
config.envin the data directory- a legacy
.env(the locations below)
An existing .env keeps working. If the file at the package root (a source
checkout or Docker image) is the one that would be loaded, its known settings
are copied into config.env once, with a notice on stderr that names keys but
never values; the old file is left in place and now has lower priority.
For a file you manage yourself, copy .env.example to .env and fill in your keys. .env is read from the
directory you run openosint from (searched upward, like git finds
.git) — it does not need to be at any particular "project root", and a
regular pip install works the same way as running from a source checkout.
Set OPENOSINT_ENV_FILE=/path/to/.env to point at an explicit file instead
(useful for the MCP server, which is launched by its host with an arbitrary
working directory). A real environment variable always takes priority over
a value in .env.
Required below means required for that specific tool to run, not for openosint
itself — the app starts and every key-less tool works with zero configuration.
On a fresh install with no keys at all, these still work: generate_dorks,
search_dns, search_whois, search_rdap, search_paste, search_ip
(rate-limited), search_github (rate-limited), and search_gdelt_geo.
search_email, search_username, search_domain and search_phone also need no key,
but they are off by default and need --allow-active plus their external binary
(holehe, sherlock, sublist3r, phoneinfoga).
CLI Reference
Docker
.env is optional: with no keys the web UI still starts at http://localhost:8080. To provide keys today, list them under environment: in docker-compose.yml (or in a .env next to it), or put a .env in the data volume (/data/.env). Reports are persisted to ./reports/; the graph database and session history live in the openosint-data volume (/data in the container, via OPENOSINT_HOME). The image includes the graph view.
Saving keys from the browser in Docker. The browser reaches the container over the Docker network, not loopback, so the UI cannot save keys by default and says so (it shows the reason instead of failing silently). Either set the keys in your compose environment or .env, or set a token and enter it in the UI's Save keys to server panel: OPENOSINT_SETUP_TOKEN=choose-a-long-random-string docker compose up. Saved keys go to /data/config.env in the openosint-data volume and survive restarts. Wrong tokens are throttled.
The port is published on 127.0.0.1 only, and the Host check is on (OPENOSINT_ALLOWED_HOSTS defaults to localhost,127.0.0.1 in the compose file; extend it if you reach the UI by another name). To reach it from other machines on purpose, run OPENOSINT_BIND=0.0.0.0 docker compose up: the instance then runs in restricted mode (it never spends keys held on the server). Security note: the UI's setup endpoint accepts and stores API keys, so only do this on a network and behind a firewall or reverse proxy you trust.
Warning:
OPENOSINT_PUBLISHED_BIND.docker-compose.ymlsets this to the same value asOPENOSINT_BINDto tell the server which address the port is published on; an exact loopback value (127.0.0.1,localhost,::1) lifts the restriction that a container's0.0.0.0bind otherwise gets. Never set it to a loopback value yourself, or edit the compose port mapping away from it, when the port is published on any other interface.
Integrations
Limitations
- Authorized use only. OpenOSINT queries public and semi-public sources. It does not bypass authentication, exploit systems, or access anything you aren't already entitled to see. You are responsible for complying with the law and the terms of service of every source you query. See DISCLAIMER.md.
- No aggregation guarantees. Each tool reports what its upstream source currently returns. A negative result (no breach found, no accounts found) means the source didn't report a match — not that no exposure exists.
- Most tools depend on third-party services you don't control. Nine of the 21 tools hard-require an API key and are subject to that provider's uptime, rate limits, and pricing (Shodan, VirusTotal, Censys, AbuseIPDB, IP2Location, HaveIBeenPwned, and the three Bright Data¹–backed tools). Free tiers are small; heavy use requires a paid plan with the provider, not with OpenOSINT.
- Local binaries are unsandboxed subprocesses.
holehe,sherlock,sublist3r, andphoneinfogarun as external processes on your machine. Keep them updated yourself; OpenOSINT does not patch or vet them. - The entity graph module (
openosint[graph]) is additive, not authoritative.same_aslinks are scored candidates for human review, not verified identity matches — see docs/graph.md. - AI output is a lead, not proof. The agent can only call the tools above (and, by default, only the passive ones). Tool results come from real executions and are shown with the tool call that produced them, but the model can still misread, misattribute or over-weight a result, and its tool selection can be wrong or incomplete for a given target. Check the raw tool output before acting on a conclusion.
Support & commercial
OpenOSINT is free and MIT-licensed. These are optional ways to support it or buy a hosted or contracted version.
- Hosted: OpenOSINT Monitor, free for one domain · OpenOSINT Diligence.
- Sponsor: Open Collective · tiers and media kit in SPONSORSHIP.md · [email protected]. Current sponsors are listed below.
- Commercial license & support: vendor contract, warranty, indemnification, SLA or priority support for procurement, from €300/year. The software itself needs no purchase. See COMMERCIAL.md or [email protected].
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.
Contributing
Issues and pull requests are welcome. See CONTRIBUTING.md for the development workflow, integration registration checklist, and coding conventions. Please read DISCLAIMER.md before contributing.
Regenerating the demo GIF/MP4
See scripts/record-demo/README.md for full prerequisites and pipeline details.
Maintainer
Tommaso Bertocchi
- X (personal): https://x.com/SonoTommy_
- X (OpenOSINT): https://x.com/openosint_oss
- LinkedIn: https://www.linkedin.com/company/openosintoss
- Email: [email protected]
Contributors
License
OpenOSINT is open source under the MIT License — free for any use, including personal, commercial, academic, and closed-source.
¹ 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.
For authorized security research only. See DISCLAIMER.md.
OpenOSINT v2.36.1 — October 2026
Star History
Source: README.md at commit 4acf13d
Tools
0Version history
1- v2.15.2LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Other Osint integrations
osint.foundation
foundation.osintOfficial publisher
osint.foundation's hosted MCP server, published by osint.foundation; credential required; Streamable HTTP; 51 tools.

OSINT.SX
Published by GitHub account osintsx
Runs OSINT.SX people and account lookups from an assistant: one search across all sources, plus Google, Microsoft, Epic, X, Steam, Instagram and TikTok tools.

Domain Osint Mcp
Published by GitHub account robertoyanguas-ops
A remote MCP server that lets an assistant run domain OSINT checks: live DNS resolution, TLS certificate details and an HTTP security grade.

OSINT
Published by GitHub account robyroro
Local MCP server for OSINT-style domain and website investigations: recon, WHOIS/RDAP, DNS, certificates, archive and infrastructure comparison from public…

Robin: AI-Powered Dark Web OSINT
Published by GitHub account apurvsinghgautam
Robin runs dark web OSINT investigations over Tor, letting an assistant search onion search engines, scrape pages and save reports using the agent's own model.