MCP, MCP server
Amh Cloudflare Ops Mcp By Wt
The WT walrus, the Walrus Tusk mascot.
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.
OBFUSCATION_MINIFIED_PAYLOAD
Why this grade
- OBFUSCATION_MINIFIED_PAYLOAD Medium
Contains a very long line with almost no spaces in a script or style file.
agent/src/oauth-complete.js, line 30
<style>:root{color-scheme:dark}body{margin:0;min-height:100vh;display:grid;place-items:center;background:#07140d;color:#eaf7ee;font:16px/1.5 system-ui,sans-serif}.card{max-width:54
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
Pass
No shell or command execution found, and no extra permission was declared.
Install and update
Pass
No install-time script found, and dependencies are pinned or absent.
Network
Concern
can reach a host that is not written as a fixed address. can reach challenges.cloudflare.com. The description does not name that host. can reach api.cloudflare.com. The description does not name that host. can reach api.github.com. The description does not name that host. can reach ledger. The description does not name that host. can reach amh-wt.internal. The description does not name that host. can reach rl.local. The description does not name that host. can reach internal. The description doe
NETWORK_NO_FIXED_HOST NETWORK_UNNAMED_HOST NETWORK_NAMED_HOST
agent/scripts/dash.mjs, line 50
const res = await fetch(new URL(apiPath, OP.url), {
agent/scripts/dash.mjs, line 140
let d;try{const r=await fetch('/d/dashboard');d=await r.json()}catch(e){$('sub').textContent='cannot reach harness: '+e.message;return}
agent/scripts/watch.mjs, line 44
const response = await fetch(new URL(apiPath, operator.url), {
Show more
agent/src/coordinator.js, line 469
const response = await fetch(target, { method: "POST", headers: { "co
agent/src/crawler.js, line 15
const response = await fetch(url, {
agent/src/index.js, line 82
const response = await fetch("https://challenges.cloudflare.com/turnstile/v0/siteverify", {
agent/src/index.js, line 152
const response = await fetch(new URL("send", base.href.replace(/\/?$/, "/")), {
agent/src/index.js, line 378
async fetch(request, env) {
Secrets
Concern
reads a credential or environment file.
SECRETS_ENV_READ SECRETS_PATH_DOTENV
agent/scripts/dash.mjs, line 18
const cfg = { url: process.env.HARNESS_URL || "", key: process.env.HARNESS_INTERNAL_KEY || "", actor: process.env.HARNESS_ACTOR || "private-admin" };
agent/scripts/watch.mjs, line 26
key: process.env.HARNESS_INTERNAL_KEY || "",
bin/cfops.js, line 130
if (!process.env.CLOUDFLARE_API_TOKEN) {
Show more
scripts/cloudflare-oauth-create.mjs, line 7
const token = process.env.CLOUDFLARE_API_TOKEN;
src/client.js, line 5
// - The API token is read ONLY from process.env.CLOUDFLARE_API_TOKEN (or an
src/client.js, line 62
* @param {string} [opts.token] defaults to process.env.CLOUDFLARE_API_TOKEN
src/client.js, line 71
token !== undefined ? token : process.env.CLOUDFLARE_API_TOKEN;
src/wt-users.js, line 201
const env2 = { ...env, GITHUB_TOKEN: creds.gh_token, GH_OWNERS_OVERRIDE: creds.gh_owners || [creds.gh_login] };
src/wt-users.js, line 206
const env2 = { ...env, GITHUB_TOKEN: creds.gh_token, GH_OWNERS_OVERRIDE: creds.gh_owners || [creds.gh_login] };
worker/mcp-oauth/mcp-oauth.mjs, line 143
return await provider.fetch(request, { ...env, OAUTH_KV: prefixedKV(env.CLOUDFLARE_OPS_OAUTH) }, ctx);
.gitignore, line 1
.env
.gitignore, line 3
!agent/local-stashes/README.md
OAUTH.md, line 102
- populated `.dev.vars`, `.env`, or credentials copied into config
README.md, line 355
or copy `.env.example` to `.env` and fill it in:
README.md, line 358
cp .env.example .env
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Concern
contains a minified payload.
OBFUSCATION_MINIFIED_PAYLOAD
agent/src/oauth-complete.js, line 30
<style>:root{color-scheme:dark}body{margin:0;min-height:100vh;display:grid;place-items:center;background:#07140d;color:#eaf7ee;font:16px/1.5 system-ui,sans-serif}.card{max-width:54
agent/src/ui.js, line 69
function renderJobs(){const box=$("jobs");clear(box);const byNewest=(a,b)=>jobTime(b)-jobTime(a);const active=data.jobs.filter(job=>["queued","running"].includes(job.status)).sort(
agent/src/ui.js, line 87
$("createJob").onclick=async()=>{const payload={agent_name:$("agentName").value,template_id:$("template").value,objective:$("objective").value,allowed_domains:$("domains").value.sp
Show more
agent/src/ui.js, line 91
if(PUBLIC.turnstileSitekey){let tsTries=0;function renderTurnstile(){if(window.turnstile&&typeof window.turnstile.render==="function"){window.turnstile.render("#turnstile",{sitekey
worker/index.js, line 799
.hero{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(280px,.9fr);gap:26px;align-items:stretch}.copy{padding:8px 0 0}.eyebrow{font-size:12px;font-weight:900;text-transfor
worker/index.js, line 800
.panel{background:rgba(255,250,240,.78);border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:0 24px 70px rgba(16,33,24,.12);backdrop-filter:blur(12px)}.status{di
worker/live/index.js, line 1
// legacy.mjs
worker/mcp-oauth/base-live.mjs, line 1
var __defProp = Object.defineProperty;
worker/mcp-oauth/mcp-oauth.mjs, line 26
<style>*{box-sizing:border-box}body{margin:0;background:#07110e;color:#ecfff5;font:17px/1.5 system-ui;min-height:100svh;display:grid;place-items:center;padding:24px}main{width:min(
worker/public/WT-Connected.html, line 1
<!DOCTYPE html>
worker/public/WT-MCP-Root.html, line 1
<!DOCTYPE html>
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 2eb89b2c2cf8. can reach a host that is not written as a fixed address. can reach challenges.cloudflare.com. The description does not name that host. can reach api.cloudflare.com. The description does not name that host. can reach api.github.com. The description does not name that host. can reach ledger. The description does not name that host. can reach amh-wt.internal. The description does not name that host. can reach rl.local. The description does not name that host. can reach internal. The description doe reads a credential or environment file. contains a minified payload.
Date and source
Date checked:
github.com
Commit graded: 2eb89b2c2cf8b21ca54e13fd8664f2782c839c6f
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.