Skip to main content
Glama
okenjioxx

Roblox Executor MCP Server

by okenjioxx

Read a single metamethod off an object's raw metatable

get-metamethod
Read-onlyIdempotent

Read a specific metamethod from any Luau object's raw metatable, bypassing __metatable locks, and dump function details, constants, and upvalues.

Instructions

Resolve a Luau expression to ANY value (table, Instance, userdata, etc.), grab its raw metatable via getrawmetatable (bypassing __metatable locks), and read ONE named metamethod from it (e.g. __index, __namecall, __newindex, __call, __tostring). When the metamethod is a function this deep-dumps it: its info (Lua/C, source, line, params, upvalue count via getinfo) PLUS its constants (getconstants) and upvalues (getupvalues). This is the targeted counterpart to get-metatable: use it to drill into the exact function Roblox's security layer routes through — for example reading __namecall off getrawmetatable(game) to find the C closure that backs FireServer/InvokeServer, then inspecting its constants for method-name strings. For non-function metamethods (locked __metatable strings, __index tables, etc.) it returns the encoded value. Requires getrawmetatable; getconstants/getupvalues are best-effort (omitted if the executor lacks them or the metamethod is a C closure). Returns { Target, Method, Type, Function?, Constants?, Upvalues?, Value? } or { error } when there is no metatable, the method is absent, or getrawmetatable is missing. Signature: { objectPath: string, method: string, threadContext: number? }. Phase: observe; cost=medium; idempotency=read-only. Requires: active-client, resolved-target. Capabilities: getrawmetatable. 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
methodYesName of the metamethod key to read from the raw metatable, e.g. '__index', '__namecall', '__newindex', '__call', '__tostring', '__metatable'. Read off the metatable as mt[method] (does NOT invoke it).
objectPathYesLuau expression resolving to the object whose metatable holds the metamethod, e.g. 'game', 'game.Players.LocalPlayer', 'getrawmetatable(game)', or 'getgenv().SomeProxy'. Evaluated as `return <objectPath>`.
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.8/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/no-destructive, but the description adds substantial context beyond them: __metatable lock bypass, the getrawmetatable dependency, best-effort getconstants/getupvalues that may be omitted for C closures, and explicit failure cases (no metatable, absent method, missing getrawmetatable).

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?

Front-loaded with the core action, then the example, then requirements/return shape. It is dense and every clause carries information, though the trailing Signature/Phase/Cost/Capabilities/Safety/On-failure metadata is somewhat boilerplate and lengthens the block.

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?

Despite no output schema, the description spells out the return shape ({ Target, Method, Type, Function?, Constants?, Upvalues?, Value? } or { error }), the dependency requirements, and the best-effort caveats. An agent has everything needed to call and interpret this tool.

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 about the method parameter by explaining the divergent behavior based on its value (function metamethods get deep-dumped; non-function ones return an encoded value). It also restates the signature and confirms the read semantics for objectPath.

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+resource chain (resolve expression → grab raw metatable → read one named metamethod) and names the exact sibling it is the targeted counterpart to (get-metatable). An agent can distinguish it from get-metatable, inspect-closure, and get-closure-constants without opening any schema.

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

Usage Guidelines5/5

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

Explicitly says when to use it versus the alternative: 'targeted counterpart to get-metatable: use it to drill into the exact function Roblox's security layer routes through.' It also supplies a concrete motivating scenario (reading __namecall off getrawmetatable(game) to find the closure behind FireServer/InvokeServer).

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