Skip to main content
Glama
okenjioxx

Roblox Executor MCP Server

by okenjioxx

Call any function directly with arguments and capture its result

call-closure
Destructive

Execute a Luau function resolved from a runtime expression with typed arguments, returning every produced value or pcall error. Invoke hidden or remote-event handlers in the live game state.

Instructions

ACTS ON LIVE GAME STATE — EXECUTES THE FUNCTION. Resolve a Luau expression to a function and CALL it with an ordered list of typed arguments, returning every value it produces. This lets you invoke internal, hidden, or anonymous functions on demand: a remote's OnClientEvent handler (getconnections(remote.OnClientEvent)[1].Function), a metamethod (getrawmetatable(game).__namecall), a member pulled from a script env (getsenv(script).someFunc), a constant/upvalue you extracted, or any closure found in the GC. Each argument is a typed value; use kind='raw' for non-primitive arguments (Vector3, Color3, Enum, CFrame, tables, Instance references, ...). The call is fully pcall-guarded, so a function that errors reports its message instead of aborting. WARNING: this genuinely runs the target function with the arguments you supply — it MAY cause side effects, mutate game state, fire remotes to the server, or trip anti-cheat. Only call functions you understand. Returns { Target, ok, returns, returnCount, truncated, argCount } on success, or { Target, ok=false, error, argCount } when the function raised. Signature: { functionPath: string, args: {{ kind: "string" | "number" | "boolean" | "nil" | "raw", value: string | number | boolean? }}?, threadContext: number? }. Phase: act; cost=medium; idempotency=contextual-write. Requires: active-client, resolved-target, explicit-mutation-approval. Capabilities: debug closure primitives. Produces: operation-receipt. Verify with: assert-state. Safety: MUTATING; executes caller-selected behavior in the live client. On failure: inspect tool-schema for exact fields, defaults, constraints, and an invocation example.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
argsNoOrdered list of positional arguments to pass to the function. Omit or pass [] to call it with no arguments. Each entry is a typed value; use kind='raw' for anything that isn't a plain string/number/boolean/nil.
functionPathYesLuau expression resolving to the function to call, e.g. 'getsenv(game.Players.LocalPlayer.PlayerScripts.Main).update', 'getrawmetatable(game).__namecall', 'getconnections(game.Workspace.Part.Touched)[1].Function', or 'getgenv().myGlobalFn'. Evaluated as `return <functionPath>`; the result must be a function.
threadContextNoOptional Roblox thread identity for this call; omit it to use the server default.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.0.0-spies.2

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already flag destructive/non-idempotent, but the description adds substantial context beyond them: pcall-guarding and error reporting, the exact return shape on success and failure, side-effect/anti-cheat warnings, and the 'kind=raw' evaluation semantics at call time. This meaningfully de-risks a dangerous mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long, but front-loaded with the critical 'EXECUTES THE FUNCTION' warning and each detail (guarding, return shape, raw semantics, safety) earns its place for a mutating tool. Some enumerations of example expressions are redundant with the schema, preventing a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, yet the description fully specifies the return object on both success and failure, plus failure guidance ('inspect tool-schema'). For a live-state mutating tool with 100% param coverage, nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3, but the description goes slightly further by surfacing the signature and stressing the kind='raw' path for non-primitive arguments — a subtlety that governs correct invocation. It largely mirrors the schema, so it earns only modest credit above baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (call/invoke) and resource (a resolved Luau function/closure) with explicit scope. It names the concrete patterns it handles (remote handlers, metamethods, env members, GC closures) and is clearly distinct from siblings like eval-expression or run-luau, which evaluate code rather than invoke a resolved function object.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives rich context on when to use it — 'invoke internal, hidden, or anonymous functions on demand' with several concrete examples of what those are. It does not explicitly contrast against close siblings such as invoke-closure or execute, so the agent must infer the boundary, but the usage context is otherwise clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools