Why this verdict
- suspicious: unverified finding mcp-server:packages/mcp:packages/mcp/src/tools.ts:989:TOOLPOISON
Security findings 1
Tool poisoning
highUnverifiedlow confidenceThe publish_files tool description is computed at runtime from publishFilesDescription(context.surface) rather than a static string, so the exact metadata cannot be reviewed here; it appears to only choose between local and remote wording.
description: publishFilesDescription(context.surface),
vector:metadata
Open questions 3
What the analysis could not settle from the code alone.
[file request packages/mcp/src/index.ts] What does the server do with the access token (storage location, destinations) and with publish_dir file reads? Does any file content or credential reach a network host other than dropto.run?
Data exfiltration
[file request packages/mcp/scripts/build-mcpb.mjs] What does the build:mcpb script execute, download, or write?
Code execution
[file request packages/node/src/index.ts] Does publishDirectory restrict or filter sensitive files (dotfiles, .env, ~/.ssh) and only send to the declared Drop2Run API? Does saveToken/loadCredentials write only to the config dir?
Data exfiltration
Refuted findings 1
Candidates the review stage examined and rejected, kept for transparency.
Data exfiltration
highRefutedlow confidencepublish_dir reads an arbitrary caller-supplied absolute folder path from local disk and uploads its contents to the remote Drop2Run service, so a prompt-injected or mistaken agent could publish sensitive local directories publicly; this is the tool's declared core capability and no sensitive-path restriction is visible here.
const result = await publishDirectory(credentials, path, site, undefined, {Why it was refuted
publish_dir is the declared core capability of a publishing MCP server: its description openly says it publishes a folder from disk and returns a URL. It is not concealed, and no instruction to the agent directs it at sensitive paths. The finding itself concedes this is the core capability.