Robin: AI-Powered Dark Web OSINT
Dark web OSINT over Tor: search onion engines, scrape pages, report with your own model.
Security checks for AI-built apps (Lovable, Supabase, Bolt): RLS, headers, monitoring, fixes.
Pick the AI app you use, then copy the settings.
Passed 4/5 checks · What you ask goes through the maker’s server (api.patchlabs.dev)
First: which AI do you use?
Pick your app and the steps appear below.
Works with Claude · about 2 min
No key, nothing to install · Set it up once on claude.ai or the desktop app, then use it in chat · free accounts can add 1 · on Team/Enterprise an Owner adds it
CustomizeConnectors
Copy each value into the field with the same name in Claude, then click Continue
PatchLabshttps://api.patchlabs.dev/mcpLeave Authentication as Claude detected it, then click Add
+ConnectorsPatchLabs
Use PatchLabs and tell me what you can do for me, then show me one thing✓ If Claude says it is using PatchLabs or shows a PatchLabs tool in the answer, you are connected
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with ChatGPT on business plans only
ChatGPT Business, Enterprise or Edu on the web, added by a workspace admin or owner · On Free, Plus or Pro: your ChatGPT plan cannot connect MCP yet
Plugins+Add custom MCP server
Enter a name, paste the address under Connection, tick the risk warning and click Create as a plugin
PatchLabshttps://api.patchlabs.dev/mcpStart a new chat and pick PatchLabs from your plugins before typing
Use PatchLabs and tell me what you can do for me, then show me one thing✓ If ChatGPT says it is using PatchLabs or shows a PatchLabs tool in the answer, you are connected
Menu names checked against OpenAI’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with Claude Code · about 2 min
No key, nothing to install
Mac: press Command+Space and type Terminal · Windows: open PowerShell
claude mcp add --transport http --scope user patchlabs https://api.patchlabs.dev/mcpYou should see PatchLabs listed as connected
Use PatchLabs and tell me what you can do for me, then show me one thing✓ If Claude Code says it is using PatchLabs or shows a PatchLabs tool in the answer, you are connected
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with Cursor · about 2 min
No key, nothing to install
Use PatchLabs and tell me what you can do for me, then show me one thing✓ If Cursor says it is using PatchLabs or shows a PatchLabs tool in the answer, you are connected
Menu names checked against Cursor’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with VS Code · about 2 min
No key, nothing to install
Use PatchLabs and tell me what you can do for me, then show me one thing✓ If VS Code says it is using PatchLabs or shows a PatchLabs tool in the answer, you are connected
Menu names checked against VS Code’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Other apps that use MCP, such as Windsurf, Zed or Gemini CLI, each add servers differently. See how in the app list.
Address for apps that connect over the web
https://api.patchlabs.dev/mcpJSON settings are under “For developers” below
Claude Code
claude mcp add --transport http --scope user patchlabs https://api.patchlabs.dev/mcpCursor (~/.cursor/mcp.json)
{
"mcpServers": {
"patchlabs": {
"url": "https://api.patchlabs.dev/mcp"
}
}
}VS Code (mcp.json)
{
"servers": {
"patchlabs": {
"type": "http",
"url": "https://api.patchlabs.dev/mcp"
}
}
}These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Based on how this server connects and on each app’s own docs, checked Nov 10, 2026.
Connect over the internet in
ClaudeChatGPTGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast
Tool names and descriptions exactly as the server reported them on Nov 11, 2026. The maker wrote them, not us; we show them as plain text.
rls_checkScan a public repo's supabase/migrations for row-level-security mistakes (static analysis, no sign-up).
headers_checkGrade a public site's HTTPS, TLS certificate, security headers and cookie flags from one load of its home page (no sign-up). Returns findings PL-027..PL-036 with fixes.
start_checkRequest the full lab check. Returns a check id and a link; the repo owner proves ownership with a one-line file.
get_checkStatus, summary, report and fix for a check id.
list_appsApps monitored in the API key's workspace, with their last check. Needs X-API-Key.
run_checkQueue a check for a monitored app now. Needs X-API-Key.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 12, 2026
The registry name was verified against the domain patchlabs.dev (the registry checks domain ownership)
Code last changed yesterday
No licence file found in the repo
Responded in 250 ms (HTTP 200)
No sign-in needed
Read 6 tool descriptions and found no hidden instructions to the AI
Ask, share a tip or report that it does not work. Sorted by what people marked helpful.
No posts yet. Be the first to ask or share.
Posts here are written by users, not the PopNx team.
No reviews yet
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 4 of 5 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.
The GitHub repo last changed yesterday, and the latest version (3.1.0) reached the registry yesterday.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT Business and above.
In the same category: Robin: AI-Powered Dark Web OSINT, HOL Guard, SonarQube MCP Server
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Dark web OSINT over Tor: search onion engines, scrape pages, report with your own model.
Analyze code quality and security with SonarQube Server or Cloud directly in AI assistants.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
Leak checks and tested fixes for AI-built apps: https://patchlabs.dev
| Part | Where | Runs on |
|---|---|---|
docs/ | Website: landing page, check status and report page, privacy | GitHub Pages (patchlabs.dev) |
api/ | FastAPI: checks, accounts, workspaces, monitored apps, receipts, free RLS tool, MCP (see API below) | Azure Container Apps (api.patchlabs.dev) |
db/schema.sql | Postgres schema, idempotent and additive; applied by the API on start | Azure Database for PostgreSQL, database patchlabs |
worker/ | Takes verified checks, runs the lab pipeline (Docker + Claude Code), posts reports; deletes run folders older than 30 days | Manraj's Mac, kept alive by launchd |
POST /checks.patchlabs-verify.txt with a one-time code → POST /checks/{id}/verify.POST /worker/claim), rebuilds the database from the repo's migrations in a lab, finds personal data the wrong people can read, has the fix agent write a fix (Haiku first, escalating to Sonnet then Opus only if the lab proof fails), and posts the report (POST /worker/checks/{id}/result).Contract: SPEC.md. JSON everywhere; errors are {"detail": "..."}. Signed-in calls send Authorization: Bearer , CI calls send X-API-Key: pl_live_..., worker and admin calls send their bearer tokens.
| Module | Endpoints | |||||||
|---|---|---|---|---|---|---|---|---|
app.py | GET /health, POST /checks, GET /checks/{id}, POST /checks/{id}/verify, `POST /worker/heartbeat\ | claim (claim also runs the scheduler), POST /worker/checks/{id}/result, GET /admin/checks` | ||||||
accounts.py | POST /workspaces/{wid}/webhook/rotate-secret, `POST /auth/start\ | finish\ | logout, POST /invites/accept, GET\ | PATCH\ | DELETE /me, GET /me/export, GET /me/checks, GET\ | PATCH /workspaces/{wid}, POST /workspaces/{wid}/webhook/test, POST /workspaces/{wid}/invites, DELETE /workspaces/{wid}/invites/{id}, PATCH\ | DELETE /workspaces/{wid}/members/{uid}, GET\ | POST /workspaces/{wid}/api-keys, DELETE /workspaces/{wid}/api-keys/{kid}, POST /workspaces/{wid}/upgrade-request, GET /admin/workspaces, PATCH /admin/workspaces/{wid}, GET /admin/upgrade-requests` |
monitor.py | `GET\ | POST /workspaces/{wid}/apps, GET\ | PATCH\ | DELETE /apps/{aid}, POST /apps/{aid}/verify, POST /apps/{aid}/checks, GET /badge/{aid}.svg, GET /public/apps/{aid}, GET /stats, POST /v1/apps/{aid}/checks, GET /v1/checks/{cid}` | ||||
receipts.py | POST /checks/{id}/decision, POST /checks/{id}/answers, GET /checks/{id}/decisions (members), GET /receipts/{id}, GET /.well-known/patchlabs-receipt-key | |||||||
rls.py | POST /tools/rls-check | |||||||
mcp_server.py | POST /mcp (tools: rls_check, start_check, get_check, list_apps, run_check) |
Env: DATABASE_URL, WORKER_TOKEN, ADMIN_TOKEN, SITE_URL, CORS_ORIGINS, SMTP_*, RECEIPT_PRIVATE_KEY (required: base64 of a 32-byte Ed25519 seed, python3 -c "import os,base64;print(base64.b64encode(os.urandom(32)).decode())"; the API refuses to start without it unless PATCHLABS_DEV=1), optional GITHUB_TOKEN, FOUNDER_EMAIL. Test hooks: EMAIL_OUTBOX, GITHUB_API, RAW_GITHUB. Security rules (rate limits, verification, masking): see "Security rules" in SPEC.md.
Webhooks are signed: X-PatchLabs-Signature: v1= . "> with the workspace's whsec_ secret and X-PatchLabs-Timestamp; verification snippet at https://patchlabs.dev/docs/webhooks#security.
Verify a receipt (signed bytes are the receipt as JSON with sorted keys and (",", ":") separators):
import base64, json, urllib.request
from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PublicKey API, CHECK = "https://api.patchlabs.dev", " " r = json.load(urllib.request.urlopen(f"{API}/receipts/{CHECK}")) k = json.load(urllib.request.urlopen(f"{API}/.well-known/patchlabs-receipt-key")) assert r["key_id"] == k["key_id"], "signed with a different key" msg = json.dumps(r["receipt"], sort_keys=True, separators=(",", ":")).encode() pub = Ed25519PublicKey.from_public_bytes(base64.b64decode(k["public_key"])) pub.verify(base64.b64decode(r["signature"]), msg) # raises InvalidSignature if anything was changed print("receipt is genuine:", r"receipt", r"receipt")
Tests: tools/test-api.sh runs the whole suite in Docker (throwaway postgres:17 + python:3.13-slim) and cleans up after itself; extra arguments go to pytest, e.g. tools/test-api.sh -k webhook -x.
TAG=$(date +%Y%m%d%H%M)
az acr build -r sponsorjobsregistry -t patchlabs-api:$TAG -f api/Dockerfile . az containerapp update -g ics-rg -n patchlabs-api --image sponsorjobsregistry.azurecr.io/patchlabs-api:$TAG
Before the first v2 deploy, set `RECEIPT_PRIVATE_KEY` as a secret on the container app: without it the new image won't start.