Skip to main content
Glama
okenjioxx

Roblox Executor MCP Server

by okenjioxx

Disassemble function (IDA-style function view)

disassemble-function
Read-onlyIdempotent

Dump a single Luau function's IDA-style structure in one call: debug info, closure type, counts, hash, and optional constants/upvalues for reverse engineering.

Instructions

Produce a full IDA-style dump of a single Luau function in one call: debug.info (name/source/line/params/ups), whether it is a Lua or C closure (islclosure/iscclosure), constant/upvalue/proto counts, the executor function hash (getfunctionhash) for duplicate-detection, and — optionally — the full constant and upvalue tables with their typeof and a string value (Instances become GetFullName, functions become tostring). Complements inspect-closure by bundling the hash and the structural counts into one reverse-engineering-focused view. Resolve the target via a Luau expression that yields a function; each list is capped at 200 entries. Signature: { functionPath: string, includeConstants: any?, includeUpvalues: any?, threadContext: number? }. Phase: observe; cost=high; idempotency=read-only. Requires: active-client, resolved-target. Produces: structured-observation. Safety: read-only. On failure: inspect tool-schema for exact fields, defaults, constraints, and an invocation example.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
functionPathYesLuau expression that resolves to the function to disassemble (e.g. "getgenv().myFunc" or "require(game.ReplicatedStorage.Mod).start"). Evaluated as `return <expr>`; must yield a function.
threadContextNoOptional Roblox thread identity for this call; omit it to use the server default.
includeUpvaluesNoInclude the full upvalues table (capped at 200) with Index/Type/Value. Default true.
includeConstantsNoInclude the full constants table (capped at 200) with Index/Type/Value. Default true.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv2.0.0-spies.2

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover read-only/idempotent/non-destructive, so the bar is lower, yet the description adds real context beyond them: each list is capped at 200 entries, it requires an active client and a resolved target, cost is high, and it returns a structured-observation. It does not describe pagination or truncation behavior when caps are hit, which is the main remaining gap.

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

Conciseness3/5

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

Purpose is front-loaded and dense with information, but the back half is a metadata block (Phase/cost/idempotency/Requires/Produces/Safety) that partly duplicates annotations ("idempotency=read-only", "Safety: read-only") and the schema's own signature. The generic "On failure: inspect tool-schema" tail is boilerplate that doesn't earn its place.

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

Completeness4/5

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

With no output schema, the description carries the return-shape burden and does so reasonably: it enumerates the debug.info fields, closure kind, counts, hash, and optional tables, plus prerequisites and caps. It does not sketch the actual response envelope or how errors surface, which a high-complexity tool could still benefit from.

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 coverage is 100%, so baseline is 3, but the description adds meaning the schema lacks: values in the constant/upvalue tables are coerced for display (Instances become GetFullName, functions become tostring), and it restates the call signature. It still doesn't clarify threadContext semantics beyond the schema's own text.

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 and resource ("full IDA-style dump of a single Luau function in one call") and enumerates exactly what is bundled: debug.info, closure kind, counts, function hash, and optional constant/upvalue tables. It explicitly differentiates from siblings by naming inspect-closure and positioning itself as the bundling alternative to get-function-hash/get-closure-constants.

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 clear context for use (reverse-engineering-focused view, resolve target via a Luau expression that yields a function) and names inspect-closure as the complementary tool. However, "complements inspect-closure" is not an explicit when-to-prefer-this-vs-that rule, and no exclusions or preconditions for choosing between the two are stated.

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