Roblox MCP
The Roblox MCP server acts as a real-time bridge between AI coding agents and Roblox Studio, enabling direct creation, modification, and management of game content via natural language.
Instance Management: Create, delete, clone, move, rename, and pivot instances; query by name, class, property, or tag; traverse hierarchy; perform mass operations and create instance trees
Property & Attribute Control: Get/set properties, attributes, and tags; bulk/mass operations; calculated or relative property changes
Script Management: Read/write source code, create/delete scripts, edit by line number, find/replace across scripts, get dependencies
Lighting & Environment: Configure Lighting service, Atmosphere, Sky, terrain visual properties, and time of day
Selection Control: Get, set, clear, add to, or remove from Studio selection; watch for selection changes
Camera Control: Get camera info, focus on instances or world positions, get suggested views
Animation & Tweening: Load, play, and stop animations on Humanoids/AnimationControllers; create, play, pause, and cancel smooth property tweens
Audio Management: Play, stop, pause, and resume sounds; set audio listener type
Particle Effects: Emit particle bursts, clear particles, toggle effects on/off
Physics: Register collision groups and configure collision rules between them
Terrain Generation & Editing: Fill shapes (block/ball/cylinder/wedge), clear regions, replace materials, read/write voxels, generate procedural terrain, smooth terrain
Spatial Queries: Raycasting, ground detection, placement validation, area scanning, flat surface finding, walkability analysis, collision checking, spatial mapping, grid snapping
Asset Management: Insert models by asset ID, search the Creator Store, insert free models/packages, export selections
Project Sync: Bidirectional sync between Studio and local files; manage config, history, and per-type sync directions; read/write synced files
Workspace State: Full workspace snapshots, recent changes, viewport info, script lists, and selection details
Playtest Automation: Start, stop, pause, and resume playtests; inject test scripts, collect logs, generate automated test reports
Log Management: Retrieve and filter logs, poll incrementally, clear log buffer, get recent errors
System Info: Connection/ping status, place info, Studio settings, service lists
Batch Execution: Run multiple tool commands sequentially in a single request
Luau Code Execution: Run arbitrary Luau code directly inside a sandboxed Roblox Studio environment
Dashboard & VSCode Integration: Real-time web dashboard for monitoring connection, tool history, and sync state; view Studio instance hierarchy in VSCode
Enables AI-powered game development on the Roblox platform, including asset integration from the Creator Store, project synchronization, and automated playtesting.
Connects AI agents to a live Roblox Studio session, enabling them to directly create, read, modify, and delete instances, scripts, properties, and terrain via natural language.
WEPPY Roblox AI Toolkit — AI Game Development for Roblox Studio
WEPPY Roblox AI Toolkit is a Roblox Studio AI development product. It includes the WEPPY MCP Server for AI app connections and the WEPPY Roblox Studio Plugin for live Studio control. Claude Code, Codex, and Antigravity can also install the optional WEPPY AI Agent Plugin for client-native setup and workflow guidance.
Multi-Place Studio work · Generated assets to Roblox · Bidirectional sync · Automated playtest · UI Studio
English | 한국어 | 日本語 | Español | Português | Bahasa Indonesia | Deutsch

Why WEPPY Roblox AI Toolkit?
AI coding agents like Claude, Codex, and Gemini are powerful, but they cannot see or modify anything inside Roblox Studio. The DataModel, scripts, terrain, and lighting are invisible to external tools. Without a bridge, AI can only generate code snippets that you must paste manually.
The WEPPY MCP Server connects AI agents to the WEPPY Roblox Studio Plugin. AI directly creates and modifies instances, scripts, properties, terrain, and more inside Studio, and the changes are reflected immediately in Studio and the dashboard so you can see exactly what changed.
WEPPY is also built for Roblox experiences that are split across several Places. Open up to five Studio windows for Lobby, Game, Shop, Tutorial, or other Places, then tell the agent which Studio ID to use. One request can update several Places without re-explaining context or copying changes by hand.
For assets, an agent can create or prepare an image, save it to the Asset Library, upload it through Roblox Open Cloud, and apply the returned asset URI to a Place. The result is a shorter path from "make this icon/decal" to "it is visible in Studio."
No copy-pasting code or asset IDs. AI does the work, you review the results.
Related MCP server: Roblox Studio MCP Server
Quick Install
Start from the web install page. It shows the recommended one-line script for your platform first.
Recommended One-Line Install
On the install page, copy the one-line script and run it in Terminal or PowerShell.
macOS / Linux
curl -fsSL https://raw.githubusercontent.com/hope1026/weppy-roblox-mcp/main/install.sh | bashWindows (PowerShell)
irm https://raw.githubusercontent.com/hope1026/weppy-roblox-mcp/main/install.ps1 | iexThen reopen your AI app and restart Roblox Studio.
Automatic WEPPY MCP Server registration supports Claude Code, Claude Desktop, Cursor, Codex CLI/App, Gemini CLI, and Antigravity / Antigravity IDE / Antigravity CLI.
For Claude Code, the installer also installs the WEPPY AI Agent Plugin. For Codex, it adds the plugin marketplace and then asks you to install WEPPY AI Agent Plugin from Plugin Directory. For Antigravity, the AI agent plugin is installed only when Antigravity CLI and agy plugin are available; otherwise the installer preserves the direct MCP connection.
Browser Web Install
If terminal or PowerShell is uncomfortable, use the terminal-free web installer on the same install page.
Manual Install
If the one-line install or terminal-free web installer does not work, register the WEPPY MCP Server manually with your AI app.
Use this server command:
npx -y @weppy/roblox-mcp@latestSupported AI apps are Claude Code, Claude Desktop, Cursor, Codex CLI, Codex App, Gemini CLI, and Antigravity / Antigravity IDE / Antigravity CLI.
Any MCP-compatible AI client works. The server command is
npx -y @weppy/roblox-mcp@latest.
Optional WEPPY AI Agent Plugin
The WEPPY Roblox AI Toolkit connects to every supported AI app through the WEPPY MCP Server. Claude Code, Codex, and Antigravity can additionally install the WEPPY AI Agent Plugin for client-native setup and workflow guidance for Studio control, sync, and assets.
Claude Code
claude plugin marketplace add hope1026/weppy-roblox-mcp --scope user
claude plugin install weppy-roblox-ai-toolkit@hope1026-roblox-mcp --scope userCodex
codex plugin marketplace add hope1026/weppy-roblox-mcpAfter adding the Codex marketplace, restart Codex, open Plugin Directory, and install WEPPY AI Agent Plugin.
Antigravity
Antigravity CLI is required to install the WEPPY AI Agent Plugin. The one-line installer uses agy plugin install with the latest public GitHub release, verifies it with agy plugin list, and publishes the verified skill-only payload to supported IDE surfaces. Existing installs are replaced on every run so they can converge on the latest release.
The installer reports results as installed, updated, reinstalled, repaired, fallback, failed, or skipped. A missing CLI keeps the shared MCP connection at ~/.gemini/config/mcp_config.json working and reports fallback; an existing plugin is never treated as a skip. In a CLI-only profile, verified native plugin MCP replaces the shared direct WEPPY entry. When Antigravity IDE and CLI coexist, both plugin views stay skill-only and one shared direct weppy-roblox-mcp definition serves both. Outside the verified OS and version matrix, native discovery uses the MCP fallback.
On Windows Antigravity, CLI installation has been verified to expose skills and MCP. Windows Antigravity IDE plugin discovery is unverified because the verified environment has no plugin or skills inspection UI, so the shared MCP fallback is preserved. GitHub URLs are not passed directly to agy plugin install; the installer downloads the latest public release and installs from a prepared local path.
Compatibility
Claude Code | Claude Desktop | Cursor | Codex CLI | Gemini CLI | Antigravity / Antigravity IDE / Antigravity CLI |
✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Requirements: Node.js 18+, Roblox Studio, Windows 10+ or macOS 12+
What It Does
1) MCP Tools: Direct execution in Studio from natural language
AI can directly handle scripts, instances, properties, terrain, lighting, assets, audio, and animation inside Studio.
"Add particles + sound + cooldown when the player jumps."
"Build a boss arena at map center and place collision-safe spawn points."
"Change this module interface and update every dependent script."
"Generate terrain with mountains and rivers, then place spawn points on flat areas."
"Search the Creator Store for a sword model and insert it into StarterPack."
2) Multi-Place work: Split one request across several Studio windows
Many Roblox experiences are not a single Place. WEPPY lets you keep up to five Studio windows connected to one MCP server, then route work by Studio ID.
Open up to five Roblox Studio windows, such as Lobby, Game, Shop, or Tutorial
Ask once: "In studio-1, add the event portal to Lobby. In studio-2, add the arrival point and guide UI to Game."
Use Dashboard Connection to see every AI agent, Studio Target, copyable Studio ID, and routing state
Work with the multi-Studio flow also documented by Roblox's official Studio MCP guide, with WEPPY's dashboard visibility on top

3) Assets: Generate, upload, and apply images in Studio
WEPPY Assets turns a natural-language asset request into a Studio-ready result.
"Create a gem icon for the shop button, upload it to Roblox, then apply it to the ShopButton image in the Lobby Place."
Save generated images, Decals, and RBXM files to the local Asset Library
Upload images through Roblox Open Cloud and reuse place-specific or shared assets
Apply the returned asset URI to ImageLabel, Decal, Texture, or other Studio properties

4) Sync: Keep full project context stable for AI
AI works from a synchronized local mirror, so multi-file updates stay consistent.
Sync starts Off on first use. Start on connection is also Off. Saved settings always take precedence, including a saved Off value. The first-use workflow is Studio First, so the first synchronization treats Studio as the source.
Choose Studio First, Bidirectional Review, Local Code, Studio World, or Custom. Custom groups changes into four semantic scopes: Script Source, Properties, Structure, and Service Properties.
Content Changes and Structure Changes application modes are shown separately from scope direction. Local file deletion does not delete a Studio instance by default; applying a deletion to Studio requires an additional opt-in and is separate from UI Studio history cleanup.
Basic uses Studio-to-local Sync. Pro adds the richer workflow directions, history, and support for up to five Places.
The WEPPY MCP Server and WEPPY Roblox Studio Plugin must come from the same release. Update both together, then restart Roblox Studio before reconnecting if their versions do not match.

5) Luau Syntax Validation: Catch broken scripts before Playtest
AI can check raw Luau source or an existing Script for syntax errors without starting the game. Standalone validation is available on Basic and Pro.
Ask the AI to validate source or a Script path to receive all syntax diagnostics in one response
Turn on Controls → Luau Syntax Validation to check the actual saved source after supported script writes; the default is Off
The Dashboard setting is enforced. If a tool call requests a different
validatevalue, the write follows the Dashboard policy and returns a warning with the setting pathAutomatic valid checks keep the normal write response unchanged. Invalid or unavailable checks add details, while an explicit matching
validate=truealso returns full valid detailsA syntax error or unavailable parser never rolls back a successful script write
The first validation that needs the companion parser downloads the exact luau-parser-v1.0.0 WASM release and caches it locally. A compatible local luau-compile can be used as a fallback. Script source is parsed on your computer and is not sent to a remote validation service; the download request fetches only the parser artifact. Very large scripts can add some readback and parsing time.
6) Playtest: Let AI run and verify tests automatically
Ordinary runtime checks use a structured Play session. AI can wait for game UI, inspect its semantic structure and geometry, deliver virtual input, observe the UI response, and verify the resulting server state in separate evidence steps. The local Dashboard groups the saved result by server, client UI, interaction, and visual evidence so you can review what passed and why.
"Start a Playtest, press the Start button, and verify the round begins on the server."
"Check that the HUD appears and the selected card activates after input."
"Validate that the script I just changed runs without errors in Playtest."
Run mode is reserved for an explicitly requested server-only check. Raw Luau remains available as an advanced explicit opt-in for diagnostics that do not fit the structured steps. Play-mode screenshot capture is not supported; UI structure, geometry, input delivery, activation, and server observations are recorded instead. Reports stay local, existing Raw Luau reports remain readable, and no setting change is required.

