List custom attributes used under a root
list-attributesScan instance descendants to collect custom attribute names, value types, samples, and counts, helping you discover attribute keys stored in a place without grepping scripts.
Instructions
Walk the descendants of a root instance and collect every unique custom attribute name (via GetAttributes()), with its observed value type, a sample value, and how many instances carry it. Use this when debugging gameplay data that is stored as instance attributes (e.g. QuestId, Health, OwnerUserId) and you want to discover which attribute keys exist in a place without grepping scripts. Returns [{ Name, ValueType, SampleValue, InstanceCount }] sorted by frequency. Work is capped at limit instances scanned. 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 | Dotted root path to scan descendants of (e.g. 'game.Workspace', 'game.ReplicatedStorage'). Defaults to 'game' (the whole DataModel). Narrow this to keep scans fast on large places. | game |
| limit | No | Maximum number of instances to scan before stopping (default: 1000). Lower this for a quick sample; raise it for exhaustive coverage at the cost of speed. | |
| threadContext | No | Optional Roblox thread identity for this call; omit it to use the server default. |