MCP, MCP server
Dual Registry
Public repository manhatton31-svg/dualregistry.
Compatibility: Not stated.
Grade C
One Medium finding. Read the findings before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
Rescanned at commit c3504fca985c.
NETWORK_HOST_FROM_INPUT
Why this grade
- NETWORK_HOST_FROM_INPUT Medium
A file takes a URL or endpoint as input and has no fixed host list.
src/routes/api/products/agent.ts, line 886
const res = await fetch(
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.
If you think this grade is wrong, email [email protected] with the entry link and your evidence. We aim to acknowledge within two working days and decide within seven. If we confirm an error, we aim to correct it within 24 hours of confirming it. These are aims, not guarantees.
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
Note
requests shell access. The manifest names this permission.
PERMISSION_SHELL_DECLARED
scripts/harvest-commit.sh, line 97
subprocess.check_call(["git", "fetch", "origin", "main"])
scripts/harvest-commit.sh, line 98
subprocess.check_call(["git", "checkout", "-B", "main", "origin/main"])
scripts/harvest-commit.sh, line 136
subprocess.check_call(
Show more
scripts/harvest-commit.sh, line 145
st = subprocess.run(["git", "diff", "--staged", "--quiet"])
scripts/harvest-commit.sh, line 150
subprocess.check_call(["git", "commit", "-m", msg])
scripts/harvest-commit.sh, line 151
subprocess.check_call(["git", "push", "origin", "main"])
.github/workflows/deploy-production.yml, line 56
sha = subprocess.check_output(["git", "rev-parse", "HEAD"], text=True).strip()
.grok/skills/video2dsprite/scripts/video2dsprite.py, line 76
proc = subprocess.run(cmd, capture_output=True, text=True)
Install and update
Pass
No install-time script found, and dependencies are pinned or absent.
Network
Serious
accepts a host from input, with no fixed list in this file.
NETWORK_HOST_FROM_INPUT
src/routes/api/products/agent.ts, line 886
const res = await fetch(
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
scripts/ship-production.mjs, line 104
if (process.env.VERCEL_TOKEN) {
src/lib/secrets.ts, line 4
* Aliases process.env so legacy process.env.XAI_API_KEY readers work.
src/lib/secrets.ts, line 207
* process.env.XAI_API_KEY / GITHUB_TOKEN reader sees the same value.
Show more
src/lib/agents1/agent-runs.ts, line 136
process.env.DURABLE_GITHUB_TOKEN ||
src/lib/agents1/agent-runs.ts, line 137
process.env.GITHUB_TOKEN ||
src/lib/agents1/agent-runs.ts, line 138
process.env.GH_TOKEN;
src/lib/agents1/cloudflare-ops.ts, line 220
process.env.CLOUDFLARE_API_TOKEN ||
src/lib/agents1/cloudflare-ops.ts, line 221
process.env.CF_API_TOKEN ||
startup.sh, line 19
# Load dualregistry/.env.local if present (gitignored)
startup.sh, line 20
if [ -f /workspace/dualregistry/.env.local ]; then
startup.sh, line 23
. /workspace/dualregistry/.env.local
src/lib/secrets.ts, line 13
join(process.cwd(), ".env.local"),
src/lib/secrets.ts, line 14
join(process.cwd(), ".env"),
src/lib/secrets.ts, line 15
"/workspace/dualregistry/.env.local",
src/lib/secrets.ts, line 16
"/workspace/dualregistry/.env",
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Concern
contains an encoded blob in a file that should be readable.
OBFUSCATION_ENCODED_BLOB
package-lock.json, line 1
{
data/prod/clean-registry.json, line 1
{
data/prod/conversion-drive.json, line 1
{
Show more
data/prod/delisted.json, line 1
{
data/prod/demo-nudge.json, line 1
{
data/prod/growth-state.json, line 1
{
data/prod/probes.json, line 1
{
data/prod/products-orders.json, line 1
{
data/prod/first-principles.json, line 36
"jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImR1YWxyZWdpc3RyeS1lczI1Ni1tczh5cGY3NiIsInR5cCI6IkpXVCIsImlzcyI6Imh0dHBzOi8vZHVhbHJlZ2lzdHJ5LmRldiJ9.eyJjbGFpbXMiOnsia2luZCI6InByb2JlX2ZhaWwiLCJ
data/prod/first-principles.json, line 52
"jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImR1YWxyZWdpc3RyeS1lczI1Ni1tczh5cGY3NiIsInR5cCI6IkpXVCIsImlzcyI6Imh0dHBzOi8vZHVhbHJlZ2lzdHJ5LmRldiJ9.eyJjbGFpbXMiOnsia2luZCI6InByb2JlX2ZhaWwiLCJ
data/prod/first-principles.json, line 68
"jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImR1YWxyZWdpc3RyeS1lczI1Ni1tczh5cGY3NiIsInR5cCI6IkpXVCIsImlzcyI6Imh0dHBzOi8vZHVhbHJlZ2lzdHJ5LmRldiJ9.eyJjbGFpbXMiOnsia2luZCI6InByb2JlX2ZhaWwiLCJ
data/prod/first-principles.json, line 84
"jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImR1YWxyZWdpc3RyeS1lczI1Ni1tczh5cGY3NiIsInR5cCI6IkpXVCIsImlzcyI6Imh0dHBzOi8vZHVhbHJlZ2lzdHJ5LmRldiJ9.eyJjbGFpbXMiOnsia2luZCI6InByb2JlX2ZhaWwiLCJ
data/prod/first-principles.json, line 100
"jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImR1YWxyZWdpc3RyeS1lczI1Ni1tczh5cGY3NiIsInR5cCI6IkpXVCIsImlzcyI6Imh0dHBzOi8vZHVhbHJlZ2lzdHJ5LmRldiJ9.eyJjbGFpbXMiOnsia2luZCI6InByb2JlX2ZhaWwiLCJ
data/prod/first-principles.json, line 116
"jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImR1YWxyZWdpc3RyeS1lczI1Ni1tczh5cGY3NiIsInR5cCI6IkpXVCIsImlzcyI6Imh0dHBzOi8vZHVhbHJlZ2lzdHJ5LmRldiJ9.eyJjbGFpbXMiOnsia2luZCI6InByb2JlX2ZhaWwiLCJ
data/prod/first-principles.json, line 132
"jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImR1YWxyZWdpc3RyeS1lczI1Ni1tczh5cGY3NiIsInR5cCI6IkpXVCIsImlzcyI6Imh0dHBzOi8vZHVhbHJlZ2lzdHJ5LmRldiJ9.eyJjbGFpbXMiOnsia2luZCI6InByb2JlX2ZhaWwiLCJ
data/prod/first-principles.json, line 148
"jws": "eyJhbGciOiJFUzI1NiIsImtpZCI6ImR1YWxyZWdpc3RyeS1lczI1Ni1tczh5cGY3NiIsInR5cCI6IkpXVCIsImlzcyI6Imh0dHBzOi8vZHVhbHJlZ2lzdHJ5LmRldiJ9.eyJjbGFpbXMiOnsia2luZCI6InByb2JlX2ZhaWwiLCJ
Licence
Note
no licence file found.
LICENCE_MISSING
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit c3504fca985c. requests shell access. The manifest names this permission. accepts a host from input, with no fixed list in this file. reads a credential or environment file. contains an encoded blob in a file that should be readable. no licence file found.
Date and source
Date checked:
github.com
Commit graded: c3504fca985c45a1b41373e38f66e2d2460c0a4e
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.