# mesh_set_surface_material

Assign a Material (res:// path) to a MeshInstance3D (undoable). Default surface -1 sets

Agent View of the PolicyLayer registry record for `mesh_set_surface_material`. HTML page: https://policylayer.com/tools/godot-breakpoint-mcp/mesh-set-surface-material

## Facts

- Tool: `mesh_set_surface_material`
- Server: Godot Breakpoint (`jlivingston-Cipher/godot-breakpoint-mcp`) — https://policylayer.com/tools/godot-breakpoint-mcp.md
- Homepage: https://github.com/jlivingston-Cipher/godot-breakpoint-mcp
- 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": "mesh_set_surface_material",
    "arguments": {}
  }
}
```

## Why mesh_set_surface_material is rated Medium

This tool modifies existing game object properties (material assignment) without deleting or permanently destroying data. The explicit note that it is "undoable" confirms the action is reversible, placing it in the Write category rather than Destructive.

From the tool's own definition: "Tool description states 'Assign a Material (res:// path) to a MeshInstance3D (undoable)'. The verb 'Assign' combined with '(undoable)' indicates a reversible modification of material properties on a 3D mesh object."

## Use case

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

## Recommended policy (PolicyLayer)

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

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

## Other tools on Godot Breakpoint (238)

- `anim_delete` — Destructive — https://policylayer.com/tools/godot-breakpoint-mcp/anim-delete.md
- `anim_remove_key` — Destructive — https://policylayer.com/tools/godot-breakpoint-mcp/anim-remove-key.md
- `cs_rename` — Destructive — https://policylayer.com/tools/godot-breakpoint-mcp/cs-rename.md
- `filesystem_move` — Destructive — https://policylayer.com/tools/godot-breakpoint-mcp/filesystem-move.md
- `inputmap_erase_action` — Destructive — https://policylayer.com/tools/godot-breakpoint-mcp/inputmap-erase-action.md
- `node_delete` — Destructive — https://policylayer.com/tools/godot-breakpoint-mcp/node-delete.md
- `project_remove_autoload` — Destructive — https://policylayer.com/tools/godot-breakpoint-mcp/project-remove-autoload.md
- `scene_close` — Destructive — https://policylayer.com/tools/godot-breakpoint-mcp/scene-close.md
- `scene_reload` — Destructive — https://policylayer.com/tools/godot-breakpoint-mcp/scene-reload.md
- `shader_set_code` — Destructive — https://policylayer.com/tools/godot-breakpoint-mcp/shader-set-code.md
- `tilemap_clear` — Destructive — https://policylayer.com/tools/godot-breakpoint-mcp/tilemap-clear.md
- `cs_dbg_attach` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/cs-dbg-attach.md
- `cs_dbg_continue` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/cs-dbg-continue.md
- `cs_dbg_evaluate` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/cs-dbg-evaluate.md
- `cs_dbg_launch` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/cs-dbg-launch.md
- `cs_dbg_restart` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/cs-dbg-restart.md
- `cs_dbg_set_exception_breakpoints` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/cs-dbg-set-exception-breakpoints.md
- `cs_dbg_step` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/cs-dbg-step.md
- `dbg_attach` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/dbg-attach.md
- `dbg_continue` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/dbg-continue.md
- `dbg_evaluate` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/dbg-evaluate.md
- `dbg_goto` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/dbg-goto.md
- `dbg_launch` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/dbg-launch.md
- `dbg_restart` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/dbg-restart.md
- `dbg_set_exception_breakpoints` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/dbg-set-exception-breakpoints.md
- `dbg_set_variable` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/dbg-set-variable.md
- `dbg_step` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/dbg-step.md
- `filesystem_scan` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/filesystem-scan.md
- `godot_launch_editor` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/godot-launch-editor.md
- `godot_run_managed` — Execute — https://policylayer.com/tools/godot-breakpoint-mcp/godot-run-managed.md
- …and 208 more: https://policylayer.com/tools/godot-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=godot-breakpoint-mcp · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/godot-breakpoint-mcp
