io.github.OpenOSINT/openosint
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GITHUB_TOKEN | No | Optional GitHub token; raises the GitHub REST API rate limit from 60 to 5000 requests per hour for search_github. | |
| HIBP_API_KEY | No | HaveIBeenPwned v3 API key; required for the search_breach tool to run. | |
| IPINFO_TOKEN | No | Optional ipinfo.io token; raises rate limits for search_ip. | |
| CENSYS_API_ID | No | Censys API ID; required together with CENSYS_SECRET for the search_censys tool to run. | |
| CENSYS_SECRET | No | Censys API secret; required together with CENSYS_API_ID for the search_censys tool to run. | |
| SHODAN_API_KEY | No | Shodan API key; required for the search_shodan tool to run. The MCP server starts without it. | |
| ABUSEIPDB_API_KEY | No | AbuseIPDB v2 API key; required for the search_abuseipdb tool to run. | |
| BRIGHTDATA_API_KEY | No | Bright Data API key; required for search_dorks_live, scrape_url and search_footprint. | |
| OPENOSINT_ENV_FILE | No | Absolute path to a .env file to load, used because MCP hosts launch the server with a working directory unrelated to your project. | |
| VIRUSTOTAL_API_KEY | No | VirusTotal API v3 key; required for the search_virustotal tool to run. | |
| IP2LOCATION_API_KEY | No | IP2Location.io API key; required for the search_ip2location tool to run. | |
| BRIGHTDATA_SERP_ZONE | No | Bright Data SERP zone name (e.g. serp_api1); required for search_dorks_live and search_footprint. | |
| OPENOSINT_ALLOW_ACTIVE | No | Set to 1 to enable active tools (noisy or target-touching tools), equivalent to passing --allow-active to openosint-mcp. Off by default, so only passive tools are listed to the MCP client. | |
| BRIGHTDATA_UNLOCKER_ZONE | No | Bright Data Web Unlocker zone name (e.g. web_unlocker1); required for scrape_url. | |
| OPENOSINT_MAX_TOOL_CALLS | No | Maximum number of tool calls per user request in agentic tool chains (default 15). | |
| OPENOSINT_MAX_TOOL_CALLS_MULTI | No | Maximum number of tool calls shared across all targets for investigate_multi (default 30). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_breachA | Check if an email appears in data breaches via HaveIBeenPwned. Uses HIBP_API_KEY env var. [passive] One request to haveibeenpwned.com. |
| search_whoisA | Retrieve WHOIS registration data for a domain. [passive] Queries the registry/registrar WHOIS server, not the target. |
| search_ipB | Retrieve geolocation and ASN data for an IP address via ipinfo.io. [passive] One request to ipinfo.io. |
| generate_dorksA | Generate targeted Google dork URLs for any target (name, email, username, domain). [passive] Builds Google search URLs locally; sends nothing. |
| search_pasteB | Search Pastebin dumps for an email or username via psbdmp.ws. [passive] One request to psbdmp.ws. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
| 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. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 20 tools
Several tools overlap in purpose: search_whois and search_rdap both return domain registration data, search_ip and search_ip2location both provide IP geolocation/ASN (the latter adding VPN/proxy detection), and generate_dorks vs search_dorks_live vs search_footprint all revolve around dork/search-engine queries. The detailed descriptions do help distinguish them (passive vs billable live SERP, entity-aware vs raw dorks), but an agent still faces real choices like 'which IP tool' or 'which registration lookup'. The graph_* tools and investigate_multi are cleanly separate.
Names are uniformly snake_case and mostly follow a search_<source> pattern (search_shodan, search_virustotal, search_censys) with a parallel graph_<action> family (graph_export, graph_neighbors, graph_review_candidates). Minor deviations exist: generate_dorks breaks the search_ prefix for a similar-purpose tool, and investigate_multi uses a different verb form, but overall the conventions are predictable.
At 20 tools this is on the heavy side, but each tool maps to a distinct external data source or graph operation, so the surface is mostly earned. The count is inflated slightly by near-duplicate integrations (ipinfo vs ip2location, whois vs rdap) that could be consolidated.
Coverage across IP reputation, breach, paste, WHOIS/RDAP, DNS, certificates, shodan/censys, GitHub, news geolocation, SERP footprint, plus a full graph export/traverse/human-review lifecycle and multi-target orchestration is broad and coherent. Gaps are minor: no dedicated social-media or phone-specific lookup tool (footprint only partially covers these), and no graph mutation/cleanup or report-export beyond NDJSON.