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.

47 tools todayReads run silentWrites ask firstEvery action undoable

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

Arguments are checked against a bundled copy of the Roblox API before anything runs, so a tool can’t emit a property or class that doesn’t exist. That’s the most common way generic AI breaks on Roblox.

Atomicity

One tool call is one ChangeHistory recording. A whole shop UI or a full weld assembly is a single Ctrl+Z, not fifteen unrelated undo steps to walk back.

Observability

A tool can hand back a number or a read-back the agent can verify without eyes: did the terrain merge, did the value change, is memory blowing up.

Reach

Tools work from the in-Studio chat’s bring-your-own-key backend, which can’t reach Roblox’s built-in server, so the agent’s abilities don’t depend on which model you picked.

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_statusRead

Is Studio connected, which place is open, and how many scripts are mirrored to disk. The agent’s basic connection check.

bl_get_treeRead

Walk 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_instanceRead

Read 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_boundsRead

The 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_selectionRead

Whatever you currently have selected in Studio, so “make this bigger” knows what “this” is.

bl_get_place_summaryRead

A 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_docsRead

Look 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_buildWrite

Build 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_instanceWrite

Create a single instance with properties and attributes when you don’t need a whole tree.

bl_set_propertiesWrite

Set 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_instanceWrite

Move or rotate a model or part by its pivot. The general “put it exactly here” action.

bl_clone_instanceWrite

Duplicate an instance, optionally many copies with a cumulative offset, like a row of columns or a stack of crates.

bl_delete_instanceWrite

Delete 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_selectionWrite

Select 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_alignWrite

Align 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_groundWrite

Raycast 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_pivotRead

Read a model’s or part’s pivot and local offset.

bl_pivotWrite

Set 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_fillWrite

Fill a region with any terrain material in a chosen shape: block, ball, cylinder, or wedge. Water makes lakes, rivers, and oceans.

bl_terrain_smoothWrite

Box-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_heightsRead

Sample 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_replaceWrite

Swap 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_clearWrite

Carve terrain out of a region, or clear all of it.

bl_terrain_set_material_colorWrite

Retint a terrain material for a stylized look.

bl_set_lightingWrite

Set 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_weldWrite

Rig 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_soundWrite

Add 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_effectsWrite

Add 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_tagWrite

Add 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_taggedRead

List 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_assetsRead

Search the Marketplace for free models and decals by keyword.

bl_insert_assetWrite

Insert a Marketplace or Toolbox asset by id and drop its contents into the tree, the way the Studio toolbox does.

bl_generate_meshWriteRoadmap

Prompt to a textured mesh, then parented, positioned, and checkpointed. One call from idea to placed object.

bl_generate_materialWriteRoadmap

Prompt 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_luauWrite

Run 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_testsWrite

Run 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_screenshotRead

Capture 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_cameraWrite

Point the edit camera at an instance or an exact spot, so the next screenshot shows the thing that matters.

bl_get_logsRead

Read 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_forWrite

During 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_characterWrite

Move a player’s character in a running game, so the agent can walk it onto the coin it wants to test.

bl_get_statsRead

Developer-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_watchWriteRoadmap

The 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_profileWriteRoadmap

Open 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_readRead

Read 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_writeWrite

Set 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_analyzeRead

Type-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_checkpointWrite

Snapshot 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_checkpointsRead

List the checkpoints you’ve saved.

bl_rollbackWrite

Roll both disk and Studio back to a checkpoint. “Undo everything since my last prompt,” cleaner and more reliable than mashing Ctrl+Z.

bl_doctorRead

One 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_placeWrite

Publish a complete saved place file through Open Cloud. This is optional and asks first. Beginner setup guide.

bl_place_versionsRead

List the connected place’s recent version history through Open Cloud.

bl_get_analyticsRead

Read aggregate experience analytics such as daily active users.

bl_setup_animationWrite

Wire an existing animation asset onto an existing rig and optionally preview it.

And when there’s no tool for it

The list will never be complete, and it doesn’t have to be. 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.