What your AI can do
Everything the agent can do
The full reference of Bricklayer’s bl_ tools: typed actions for building, sculpting, lighting, playtesting, and shipping, each one a single undo and a clean Git diff.
A game isn’t just code. It’s welded machines and hinged doors, fog and floodlights, mountains and lakes, particle fire, looping ambience, saved player data, and a playtest to prove it works. Bricklayer’s agent reaches every one of those through the bl_ toolbelt: typed actions it can’t fat-finger, each one a single undo and a clean Git diff. Here’s the whole belt.
Two servers, no overlap
Roblox ships its own agent server inside Studio. It runs playtests, drives mouse and keyboard, and generates meshes and materials. Bricklayer doesn’t rebuild any of that. The bl_ tools cover the other half: the two-way file mirror, plus every structured edit and read the built-in server doesn’t do. Point your agent at both and it has the whole surface of Studio. To switch the built-in server on, see Studio’s extra powers.
Every tool earns its place
The agent can already write raw Luau, so a dedicated tool has to beat that on at least one count. That rule is what keeps this list honest instead of bloated.
Correctness
Atomicity
Observability
Reach
Reads are quiet, writes ask first
Tools marked Read never change your game and run without interrupting you. Tools marked Write go through an approve-or-reject card, and land as a single Studio undo and a clean Git diff, so nothing the agent does is a mystery or a one-way door. A Roadmap tag means it’s on the roadmap, not shipping yet.
See the place
Before it changes anything, the agent needs to know what’s there. These reads run silently and never touch your game.
bl_statusReadIs Studio connected, which place is open, and how many scripts are mirrored to disk. The agent’s basic connection check.
bl_get_treeReadWalk the Explorer as a tree of children, class names, and instance names, filtered by class or a name fragment. The agent’s map of the game.
bl_get_instanceReadRead one instance’s real property values and attributes, resolved against the bundled API dump so you get its actual defaults instead of blanks.
bl_get_boundsReadThe world-space bounding box of a model or part, so the agent can reason about size and spacing instead of guessing at numbers.
bl_get_selectionReadWhatever you currently have selected in Studio, so “make this bigger” knows what “this” is.
bl_get_place_summaryReadA compact overview of the whole place: services, script counts, top-level structure, and entry points, in a few hundred tokens instead of a full tree dump.
bl_api_docsReadLook up any Roblox class, property, method, or enum in the bundled API dump. The agent writes against the real API surface, not a hallucinated one.
Build and edit
Create and change instances. Every write lands as one Studio undo and a clean Git diff.
bl_buildWriteBuild a whole nested tree, like a shop UI, a hinged door, or a folder of value objects, in one call and one undo. Every class name and property is checked before a single instance is created, so a typo fails the build instead of leaving half of it behind.
bl_create_instanceWriteCreate a single instance with properties and attributes when you don’t need a whole tree.
bl_set_propertiesWriteSet properties and attributes on an existing instance, with forgiving value formats: Vector3, Color3, UDim2, enums by name, and number and color sequences. Each value applies on its own, so one bad field doesn’t sink the rest.
bl_move_instanceWriteMove or rotate a model or part by its pivot. The general “put it exactly here” action.
bl_clone_instanceWriteDuplicate an instance, optionally many copies with a cumulative offset, like a row of columns or a stack of crates.
bl_delete_instanceWriteDelete one instance or a batch. Everything is resolved first, so a bad path in the list cancels the whole delete rather than half-doing it. Scripts are never deleted here, since those are files.
bl_set_selectionWriteSelect instances in Studio, so the agent can show you exactly what it’s about to work on.
Place things precisely
The difference between “roughly there” and “right where it should be.”
bl_alignWriteAlign or evenly distribute 2 to 100 objects by their bounding boxes on any axis, in one undo. Studio’s Align tool, driven by the agent.
bl_snap_to_groundWriteRaycast objects downward (or any direction) so they rest on the surface instead of floating or sinking into it. Fixes the most common “why is it hovering?” mistake.
bl_get_pivotReadRead a model’s or part’s pivot and local offset.
bl_pivotWriteSet a pivot or pivot offset so a door hinges at its edge and a wheel spins at its center, instead of rotating around the wrong point.
Sculpt the world
Terrain and light. The things that turn a gray baseplate into a place.
bl_terrain_fillWriteFill a region with any terrain material in a chosen shape: block, ball, cylinder, or wedge. Water makes lakes, rivers, and oceans.
bl_terrain_smoothWriteBox-blur a terrain region so a stack of separate fills reads as one continuous landform instead of a pile of blobs. The finishing pass that makes mountains look like mountains.
bl_terrain_heightsReadSample a grid of surface heights and materials as plain numbers, so the agent can confirm a landform actually merged without needing to look at it.
bl_terrain_replaceWriteSwap one terrain material for another in a region, like snow-capping a peak or drying out a lake, without re-sculpting the shape.
bl_terrain_clearWriteCarve terrain out of a region, or clear all of it.
bl_terrain_set_material_colorWriteRetint a terrain material for a stylized look.
bl_set_lightingWriteSet Lighting, Atmosphere, and post-processing (Bloom, ColorCorrection, DepthOfField, SunRays, Sky) in one undo, with presets (day, night, sunset, horror, overcast) the model can drop in without fumbling the details.
Make it feel alive
Physics, sound, particles, and tags. The layer that separates a diorama from a game.
bl_weldWriteRig parts together with welds, motors, hinges, ropes, and springs, with the attachments and CFrames created for you, so the assembly moves as one instead of exploding on contact.
bl_create_soundWriteAdd a Sound, whether looping ambience or a one-shot effect, and route it to a SoundGroup, with the asset id normalized and validated so it isn’t silently dead.
bl_effectsWriteAdd particles, beams, or trails with presets (fire, smoke, sparkle, magic, steam) and all the attachment wiring done for you, so it renders the moment it’s placed.
bl_tagWriteAdd or remove CollectionService tags across a batch of instances in one atomic step. The standard way to mark “these are enemies,” “these are pickups,” “these are doors.”
bl_get_taggedReadList every instance carrying a tag, or every tag on an instance.
Assets and generation
Pull in what already exists, and soon, generate what doesn’t.
bl_search_assetsReadSearch the Marketplace for free models and decals by keyword.
bl_insert_assetWriteInsert a Marketplace or Toolbox asset by id and drop its contents into the tree, the way the Studio toolbox does.
bl_generate_meshWriteRoadmapPrompt to a textured mesh, then parented, positioned, and checkpointed. One call from idea to placed object.
bl_generate_materialWriteRoadmapPrompt to a material, optionally applied straight to the parts you’ve selected.
Run, watch, and verify
Bricklayer doesn’t just write the game. It plays it, watches the numbers, and checks its own work. This is where an agent stops guessing.
bl_run_luauWriteRun arbitrary Luau in the edit session, the fallback for anything without a dedicated tool. Output and stack traces come back with it, and it’s undo-wrapped like everything else.
bl_run_testsWriteRun the place’s test suite and return structured pass/fail with messages and stack traces, so “does it still work?” has a real answer.
bl_screenshotReadCapture the Studio viewport as an image the agent can actually look at, and that you see too, so it can’t describe a scene it never rendered.
bl_frame_cameraWritePoint the edit camera at an instance or an exact spot, so the next screenshot shows the thing that matters.
bl_get_logsReadRead the Output console with a cursor and level/context filters (edit, server, and client), with nothing lost across a play start and stop.
bl_wait_forWriteDuring a playtest, wait until a Luau condition is true, such as a character spawning or a score crossing a threshold, before moving on.
bl_teleport_characterWriteMove a player’s character in a running game, so the agent can walk it onto the coin it wants to test.
bl_get_statsReadDeveloper-Console numbers on demand: memory by category, instance and primitive counts, network throughput, and sampled FPS, so the agent can tell whether it just tanked performance.
bl_debug_watchWriteRoadmapThe automatable debugger: watch a set of expressions over time during play and get their series back. Studio’s real breakpoints have no plugin API, so this stands in for them.
bl_profileWriteRoadmapOpen a profiling window during a playtest and return the heaviest scripts by CPU.
Saved data
Answer the question raw code can’t: what is actually stored?
bl_datastore_readReadRead saved player and game data (fetch a key, or list keys) across DataStores and OrderedDataStores. Silent, so debugging a save never interrupts you.
bl_datastore_writeWriteSet or remove a saved key to seed test data or fix a bad save. Values are JSON-checked and size-capped, and the write asks first. Needs “Studio Access to API Services” switched on (File → Game Settings → Security); if it’s off, the tool tells you exactly how to turn it on.
Quality, safety, and recovery
Everything the agent does is checkable, undoable, and diagnosable.
bl_analyzeReadType-check and lint the project (luau-lsp and Selene) and report problems with file and line, so the agent catches its own mistakes before you ever run the game.
bl_checkpointWriteSnapshot the whole project under a label: a Git commit of the files plus a Studio undo waypoint, a clean point to return to.
bl_list_checkpointsReadList the checkpoints you’ve saved.
bl_rollbackWriteRoll both disk and Studio back to a checkpoint. “Undo everything since my last prompt,” cleaner and more reliable than mashing Ctrl+Z.
bl_doctorReadOne call diagnoses the whole chain (plugin installed, connected, token, sync health, the built-in server, DataStore access) and hands back the exact fix. The agent unblocks itself instead of asking you what’s wrong.
Ship it
Publishing, over Roblox’s Open Cloud, with your own key. Opt-in: nothing here runs unless you set it up.
bl_publish_placeWritePublish a complete saved place file through Open Cloud. This is optional and asks first. Beginner setup guide.
bl_place_versionsReadList the connected place’s recent version history through Open Cloud.
bl_get_analyticsReadRead aggregate experience analytics such as daily active users.
bl_setup_animationWriteWire an existing animation asset onto an existing rig and optionally preview it.
And when there’s no tool for it
bl_run_luau is the floor: anything Roblox exposes to a script, the agent can still do by hand, undo-wrapped like the rest. Dedicated tools exist to make the common things safe, atomic, and verifiable, not to fence the agent in.