Large Roblox places routinely have hundreds or thousands of instances that share configuration — environmental props with the same material, NPCs with the same attribute schema, scripts with the same deprecated API calls. Making those changes one instance at a time is slow and error-prone. The bulk operation tools in Roblox Studio MCP let an agent apply changes to many instances in a single tool call, eliminating per-instance round-trip latency and keeping the ChangeHistoryService stack clean for a singleDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/Chrrxs/robloxstudio-mcp/llms.txt
Use this file to discover all available pages before exploring further.
undo to reverse everything at once.
Bulk tool summary
| Tool | What it does |
|---|---|
mass_set_property | Set the same property to the same value on an array of instances |
mass_get_property | Read the same property from an array of instances in one call |
set_properties | Set multiple properties on one instance in a single call |
mass_create_objects | Create multiple instances with individual classes, parents, names, and properties |
smart_duplicate | Duplicate one instance N times with per-copy offsets and property variations |
mass_duplicate | Batch multiple smart_duplicate operations together |
bulk_set_attributes | Set multiple custom attributes on one instance at once |
find_and_replace_in_scripts | Search-and-replace text across all scripts; supports dryRun preview |
The paths array pattern
Tools that operate on multiple instances — mass_set_property and mass_get_property — accept a paths array: a JSON array of canonical DataModel strings, one per target instance. Build this array by:
- Calling
get_descendantsorget_taggedto enumerate the instances you want. - Extracting the
pathfield from each result entry. - Passing the resulting array directly as
paths.
DataModel paths are canonical strings of the form
game.ServiceName.ParentName.ChildName. Spaces in instance names are fine — use bracket notation for names that contain dots or special characters: game.Workspace["My Folder"].Part.Example: mass-change Transparency on 100 parts
You have 100 glass panel parts tagged"GlassPanel" and want to set them all to 30% transparency. The workflow is two tool calls: one to enumerate the tagged instances, one to apply the change.
mass_set_property call applies all 100 changes in one Studio bridge operation, recorded as a single entry in ChangeHistoryService.
Example: create 20 instances with varied properties in one call
Usemass_create_objects to build a set of spawn points with different positions without a create → set loop.
bulk_set_attributes
Set multiple custom attributes on a single instance in one call. This is more efficient than issuing a separate set_attribute call for each key, and the entire batch is recorded as a single ChangeHistoryService entry.
Canonical DataModel path of the instance to set attributes on (e.g.
"game.Workspace.NPCs.NPC_Goblin_01").Map of attribute names to values. Supports primitive types (string, number, boolean) and complex types (Vector3, Color3, UDim2) via the
_type convention used by set_attribute.Which connected Studio place to target. Required when multiple places are connected; omit when only one is open. Use
get_connected_instances to list available IDs.Example: initialise NPC attributes in one call
When setting up freshly created NPCs,bulk_set_attributes sets all required attributes on one instance per call instead of issuing a set_attribute call for each key.
mass_create_objects (create them all at once) followed by a bulk_set_attributes call per NPC. If the attributes are identical across NPCs, consider using set_attribute at the template level and then smart_duplicate with propertyVariations for any values that differ.
Example: find-and-replace across all scripts
find_and_replace_in_scripts is a bulk write tool for scripts. Use dryRun: true first to audit the scope of a change before applying it.
Performance note
Every bulk tool is designed to complete its entire workload in one Studio plugin bridge round-trip. Compare the two approaches for setting a property on 100 instances:| Approach | Round-trips | ChangeHistoryService entries |
|---|---|---|
100× set_property | 100 | 100 (100 separate undos) |
1× mass_set_property | 1 | 1 (single undo reverses all) |
undo if the result needs to be reversed — a single call undoes the entire batch.