7) UI Studio: Build and inspect in-game UI
UI Studio lets AI agents create in-game UI that matches your game's style, or analyze the UI you already have and suggest improvements.
Clarify the UI goal with guided questions about purpose, screen, target devices, and visual direction
Create or refine game-style menus, HUDs, buttons, labels, image panels, and other Roblox UI elements directly in Studio
Capture the result, compare before/after changes, and follow dashboard suggestions for layout, readability, touch targets, and safe areas

8) WEPPY Dashboard: Monitor AI work in real time
The MCP server provides a web dashboard where you can check connection status, tool execution history, sync state, UI Studio history, and game change logs in real time.
Connection topology for AI agents, the MCP server, and connected Roblox Studio windows
Studio Targets with copyable Studio IDs, Priority/Pinned badges, and a link to routing controls
Multi-agent and multi-Studio workflows: keep several agents and up to five Studio windows visible, then tell the agent which Studio ID to use
Assets page for local library items, shared assets, and Roblox upload status
Controls page for enforcing post-write Luau syntax validation, including clear On and Off behavior
Compare every change the AI made via Before & After in Changelog
Analyze workflow with tool execution history, UI Studio captures, and statistics

9) WEPPY Roblox Explorer: Browse Studio hierarchy in VSCode
View the full instance tree of your Roblox Studio place directly inside VSCode. Navigate services, open synced scripts and property files, and track sync status - all without switching to Studio. WEPPY Roblox Explorer is a companion VSCode extension for sync data generated by WEPPY. Tree browsing works from synced files, and live sync state or direction indicators are enhanced when the local MCP server is running. Install from VS Code Marketplace or Open VSX.
Class icons matching Studio for instant recognition
Click to open synced scripts and property files
Multi-place support with sync status indicators for up to five Places

