Skip to main content
Glama

Spy on HTTP requests

http_spy

Record HTTP requests from Roblox executor and game scripts, inspect methods, URLs, headers, bodies, status and responses, with sensitive auth values redacted before storage.

Instructions

Record the HTTP requests that scripts send: the executor's request functions (request, http_request, syn.request, ...) and game:HttpGet, HttpPost and HttpService calls. Each entry has the method, address, headers, body, status and answer. It sees the requests of the game and of any other script in the executor, but not the traffic between Superbase and its bridge. Authorization, cookie and token values (also in addresses) and the Roblox account cookie are replaced with before they are stored, and bodies are cut at max_body. Actions: start (optional max_calls, max_body, include_bodies, url_contains), get (optional since_id, url_contains, method, limit), stop, clear and status. Typical use: start, make the action happen, then get. Needs hookfunction or hookmetamethod in the executor and stays installed until the game is left. Requires the connected state.

Input Schema

NameRequiredDescriptionDefault
limitNoget: maximum requests to return, newest kept (default 30).
actionYesWhat to do.
clientNoClient id from list_clients, for example c2. Defaults to the client that connected last.
methodNoget: only this HTTP method, for example POST.
max_bodyNostart: characters kept of each body (default 500).
since_idNoget: only requests after this id (use the lastId of the previous result).
max_callsNostart: how many requests to keep (default 200).
url_containsNostart: only record addresses that contain this. get: only return those.
include_bodiesNostart: keep request and response bodies (default true).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv1.4.0

TDQS

A4.3/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses that sensitive values (authorization, cookie, token, Roblox account cookie, and values inside addresses) are replaced with <redacted> before storage, that bodies are truncated at max_body, that a bounded buffer keeps only max_calls entries, and that the hook stays installed until the game is left. It also states prerequisites (hookfunction/hookmetamethod, connected state), which is critical for a tool whose annotations only say destructiveHint=false and readOnlyHint=false.

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?

Purpose and scope come first, then data shape, then privacy/limits, then the action list and workflow — a sensible front-loaded order with no filler sentences. It is dense as a single paragraph, and the action enumeration partially duplicates the action enum in the schema.

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?

For a 9-parameter, stateful, no-output-schema tool it covers the essentials: what is captured, per-entry fields (method, address, headers, body, status, answer), redaction, truncation, buffer bound, lifecycle, and required preconditions. Minor gap: it does not say what stop/clear/status return or how ids/lastId thread across calls, leaving pagination behavior implied.

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% and each parameter is already annotated with its action prefix, so the schema carries most of the meaning. The description adds only light framing (the action list, and that url_contains applies to both start and get), so it sits at the baseline rather than contributing new semantics.

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 ('Record the HTTP requests that scripts send') and immediately bounds the scope: executor request functions, game:HttpGet/HttpPost, HttpService calls. It even names what it does NOT see (traffic between Superbase and its bridge), which separates it cleanly from siblings like remote_spy and get_logs.

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 an explicit operating procedure ('start, make the action happen, then get') and enumerates the five actions with their roles, so an agent knows the intended sequence. It falls short of naming an alternative tool or stating when to prefer remote_spy or get_logs instead, so it is clear context rather than a full when/when-not routing rule.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.