AI-powered OSINT agent with interactive REPL, MCP server, and CLI. 20 tools. Works with Claude, GPT-4, or local models. For authorized security research only.
Drift inferred · capture-to-capture
tool count over time
06-01 20:33 now
26t
0t
transport stdio · streamable-http · http
verified
reported
listed in the official MCP registry counts 16 tools · 0 res
· 0 prompts
permission surface via code analysis
tools
-
generate_dorks
-
search_abuseipdb
-
search_breach
-
search_censys
-
search_dns
-
search_domain
-
search_email
-
search_github
-
search_ip
-
search_ip2location
-
search_paste
-
search_phone
-
search_shodan
-
search_username
-
search_virustotal
-
search_whois
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 0ffe217 · analyzer v33 · 2d ago
danger signals3
- suspicious endpoint pastebin.com OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_paste.py :66
lines.append(f"[+] https://pastebin.com/{paste_id} ({date})") - suspicious endpoint pastebin.com OpenOSINT-OpenOSINT-0ffe217/tests/test_playbooks.py :419
"[+] https://pastebin.com/abc123 (2024-01-15)\n" - suspicious endpoint 169.254.169.254 (cloud metadata) OpenOSINT-OpenOSINT-0ffe217/tests/test_web_server_ssrf.py :161
await _validate_outbound_base_url("http://169.254.169.254/latest/meta-data/")
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 179
filesystem 25
- fs (weak) OpenOSINT-OpenOSINT-0ffe217/demo/seed_demo.py :24
import shutil - fs (weak) OpenOSINT-OpenOSINT-0ffe217/demo/web_demo.py :37
import shutil - fs (weak) OpenOSINT-OpenOSINT-0ffe217/media/record_demo.py :25
import shutil - fs OpenOSINT-OpenOSINT-0ffe217/openosint/cli.py :964
threading.Timer(1.5, lambda: webbrowser.open(url)).start() - fs OpenOSINT-OpenOSINT-0ffe217/openosint/env.py :40
from pathlib import Path - fs OpenOSINT-OpenOSINT-0ffe217/openosint/graph/store/db_path.py :14
from pathlib import Path - fs OpenOSINT-OpenOSINT-0ffe217/openosint/graph/store/graph_store.py :23
from pathlib import Path - fs OpenOSINT-OpenOSINT-0ffe217/openosint/multi_target.py :17
from pathlib import Path - fs OpenOSINT-OpenOSINT-0ffe217/openosint/pdf_report.py :15
from pathlib import Path - fs OpenOSINT-OpenOSINT-0ffe217/openosint/playbooks/loader.py :7
from pathlib import Path - fs OpenOSINT-OpenOSINT-0ffe217/openosint/playbooks/runner.py :9
import shutil - fs OpenOSINT-OpenOSINT-0ffe217/openosint/repl.py :21
from pathlib import Path
show 13 more
- fs OpenOSINT-OpenOSINT-0ffe217/openosint/session_history.py :15
from pathlib import Path - fs OpenOSINT-OpenOSINT-0ffe217/openosint/sponsors.py :11
from pathlib import Path - fs OpenOSINT-OpenOSINT-0ffe217/openosint/utils.py :15
import shutil - fs OpenOSINT-OpenOSINT-0ffe217/openosint/web_server.py :26
import shutil - fs (weak) OpenOSINT-OpenOSINT-0ffe217/scripts/record_web_demo.py :5
from pathlib import Path - fs (weak) OpenOSINT-OpenOSINT-0ffe217/scripts/render_sponsors.py :30
from pathlib import Path - fs (weak) OpenOSINT-OpenOSINT-0ffe217/scripts/sponsor_metrics.py :35
from pathlib import Path - fs (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_docs_consistency.py :10
from pathlib import Path - fs (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_mcp_server_dotenv.py :36
import shutil - fs (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_playbooks.py :14
from pathlib import Path - fs (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_sponsor_metrics.py :9
from pathlib import Path - fs (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_sponsors.py :9
from pathlib import Path - fs (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_tools.py :52
import shutil
shell / exec 6
- shell (weak) OpenOSINT-OpenOSINT-0ffe217/demo/web_demo.py :38
import subprocess - shell (weak) OpenOSINT-OpenOSINT-0ffe217/media/record_demo.py :26
import subprocess - shell (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_env_loading.py :23
import subprocess - shell (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_mcp_server_dotenv.py :37
import subprocess - shell (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_sponsor_metrics.py :7
import subprocess - shell (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_sponsors.py :6
import subprocess
network 25
- net (weak) OpenOSINT-OpenOSINT-0ffe217/demo/web_demo.py :42
import urllib.request - net OpenOSINT-OpenOSINT-0ffe217/openosint/cli.py :68
import socket - net OpenOSINT-OpenOSINT-0ffe217/openosint/proxy.py :22
from urllib.parse import urlsplit, urlunsplit - net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/generate_dorks.py :13
import urllib.parse - net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/scrape_url.py :31
import requests - net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_abuseipdb.py :17
import aiohttp - net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_breach.py :16
import requests - net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_dorks_live.py :27
import urllib.parse - net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_footprint.py :30
import urllib.parse - net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_gdelt_geo.py :23
import requests - net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_github.py :18
import aiohttp - net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_ip.py :16
import requests
show 13 more
- net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_ip2location.py :20
import requests - net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_paste.py :14
import requests - net OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_virustotal.py :25
import requests - net OpenOSINT-OpenOSINT-0ffe217/openosint/web_server.py :27
import socket - net (weak) OpenOSINT-OpenOSINT-0ffe217/scripts/sponsor_metrics.py :37
import requests - net (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_brightdata.py :106
with patch("openosint.tools.search_dorks_live.requests.post", return_value=mock_resp): - net (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_cloud.py :25
from httpx import ASGITransport, AsyncClient - net (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_footprint.py :107
"openosint.tools.search_footprint.requests.post", return_value=mock_resp - net (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_graph_web_routes.py :31
from httpx import ASGITransport, AsyncClient # noqa: E402 - net (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_tools.py :346
with patch("openosint.tools.search_gdelt_geo.requests.get", return_value=mock_response): - net (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_v2140.py :8
import aiohttp - net (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_web_server.py :18
from httpx import ASGITransport, AsyncClient - net (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_web_server_ssrf.py :31
from httpx import ASGITransport, AsyncClient
secrets 19
- secrets OpenOSINT-OpenOSINT-0ffe217/cloud/config.py :19
GITHUB_CLIENT_SECRET = os.environ.get("GITHUB_CLIENT_SECRET", "") - secrets OpenOSINT-OpenOSINT-0ffe217/cloud/keys.py :37
raw_key = os.environ.get("CONFIG_ENCRYPTION_KEY", "") - secrets OpenOSINT-OpenOSINT-0ffe217/openosint/agent.py :671
api_key=api_key or os.environ.get("ANTHROPIC_API_KEY", "") - secrets OpenOSINT-OpenOSINT-0ffe217/openosint/repl.py :287
self._api_key = api_key or os.environ.get("ANTHROPIC_API_KEY", "") - secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/scrape_url.py :119
api_key = _k.get("BRIGHTDATA_API_KEY") or os.environ.get("BRIGHTDATA_API_KEY", "") - secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_abuseipdb.py :89
resolved_key = api_key or os.environ.get("ABUSEIPDB_API_KEY", "") - secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_breach.py :107
resolved_key = api_key or os.environ.get("HIBP_API_KEY", "") - secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_censys.py :138
api_secret = _k.get("CENSYS_SECRET") or os.environ.get("CENSYS_SECRET", "") - secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_dorks_live.py :269
api_key = _k.get("BRIGHTDATA_API_KEY") or os.environ.get("BRIGHTDATA_API_KEY", "") - secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_footprint.py :203
api_key = _k.get("BRIGHTDATA_API_KEY") or os.environ.get("BRIGHTDATA_API_KEY", "") - secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_github.py :136
token = api_key or os.environ.get("GITHUB_TOKEN") or None - secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_ip.py :38
token = api_key or os.environ.get("IPINFO_TOKEN", "")
show 7 more
- secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_ip2location.py :160
resolved_key = api_key or os.environ.get("IP2LOCATION_API_KEY", "") - secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_shodan.py :98
resolved_key = api_key or os.environ.get("SHODAN_API_KEY", "") - secrets OpenOSINT-OpenOSINT-0ffe217/openosint/tools/search_virustotal.py :281
resolved_key = api_key or os.environ.get("VIRUSTOTAL_API_KEY", "") - secrets OpenOSINT-OpenOSINT-0ffe217/openosint/web_server.py :335
expected = os.environ.get("OPENOSINT_SETUP_TOKEN", "").strip() - secrets (weak) OpenOSINT-OpenOSINT-0ffe217/scripts/sponsor_metrics.py :295
token = os.environ.get("GITHUB_TOKEN") - secrets (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_env_loading.py :47
"print(json.dumps({'BRIGHTDATA_API_KEY': os.environ.get('BRIGHTDATA_API_KEY')}))\n" - secrets (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_web_server.py :559
os.environ["SHODAN_API_KEY"] = backup
database 3
- db OpenOSINT-OpenOSINT-0ffe217/cloud/db.py :29
import asyncpg # type: ignore - db OpenOSINT-OpenOSINT-0ffe217/openosint/graph/store/graph_store.py :20
import sqlite3 - db (weak) OpenOSINT-OpenOSINT-0ffe217/tests/test_graph_store_schema.py :10
import sqlite3 # noqa: E402
tool registrations 22
- search_ip OpenOSINT-OpenOSINT-0ffe217/cloud/routes/mcp_gateway.py :114
- search_ip2location OpenOSINT-OpenOSINT-0ffe217/cloud/routes/mcp_gateway.py :123
- search_abuseipdb OpenOSINT-OpenOSINT-0ffe217/cloud/routes/mcp_gateway.py :132
- search_dns OpenOSINT-OpenOSINT-0ffe217/cloud/routes/mcp_gateway.py :141
- search_domain OpenOSINT-OpenOSINT-0ffe217/cloud/routes/mcp_gateway.py :149
- search_virustotal OpenOSINT-OpenOSINT-0ffe217/cloud/routes/mcp_gateway.py :160
- search_email OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :81
- search_username OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :92
- search_breach OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :103
- search_whois OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :114
- search_ip OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :125
- search_domain OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :132
show 10 more
- generate_dorks OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :143
- search_paste OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :154
- search_phone OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :165
- search_shodan OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :176
- search_virustotal OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :192
- search_censys OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :207
- search_ip2location OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :223
- search_abuseipdb OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :235
- search_github OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :247
- search_dns OpenOSINT-OpenOSINT-0ffe217/openosint/mcp_server.py :263
declared dependencies 32
- mcp@>=1.0.0,<2
- anthropic@>=0.40.0
- requests@>=2.31.0
- python-whois@>=0.9.0
- rich@>=13.0.0
- prompt_toolkit@>=3.0.0
- python-dotenv@>=1.0.0
- aiohttp@>=3.9.0
- dnspython@>=2.6.0
- fastapi@>=0.110.0
- uvicorn@>=0.29.0
- sse-starlette@>=1.8.0
show 20 more
- httpx@>=0.27.0
- asyncpg@>=0.29.0
- cryptography@>=41.0.0
- pyyaml@>=6.0
- reportlab@>=4.0
- authlib@>=1.3.0
- itsdangerous@>=2.1.0
- pytest@>=7.0
- pytest-asyncio@>=0.21
- pytest-cov@>=7.1.0
- ruff@>=0.1.0
- shodan@>=1.31.0
- ollama@>=0.3.0
- openai@>=1.40.0
- censys@>=2.2.0
- PySocks@>=1.7.1
- aiohttp-socks@>=0.8.4
- followthemoney@>=4.10.0
- nomenklatura@>=4.14.0; python_version>=
- playwright@>=1.40.0
transport_posture 2
- binds all interfaces (0.0.0.0) OpenOSINT-OpenOSINT-0ffe217/cloud/main.py :77
uvicorn.run("cloud.main:app", host="0.0.0.0", port=port, reload=False) - binds all interfaces (0.0.0.0) OpenOSINT-OpenOSINT-0ffe217/tests/test_web_server.py :937
app = ws.create_app(host="0.0.0.0")