Skip to main content
Glama
okenjioxx

Roblox Executor MCP Server

by okenjioxx

Read buffered WebSocket frames

ws-receive
Read-onlyIdempotent

Read buffered inbound WebSocket frames by registry id, newest-first, with an optional limit or clear. Check socket state and total count; returns { error } for unknown ids.

Instructions

Read the inbound frames buffered for a WebSocket opened with ws-connect, addressed by its registry id. Returns the captured { text, t } records newest-first, capped at limit, plus whether the socket is still open and the total buffered count. With clear=true the ring is emptied after the snapshot is taken, so the next call only sees newer frames. Requires getgenv and the entry from ws-connect — guarded, returning { error } when the id is unknown. Returns { id, open, messageCount, messages } or { error }. Signature: { id: number, limit: any?, clear: any?, threadContext: number? }. Phase: observe; cost=medium; idempotency=read-only. Requires: active-client. Capabilities: WebSocket. Produces: structured-result. Safety: read-only. On failure: inspect tool-schema for exact fields, defaults, constraints, and an invocation example.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
idYesThe WebSocket registry id returned by ws-connect.
clearNoWhen true, empty the buffered frames after returning them (default false).
limitNoMax frames to return, newest-first (default 100).
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.2/5.0
Behavior4/5

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

Goes well past the annotations: newest-first ordering, limit capping, the buffer-emptying side effect of clear=true, the getgenv/registry guard, and the {error} fallback for unknown ids. The one unreconciled point is that clear=true mutates the ring while readOnlyHint=true and destructiveHint=false are declared; the description discloses this, so it is context rather than a contradiction, but the tension is left for the agent to resolve.

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 prose opening is dense and front-loaded with the important facts, but the trailing block (Phase/cost/idempotency/Requires/Capabilities/Produces/Safety) duplicates annotation data and the Signature line repeats the schema, padding a description that was already complete.

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 contract itself ({ id, open, messageCount, messages } or { error }) plus the guard and clearing semantics, which is sufficient for correct invocation. It defers exact field details to tool-schema, a minor gap rather than a missing requirement.

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 the baseline is 3, but the description adds real meaning: it states that results are newest-first, that clear acts after the snapshot, and that threadContext is optional/omit-for-default. The signature line largely restates the schema rather than extending it.

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 (read) and resource (inbound frames buffered for a WebSocket) and scopes it by registry id from ws-connect. An agent can distinguish it from ws-list, ws-connect, ws-send, and ws-close 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 Guidelines4/5

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

Clearly implies the prerequisite (a socket opened with ws-connect) and explains the key usage decision — clear=true empties the ring so subsequent calls only see newer frames. No explicit when-not or named alternative, but the operating context is unambiguous.

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