# Executor Mcp Roblox MCP server

Agent View of the PolicyLayer registry record for Executor Mcp Roblox: identity, probed posture, risk grade, and all 291 tools classified. HTML page: https://policylayer.com/tools/executor-mcp-roblox

## Facts

- Server id: `okenjioxx/executor-mcp-roblox`
- Homepage: https://github.com/okenjioxx/executor-mcp-roblox
- Registry record: grade F, identity unverified
- Lifecycle: active
- Rate-limited: no
- Tools: 291
- Tool categories present: Destructive, Execute, Read, Write
- Tags: executor mcp roblox, admin, automation
- Record last modified: 2026-10-13T07:16:53.434Z

## Tools (291)

| Tool | Category | Risk | Record |
| --- | --- | --- | --- |
| `clear-queue-on-teleport` | Destructive | Critical | https://policylayer.com/tools/executor-mcp-roblox/clear-queue-on-teleport.md |
| `clear-remote-spy-logs` | Destructive | Critical | https://policylayer.com/tools/executor-mcp-roblox/clear-remote-spy-logs.md |
| `clear-selection` | Destructive | Critical | https://policylayer.com/tools/executor-mcp-roblox/clear-selection.md |
| `clear-semantic-index` | Destructive | Critical | https://policylayer.com/tools/executor-mcp-roblox/clear-semantic-index.md |
| `delete-file` | Destructive | Critical | https://policylayer.com/tools/executor-mcp-roblox/delete-file.md |
| `delete-folder` | Destructive | Critical | https://policylayer.com/tools/executor-mcp-roblox/delete-folder.md |
| `destroy-instance` | Destructive | Critical | https://policylayer.com/tools/executor-mcp-roblox/destroy-instance.md |
| `draw-clear` | Destructive | Critical | https://policylayer.com/tools/executor-mcp-roblox/draw-clear.md |
| `draw-remove` | Destructive | Critical | https://policylayer.com/tools/executor-mcp-roblox/draw-remove.md |
| `playbook-delete` | Destructive | Critical | https://policylayer.com/tools/executor-mcp-roblox/playbook-delete.md |
| `release-closure-reference` | Destructive | Critical | https://policylayer.com/tools/executor-mcp-roblox/release-closure-reference.md |
| `remote-spy` | Destructive | Critical | https://policylayer.com/tools/executor-mcp-roblox/remote-spy.md |
| `teach-mode` | Destructive | Critical | https://policylayer.com/tools/executor-mcp-roblox/teach-mode.md |
| `vm-reset` | Destructive | Critical | https://policylayer.com/tools/executor-mcp-roblox/vm-reset.md |
| `agent-run` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/agent-run.md |
| `batch-execute` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/batch-execute.md |
| `build-call-graph` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/build-call-graph.md |
| `ensure-remote-spy` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/ensure-remote-spy.md |
| `execute` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/execute.md |
| `execute-and-wait` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/execute-and-wait.md |
| `execute-file` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/execute-file.md |
| `execute-lua-state` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/execute-lua-state.md |
| `filter-gc` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/filter-gc.md |
| `fire-proximity-prompt` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/fire-proximity-prompt.md |
| `invoke-closure` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/invoke-closure.md |
| `invoke-method` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/invoke-method.md |
| `new-c-closure` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/new-c-closure.md |
| `new-l-closure` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/new-l-closure.md |
| `new-lua-state-proxy` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/new-lua-state-proxy.md |
| `playbook-run` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/playbook-run.md |
| `run-deferred` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/run-deferred.md |
| `run-loop` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/run-loop.md |
| `run-luau` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/run-luau.md |
| `run-on-actor` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/run-on-actor.md |
| `run-with-timeout` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/run-with-timeout.md |
| `script` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/script.md |
| `script-fanout` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/script-fanout.md |
| `trace-remote-traffic` | Execute | High | https://policylayer.com/tools/executor-mcp-roblox/trace-remote-traffic.md |
| `actor-capabilities` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/actor-capabilities.md |
| `actor-event-monitor` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/actor-event-monitor.md |
| `agent-context` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/agent-context.md |
| `agent-memory` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/agent-memory.md |
| `append-file` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/append-file.md |
| `assert-state` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/assert-state.md |
| `block-function` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/block-function.md |
| `block-remote` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/block-remote.md |
| `bridge-status` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/bridge-status.md |
| `cache-invalidate` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/cache-invalidate.md |
| `cache-is-cached` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/cache-is-cached.md |
| `call-closure` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/call-closure.md |
| `can-signal-replicate` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/can-signal-replicate.md |
| `capture-log-output` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/capture-log-output.md |
| `check-caller` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/check-caller.md |
| `clone-function` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/clone-function.md |
| `clone-instance` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/clone-instance.md |
| `closure-capabilities` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/closure-capabilities.md |
| `comm-channel-monitor` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/comm-channel-monitor.md |
| `compare-gc-snapshots` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/compare-gc-snapshots.md |
| `compare-instances` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/compare-instances.md |
| `count-function-calls` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/count-function-calls.md |
| `count-signal-connections` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/count-signal-connections.md |
| `crypt-base64-decode` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/crypt-base64-decode.md |
| `crypt-base64-encode` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/crypt-base64-encode.md |
| `crypt-decrypt` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/crypt-decrypt.md |
| `crypt-encrypt` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/crypt-encrypt.md |
| `crypt-hash` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/crypt-hash.md |
| `diff-instance-snapshot` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/diff-instance-snapshot.md |
| `disassemble-function` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/disassemble-function.md |
| `discover-character` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/discover-character.md |
| `discover-player-values` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/discover-player-values.md |
| `dump-function-env` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/dump-function-env.md |
| `dump-table` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/dump-table.md |
| `eval-expression` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/eval-expression.md |
| `execution-footprint-audit` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/execution-footprint-audit.md |
| `explain-failure` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/explain-failure.md |
| `file-exists` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/file-exists.md |
| `find-bytecode-size-outliers` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-bytecode-size-outliers.md |
| `find-constants-xref` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-constants-xref.md |
| `find-detached-instances` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-detached-instances.md |
| `find-duplicate-functions` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-duplicate-functions.md |
| `find-event-connections` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-event-connections.md |
| `find-function-xrefs` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-function-xrefs.md |
| `find-functions-by-complexity` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-functions-by-complexity.md |
| `find-functions-by-constant` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-functions-by-constant.md |
| `find-global-xrefs` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-global-xrefs.md |
| `find-hidden-guis` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-hidden-guis.md |
| `find-hidden-instances` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-hidden-instances.md |
| `find-hidden-remotes` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-hidden-remotes.md |
| `find-hidden-scripts` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-hidden-scripts.md |
| `find-instance-xrefs` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-instance-xrefs.md |
| `find-instances-with-connections` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-instances-with-connections.md |
| `find-module-scripts` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-module-scripts.md |
| `find-path-references` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-path-references.md |
| `find-remote-xrefs` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-remote-xrefs.md |
| `find-running-scripts` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-running-scripts.md |
| `find-string-in-tables` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-string-in-tables.md |
| `find-string-xrefs` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-string-xrefs.md |
| `find-table-references` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-table-references.md |
| `find-tables-by-key` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-tables-by-key.md |
| `find-upvalue-sharing` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-upvalue-sharing.md |
| `find-upvalue-xref` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/find-upvalue-xref.md |
| `fire-comm-channel` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/fire-comm-channel.md |
| `fire-connection` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/fire-connection.md |
| `fire-lua-state-event` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/fire-lua-state-event.md |
| `fire-remote` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/fire-remote.md |
| `fire-signal` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/fire-signal.md |
| `get-active-client` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-active-client.md |
| `get-actor-details` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-actor-details.md |
| `get-anticheat-surfaces` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-anticheat-surfaces.md |
| `get-call-stack` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-call-stack.md |
| `get-closure-constants` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-closure-constants.md |
| `get-closure-protos` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-closure-protos.md |
| `get-closure-upvalues` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-closure-upvalues.md |
| `get-comm-channel` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-comm-channel.md |
| `get-connection-constants` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-connection-constants.md |
| `get-connection-info` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-connection-info.md |
| `get-connection-protos` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-connection-protos.md |
| `get-connection-upvalues` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-connection-upvalues.md |
| `get-connector-diagnostics` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-connector-diagnostics.md |
| `get-console-output` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-console-output.md |
| `get-custom-asset` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-custom-asset.md |
| `get-executor-info` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-executor-info.md |
| `get-fast-flag` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-fast-flag.md |
| `get-fps-cap` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-fps-cap.md |
| `get-function-env` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-function-env.md |
| `get-function-hash` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-function-hash.md |
| `get-function-protos` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-function-protos.md |
| `get-function-upvalues` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-function-upvalues.md |
| `get-game-info` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-game-info.md |
| `get-game-state` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-game-state.md |
| `get-gui-text` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-gui-text.md |
| `get-hidden-ui` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-hidden-ui.md |
| `get-hwid` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-hwid.md |
| `get-instance-counts` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-instance-counts.md |
| `get-instance-properties` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-instance-properties.md |
| `get-instance-tree` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-instance-tree.md |
| `get-local-player-info` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-local-player-info.md |
| `get-lua-state` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-lua-state.md |
| `get-lua-state-actors` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-lua-state-actors.md |
| `get-memory-stats` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-memory-stats.md |
| `get-metamethod` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-metamethod.md |
| `get-metatable` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-metatable.md |
| `get-module-source` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-module-source.md |
| `get-nil-instances` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-nil-instances.md |
| `get-place-details` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-place-details.md |
| `get-players` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-players.md |
| `get-remote-signature` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-remote-signature.md |
| `get-remote-spy-logs` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-remote-spy-logs.md |
| `get-render-stats` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-render-stats.md |
| `get-script-bytecode` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-script-bytecode.md |
| `get-script-closure` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-script-closure.md |
| `get-script-content` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-script-content.md |
| `get-script-env` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-script-env.md |
| `get-script-hash` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-script-hash.md |
| `get-semantic-index-stats` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-semantic-index-stats.md |
| `get-signal-arguments` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-signal-arguments.md |
| `get-signal-arguments-info` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-signal-arguments-info.md |
| `get-signal-whitelist` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-signal-whitelist.md |
| `get-stack` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-stack.md |
| `get-thread-stack` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/get-thread-stack.md |
| `hook-and-log-function` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/hook-and-log-function.md |
| `hook-function` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/hook-function.md |
| `hook-metamethod` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/hook-metamethod.md |
| `http-request` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/http-request.md |
| `ignore-remote` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/ignore-remote.md |
| `inspect-callbacks` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/inspect-callbacks.md |
| `inspect-closure` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/inspect-closure.md |
| `inspect-instance-metatable` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/inspect-instance-metatable.md |
| `is-c-closure` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/is-c-closure.md |
| `is-executor-closure` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/is-executor-closure.md |
| `is-function-hooked` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/is-function-hooked.md |
| `is-l-closure` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/is-l-closure.md |
| `is-new-c-closure` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/is-new-c-closure.md |
| `is-parallel-context` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/is-parallel-context.md |
| `is-readonly` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/is-readonly.md |
| `list-actors` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-actors.md |
| `list-attributes` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-attributes.md |
| `list-clients` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-clients.md |
| `list-closure-references` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-closure-references.md |
| `list-drawings` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-drawings.md |
| `list-files` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-files.md |
| `list-gc-functions` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-gc-functions.md |
| `list-gc-tables` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-gc-tables.md |
| `list-gc-threads` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-gc-threads.md |
| `list-global-env-keys` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-global-env-keys.md |
| `list-gui-elements` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-gui-elements.md |
| `list-hooks` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-hooks.md |
| `list-instance-signals` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-instance-signals.md |
| `list-lua-states` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-lua-states.md |
| `list-registry-objects` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-registry-objects.md |
| `list-remotes` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-remotes.md |
| `list-rendered-instances` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-rendered-instances.md |
| `list-roblox-windows` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-roblox-windows.md |
| `list-runtime-modules` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-runtime-modules.md |
| `list-script-actors` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-script-actors.md |
| `list-signal-connections` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-signal-connections.md |
| `list-strings` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-strings.md |
| `list-tools` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/list-tools.md |
| `load-file` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/load-file.md |
| `lookup-function` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/lookup-function.md |
| `lua-state-event-monitor` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/lua-state-event-monitor.md |
| `measure-memory` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/measure-memory.md |
| `message-box` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/message-box.md |
| `monitor-remote` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/monitor-remote.md |
| `observe-world` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/observe-world.md |
| `playbook-list` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/playbook-list.md |
| `profile-code` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/profile-code.md |
| `queue-on-teleport` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/queue-on-teleport.md |
| `read-file` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/read-file.md |
| `read-path-value` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/read-path-value.md |
| `replicate-signal` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/replicate-signal.md |
| `scan-closures-by-name` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/scan-closures-by-name.md |
| `scan-closures-by-source` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/scan-closures-by-source.md |
| `scan-connections-by-source` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/scan-connections-by-source.md |
| `scan-hook-surfaces` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/scan-hook-surfaces.md |
| `scan-network-endpoints` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/scan-network-endpoints.md |
| `scan-number-range` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/scan-number-range.md |
| `scan-proto-functions` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/scan-proto-functions.md |
| `scan-remote-listeners` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/scan-remote-listeners.md |
| `screenshot-window` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/screenshot-window.md |
| `script-grep` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/script-grep.md |
| `search-bytecode` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/search-bytecode.md |
| `search-gc-value` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/search-gc-value.md |
| `search-instances` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/search-instances.md |
| `semantic-search-scripts` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/semantic-search-scripts.md |
| `session-list` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/session-list.md |
| `session-replay` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/session-replay.md |
| `session-show` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/session-show.md |
| `smart-task` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/smart-task.md |
| `spoof-function-return` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/spoof-function-return.md |
| `state-transaction` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/state-transaction.md |
| `suggest-tools` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/suggest-tools.md |
| `summarize-hidden-surfaces` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/summarize-hidden-surfaces.md |
| `summarize-runtime-surfaces` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/summarize-runtime-surfaces.md |
| `test-capabilities` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/test-capabilities.md |
| `tool-quality-audit` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/tool-quality-audit.md |
| `tool-schema` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/tool-schema.md |
| `trace-call-durations` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/trace-call-durations.md |
| `trace-connection-function` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/trace-connection-function.md |
| `trace-require-callers` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/trace-require-callers.md |
| `verify-path-exists` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/verify-path-exists.md |
| `watch-instance-property` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/watch-instance-property.md |
| `watch-property-changes` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/watch-property-changes.md |
| `watch-value` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/watch-value.md |
| `world-delta` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/world-delta.md |
| `ws-list` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/ws-list.md |
| `ws-receive` | Read | Low | https://policylayer.com/tools/executor-mcp-roblox/ws-receive.md |
| `block-packets` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/block-packets.md |
| `cache-replace` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/cache-replace.md |
| `camera-control` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/camera-control.md |
| `click-button` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/click-button.md |
| `configure-remote-spy` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/configure-remote-spy.md |
| `create-comm-channel` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/create-comm-channel.md |
| `create-instance` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/create-instance.md |
| `crypt-generate-bytes` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/crypt-generate-bytes.md |
| `crypt-generate-key` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/crypt-generate-key.md |
| `draw-create` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/draw-create.md |
| `draw-update` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/draw-update.md |
| `fire-click-detector` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/fire-click-detector.md |
| `make-folder` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/make-folder.md |
| `packet-spy` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/packet-spy.md |
| `playbook-save` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/playbook-save.md |
| `press-key` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/press-key.md |
| `resolve-entity` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/resolve-entity.md |
| `restore-function` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/restore-function.md |
| `restore-hook` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/restore-hook.md |
| `save-instance` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/save-instance.md |
| `select-client` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/select-client.md |
| `send-packet` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/send-packet.md |
| `set-attribute` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/set-attribute.md |
| `set-clipboard` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/set-clipboard.md |
| `set-closure-constant` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/set-closure-constant.md |
| `set-closure-upvalue` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/set-closure-upvalue.md |
| `set-connection-state` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/set-connection-state.md |
| `set-fast-flag` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/set-fast-flag.md |
| `set-fps-cap` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/set-fps-cap.md |
| `set-function-env` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/set-function-env.md |
| `set-gui-text` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/set-gui-text.md |
| `set-instance-property` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/set-instance-property.md |
| `set-metatable-readonly` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/set-metatable-readonly.md |
| `set-properties-bulk` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/set-properties-bulk.md |
| `set-rawmetatable` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/set-rawmetatable.md |
| `set-stack-hidden` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/set-stack-hidden.md |
| `tool-plan` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/tool-plan.md |
| `type-text-box` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/type-text-box.md |
| `virtual-input` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/virtual-input.md |
| `write-file` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/write-file.md |
| `write-path-value` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/write-path-value.md |
| `ws-close` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/ws-close.md |
| `ws-connect` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/ws-connect.md |
| `ws-send` | Write | Medium | https://policylayer.com/tools/executor-mcp-roblox/ws-send.md |

