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

StoreShots

mcp:qaimos/storeshots-mcp

Turn raw app screenshots into App Store and Google Play marketing screenshots.

Verdict
No issues found

No suspicious or malicious behavior was found.

Analyzed Oct 26, 2026, 12:17 UTC at 2d20fff

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
10
files scanned
178/178
checks satisfied
0
package advisories

Why this verdict

  • benign: 178 checks satisfied, no findings for mcp-server:.

Security findings 0

No security findings

No suspicious or malicious behavior was found; 3 candidate findings were refuted on review.
Refuted findings 3

Candidates the review stage examined and rejected, kept for transparency.

Data exfiltration

criticalRefutedlow confidence

generate_screenshots reads any local file path supplied by the agent (no image-type restriction, falls back to application/octet-stream) and uploads it to the remote StoreShots API, so a prompt-injected path could send arbitrary local files (up to 10 MB) off-host.

buf: await fs.readFile(p), type: MIME[path.extname(p).toLowerCase()] || 'application/octet-stream'
Why it was refuted

Reading a local file path and uploading it to the StoreShots API is the declared core function of generate_screenshots. The tool description openly says it takes local file paths, and the upload goes only to the wrapped service. The missing image-type check is a hardening gap, not undeclared or concealed behaviour.

Data exfiltration

criticalRefutedlow confidence

generate_screenshots reads any local file path supplied by the agent (not restricted to image types) and uploads it to the remote StoreShots API, so a prompt-injected agent could send arbitrary local files off-host; the file read is part of the declared function but its reach is unrestricted.

return { buf: await fs.readFile(p)
Why it was refuted

This is the same file read as the first finding. It is the declared core capability of uploading user-supplied local screenshots to the StoreShots API, and the finding itself concedes the read is part of the declared function.

Destructive action

criticalRefutedlow confidence

download() writes API-supplied bytes into an agent-chosen directory (output_dir/download_to), overwriting existing files with matching names. File names are sanitised by safeRel, so the risk is limited to overwriting files in an arbitrary directory.

await fs.writeFile(dest, buf);
Why it was refuted

Writing downloaded outputs to a caller-chosen directory is the declared core function of get_output and download_to. The overwrite behaviour is stated in the tool descriptions, and safeRel sanitises file names against traversal. The detector's contradiction with the list_devices read-only claim is a line-attribution mismatch.