MCP, MCP server
Whatskept Cli
whatskept turns the WhatsApp history into one searchable database — with images, voice notes and PDFs converted to text by AI — and serves it to AI agents over MCP.
Compatibility: Not stated.
Grade C
One Medium finding. Read the report before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
PERMISSION_SHELL_UNDECLARED
Why this grade
- PERMISSION_SHELL_UNDECLARED Medium
Runs shell commands that the manifest or description does not mention.
cmd/whatskept/cli_test.go, line 28
if out, err := exec.Command("go", "build", "-o", binPath, ".").CombinedOutput(); err != nil {
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Concern
requests shell access. No manifest field names shell or command execution.
PERMISSION_SHELL_UNDECLARED
cmd/whatskept/cli_test.go, line 28
if out, err := exec.Command("go", "build", "-o", binPath, ".").CombinedOutput(); err != nil {
cmd/whatskept/cli_test.go, line 35
if out, err := exec.Command("codesign", "-f", "-s", "-", binPath).CombinedOutput(); err != nil {
cmd/whatskept/cli_test.go, line 47
cmd := exec.Command(binPath, args...)
Show more
cmd/whatskept/cli_test.go, line 338
cmd := exec.Command(binPath, "mcp", "--database", "ChatStorage.sqlite", "--addr", "127.0.0.1:0")
e2e-test/e2e_test.go, line 92
cmd := exec.Command("go", append([]string{"run", "./cmd/whatsapp-tester"}, args...)...)
Install and update
Pass
No install-time script found, and dependencies are pinned or absent.
Network
Concern
can reach openrouter.ai. The description does not name that host.
NETWORK_UNNAMED_HOST
internal/workspace/embed/AGENTS.md, line 224
curl -s https://openrouter.ai/api/v1/credits -H "Authorization: Bearer $OPENROUTER_API_KEY"
Secrets
Concern
reads a credential or environment file.
SECRETS_PATH_DOTENV
internal/workspace/embed/AGENTS.md, line 122
cut -d= -f1 .env
internal/workspace/embed/AGENTS.md, line 132
set -a; source .env; set +a; whatskept enrich
internal/workspace/embed/AGENTS.md, line 337
echo "WHATSKEPT_MCP_TOKEN=$(openssl rand -hex 16)" >> .env
Show more
internal/workspace/embed/AGENTS.md, line 345
set -a; source .env; set +a; whatskept mcp --database ./ChatStorage.sqlite
CLAUDE.md, line 16
`.env` or the environment, never from settings:
internal/workspace/embed/AGENTS.md, line 118
Check whether a `.env` file exists and which variables it defines -
internal/workspace/embed/AGENTS.md, line 127
the environment. For any of those already in `.env`, don't ask the
internal/workspace/embed/AGENTS.md, line 135
If no `.env` exists, offer to create one (with `chmod 600`) and give
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Pass
No encoded or minified payload found.
Licence
Note
no licence file found.
LICENCE_MISSING
No file path was stored.
no licence file found.
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit ed926b5b1450. requests shell access. No manifest field names shell or command execution. can reach openrouter.ai. The description does not name that host. reads a credential or environment file. no licence file found.
Date and source
Date checked:
github.com
Commit graded: ed926b5b1450580392ee6ebb6064eb6da450a63f
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.