Make your website agent-ready: a coding-agent plugin for Claude Code and Codex that adds WebMCP tools to your web app
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
transport — counts 0 tools · 0 res
· 0 prompts
permission surface via code analysis
No tools enumerated yet for this server.
prompt-surface
shipped agent-instruction files + hidden-content / dangerous-code findings —
quoted from the analyzed source
analyzed commit 6f293d9 · analyzer v33 · 4d ago
skills & prompt files 5
- agent-rules nekuda-ai-webmcp-kit-6f293d9/AGENTS.md
- agent-rules nekuda-ai-webmcp-kit-6f293d9/plugin/AGENTS.md
- skill nekuda-ai-webmcp-kit-6f293d9/plugin/skills/connect-existing-tools/SKILL.md
- skill nekuda-ai-webmcp-kit-6f293d9/plugin/skills/implement/SKILL.md
- skill nekuda-ai-webmcp-kit-6f293d9/plugin/skills/verify/SKILL.md
danger signals3
- dynamic code execution new Function() nekuda-ai-webmcp-kit-6f293d9/plugin/tests/chat-markdown.test.ts :24
const render = new Function(` - dynamic code execution new Function() nekuda-ai-webmcp-kit-6f293d9/plugin/tests/explorer-scope.test.ts :35
const lifted = new Function(` - dynamic code execution new Function() nekuda-ai-webmcp-kit-6f293d9/plugin/tests/verify-card.test.ts :31
const fold = new Function(`
evidence-backed
findings quoted directly from the published source artifact — not inferred
code files: 33
filesystem 26
- fs nekuda-ai-webmcp-kit-6f293d9/plugin/cli/atomic-write.ts :2
import { chmod, mkdir, open, rename, rm } from "node:fs/promises"; - fs nekuda-ai-webmcp-kit-6f293d9/plugin/cli/browser.ts :4
import { existsSync, readdirSync } from "node:fs"; - fs nekuda-ai-webmcp-kit-6f293d9/plugin/cli/connect.ts :2
import { link, mkdir, open, readFile, realpath, rename, rm, stat } from "node:fs/promises"; - fs nekuda-ai-webmcp-kit-6f293d9/plugin/cli/credentials.ts :1
import { readFile, rm } from "node:fs/promises"; - fs nekuda-ai-webmcp-kit-6f293d9/plugin/cli/status.ts :1
import { readdir, readFile, realpath, stat } from "node:fs/promises"; - fs nekuda-ai-webmcp-kit-6f293d9/plugin/com.openai/hooks/webmcp-feedback.ts :25
} from "node:fs"; - fs nekuda-ai-webmcp-kit-6f293d9/plugin/skills/implement/interactive/ack-event.ts :14
} from "node:fs"; - fs nekuda-ai-webmcp-kit-6f293d9/plugin/skills/implement/interactive/protocol.ts :10
} from "node:fs"; - fs nekuda-ai-webmcp-kit-6f293d9/plugin/skills/implement/interactive/server.ts :20
} from "node:fs"; - fs (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/agent-plugin-package.test.ts :8
} from "node:fs"; - fs (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/chat-markdown.test.ts :9
import { readFileSync } from "node:fs"; - fs (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/cli/atomic-write.test.ts :2
import { chmod, mkdtemp, open, readdir, readFile, rm, stat, writeFile } from "node:fs/promises";
show 14 more
- fs (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/cli/browser-devtools.test.ts :2
import { existsSync } from "node:fs"; - fs (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/cli/connect-status.test.ts :13
} from "node:fs/promises"; - fs (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/cli/login.test.ts :3
import { mkdir, mkdtemp, readFile, rm, stat } from "node:fs/promises"; - fs (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/codex-hook-transport.test.ts :14
} from "node:fs"; - fs (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/explorer-csp.test.ts :10
import { readFileSync } from "node:fs"; - fs (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/explorer-delivery.test.ts :7
import { readFileSync } from "node:fs"; - fs (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/explorer-scope.test.ts :12
import { readFileSync } from "node:fs"; - fs (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/interactive-loop/fixtures/codex-acceptance-site/scripts/smoke.mjs :2
import { cp, mkdir, mkdtemp, readFile, rm, writeFile } from "node:fs/promises"; - fs (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/interactive-loop/fixtures/codex-acceptance-site/server.mjs :2
import { mkdir, readFile, rename, writeFile } from "node:fs/promises"; - fs (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/interactive-loop/robot-user.ts :13
import { mkdirSync, readFileSync, realpathSync, writeFileSync } from "node:fs"; - fs (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/interactive-server.test.ts :15
} from "node:fs"; - fs (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/openai-package.test.ts :2
import { mkdtemp, rm } from "node:fs/promises"; - fs (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/star-repo.test.ts :8
import { mkdtempSync, readFileSync, writeFileSync, existsSync } from "node:fs"; - fs (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/verify-card.test.ts :10
import { readFileSync } from "node:fs";
shell / exec 12
- shell nekuda-ai-webmcp-kit-6f293d9/plugin/cli/browser.ts :33
const child = Bun.spawn([command, ...args], { - shell nekuda-ai-webmcp-kit-6f293d9/plugin/cli/connect.ts :154
const result = Bun.spawnSync(["git", ...args], { - shell nekuda-ai-webmcp-kit-6f293d9/plugin/cli/credentials.ts :89
const process = Bun.spawn(command, { - shell nekuda-ai-webmcp-kit-6f293d9/plugin/cli/login.ts :241
const child = Bun.spawn(command, { stdin: "ignore", stdout: "ignore", stderr: "ignore" }); - shell (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/agent-plugin-package.test.ts :80
const process = Bun.spawn(["/bin/sh", "-c", command], { - shell (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/cli/browser-devtools.test.ts :35
const result = Bun.spawnSync(args, { - shell (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/cli/connect-status.test.ts :631
const child = Bun.spawn(["true"], { stdout: "ignore", stderr: "ignore" }); - shell (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/codex-hook-transport.test.ts :259
const proc = Bun.spawn(["bun", hook, mode], { - shell (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/interactive-loop/fixtures/codex-acceptance-site/scripts/smoke.mjs :1
import { spawn } from "node:child_process"; - shell (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/interactive-server.test.ts :88
const proc = Bun.spawn({ - shell (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/openai-package.test.ts :14
const child = Bun.spawn(args, { cwd: repo, stdin: "ignore", stdout: "pipe", stderr: "pipe" }); - shell (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/star-repo.test.ts :36
const proc = Bun.spawnSync(["/bin/sh", SCRIPT, ...args], {
network 11
- net nekuda-ai-webmcp-kit-6f293d9/plugin/cli/login.ts :265
fetch(request) { - net nekuda-ai-webmcp-kit-6f293d9/plugin/com.openai/hooks/webmcp-feedback.ts :476
const response = await fetch(`http://127.0.0.1:${runtime.port}/healthz?${query}`, { - net nekuda-ai-webmcp-kit-6f293d9/plugin/skills/implement/interactive/server.ts :146
const response = await fetch(scopedUrl(run, "/healthz"), { - net (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/cli/connect-status.test.ts :94
async fetch(request) { - net (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/cli/login.test.ts :41
async fetch(request) { - net (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/codex-hook-transport.test.ts :62
fetch(request) { - net (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/interactive-loop/fixtures/codex-acceptance-site/public/app.js :24
const response = await fetch(path, options); - net (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/interactive-loop/fixtures/codex-acceptance-site/scripts/smoke.mjs :72
const response = await fetch(`${base}${path}`, options); - net (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/interactive-loop/fixtures/codex-acceptance-site/server.mjs :1
import { createServer } from "node:http"; - net (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/interactive-loop/robot-user.ts :14
import { connect as tcpConnect } from "node:net"; - net (weak) nekuda-ai-webmcp-kit-6f293d9/plugin/tests/interactive-server.test.ts :101
const response = await fetch(`http://127.0.0.1:${run.port}/healthz?${query(run)}`);