## Tool descriptions

- `clear-queue-on-teleport` — WRITES EXECUTOR STATE — clears any code previously queued with queueonteleport, via
- `clear-remote-spy-logs` — WRITES LIVE GAME STATE. Clears the selected engine
- `clear-selection` — Drop THIS session
- `clear-semantic-index` — Drop the cached semantic index for THIS session
- `delete-file` — Delete a single file from the executor
- `delete-folder` — Delete a folder (and typically its contents) from the executor
- `destroy-instance` — WRITES LIVE GAME STATE. Resolve a Luau expression to an Instance and permanently remove it from the game via
- `draw-clear` — Tears down the entire MCP-managed Drawing overlay: iterates every handle stored in getgenv().__mcp_drawings,
- `draw-remove` — Destroys one Drawing overlay created by draw-create: looks the handle up by its integer id in
- `playbook-delete` — Remove a persisted playbook from ~/.executor-mcp/playbooks/. Returns { ok: true, removed: true } when
- `release-closure-reference` — WRITES LIVE GAME STATE. Remove one key from getgenv().__mcp_closure_refs so cloned/wrapped closures can be
- `remote-spy` — WRITES LIVE GAME STATE. Controls the selected spy: lifecycle, configure, pause/resume, clear, block/unblock, ignore/unignore, and reset-controls. Select engine=cobalt (default) or ketamine. status reports effective capture/GUI settings a…
- `teach-mode` — Event-driven demonstration recorder with start, poll, stop, and cancel actions. It uses bounded client-side
- `vm-reset` — Wipe the persistent VM environment used by the
- `agent-run` — ORCHESTRATES LIVE TOOLS. Execute an explicit discover→act→verify workflow with step IDs, result references,
- `batch-execute` — Run several independent Luau snippets in sequence in a single round trip, collecting every result without paying
- `build-call-graph` — Build an IDA-style call graph (function tree) rooted at a target Luau function. Each Luau function carries its
- `ensure-remote-spy` — WRITES LIVE GAME STATE. Starts the selected engine (default cobalt), stopping the other spy on this client first. Cobalt is bundled; Ketamine is downloaded from a pinned upstream commit and hash-checked before loading. Ketamine requires …
- `execute` — Execute Luau in the active Roblox client WITHOUT waiting for it to finish. The code is COMPILED FIRST via
- `execute-and-wait` — Run Luau in the active Roblox client and WAIT for what happened, returning a structured result:
- `execute-file` — Read a Luau script from the SERVER host filesystem and execute its contents on the active Roblox client,
- `execute-lua-state` — WRITES LIVE GAME STATE. Resolve current/game/expression state and call LuaStateProxy:Execute(source, ...args).
- `filter-gc` — The headline reflection tool: run the executor
- `fire-proximity-prompt` — WRITES LIVE GAME STATE. Resolve a Luau expression to a ProximityPrompt and trigger it via the executor
- `invoke-closure` — WRITES LIVE GAME STATE. Invoke an arbitrary live function expression with up to 24 typed arguments and return
- `invoke-method` — ACTS ON LIVE GAME STATE. Resolve a Luau expression to an Instance and call one of its methods as a colon-call
- `new-c-closure` — Call newcclosure(function, debugName?) and store the wrapper under getgenv().__mcp_closure_refs, returning a
- `new-l-closure` — Call newlclosure(function) and store the wrapper under getgenv().__mcp_closure_refs, returning a reusable
- `new-lua-state-proxy` — Call LuaStateProxy.new() and return serializable state metadata plus a retained Reference; no raw proxy crosses JSON.
- `playbook-run` — Load a saved playbook from ~/.executor-mcp/playbooks/<name>.json, replace any ${param} placeholders with
- `run-deferred` — Schedule a Luau snippet to run on its OWN thread and return immediately WITHOUT waiting for it to finish. Use
- `run-loop` — Run a Luau snippet
- `run-luau` — Execute arbitrary Luau in the active Roblox client and return its first returned value (decoded from JSON).
- `run-on-actor` — WRITES LIVE GAME STATE. Resolve an Actor expression and call run_on_actor(actor, source, ...arguments). The
- `run-with-timeout` — Run a Luau snippet under a WATCHDOG: it executes on its own thread and this tool polls a done flag against an
- `script` — Run a Luau program in the active Roblox client that can ALSO call any other tool inline through a live
- `script-fanout` — Run ONE Luau program across multiple connected clients in parallel and return per-client results. Targets
- `trace-remote-traffic` — WRITES LIVE GAME STATE on start. Starts/adopts the selected engine and opens a traffic view. fetch reads retained captures since start; stop closes only the view. Direction is selected on start. Shares the bounded buffer with all spy too…
- `actor-capabilities` — Read-only matrix for Volt
- `actor-event-monitor` — WRITES LIVE GAME STATE when starting/stopping. Connect to on_actor_added and/or on_actor_state_created, retain
- `agent-context` — READ-ONLY. Bootstrap an AI agent with the current MCP/session/game context in one call. Returns connected
- `agent-memory` — PERSISTENT AGENT MEMORY. Store, recall, or forget compact facts and successful workflow notes across tasks.
- `append-file` — Append content to the end of a file in the executor
- `assert-state` — VERIFY LIVE OUTCOMES in one bounded, read-only execution. Evaluate path existence, property and attribute values,
- `block-function` — WRITES LIVE GAME STATE — INSTALLS A PERSISTENT GLOBAL HOOK. Replaces a target function with a no-op that ignores its
- `block-remote` — WRITES LIVE GAME STATE. Reversibly sets the selected spy
- `bridge-status` — Report the bridge/session state as seen from this MCP session, WITHOUT touching any game. Shows: this session
- `cache-invalidate` — Invalidate the executor
- `cache-is-cached` — Report whether the executor currently holds a cached reference for a single Instance via cache.iscached(inst).
- `call-closure` — ACTS ON LIVE GAME STATE — EXECUTES THE FUNCTION. Resolve a Luau expression to a function and CALL it with an
- `can-signal-replicate` — Query whether an RBXScriptSignal is one the Roblox engine permits to be replicated to the server, using the
- `capture-log-output` — WRITES LIVE GAME STATE — INSTALLS A PERSISTENT LOG CONNECTION. Connects LogService.MessageOut and records every
- `check-caller` — Call Volt checkcaller in the active executor thread. This normally reports true for a direct MCP call and is
- `clone-function` — Clone a function with clonefunction/clonefunc. The function result is retained in
- `clone-instance` — WRITES LIVE GAME STATE. Resolve a Luau expression to a source Instance, deep-copy it via source:Clone() (which
- `closure-capabilities` — Read-only capability matrix for the official Volt closure library plus the MCP
- `comm-channel-monitor` — WRITES LIVE GAME STATE when starting/stopping. Connect to Channel.Event, retain a bounded
- `compare-gc-snapshots` — Take a census of the garbage collector (getgc) and diff it over time to find what was allocated or freed between two points - a leak-hunting / behaviour-attribution tool.\n\n
- `compare-instances` — Resolve two Luau expressions and report whether they reference the SAME underlying Roblox instance via
- `count-function-calls` — WRITES LIVE GAME STATE — INSTALLS A PERSISTENT GLOBAL HOOK. Lightweight call-frequency counter for any function:
- `count-signal-connections` — Resolve an RBXScriptSignal and return a fast numeric breakdown of everything connected to it:
- `crypt-base64-decode` — Decode a Base64 string back to its raw bytes using the executor
- `crypt-base64-encode` — Encode an arbitrary string to Base64 using the executor
- `crypt-decrypt` — Decrypt a ciphertext with the executor
- `crypt-encrypt` — Encrypt a string with the executor
- `crypt-hash` — Compute a cryptographic digest of a string using the executor
- `diff-instance-snapshot` — Answer
- `disassemble-function` — Produce a full IDA-style dump of a single Luau function in one call: debug.info (name/source/line/params/ups),
- `discover-character` — Find the active player
- `discover-player-values` — Auto-discovery for
- `dump-function-env` — Find function by query and inspect environment table keys/values.
- `dump-table` — Resolve a Luau expression to a TABLE and recursively encode its contents to a chosen depth. Scalar, Instance
- `eval-expression` — Evaluate ONE Luau expression on the active client and return its typeof plus an encoded value.
- `execution-footprint-audit` — READ-ONLY, one-shot Luau auditor for local execution exposure. It resolves an optional script and/or closure
- `explain-failure` — READ-ONLY AND NO CLIENT REQUIRED. Deterministically classify a failed MCP/Roblox tool call from its error,
- `file-exists` — Probe a path in the executor
- `find-bytecode-size-outliers` — Scan scripts and rank by getscriptbytecode size to find complex/high-value targets quickly.
- `find-constants-xref` — Find getgc functions containing a target constant and return compact xrefs.
- `find-detached-instances` — Walk every instance the executor can see (getinstances) and report the ones that are DETACHED from the running
- `find-duplicate-functions` — Walk every Luau function in the GC, hash each one with getfunctionhash, and group functions that share the
- `find-event-connections` — Inspect RBXScriptSignal connections by instance path + signal name.
- `find-function-xrefs` — Resolve a target Luau FUNCTION from an expression, then walk every function in the GC and report which ones
- `find-functions-by-complexity` — Rank every Luau function in the GC by complexity so you know where to start reverse-engineering — the biggest, most
- `find-functions-by-constant` — Scan getgc() and find closures whose constants contain a target string/number. Useful for locating handlers and hidden logic by magic constants.
- `find-global-xrefs` — Find functions that likely call or reference this global or method by name. Luau bytecode stores global lookups and
- `find-hidden-guis` — Surface GUI overlays/menus that are hidden away from the normal PlayerGui hierarchy — the classic home of cheat
- `find-hidden-instances` — Enumerate EVERY instance the executor can see (getinstances — this includes objects that are not reachable from
- `find-hidden-remotes` — Find RemoteEvent / RemoteFunction / UnreliableRemoteEvent / BindableEvent / BindableFunction instances that are
- `find-hidden-scripts` — Scan ALL scripts (getscripts) and currently-running scripts (getrunningscripts) and report the ones that are
- `find-instance-xrefs` — Resolve a target Instance from a Luau expression, then walk every function in the GC and report which ones hold
- `find-instances-with-connections` — Walk every descendant of a root instance and report which ones have an active handler on a specific
- `find-module-scripts` — Search ModuleScripts by substring against name/full path.
- `find-path-references` — Find constants containing instance path fragments like ReplicatedStorage/Workspace.
- `find-remote-xrefs` — Resolve a RemoteEvent / RemoteFunction / BindableEvent / BindableFunction from a Luau expression, then walk
- `find-running-scripts` — List every script that is currently executing (getrunningscripts), including ones that are not visible in the
- `find-string-in-tables` — Walk every live Luau GC table and report each string VALUE that matches
- `find-string-xrefs` — Cross-reference a string the way IDA jumps from a string literal to every place it is used. Walks every Luau
- `find-table-references` — Answer
- `find-tables-by-key` — Cheat-Engine-style STRUCTURE scan: walk every live Luau GC table and report each one that contains a string
- `find-upvalue-sharing` — Walk every Luau function in the GC and, for each function, inspect its upvalues. Whenever an upvalue is a TABLE,
- `find-upvalue-xref` — Find functions whose upvalue names or values match a query.
- `fire-comm-channel` — WRITES LIVE GAME STATE. Resolve get_comm_channel(id) and call Channel:Fire(...typed arguments). Requires
- `fire-connection` — MUTATES CLIENT STATE. Invokes a single connection
- `fire-lua-state-event` — WRITES LIVE GAME STATE. Resolve current/game/expression state and call state.Event:Fire(...typed arguments).
- `fire-remote` — ACTS ON LIVE STATE — CAN REACH THE SERVER. Resolve a Luau expression to a remote object
- `fire-signal` — MUTATES CLIENT STATE. Invokes firesignal(signal, ...) to synchronously fire EVERY local Lua connection
- `get-active-client` — Report which live Roblox client THIS session currently resolves to (read-only), including its current
- `get-actor-details` — Drill into Actor instances (parallel-Luau VMs) and report their contents. Actors run code in isolated VMs
- `get-anticheat-surfaces` — Fast, lightweight defensive recon that summarizes the most common anti-cheat surfaces WITHOUT a heavy GC walk
- `get-call-stack` — Unwind the current Luau call stack from the executing thread and return one frame per level: { level, name,
- `get-closure-constants` — Resolve a Luau expression to a function and dump its constant pool via getconstants. Constants are the literal
- `get-closure-protos` — Resolve a Luau expression to a function and enumerate its nested prototypes (protos) via getprotos. Protos are
- `get-closure-upvalues` — Resolve a Luau expression to a function and dump its upvalues via getupvalues. Upvalues are the variables a
- `get-comm-channel` — Call get_comm_channel(id), falling back to the MCP channel registry, and return serializable channel/Event metadata.
- `get-connection-constants` — Disassemble the Lua function bound to ONE connection on an RBXScriptSignal (selected by zero-based index) and
- `get-connection-info` — Return the full Connection metadata for ONE connection on an RBXScriptSignal, selected by zero-based index.
- `get-connection-protos` — Enumerate the inner (proto) functions defined inside the Lua function bound to ONE connection on an
- `get-connection-upvalues` — Read the captured upvalues of the Lua function bound to ONE connection on an RBXScriptSignal (selected by
- `get-connector-diagnostics` — Probe the live connector/runtime from inside the Roblox client and return a self-report describing the
- `get-console-output` — Read recent Roblox developer console logs from the active client. Use limit and logsOrder to control volume and ordering.
- `get-custom-asset` — Turn a file in the executor
- `get-executor-info` — In-game probe that reports WHICH executor is hosting the connector and a small capability map.
- `get-fast-flag` — Read the current value of a Roblox engine FastFlag by name via the executor
- `get-fps-cap` — Read the executor
- `get-function-env` — Resolve a Luau expression to a function and dump its function environment table via getfenv. This is the _ENV
- `get-function-hash` — Resolve a function and return getfunctionhash(fn), useful for stable comparison and change detection. Volt only
- `get-function-protos` — Find a function by query and dump nested proto debug info.
- `get-function-upvalues` — Find matching functions in getgc() and dump their upvalues for live reverse engineering.
- `get-game-info` — Read identifying metadata for the game the active client is in: PlaceId, GameId (universe), JobId (server
- `get-game-state` — Call getgamestate() and return Id/IsActorState/Event/Actors metadata plus a reusable registry Reference.
- `get-gui-text` — Resolve a Luau expression to a single GUI Instance and return whichever text properties it actually exposes:
- `get-hidden-ui` — Return a shallow tree of the executor
- `get-hwid` — Read the host machine
- `get-instance-counts` — In-game shape/size profile. Walks game:GetDescendants() once (pcall-guarded, capped) and tallies every Instance by
- `get-instance-properties` — Resolve a single instance from a dotted path (e.g.
- `get-instance-tree` — Return a nested { name, class, children } tree under an instance resolved from a dotted path (default
- `get-local-player-info` — Capture a single, comprehensive read-only snapshot of THIS client
- `get-lua-state` — Call getluastate() for the current state, or getluastate(target) for an Actor/BaseScript expression. Returns
- `get-lua-state-actors` — Resolve current/game/expression state, call LuaStateProxy:GetActors(), and return at most 200 Actor paths.
- `get-memory-stats` — In-game memory health probe. Reports the Lua VM
- `get-metamethod` — Resolve a Luau expression to ANY value (table, Instance, userdata, etc.), grab its raw metatable via
- `get-metatable` — Resolve a Luau expression to ANY value (table, Instance, userdata, etc.) and dump its raw metatable via
- `get-module-source` — Decompile a specific ModuleScript by path.
- `get-nil-instances` — Enumerate instances whose Parent is nil (getnilinstances). Nil-parenting is a classic hiding spot: a remote,
- `get-place-details` — Read identifying and runtime details about the place and server this client is connected to. Use this to capture
- `get-players` — Enumerate the live roster of the running game by calling game:GetService(
- `get-remote-signature` — Read-only inspection of ONE remote or bindable to learn how it is used WITHOUT firing it or installing any hook.
- `get-remote-spy-logs` — Reads bounded captures from the selected engine without loading it. Query filters by direction, remoteId/path, method, class, blocked-only, name, and afterId cursor affect this read only; use configure-remote-spy for persistent capture f…
- `get-render-stats` — In-game performance/runtime snapshot taken at the instant of the call. Reports: the physics frame rate from
- `get-script-bytecode` — Retrieve the compiled Luau bytecode for a script via the executor
- `get-script-closure` — Resolve a Luau expression to a LocalScript or ModuleScript Instance and retrieve its compiled main function via
- `get-script-content` — Get decompiled source for a Roblox script by path or getter code. Use startLine/endLine for a focused range when the full script is large.
- `get-script-env` — Resolve an instance path to a running LocalScript/ModuleScript and dump its script environment table via
- `get-script-hash` — Compute the content hash of a script via the executor
- `get-semantic-index-stats` — Report the semantic script index for THIS session
- `get-signal-arguments` — Report the value TYPES that an RBXScriptSignal fires its connected handlers with, using the executor
- `get-signal-arguments-info` — Report RICH, per-argument metadata about what an RBXScriptSignal fires with, using the executor
- `get-signal-whitelist` — Enumerate the full set of signals the Roblox engine allows to be replicated to the server, using the
- `get-stack` — Read the raw values currently sitting on the Luau stack at a given call level via the executor
- `get-thread-stack` — Walk the call stack of a Luau thread/coroutine frame-by-frame using debug.info. For each level it reports the
- `hook-and-log-function` — DANGER — INSTALLS A PERSISTENT GLOBAL HOOK. Turnkey call-tracing for any function: hook a target, automatically
- `hook-function` — WRITES LIVE GAME STATE. DANGER — MUTATES STATE PERSISTENTLY. Resolve a target function and replace it with your own function via
- `hook-metamethod` — WRITES LIVE GAME STATE. DANGER — MUTATES STATE PERSISTENTLY. Resolve a Luau expression to an object and replace one of its
- `http-request` — SENDS A REAL OUTBOUND HTTP REQUEST from the Roblox client via the executor
- `ignore-remote` — WRITES LIVE GAME STATE. Reversibly ignores captures for an observed remoteId or Luau remotePath in the selected engine/direction. ignored=false undoes it. Calls continue executing. Ketamine suppresses MCP captures; Cobalt suppresses its …
- `inspect-callbacks` — Find and disassemble the invoke callbacks bound to RemoteFunctions and BindableFunctions — these are where a
- `inspect-closure` — Resolve a Luau expression to a function and dump everything about it in one call: whether it
- `inspect-instance-metatable` — Get metatable keys from a target Instance path (e.g., game.Players.LocalPlayer).
- `is-c-closure` — Resolve a function and call iscclosure with guarded metadata.
- `is-executor-closure` — Call isexecutorclosure with checkclosure/isourclosure aliases to distinguish executor-created closures from game closures.
- `is-function-hooked` — Resolve a function and call isfunctionhooked before hooking/restoring it.
- `is-l-closure` — Resolve a function and call islclosure with guarded metadata.
- `is-new-c-closure` — Call isnewcclosure with the iscustomcclosure alias when available.
- `is-parallel-context` — Call isparallel/is_parallel and return a boolean without changing scheduler state.
- `is-readonly` — Resolve a Luau expression to a table (or a metatable expression) and report whether it is locked read-only
- `list-actors` — Enumerate every Actor instance in the game (getactors). Actors run code in isolated parallel-Luau VMs, so
- `list-attributes` — Walk the descendants of a root instance and collect every unique custom attribute name (via GetAttributes()), with its observed value type, a sample value, and how many instances carry it.
- `list-clients` — List every connected Roblox executor client with its clientId, account, place, and executor.
- `list-closure-references` — Read the bounded getgenv().__mcp_closure_refs registry created by clone-function/new-c-closure/new-l-closure and
- `list-drawings` — Read-only inventory of the Drawing overlay this server manages: walks getgenv().__mcp_drawings and returns
- `list-files` — List the files and subfolders directly inside a folder in the executor
- `list-gc-functions` — Enumerate live Lua closures from getgc() and return debug metadata (name/source/line/upvalues). Useful for live reversing when script paths are unknown.
- `list-gc-tables` — Enumerate table objects from getgc(true) with optional key/value query matching.
- `list-gc-threads` — Enumerate thread objects from getgc(true), including coroutine status where available.
- `list-global-env-keys` — List keys from getgenv/_G with type/value previews.
- `list-gui-elements` — Enumerate the live GUI tree under a root Instance (defaults to the LocalPlayer
- `list-hooks` — List every function/metamethod hook installed through hook-function / hook-metamethod in this session. Each
- `list-instance-signals` — Enumerate the RBXScriptSignal members (events) of a Roblox Instance and report how many connections each has.
- `list-lua-states` — Call getactorstates(), cap output at 256 states, and return compact state/actor metadata plus reusable References.
- `list-registry-objects` — Inspect debug.getregistry() and summarize object types for runtime reversing.
- `list-remotes` — Read-only inventory of every remote/bindable object in a part of the game tree. Resolves
- `list-rendered-instances` — Enumerate the instances the engine is currently rendering via getrendered() and return { count, samples }, where
- `list-roblox-windows` — List the Roblox player processes on the SERVER host that own a visible OS window, with their process id and
- `list-runtime-modules` — Find ModuleScripts in game + nil instances and report metadata for reversing.
- `list-script-actors` — List Actor instances and contained LuaSourceContainer scripts for actor-based reverse analysis.
- `list-signal-connections` — Enumerate every connection on an RBXScriptSignal and, for each, report its full Connection metadata:
- `list-strings` — Walk every Luau function in the GC and collect their string constants — the runtime equivalent of IDA
- `list-tools` — Discover the right tool without scanning all of them. Call with NO arguments to see every
- `load-file` — Compile a Luau file from the executor
- `lookup-function` — Search live functions by name/source/constant text and return enriched debug metadata for reverse engineering.
- `lua-state-event-monitor` — WRITES LIVE GAME STATE when starting/stopping. Connect to LuaStateProxy.Event, retain a bounded
- `measure-memory` — Measure how much Lua heap memory a snippet allocates: read gcinfo() (the live Lua heap size in KB) immediately
- `message-box` — WRITES HOST STATE — pops up a NATIVE OS dialog on the host machine via messagebox(text, caption, flags). The
- `monitor-remote` — WRITES LIVE GAME STATE on start. Starts the selected engine if needed and opens a view for one remote instance. fetch reads retained captures since the view started; stop closes the view while shared capture continues. Starting a differe…
- `observe-world` — Perform one bounded, read-only Luau observation that fuses the active or custom character rig, current camera,
- `playbook-list` — List every persisted playbook in ~/.executor-mcp/playbooks/, optionally filtered to one tag. Returns
- `profile-code` — Micro-benchmark a Luau snippet by running it
- `queue-on-teleport` — WRITES EXECUTOR STATE — queues a chunk of Luau source via queueonteleport(code) so it runs automatically
- `read-file` — Read the entire contents of a file from the executor
- `read-path-value` — Evaluate a single Luau expression and report exactly what lives at that slot — without mutating anything.
- `replicate-signal` — MUTATES SERVER STATE — DANGEROUS. Invokes replicatesignal(signal, ...) to fire the event with full
- `scan-closures-by-name` — Find getgc closures whose debug name contains a target substring.
- `scan-closures-by-source` — Find getgc closures whose debug source contains a target substring.
- `scan-connections-by-source` — Sweep a hierarchy for event handlers and pinpoint which script each handler is defined in. Walks
- `scan-hook-surfaces` — Check availability of common exploit/debug hook APIs and return capability map.
- `scan-network-endpoints` — Find URL-like strings in function constants across getgc closures.
- `scan-number-range` — Cheat-Engine-style RANGE scan: walk every live Luau GC table and report each numeric value v where
- `scan-proto-functions` — Use debug.getprotos over matched functions and return proto summaries.
- `scan-remote-listeners` — List RemoteEvent/RemoteFunction objects and listener counts from connection APIs.
- `screenshot-window` — Capture an OS screenshot of a Roblox window on the SERVER host and save it as a PNG, returning the saved file
- `script-grep` — Search decompiled Roblox scripts for a pattern, line by line, with surrounding context. Enumerates every client-readable
- `search-bytecode` — Scan every script returned by getscripts(), dump each one
- `search-gc-value` — Cheat-Engine-style heap scanner: find WHERE a specific value lives across the entire Luau garbage collector.
- `search-instances` — Search Roblox instances with QueryDescendants selector syntax. Use for class, name, tag, property, and attribute queries against a chosen root.
- `semantic-search-scripts` — Rank the active client
- `session-list` — Enumerate every recorded session in ~/.executor-mcp/sessions/<id>.jsonl. Each entry shows sessionId,
- `session-replay` — Read one session
- `session-show` — Read a window of recorded tool calls from one session
- `smart-task` — DETERMINISTIC ADAPTIVE ORCHESTRATOR. Turn a goal into a schema-aware plan, preview an explicit typed workflow,
- `spoof-function-return` — WRITES LIVE GAME STATE — INSTALLS A PERSISTENT GLOBAL HOOK. Replaces a target function with a stub that IGNORES its
- `state-transaction` — STATE TRANSACTION JOURNAL. Begin a bounded getgenv-backed transaction, capture explicitly requested Instance
- `suggest-tools` — Surface the right tool faster from a natural-language goal. Uses intent aliases and field-aware ranking,
- `summarize-hidden-surfaces` — One-call high-level overview answering
- `summarize-runtime-surfaces` — Quick high-level reverse summary: counts for scripts/modules/remotes/actors/functions/tables/threads.
- `test-capabilities` — In-game capability matrix: probes a curated executor/runtime function list and reports which are
- `tool-quality-audit` — Read-only catalog self-audit for tool titles, descriptions, input documentation, schema examples/defaults/constraints, AI data-flow contracts, prerequisites, capability requirements, mutation side effects, verification paths, and recover…
- `tool-schema` — Return the input schema for any tool on this server in a compact, Luau-friendly form. Pass { name }
- `trace-call-durations` — WRITES LIVE GAME STATE — INSTALLS A PERSISTENT GLOBAL HOOK. Per-function profiler: hook a target so that every
- `trace-connection-function` — Inspect a single connection on an Instance
- `trace-require-callers` — Find functions that reference
- `verify-path-exists` — Cheaply check whether a dotted instance path currently resolves to a real Instance, without reading any properties.
- `watch-instance-property` — Poll a single property of an instance at a fixed interval for a bounded duration and record every sampled value plus whether it changed since the previous sample.
- `watch-property-changes` — Connects an Instance
- `watch-value` — Sample ANY Luau expression repeatedly over a bounded window and report every value it took plus exactly when
- `world-delta` — WRITES LIVE CLIENT OBSERVER STATE — installs RBXScriptConnections and a bounded getgenv registry, but never
- `ws-list` — List every WebSocket currently parked in the getgenv registry by ws-connect. For each entry it reports { id, url,
- `ws-receive` — Read the inbound frames buffered for a WebSocket opened with ws-connect, addressed by its registry id. Returns the
- `block-packets` — WRITES LIVE GAME STATE — installs a RakNet send hook that DROPS matching outgoing packets. A packet is
- `cache-replace` — Replace the executor
- `camera-control` — WRITES LIVE GAME STATE. Read the active camera or set its CFrame, position/look-at target, FieldOfView, and
- `click-button` — WRITES LIVE GAME STATE. Click a Roblox TextButton or ImageButton by firing its GUI signals via firesignal,
- `configure-remote-spy` — WRITES LIVE GAME STATE. Configures an already-running spy without restarting or expiring IDs. Use engine=ketamine for Ketamine. Patch persistent MCP capture filters, pause/resume with capture.enabled, resize bounded history, or control K…
- `create-comm-channel` — WRITES LIVE GAME STATE. Call create_comm_channel(name?), retain the Channel in
- `create-instance` — WRITES LIVE GAME STATE. Construct a brand-new Instance via Instance.new(className), optionally set its Name and a
- `crypt-generate-bytes` — Generate
- `crypt-generate-key` — Generate a cryptographically random symmetric key using the executor
- `draw-create` — Creates a new on-screen overlay object via the executor
- `draw-update` — Mutates a Drawing overlay previously created by draw-create, looking the handle up by its integer id in
- `fire-click-detector` — WRITES LIVE GAME STATE. Resolve a Luau expression to a ClickDetector and trigger it via the executor
- `make-folder` — Create a folder (and any required parent folders) inside the executor
- `packet-spy` — WRITES LIVE GAME STATE — installs a RakNet send hook. Captures every OUTGOING low-level packet the client
- `playbook-save` — Persist a named, optionally parameterized Luau snippet to ~/.executor-mcp/playbooks/<name>.json so it can
- `press-key` — WRITES LIVE GAME STATE. Simulate a real keyboard key press/release in the running client via
- `resolve-entity` — Resolve a session-local handle returned by observe-world back to its live Roblox Instance. A live weak
- `restore-function` — WRITES LIVE GAME STATE. Resolve a target and call restorefunction/restorefunc directly. Unlike restore-hook,
- `restore-hook` — WRITES LIVE GAME STATE. Undo a hook created by hook-function / hook-metamethod, restoring the captured original. Pass a
- `save-instance` — WRITES HOST FILES — serializes the entire game (or a chosen instance subtree) to a file in the executor
- `select-client` — Bind a connected Roblox client to THIS session so your tool calls target that game. Select by clientId OR
- `send-packet` — WRITES LIVE GAME STATE — transmits a raw packet. Sends a custom OUTGOING low-level packet via raknet.send
- `set-attribute` — WRITES LIVE GAME STATE. Resolve a Luau expression to an Instance and write one of its custom attributes via
- `set-clipboard` — WRITES HOST STATE — copies the given text to the host machine
- `set-closure-constant` — WRITES LIVE GAME STATE. DANGER — Resolve a Luau expression to a function and overwrite one of its bytecode constants
- `set-closure-upvalue` — WRITES LIVE GAME STATE. DANGER — Resolve a Luau expression to a function and overwrite one of its upvalues (a
- `set-connection-state` — MUTATES CLIENT STATE. Toggles or removes connections on an RBXScriptSignal:
- `set-fast-flag` — WRITES CLIENT STATE — overrides a Roblox engine FastFlag for the running client via setfflag(name, value).
- `set-fps-cap` — WRITES CLIENT STATE — sets the executor
- `set-function-env` — WRITES LIVE GAME STATE. Resolve a function and an environment-table expression, then call setfenv. This changes
- `set-gui-text` — WRITES LIVE GAME STATE. Resolve a Luau expression to a GUI Instance and overwrite its .Text property, returning
- `set-instance-property` — WRITES LIVE GAME STATE. Resolve a Luau expression to an Instance and assign one of its properties, returning
- `set-metatable-readonly` — WRITES LIVE GAME STATE. DANGER — Resolve a Luau expression to a metatable (usually getrawmetatable(obj)) and
- `set-properties-bulk` — WRITES LIVE GAME STATE. Resolve a Luau expression to a single Instance ONCE, then apply a list of property
- `set-rawmetatable` — WRITES LIVE GAME STATE. DANGER — Resolve a Luau expression to an object (table/Instance/userdata) and REPLACE
- `set-stack-hidden` — WRITES LIVE GAME STATE. Call setstackhidden(function, hidden) to alter runtime stack/debug visibility. This can
- `tool-plan` — READ-ONLY. Convert a vague Roblox goal into a ranked, schema-aware workflow. Give this tool the user
- `type-text-box` — WRITES LIVE GAME STATE. Enter text into a Roblox TextBox by path. Resolves the path to a TextBox, captures its
- `virtual-input` — WRITES LIVE GAME STATE. Send keyboard, mouse, touch, or gamepad input into the active Roblox client.
- `write-file` — Write content to a file in the executor
- `write-path-value` — WRITES LIVE GAME STATE. Direct heap write into one slot of a Luau table: resolve a Luau expression to a
- `ws-close` — WRITES LIVE GAME STATE — closes a WebSocket previously opened with ws-connect, addressed by its registry id. Calls
- `ws-connect` — WRITES LIVE GAME STATE — opens a real outbound WebSocket from the client via WebSocket.connect(url). The live
- `ws-send` — WRITES LIVE GAME STATE — sends a text frame over a WebSocket previously opened with ws-connect, addressed by its

## Related servers

- UnClick (1662 tools) — https://policylayer.com/tools/io-github-malamutemayhem-unclick-mcp-server.md
- Apibase (1384 tools) — https://policylayer.com/tools/io-github-whiteknightonhorse-apibase.md
- Delx Mcp A2a (1068 tools) — https://policylayer.com/tools/io-github-davidmosiah-delx-mcp-a2a.md
- MCP Framework Personal (912 tools) — https://policylayer.com/tools/inggerman-mcps.md
- Hermoso (896 tools) — https://policylayer.com/tools/hermoso.md
- Nodebench (824 tools) — https://policylayer.com/tools/io-github-homenshum-nodebench.md
- Altium-MCP-Suite (817 tools) — https://policylayer.com/tools/altium-mcp-suite.md
- Eda Agent (777 tools) — https://policylayer.com/tools/eda-agent.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=executor-mcp-roblox · API: https://policylayer.com/registry/api · Recommended policies for every tool: https://policylayer.com/policies/executor-mcp-roblox
