MCP, MCP server
ai.testiv/mcp
Local-first visual regression for AI agents: verdicts, diff images, explain_snapshot.
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 c53604c33107.
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.
packages/witness/src/capture/health.ts, line 68
* A failed request is grouped by what it was: a fetch() or XHR is 'other'
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
can delete files.
PERMISSION_DELETE_FILES
action/src/publish/build.ts, line 166
fs.rmSync(options.siteDir, { recursive: true, force: true });
action/src/publish/cache.ts, line 91
if (stat && !stat.isDirectory()) fs.rmSync(dir, { recursive: true, force: true });
action/src/publish/cache.ts, line 101
fs.rmSync(file, { recursive: true, force: true });
Show more
e2e/src/health-probe.test.ts, line 216
fs.rmSync(projectRoot, { recursive: true, force: true });
e2e/src/provenance.test.ts, line 115
fs.rmSync(root, { recursive: true, force: true });
e2e/src/published-site.test.ts, line 225
fs.rmSync(root, { recursive: true, force: true });
e2e/src/same-failure.test.ts, line 193
fs.rmSync(root, { recursive: true, force: true });
e2e/src/smoke.test.ts, line 210
fs.rmSync(projectRoot, { recursive: true, force: true });
python/src/testivai/runner.py, line 58
completed = subprocess.run(cmd, cwd=str(project_root or Path.cwd()))
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
packages/witness/src/capture/health.ts, line 68
* A failed request is grouped by what it was: a fetch() or XHR is 'other'
docs/extension-api.md, line 142
| `resources.failed.<type>` | `css`, `font`, `img`, `script`, `other`: a `fetch()` or XHR is `other` whatever its extension; a request a `<link>` started is `css` only when a `<lin
Secrets
Concern
reads a credential or environment file.
SECRETS_PATH_DOTENV
.gitignore, line 14
.env
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Note
a file was over the read cap and was not fully read. the file cap was reached before every file was read.
OBFUSCATION_FILE_OVER_READ_CAP OBFUSCATION_FILE_CAP_REACHED
pnpm-lock.yaml, line 1
lockfileVersion: '9.0'
packages/witness/src/templates/selenium-testng/TestivAIWitness.java, line 1
// TestivAI Visual Regression Helper
Licence
Pass
A licence file is present (LICENSE).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit c53604c33107. can delete files. accepts a host from input, with no fixed list in this file. reads a credential or environment file. a file was over the read cap and was not fully read. the file cap was reached before every file was read.
Date and source
Date checked:
github.com
Commit graded: c53604c33107425c7ae87356db6bef84975a75a5
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.