Robin: AI-Powered Dark Web OSINT
Dark web OSINT over Tor: search onion engines, scrape pages, report with your own model.
Scan AI-generated JS/TS for security and reliability issues; score a site for AI-agent readiness.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
3/3 Prüfungen bestanden · Läuft auf deinem Computer · ✓ Befehle geprüft am 13. Nov. 2026
Zuerst: Welche KI nutzt du?
Wähle deine App, dann erscheinen die Schritte unten.
Klappt mit Claude, aber erst etwas vorbereiten
Installiere zuerst Node.js auf deinem Computer (nur einmal) · Nur in der Claude-App für den Computer (Windows oder Mac), nicht im Web oder auf dem Handy
Nur einmal; gilt für alle Server, die Node.js brauchen
SettingsDeveloperEdit Config
{
"mcpServers": {
"prodlint": {
"command": "npx",
"args": [
"-y",
"prodlint-mcp"
]
}
}
}Nutze prodlint und sag mir, was du für mich tun kannst; zeig mir dann eine Sache✓ Wenn Claude sagt, dass es prodlint nutzt, oder ein Werkzeug von prodlint in der Antwort zeigt, bist du verbunden
Menünamen am 11. Nov. 2026 mit der Hilfe von Anthropic abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen
ChatGPT kann prodlint noch nicht verbinden
prodlint läuft auf deinem Computer, aber ChatGPT verbindet nur Server, die im Web laufen
A · Eine App nutzen, die prodlint verbinden kann
B · Andere in Cybersicherheit, die mit ChatGPT funktionieren
Aus den meistgenutzten derselben Kategorie, nur solche, die per Adresse ohne Schlüssel verbinden
Klappt mit Claude Code, aber erst etwas vorbereiten
Installiere zuerst Node.js auf deinem Computer (nur einmal)
Nur einmal; gilt für alle Server, die Node.js brauchen
Mac: Command+Leertaste drücken und Terminal tippen · Windows: PowerShell öffnen
claude mcp add --scope user prodlint -- npx -y prodlint-mcpprodlint sollte in der Liste als verbunden erscheinen
Nutze prodlint und sag mir, was du für mich tun kannst; zeig mir dann eine Sache✓ Wenn Claude Code sagt, dass es prodlint nutzt, oder ein Werkzeug von prodlint in der Antwort zeigt, bist du verbunden
Menünamen am 11. Nov. 2026 mit der Hilfe von Anthropic abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen
Klappt mit Cursor, aber erst etwas vorbereiten
Installiere zuerst Node.js auf deinem Computer (nur einmal)
Nur einmal; gilt für alle Server, die Node.js brauchen
Nutze prodlint und sag mir, was du für mich tun kannst; zeig mir dann eine Sache✓ Wenn Cursor sagt, dass es prodlint nutzt, oder ein Werkzeug von prodlint in der Antwort zeigt, bist du verbunden
Menünamen am 11. Nov. 2026 mit der Hilfe von Cursor abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen
Klappt mit VS Code, aber erst etwas vorbereiten
Installiere zuerst Node.js auf deinem Computer (nur einmal)
Nur einmal; gilt für alle Server, die Node.js brauchen
VS Code fragt nach einer Bestätigung; klicke Install
Nutze prodlint und sag mir, was du für mich tun kannst; zeig mir dann eine Sache✓ Wenn VS Code sagt, dass es prodlint nutzt, oder ein Werkzeug von prodlint in der Antwort zeigt, bist du verbunden
Menünamen am 11. Nov. 2026 mit der Hilfe von VS Code abgeglichen · dein Bildschirm kann je nach App-Version leicht abweichen
Claude Code
claude mcp add --scope user prodlint -- npx -y prodlint-mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"prodlint": {
"command": "npx",
"args": [
"-y",
"prodlint-mcp"
]
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"prodlint": {
"command": "npx",
"args": [
"-y",
"prodlint-mcp"
]
}
}
}VS Code (mcp.json)
{
"servers": {
"prodlint": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"prodlint-mcp"
]
}
}
}Diese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
npm: prodlint-mcpBasierend darauf, wie sich dieser Server verbindet, und auf der eigenen Doku jeder App, geprüft am 10. Nov. 2026.
Laufen auf deinem Computer in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
Läuft auf deinem Computer; die Tool-Liste erscheint nach der Installation in deiner KI-App.
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 14. Nov. 2026
Der Registry-Name wurde mit dem GitHub-Konto prodlint bestätigt, dem das Repo gehört
Code zuletzt geändert: gestern
Nutzt MIT
Dieser Server läuft auf deinem Computer; es gibt keinen Endpunkt im Internet
Läuft auf deinem Computer und nutzt stattdessen lokale Einstellungen
Läuft auf deinem Computer; Tool-Listen können wir nur von Endpunkten im Internet lesen
Fragen, Tipps teilen oder melden, dass etwas nicht geht. Sortiert nach „hilfreich“.
Noch keine Beiträge. Stell die erste Frage oder teile einen Tipp.
Beiträge hier stammen von Nutzern, nicht vom PopNx-Team.
Noch keine Bewertungen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 3 von 3 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Die Registry nennt keinen erforderlichen Schlüssel, manche Server bitten dich aber bei der ersten Nutzung, dich anzumelden.
Er läuft auf deinem Computer. Deine KI-App startet ihn bei Bedarf, und die Daten laufen nicht über die Server des Entwicklers (außer der Server ruft selbst einen Onlinedienst auf).
Das GitHub-Repo wurde zuletzt gestern geändert, und die neueste Version (0.10.8) kam vor 4 Tagen in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Außerdem brauchst du Node.js auf deinem Computer.
In derselben Kategorie: Robin: AI-Powered Dark Web OSINT, HOL Guard, SonarQube MCP Server
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:↓ Downloads pro Wochei★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
Dark web OSINT over Tor: search onion engines, scrape pages, report with your own model.
Local-first AI agent security evidence and approval workflows through HOL Guard's stdio MCP server.
Analyze code quality and security with SonarQube Server or Cloud directly in AI assistants.
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
Production readiness for vibe-coded apps.
Static analysis for vibe-coded apps. Flags the security, reliability, performance, and AI quality issues common in code from tools like Claude Code, Cursor, v0, Bolt, and Copilot: hallucinated imports, missing auth, hardcoded secrets, unvalidated server actions, and more. Zero config, no LLM, 52 rules.
npx prodlint
prodlint v0.10.8
Scanned 6 files · 3 critical · 2 warnings · 1 info
app/api/users/route.ts 3:1 CRIT API route has no authentication check auth-checks ↳ Add authentication check: const session = await auth(); if (!session) return new Response('Unauthorized', { status: 401 }) 4:1 WARN Request body accessed without validation (consider using Zod, Yup, or similar) input-validation ↳ Validate input with Zod or a similar schema library before using it 3:1 INFO No rate limiting — anyone could spam this endpoint and run up your API costs rate-limiting ↳ Add rate limiting: import { Ratelimit } from '@upstash/ratelimit' or use express-rate-limit 3:1 WARN API route handler has no try/catch block error-handling ↳ Wrap the handler body in try/catch and return appropriate error responses
lib/format.ts 1:1 CRIT Package "currency-format-utils" is imported but not in package.json hallucinated-imports ↳ Verify the package exists on npm. The AI may have invented this package name.
lib/stripe.ts 3:35 CRIT Hardcoded Stripe secret key detected secrets ↳ Move the secret to an environment variable and access via process.env.SECRET_NAME
Scores security 82 ████████████████░░░░ (4 issues) reliability 90 ██████████████████░░ (2 issues) performance 100 ████████████████████ (0 issues) ai-quality 100 ████████████████████ (0 issues)
Overall: 90/100
3 critical · 2 warnings · 1 info
Add to your README:
That's what prodlint prints for the six-file app in tests/fixtures/readme-demo. A test fails if this block and the scanner ever disagree.
Vibe coding is the fastest way to build. Shipping fast means knowing your code is production-ready — not just that it compiles. Hardcoded secrets, hallucinated packages, missing auth, and XSS vectors pass type-checks and look correct — but they aren't ready for production.
prodlint checks what TypeScript and ESLint don't: whether your vibe-coded app is ready for production. It runs next to them, not instead of them.
npx prodlint # Run directly (no install)
npx prodlint ./my-app # Scan specific path npx prodlint --json # JSON output for CI npx prodlint --sarif # SARIF 2.1.0 for GitHub Code Scanning npx prodlint --summary # Quick pass/fail + top 3 blockers npx prodlint --profile startup # Only critical findings npx prodlint --profile balanced # Warnings and criticals npx prodlint --profile strict # All findings including info (the default) npx prodlint --min-severity warning # Only warnings and criticals npx prodlint --baseline-save .prodlint-baseline.json # Save today's findings npx prodlint --baseline .prodlint-baseline.json # Only findings that aren't in it npx prodlint --ignore "*.test.ts" # Ignore patterns (repeatable) npx prodlint --quiet # Leave out the README badge suggestion npx prodlint --web example.com # Score a deployed site instead (see Site Score)
Or install it:
npm i -D prodlint # Project dependency
npm i -g prodlint # Global install
Node.js 18 or later.
| Code | Meaning |
|---|---|
0 | No critical findings among the ones shown |
1 | At least one critical finding |
2 | The scan couldn't run: a bad flag, file or URL, or an unexpected error |
--min-severity, --profile and --baseline decide which findings are shown, and the exit code follows what's shown. Scores are always worked out from every finding.
--json prints one object:
{
"version": "0.10.8", "scannedPath": ".", // the path argument "filesScanned": 6, "scanDurationMs": 39, "findings": [ { "ruleId": "secrets", "file": "lib/stripe.ts", // relative to the scanned path, forward slashes "line": 3, // 1-based "column": 35, // 1-based "message": "Hardcoded Stripe secret key detected", "severity": "critical", // critical | warning | info "category": "security", // security | reliability | performance | ai-quality "fix": "Move the secret to an environment variable and access via process.env.SECRET_NAME" } // one object per finding ], "overallScore": 90, // 0-100, weighted across the categories "categoryScores": [ { "category": "security", "score": 82, "findingCount": 4 } // then reliability, performance, ai-quality ], "summary": { "critical": 3, "warning": 2, "info": 1 } }
fix is there on every finding today, but treat it as optional.
Each rule has a page with an example and a fix at https://prodlint.com/rules/ .
| Rule | What it checks |
|---|---|
secrets | Hardcoded API keys, tokens, private keys and database URLs with credentials |
auth-checks | API routes with no authentication check (middleware-aware) |
env-exposure | Server env vars read in client components; .env not in .gitignore |
input-validation | Request body used without validation in an API route |
cors-config | Access-Control-Allow-Origin: *, cors() with no config, origin: true; critical when the wildcard comes with credentials |
unsafe-html | dangerouslySetInnerHTML, direct innerHTML assignment |
sql-injection | SQL built with template literals or string concatenation (ORM-aware) |
open-redirect | User input passed directly to redirect() |
rate-limiting | API routes with no rate limiter |
phantom-dependency | Dependencies with commonly hallucinated or suspicious package names (slopsquatting) |
insecure-cookie | Session cookies set without httpOnly, secure or sameSite |
leaked-env-in-logs | process.env.* inside console.log() calls |
insecure-random | Math.random() used for tokens, secrets, or session IDs |
next-server-action-validation | Server actions using formData without Zod/schema validation |
env-fallback-secret | Secret env vars with hardcoded fallback values |
verbose-error-response | Error stack traces and messages sent back in API responses |
missing-webhook-verification | Webhook routes without signature verification |
server-action-auth | Server actions that write data, send something out or call an AI model, with no auth check |
eval-injection | eval(), new Function(), and strings passed to setTimeout or setInterval |
next-public-sensitive | NEXT_PUBLIC_ prefix on secret env vars |
ssrf-risk | User-controlled URLs passed to fetch in server code |
path-traversal | File system operations with unsanitized user input |
unsafe-file-upload | File uploads without type or size validation |
supabase-missing-rls | CREATE TABLE in migrations without enabling RLS |
deprecated-oauth-flow | OAuth Implicit Grant (response_type=token) |
jwt-no-expiry | JWT tokens signed without an expiration |
client-side-auth-only | Password comparisons, or auth tokens kept in localStorage, in client components |
| Rule | What it checks |
|---|---|
hallucinated-imports | Imports of packages that aren't in package.json |
error-handling | API route handlers with no try/catch |
unhandled-promise | fetch and database calls with no await, return or assignment |
shallow-catch | Catch blocks that are empty, ignore the error, or log without it |
missing-loading-state | Client components that fetch without a loading state |
missing-error-boundary | Route layouts with no error.tsx beside them |
missing-transaction | Multiple Prisma writes without $transaction |
redirect-in-try-catch | redirect() inside try/catch — Next.js redirect throws, catch swallows it |
missing-revalidation | Server actions that change data with no revalidatePath or revalidateTag |
missing-useeffect-cleanup | useEffect with timers, listeners or subscriptions and no cleanup |
hydration-mismatch | window/Date.now()/Math.random() in server component render path |
| Rule | What it checks |
|---|---|
no-sync-fs | readFileSync and other synchronous fs calls in server code |
no-n-plus-one | Database or fetch calls inside loops |
no-unbounded-query | .findMany() / .select('*') with no limit |
no-dynamic-import-loop | import() inside loops |
server-component-fetch-self | Server components fetching their own API routes |
missing-abort-controller | fetch or axios calls with no timeout, in API routes, server actions and background jobs |
| Rule | What it checks |
|---|---|
ai-smells | TODO and FIXME comments, piles of console.log and any, commented-out code, "not implemented" stubs |
placeholder-content | Lorem ipsum, example emails, "John Doe" and "your-api-key-here" left in shipped code |
hallucinated-api | .flatten(), .contains(), .substr() and other methods that don't exist or are deprecated |
stale-fallback | Hardcoded localhost URLs, including as the fallback for an env var |
comprehension-debt | Functions over 80 lines, nested more than 5 levels deep, or with more than 5 parameters |
codebase-consistency | Conflicting conventions across files: export naming, import style, HTTP client, async style, quotes |
dead-exports | Exported functions, constants and types that nothing imports |
use-client-overuse | "use client" on files that don't use any client-side APIs |
prodlint avoids common false positives:
middleware.ts, or proxy.ts on Next.js 16) detected, matcher included — auth findings it covers drop to info/* */ are ignored@/, ~/, and tsconfig paths aren't flagged as hallucinated importsfix hintEach category starts at 100. Deductions per finding:
| Severity | Deduction |