Inventory every remote in a subtree of the DataModel
list-remotesScan a Roblox game tree to inventory remote and bindable objects. Return each object's path and class to find remotes for signature inspection or traffic monitoring.
Instructions
Read-only inventory of every remote/bindable object in a part of the game tree. Resolves root (a Luau expression, default the whole game), walks its :GetDescendants() pcall-guarded, and collects every instance whose ClassName is RemoteEvent, RemoteFunction, UnreliableRemoteEvent, BindableEvent, or BindableFunction. For each it records its full path (GetFullName), class, and name. This is the map you build BEFORE spying: use it to discover which remotes exist and where, then feed an interesting path into get-remote-signature (to learn its shape) or monitor-remote (to watch one remote's traffic). Complements get-remote-spy-logs, which shows calls that have already happened; this shows the static set of remotes regardless of whether they have fired. Scanning the entire DataModel can be large, so results are capped at limit (a truncated flag is set when the cap is hit) and a per-class tally is always returned. Uses only :GetDescendants and reflection — no special executor functions required. Returns { ok, root, total, scanned, byClass, truncated, remotes } where remotes is a list of { path, class, name }, or { error }. Signature: { root: any?, limit: any?, threadContext: number? }. Phase: observe; cost=medium; idempotency=read-only. Requires: active-client. Produces: bounded-candidates. Safety: read-only. On failure: inspect tool-schema for exact fields, defaults, constraints, and an invocation example.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| root | No | Luau expression resolving to the Instance to scan under, e.g. 'game', 'game:GetService("ReplicatedStorage")', or 'game.Players.LocalPlayer.PlayerGui'. Its :GetDescendants() is walked. Evaluated as `return <root>`. Defaults to 'game' (the whole DataModel). | game |
| limit | No | Maximum number of remote/bindable entries to return (default 400). When the subtree contains more matching instances than this, the list is truncated to `limit` and `truncated` is set true (the byClass tally and `total` still reflect everything that was scanned up to the cap). | |
| threadContext | No | Optional Roblox thread identity for this call; omit it to use the server default. |