Observe Studio
observeInspect a live Roblox Studio session: read instance trees, properties, logs, scripts, stats, geometry overlaps, player state, and screenshots. Use structured queries to debug and audit builds.
Instructions
Read-only view of Studio. what:
status: session, place{placeId,placeName,universeId,creatorType,creatorId}, peers, playtest, capabilities, fps, journal seq.
tree: root (game), depth (2, max 6), max (500), classes, fields (extra props) → {nodes:[{path,class,name,n,props?}], truncated} (explicit root always returned).
props: paths[], props[] → {items:[{path,class,props}], missing} (unreadable props omitted).
find: root, name (substring), class (IsA), tag, attr{name,value}, prop{name,value} → {items, total}.
diff: since (seq) → {added[], removed[]} instance paths changed since a cursor.
logs: since, level, filter, tail (100), dm ('all' = merged journal, lines carry src) → {items:[{seq,t,level,msg,src}], next}; startup prints of play DMs included.
script: path, from, to (1-based lines) → {path, class, lines, total_lines, text} (not cut at 8 KB). stats: fps, frameMs, heartbeatMs, physicsMs, instances, memoryMB. selection: {paths} (edit only).
geometry: root (Workspace), max (5000; sampled beyond), tolerance (0.05), include_nested (true) → {overlaps:[{a,b,depth}], nested:[{path,parent}], checked, sampled, ms, totals}: parts intersecting parts, BaseParts under BaseParts. Audit a build; fix all listed.
player: dm (client) → name, position, velocity, state, health, walkSpeed, cameraCFrame, floorMaterial, seated.
screenshot: the Studio window captured by the bridge (works occluded, un-minimizes without focus). max_width (1024; 0 = none), format jpeg|png, quality (70), region{x,y,w,h} window px, hwnd | title_match → image + {path,width,height,source_width,source_height,scale,windowTitle,hwnd,captured_ms}; image px × scale = window px. windows: lists Studio windows.
selftest: the hub's runtime self-check → {ok, checks[]}; use after install or when results look wrong. Prefer structured reads (exact, cheap); screenshots only for visual checks (
lookanswers them in text). dm routes the read into the playtest. response_format 'detailed': ~200 KB cap, full CFrames.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| dm | No | Target DataModel: 'edit' (default) | 'server' | 'client' | 'client:N'; logs also accepts 'all' (merged journal) | |
| to | No | script: last line inclusive (default: end) | |
| max | No | tree: default 500; find: default 100; geometry: parts checked (default 5000, sampled beyond) | |
| tag | No | find: CollectionService tag | |
| attr | No | find: attribute match | |
| from | No | script: first line (1-based, default 1) | |
| hwnd | No | screenshot: pin one Studio window (from observe windows) | |
| name | No | find: name substring, case-insensitive | |
| path | No | script: path of a Script/LocalScript/ModuleScript | |
| prop | No | find: property match | |
| root | No | tree/find: root path (default game); geometry: default Workspace | |
| tail | No | logs: default 100 | |
| what | Yes | ||
| class | No | find: IsA class | |
| depth | No | tree: default 2, max 6 | |
| level | No | logs: minimum level | |
| paths | No | props: instance paths | |
| props | No | props: property names (default: notable props, ≤ 60) | |
| since | No | diff/logs: seq cursor | |
| fields | No | tree: extra props per node, e.g. ["Position","Size"] | |
| filter | No | logs: substring | |
| format | No | screenshot: default jpeg | |
| region | No | screenshot: crop in window pixels | |
| classes | No | tree: keep only these classes | |
| quality | No | screenshot: jpeg quality, default 70 | |
| restore | No | screenshot: un-minimize without stealing focus (default true) | |
| session | No | Studio session GUID or unique prefix (default: the active hub; required for writes when several Studios are connected) | |
| wait_ms | No | Wait this long for completion before returning a {job_id,status:"running"} handle (default 25000) | |
| max_width | No | screenshot: default 1024; 0 disables scaling | |
| tolerance | No | geometry: studs of penetration ignored so touching faces are not overlaps (default 0.05) | |
| title_match | No | screenshot: choose the Studio window whose title contains this (case-insensitive) | |
| include_nested | No | geometry: also list BaseParts parented under BaseParts (default true) | |
| response_format | No | concise ≈ 20 KB (default) | detailed ≈ 200 KB |