Announcing Beacon: Self-improving memory for coding agents
← All MCP servers
MCP server

io.github.scrapercity/scrapercity-cli

mcp:scrapercity/scrapercity-cli

B2B lead generation MCP server - 20+ scrapers, email finder, skip trace, and more.

Verdict
Inconclusive

The analysis could not cover enough of the artifact to decide.

Analyzed Oct 29, 2026, 16:06 UTC at c31a504

Dispute security verdict

If you believe this verdict is incorrect, submit a dispute and we'll review it.

0
findings
—
highest severity
0
threat classes
31
files scanned
180/180
checks satisfied
0
package advisories

Why this verdict

  • inconclusive: gap skill_frontmatter_invalid at SKILL.md
  • inconclusive: gap skill_manifest_missing at package.json
  • inconclusive: unresolved question on EXFIL

Security findings 0

No individual findings recorded

The inconclusive verdict rests on the open questions and coverage gaps below.

Notes 3

Capabilities, vulnerabilities and disclosed behavior worth knowing. Nothing here works against the person who installs it, so notes never change the verdict.

Credential access

mediumNoteConfirmed on reviewhigh confidence

The client reads the ScraperCity service key from the SCRAPERCITY_API_KEY environment variable and sends it only as a Bearer token to the wrapped service host, which is the expected use of the declared API client; the env read is undeclared residue but necessary for the service.

process.env.SCRAPERCITY_API_KEY
vector:code
Reviewer's reasoning

The key is read from an env var and sent only as a Bearer token to the ScraperCity service that issued it, which is the expected use of the declared client (test 5, credential for the wrapped service).

Credential access

mediumNoteConfirmed on reviewhigh confidence

The client reads the ScraperCity key from the CLI's own rc file in the home directory as a fallback credential for the same service; this is the wrapped service's login store and is used only for that service's requests.

fs.readFileSync(RC_PATH, 'utf-8')
vector:code
Reviewer's reasoning

The fallback reads the CLI's own rc file, the login store written by saveApiKey for the same service. The key is used only for that service's requests, so it is a note under test 5.

Credential access

mediumNoteConfirmed on reviewmedium confidence

The shared request helper sends the ScraperCity Bearer API key to whatever absolute URL a caller passes, and postEndpoint forwards its endpoint argument straight into that helper, so a caller can route the key to a non-ScraperCity host.

const url = urlPath.startsWith('http') ? urlPath : `${BASE}${urlPath}`
vector:code
Reviewer's reasoning

Sending the key to an absolute URL is a real routing weakness, but it needs a caller, such as an agent steered by a malicious page or prompt, to pass an attacker host. That makes it a vulnerability that needs outside input (test 3), so it stays a note rather than abuse.

Third-party flags 1

Behavior aimed at other sites, platforms or people, such as evading rate limits or offensive-security tooling. It does not affect the person who installs it, so it never changes the verdict.

Reconnaissance

infoNoteConfirmed on reviewmedium confidence

The criminal-records tool searches named individuals across registries; this is its declared core capability, but the subjects are third parties who did not consent to the lookup.

Search nationwide criminal records across Sex Offender Registry
vector:metadata
Reviewer's reasoning

The criminal-records search is the tool's declared core capability (test 5), and its subjects are third parties, not the installer. The harm to those named people is not against the user's own machine or accounts.

Open questions 1

What the analysis could not settle from the code alone.

Does any MCP tool or launcher call configure() with a baseUrl value taken from tool input or an environment setting? If so, the Bearer API key would be sent to a host other than app.scrapercity.com, which would settle the EXFIL and CRED level.
Data exfiltration

Coverage gaps 2

Parts of the artifact the static analysis could not fully examine.

skill_frontmatter_invalid missing name/description frontmatter
SKILL.md
skill_manifest_missing no readable SKILL.md for skill target
package.json