# interact_add_drop_zone

Mark a node as a drop target that validates an incoming payload and emits a signal on a valid drop. Attaches a generated validator/acceptor script that DECLARES the on_drop signal (so it survives a scene reload), and (for node2d) builds an Area2D + CollisionShape2D hit region; optionally connects on_drop to a handler with a persisted connection. accepts is the neutral predicate {key, values} — accept any payload when omitted, else accept when payload[key] is one of values. control mode overrides _can_drop_data / _drop_data; node2d exposes a try_drop(payload) seam. General-purpose — no domain vocabulary. Decomposes onto (node.add + resource.create + node.set_property for node2d) → resource.create → node.set_property (+ a persisted signal.connect). DESTRUCTIVE (writes a script) — gated by confirmation.

Agent View of the PolicyLayer registry record for `interact_add_drop_zone`. HTML page: https://policylayer.com/tools/breakpoint-mcp/interact-add-drop-zone

## Facts

- Tool: `interact_add_drop_zone`
- Server: Breakpoint (`breakpoint-mcp`) — https://policylayer.com/tools/breakpoint-mcp.md
- Install: `npx -y breakpoint-mcp`
- Homepage: https://www.npmjs.com/package/breakpoint-mcp
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server rate-limited: no
- Parameters: 9 (3 required)
- Recommended policy verdict: Rate-limited

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `mode` | string | yes | control→_can_drop_data / _drop_data overrides; node2d→Area2D hit region + try_drop() seam |
| `node` | string | yes | Node path (in the open scene) to mark as a drop zone; "." for the root |
| `size` | object | no | node2d mode: DropArea hit size in px (default 96×96) |
| `shape` | string | no | node2d mode: DropArea collision shape (default rectangle) |
| `notify` | object | no | Optionally connect on_drop to a handler in the same call |
| `accepts` | object | no | Neutral accept predicate (accept-any when omitted) |
| `confirm` | boolean | no | Auto-approve this destructive action (skip the confirmation prompt) |
| `on_drop` | string | no | User signal emitted with the payload on a valid drop (default "dropped") |
| `script_path` | string | yes | Where to save the generated drop-zone script, e.g. res://ui/interact/DropZone.gd |

Parameters from the server's own tool schema.

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

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "interact_add_drop_zone",
    "arguments": {
      "mode": "<mode>",
      "node": "<node>",
      "script_path": "<script_path>"
    }
  }
}
```

## Why interact_add_drop_zone is rated Medium

This tool creates or modifies scene nodes, scripts, and signal connections in what appears to be a Godot game engine context. These are reversible Write operations (nodes and connections can be removed, scripts can be detached). It does not execute arbitrary code (Execute), delete data (Destructive), or move money (Financial).

From the tool's own definition: "Tool description states it 'Attaches a generated validator/acceptor script', 'builds an Area2D + CollisionShape2D', and 'optionally connects on_drop to a handler with a persisted connection' — all are reversible modifications to scene state and script…"

Risk signals: High parameter count (15 properties)

## Use case

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

## Recommended policy (PolicyLayer)

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

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

## Other tools on Breakpoint (273)

- `anim_delete` — Destructive — https://policylayer.com/tools/breakpoint-mcp/anim-delete.md
- `anim_remove_key` — Destructive — https://policylayer.com/tools/breakpoint-mcp/anim-remove-key.md
- `filesystem_move` — Destructive — https://policylayer.com/tools/breakpoint-mcp/filesystem-move.md
- `gd_rename` — Destructive — https://policylayer.com/tools/breakpoint-mcp/gd-rename.md
- `inputmap_erase_action` — Destructive — https://policylayer.com/tools/breakpoint-mcp/inputmap-erase-action.md
- `mp_wire_rpc` — Destructive — https://policylayer.com/tools/breakpoint-mcp/mp-wire-rpc.md
- `node_delete` — Destructive — https://policylayer.com/tools/breakpoint-mcp/node-delete.md
- `project_remove_autoload` — Destructive — https://policylayer.com/tools/breakpoint-mcp/project-remove-autoload.md
- `resource_save` — Destructive — https://policylayer.com/tools/breakpoint-mcp/resource-save.md
- `resource_set_import_settings` — Destructive — https://policylayer.com/tools/breakpoint-mcp/resource-set-import-settings.md
- `runtime_node_remove` — Destructive — https://policylayer.com/tools/breakpoint-mcp/runtime-node-remove.md
- `runtime_peer_stop` — Destructive — https://policylayer.com/tools/breakpoint-mcp/runtime-peer-stop.md
- `scene_close` — Destructive — https://policylayer.com/tools/breakpoint-mcp/scene-close.md
- `scene_reload` — Destructive — https://policylayer.com/tools/breakpoint-mcp/scene-reload.md
- `shader_set_code` — Destructive — https://policylayer.com/tools/breakpoint-mcp/shader-set-code.md
- `tilemap_clear` — Destructive — https://policylayer.com/tools/breakpoint-mcp/tilemap-clear.md
- `vcs_restore` — Destructive — https://policylayer.com/tools/breakpoint-mcp/vcs-restore.md
- `vcs_stash` — Destructive — https://policylayer.com/tools/breakpoint-mcp/vcs-stash.md
- `cs_dbg_attach` — Execute — https://policylayer.com/tools/breakpoint-mcp/cs-dbg-attach.md
- `cs_dbg_continue` — Execute — https://policylayer.com/tools/breakpoint-mcp/cs-dbg-continue.md
- `cs_dbg_launch` — Execute — https://policylayer.com/tools/breakpoint-mcp/cs-dbg-launch.md
- `cs_dbg_restart` — Execute — https://policylayer.com/tools/breakpoint-mcp/cs-dbg-restart.md
- `cs_dbg_set_breakpoints` — Execute — https://policylayer.com/tools/breakpoint-mcp/cs-dbg-set-breakpoints.md
- `cs_dbg_set_exception_breakpoints` — Execute — https://policylayer.com/tools/breakpoint-mcp/cs-dbg-set-exception-breakpoints.md
- `cs_dbg_set_variable` — Execute — https://policylayer.com/tools/breakpoint-mcp/cs-dbg-set-variable.md
- `cs_dbg_step` — Execute — https://policylayer.com/tools/breakpoint-mcp/cs-dbg-step.md
- `dbg_attach` — Execute — https://policylayer.com/tools/breakpoint-mcp/dbg-attach.md
- `dbg_continue` — Execute — https://policylayer.com/tools/breakpoint-mcp/dbg-continue.md
- `dbg_data_breakpoints` — Execute — https://policylayer.com/tools/breakpoint-mcp/dbg-data-breakpoints.md
- `dbg_goto` — Execute — https://policylayer.com/tools/breakpoint-mcp/dbg-goto.md
- …and 243 more: https://policylayer.com/tools/breakpoint-mcp.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=breakpoint-mcp · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/breakpoint-mcp
