Skip to main content
Glama
okenjioxx

Roblox Executor MCP Server

by okenjioxx

Dump the upvalues of a connection's handler function

get-connection-upvalues
Read-onlyIdempotent

Read the captured upvalues of the Lua function bound to a signal connection by index to reveal its live closure state and shared variables.

Instructions

Read the captured upvalues of the Lua function bound to ONE connection on an RBXScriptSignal (selected by zero-based index) via debug.getupvalues. Upvalues are the variables a closure captured from its enclosing scope — typically shared state, config tables, cached services or other functions — so this reveals the live context a hidden event handler operates on. Each upvalue is reported with its typeof and a readable encoded value (instances become full names, tables/functions become descriptors). Requires getconnections and debug.getupvalues; returns a clear { error } if either is missing or the connection has no Lua Function. Returns { Signal, Instance?, ConnectionIndex, Function, Upvalues: [...], Count }. Signature: { instancePath: string, signalName: any?, connectionIndex: any?, threadContext: number? }. Phase: observe; cost=medium; idempotency=read-only. Requires: active-client, resolved-target. Capabilities: debug closure primitives, getconnections. Produces: structured-observation, created-handle. Safety: read-only. On failure: inspect tool-schema for exact fields, defaults, constraints, and an invocation example.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
signalNameNoName of the RBXScriptSignal member on the instance (e.g. 'Touched', 'Changed', 'OnClientEvent'). Leave empty/omit if instancePath already evaluates to the signal.
instancePathYesLua expression resolving to the Instance that owns the signal (e.g. 'game.Workspace.Door'). Evaluated as `return <instancePath>`. Leave signalName empty if this expression already resolves to the RBXScriptSignal itself.
threadContextNoOptional Roblox thread identity for this call; omit it to use the server default.
connectionIndexNoZero-based index of the connection whose handler upvalues to read, as reported by list-signal-connections. 0 is the first connection. Must be < ConnectionCount or a clear { error } is returned.

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 cover the safety profile (readOnly, idempotent, non-destructive), so the description's value-add is its disclosure of encoding behavior (instances become full names, tables/functions become descriptors), tool dependencies (getconnections, debug.getupvalues), and explicit error behavior when those are missing. This goes meaningfully beyond the annotations, though the trailing 'Safety: read-only' line merely repeats them.

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-loads the purpose and the meaning of upvalues before moving to encoding, dependencies, return shape, and the signature. It is dense but well-ordered; the trailing metadata block (Phase/cost/Capabilities/Produces/Safety) is somewhat redundant against the annotations and slightly inflates length.

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?

With no output schema available, the description fully specifies the return shape ({ Signal, Instance?, ConnectionIndex, Function, Upvalues, Count }), the required capability set, and the failure modes. An agent has everything needed to invoke it correctly and interpret the result.

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 description coverage is 100%, so the schema already documents all four parameters including the zero-based connectionIndex and the instancePath/signalName relationship. The description adds the signature and reinforces the index semantics but contributes little beyond what the schema already states, making the baseline 3 appropriate.

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 precise verb and resource: 'Read the captured upvalues of the Lua function bound to ONE connection on an RBXScriptSignal', plus the mechanism (debug.getupvalues). The 'ONE connection' scoping and zero-based index distinguish it from sibling upvalue tools like get-function-upvalues and get-closure-upvalues without needing to open either schema.

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

Usage Guidelines3/5

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

Provides useful context for why one would call it ('reveals the live context a hidden event handler operates on') and names preconditions ('Requires: active-client, resolved-target') and failure conditions. However, it never explicitly names an alternative tool or a when-not-to-use condition, so the usage guidance remains implied rather than directive.

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