Use Cases
Rapid prototyping: Describe a game mechanic in natural language and watch AI build it in Studio
Multi-Place production: Keep Lobby and Game open in separate Studio windows and update both from one request
Bulk refactoring: Rename a module interface and update every dependent script in one request
Terrain & environment: Generate procedural terrain, set lighting/atmosphere, place assets - all from a single prompt
UI design: Generate in-game UI, capture previews, and iterate on Design Check suggestions
Multi-file consistency: AI reads the full project via Sync and applies changes across related scripts together
Generated asset integration: Create an icon or decal, upload it to Roblox, apply it to a UI or Decal property, and keep the asset for reuse
Why It Matters
Compress repetitive work: turn many manual edits into one request
Work across up to five Places without re-explaining context or copying changes between Studio windows
Turn generated images into applied Roblox assets without manually moving files and asset IDs
Change related files together: not just one target file
Lower risk: rely on sync state and history before applying changes
Better token efficiency (Pro): reduce round trips with bulk actions
Docs
Detailed guides and app-specific setup now live on the web.
For app setup details, open the web docs hub and choose the relevant AI client guide.
Privacy & Telemetry
WEPPY uses Google Analytics 4 Measurement Protocol telemetry and a best-effort anonymous operations device observation to understand product usage, reliability, platform coverage, and feature adoption. Telemetry can be disabled by setting ENABLE_TELEMETRY=false or ENABLE_TELEMETRY=0 in the MCP server environment.
WEPPY does not collect your name, email address, raw license key, local file paths, script source, or Roblox project contents through telemetry.
See PRIVACY.md for the full telemetry notice.
FAQ
How do I connect Claude Code to Roblox Studio?
Install from the web install page to register the WEPPY MCP Server and install the WEPPY Roblox Studio Plugin. You can also add the WEPPY AI Agent Plugin for Claude Code with the commands above. Its MCP command remains npx -y @weppy/roblox-mcp@latest.
How do I use Codex CLI with Roblox Studio?
Install the WEPPY Roblox Studio Plugin, then add the WEPPY MCP Server config to Codex CLI. You can also add the Codex plugin marketplace and install WEPPY AI Agent Plugin from Plugin Directory.
Does Roblox MCP work with Cursor?
Yes. Any MCP-compatible AI client works.
Can AI build Roblox games with this?
Yes. AI can create instances, write scripts, generate terrain, set up lighting, insert assets, configure physics, and more - all inside a live Roblox Studio session. It goes beyond code generation to executable actions.
What is the difference between Basic and Pro?
Basic (Free) includes MCP tool execution and one-way sync (Studio -> Local). Pro adds multi-place work across up to five Places, Asset Library with Roblox upload, bidirectional sync, UI Studio, bulk operations, terrain generation, spatial analysis, and audio/animation control. See the Pro upgrade page.
How is Weppy different from other Roblox MCP servers?
Weppy uses action-based dispatching instead of separate tools for each function. This reduces AI token consumption significantly. It also combines Studio ID based multi-place work, generated asset upload/apply, bidirectional project sync, and Playtest control.
Is it safe? Can AI break my game?
The server runs on localhost only (127.0.0.1:3002). Forbidden paths (CoreGui, CorePackages) are blocked. Rate limiting (450 req/min) and 30-second timeouts prevent runaway operations. All changes are trackable via sync history.
Pro Upgrade
Multi-Place work, generated assets to Roblox, bidirectional Sync, UI Studio, Playtest control, and AI token efficiency - all in one upgrade.
License
This repository is licensed under AGPL-3.0.
Commercial licensing is available separately. See COMMERCIAL-LICENSE.md.
Use of the Weppy name and logos is governed by TRADEMARKS.md.
Available Tools
23 toolsbatch_executeA
[PRO] Execute multiple commands in a single batch. Each command is an object with "tool" name and "args". Commands execute sequentially; optionally continue on error.
| Name | Required | Description | Default |
|---|---|---|---|
| commands | Yes | Array of commands to execute sequentially. Each command specifies a tool name and its arguments. | |
| stopOnError | No | If true, stop executing remaining commands when one fails. Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses sequential execution and optional stop-on-error, but lacks details on side effects, error handling, atomicity, or response format.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no fluff, front-loading the purpose and structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately describes the core functionality but misses details like maximum batch size, response format, and whether execution is transactional. For a batch tool, more completeness about limits and rollback behavior would improve usability.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. The description adds context about execution order and error behavior, but the schema already documents parameters sufficiently.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Execute' and the resource 'multiple commands in a single batch', and distinguishes from siblings like execute_luau which executes a single script.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for batch execution but does not explicitly state when to use this tool versus alternatives, nor does it provide exclusions or prerequisites. The [PRO] label is undefined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
execute_luauA
[PRO] Execute arbitrary Luau code in Roblox Studio sandbox. Blocked services: HttpService, DataStoreService, MessagingService. Cannot access CoreGui/CorePackages.
| Name | Required | Description | Default |
|---|---|---|---|
| contextId | No | Optional execution context identifier. Used to continue an existing context for mutating actions. | |
| contextSummary | No | Optional structured execution context attached to this tool call. | |
| replayMetadata | No | Optional replay-ready metadata attached to this tool call. | |
| source | Yes | Luau source code to execute. The code runs in a sandboxed environment with access to game services (except blocked ones). Return values are serialized and sent back as the tool result. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the sandbox environment, lists blocked services, and notes restrictions on CoreGui/CorePackages. However, it doesn't explicitly describe potential mutability or destructiveness, which is inherent but should be stated for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the purpose. Every phrase (PRO tag, execution capability, sandbox, restrictions) is necessary and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (arbitrary code execution) and the lack of an output schema, the description is fairly complete. It covers the sandbox, blocked services, and return serialization. However, it could mention that this is for one-off execution or that it assumes developer privileges.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by mentioning the sandbox and serialized returns, but it does not provide additional parameter-specific meaning beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Execute arbitrary Luau code in Roblox Studio sandbox,' which is a specific verb-resource combination. The mention of blocked services and restricted access distinguishes it from sibling tools like batch_execute and specialized utilities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides implicit guidance through its list of blocked services and restrictions, but does not explicitly state when to use this tool versus alternatives like batch_execute. No comparison or exclusion criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_animationB
[PRO] Animation: load, play, stop animations. Get animation tracks from humanoid/controller.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | [PRO] Animation action. load: load an animation on a Humanoid/AnimationController. play: play a loaded animation track. stop: stop a playing animation. get_tracks: list all loaded animation tracks. | |
| contextId | No | Optional execution context identifier. Used to continue an existing context for mutating actions. | |
| contextSummary | No | Optional structured execution context attached to this tool call. | |
| replayMetadata | No | Optional replay-ready metadata attached to this tool call. | |
| path | No | Path to the Humanoid, AnimationController, or Model containing one. Used by: load, play, stop, get_tracks. | |
| animationId | No | Roblox animation asset ID (e.g., "rbxassetid://1234567"). Used by: load. | |
| trackId | No | Animation track identifier returned by load. Used by: play (required), stop (required). | |
| speed | No | Playback speed multiplier. Used by: play. Default: 1. | |
| fadeTime | No | Fade time in seconds when starting/stopping. Used by: play, stop. Default: 0.1. | |
| weight | No | Animation weight (0-1) for blending. Used by: play. Default: 1. | |
| priority | No | Animation priority. Used by: play. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only lists actions without mentioning side effects, permissions, error conditions, or whether operations are destructive. For a tool that loads and plays animations, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently lists key actions. It is front-loaded with '[PRO]' and the word 'Animation'. While slightly minimal, it contains no unnecessary words and is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 11 parameters, nested objects, and no output schema, the description is too brief. It omits return values, error handling, prerequisites (e.g., a valid Humanoid), and behavioral context. Users cannot assess completeness without inspecting schema further.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed descriptions for each parameter. The tool description adds no extra meaning beyond the schema. According to guidelines, baseline 3 is appropriate when schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: load, play, stop animations, and get animation tracks. It explicitly lists the main actions and the target (humanoid/controller), effectively distinguishing it from sibling tools like manage_audio or manage_camera.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. However, sibling tools cover distinct domains, so the usage context is implied. The description lacks guidance on choosing between actions, but the input schema's detailed action descriptions compensate partially.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_assetsB
[PRO] Asset management: insert models by ID, get asset info, search creator store, insert free models/packages, export selection.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | [PRO] Asset action. insert: insert model by asset ID. info: get asset metadata. search: search Creator Store. search_insert: search and insert first match. insert_free: insert free model. insert_package: insert package. export: export current selection. | |
| contextId | No | Optional execution context identifier. Used to continue an existing context for mutating actions. | |
| contextSummary | No | Optional structured execution context attached to this tool call. | |
| replayMetadata | No | Optional replay-ready metadata attached to this tool call. | |
| assetId | No | Roblox asset ID. Used by: insert (required), info (required), insert_free (required), insert_package (required). | |
| parent | No | Parent path for inserted asset. Used by: insert, search_insert, insert_free, insert_package. Default: "game.Workspace". | |
| name | No | Optional name for inserted instance. | |
| position | No | Position to place the model. Used by: insert, insert_free. | |
| query | No | Search keyword. Used by: search (required), search_insert (required). E.g., "monster", "tree", "car". | |
| maxResults | No | Maximum search results. Used by: search. Default: 10. | |
| category | No | Asset category filter. Used by: search. | |
| sortType | No | Sort order for search results. Used by: search. | |
| format | No | Export format. Used by: export. | |
| includeProperties | No | Include all properties in export. Used by: export. Default: false. | |
| includeChildren | No | Include children in export. Used by: export. Default: false. | |
| maxDepth | No | Maximum depth for recursive child export. Used by: export. Default: 5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It does not disclose behavioral traits such as side effects (e.g., mutating state), permission requirements, or idempotence. Actions like insert and export have different impacts but are not described.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently lists the available actions. It is concise and front-loaded with purpose, though it could benefit from structuring actions into groups for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (16 parameters, multiple actions with different requirements), the description is insufficient. It does not explain the overall workflow, when to use each action, or how actions relate to each other. The schema covers parameter details but lacks a high-level narrative.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema provides detailed parameter descriptions. The tool description adds no additional meaning beyond what the schema already offers, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description lists specific actions (insert, info, search, search_insert, insert_free, insert_package, export) that clearly define what the tool does with assets. It distinguishes from sibling tools by specifying asset management.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs. alternatives or when not to use it. The description implies asset-related operations but provides no exclusion criteria or context for choosing this tool over siblings like manage_audio or manage_animation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_audioA
[PRO] Audio management: play, stop, pause, resume sounds. Set audio listener.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | [PRO] Audio action. play: play a sound (creates Sound if needed). stop: stop a playing sound. pause: pause a playing sound. resume: resume a paused sound. set_listener: set the audio listener type/target. | |
| contextId | No | Optional execution context identifier. Used to continue an existing context for mutating actions. | |
| contextSummary | No | Optional structured execution context attached to this tool call. | |
| replayMetadata | No | Optional replay-ready metadata attached to this tool call. | |
| path | No | Path to the Sound instance or parent to create Sound in. Used by: play, stop, pause, resume. | |
| soundId | No | Roblox sound asset ID (e.g., "rbxassetid://1234567"). Used by: play (if creating a new Sound). | |
| volume | No | Sound volume (0-10). Used by: play. Default: 0.5. | |
| looped | No | Whether the sound loops. Used by: play. Default: false. | |
| playbackSpeed | No | Playback speed multiplier. Used by: play. Default: 1. | |
| listenerType | No | Listener type for SoundService. Used by: set_listener. | |
| listenerPath | No | Instance path for ObjectPosition/ObjectCFrame listener type. Used by: set_listener. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It only lists actions without mentioning side effects (e.g., creation of Sound instances), permissions required, or return values. The schema does provide some detail in action descriptions, but the description itself lacks transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately communicates the tool's purpose and main actions. It is concise and front-loaded, with no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (11 parameters, no output schema, no annotations), the description is minimal but the rich schema compensates by detailing parameter usage. However, it does not explain return values, preconditions, or overall behavior in a narrative, making it just adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for each parameter, including which actions they apply to. The description does not add additional meaning beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The tool name 'manage_audio' clearly indicates the domain, and the description lists the specific actions: play, stop, pause, resume, set_listener. This provides a specific verb-resource relationship and distinguishes it from sibling tools like manage_animation or manage_camera.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is provided on when to use this tool vs alternatives, beyond the implicit domain of audio control. The description does not mention common pitfalls or prerequisites, so usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_cameraA
Camera operations: get info, focus on instance/position, suggest view, capture Edit-mode viewport screenshot (Edit mode only; not usable during playtest).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Camera action. info: get current camera position, rotation, FOV, viewport size. focus_path: move camera to focus on instance by path. focus_position: move camera to focus on world position. suggest: get suggested camera view for a target. [PRO] screenshot: **EDIT MODE ONLY — DO NOT call while a playtest is active.** Captures the current Studio Edit-mode viewport as a PNG image (returns MCP image content). If you are uncertain whether a playtest is running, call system_info.play_status first and only proceed when state == "edit"; otherwise the call returns an error. Requires "Allow Mesh / Image APIs" Studio setting (Game Settings > Security). Resolution capped by plugin setting screenshotMaxDimension (default 1024px on longest side; kept at full resolution by Claude while reducing token cost ~40% vs 1280). Play-mode capture is not supported in v1 because Roblox platform blocks converting CaptureService temporary contentId into EditableImage from any non-edit-DM context. | |
| path | No | Instance path to focus on. Used by: focus_path (if not provided, focuses on selection), suggest (if not provided, uses selection). | |
| position | No | World position to focus on as Vector3. Used by: focus_position (required). | |
| distance | No | Distance from target in studs. Used by: focus_path, focus_position. Auto-calculated if not provided. | |
| duration | No | Animation duration in seconds. Used by: focus_path, focus_position. Default: 0.5. | |
| offset | No | Camera offset direction from target (normalized and scaled by distance). Used by: focus_path, focus_position. Default: {x:1, y:0.5, z:1}. | |
| lookAt | No | Point for camera to look at. Used by: focus_position. | |
| respectAutoFocusSetting | No | If true, only focus when plugin Auto Focus setting is enabled. Used by: focus_path, focus_position. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses critical constraints (Edit mode only, screenshot not usable during playtest), explains resolution limits and plugin settings, and notes default behaviors for parameters like distance and offset. It does not describe all possible errors but covers major behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph that front-loads the main purpose and then adds necessary details. Every sentence adds value: listing actions, restricting scope, and clarifying screenshot behavior. No redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with no output schema and no annotations, the description covers purpose, parameter usage, constraints, and behavioral notes adequately. It explains the screenshot restriction thoroughly and provides default behaviors. Minor gaps: no description of return values for info/suggest actions, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% coverage with descriptions for each parameter. The description adds value beyond the schema by providing auto-calculation hints, default values (duration 0.5, offset {1,0.5,1}), and usage context (e.g., which action uses which parameter). This goes beyond baseline 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Camera operations' and lists five specific actions (info, focus_path, focus_position, suggest, screenshot) with clear verbs. It distinguishes itself from sibling tools by focusing solely on camera management, which is a distinct resource.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly states when to use the tool (Edit mode only, not during playtest) and provides explicit guidance for the screenshot action, including a precondition check using system_info.play_status. It also mentions required settings for screenshot. However, it does not compare directly to siblings, though siblings cover different domains, so this is minor.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_effectsB
[PRO] Particle effects: emit particles, clear all particles, toggle effect enabled state.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | [PRO] Effects action. emit: emit a burst of particles from a ParticleEmitter. clear: clear all particles from a ParticleEmitter or all emitters under an instance. toggle: enable or disable a ParticleEmitter, Beam, Trail, or other effect. | |
| contextId | No | Optional execution context identifier. Used to continue an existing context for mutating actions. | |
| contextSummary | No | Optional structured execution context attached to this tool call. | |
| replayMetadata | No | Optional replay-ready metadata attached to this tool call. | |
| path | No | Path to the effect instance (ParticleEmitter, Beam, Trail) or parent containing effects. Used by: emit, clear, toggle. | |
| count | No | Number of particles to emit in a burst. Used by: emit. Default: 16. | |
| enabled | No | Enable or disable the effect. Used by: toggle. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only lists actions without explaining side effects, persistence, permissions, or limitations beyond basic functionality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence. It is front-loaded with '[PRO]' but remains concise. Could be slightly more structured but overall clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite 7 parameters and nested objects, the description is minimal. It does not explain return values, relationships between parameters, or behavior in edge cases. The schema helps but the description lacks depth.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so each parameter has a description. The description adds a brief grouping of actions but does not provide additional meaning beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages particle effects with three actions: emit, clear, toggle. It distinguishes from sibling tools like manage_audio or manage_lighting, which cover other domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the domain (particle effects) but no explicit guidance on when to use this tool versus alternatives or when not to use it. No exclusion criteria mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_lightingC
[PRO] Configure environment: lighting, atmosphere, sky, terrain properties, time of day.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | [PRO] Environment action. lighting: set Lighting service properties. atmosphere: set Atmosphere properties. sky: set Sky properties. terrain_props: set Terrain water/visual properties. time: set time of day. | |
| contextId | No | Optional execution context identifier. Used to continue an existing context for mutating actions. | |
| contextSummary | No | Optional structured execution context attached to this tool call. | |
| replayMetadata | No | Optional replay-ready metadata attached to this tool call. | |
| properties | No | Dictionary of properties to set. Used by: lighting, atmosphere, sky, terrain_props. Supports Color3 {r,g,b} (0-255), numbers, booleans, Enum strings. | |
| createIfMissing | No | Create Atmosphere/Sky instance if missing. Used by: atmosphere, sky. Default: true. | |
| time | No | Time string in "HH:MM:SS" format (e.g., "14:30:00"). Used by: time. Provide this OR clockTime. | |
| clockTime | No | Numeric time in 24-hour format (e.g., 14.5 for 2:30 PM). Used by: time. Provide this OR time. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. The description does not disclose effects, side effects, or safety profile. For a configuration tool, information about mutation or persistence is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with '[PRO]'. Concise but could integrate sibling differentiation. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, nested objects, no output schema, and no annotations, the description lacks behavioral context, return values, and usage patterns. Schema partially compensates but is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The tool description adds minimal value (e.g., '[PRO]' prefix). Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool configures environment elements (lighting, atmosphere, sky, terrain, time). The action enum further specifies sub-actions. However, it does not distinguish from sibling tools like manage_terrain or manage_properties.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives (e.g., manage_terrain for terrain, manage_properties for generic property changes). No prerequisites or exclusions mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_logsA
Output logs: get filtered logs, poll incrementally with sinceSeq cursor, clear buffer, get recent errors.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Log action. get: retrieve logs with optional level/limit/since/sinceSeq filters. clear: clear internal log buffer without resetting seq. errors: quick access to recent errors only. | |
| level | No | Log level filter. Used by: get. Default: "all". | |
| limit | No | Maximum entries to return. Used by: get (default: 100, max: 500), errors (default: 20, max: 100). | |
| pattern | No | Text pattern to filter log messages. Used by: get. | |
| since | No | Unix timestamp in milliseconds. Only logs after this time. Used by: get. | |
| sinceSeq | No | Return only logs after this sequence number. Cursor mode returns logs oldest-to-newest and includes lastSeq/oldestSeq/hasMore/cursorStatus. Used by: get. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full transparency burden. It discloses key behaviors: clear does not reset sequence numbers, cursor mode returns logs oldest-to-newest with metadata. However, it omits whether clear is destructive or irreversible, and doesn't specify return values.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core purpose ('Output logs') and enumerates capabilities compactly. While not bulleted, it is clear and avoids redundancy. Could be slightly improved with structured formatting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and six parameters, the description explains actions and cursor behavior but lacks details on return values (e.g., what 'clear' returns, error handling). This leaves gaps for agents needing full response context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by grouping parameters per action (e.g., level, limit, pattern for 'get') and specifying default limits (100 for get, 20 for errors). This context helps agents set appropriate values beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for outputting logs and lists three distinct actions (get, clear, errors) with specific capabilities like filtered retrieval and cursor-based polling. This distinguishes it from sibling tools like manage_animation or manage_assets, which handle different domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use each action (e.g., 'get' for retrieval, 'clear' for buffer clearing), but provides no explicit guidance on when not to use this tool or alternatives. No mention of prerequisites or comparative usage with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_physicsB
[PRO] Physics collision groups: register, set collidable between groups, list groups.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | [PRO] Physics action. register_group: register a new collision group with PhysicsService. set_collidable: set whether two groups can collide. get_groups: list all registered collision groups. | |
| contextId | No | Optional execution context identifier. Used to continue an existing context for mutating actions. | |
| contextSummary | No | Optional structured execution context attached to this tool call. | |
| replayMetadata | No | Optional replay-ready metadata attached to this tool call. | |
| groupName | No | Collision group name. Used by: register_group (required). | |
| group1 | No | First collision group name. Used by: set_collidable (required). | |
| group2 | No | Second collision group name. Used by: set_collidable (required). | |
| collidable | No | Whether the two groups can collide. Used by: set_collidable (required). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as whether actions are destructive, require permissions, or have side effects. The agent gets no insight into the tool's impact.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the purpose. However, given the tool's complexity (multiple actions and many parameters), it could be slightly more structured without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is insufficient for a tool with three distinct actions and many optional parameters. It does not explain the context and replay parameters, nor does it describe return values (no output schema). Missing guidance on action usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents parameters. The description adds minimal value beyond listing the actions, which the schema also describes. No additional semantic context is given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it manages physics collision groups with three specific actions: register, set collidable, and list groups. This distinguishes it from sibling tools like manage_animation or manage_audio, which handle different domains.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives, no prerequisites or exclusions. The description does not help an agent decide when to invoke this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_propertiesA
Get/set properties, attributes, and tags on instances. [PRO] set_calculated, set_relative, mass_set, mass_get, modify_children.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Property action. Basic: get, set, get_all, set_multiple, get_attr, set_attr, get_all_attrs, delete_attr, add_tag, remove_tag, check_tag, get_tags, get_tagged. [PRO]: set_calculated, set_relative, mass_set, mass_get, modify_children. | |
| contextId | No | Optional execution context identifier. Used to continue an existing context for mutating actions. | |
| contextSummary | No | Optional structured execution context attached to this tool call. | |
| replayMetadata | No | Optional replay-ready metadata attached to this tool call. | |
| path | No | Instance path. Used by: get, set, get_all, set_multiple, get_attr, set_attr, get_all_attrs, delete_attr, add_tag, remove_tag, check_tag, get_tags, set_calculated, set_relative. | |
| property | No | Property name (e.g., "Size", "Position", "Anchored"). Used by: get, set. | |
| value | No | Value to set. Supports primitives, Vector3 {x,y,z}, Color3 {r,g,b} (0-255), CFrame (12-number array), UDim2 {xScale,xOffset,yScale,yOffset}, Enum strings. Used by: set, set_attr, set_relative. | |
| properties | No | Dictionary of property names to values. Used by: set_multiple. | |
| attribute | No | Attribute name. Used by: get_attr, set_attr, delete_attr. | |
| tag | No | Tag string (case-sensitive). Used by: add_tag, remove_tag, check_tag. | |
| tagName | No | Tag to search for. Used by: get_tagged. | |
| root | No | Root path to filter get_tagged results. Used by: get_tagged. | |
| maxResults | No | Maximum results for get_tagged. Default: 100. | |
| expression | No | [PRO] Mathematical expression to evaluate. Used by: set_calculated. Example: "baseValue * multiplier". | |
| variables | No | [PRO] Variable name to value/path mapping. Used by: set_calculated. Example: {"baseValue": "workspace.Config.BaseValue", "multiplier": 2}. | |
| operation | No | [PRO] Mathematical operation for relative property change. Used by: set_relative. | |
| amount | No | [PRO] Value for relative operation. Can be number, Vector3, etc. Used by: set_relative. Alias for value in set_relative context. | |
| paths | No | [PRO] Array of instance paths for bulk operations. Used by: mass_set, mass_get. | |
| parentPath | No | [PRO] Parent path whose children will be modified. Used by: modify_children. | |
| modifications | No | [PRO] Properties to set on children. Used by: modify_children. Contains propertyName, propertyValue, filter, recursive. | |
| propertyName | No | [PRO] Property name for mass operations or set_calculated/set_relative. Used by: mass_set, mass_get, set_calculated, set_relative, modify_children. | |
| propertyValue | No | [PRO] Property value for mass_set and modify_children. | |
| filter | No | [PRO] Class name filter for modify_children. | |
| recursive | No | [PRO] Modify all descendants, not just immediate children. Used by: modify_children. Default: false. | |
| includeReadOnly | No | Include read-only properties. Used by: get_all. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavioral traits. It only mentions get/set and lists action names, but does not warn about destructive operations like delete_attr, remove_tag, or mass modifications. The description fails to convey side effects or permissions needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: one sentence plus a list of PRO actions. It is front-loaded with the main purpose, and every word earns its place. No redundancy or verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (25 parameters, many actions, no output schema), the description is minimal. It does not explain return values, error handling, usage of contextId, or how to choose between actions. The description is insufficient for an agent to fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions per parameter, so the description adds little extra value beyond listing PRO actions. Baseline score of 3 is appropriate as the description does not significantly enhance understanding of parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it manages properties, attributes, and tags on instances, specifying actions like get/set and listing PRO features. This distinguishes it from sibling tools focused on other domains (e.g., animation, audio).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description divides actions into basic and PRO, implying usage tiers, but does not explicitly state when to use this tool versus alternatives like mutate_instances. The context is clear for an experienced agent, but lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_scriptsB
Manage script source code: read, write, create, delete, edit lines, search. [PRO] replace across scripts.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Script action. Basic: get_source, set_source, create, delete, edit_replace, edit_insert, edit_delete, search, get_dependencies. [PRO]: replace. | |
| contextId | No | Optional execution context identifier. Used to continue an existing context for mutating actions. | |
| contextSummary | No | Optional structured execution context attached to this tool call. | |
| replayMetadata | No | Optional replay-ready metadata attached to this tool call. | |
| path | No | Path to the script instance. Used by: get_source, set_source, delete, edit_replace, edit_insert, edit_delete, search, get_dependencies, replace. | |
| source | No | Script source code. Used by: set_source (required), create (optional initial source). | |
| scriptType | No | Type of script to create. Used by: create. | |
| parent | No | Parent path for new script. Used by: create. | |
| name | No | Name for new script. Used by: create. | |
| startLine | No | Starting line number, 1-based inclusive. Used by: edit_replace, edit_delete. | |
| endLine | No | Ending line number, 1-based inclusive. Used by: edit_replace, edit_delete. | |
| newLines | No | New content to replace specified lines. Used by: edit_replace. Can be multi-line. | |
| lines | No | Content to insert after afterLine. Used by: edit_insert. Can be multi-line. Alias for content. | |
| afterLine | No | Line number after which to insert. Used by: edit_insert. Use 0 to insert at beginning. | |
| content | No | Content to insert. Used by: edit_insert. Can be multi-line. | |
| pattern | No | Search pattern (plain text or Lua pattern). Used by: search, replace. | |
| replacement | No | [PRO] Replacement text. Used by: replace. | |
| caseSensitive | No | Case-sensitive search. Used by: search. Default: false. | |
| wholeWord | No | Match whole words only. Used by: search. Default: false. | |
| usePattern | No | Treat pattern as Lua pattern instead of plain text. Used by: search, replace. Default: false. | |
| dryRun | No | [PRO] Show what would be replaced without making changes. Used by: replace. Default: false. | |
| maxResults | No | Maximum results to return. Used by: search. Default: 100. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden for behavioral disclosure. It lists actions but does not mention side effects, destructive potential, or whether changes are reversible. The agent cannot infer safety or mutation scope from the description alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that lists key actions and highlights the PRO feature. Every word adds value, and no extraneous information is present. This is exemplary conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (22 parameters) and lack of output schema, the description is minimal but adequate when combined with the exhaustive schema. It does not explain the dispatcher nature of the action parameter or the structure of results, leaving gaps for an agent to discover via schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 100% schema description coverage, the description adds no extra meaning to parameters. Baseline 3 is appropriate since the schema already documents the purpose of each parameter and ties them to actions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool manages script source code and lists specific actions (read, write, create, delete, etc.), distinguishing it from sibling tools like execute_luau. However, it does not explicitly cover all actions (e.g., get_dependencies) without referencing the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives (e.g., execute_luau for running scripts). The only usage hint is the PRO feature marker, but no context or exclusion criteria are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_selectionB
Get, set, or clear selection. [PRO] context, details, add/remove items, watch changes.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Selection action. Basic: get (current selection), set (replace selection), clear (deselect all), cached (from cache without round-trip). [PRO]: context (detailed with source/properties), details (hierarchical with ancestors/descendants), add (add to selection), remove (remove from selection), watch (monitor changes). | |
| paths | No | Array of instance paths. Used by: set (required), add (required), remove (required). | |
| maxAge | No | Maximum age of cached data in milliseconds. Used by: cached. Default: 30000. Set to 0 for any age. | |
| maxDepth | No | [PRO] Maximum depth for descendant tree traversal. Used by: details. Default: 1. | |
| includeSource | No | [PRO] Include script source code. Used by: context. Default: true. | |
| includeProperties | No | [PRO] Include all readable properties. Used by: context. Default: true. | |
| includeChildren | No | [PRO] Include immediate children. Used by: context. Default: false. | |
| includeAncestors | No | [PRO] Include full ancestor chain. Used by: details. Default: false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry full behavioral transparency. It only lists actions without disclosing side effects, permissions, rate limits, or failure behavior. The agent lacks key context for robust usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, front-loading the core purpose. However, given the tool's complexity (8 parameters, multiple actions), it could be slightly expanded without losing efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the description does not mention return values or behavior for actions like 'get', 'cached', or 'watch'. This leaves a significant gap for the agent to understand what the tool returns.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with detailed descriptions (100% coverage), so the description does not add significant meaning beyond the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool manages selection: 'Get, set, or clear selection.' and lists both basic and PRO actions, distinguishing it from sibling tools like manage_properties or manage_studio.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage (e.g., basic vs PRO actions) but does not explicitly state when to use this tool over alternatives or provide exclusions. No direct guidance on when-not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_studioA
Control Roblox Studio editor view/rendering settings for screenshot and QA workflows. Use it to toggle Studio session-level View settings such as UI preview; it does not edit game UI objects or their properties.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Studio editor action. [PRO]: toggle_ui_preview (toggle StarterGui UI rendering in Edit mode through the Studio UI preview setting). | |
| contextId | No | Optional execution context identifier. Used to continue an existing context for mutating actions. | |
| contextSummary | No | Optional structured execution context attached to this tool call. | |
| replayMetadata | No | Optional replay-ready metadata attached to this tool call. | |
| enabled | No | Boolean value to set. Omit to toggle the current value. Used by: toggle_ui_preview (optional). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It describes toggling UI preview and the scope, but does not mention side effects, permissions, or whether the change is persistent or session-only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two well-structured sentences with no waste. Front-loaded with the core purpose and a crucial limitation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and full schema coverage, the description adequately covers the tool's functionality and constraints. No output schema exists, but the return value is not critical for a control action; a minor improvement would be to mention the expected output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with clear parameter descriptions. The tool description adds no additional meaning beyond what the schema provides for parameters, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it controls Studio editor view/rendering settings for screenshot and QA workflows, and explicitly distinguishes from editing game UI objects, which helps differentiate from the sibling manage_ui tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states when to use (for Studio session-level View settings like UI preview) and when not (does not edit game UI objects), but does not explicitly name alternative tools or provide exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_syncC
[PRO] Project sync management: status, history, direction settings, read/write synced files.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | [PRO] Sync action. status_current_place: get sync status for the current connected place. history: get change history. directions: get per-type sync directions. read_file: read a synced file. write_file: write to a synced file. progress: get real-time sync progress and bandwidth. | |
| placeId | No | Place ID for sync operations. Used by: history, directions, read_file, write_file. | |
| instancePath | No | Instance path for file read/write. Used by: read_file, write_file. | |
| content | No | File content to write. Used by: write_file. | |
| query | No | Query parameters for history. Used by: history. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as side effects, authentication requirements, rate limits, or what happens during read/write operations. It only outlines basic functionality without deeper context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise, consisting of a single sentence. However, it lacks structure: it is not front-loaded, and the colon-separated list could be clearer. It is minimally acceptable but not well organized for quick scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite high schema coverage, the tool is complex with multiple actions, a nested query object, and no output schema. The description does not explain return values, action-specific details, or required parameters (e.g., placeId for certain actions). It is incomplete for a tool of this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the input schema already documents all parameters. The description summarizes the actions but adds little new meaning beyond the schema. Baseline of 3 is appropriate as the description does not significantly enhance parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies that the tool manages project sync, listing key actions (status, history, direction settings, read/write synced files). It distinguishes from sibling tools (e.g., manage_animation) by focusing on sync functionality. However, it does not explicitly differentiate from siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, context, or when not to use it. Sibling tools exist for different domains, but no explicit usage guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_terrainC
[PRO] Terrain operations: fill shapes, clear regions, replace materials, manage colors, read/write voxels, generate procedural terrain, smooth terrain.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | [PRO] Terrain action. fill_block/fill_ball/fill_cylinder/fill_wedge: fill shapes with material. clear_region/clear_bounds: clear terrain. replace_material: swap materials in region. colors_get/colors_set: manage material colors. read_voxel: single voxel. read_voxels/write_voxels: bulk voxels. generate: procedural terrain. smooth: smooth terrain. | |
| contextId | No | Optional execution context identifier. Used to continue an existing context for mutating actions. | |
| contextSummary | No | Optional structured execution context attached to this tool call. | |
| replayMetadata | No | Optional replay-ready metadata attached to this tool call. | |
| material | No | Terrain material name (e.g., Grass, Rock, Water, Sand, Slate, Concrete). Used by: fill_*, replace_material, colors_get, colors_set. | |
| center | No | Center position as Vector3. Used by: fill_ball. | |
| position | No | Position as Vector3. Used by: read_voxel. | |
| cframe | No | Position and rotation for fill shapes. Used by: fill_block, fill_cylinder, fill_wedge. | |
| size | No | Size in studs. Used by: fill_block, fill_wedge. | |
| radius | No | Radius in studs. Used by: fill_ball, fill_cylinder. | |
| height | No | Height in studs. Used by: fill_cylinder. | |
| region | No | Rectangular region with min/max corners. Used by: clear_region, replace_material, read_voxels, write_voxels, generate, smooth. | |
| min | No | Minimum corner for bounds-based clear. Used by: clear_bounds. | |
| max | No | Maximum corner for bounds-based clear. Used by: clear_bounds. | |
| sourceMaterial | No | Material to replace. Used by: replace_material. | |
| targetMaterial | No | Replacement material. Used by: replace_material. | |
| color | No | RGB color (0-255). Used by: colors_set. | |
| resolution | No | Voxel resolution (studs per voxel). Used by: read_voxels, write_voxels. Default: 4. | |
| materials | No | 3D array of material names [x][y][z]. Used by: write_voxels. | |
| occupancy | No | 3D array of occupancy values [x][y][z] (0-1). Used by: write_voxels. | |
| baseHeight | No | Base terrain height in studs. Used by: generate. Default: 32. | |
| amplitude | No | Height variation amplitude in studs. Used by: generate. Default: 24. | |
| frequency | No | Noise frequency (0.001-0.1). Used by: generate. Default: 0.01. | |
| seed | No | Random seed for terrain generation. Used by: generate. | |
| layers | No | Material layers by height. Used by: generate. Each: {material, maxHeight}. | |
| intensity | No | Smoothing intensity (0-1). Used by: smooth. Default: 0.5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It does not mention that some actions are destructive (e.g., clear_region, write_voxels) or that others are read-only (e.g., read_voxel, colors_get). It also does not disclose any permissions, side effects, or constraints. The description only lists operations without behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a clear, list-like structure, front-loading the purpose. It is concise and covers the major capabilities. However, it could be more structured (e.g., separating read and write operations) to improve scannability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high complexity (26 parameters, multiple actions) and no output schema, the description provides a high-level overview but lacks details like which parameters are required for which actions. However, the input schema is very detailed with per-parameter descriptions and usage per action, which compensates. The description alone is not fully complete, but combined with the schema it is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description does not add additional meaning beyond what is already in each parameter's description. It merely categorizes operations but does not provide examples or contextual details that enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this tool handles terrain operations, listing specific categories like fill shapes, clear regions, replace materials, manage colors, read/write voxels, generate procedural terrain, and smooth terrain. It distinguishes itself from sibling tools which cover other domains (animation, assets, audio, etc.). However, the description does not single out a specific verb-resource pair, instead listing many capabilities, which slightly reduces clarity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide any guidance on when to use this tool versus alternatives or when not to use it. It only lists what the tool does, without explicit context or exclusions. While sibling tools are clearly different domains, the absence of usage instructions is a gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_tweenB
[PRO] Tween service: create, play, pause, cancel tweens for smooth animations.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | [PRO] Tween action. create: create a new tween with target properties. play: play a created tween. pause: pause a running tween. cancel: cancel a tween. | |
| contextId | No | Optional execution context identifier. Used to continue an existing context for mutating actions. | |
| contextSummary | No | Optional structured execution context attached to this tool call. | |
| replayMetadata | No | Optional replay-ready metadata attached to this tool call. | |
| path | No | Instance path to tween. Used by: create (required). | |
| tweenInfo | No | Tween configuration. Used by: create. | |
| properties | No | Target property values to tween to. Used by: create. Supports Vector3, Color3, numbers, etc. | |
| tweenId | No | Tween identifier returned by create. Used by: play, pause, cancel. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should disclose behavioral traits like destructiveness, permission requirements, or side effects. It only says 'smooth animations' and lists actions, missing critical context for an AI agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence. It is concise but could be more informative without becoming verbose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 8 parameters, nested objects, and no output schema, the description fails to explain return values (e.g., tweenId from create) or provide sufficient behavioral context for a complex tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are fully documented there. The description adds little beyond summarizing actions, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'manage tween service' and enumerates the specific actions (create, play, pause, cancel). It distinguishes this tool from siblings like manage_animation by focusing on tweens.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as manage_animation or manage_effects. No mention of prerequisites, typical use cases, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_uiA
Create / update / verify Roblox in-game UI (ScreenGui / Frame / TextLabel / …). Always start a new UI task with the design_brief action — it accepts an omitted or partial brief, inspects Studio context, then returns a current-state summary, recommended mode/change scopes, candidate brief patches, and one user-facing confirmation or clarification question. design_brief may return asset recommendation candidates from existing UI images, user references, or conservative manage_assets.search results; do not use a recommended asset until the user accepts it. Do not dump enum lists at the user; map natural language to internal purpose/platform/tone values through recommendations, and only finalize identity-defining fields after the user accepts a recommendation or provides equivalent intent. Read MCP resource weppy://ui-studio/guide for the full guide; it is split into Floor (non-negotiable accessibility), Vocabulary (style menu — pick ONE family per dimension; do not blend everything), Direction (brief → choices), and Tree encoding (Roblox property JSON shapes). Floor essentials suggested by Design Check (check): (1) mobile touch target ≥ 44 px (2) text contrast ≥ 4.5:1 (3) prefer explicit TextSize over TextScaled (4) respect platform safe zones (5) warn on full-screen opaque roots for non-modal purposes. Style is brief-driven; reject the default AI look (uniform 8 px corners + generic blue + glass card + Gotham everywhere) — each game deserves its own visual identity.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | UI action. [PRO]: design_brief, create_tree, update, delete, preview, check. (M2+에서 propose_layout/apply_asset 추가 예정.) | |
| contextId | No | Optional execution context identifier. Used to continue an existing context for mutating actions. | |
| contextSummary | No | Optional structured execution context attached to this tool call. | |
| replayMetadata | No | Optional replay-ready metadata attached to this tool call. | |
| brief | No | 완성 또는 부분 design_brief 구조체. Used by: design_brief (optional; partial allowed). | |
| briefId | No | design_brief 가 반환한 brief 식별자. Used by: create_tree, update, delete (optional). | |
| tree | No | UI 트리 선언형 JSON. 루트는 ScreenGui. 스키마: {className: string, name?: string, parent?: string, properties?: {...}, children?: Tree[]} parent 생략 시 StarterGui. className은 Roblox GUI 계열(ScreenGui/Frame/TextLabel/TextButton/ImageLabel/ImageButton/ScrollingFrame/TextBox/UIListLayout/UIGridLayout/UIPadding/UICorner/UIStroke/UIAspectRatioConstraint/UIGradient/UITextSizeConstraint/UISizeConstraint) 한정. In-game UI 기본 구조(HUD / button / toast / card / 대부분의 menu): ScreenGui > Frame(BackgroundTransparency=1) > 실제 UI 요소. ScreenGui 직속 풀스크린 불투명 Frame 은 modal 용도에만 사용한다. Property 값 인코딩: UDim2는 {xScale, xOffset, yScale, yOffset}, UDim은 {scale, offset}, Color3는 {r, g, b}, Vector2/Vector3는 {x,y}/{x,y,z}, Enum은 item name string을 사용한다. | |
| targetPath | No | Path to existing UI instance. Both `StarterGui.MyGui` and `game.StarterGui.MyGui` are accepted. Used by: update, delete (required). | |
| changes | No | 부분 변경 스펙. {properties?: {...}, addChildren?: Tree[], removeChildren?: [string]} properties는 `Instance:SetPropertyValue` 호환 키·값 쌍. 값 인코딩은 tree 설명의 Property 값 인코딩을 따른다. | |
| includeVisualAnalysis | No | Opt-in only. Used by: check. When true, the server may read a saved preview snapshot PNG + visible GUI metadata and merge AI visual suggestions into check_results. Default false; no screenshot capture is triggered by check. | |
| snapshotId | No | Saved manage_ui.preview snapshot_id to use for visual analysis. Used by: check when includeVisualAnalysis=true. If omitted, the latest compatible saved snapshot is used when available. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral aspects. It discloses behaviors like asset recommendation acceptance and refers to a full guide, but lacks details on reversibility, permissions, or side effects of actions beyond design_brief.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear purpose and packs multiple guidelines. While lengthy, every sentence adds value, avoiding redundancy. It could be slightly more concise without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 11 parameters and nested objects, the description explains the design_brief workflow in detail but leaves gaps for other actions (e.g., check output). No output schema, so more detail on results would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has 100% description coverage, providing baseline 3. The description adds workflow context (e.g., 'Always start with design_brief') but does not significantly enhance parameter meaning beyond the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Create / update / verify Roblox in-game UI (ScreenGui / Frame / TextLabel / …).' It specifies the verb and resource, and distinguishes itself from sibling tools like manage_assets or manage_scripts by focusing on UI elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises to 'Always start a new UI task with the `design_brief` action' and provides guidance on handling enums and references. It offers clear context but does not explicitly state when to avoid this tool in favor of siblings, though the sibling tools are distinct enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mutate_instancesB
Create, delete, clone, move, rename, or pivot instances. [PRO] create_tree, mass_create, mass_delete, mass_duplicate, smart_duplicate.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Mutation action. Basic: create, create_with_props, delete, clone, move, rename, pivot. [PRO]: create_tree, mass_create, mass_delete, mass_duplicate, smart_duplicate. | |
| contextId | No | Optional execution context identifier. Used to continue an existing context for mutating actions. | |
| contextSummary | No | Optional structured execution context attached to this tool call. | |
| replayMetadata | No | Optional replay-ready metadata attached to this tool call. | |
| className | No | Roblox class name (e.g., Part, Script, Folder). Used by: create, create_with_props. | |
| parent | No | Parent path for new instance. Used by: create, create_with_props. | |
| name | No | Name for the instance. Used by: create (optional), create_with_props (required). | |
| properties | No | Properties to set on the instance. Supports Vector3, Color3, CFrame, UDim2, Enum types. Used by: create (optional), create_with_props (required). | |
| path | No | Instance path to operate on. Used by: delete, clone (as sourcePath), move, rename, pivot, smart_duplicate. | |
| sessionDebugId | No | Optional same Studio/plugin session debug identity for verifying a duplicate-named target. Used by: delete, clone, move, rename, pivot, smart_duplicate. | |
| siblingIndex | No | Optional 1-based same-name sibling index fallback for verifying a duplicate-named target. Used by: delete, clone, move, rename, pivot, smart_duplicate. | |
| sourcePath | No | Source instance path to clone from. Used by: clone. Alternative to path. | |
| targetParent | No | Target parent for cloned/duplicated instances. Used by: clone, mass_duplicate, smart_duplicate. | |
| newName | No | New name for instance. Used by: rename (required), clone (optional). | |
| newParent | No | New parent path to move instance to. Used by: move. | |
| position | No | Target position as Vector3 {x, y, z}. Used by: pivot. | |
| cframe | No | Target CFrame as 12-number array [x, y, z, r00, r01, r02, r10, r11, r12, r20, r21, r22]. Used by: pivot. | |
| offset | No | Relative offset to move by (ignores position/cframe). Used by: pivot, smart_duplicate. | |
| tree | No | [PRO] Instance tree specification for hierarchical creation. Used by: create_tree. | |
| instances | No | [PRO] Array of instance specifications for batch creation. Used by: mass_create. Each item: {className, name, parentPath, properties?}. | |
| paths | No | [PRO] Array of instance paths. Used by: mass_delete, mass_duplicate. | |
| count | No | [PRO] Number of copies to create. Used by: smart_duplicate. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of transparency. It mentions destructive actions (delete) but does not disclose side effects, authorization needs, rate limits, or that some actions are irreversible.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two lines, front-loaded with actions). However, it could be slightly more structured to group actions clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high parameter count (22) and multiple actions, the description does not adequately explain the overall tool behavior or how to select among actions. The schema covers details, but the description lacks high-level context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the parameter descriptions in the schema are thorough. The tool description adds no additional meaning beyond listing actions; it does not explain how parameters relate to actions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs multiple mutation actions (create, delete, clone, move, rename, pivot) on instances. It lists specific actions and distinguishes PRO features, making the purpose immediately obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for mutating instances but provides no explicit guidance on when to use it versus alternatives like query_instances. It does not mention exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_instancesB
Query Roblox instances: get, children, find child/descendant, wait for child, class info, search by name/class. [PRO] file_tree, project_structure, descendants, ancestors, search by property/tag.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Query action to perform. Basic: get, children, find_child, find_descendant, wait_for_child, class_info, search_name, search_class. [PRO]: search_property, search_tag, file_tree, project_structure, descendants, ancestors. | |
| path | No | Instance path to query (e.g., "game.Workspace.Part"). Used by: get, children, find_child, find_descendant, wait_for_child, descendants, ancestors. | |
| sessionDebugId | No | Optional same Studio/plugin session debug identity for resolving duplicate-named path targets. Used by: get, children, descendants, ancestors. | |
| siblingIndex | No | Optional 1-based same-name sibling index fallback for resolving duplicate-named path targets. Used by: get, children, descendants, ancestors. | |
| childName | No | Name of the child instance to find. Used by: find_child, wait_for_child. | |
| descendantName | No | Name of the descendant instance to find. Used by: find_descendant. | |
| className | No | Roblox class name. Used by: find_child/find_descendant (optional filter), class_info (required), search_class (required). | |
| recursive | No | If true, returns all descendants instead of just immediate children. Used by: children. Default: false. | |
| maxDepth | No | Maximum depth for recursive traversal. Used by: children (default: 10), file_tree (default: 5). | |
| timeout | No | Maximum time to wait in seconds. Used by: wait_for_child. Default: 5. Maximum: 30. | |
| root | No | Root path to search/scan from. Used by: search_name, search_class, search_property, search_tag, file_tree, project_structure. Default: "game". | |
| query | No | Search pattern for name search (supports * and ? wildcards). Used by: search_name. | |
| propertyName | No | [PRO] Property name to search by. Used by: search_property. | |
| propertyValue | No | [PRO] Property value to match. Used by: search_property. | |
| tag | No | [PRO] Tag string to search by (case-sensitive). Used by: search_tag. | |
| includeServices | No | [PRO] Include Roblox services when root is "game". Used by: file_tree. Default: true. | |
| includeSubclasses | No | Include subclasses in class search (e.g., BasePart finds Part, MeshPart). Used by: search_class. Default: true. | |
| caseSensitive | No | Case-sensitive name search. Used by: search_name. Default: false. | |
| maxResults | No | Maximum results to return. Used by: search_name, search_class, search_property, search_tag, descendants. Default: 100. | |
| depth | No | [PRO] Maximum depth for project structure traversal. Used by: project_structure. Default: 3. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does not disclose behavioral traits such as whether the tool is read-only (though implied), rate limits, authentication needs, or side effects. It only mentions PRO features.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, concise and to the point. It could be better structured (e.g., grouping basic vs PRO actions), but it is not verbose or redundant.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no output schema and 20 parameters, the description does not explain what the tool returns (e.g., instance paths, tables, etc.). This is a significant gap for an agent to understand the tool's full behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds a summary of actions but does not provide additional meaning beyond what each parameter's 'Used by:' note already conveys. It adds marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with 'Query Roblox instances' and lists specific actions like get, children, find child/descendant, etc., clearly indicating the verb and resource. It distinguishes from sibling tools like mutate_instances by being a read-only query tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives like mutate_instances or other sibling tools. While the action list implies different use cases, there is no direct comparison or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spatial_queryC
[PRO] Spatial queries: raycast, find ground, check placement, multi-raycast, scan area, find flat areas, find spawn positions, analyze walkable, spatial map, find empty space, get bounds, snap to grid, check collision.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | [PRO] Spatial action. raycast: single ray. find_ground: ground below point. check_placement: collision-free placement check. multi_raycast: batch rays. scan_area: heightmap generation. find_flat: flat areas for building. find_spawn: spawn positions. analyze_walkable: walkability grid. spatial_map: all BasePart positions. find_space: empty space for object. bounds: bounding box. snap_grid: snap position to grid. collision: AABB collision check. | |
| origin | No | Ray origin as Vector3. Used by: raycast. | |
| direction | No | Ray direction and length as Vector3. Used by: raycast. | |
| maxDistance | No | Maximum distance for ground search. Used by: find_ground. Default: 1000. | |
| position | No | Position as Vector3. Used by: find_ground (cast from here), check_placement (center), collision (hypothetical position). | |
| size | No | Size as Vector3. Used by: check_placement (object size), find_space (required space size), scan_area (area X/Z dimensions). | |
| filterType | No | Raycast filter type. Used by: raycast, multi_raycast. Default: "Exclude". | |
| filterList | No | Instance paths to filter. Used by: raycast, multi_raycast, find_ground, check_placement, scan_area. Alias: filterInstances. | |
| filterInstances | No | Instance paths to filter (alias for filterList). Used by: raycast, multi_raycast, find_ground, check_placement, scan_area. | |
| ignoreWater | No | Ignore terrain water. Used by: raycast, multi_raycast. Default: false. | |
| rays | No | Array of ray specifications. Used by: multi_raycast. Max 50 rays. | |
| center | No | Center point for area scan. Used by: scan_area. | |
| area | No | Bounding box for analysis. Used by: analyze_walkable. Contains min/max. | |
| searchArea | No | Bounding box for search. Used by: find_flat, find_spawn, find_space. | |
| minSize | No | Minimum flat area size. Used by: find_flat. | |
| maxSlope | No | Maximum slope in degrees. Used by: find_flat (default: 10), analyze_walkable (default: 45). | |
| resolution | No | Grid resolution in studs. Used by: scan_area, analyze_walkable. Default: 4. | |
| gridSize | No | Grid snap size in studs. Used by: snap_grid (default: 4), find_space (default: 4). | |
| path | No | Instance path. Used by: bounds (optional), snap_grid (required), collision (required), spatial_map (rootPath alias). | |
| paths | No | Multiple instance paths for batch bounds. Used by: bounds. | |
| tolerance | No | Height variation tolerance in studs. Used by: find_flat. | |
| gridSnap | No | Grid snap size. Alias for gridSize. | |
| axes | No | Axes to snap. Used by: snap_grid. Default: ["x","y","z"]. Use ["x","z"] for horizontal only. | |
| ignorePaths | No | Instance paths to ignore in collision check. Used by: collision. | |
| offset | No | Vertical offset for ground position. Used by: find_ground. Default: 0. | |
| rotation | No | Rotation in degrees. Used by: check_placement. | |
| checkGround | No | Verify ground support for placement. Used by: check_placement. Default: true. | |
| spawnSize | No | Size of spawning entity. Used by: find_spawn. Default: {x:4, y:5, z:4}. | |
| minSpacing | No | Minimum distance between spawn positions. Used by: find_spawn. Default: 10. | |
| preferOutdoor | No | Prefer open sky positions. Used by: find_spawn. Default: false. | |
| count | No | Number of results to find. Used by: find_spawn. Default: 10. | |
| characterHeight | No | Character height for clearance checks. Used by: analyze_walkable. Default: 5. | |
| maxStepHeight | No | Maximum step height. Used by: analyze_walkable. Default: 2. | |
| rootPath | No | Root path for spatial map scan. Used by: spatial_map. Default: "game.Workspace". | |
| includeModels | No | Include Model bounding boxes. Used by: spatial_map. Default: true. | |
| maxResults | No | Maximum results. Used by: spatial_map (default: 500), scan_area (default: 500), find_flat (default: 10). | |
| padding | No | Minimum distance from other objects. Used by: find_space. Default: 1. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It does not mention side effects, read-only status, performance costs, or error handling. For a tool with 13 actions, this is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single line listing actions—concise but unstructured. It lacks hierarchy or context that would help an agent quickly grasp the tool's capabilities.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (37 parameters, 13 actions), the description is minimal. There is no explanation of return values, error handling, or how actions relate to each other. The schema covers parameter details but the description fails to tie everything together.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter has schema descriptions specifying which action it belongs to, defaults, and aliases. The tool description adds no further parameter information, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description lists 13 spatial actions (e.g., raycast, find_ground) but lacks a single clear verb+resource statement. It reads as a menu rather than a coherent purpose, making it adequate but not distinctive from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Sibling tools like query_instances or manage_physics could overlap, but no distinctions are provided. The agent must infer usage from the action names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_infoA
System info: ping, connection status, usage tier. [PRO] place info, services list, studio settings, playtest control, automated test runner.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | System action. Basic: ping (test connection, returns pong), connection (server/plugin connection info with session IDs), usage (current tier: basic/pro). [PRO]: place_info (place ID, name, game ID, creator), services (list all Roblox services), studio_settings (Studio preferences), play (start playtest, mode: "play"=F5 or "run"=F8), stop (stop playtest), pause (pause playtest), resume (resume paused playtest), play_status (get current state: edit/running/paused with mode and available actions), run_test (inject test script, run playtest, collect logs, and write local report files). | |
| contextId | No | Optional execution context identifier. Used to continue an existing context for mutating actions. | |
| contextSummary | No | Optional structured execution context attached to this tool call. | |
| replayMetadata | No | Optional replay-ready metadata attached to this tool call. | |
| message | No | Optional message to echo back. Used by: ping. | |
| mode | No | Playtest mode. "play" = Play mode (F5, default), "run" = Run mode (F8). Used by: play, run_test. | |
| script | No | Luau test body to inject into ServerScriptService.__MCP_TestRunner. Used by: run_test. | |
| test_name | No | Optional report display name for the automated playtest run. Used by: run_test. | |
| timeout | No | Timeout in seconds for the automated playtest run. Default: 60. Maximum: 300. Used by: run_test. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It details each action's behavior (e.g., ping returns pong, run_test injects scripts and writes reports). It is transparent about side effects and output, though it does not explicitly label actions as safe/destructive. The per-action descriptions provide sufficient behavioral clarity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a summary line, but the long action enumeration within the description text is verbose and could be structured more concisely. Still, it is readable and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (9 parameters, multiple actions, nested objects) and lack of output schema, the description is thoroughly complete. It covers each action's purpose, parameters, and behavior, leaving no obvious gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning by grouping related parameters and explaining which actions use each parameter (e.g., 'Used by: ping' for message). This context goes beyond the schema's individual descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it provides system info and control actions (ping, connection, usage, plus PRO actions). The action enum and brief summaries differentiate it from sibling tools like execute_luau or manage_*.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the enumerated actions and notes which actions are PRO, but does not explicitly state when to use this tool over alternatives or provide exclusion criteria. The action list is the primary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workspace_stateC
[PRO] Workspace state: full sync, snapshot, recent changes, viewport info, clear history, metadata, scripts, selection info, clear cache.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | [PRO] State action. sync: fetch current Workspace state (hierarchy, history, stats). snapshot: get full instance tree structure. changes: get recent changes (added/removed/modified). viewport: get camera position, FOV, viewport size, selection bounds. clear_history: clear change history. metadata: get workspace metadata. scripts: get script list. selection_info: get selection info. clear_cache: clear state cache. | |
| includeMetadata | No | Include metadata (instance counts, timestamps). Used by: sync. Default: true. | |
| limit | No | Maximum number of changes to return. Used by: changes. Default: 20. | |
| includeCameraInfo | No | Include camera position and settings. Used by: viewport. Default: true. | |
| includeSelectionBounds | No | Include current selection bounds info. Used by: viewport. Default: true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It does not mention that actions like 'clear_history' and 'clear_cache' are destructive, nor any permissions or side effects. The read/write nature of each action is implied only through action names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short (one line) and concise, though it is a simple list without structural hierarchy (e.g., bullet points). It conveys the available actions efficiently for a compact tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (9 distinct actions), the description only provides action names without explaining their behavior. The schema fills the gap, but the description alone is insufficient for an agent to understand the tool's full capabilities.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the baseline is 3. The tool description adds minimal value beyond listing action names; detailed parameter semantics are deferred entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description lists sub-actions like 'full sync, snapshot, recent changes' but lacks a clear, single-sentence statement of the tool's overall purpose. It reads as a list rather than a coherent description, leaving ambiguity about the tool's primary function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus its siblings (e.g., manage_sync, query_instances). It does not mention prerequisites, context, or alternative approaches for achieving similar results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
18 tool updates
v2.7.5- Changed
execute_luau3 fields changed- added
Input schema / properties / contextIdAdded value: +{ + "description": "Optional execution context identifier. Used to continue an existing context for mutating actions.", + "type": "string" +} - added
Input schema / properties / contextSummaryAdded value: +{ + "description": "Optional structured execution context attached to this tool call.", + "properties": { + "affectedAreas": { + "items": { + "properties": { + "kind": { + "enum": [ + "script", + "instance", + "property", + "system", + "gameplay", + "ui", + "terrain", + "lighting", + "asset", + "other" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "target": { + "type": "string" + } + }, + "required": [ + "kind", + "target", + "label" + ], + "type": "object" + }, + "type": "array" + }, + "expectedBehavior": { + "type": "string" + }, + "intent": { + "type": "string" + }, + "observedBehavior": { + "type": "string" + }, + "testScenario": { + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / replayMetadataAdded value: +{ + "description": "Optional replay-ready metadata attached to this tool call.", + "properties": { + "artifactRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "assertionRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mode": { + "type": "string" + }, + "seed": { + "type": "number" + }, + "setupRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timeout": { + "type": "number" + } + }, + "type": "object" +}
- Changed
manage_animation3 fields changed- added
Input schema / properties / contextIdAdded value: +{ + "description": "Optional execution context identifier. Used to continue an existing context for mutating actions.", + "type": "string" +} - added
Input schema / properties / contextSummaryAdded value: +{ + "description": "Optional structured execution context attached to this tool call.", + "properties": { + "affectedAreas": { + "items": { + "properties": { + "kind": { + "enum": [ + "script", + "instance", + "property", + "system", + "gameplay", + "ui", + "terrain", + "lighting", + "asset", + "other" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "target": { + "type": "string" + } + }, + "required": [ + "kind", + "target", + "label" + ], + "type": "object" + }, + "type": "array" + }, + "expectedBehavior": { + "type": "string" + }, + "intent": { + "type": "string" + }, + "observedBehavior": { + "type": "string" + }, + "testScenario": { + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / replayMetadataAdded value: +{ + "description": "Optional replay-ready metadata attached to this tool call.", + "properties": { + "artifactRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "assertionRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mode": { + "type": "string" + }, + "seed": { + "type": "number" + }, + "setupRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timeout": { + "type": "number" + } + }, + "type": "object" +}
- Changed
manage_assets3 fields changed- added
Input schema / properties / contextIdAdded value: +{ + "description": "Optional execution context identifier. Used to continue an existing context for mutating actions.", + "type": "string" +} - added
Input schema / properties / contextSummaryAdded value: +{ + "description": "Optional structured execution context attached to this tool call.", + "properties": { + "affectedAreas": { + "items": { + "properties": { + "kind": { + "enum": [ + "script", + "instance", + "property", + "system", + "gameplay", + "ui", + "terrain", + "lighting", + "asset", + "other" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "target": { + "type": "string" + } + }, + "required": [ + "kind", + "target", + "label" + ], + "type": "object" + }, + "type": "array" + }, + "expectedBehavior": { + "type": "string" + }, + "intent": { + "type": "string" + }, + "observedBehavior": { + "type": "string" + }, + "testScenario": { + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / replayMetadataAdded value: +{ + "description": "Optional replay-ready metadata attached to this tool call.", + "properties": { + "artifactRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "assertionRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mode": { + "type": "string" + }, + "seed": { + "type": "number" + }, + "setupRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timeout": { + "type": "number" + } + }, + "type": "object" +}
- Changed
manage_audio3 fields changed- added
Input schema / properties / contextIdAdded value: +{ + "description": "Optional execution context identifier. Used to continue an existing context for mutating actions.", + "type": "string" +} - added
Input schema / properties / contextSummaryAdded value: +{ + "description": "Optional structured execution context attached to this tool call.", + "properties": { + "affectedAreas": { + "items": { + "properties": { + "kind": { + "enum": [ + "script", + "instance", + "property", + "system", + "gameplay", + "ui", + "terrain", + "lighting", + "asset", + "other" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "target": { + "type": "string" + } + }, + "required": [ + "kind", + "target", + "label" + ], + "type": "object" + }, + "type": "array" + }, + "expectedBehavior": { + "type": "string" + }, + "intent": { + "type": "string" + }, + "observedBehavior": { + "type": "string" + }, + "testScenario": { + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / replayMetadataAdded value: +{ + "description": "Optional replay-ready metadata attached to this tool call.", + "properties": { + "artifactRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "assertionRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mode": { + "type": "string" + }, + "seed": { + "type": "number" + }, + "setupRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timeout": { + "type": "number" + } + }, + "type": "object" +}
- Changed
manage_camera2 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"Camera action. info: get current camera position, rotation, FOV, viewport size. focus_path: move camera to focus on instance by path. focus_position: move camera to focus on world position. suggest: get suggested camera view for a target."New value: +"Camera action. info: get current camera position, rotation, FOV, viewport size. focus_path: move camera to focus on instance by path. focus_position: move camera to focus on world position. suggest: get suggested camera view for a target. [PRO] screenshot: **EDIT MODE ONLY — DO NOT call while a playtest is active.** Captures the current Studio Edit-mode viewport as a PNG image (returns MCP image content). If you are uncertain whether a playtest is running, call system_info.play_status first and only proceed when state == \"edit\"; otherwise the call returns an error. Requires \"Allow Mesh / Image APIs\" Studio setting (Game Settings > Security). Resolution capped by plugin setting screenshotMaxDimension (default 1024px on longest side; kept at full resolution by Claude while reducing token cost ~40% vs 1280). Play-mode capture is not supported in v1 because Roblox platform blocks converting CaptureService temporary contentId into EditableImage from any non-edit-DM context." - changed
Input schema / properties / action / enumPrevious value: -[ - "info", - "focus_path", - "focus_position", - "suggest" -]New value: +[ + "info", + "focus_path", + "focus_position", + "suggest", + "screenshot" +]
- Changed
manage_effects3 fields changed- added
Input schema / properties / contextIdAdded value: +{ + "description": "Optional execution context identifier. Used to continue an existing context for mutating actions.", + "type": "string" +} - added
Input schema / properties / contextSummaryAdded value: +{ + "description": "Optional structured execution context attached to this tool call.", + "properties": { + "affectedAreas": { + "items": { + "properties": { + "kind": { + "enum": [ + "script", + "instance", + "property", + "system", + "gameplay", + "ui", + "terrain", + "lighting", + "asset", + "other" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "target": { + "type": "string" + } + }, + "required": [ + "kind", + "target", + "label" + ], + "type": "object" + }, + "type": "array" + }, + "expectedBehavior": { + "type": "string" + }, + "intent": { + "type": "string" + }, + "observedBehavior": { + "type": "string" + }, + "testScenario": { + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / replayMetadataAdded value: +{ + "description": "Optional replay-ready metadata attached to this tool call.", + "properties": { + "artifactRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "assertionRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mode": { + "type": "string" + }, + "seed": { + "type": "number" + }, + "setupRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timeout": { + "type": "number" + } + }, + "type": "object" +}
- Changed
manage_lighting3 fields changed- added
Input schema / properties / contextIdAdded value: +{ + "description": "Optional execution context identifier. Used to continue an existing context for mutating actions.", + "type": "string" +} - added
Input schema / properties / contextSummaryAdded value: +{ + "description": "Optional structured execution context attached to this tool call.", + "properties": { + "affectedAreas": { + "items": { + "properties": { + "kind": { + "enum": [ + "script", + "instance", + "property", + "system", + "gameplay", + "ui", + "terrain", + "lighting", + "asset", + "other" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "target": { + "type": "string" + } + }, + "required": [ + "kind", + "target", + "label" + ], + "type": "object" + }, + "type": "array" + }, + "expectedBehavior": { + "type": "string" + }, + "intent": { + "type": "string" + }, + "observedBehavior": { + "type": "string" + }, + "testScenario": { + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / replayMetadataAdded value: +{ + "description": "Optional replay-ready metadata attached to this tool call.", + "properties": { + "artifactRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "assertionRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mode": { + "type": "string" + }, + "seed": { + "type": "number" + }, + "setupRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timeout": { + "type": "number" + } + }, + "type": "object" +}
- Changed
manage_physics3 fields changed- added
Input schema / properties / contextIdAdded value: +{ + "description": "Optional execution context identifier. Used to continue an existing context for mutating actions.", + "type": "string" +} - added
Input schema / properties / contextSummaryAdded value: +{ + "description": "Optional structured execution context attached to this tool call.", + "properties": { + "affectedAreas": { + "items": { + "properties": { + "kind": { + "enum": [ + "script", + "instance", + "property", + "system", + "gameplay", + "ui", + "terrain", + "lighting", + "asset", + "other" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "target": { + "type": "string" + } + }, + "required": [ + "kind", + "target", + "label" + ], + "type": "object" + }, + "type": "array" + }, + "expectedBehavior": { + "type": "string" + }, + "intent": { + "type": "string" + }, + "observedBehavior": { + "type": "string" + }, + "testScenario": { + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / replayMetadataAdded value: +{ + "description": "Optional replay-ready metadata attached to this tool call.", + "properties": { + "artifactRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "assertionRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mode": { + "type": "string" + }, + "seed": { + "type": "number" + }, + "setupRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timeout": { + "type": "number" + } + }, + "type": "object" +}
- Changed
manage_properties3 fields changed- added
Input schema / properties / contextIdAdded value: +{ + "description": "Optional execution context identifier. Used to continue an existing context for mutating actions.", + "type": "string" +} - added
Input schema / properties / contextSummaryAdded value: +{ + "description": "Optional structured execution context attached to this tool call.", + "properties": { + "affectedAreas": { + "items": { + "properties": { + "kind": { + "enum": [ + "script", + "instance", + "property", + "system", + "gameplay", + "ui", + "terrain", + "lighting", + "asset", + "other" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "target": { + "type": "string" + } + }, + "required": [ + "kind", + "target", + "label" + ], + "type": "object" + }, + "type": "array" + }, + "expectedBehavior": { + "type": "string" + }, + "intent": { + "type": "string" + }, + "observedBehavior": { + "type": "string" + }, + "testScenario": { + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / replayMetadataAdded value: +{ + "description": "Optional replay-ready metadata attached to this tool call.", + "properties": { + "artifactRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "assertionRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mode": { + "type": "string" + }, + "seed": { + "type": "number" + }, + "setupRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timeout": { + "type": "number" + } + }, + "type": "object" +}
- Changed
manage_scripts3 fields changed- added
Input schema / properties / contextIdAdded value: +{ + "description": "Optional execution context identifier. Used to continue an existing context for mutating actions.", + "type": "string" +} - added
Input schema / properties / contextSummaryAdded value: +{ + "description": "Optional structured execution context attached to this tool call.", + "properties": { + "affectedAreas": { + "items": { + "properties": { + "kind": { + "enum": [ + "script", + "instance", + "property", + "system", + "gameplay", + "ui", + "terrain", + "lighting", + "asset", + "other" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "target": { + "type": "string" + } + }, + "required": [ + "kind", + "target", + "label" + ], + "type": "object" + }, + "type": "array" + }, + "expectedBehavior": { + "type": "string" + }, + "intent": { + "type": "string" + }, + "observedBehavior": { + "type": "string" + }, + "testScenario": { + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / replayMetadataAdded value: +{ + "description": "Optional replay-ready metadata attached to this tool call.", + "properties": { + "artifactRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "assertionRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mode": { + "type": "string" + }, + "seed": { + "type": "number" + }, + "setupRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timeout": { + "type": "number" + } + }, + "type": "object" +}
- Added
manage_studio - Changed
manage_sync3 fields changed- changed
Input schema / properties / action / descriptionPrevious value: -"[PRO] Sync action. status: get sync status for a place. config: get sync configuration. history: get change history. directions: get per-type sync directions. read_file: read a synced file. write_file: write to a synced file. progress: get real-time sync progress and bandwidth."New value: +"[PRO] Sync action. status_current_place: get sync status for the current connected place. history: get change history. directions: get per-type sync directions. read_file: read a synced file. write_file: write to a synced file. progress: get real-time sync progress and bandwidth." - changed
Input schema / properties / action / enumPrevious value: -[ - "status", - "config", - "history", - "directions", - "read_file", - "write_file", - "progress" -]New value: +[ + "status_current_place", + "history", + "directions", + "read_file", + "write_file", + "progress" +] - changed
Input schema / properties / placeId / descriptionPrevious value: -"Place ID for sync operations. Used by: status, config, history, directions."New value: +"Place ID for sync operations. Used by: history, directions, read_file, write_file."
- Changed
manage_terrain3 fields changed- added
Input schema / properties / contextIdAdded value: +{ + "description": "Optional execution context identifier. Used to continue an existing context for mutating actions.", + "type": "string" +} - added
Input schema / properties / contextSummaryAdded value: +{ + "description": "Optional structured execution context attached to this tool call.", + "properties": { + "affectedAreas": { + "items": { + "properties": { + "kind": { + "enum": [ + "script", + "instance", + "property", + "system", + "gameplay", + "ui", + "terrain", + "lighting", + "asset", + "other" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "target": { + "type": "string" + } + }, + "required": [ + "kind", + "target", + "label" + ], + "type": "object" + }, + "type": "array" + }, + "expectedBehavior": { + "type": "string" + }, + "intent": { + "type": "string" + }, + "observedBehavior": { + "type": "string" + }, + "testScenario": { + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / replayMetadataAdded value: +{ + "description": "Optional replay-ready metadata attached to this tool call.", + "properties": { + "artifactRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "assertionRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mode": { + "type": "string" + }, + "seed": { + "type": "number" + }, + "setupRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timeout": { + "type": "number" + } + }, + "type": "object" +}
- Changed
manage_tween3 fields changed- added
Input schema / properties / contextIdAdded value: +{ + "description": "Optional execution context identifier. Used to continue an existing context for mutating actions.", + "type": "string" +} - added
Input schema / properties / contextSummaryAdded value: +{ + "description": "Optional structured execution context attached to this tool call.", + "properties": { + "affectedAreas": { + "items": { + "properties": { + "kind": { + "enum": [ + "script", + "instance", + "property", + "system", + "gameplay", + "ui", + "terrain", + "lighting", + "asset", + "other" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "target": { + "type": "string" + } + }, + "required": [ + "kind", + "target", + "label" + ], + "type": "object" + }, + "type": "array" + }, + "expectedBehavior": { + "type": "string" + }, + "intent": { + "type": "string" + }, + "observedBehavior": { + "type": "string" + }, + "testScenario": { + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / replayMetadataAdded value: +{ + "description": "Optional replay-ready metadata attached to this tool call.", + "properties": { + "artifactRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "assertionRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mode": { + "type": "string" + }, + "seed": { + "type": "number" + }, + "setupRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timeout": { + "type": "number" + } + }, + "type": "object" +}
- Added
manage_ui - Changed
mutate_instances6 fields changed- added
Input schema / properties / contextIdAdded value: +{ + "description": "Optional execution context identifier. Used to continue an existing context for mutating actions.", + "type": "string" +} - added
Input schema / properties / contextSummaryAdded value: +{ + "description": "Optional structured execution context attached to this tool call.", + "properties": { + "affectedAreas": { + "items": { + "properties": { + "kind": { + "enum": [ + "script", + "instance", + "property", + "system", + "gameplay", + "ui", + "terrain", + "lighting", + "asset", + "other" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "target": { + "type": "string" + } + }, + "required": [ + "kind", + "target", + "label" + ], + "type": "object" + }, + "type": "array" + }, + "expectedBehavior": { + "type": "string" + }, + "intent": { + "type": "string" + }, + "observedBehavior": { + "type": "string" + }, + "testScenario": { + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / replayMetadataAdded value: +{ + "description": "Optional replay-ready metadata attached to this tool call.", + "properties": { + "artifactRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "assertionRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mode": { + "type": "string" + }, + "seed": { + "type": "number" + }, + "setupRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timeout": { + "type": "number" + } + }, + "type": "object" +} - added
Input schema / properties / sessionDebugIdAdded value: +{ + "description": "Optional same Studio/plugin session debug identity for verifying a duplicate-named target. Used by: delete, clone, move, rename, pivot, smart_duplicate.", + "type": "string" +} - added
Input schema / properties / siblingIndexAdded value: +{ + "description": "Optional 1-based same-name sibling index fallback for verifying a duplicate-named target. Used by: delete, clone, move, rename, pivot, smart_duplicate.", + "type": "number" +} - removed
Input schema / properties / spacingRemoved value: -{ - "description": "[PRO] Spacing between duplicated instances. Used by: smart_duplicate. Alias for offset.", - "properties": { - "x": { - "type": "number" - }, - "y": { - "type": "number" - }, - "z": { - "type": "number" - } - }, - "type": "object" -}
- Changed
query_instances2 fields changed- added
Input schema / properties / sessionDebugIdAdded value: +{ + "description": "Optional same Studio/plugin session debug identity for resolving duplicate-named path targets. Used by: get, children, descendants, ancestors.", + "type": "string" +} - added
Input schema / properties / siblingIndexAdded value: +{ + "description": "Optional 1-based same-name sibling index fallback for resolving duplicate-named path targets. Used by: get, children, descendants, ancestors.", + "type": "number" +}
- Changed
system_info3 fields changed- added
Input schema / properties / contextIdAdded value: +{ + "description": "Optional execution context identifier. Used to continue an existing context for mutating actions.", + "type": "string" +} - added
Input schema / properties / contextSummaryAdded value: +{ + "description": "Optional structured execution context attached to this tool call.", + "properties": { + "affectedAreas": { + "items": { + "properties": { + "kind": { + "enum": [ + "script", + "instance", + "property", + "system", + "gameplay", + "ui", + "terrain", + "lighting", + "asset", + "other" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "target": { + "type": "string" + } + }, + "required": [ + "kind", + "target", + "label" + ], + "type": "object" + }, + "type": "array" + }, + "expectedBehavior": { + "type": "string" + }, + "intent": { + "type": "string" + }, + "observedBehavior": { + "type": "string" + }, + "testScenario": { + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / replayMetadataAdded value: +{ + "description": "Optional replay-ready metadata attached to this tool call.", + "properties": { + "artifactRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "assertionRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "inputRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "mode": { + "type": "string" + }, + "seed": { + "type": "number" + }, + "setupRefs": { + "items": { + "type": "string" + }, + "type": "array" + }, + "timeout": { + "type": "number" + } + }, + "type": "object" +}
21 tool updates
v2.0.1- First observed
batch_execute - First observed
execute_luau - First observed
manage_animation - First observed
manage_assets - First observed
manage_audio - First observed
manage_camera - First observed
manage_effects - First observed
manage_lighting - First observed
manage_logs - First observed
manage_physics - First observed
manage_properties - First observed
manage_scripts - First observed
manage_selection - First observed
manage_sync - First observed
manage_terrain - First observed
manage_tween - First observed
mutate_instances - First observed
query_instances - First observed
spatial_query - First observed
system_info - First observed
workspace_state
TDQS
Scored across 23 tools
Each tool targets a distinct area (e.g., animation, assets, camera, effects, scripts, UI) with detailed descriptions that clearly separate their purposes. There is minimal overlap, and the few that might be confused (e.g., query_instances vs. workspace_state) have distinct operations.
The majority of tools follow a 'verb_noun' pattern (e.g., manage_animation, query_instances), but a few outliers like batch_execute (noun_verb), spatial_query (adjective_noun), and system_info (noun_noun) break consistency, slightly reducing predictability.
With 23 tools, the server covers a broad domain (Roblox Studio operations) without being overwhelming. While slightly above the typical 3-15 range, each tool addresses a specific function, making the count reasonable for the complexity of the platform.
The tool set provides comprehensive coverage for common development tasks: asset management, scripting, UI design, terrain editing, lighting, physics, and debugging. Advanced features like batch execution and Luau scripting fill gaps, making it suitable for both simple and complex workflows.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
Use AI models for chat, image, and video generation from Claude Code and other MCP hosts.
MCP server for Flux AI image generation
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA comprehensive MCP server providing 41 tools for complete Roblox Studio control, enabling safe script editing with syntax checking, instance manipulation, and backup features directly from Claude Code or any MCP-compatible AI assistant.1MIT
- AlicenseNot gradedqualityAmaintenanceA free, open-source MCP server that lets Claude, Cursor, Codex, or Gemini operate Roblox Studio — debug live playtests, bulk-edit places, and scaffold whole games — with a built-in safety layer.7MIT
- AlicenseNot gradedqualityAmaintenanceAn MCP server that gives an AI coding agent real control of Roblox Studio and Roblox Open Cloud, with a test-and-security layer no other Studio MCP has.63MIT
- FlicenseAqualityCmaintenanceAn MCP server that bridges AI to Roblox Studio, enabling execution of Luau scripts, instance manipulation, play-testing control, and Open Cloud operations via natural language.21-