Skip to main content
Glama
okenjioxx

Roblox Executor MCP Server

by okenjioxx

Walk the current Luau call stack (debug.info frames)

get-call-stack
Read-onlyIdempotent

Unwind the Luau call stack to see who called your code. Returns each frame's level, name, source, and line for debugging hook callbacks or deferred tasks.

Instructions

Unwind the current Luau call stack from the executing thread and return one frame per level: { level, name, source, line }. Walks debug.info(level, 'nsl') (name / source / currentline) from level 1 outward, stopping at the first level that yields nil or after maxLevels frames. Use it to see who is calling the code you just ran — the chain of functions leading into the current execution — which is invaluable when reasoning about a hook callback or a deferred task's origin. Requires debug.info (or debug.getinfo) — type-guarded and pcall-wrapped, returning { error } on an executor that lacks it. Returns { frames } or { error }. Signature: { maxLevels: number?, threadContext: number?, timeoutMs: number? }. Phase: observe; cost=medium; idempotency=read-only. Requires: active-client. Produces: structured-observation, operation-receipt. Safety: read-only. On failure: inspect tool-schema for exact fields, defaults, constraints, and an invocation example.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
maxLevelsNoMaximum number of stack frames to walk before stopping (default 20).
timeoutMsNoOptional per-call deadline in milliseconds; omit it to use the tool or server default.
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/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/idempotent/destructive=false, and the description adds real behavioral detail beyond them: the walk stops at the first nil level or after maxLevels frames, requires debug.info (type-guarded and pcall-wrapped), and returns { error } on executors lacking it. Failure and dependency behavior is disclosed, though no rate-limit or execution-cost specifics beyond cost=medium.

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?

The opening sentences are tight and front-loaded, but the trailing block (Phase/cost/idempotency/Safety/On failure) largely duplicates the annotations (read-only, idempotent) and adds boilerplate. Useful content is present but not every sentence earns 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?

Despite no output schema, the description specifies the return contract ({ frames } or { error }, per-frame shape), the failure mode, and the dependency requirement. For a low-complexity, zero-required-param read tool this is nearly complete; only cross-tool routing is missing.

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

Parameters3/5

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

Schema coverage is 100% and each parameter is described in the schema, so the schema already does the heavy lifting. The description lists the signature and notes optionality but adds no syntax, format, or default nuance beyond what the schema provides; baseline 3 applies.

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 (unwind), resource (the current Luau call stack from the executing thread), and return shape ({ level, name, source, line }), with the mechanism named (debug.info(level, 'nsl')). An agent can distinguish this from sibling stack/call-graph tools like get-thread-stack or build-call-graph.

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 a clear context for use — seeing who is calling the code you just ran, useful for hook callbacks or deferred task origins. However it never names the alternative tools (e.g. get-thread-stack, get-stack) or states when not to use it, so routing vs siblings is left to inference.

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