# upload_rom

Upload a local, user-provided game dump into Emulation/roms/<system> via SFTP.

Agent View of the PolicyLayer registry record for `upload_rom`. HTML page: https://policylayer.com/tools/mcp-control-plane/upload-rom

## Facts

- Tool: `upload_rom`
- Server: Mcp Control Plane (`albertik322-sudo/mcp-control-plane`) — https://policylayer.com/tools/mcp-control-plane.md
- Homepage: https://github.com/albertik322-sudo/mcp-control-plane
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server rate-limited: no
- Parameters: 0
- Recommended policy verdict: Rate-limited

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "upload_rom",
    "arguments": {}
  }
}
```

## Why upload_rom is rated Medium

The tool uploads files to a remote system, which is a Write operation (creates new data). Severity is medium because: (1) it's reversible (uploaded files can be deleted), (2) blast radius is limited to the emulation ROM directory, and (3) the primary risk is storage consumption or accidental ROM uploads rather than system compromise. It does not execute code, delete irreversibly, or move money.

From the tool's own definition: "Tool description states 'Upload a local, user-provided game dump into Emulation/roms/<system> via SFTP' — this creates/adds files to a remote filesystem."

## Use case

AI agents use upload_rom to create or update resources in Mcp Control Plane, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Mcp Control Plane environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Mcp Control Plane:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "upload_rom": {
      "limits": [
        {
          "counter": "upload_rom_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on Mcp Control Plane (285)

- `request_durable_task_cancel` — Destructive — https://policylayer.com/tools/mcp-control-plane/request-durable-task-cancel.md
- `steam_rom_manager_cli` — Destructive — https://policylayer.com/tools/mcp-control-plane/steam-rom-manager-cli.md
- `steam_rom_manager_nuke` — Destructive — https://policylayer.com/tools/mcp-control-plane/steam-rom-manager-nuke.md
- `steam_rom_manager_remove` — Destructive — https://policylayer.com/tools/mcp-control-plane/steam-rom-manager-remove.md
- `activate_window` — Execute — https://policylayer.com/tools/mcp-control-plane/activate-window.md
- `admin_run` — Execute — https://policylayer.com/tools/mcp-control-plane/admin-run.md
- `api_sentence` — Execute — https://policylayer.com/tools/mcp-control-plane/api-sentence.md
- `apply_unified_patch_remote` — Execute — https://policylayer.com/tools/mcp-control-plane/apply-unified-patch-remote.md
- `apt_maintenance` — Execute — https://policylayer.com/tools/mcp-control-plane/apt-maintenance.md
- `call_service` — Execute — https://policylayer.com/tools/mcp-control-plane/call-service.md
- `click` — Execute — https://policylayer.com/tools/mcp-control-plane/click.md
- `click_at` — Execute — https://policylayer.com/tools/mcp-control-plane/click-at.md
- `click_in_window` — Execute — https://policylayer.com/tools/mcp-control-plane/click-in-window.md
- `comfy_generate_from_asset` — Execute — https://policylayer.com/tools/mcp-control-plane/comfy-generate-from-asset.md
- `comfy_interrupt` — Execute — https://policylayer.com/tools/mcp-control-plane/comfy-interrupt.md
- `comfy_restart` — Execute — https://policylayer.com/tools/mcp-control-plane/comfy-restart.md
- `deck_exec` — Execute — https://policylayer.com/tools/mcp-control-plane/deck-exec.md
- `deck_probe` — Execute — https://policylayer.com/tools/mcp-control-plane/deck-probe.md
- `dns_test` — Execute — https://policylayer.com/tools/mcp-control-plane/dns-test.md
- `docker_compose` — Execute — https://policylayer.com/tools/mcp-control-plane/docker-compose.md
- `docker_container_action` — Execute — https://policylayer.com/tools/mcp-control-plane/docker-container-action.md
- `docker_exec` — Execute — https://policylayer.com/tools/mcp-control-plane/docker-exec.md
- `double_click` — Execute — https://policylayer.com/tools/mcp-control-plane/double-click.md
- `drag_to` — Execute — https://policylayer.com/tools/mcp-control-plane/drag-to.md
- `focus_window_win32` — Execute — https://policylayer.com/tools/mcp-control-plane/focus-window-win32.md
- `hold_key` — Execute — https://policylayer.com/tools/mcp-control-plane/hold-key.md
- `hotkey` — Execute — https://policylayer.com/tools/mcp-control-plane/hotkey.md
- `install_flatpak_emulators` — Execute — https://policylayer.com/tools/mcp-control-plane/install-flatpak-emulators.md
- `key_down` — Execute — https://policylayer.com/tools/mcp-control-plane/key-down.md
- `key_up` — Execute — https://policylayer.com/tools/mcp-control-plane/key-up.md
- …and 255 more: https://policylayer.com/tools/mcp-control-plane.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=mcp-control-plane · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/mcp-control-plane
