scratch-unified-mcp
Provides tools for building, playtesting, and publishing Scratch projects, including website/social graph access, text-based project authoring, Python-to-blocks conversion, and a headless Scratch VM for running and inspecting projects without a browser.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@scratch-unified-mcpPlaytest my Scratch project headlessly and summarize what sprites do in the first 5 seconds."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
scratch-unified-mcp
The first standalone headless Scratch VM over MCP — plus everything needed to build, playtest, and publish Scratch projects without opening a browser.
117 tools. One stdio command. Zero name collisions.
MCP client ──stdio──▶ python3 -m scratch_unified
├── social_* website + social graph (scratchattach)
├── project_* goboscript text-authoring loop
├── spy_* blocks ↔ real Python (ScratchPy)
└── sb3_* block surgery + headless VM control loop (vendored Node sidecar fork)Why this exists
Three Scratch tool ecosystems each covered part of the loop — website API, block-level editing with a headless VM, Python-to-blocks — but none covered all of it, and switching between three servers with three naming schemes killed momentum. This merges all three behind one transport.
The piece that didn't exist anywhere else: a headless TurboWarp scratch-vm you can drive and inspect over MCP. Load a .sb3, press green flag, click sprites, step frames, read threads, watch variables — all from tool calls, all inspectable.
Related MCP server: Roblox Studio MCP
Quickstart
One command, macOS / Linux / Windows (Git Bash, MSYS2, WSL) — needs Python ≥ 3.12 and Node ≥ 18 (both checked up front):
git clone https://github.com/x3vu/scratch-unified-mcp.git && cd scratch-unified-mcp
./install.shThat installs the Python package (scratch-unified on PATH), the
sidecar's npm deps (unlocks all sb3_* tools), and verifies both.
Flags: --no-sidecar (skip npm deps), --no-verify (skip checks),
--prefix DIR (portable pip target). install.ps1 is the same flow
for native PowerShell. Requires nothing but this repo — the ScratchPy
core and the VM sidecar are vendored; the old upstream-* clones are
gone (see "Layout").
Manual install (same steps, no script):
pip install .
npm install --no-audit --no-fund --legacy-peer-deps ./scratch_unified/sidecarThen point any MCP client at it:
// MCP client config — easiest: the installed entry point
{ "mcpServers": { "scratch-unified": {
"command": "scratch-unified",
"env": {
"SCRATCH_MCP_DATA_DIR": "/path/to/scratch-unified-mcp/.sessions"
// "SCRATCH_MCP_BRIDGE_PORT": "9060" // only if something else holds 9060
},
"timeout": 600000
} } }// …or without installing: repo checkout + interpreters
{ "mcpServers": { "scratch-unified": {
"command": "python3",
"args": ["-m", "scratch_unified"],
"cwd": "/path/to/scratch-unified-mcp",
"env": {
"PYTHONPATH": "/path/to/scratch-unified-mcp",
"SCRATCH_MCP_DATA_DIR": "/path/to/scratch-unified-mcp/.sessions"
},
"timeout": 600000
} } }The headless VM loop
Six core tools, debug tools, media tools, and five live-run tools, all proxied to a lazily-spawned Node sidecar (TurboWarp scratch-vm, interpreted mode, stdout muted so MCP framing stays clean). The sidecar is a vendored fork at scratch_unified/sidecar/ (upstream scratch4js @ cb1669aa, gitignored/read-only) — VM improvements land in the fork, never upstream:
Tool | What it does |
| Load / write |
| Load the open project into a fresh VM |
| Press green flag (clears bubbles, question, errors) |
| Advance N seconds/frames, paced or flat-out. Returns state + ordered event timeline ( |
| Snapshot now: targets (x/y/vars/lists/costume), monitors, bubbles, question, thread count, errors |
| Keys, mouse position/clicks (stage coords), |
| Every live thread: target, clone flag, starting hat, stack depth, status ( |
| Full monitor table (visible or not) — watch a variable without pixels |
| Exactly one frame + before/after counts + delta (new threads, events that tick) |
| Deterministic PRNG (mulberry32 over |
| Poll-and-diff variable watcher: old/new/changed per key, per-clone capable |
| Recorded pen/sound stub calls since load |
| Pen raster (480×360 software canvas) as PNG base64 + pixel count. Strokes only |
| Offline sound mix as WAV base64: every play at its timer offset, volume/pitch approximate |
| Run on virtual time until a predicate fires ( |
| Write live VM state mid-run: variables/lists by target, sprite pose/costume. Fault injection the disk-editing |
| Clone census: pose, costume, sprite-locals per live clone |
| Query every target's blocks by opcode substring / field value / input name / hat-only |
| Catalog validator on demand: unknown opcodes (did-you-mean), bad inputs, disabled extensions. Advisory, custom blocks ignored |
Headless gaps are patched, not hidden: distance-based touching fallback (no renderer means every touching returns false upstream), sprite-click shim, broadcast logging via wrapped startHats, interpreter mode to dodge a JIT pickrandom false-alarm. Details: scratch_unified/sidecar/src/runtime.js.
Tool census
social_* 20 · project_* 18 · spy_* 14 · sb3_* 65 (51 proxied + 9 native + 5 new) = 117. Full per-tool reference: docs/IDENTIFIERS.md. Architecture: docs/ARCHITECTURE.md.
Layout
scratch_unified/ the server (this is what runs)
server.py FastMCP app + main() (--help/--version/--list-tools)
vendor_uu/ uukelele/scratch-mcp, vendored (social + projects)
vendor_spy/ ScratchPy Studio core, vendored (blocks↔Python, MIT)
sidecar/ vendored VM sidecar fork (editable; FORK.md + package.json)
spy_loader.py headless ScratchPy import (tkinter stubbed if absent)
spy_tools.py 14 spy_* wrappers, one shared .spy server
node_bridge.py lazy Node sidecar transport (newline-delimited JSON-RPC, TIMEOUT-guarded)
typed_proxy.py typed sb3_* proxies (FastMCP rejects **kwargs)
sb3_extra.py git unpack/pack/diff, studio/remix/favorites, cloud vars
install.sh / install.ps1 one-command setup (sh / PowerShell) + verification
bin/scratch-unified thin launcher (used when pip dir is on PATH but entry point isn't)
scripts/smoke_sidecar.py post-install sidecar handshake check
docs/ ARCHITECTURE, IDENTIFIERSEverything the server needs ships in this repo (vendored vendor_uu/,
vendor_spy/, sidecar/src/); npm install inside sidecar/ is the
only network step, and it's optional (without it only sb3_* tools
report unavailable). Sessions persist as session IDs only, never
passwords.
Credits
uukelele/scratch-mcp (MIT) — social + goboscript core
playforge-coding/scratch4js (MPL-2.0) — sb3/VM/bridge core
ZDStudios/scratchpy-studio (MIT) — blocks↔Python core
TurboWarp/scratch-vm — the headless engine
Available Tools
117 toolsproject_add_costumeProject Add CostumeA
Add a costume to a sprite, copying the file into the project's assets/.
Give either file (an existing .svg/.png/.jpg) or svg (SVG markup as a
string, which needs name). Appended last, so it becomes the sprite's
highest costume number.
| Name | Required | Description | Default |
|---|---|---|---|
| svg | No | SVG markup to write as a new costume. Requires `name`. | |
| file | No | Path to an image to import. | |
| name | No | Costume name in Scratch. Defaults to the filename without its extension. | |
| path | No | Project to modify. Defaults to the active project. | |
| sprite | Yes | Sprite name, i.e. its .gs filename without the extension. The Stage is "stage". |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| name | Yes | |
| path | Yes | |
| exists | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full disclosure burden. It reveals two meaningful behavioral traits: the file is copied into the project's assets/, and the costume is appended last, becoming the highest costume number. It does not cover overwrite behavior, permissions, or failure modes, but it goes beyond simply restating the action.
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 short paragraphs, front-loaded with the main action, then input modes, then the side effect and ordering. Each sentence contributes new information and there is no filler. The line break around the `file`/`svg` choice makes it scannable.
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 one required parameter, 100% schema coverage, and an output schema, the description provides enough to call the tool correctly: what to pass, which input form to use, and the side effect. It omits edge cases (both `file` and `svg` provided, or neither) and doesn't address sibling selection, but these are secondary.
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 baseline is 3. The description adds value by explaining that `file` accepts .svg/.png/.jpg, that `svg` requires `name`, and that `name` defaults to the filename without extension. This coupling goes beyond the schema's bare 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 states a specific verb ('Add') and resource ('costume to a sprite') and scopes it to 'the project's assets/'. This clearly separates it from asset-removal and sound siblings. However, it does not explicitly differentiate itself from the similarly named `sb3_add_costume`, leaving some ambiguity about which level (project vs sb3 VM) to use.
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 gives actionable guidance: use either `file` or `svg`, and that `svg` requires `name`. This resolves the main input ambiguity. It does not, however, mention when not to use this tool or when to prefer an alternative like `sb3_add_costume`.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_add_soundProject Add SoundA
Add a sound to a sprite, copying the file into the project's assets/.
Scratch accepts only MP3 and WAV; other formats make the project refuse to load, with no warning.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Path to an .mp3 or .wav file. | |
| name | No | Sound name in Scratch. Defaults to the filename without its extension. | |
| path | No | Project to modify. Defaults to the active project. | |
| sprite | Yes | Sprite name, i.e. its .gs filename without the extension. The Stage is "stage". |
Output Schema
| Name | Required | Description |
|---|---|---|
| kind | Yes | |
| name | Yes | |
| path | Yes | |
| exists | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does meaningful work: it discloses the file-copy side effect into assets/ and warns about the silent failure mode where unsupported formats make the project refuse to load with no warning. This is high-value behavioral disclosure, though it omits details like name-conflict behavior, permissions, or error handling.
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 with no filler: the core action and side effect are front-loaded, followed immediately by the critical format warning. Every word earns its place.
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 mutation tool with no annotations, the description covers the essential ground: purpose, side effect, and the most damaging failure mode. The 100%-coverage schema and existing output schema fill in parameter and return semantics. Minor gaps remain around conflict handling and reversibility, but nothing critical is missing.
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 schema already documents all four parameters (file, name, path, sprite) with descriptions. The description reinforces the format restriction for file but adds little semantic value beyond what the schema provides; the baseline of 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 states a specific verb and resource — 'Add a sound to a sprite, copying the file into the project's assets/' — which clearly identifies the tool's function and distinguishes it from removal tools like project_remove_asset and costume tools like project_add_costume. It does not explicitly differentiate from the similar sb3_add_sound sibling, so it falls just short of full 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 provides practical usage guidance via the format constraint ('Scratch accepts only MP3 and WAV') and implies the intended context of working with project sprites. However, it gives no explicit when-to-use vs. when-not-to-use guidance or alternative routing against siblings such as sb3_add_sound or project_add_costume, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_buildProject BuildA
Compile the project to .sb3 with goboscript. Use this rather than running the goboscript CLI yourself.
A failed build raises with the compiler's diagnostics passed through verbatim -- file, line, column and the offending source -- so fix those and call it again.
Also reports which extensions the project uses and whether any of them are TurboWarp-only, which would block publishing to scratch.mit.edu.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Project to build. Defaults to the active project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| output | Yes | |
| sb3_path | Yes | |
| extensions | Yes | |
| is_scratch_compatible | Yes | |
| turbowarp_only_extensions | Yes |
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 that failed builds raise with compiler diagnostics passed through verbatim, including file, line, column, and source. It also discloses that the tool reports extension usage and TurboWarp-only flags, which is valuable behavioral context beyond the basic action.
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 compact, well-structured, and front-loaded with the core action. Each sentence adds unique value: the action, the CLI alternative, failure behavior, and extension reporting. No redundant or vague wording.
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 an output schema present, the description need not explain return values. It covers the build action, error behavior, and extension reporting. It does not mention prerequisites or filesystem side effects, but those are likely covered by sibling tools like project_check_toolchain. Overall, complete enough for an agent to call correctly.
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% for the single path parameter, and the schema already documents that it defaults to the active project. The description adds no additional parameter-level detail, so the 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?
States a specific verb ('Compile the project to .sb3 with goboscript') with clear resource and output format. Distinguishes itself from sibling tools by focusing on the build/compile action, which is not duplicated by any sibling.
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?
Explicitly instructs to use this rather than running the goboscript CLI, giving clear guidance against a common alternative. Does not mention sibling tools explicitly, but the context is sufficient for when to use it; no exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_check_toolchainProject Check ToolchainA
Report whether the goboscript toolchain is installed and usable.
Call this first if any other project_* tool complains about a missing binary. Never raises, so it is safe to use for diagnosis.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states that the tool 'never raises,' which is a key safety trait for a diagnostic tool. It also implies a boolean-like result ('installed and usable') but doesn't specify the exact return structure. Given the tool's simplicity and the existence of an output schema (which isn't shown but is present), this is sufficient. It could add more detail about what 'usable' means or whether it performs any network/file checks, but the core behavior is disclosed.
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 with zero fluff. The first sentence states the purpose, the second gives usage guidance and a safety note. All information is front-loaded and every word earns its place. It's a model of 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?
For a zero-parameter diagnostic tool, this description is complete. It tells the agent what the tool does, when to use it, and a key behavioral guarantee (never raises). The output schema presumably describes the return value, so the description doesn't need to. It's fully sufficient for an agent to decide when and how to call it.
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 tool has zero parameters, so the description doesn't need to explain any. The baseline for 0 parameters is 4, and the description adds no redundant parameter information. It's correctly minimal—no parameter documentation is needed.
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: to report whether the goboscript toolchain is installed and usable. It uses a specific verb ('Report') and a specific resource ('goboscript toolchain'), and it's distinct from all sibling tools—no other tool performs a toolchain health check. This makes its purpose unambiguous.
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 tells the agent when to call this tool: 'Call this first if any other project_* tool complains about a missing binary.' It also notes that it's safe for diagnosis because it 'never raises.' This provides clear context for selection and even a conditional trigger, which is excellent guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_closeProject CloseB
Forget a project. Does not delete anything from disk.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Project to drop. Defaults to the active project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It does disclose the important non-destructive behavior ('Does not delete anything from disk'), but it does not explain what 'forget' means in terms of the workspace, active project state, or whether the action is reversible. This is a partial disclosure, not a full one.
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 short sentences with no waste. It front-loads the core action and immediately adds the critical non-destructive qualification. Every word earns its place.
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 low-complexity tool with one optional parameter, a complete schema, and an output schema present, the description is nearly sufficient. It explains the core action and safety boundary. The main missing piece is explicit usage guidance relative to siblings, but that is not critical for correct invocation given the schema and tool name.
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 schema provides 100% coverage for the single parameter, documenting that 'path' is optional and defaults to the active project. The description adds no parameter-specific information, but because the schema is complete, the 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 description clearly states the action ('Forget a project') and the key boundary ('Does not delete anything from disk'), which distinguishes it from destructive operations. It does not explicitly differentiate among the many project_* siblings, but the verb 'forget' conveys a distinct non-destructive close/unload action.
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?
There is no guidance on when to use this tool versus alternatives like project_open, project_select, or project_remove_asset. The only contextual hint is the reassurance that nothing is deleted from disk, which implicitly suggests it is not for deletion but does not explain appropriate usage scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_downloadProject DownloadA
Decompile a Scratch project into editable goboscript source, and make it active.
Give either project_id to pull straight from scratch.mit.edu, or
sb3_path for a local .sb3 file. Decompiling is lossy in layout terms: the
result is equivalent code, not a byte-identical copy of the original.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Directory to write the goboscript project into. | |
| verify | No | Compile the decompiled source afterwards and report whether it builds. Decompilation is not always faithful, so this is worth knowing before you start editing. | |
| sb3_path | No | Path to a local .sb3 to decompile instead. | |
| overwrite | No | Allow writing into a directory that already has contents. | |
| project_id | No | Numeric scratch.mit.edu project id to download and decompile. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| project | Yes | |
| compiles | Yes | |
| diagnostics | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses the key caveat that decompilation is lossy in layout terms and states that the tool 'makes the result active.' It also implies network use by mentioning pulling from scratch.mit.edu. It could say more about filesystem writes or state changes, but the most important behavioral warning is present.
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 compact and front-loaded: purpose first, then source-mode guidance, then a brief caveat. Every sentence carries useful information with no filler.
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 100% schema coverage and an output schema available, the description covers the main operational context well: what the tool does, how to choose a source, and the key decompilation caveat. It does not explicitly mention the required `path` parameter's role, but the schema already documents that clearly.
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 baseline is 3, but the description adds value by explaining the relationship between `project_id` and `sb3_path` as alternative sources. This goes beyond the individual parameter descriptions and clarifies the either/or usage pattern.
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 states a specific verb and resource: it decompiles a Scratch project into editable goboscript source and makes it active. This clearly differentiates it from sibling tools like project_open, project_new, or sb3_open_project, which do not focus on decompilation into goboscript.
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 gives clear context and explicit input-mode guidance: use `project_id` for scratch.mit.edu projects or `sb3_path` for local .sb3 files. However, it does not explicitly say when this tool should be chosen over related siblings or when it should not be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_editing_guideProject Editing GuideA
Read this BEFORE creating or editing any Scratch project.
Covers Scratch's hard limits (block counts, asset sizes, clone caps, cloud
variable rules and so on) and the goboscript language used to write
projects as text. Scratch projects are not edited as raw project.json here;
they are written as goboscript .gs source and compiled.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It reveals that this tool is a prerequisite read, that it covers hard limits, and that projects must be written as goboscript source and compiled rather than edited as raw project.json. Since the tool has no parameters and is purely a guide, additional side-effect disclosure is unnecessary.
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?
Three short sentences with the critical usage instruction front-loaded in the first sentence. Each sentence adds distinct information: the precondition, the covered content, and the authoring workflow.
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 zero-parameter documentation tool, the description provides everything an agent needs: when to invoke it, what it covers, and the expected project-authoring model. The presence of an output schema covers return-value details, so no additional context is missing.
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 tool has zero parameters, so parameter semantics are largely moot and the baseline of 4 applies. The empty schema with additionalProperties false leaves nothing undocumented.
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 states an explicit action ('Read this') and a precise resource: guidance for creating or editing Scratch projects, covering hard limits and goboscript. This clearly distinguishes it from action-oriented sibling tools like project_new or project_build, positioning it as a prerequisite guide rather than an operation.
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 opening sentence is an explicit condition: read before creating or editing any Scratch project. It also clarifies the supported workflow—goboscript .gs source, not raw project.json—which prevents the agent from using other tools to edit raw JSON. No alternative tool is named, but the when-to-use instruction is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_goboscript_docs_helpProject Goboscript Docs HelpA
Read the goboscript language documentation.
Call with no arguments to get the index of every documentation page. Call
with page set to one of those paths to get that page as raw markdown.
Use this whenever you are unsure of a block or reporter name -- goboscript
names differ from the Scratch block text (for example switch_costume,
change_x, touching("sprite"), clone, set_ghost_effect) and guessing
wastes a build cycle.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | A documentation path from the index, e.g. "language/blocks/motion.md". Omit to list everything. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It clearly states that calling with no arguments returns the index and calling with a page returns raw markdown, making the read-only nature and output shape evident. No hidden side effects or state changes are implied or omitted.
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 four sentences, each serving a purpose: purpose, two usage modes, and when-to-use guidance. No filler or redundant restatement of the schema.
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 one optional parameter and an output schema, this description covers how to obtain the index, how to fetch a specific page, and when to use it. It does not need to describe return values because the output schema covers that, and error handling for invalid paths is minor for a read-only docs 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?
The schema already documents the 'page' parameter at 100% coverage, but the description adds meaningful usage semantics: no arguments yields the index, and setting 'page' to an index path returns that page. This clarifies the relationship between the parameter and the two output modes beyond the schema's static description.
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 states a specific verb ('Read') and resource ('goboscript language documentation'), and clearly distinguishes the two invocation modes. This separates it from sibling tools, which operate on projects, social features, or SB3 files. No ambiguity about what the tool does.
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 explicitly advises using this tool whenever unsure of a block or reporter name, with examples and rationale (guessing wastes build cycles). This provides clear situational guidance and an implicit alternative (not guessing), though it does not name a specific sibling tool because none is directly comparable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_infoProject InfoB
Summarise a project: its sprites, publish target and compatibility.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Project to describe. Defaults to the active project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| path | Yes | |
| sprites | Yes | |
| built_sb3 | Yes | |
| is_active | Yes | |
| has_config | Yes | |
| published_project_id | Yes | |
| is_scratch_compatible | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description does most of the work. The verb 'Summarise' strongly implies a read-only operation and the tool's purpose is transparent enough. However, it does not explicitly state that no changes are made to the project or describe how the default active project resolution behaves beyond what the schema already says.
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 no excess verbiage. The core action and the three content areas are all front-loaded, making it easy for an agent to scan and understand.
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 simple tool with one optional parameter and an output schema available, this description is largely complete. The only slight gap is that 'publish target' and 'compatibility' could be more explicit about what exact information is returned, but that is minor.
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 describes the single 'path' parameter fully, including its nullability and default of the active project (100% schema description coverage). The description adds no additional parameter-level meaning, so the 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 uses a specific verb ('Summarise') and a specific resource ('a project'), then names the three facets covered: sprites, publish target, and compatibility. This is clear and functional, but it does not explicitly differentiate itself from similarly named siblings like sb3_project_info or social_get_project_info.
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?
There is no guidance on when to use this tool versus alternatives. The existence of similarly named siblings such as sb3_project_info and social_get_project_info makes the omission noticeable; an agent must infer that 'summary' is the intended use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_listProject ListA
List the goboscript projects this server knows about.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'List' reasonably implies a read-only, non-destructive operation, and 'this server knows about' communicates the local scope. Still, it does not disclose return behavior, ordering, or potential side effects beyond what the output schema may define.
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 with no filler. The key action and scope are front-loaded, and every word adds meaning.
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 zero-parameter list tool with an output schema present, the description is complete enough for an agent to select and invoke it correctly. It identifies the exact object being listed and the context ('server knows about'), and it does not need to explain return values because an output schema exists.
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 tool has zero parameters, so there are no parameter semantics to explain. Per the baseline for zero-parameter tools, this is appropriate; nothing in the description needs to compensate for undocumented parameters.
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 uses a specific verb ('List') and resource ('goboscript projects'), and adds a clarifying scope ('this server knows about'). It clearly distinguishes this from sibling tools like project_list_assets by focusing on projects rather than assets.
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 its use case: call it when you need to enumerate the goboscript projects available on the server. However, it does not explicitly state when to prefer this tool over alternatives or mention any exclusions, leaving usage guidance mostly implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_list_assetsProject List AssetsA
List the costumes and sounds a sprite declares.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Project to inspect. Defaults to the active project. | |
| sprite | Yes | Sprite name, i.e. its .gs filename without the extension. The Stage is "stage". |
Output Schema
| Name | Required | Description |
|---|---|---|
| sounds | Yes | |
| sprite | Yes | |
| costumes | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the transparency burden. The verb 'List' implies a read-only operation and 'declares' indicates per-sprite scope, but there is no explicit statement about side effects, project state requirements, or error behavior. For a simple inspection tool this is modest but acceptable.
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 the action and object, with no filler. Every word contributes to understanding what the tool does.
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 simple listing tool, the description plus complete input schema and output schema cover the essential information. The main gap is the absence of usage routing relative to sibling tools, but this is a minor shortfall given the tool's low 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?
The input schema fully documents both parameters (path and sprite), so the description does not need to add parameter detail. The description adds only the context that the listed assets belong to a sprite, which is already reflected in the schema. 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 states a specific verb ('List') on a clear resource ('costumes and sounds a sprite declares'), making the tool's purpose immediately obvious. It is easily distinguished from asset-modifying siblings like project_add_costume and project_add_sound.
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 gives no guidance on when to use this tool versus alternatives such as sb3_list_sprites, project_summary, or project_info. No exclusions or selection criteria are provided, so an agent must infer usage from the name and schema.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_newProject NewA
Create a new goboscript project and make it the active project.
Scaffolds a project directory with stage.gs, main.gs, a blank costume
and a goboscript.toml.
| Name | Required | Description | Default |
|---|---|---|---|
| git | No | Initialise a git repository in the project. Off by default. | |
| path | Yes | Directory to create, normally inside your workspace. Must not already exist, or must be empty. | |
| published_project_id | No | Existing scratch.mit.edu project id this should publish to. Leave unset for a project that is local-only until you first call `project_save_to_cloud`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| path | Yes | |
| sprites | Yes | |
| built_sb3 | Yes | |
| is_active | Yes | |
| has_config | Yes | |
| published_project_id | Yes | |
| is_scratch_compatible | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the disclosure burden. It does well by mentioning side effects: scaffolding a directory with specific files, adding a blank costume, creating goboscript.toml, and making the project active. It could add more about the active-project replacement behavior or reversibility, but the core mutation is clearly disclosed.
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, front-loaded with the main purpose, and every sentence earns its place. The second sentence adds concrete scaffolding details without unnecessary fluff.
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 simple project-creation tool, the description covers what is created and that the new project becomes active. It has a rich output schema and fully documented parameters, so missing return-value details are not a gap. It could be slightly more complete with explicit alternative routing, but it is sufficient for correct invocation.
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 path, git, and published_project_id. The description adds no parameter-level detail, which is acceptable under the baseline because the schema fully compensates.
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 ('Create a new goboscript project'), the resource, and a key outcome ('make it the active project'). It also differentiates the tool from siblings like project_open and project_download by describing project creation and scaffolding rather than opening or downloading.
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 gives clear context: use this to create and activate a new goboscript project from scratch. It does not explicitly name alternatives or when-not-to-use conditions, but the 'new project' framing makes the intended usage unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_openProject OpenB
Register an existing goboscript project directory and make it active.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | The project directory (the one holding goboscript.toml and the .gs sprite files). | |
| published_project_id | No | Existing scratch.mit.edu project id this publishes to, if any. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| path | Yes | |
| sprites | Yes | |
| built_sb3 | Yes | |
| is_active | Yes | |
| has_config | Yes | |
| published_project_id | Yes | |
| is_scratch_compatible | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden of behavioral disclosure. It states the tool registers and activates a project, but it does not mention side effects, validation of goboscript.toml, whether it changes stored state, what happens to the previously active project, or whether it is safe and reversible. This is meaningful but incomplete.
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 with no filler or repetitive wording. It efficiently communicates the action and the object without restating the tool name.
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 tool is simple with only two parameters and an output schema exists, so the return shape does not need to be explained here. However, the description omits useful operational context such as what 'active' means for subsequent tool calls, whether the project is validated, and how this relates to other project-oriented siblings. It is minimally sufficient but not richly complete.
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 both parameters. The description adds no extra meaning about path or published_project_id beyond what the schema provides, 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 uses a specific verb ('Register') and a clear resource ('existing goboscript project directory'), and it adds the stateful consequence 'make it active,' which separates it from generic open or info tools like sb3_open_project or project_info. It does not explicitly name a sibling or define what 'active' means, but the core purpose is unambiguous.
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 a workflow—registering and activating an existing goboscript project—but gives no explicit when-to-use guidance or exclusions. It does not mention alternatives or explain how this differs from spy_open_project, sb3_open_project, or project_check_toolchain, leaving the agent to infer when this tool should be selected.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_remove_assetProject Remove AssetA
Remove a costume or sound declaration from a sprite.
Leaves the file in assets/ in case other sprites use it.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | "costume" or "sound". | |
| name | Yes | The costume or sound name to remove, as reported by `project_list_assets`. | |
| path | No | Project to modify. Defaults to the active project. | |
| sprite | Yes | Sprite name, i.e. its .gs filename without the extension. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and clearly discloses that the assets/ file is left in place. This directly addresses the main destructive concern for a removal tool. It does not cover persistence or failure modes, but the key side effect is transparent.
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 compact sentences with the action first and the important caveat second. There is no redundant information or filler.
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?
Together with the fully described input schema and the presence of an output schema, the description is complete for invocation. It conveys what is removed, what is preserved, and which sprite/kind is affected.
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 kind, name, sprite, and path. The description adds no new parameter-level guidance beyond restating the allowed kinds.
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?
Describes a specific operation with a clear verb and resource: removing a costume or sound declaration from a sprite. The second sentence distinguishes it from asset-deleting tools by noting the file stays in assets/, which is an important scoping detail.
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 gives clear context: this tool removes a declaration while preserving the underlying file, which is exactly the decision point an agent needs. It does not explicitly name alternatives like sb3_remove_costume or sb3_remove_sound, but the context is enough to infer when to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_save_to_cloudProject Save To CloudA
Build the project and upload it to scratch.mit.edu as the active session.
Creates a new Scratch project the first time, then reuses that id for later saves. Uploads costume and sound files as well as the code, since Scratch stores assets separately and the project would render broken without them.
Refuses to upload a project using TurboWarp-only extensions, and names them, because scratch.mit.edu will not accept it.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Project to publish. Defaults to the active project. | |
| build | No | Compile before uploading. Pass false only if you just built it. | |
| title | No | Project title. Used when creating, and renames on later saves. Max 100 characters. | |
| thumbnail | No | "auto" (default) renders the Stage backdrop as the thumbnail, since Scratch only generates one in its editor and an uploaded project otherwise shows a grey placeholder. Pass an image path to use your own, or "none" to leave it alone. | auto |
| visibility | No | "public" to share it, "private" to unshare it, "unchanged" to leave its current state alone. | unchanged |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | Yes | |
| title | Yes | |
| created | Yes | |
| warnings | Yes | |
| project_id | Yes | |
| visibility | Yes | |
| assets_skipped | Yes | |
| assets_uploaded | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains that the tool builds before uploading, reuses the project id on later saves, uploads assets separately because they are required for correct rendering, and refuses TurboWarp-only extensions. This is strong behavioral context, though it stops short of covering authentication prerequisites or detailed failure modes.
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?
Every sentence earns its place: the first sentence states the core action, and the following sentences explain lifecycle, asset handling, and an important rejection behavior. It is dense but not bloated, with no tangents or repeated schema 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 a tool with five optional parameters, an output schema, and no annotations, the description covers the important behavioral details: project id reuse, asset upload rationale, and the TurboWarp extension refusal. It is complete enough for routine use, though it could additionally clarify what happens when no active session exists.
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 all five parameters in detail. The description adds useful behavioral context around building and uploading but does not substantially extend the meaning of the parameters themselves, which keeps this at 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 states a specific action—build the project and upload it to scratch.mit.edu—and clarifies that it targets the active session. It is clear and specific, though it does not explicitly differentiate itself from similar sibling tools such as sb3_push_to_scratch or sb3_save_project.
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 conveys when the tool is appropriate by mentioning the first-save vs. later-save lifecycle and warning that TurboWarp-only extensions will be refused. It does not explicitly name alternatives or state when not to use this tool in favor of a sibling, so the guidance 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.
project_selectProject SelectA
Choose which open project the other project_* tools act on.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | Path of a project from `project_list`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | Yes | |
| path | Yes | |
| sprites | Yes | |
| built_sb3 | Yes | |
| is_active | Yes | |
| has_config | Yes | |
| published_project_id | Yes | |
| is_scratch_compatible | Yes |
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 disclose the key stateful behavior: selection determines the target of subsequent project_* tools. However, it does not mention whether the selection persists, whether an invalid path causes an error, or whether any prior selection is replaced.
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 concise sentence with no filler. The core scoping information ('which open project... other project_* tools act on') is front-loaded and every word earns its place.
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 simple one-parameter selector with an output schema and full schema parameter documentation, the description is nearly complete. The only shortfall is the lack of explicit behavioral detail about persistence and error handling, but no major information needed to call the tool correctly is missing.
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 schema provides 100% coverage for the single `path` parameter, describing it as a path from `project_list`. The tool description adds no additional parameter-specific meaning, so the baseline score of 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 names a specific verb ('Choose'), a resource ('which open project'), and the tool's role in the family ('the other project_* tools act on'). This makes it clearly distinguishable from sibling tools like project_list, project_open, and project_new, and from all other project_* operations.
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 clearly states when to use the tool: before other project_* tools, to set which open project they act on. It does not explicitly name alternatives or say when not to use it, but the role as a context selector is unambiguous and sufficient for a simple one-parameter tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
project_set_thumbnailProject Set ThumbnailA
Set the thumbnail of a published project.
Scratch generates thumbnails in its editor, so a project uploaded through
this server keeps the grey placeholder until one is set. project_save_to_cloud
does this automatically; use this tool to change it afterwards.
With no file, the Stage's first backdrop from the latest build is used,
converted from SVG if a rasteriser is available. 480x360 suits Scratch best.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Image to upload (PNG, JPEG, GIF, or SVG if a rasteriser is installed). Omit to use the project's backdrop. | |
| path | No | Project to act on. Defaults to the active project. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 explains the underlying mechanism (Scratch generates thumbnails, grey placeholder), the conditional SVG-to-raster conversion, and the default fallback to the Stage's first backdrop. It does not mention permissions or error cases, but for a simple setter this is adequate; the absence of any contradiction with annotations (none exist) keeps this from being a 5.
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 well-organized: a clear lead sentence followed by practical context and a note on the ideal resolution (480x360). Each sentence earns its place—no filler—though the explanation of Scratch's thumbnail generation could be considered slightly verbose, it is still purposeful.
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 covers prerequisites (published project, rasteriser availability), the default behavior, and directs to the alternative tool. An output schema exists, so return values need not be described. Minor gaps like error handling or permissions are acceptable for a straightforward setter.
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 parameters are already documented. The description adds meaningful context: what happens when `file` is omitted (backdrop used) and the format constraints (SVG only with a rasteriser). This goes beyond the schema's dry field 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 states a specific verb ('Set') and a resource ('thumbnail of a published project'), clearly distinguishing it from the sibling `project_save_to_cloud` which performs the same action automatically. The purpose is unambiguous and the tool's scope is well-defined.
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?
Explicitly directs the agent: 'use this tool to change it afterwards' and notes that `project_save_to_cloud` does this automatically. This makes the decision between the two tools clear, leaving no ambiguity about 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.
project_summaryProject SummaryA
Inspect what a project actually compiled to.
Reads the built .sb3 and reports every target with its block and script counts, costumes, sounds, variables and lists, plus the assets embedded and which sprites use them. Use it to verify a build did what you intended -- that a costume really got attached, that layer order is right, that a sound is present and not oversized.
Requires a build; run project_build first. Warns if the source has been
edited since the .sb3 was written.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | Project to inspect. Defaults to the active project. |
Output Schema
| Name | Required | Description |
|---|---|---|
| stale | Yes | |
| assets | Yes | |
| sb3_kb | Yes | |
| project | Yes | |
| targets | Yes | |
| sb3_path | Yes | |
| warnings | Yes | |
| extensions | Yes | |
| global_lists | Yes | |
| total_blocks | Yes | |
| global_variables | Yes | |
| turbowarp_only_extensions | Yes |
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 of behavioral disclosure. It clearly indicates a read-only inspection operation, discloses that it requires a prior build, and mentions a warning condition (source edited since the .sb3 was written). This is strong transparency for a simple read tool.
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 tightly written with no wasted sentences. The opening line states the core purpose, the middle gives concrete verification examples, and the final line covers the prerequisite and a warning behavior. Every sentence earns its place.
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 one optional parameter and an output schema, the description is complete. It specifies the input, the prerequisite build step, the kind of information returned, and a notable warning condition. An agent has enough information to decide when and how to call it correctly.
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 single parameter 'path' is already fully documented in the input schema with a description and default value, so schema coverage is 100%. The tool description adds no additional parameter meaning, but none is really needed here; the 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 uses a specific verb ('Inspect', 'Reads') and a concrete resource ('the built .sb3'), and states exactly what it reports: target counts, costumes, sounds, variables, lists, and asset usage. It clearly distinguishes itself from build-related siblings like project_build by focusing on post-build verification.
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 gives explicit context: use it after building to verify a build did what you intended, and it explicitly states the prerequisite 'run project_build first'. It does not name alternative inspection tools or explicitly say when not to use it, but the usage context is clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_add_broadcastSb3 Add BroadcastC
Add a broadcast message. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations provided, so the description carries the full burden of behavioral disclosure. It mentions '(proxied)' which hints at some indirection, but does not explain what proxying entails (e.g., network call, side effects, state changes). It does not state whether this is a read-only or mutating operation, though 'Add' implies mutation. It does not disclose any side effects or limitations.
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, which is efficient, but it is too sparse to be considered complete. It lacks critical information, so it is not well-structured in terms of content. It gets a neutral score for being short but not adding much value.
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 tool has only one parameter and no annotations, but the description is extremely thin. It doesn't cover the meaning of 'name', the context in which broadcast messages exist, or any constraints. Given the tool is part of a large Scratch editing environment, more context is needed for correct invocation. The absence of output schema details (though output schema exists) is not a major issue, but the lack of parameter guidance and usage context is a significant gap.
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 0% description coverage and the only parameter 'name' is a bare string with no description. The description does not explain what 'name' should be: a unique identifier, a human-readable label, or the broadcast message text itself. No format constraints or examples are provided, so the agent must guess.
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 states a specific verb ('Add') and resource ('broadcast message'), which is clear. However, it does not distinguish this from sibling operations like sb3_add_sound or sb3_add_costume, beyond the resource type. The description is minimal and lacks detail about what a broadcast message is in the Scratch context.
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 is given on when to use this tool versus alternatives. It does not specify prerequisites, such as having a project open or a sprite selected, nor does it indicate whether it applies to the stage or a sprite. The agent has to infer usage from the context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_add_commentSb3 Add CommentC
Add a sprite comment. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| x | No | ||
| y | No | ||
| text | Yes | ||
| target | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says the operation 'adds' a comment, with no mention of side effects, required project state, validation behavior, or what the '(proxied)' parenthetical means. The ambiguity of 'proxied' is a notable 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 terse, but under-specification is not conciseness. The phrase '(proxied)' is vague and takes up space without earning its place. A four-parameter mutation tool needs more than a single clause.
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 having an output schema and a long sibling list, the description is not complete enough for an agent to confidently call this tool. It omits usage context, parameter meaning, coordinate semantics, and clarification of 'proxied'.
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 0%, and the description adds no parameter documentation. The roles of 'target' and 'text' are inferable from their names, but 'x' and 'y' defaulting to 0 are unexplained, and no coordinate system, units, or required format is described.
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 states a specific verb and resource: 'Add a sprite comment.' This makes the core action clear. It does not strongly distinguish this from the sibling sb3_set_comment, but 'add' versus 'set' reasonably implies creation versus updating, so the purpose is understandable.
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 is given for when to use this tool versus alternatives such as sb3_set_comment, sb3_list_comments, or sb3_remove_comment. The description provides no context about prerequisites, project state, or selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_add_costumeSb3 Add CostumeC
Add a costume from a file. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| path | Yes | ||
| target | Yes | ||
| dataFormat | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 says 'Add a costume from a file' but doesn't disclose whether this modifies the current project in memory, requires saving, overwrites existing costumes, or what happens with invalid file paths. The '(proxied)' term is unexplained. For a mutation tool with zero annotation coverage, 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 extremely short (one sentence), which is concise, but it omits essential context. The '(proxied)' parenthetical is cryptic and doesn't earn its place without explanation. It's under-specified rather than efficiently complete.
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 4 parameters, 0% schema coverage, no annotations, and an output schema present, the description is inadequate. An agent cannot determine what 'target' refers to, what file formats are supported, or what the output schema represents. The sibling list shows many related tools, but this description doesn't help an agent navigate them.
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 0%, so the description must compensate. It only mentions 'from a file' which hints at the 'path' parameter, but doesn't explain 'target', 'name', or 'dataFormat'. The description adds minimal meaning beyond the schema's bare parameter names.
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 states a clear verb and resource: 'Add a costume from a file.' This distinguishes it from sibling tools like sb3_add_sound and sb3_remove_costume. However, it doesn't explicitly mention the target/scope (e.g., which target the costume is added to) or differentiate from project_add_costume, so it's clear but not fully differentiated.
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 like project_add_costume or sb3_add_sound. The description doesn't mention prerequisites (e.g., a project must be open, target must exist) or context for when adding a costume is appropriate. The '(proxied)' note hints at some indirection but doesn't explain it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_add_soundSb3 Add SoundC
Add a sound from a file. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| path | Yes | ||
| target | Yes | ||
| dataFormat | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden, but it only says the operation adds a sound from a file. It does not disclose side effects, whether existing sounds are overwritten, target requirements, or any proxied behavior beyond the unexplained word '(proxied)'.
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 brief and front-loaded, but the parenthetical '(proxied)' is cryptic and does not earn its place. The single sentence is concise yet too under-specified to be considered well-structured.
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 4-parameter tool with no annotations and zero schema description coverage, this description is far from complete. Even with an output schema available, an agent cannot determine what the parameters mean, how to supply them, or how this operation relates to sibling sound tools.
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 0%, so the description must compensate for the undocumented parameters, but it does not explain 'target', 'name', 'path', or 'dataFormat'. The phrase 'from a file' only weakly implies that 'path' is a file path.
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 'Add a sound from a file' states a specific verb and resource, making the core operation clear. However, it does not distinguish this tool from the sibling 'project_add_sound', which also appears to add sounds, so it stops short of full sibling differentiation.
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?
There is no guidance about when to use this tool rather than project_add_sound or other asset-related tools. The parenthetical '(proxied)' hints at some environmental context but does not explain appropriate use cases or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_add_spriteSb3 Add SpriteC
Add a sprite; props is a JSON object string. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| props | No | {} |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 discloses that the tool is 'proxied' (suggesting a pass-through) but gives no information about side effects, required permissions, failure modes, or how the operation behaves (e.g., whether it overwrites, appends, or validates). For a mutating tool, 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 extremely brief (one sentence), which is concise, but it is under-specified rather than efficiently structured. It front-loads the core action, which is good, but omits essential usage and behavioral details. The parenthetical '(proxied)' is cryptic and does not contribute to 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 simplicity (2 parameters, no nested objects) and the presence of an output schema, the description might be adequate in isolation, but it lacks any guidance on usage context, parameter constraints, or typical invocation patterns. With many sibling tools, the absence of differentiation makes it incomplete for reliable agent selection.
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 0%, so the description must compensate. It clarifies that 'props' is a JSON object string, but provides no detail on what properties the JSON may contain or how 'name' is used. The schema itself only lists types and defaults; the description adds minimal value beyond that, and the lack of examples or constraints leaves the agent guessing.
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 states the primary action 'Add a sprite' with a clear verb and resource, distinguishing it from related operations like sb3_remove_sprite and sb3_set_sprite. However, it does not explicitly differentiate from other 'add' tools (e.g., sb3_add_costume, sb3_add_sound), but the resource (sprite) is clear enough. The mention of 'props' adds a hint of configurability.
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. It does not mention when not to use it, or any conditions that would make another tool more appropriate. The description only states what it does, leaving the agent to infer when to apply it, which is insufficient for a tool with many siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_cloud_get_varsSb3 Cloud Get VarsA
Read current cloud variable values for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. 'Read' indicates a non-mutating operation, but it does not mention any prerequisites (e.g., cloud variables enabled) or edge cases. It is minimal but not misleading.
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?
A single sentence with no redundant words. The action and target are front-loaded, making it immediately scannable.
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 simple nature (one parameter, read-only) and the presence of an output schema, the description covers the essential purpose. It does not elaborate on limitations, but for a basic read tool this is acceptable.
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 0%, so the description must compensate. It only hints that 'for a project' relates to project_id but does not explain the parameter's format, source, or validation requirements. The agent gets little guidance beyond the parameter name.
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 action (read) and the resource (current cloud variable values for a project). It distinguishes itself from sibling sb3_cloud_set_var (write) and sb3_cloud_logs (logs) without ambiguity.
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 it is the read counterpart to sb3_cloud_set_var and sb3_cloud_logs, but it does not explicitly state when to use it over alternatives or mention any exclusions. Usage context is inferred rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_cloud_logsSb3 Cloud LogsC
Recent cloud activity log for a project.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does not state whether this is a read-only operation, what constitutes an activity log entry, how 'recent' is defined, or whether pagination or limits apply. The word 'log' hints at non-mutating behavior, but that is not explicit.
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 short sentence with no filler words. It is front-loaded with the core subject and avoids redundancy with the title.
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?
Although the tool is simple and has an output schema, the description still leaves key selection and invocation context unspecified: what an activity log entry looks like, what limit controls, and when to prefer this over cloud variable tools. The output schema helps but does not replace usage guidance.
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 0%, so the description needed to compensate. It only mentions 'a project,' which loosely maps to project_id, but it says nothing about the limit parameter or how these parameters affect the returned log. The schema provides basic names and types, but not behavioral meaning.
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 identifies the resource: recent cloud activity logs for a project. It is specific enough to distinguish itself from cloud variable reads/writes like sb3_cloud_get_vars and sb3_cloud_set_var, though it lacks an explicit verb like 'retrieve'.
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 gives no guidance on when to use this tool versus alternatives, nor does it mention any prerequisites or exclusions. The only usage signal is the phrase 'for a project,' which only implies it needs a project_id.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_cloud_set_varSb3 Cloud Set VarC
Set a cloud variable value.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| value | Yes | ||
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. It only states the action without mentioning side effects (e.g., that this mutates cloud data), permission requirements, rate limits, or return behavior. For a write operation, this is a notable 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, concise sentence with no filler. However, it is so minimal that it offers almost no structural information or context, making it barely more than a tautology of the tool name. It is concise but not informative enough to score higher.
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 three required parameters and an output schema, the description should at least clarify what the parameters mean (e.g., value format, whether it's a string or number) and any constraints. With only a bare action statement, the description is wholly inadequate for correct invocation.
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 0%, and the description gives zero explanation of the three parameters (project_id, name, value). The agent has to infer their meaning from names alone, which is insufficient for a cloud variable setting tool where value formatting and name restrictions matter.
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 action verb 'Set' and the resource 'cloud variable value', distinguishing it from plain variable setters like sb3_set_variable by explicitly mentioning 'cloud'. However, it does not explicitly call out sibling alternatives, so it stops short of a 5.
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 the many related tools (e.g., sb3_cloud_get_vars for reading, sb3_set_variable for non-cloud variables). There is no mention of prerequisites, context, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_delete_listSb3 Delete ListC
Delete a list. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| target | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the behavioral disclosure burden. It notes the operation is 'proxied' and implies a destructive delete, but it does not explain side effects, irreversibility, target scoping, or whether any confirmation or safeguards exist.
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 and front-loaded, with no filler. However, the parenthetical '(proxied)' is unexplained and the overall terseness crosses from concise into under-specified, leaving the agent without enough context.
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 two required string parameters, no annotations, and zero schema coverage, the description is too skeletal. It does not explain how to identify the list, whether 'target' is a sprite/project identifier, or what behavior to expect after deletion.
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 0%, and the description provides no information about what 'target' or 'name' mean. An agent cannot determine whether 'name' is the list name, a variable name, or something else, nor what 'target' refers to.
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 states a specific action ('Delete a list') and resource, and the tool name/title reinforce this. It distinguishes at least from sibling sb3_delete_variable by targeting a list rather than a variable, though it does not explain what kind of list or in what context.
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 is given for when to use this tool versus alternatives such as sb3_delete_variable, sb3_set_list, or related project/sprite tools. The phrase 'Delete a list' implies a use case but provides no prerequisites, exclusions, or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_delete_variableSb3 Delete VariableC
Delete a variable. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| target | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It states only that deletion occurs and that it is 'proxied,' but does not disclose irreversibility, effect on the project, permissions, or what happens if the variable does not exist.
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 sentence is very short and front-loaded, but the parenthetical 'proxied' is vague and does not clearly earn its place. The brevity is appropriate for the two-parameter operation, but it sacrifices useful detail.
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?
An output schema may cover return values, but an agent still needs context about variable scope, target semantics, and the delete operation's effect on the project. The description is too sparse to fully support correct invocation.
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 0%, and the description gives no meaning for 'target' or 'name' beyond the bare schema. It does not specify that target identifies the sprite/stage scope or what form name should take.
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 states the exact operation: 'Delete a variable.' The verb and resource are specific, and the name distinguishes it from sibling tools like sb3_delete_list and sb3_set_variable, though it does not explicitly contrast with them.
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 is provided about when to delete a variable, whether it applies to the current target/sprite, or how this compares with sb3_set_variable or the cloud variable tools. The reader is left to infer scope and prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_enable_extensionSb3 Enable ExtensionB
Register an extension so its blocks load. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | ||
| url | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral disclosure. It only notes '(proxied)' and the registration effect, but does not explain side effects, whether registration is idempotent, network dependencies, or any reversibility. This is thin for a state-changing operation.
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 plus a useful parenthetical. It front-loads the core purpose and contains no filler.
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 no annotations and undocumented parameters, the description is too sparse. It leaves important questions about the 'url' parameter, registration behavior, and failure modes unanswered, despite an output schema being present.
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 0%, so the description must compensate. 'Extension' loosely implies that 'id' identifies an extension, but 'url' is completely unexplained. The description adds minimal meaning beyond the raw parameter names.
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 uses a specific verb ('Register') and resource ('an extension') and states the purpose ('so its blocks load'). It is not a tautology and clearly identifies the tool's function, though it does not explicitly differentiate 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?
The phrase 'so its blocks load' implies the use case: enable an extension when its blocks are needed. However, there is no explicit guidance about when not to use it or which alternative tool might be preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_favoritesSb3 FavoritesA
List a user's favorited projects (id + title).
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. The verb 'List' and the explicit output fields convey that this is a read-only retrieval, but it does not disclose authentication needs, ordering, pagination, or handling of unknown users. This is adequate but has clear gaps.
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 with no filler. It names the action, the subject, and the output contents in under ten 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?
For a simple one-parameter list tool with an output schema present, the description captures the core invocation requirements. It is slightly incomplete because it omits session/auth expectations, but the low complexity and output schema prevent this from being a major gap.
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 0% and the description adds no parameter-specific guidance: it never explains the expected username format, casing, or that the favorites belong to the given username. The phrase 'a user's favorited projects' is the only clue that the username identifies the favorites owner.
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?
States a specific verb and resource ('List a user's favorited projects') plus the returned fields ('id + title'). This makes its purpose instantly distinguishable from the many sibling tools, such as social_get_user_info or project_list.
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 is given about when to use this tool instead of related tools, whether an active session/login is required, or whether favorites are public vs private. The description only names the action, so the agent must infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_find_blocksSb3 Find BlocksA
Query every target's blocks map in the open project. (proxied)
Filters combine (AND): opcode substring, field value, input name, topLevel-only. Needs an open project, not the VM.
| Name | Required | Description | Default |
|---|---|---|---|
| hat | No | ||
| limit | No | ||
| opcode | No | ||
| inputName | No | ||
| fieldValue | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. 'Query' signals a read-only operation, 'proxied' adds a transport/behavioral note, and 'not the VM' clarifies that no VM execution is involved. It does not explicitly state that nothing is mutated, but the query language and the tool's purpose make that reasonably clear.
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, front-loaded with the action, and each sentence contributes meaningful context. The parenthetical '(proxied)' is slightly vague and could be expanded or removed, but overall the prose is tight.
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 provides the core purpose, filter semantics, and prerequisite, and the output schema covers return shape. Yet it omits meaning for two schema parameters (hat and limit), and the topLevel-only phrasing is ambiguous against the actual parameter list. An agent could therefore mis-set filters or wonder how to express 'topLevel-only'.
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 0%, so the description must compensate. It usefully explains that opcode is a substring and that filters combine with AND, and it mentions fieldValue and inputName. However, it leaves hat and limit unexplained, and the 'topLevel-only' filter does not directly correspond to any schema parameter, creating ambiguity.
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 names a specific verb ('Query'), resource ('every target's blocks map'), and scope ('in the open project'). This clearly distinguishes it from sibling tools like sb3_get_target or sb3_list_blocks by emphasizing all targets.
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 gives a clear precondition ('Needs an open project') and an explicit exlusion ('not the VM'). It does not name an alternative sibling tool or explain exactly when to prefer this over sb3_list_blocks, so it falls just short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_get_block_schemaSb3 Get Block SchemaB
Full schema for one opcode incl. shadow encodings. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| opcode | Yes | ||
| target | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral context. It does disclose that the operation is '(proxied)' and that it returns the full schema, but it does not describe error behavior, scope, or any limitations of the proxy.
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 and front-loaded, carrying the core purpose plus a useful proxying note with no filler.
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 output schema covers return shape, and the operation is small, but the description omits the meaning of the optional target parameter and how opcode values are obtained. Minimal but viable for an agent that already knows the opcode.
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 0%, so the description must explain parameters. It clarifies that 'opcode' selects one opcode, but it says nothing about the 'target' parameter or valid opcode values/formats, leaving the agent to guess.
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 states the resource clearly: 'Full schema for one opcode incl. shadow encodings', which is more informative than the tool name alone. It does not explicitly contrast with block-listing/finding siblings, so it loses the top point.
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 phrase 'for one opcode' implies the use case of retrieving a single opcode's schema, but the description gives no explicit when-to-use/when-not-to-use guidance or mention of alternatives among the many sb3 tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_get_targetSb3 Get TargetB
Full details for a sprite or Stage. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses that both sprites and the Stage are valid inputs and that the call is proxied, but it never explains what proxied means (latency, auth, or data freshness implications), how unknown names are handled, or whether any side effects exist.
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 with no filler; every word contributes. The '(proxied)' parenthetical is slightly cryptic but adds a behavioral hint without bloating the text.
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 low-complexity, single-parameter getter with an output schema, the core purpose is covered. However, the unexplained proxy behavior and the unstated parameter semantics are gaps an agent must guess at; the lack of sibling differentiation also weakens 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?
Schema description coverage is 0% and the description never explicitly states that 'name' is the target's name, nor whether an internal or display name is expected. It is inferable from the tool name and purpose, but the description adds essentially no meaning beyond the bare 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 'Full details for a sprite or Stage' names the resource (a target) and the nature of the operation (returning complete details), so an agent can grasp the core purpose. It does not, however, differentiate itself from the near-identical sibling sb3_get_target_json, and the verb is implicit rather than stated.
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?
There is no guidance on when to use this tool versus alternatives such as sb3_get_target_json, sb3_list_sprites, or sb3_get_target_json. The parenthetical '(proxied)' hints at a mechanism, not at usage context, and no conditions, prerequisites, or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_get_target_jsonSb3 Get Target JsonC
Raw project.json entry for a target, or subtree at a JSON Pointer. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| pointer | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. It does not state what 'proxied' means (e.g., network calls, performance implications), whether the tool returns the entire raw block or subtree, or whether it depends on a loaded project. It does not disclose any side effects (likely none) or permissions needed. The term 'Raw' suggests no processing, but that is not elaborated.
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) and front-loads the key idea. It is not verbose. The parenthetical '(proxied)' is an extra detail but not explained, yet it does not waste much space. Given the minimalism, it earns a 4 for 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?
There is an output schema, but we are not shown its content. The tool is relatively simple (2 params, no nested objects), but zero parameter descriptions and lack of usage context make it incomplete. An agent would struggle to know what to pass for 'pointer' and what to expect. Given no annotations and no schema descriptions, the description is insufficient for correct invocation.
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 0%, meaning the schema provides no descriptions for 'name' or 'pointer'. The description only mentions 'target' and 'JSON Pointer', which maps to 'name' and 'pointer' respectively, but this is minimal. It does not explain the format of 'pointer' (e.g., JSON Pointer syntax), default behavior when pointer is empty, or what 'name' refers to (target name?). With 0% coverage, the description must compensate but does not, leaving two parameters almost completely undocumented.
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 states it retrieves a 'Raw project.json entry for a target, or subtree at a JSON Pointer', which clearly indicates the resource (project.json) and the operation (retrieve). However, it lacks specificity about what a 'target' is and how it relates to siblings like sb3_get_target (which likely retrieves a processed target). The verb is implied ('get') but not explicit. It is more than a taautology, but it does not fully distinguish from similar 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 explicit guidance on when to use this tool versus alternatives. The mention of 'JSON Pointer' hints at advanced use but no context is given. Among siblings, there is sb3_get_target, sb3_list_sprites, and others, but the description does not state when to prefer this raw JSON retrieval over those. The proxy annotation '(proxied)' is mentioned but not explained.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_git_diffSb3 Git DiffA
Summarise an unpacked project dir: targets, block counts, assets.
| Name | Required | Description | Default |
|---|---|---|---|
| project_dir | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden; it states what the tool reports (targets, block counts, assets) and implies a non-destructive read operation. However, it does not address edge cases such as invalid or non-unpacked directories, whether anything is modified, or any side effects, leaving safety properties to inference.
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?
A single eight-word sentence with zero filler: the action, the resource constraint ('unpacked'), and the output contents are all front-loaded and every word earns its place.
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 single-parameter tool with an output schema, the description covers the essential 'what' and provides the key parameter clue (unpacked directory). It is incomplete in that the tool's 'diff' naming is left unexplained and its relationship to similarly purposed siblings (project_summary, sb3_project_info) is never clarified.
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 0% and 'project_dir' is only typed as a required string, so the description's 'unpacked project dir' is the sole semantic guidance for the parameter. It usefully disambiguates the parameter as a directory path rather than a packed .sb3 file, but it does not specify path formats, absolute/relative requirements, or behavior on invalid input.
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 states a specific action ('Summarise') and resource ('an unpacked project dir'), and enumerates the covered contents ('targets, block counts, assets'). However, it does not differentiate this from overlapping siblings like project_summary or sb3_project_info, and the title 'Diff' versus the action 'Summarise' creates some ambiguity about whether the tool computes differences.
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 qualifier 'unpacked' implies the tool is used on directories produced by an unpack step (e.g., sb3_git_unpack) rather than packed .sb3 files, which is a genuine usage constraint. But no alternatives are named, no when-not-to-use conditions are given, and nothing routes an agent away from similarly purposed siblings like project_summary or sb3_project_info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_git_packSb3 Git PackB
Pack a diffable directory back into an .sb3.
| Name | Required | Description | Default |
|---|---|---|---|
| sb3_path | Yes | ||
| project_dir | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It does not disclose whether an existing .sb3 file is overwritten, whether the directory is modified, or any other side effects beyond 'packing.'
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 with no filler or redundant phrasing. The core operation is stated immediately and the wording is efficiently compact.
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 no annotations and undocumented parameters, this description is too sparse to fully support correct invocation. An agent cannot confidently determine source vs destination semantics, existing-file behavior, or expected input formats without additional inference.
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 schema has 0% description coverage and the properties are only bare names: 'sb3_path' and 'project_dir.' The description does not clarify which parameter is the source directory and which is the output archive, leaving the direction of the operation ambiguous.
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 uses a specific verb and resource: 'Pack a diffable directory back into an .sb3.' The word 'back' implies this is the inverse of unpacking, which helps distinguish it from sb3_git_unpack, though it does not explicitly name 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?
The phrase 'diffable directory' and 'back' imply this tool is used after unpacking or editing a project directory, but the description gives no explicit when-to-use guidance, prerequisites, or alternatives. Usage context is suggested rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_git_unpackSb3 Git UnpackA
Unpack an .sb3 into a diffable directory (project.json + assets/).
| Name | Required | Description | Default |
|---|---|---|---|
| out_dir | Yes | ||
| sb3_path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It does disclose that the tool creates a directory containing project.json and assets/, which is meaningful output behavior. It does not mention whether out_dir must already exist, whether it is created or overwritten, or what happens on invalid input.
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 with no filler. The key operation and output format are placed right in the main clause, and every word contributes to understanding.
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 simple two-parameter tool with an output schema, the description gives the core purpose and expected output layout. However, the complete absence of annotations and parameter descriptions leaves important invocation details unaddressed, such as directory creation/overwrite behavior and path semantics.
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 0%, but the two parameter names are self-explanatory and the sentence 'Unpack an .sb3 into a diffable directory' establishes sb3_path as the input and out_dir as the output. The description adds some semantic context beyond the bare schema, but it does not explain path requirements, format expectations, or whether out_dir will be created.
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 states a specific verb ('Unpack'), a clear resource ('.sb3'), and the output form ('diffable directory (project.json + assets/)'). It is easy to distinguish from the sibling sb3_git_pack and sb3_git_diff by meaning, though it does not explicitly name or contrast any sibling.
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 phrase 'into a diffable directory' implies the tool is for preparing an .sb3 for version-control or diff workflows, which gives some usage context. However, it never states when to prefer this over sb3_git_pack, sb3_git_diff, or related project tools, and gives no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_list_blocksSb3 List BlocksB
Catalog of standard opcodes from scratch-vm, optionally by category. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral weight. It usefully states that this is a proxied catalog sourced from scratch-vm and can be filtered by category, implying a read-only operation. However, it does not explain category value handling, failure behavior, or what counts as 'standard' beyond the source.
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 with no filler. It states the resource, the optional filtering behavior, and the proxied nature in very few 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?
For a simple one-optional-parameter tool with an output schema, the description is minimally viable: it says what is returned and that category can filter it. But it omits any comparison to sibling tools and leaves category vocabulary unspecified, so context is not fully complete.
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 schema has one parameter 'category' with 0% description coverage, so the description must compensate. 'Optionally by category' does clarify that the parameter filters the catalog, but it does not enumerate valid values or define behavior for unknown categories. This is minimal compensation.
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 identifies a concrete resource ('standard opcodes from scratch-vm') and an optional modifier ('by category'), which makes the tool's purpose understandable. It lacks an explicit verb and does not differentiate it from sibling block-related tools, but the catalog/list intent is clear.
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 is given for when to use this tool versus alternatives such as sb3_get_block_schema, sb3_find_blocks, or spy_list_block_types. The only usage hint is that category filtering is optional, which is not enough to route an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_list_commentsSb3 List CommentsA
List sprite comments. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. 'List' implies a read-only operation and 'proxied' hints at a relayed request, but there is no explanation of what proxying means, whether an active project or selected sprite is required, or any side effects. These gaps are not compensated by annotations.
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 only four words plus a parenthetical, and every element is relevant. It is front-loaded with the core operation and avoids any fluff. 'proxied' is terse but not 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?
For a zero-parameter list tool with an output schema, the description is minimally viable, but it leaves the agent without context about active project/selected sprite requirements, the meaning of 'proxied', or the relationship to sibling comment tools. It is sufficient for a simple call but not fully complete.
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 tool has zero parameters and an empty schema, so the baseline is 4 and the description does not need to document parameter details. Nothing about parameters is missing or misleading.
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 states a specific verb ('List') and resource ('sprite comments'), and the 'sprite' qualifier distinguishes it from social comments and from sibling mutation tools like sb3_add_comment, sb3_set_comment, and sb3_remove_comment. The name and description together leave no ambiguity about the operation.
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 is given for when to use this tool instead of alternatives. It does not mention that this is the read counterpart to sb3_add_comment/sb3_set_comment/sb3_remove_comment, nor how it differs from social_get_comments. The agent must infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_list_spritesSb3 List SpritesB
Every sprite with position/size/media. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. It only mentions output scope and the cryptic '(proxied)' tag; it does not state read-only behavior, project context, or any error/edge-case behavior.
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 and front-loaded, with no filler. The only questionable element is '(proxied)', which is unexplained and may confuse rather than clarify.
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 no parameters and an output schema present, the required context is minimal. Still, the description omits that this lists sprites in the currently open project and leaves '(proxied)' undefined, so it is adequate but not fully self-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?
The tool has zero parameters, so there is no parameter ambiguity for the agent to resolve. The description does not need to add parameter details because the schema is already complete and trivial.
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 identifies the resource (sprites) and the included fields (position/size/media), which is enough to distinguish it from block/target tools. However, it is phrased as a noun fragment rather than an explicit verb phrase like 'Lists every sprite...'.
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?
There is no guidance on when to use this tool versus alternatives such as sb3_get_target or sb3_get_target_json. It also does not mention that it operates on the currently open project, which is important context for correct invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_open_projectSb3 Open ProjectC
Load an .sb3 file into the Node editor. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It only says 'Load' and '(proxied)', without revealing side effects, whether the current project is replaced, file access requirements, or error behaviors. The '(proxied)' hint is unexplained and does not constitute meaningful behavioral 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 short sentence with no filler. Every word earns its place, though the parenthetical '(proxied)' is terse and could be more explicit. Structure is clean and front-loaded.
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 no annotations and a simple schema, the description leaves important context unaddressed: what happens to unsaved work, whether loading is reversible, and what 'proxied' means for file handling. The output schema may cover return values, but the tool's invocation context remains incomplete.
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 0%, so the description must compensate. It implies that 'path' points to a .sb3 file, but gives no details about path format, accessibility, or validation. This is minimal compensation for the undocumented parameter.
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 states a specific verb ('Load'), resource ('.sb3 file'), and destination ('Node editor'), which clearly distinguishes this tool from siblings like project_open and sb3_vm_load. The parenthetical '(proxied)' adds a technical detail but does not obscure the core purpose.
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 gives no guidance on when to use this tool versus alternatives such as project_open, sb3_open_scratch_project, or sb3_vm_load. The intended use is only implied by the verb and resource, with no mention of exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_open_scratch_projectSb3 Open Scratch ProjectB
Download a scratch.mit.edu project by id for editing. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| projectId | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It does reveal that the operation downloads from scratch.mit.edu, is proxied, and is intended for editing. It does not mention whether the current project is replaced, whether authentication is required, or whether any local state is mutated.
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 one short sentence plus a parenthetical, with no filler. The primary action, target resource, and useful caveat ('proxied') are front-loaded and each word earns its place.
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 one-parameter tool with an output schema, the description covers the core action well enough to guess correct usage. It is incomplete in that it lacks id-format details and fails to guide selection among the many sibling open/download tools.
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 0% and the description only says 'by id', without clarifying the expected format (e.g., numeric Scratch project ID, URL, or project name). The single parameter name 'projectId' is helpful, but the description does not compensate for the missing schema documentation.
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 uses a specific verb ('Download') and identifies the resource ('a scratch.mit.edu project by id') and purpose ('for editing'), which makes the operation concrete. However, it does not differentiate itself from close siblings like sb3_open_project or project_open, so it stops short of a 5.
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?
There is no guidance on when to use this tool versus alternatives such as sb3_open_project, project_open, project_download, or spy_open_project. 'For editing' hints at intent but does not state conditions, exclusions, or preferred usage contexts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_patch_targetSb3 Patch TargetC
Apply RFC 6902 JSON Patch (as JSON string) to a target. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| patch | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure, but it only adds '(proxied)' and the patch format. It does not mention whether the target must already exist, whether changes persist, what happens on invalid patch syntax, or whether this is a mutating operation beyond the verb 'apply'.
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, focused sentence with no filler. It front-loads the core action and format, though its brevity comes at the cost of missing usage and behavior context.
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 no annotations, low schema coverage, and an output schema not described, the definition is too sparse. An agent would not know how to identify the target, what a valid patch payload looks like in practice, or what response to expect.
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 0%, so the description must compensate, but it only clarifies that patch is a JSON string. The 'name' parameter is unexplained, leaving the agent to infer that it identifies the target.
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 names a specific action ('Apply RFC 6902 JSON Patch') and a clear resource ('a target'), which differentiates it from most sibling tools that set individual properties or read target state. However, 'target' is not explicitly defined as a sprite/stage or by a parameter, leaving some ambiguity.
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 is given on when to use this tool versus alternatives like sb3_set_variable, sb3_rename_target, or sb3_get_target. The description only states what the tool does, not the conditions under which patching is the right choice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_project_infoSb3 Project InfoB
Targets, extensions, monitors, meta of open project. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 only mentions 'proxied' which hints at network behavior but doesn't clarify side effects, auth, or read-only nature. It fails to disclose whether the operation is safe or has any limitations.
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 short and front-loaded, containing no filler. However, it is almost too terse, omitting useful context that would aid an agent. It is concise but not well-rounded, earning a middle score.
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 simplicity (no parameters) and presence of an output schema, the description is partially complete. It lists the types of information returned, which helps, but it doesn't clarify the scope (e.g., what 'meta' includes) or whether any special conditions apply. It's adequate but not thorough.
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 tool has zero parameters, so the schema fully defines the input. The description doesn't need to explain parameters. The baseline of 4 is appropriate since there is nothing to add.
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 states the tool returns targets, extensions, monitors, and meta of the open project. This is a specific verb-resource pair and is clear enough to distinguish from many siblings, though it doesn't explicitly name alternatives. It's not a tautology and conveys the core purpose.
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 like project_info or sb3_get_target. There is no mention of context, exclusions, or conditions, leaving the agent to infer usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_push_to_scratchSb3 Push To ScratchC
Save the open project back to scratch.mit.edu (confirm-gated). (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | ||
| projectId | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosures. It adds 'confirm-gated' and 'proxied', which are useful, but it omits key behavior for a write/push operation: authentication requirements, remote side effects, reversibility, or what happens when confirm is false.
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 one concise, front-loaded sentence with useful parentheticals. There is no filler, but it is so terse that it sacrifices important behavioral and parameter context.
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 external push/mutation tool with no annotations and low parameter coverage, the description is too thin. It does not state prerequisites, what 'proxied' means for execution, or what projectId refers to. The presence of an output schema mitigates return-value concerns but not the other 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 description coverage is 0%, so the description needs to explain the parameters. 'confirm-gated' loosely hints at the confirm boolean, but projectId is not explained at all. This is insufficient for an agent to know how to set or omit projectId.
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?
Description states a clear action and target: 'Save the open project back to scratch.mit.edu'. This is specific and distinguishes it from generic save tools, though it doesn't explicitly differentiate from sibling save/push tools like sb3_save_project or project_save_to_cloud.
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 wording implies this is for persisting the currently open project to scratch.mit.edu, and 'confirm-gated' hints that confirmation is needed. However, there is no explicit when-to-use guidance, no alternatives named, and no mention of prerequisites 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.
sb3_reloadSb3 ReloadC
Load an .sb3 from disk in TurboWarp Desktop via bridge. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| path | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral disclosure burden. It reveals that the operation is a load through a bridge and is proxieed, but it does not state whether the current project is replaced, whether TurboWarp Desktop must be running, or what side effects or errors may occur.
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 with no filler. The '(proxied)' suffix is concise though somewhat cryptic.
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 a simple one-param signature, the description is too thin to fully guide invocation: it lacks path semantics, side effects, and interaction with the current project. Overlapping sibling tools increase the need for a richer description.
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 schema has one 'path' paramater with 0% description coverage. The description's 'from disk' clarifies that path refers to a local .sb3 file, but it does not explain path format, the default empty string, or whether extensions are required.
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 states a specific action ('Load an .sb3 from disk') and a specific environment ('TurboWarp Desktop via bridge'), making the tool's core purpose clear. It does not explicitly contrast with siblings like sb3_open_project or project_open, so it falls short of full differentiation.
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 is given about when to use this tool versus the many overlapping project-opening siblings. The parenthetical '(proxied)' hints at a special context but does not explain a decision rule for choosing this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_remixesSb3 RemixesC
List remix lineage info for a project (id, title, author).
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. It states the tool lists remix lineage but does not disclose whether it requires a loaded/open project, whether it makes network calls, what happens for projects with no remixes, or the exact structure of the returned lineage. The output schema exists but the description adds minimal behavioral context beyond the basic action.
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, short sentence that front-loads the action and resource. It is concise and readable, though it omits useful context that could be added without much bloat.
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 one required parameter, no annotations, and an output schema, the description is too thin. It does not clarify the project_id semantics, whether the project must be open, or how the remix lineage is structured. The output schema may define the return shape, but the description still leaves key invocation context unclear.
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 0%, and the description only mentions 'project_id' implicitly by saying 'for a project'. It does not explain what format the project_id should take (e.g., numeric Scratch project ID vs. a local identifier), nor how it relates to the project currently open in the environment. With a single required parameter and zero schema description, the description should compensate but does not.
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 states a specific verb ('List') and resource ('remix lineage info for a project'), and specifies the fields returned (id, title, author). It is clear and distinct from siblings like sb3_project_info or social_get_project_info, though it doesn't explicitly name a sibling to differentiate from.
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 the tool is for retrieving remix lineage, which is a distinct use case among the many project-related siblings. However, it does not explicitly state when to use this over alternatives like sb3_project_info or social_get_project_info, nor does it mention any prerequisites (e.g., project must be open or loaded).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_remove_commentSb3 Remove CommentB
Remove a sprite comment. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| comment_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. It only says 'Remove a sprite comment. (proxied)' and does not mention irreversibility, required permissions, side effects on replies, error behavior, or authentication. The 'proxied' note adds minor context but does not meaningfully disclose operational consequences.
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 and front-loaded, with no wasted words. The parenthetical '(proxied)' is somewhat vague but not redundant. It earns a high score for efficiency, though it is perhaps too terse to fully support the tool's usage.
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 destructive mutation tool with no annotations, the description is too thin. It does not clarify how to get a comment_id, whether the operation is reversible, what happens if the comment does not exist, or whether the comment is a code comment versus a social comment. Although an output schema exists, key operational context is missing.
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 one required parameter, comment_id, with 0% schema description coverage. The description does not mention comment_id or explain how to obtain it, what format it should be in, or how it relates to the sprite comment being removed. The parameter name is somewhat self-explanatory, but the description adds no real semantic value 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 states a specific verb and resource: 'Remove a sprite comment.' This clearly identifies the action and the target. It also differentiates from sibling tools like sb3_add_comment, sb3_set_comment, and sb3_list_comments by focusing on deletion, so an agent can distinguish it without opening schemas.
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 the tool: when a sprite comment needs to be removed. However, it provides no explicit guidance about alternatives, prerequisites, or exclusions, such as when to use sb3_set_comment instead or whether the project must be open first.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_remove_costumeSb3 Remove CostumeC
Remove a costume. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| target | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears the full burden of behavioral disclosure. It states the removal action but gives no details about side effects, reversibility, validation, or the behavior behind the parenthetical 'proxied'. The 'proxied' hint is opaque and not explained.
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 and front-loaded, which is structurally efficient. However, it is under-speccified: the unexplained 'proxied' parenthetical and complete absence of parameter or usage context make it feel sparse rather than deliberately 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?
For a mutation tool with no annotations and zero parameter documentation, the description is not complete enough. Although an output schema exists, the lack of explanation for target/name, proxy behavior, and side effects leaves significant gaps for an agent deciding how to invoke the tool safely and correctly.
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 0% and the description provides no explanation of the required 'target' and 'name' parameters. The parameter names are somewhat self-evident, but the description does not compensate for the missing schema documentation, leaving an agent to guess their roles and accepted formats.
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 states a specific action, 'Remove a costume,' which clearly identifies the tool's purpose and distinguishes it from sibling tools like sb3_remove_sound and sb3_remove_sprite. However, it adds little beyond the tool name and does not explain the 'proxied' qualifier, so it is clear but not fully enriched.
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 is given about when to use this tool over alternatives such as project_remove_asset or sb3_remove_sound. The description does not mention prerequisites, target types, or any conditions that would help an agent select this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_remove_soundSb3 Remove SoundC
Remove a sound. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| target | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. It states a destructive action ('Remove') but doesn't mention side effects, requirements (e.g., target must exist), or whether the change is reversible. The '(proxied)' hint is unexplained and provides no actionable behavioral information.
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 brief (one sentence plus a parenthetical), so it is concise. However, it omits essential details, and the '(proxied)' suffix is unclear and detracts from the message. It is under-specified rather than efficiently structured.
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 two undocumented parameters, no annotations, and a non-trivial operation within a project-editing system, this description is grossly inadequate. An agent cannot correctly invoke it without knowing what target and name refer to, how they relate to a sound, or what the expected outcome is.
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 0%, and the description provides no explanation of the 'target' and 'name' parameters. The schema only lists them as required strings with no descriptions, so an agent has no idea what values to provide or how they relate to the sound removal.
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 states a clear verb and resource: 'Remove a sound.' This distinguishes it from siblings like sb3_add_sound or sb3_remove_costume, though it doesn't clarify what a 'sound' is in the context of the project or that it operates on a target. The parenthetical '(proxied)' is ambiguous and doesn't add to purpose 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?
No guidance is given on when to use this tool versus alternatives such as sb3_remove_costume or sb3_remove_sprite. There are no prerequisites, context about project state, or exclusions. An agent would have to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_remove_spriteSb3 Remove SpriteC
Remove a sprite. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Remove a sprite' and '(proxied)', which does not explain side effects, whether the removal is permanent, whether it affects the current project, or what the output schema contains. The term 'proxied' hints at indirection but is not elaborated.
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 short and front-loaded, which is efficient, but the parenthetical '(proxied)' is cryptic and the brevity sacrifices necessary context. It is concise but not sufficiently 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 tool has an output schema and one parameter, the description is too sparse. It does not explain the effect on the project, the meaning of 'proxied', or how this relates to sibling sprite tools like sb3_set_sprite or sb3_add_sprite. An agent would need to inspect the output schema and other tools to use it correctly.
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 0%, and the description does not explain the 'name' parameter beyond its literal meaning. The description adds no information about what name refers to (e.g., sprite name, target name) or any constraints, leaving the agent to infer from the schema alone.
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 'Remove a sprite. (proxied)' states a clear verb and resource, so an agent knows the tool removes a sprite. However, it does not distinguish this from sibling tools like sb3_remove_costume or sb3_remove_sound, and the term 'proxied' is ambiguous without further explanation.
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 is given on when to use this tool versus alternatives. The description does not mention prerequisites, such as whether the sprite must be loaded or selected, nor does it explain what 'proxied' means in terms of usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_rename_targetSb3 Rename TargetC
Rename a sprite/stage target. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| newName | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only says 'Rename' and '(proxied)', which implies mutation but offers no details on side effects, error conditions, or what happens on conflicts. The 'proxied' hint is cryptic and unexplained.
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 short, but this is under-specification rather than conciseness. It lacks structure, offers no front-loaded critical details, and leaves the 'proxied' note unexplained. The one-sentence format is not a model of efficiency when key information is missing.
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 low complexity (two string params) and presence of an output schema, a fuller description is expected. The description omits how to identify the target, what 'proxied' means, any constraints on naming, and what the return value represents. It is not complete enough for reliable invocation.
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 no descriptions (coverage 0%), and the description provides no explanation of 'name' and 'newName'. Although the names are intuitive, the description adds zero semantic value beyond the schema itself, and with 0% coverage, the description fails to compensate.
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 states a clear action: 'Rename a sprite/stage target.' It identifies the resource (target) and the operation (rename). While it doesn't explicitly differentiate from sibling tools like sb3_patch_target or sb3_set_sprite, the name and verb make its purpose fairly unambiguous.
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 is provided on when to use this tool versus alternatives. There is no mention of prerequisites, how to specify a target (by name? by ID?), or what the 'proxied' qualifier means. An agent would have no idea when this is the right choice over sb3_patch_target or other target-modifying tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_run_projectSb3 Run ProjectB
Green flag in TurboWarp Desktop via bridge. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose behavior on its own. It only states 'Green flag' and '(proxied)'; it does not explain side effects like stopping or restarting execution, resetting project state, or requiring a connected TurboWarp Desktop instance. The parenthetical 'proxied' is ambiguous.
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 and contains no filler, which suits a zero-parameter tool. However, it is fragmentary rather than a full sentence, and 'proxied' is left unexplained, so it falls short of a perfect 5.
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 side-effecting action with no annotations and no parameters, the description should provide more context: preconditions, bridge requirements, and observable effects. The presence of nearly identical sibling tools makes the missing differentiation costly, so the description is not complete enough for confident invocation.
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 tool has zero parameters and 100% schema coverage, so there are no parameter semantics to explain. The description adds no parameter detail, but none is needed.
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 identifies the action ('Green flag') and target ('TurboWarp Desktop via bridge'), so an agent can understand the basic operation: run the current project. It does not explicitly contrast with very similar siblings like sb3_vm_green_flag or sb3_vm_run, but it does narrow scope via 'TurboWarp Desktop via bridge.'
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?
There is no guidance on when to call this tool versus the many run/green-flag sibling tools. It does not state preconditions, such as a loaded project or an active bridge connection, nor does it mention alternatives when the VM-based green flag would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_save_projectSb3 Save ProjectB
Write the open project back to .sb3, live-reloading TurboWarp. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| compressionLevel | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses that saving triggers a live reload in TurboWarp and that the operation is proxied, but it leaves side effects underspecified—whether existing files are overwritten, what path/compression defaults do, and what happens if no project is open.
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 with no filler: it starts with the verb/action, then adds the live-reload behavior and proxy note. Every clause contributes meaningful 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 an output schema, return values do not need explanation, but the 0% parameter coverage and absent annotations leave key invocation details (path semantics, compressionLevel behavior, side effects) unexplained. An agent would likely need to guess or probe to call it correctly.
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 0% and the description does not explain either parameter. 'path' and 'compressionLevel' are somewhat self-evident from their names, and the .sb3 reference hints at path meaning, but the empty default for path and the meaning/range of compressionLevel are left entirely to inference.
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 states a specific action ('Write the open project back to .sb3') and a key behavioral outcome ('live-reloading TurboWarp'), clearly identifying the tool's resource and scope. It does not explicitly name sibling tools like project_save_to_cloud or sb3_push_to_scratch, but the .sb3 save/live-reload framing distinguishes it enough.
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 phrase 'the open project' implies this applies to the currently loaded project, giving some context, but there is no when-to-use vs. alternatives guidance. Among many save/export siblings, an agent gets no explicit direction on when to choose this over project_save_to_cloud, project_download, or sb3_push_to_scratch.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_scratch_loginSb3 Scratch LoginC
Log in to scratch.mit.edu for the Node session. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| password | No | ||
| username | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. It mentions that the operation is 'proxied' and tied to the Node session, but does not explain side effects, whether existing authentication is replaced, persistence, or failure behavior.
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 with no filler. The parenthetical '(proxied)' is cryptic but does not add significant clutter.
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?
Although an output schema exists and this is a superficially simple login tool, the description leaves important gaps: when login is required, what happens to the current session, what 'proxied' means, and how the optional parameters behave. An agent cannot confidently decide to invoke it based on this alone.
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 0%, and the description does not mention username or password at all. The parameter names are self-evident as credentials, but the optional nature (both default to '') and any special login behavior are unexplained.
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 uses a specific action ('Log in') and a clear target ('scratch.mit.edu') while also scoping the effect to 'the Node session.' This distinguishes it from sibling session tools like social_connect_session or social_verify_session, even without naming them explicitly.
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 gives no explicit guidance on when to call this tool, when not to, or which sibling session tool to prefer. 'For the Node session' implies a use context, but prerequisites and alternatives are left unstated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_screenshotSb3 ScreenshotA
Capture the live TurboWarp stage as PNG (base64-wrapped note). (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It does disclose the return format ('PNG (base64-wrapped note)') and hints at network execution ('proxied'), but it does not state whether a project must be running, what happens on failure, or whether this causes side effects. The description is useful but not richly transparent.
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 that communicates action, resource, format, and return wrapper without wasted words. The parentheticals add essential detail rather than filler.
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 zero-parameter capture tool with an output schema present, the description is nearly complete: it names the source, format, and encoding. It could mention prerequisites like running project state, but the word 'live' partially covers this and the low complexity keeps the gap small.
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 tool has zero parameters, so the baseline is 4. The description does not need to explain parameter meaning because there is nothing to invoke with; 'live' and output format are the only relevant semantics and they are clearly stated.
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?
'Capture' is a specific verb, the resource is the 'live TurboWarp stage', and the output is narrowly defined as a PNG in a base64-wrapped note. The PNG format immediately distinguishes it from the sibling sb3_screenshot_jpeg even without explicitly naming it.
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 the tool is used when a PNG capture of the live stage is needed, but it never explicitly states when to choose this over sb3_screenshot_jpeg or other stage-related tools. There is no when-not or alternative guidance, only an implied use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_screenshot_jpegSb3 Screenshot JpegB
Capture the live stage as compressed JPEG. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| quality | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, but it only reveals that the output is a compressed JPEG and that the capture is proxied. It does not mention side effects, prerequisites like a running project/VM, timing, or failure behavior. The 'proxied' note adds a little context but is too terse to be sufficient.
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 with no filler; the parenthetical 'proxied' adds a relevant behavioral note. Every word earns its place.
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 one-optional-parameter capture tool with an output schema, the core action and format are stated. However, the description omits parameter semantics and any relationship to the active project/VM, so it is only minimally complete.
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 0%, so the description must compensate by explaining the quality parameter, but it does not. The word 'compressed' only hints at quality; it never states valid values, effect of lower/higher quality, or that quality defaults to 80.
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 names a specific verb ('Capture'), a distinct resource ('the live stage'), and the output format ('compressed JPEG'). This clearly differentiates the tool from the sibling sb3_screenshot, which is positioned as the plain/uncompressed capture alternative.
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?
There is no guidance about when to choose this JPEG variant over sb3_screenshot or how 'proxied' affects the call. The only implied usage is that a compressed JPEG is desired, but no explicit when-to-use or alternative is described.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_set_commentSb3 Set CommentC
Edit a sprite comment. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | ||
| comment_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. 'Edit' implies mutation, but the description does not mention permissions, reversibility, error behavior for non-existent comments, or what 'proxied' means. This is a significant gap for a write operation.
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 only one sentence, but this is under-specification rather than efficient conciseness. It omits critical context and does not earn its brevity because it leaves the agent without enough information to use the tool correctly.
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 simple two-parameter edit tool, the description still lacks essential context: it does not mention what 'proxied' implies, whether a sprite must be selected, how errors are surfaced, or what the output schema returns. Given the zero-coverage schema and no annotations, this is incomplete.
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 0%, and the description adds no information about the parameters. It does not explain that comment_id identifies the target comment or that text is the new content, nor any constraints or formats. The parameter names are self-explanatory, but the description does not compensate for the missing schema field 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 states a clear verb ('Edit') and resource ('a sprite comment'), making the core action understandable. However, it does not differentiate from closely related sibling tools like sb3_add_comment or sb3_remove_comment, and the parenthetical '(proxied)' is cryptic.
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?
There is no guidance on when to use this tool versus alternatives, no prerequisites (e.g., requiring a comment ID or an open project), and no indication of context where this is appropriate. The description simply states what it does without any situational framing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_set_listSb3 Set ListC
Set/create a list on a target; items is a JSON array string. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| items | No | [] | |
| target | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, yet it only labels the operation as 'proxied' and does not say that an existing list of the same name is overwritten, how target resolution fails, or what side effects occur. 'Set/create' implies mutation, but the agent is given no safety or lifecycle 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 compact and front-loads the primary action and the key parameter constraint. The parenthetical '(proxied)' is cryptic, but it does not bloat the definition.
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?
Although an output schema exists and return-value detail is not required, the description omits enough context for a correct call: what 'target' refers to, how 'name' interacts with existing lists, and what 'proxied' means operationally. For a mutation tool with no annotations, this is a substantive gap.
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 0%, so the description must compensate; however, only 'items' is explained as a JSON array string. 'target' and 'name' remain undocumented in both the schema and the description, leaving required parameters ambiguous.
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 names a concrete verb-resource pair ('Set/create a list on a target') and identifies the items parameter as a JSON array string, making the operation recognizable. It does not explicitly contrast with siblings like sb3_set_variable or sb3_delete_list, but the list-vs-variable distinction is inferable from the wording.
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?
There is no guidance about when to use this tool over alternatives, no prerequisites (e.g., must the target already exist?), and no exclusions such as 'use sb3_set_variable for scalar variables.' The only context is the vague parenthetical '(proxied)', which says nothing about routing or selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_set_spriteSb3 Set SpriteC
Set sprite props; props is a JSON object string (x, y, size, ...). (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| props | No | {} |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. It reveals that the operation is 'proxied' and that props is a JSON object string, but it does not explain side effects, persistence, mutation behavior, or whether existing props are overwritten or merged.
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 compact and front-loaded with the core action and resource. The parenthetical '(proxied)' is cryptic but not wasteful. It earns a strong score for brevity, though it sacrifices explanatory depth.
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 mutation-style tool with no annotations, the description is too thin. It does not explain how the sprite is identified, what properties are valid, how the proxy affects behavior, or what happens after the call. The presence of an output schema reduces the need to describe return values, but key invocation and safety context is still missing.
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 0%, so the description must compensate. It partially explains the 'props' parameter by specifying it is a JSON object string with fields like x, y, and size, but it does not explain the required 'name' parameter at all, leaving the agent to guess that it identifies the target sprite.
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 states a specific action ('Set') on a clear resource ('sprite props') and gives examples of the affected properties ('x, y, size'). It is not a tautology and is clear enough for an agent to understand the basic operation. However, it does not explicitly distinguish itself from closely related siblings like sb3_patch_target or sb3_set_stage.
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?
There is no guidance on when to use this tool versus alternatives, no mention of prerequisites, and no exclusion criteria. The agent must infer usage purely from the tool name and the terse description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_set_stageSb3 Set StageC
Set stage props; props is a JSON object string. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| props | No | {} |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states that the operation is 'proxied' and that props is a JSON object string, but it does not explain side effects, required context, error behavior, or what happens to existing stage settings. The term 'proxied' is left unexplained.
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 and front-loaded, with no wasted words. However, the parenthetical 'proxied' is ambiguous and the brevity contributes to the lack of behavioral context.
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?
This is a mutation tool with no annotationsaging, a single loosely specified parameter, and no usage guidance. An agent would know it can send a JSON object string but not what props to include, making the definition insufficient for reliable invocation.
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 0%, so the description must compensate. It does add the key fact that props is a JSON object string rather than an arbitrary string, but it does not describe which properties are valid or expected within that JSON object.
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 states a specific verb and resource: 'Set stage props', and it clarifies that props is a JSON object string. This clearly identifies what the tool operates on, though it does not enumerate the types of stage props supported.
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 is given about when to use this tool versus alternatives like sb3_set_sprite, sb3_patch_target, or sb3_set_variable. The description does not mention any exclusions, prerequisites, or scenarios where another tool should be used.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_set_variableSb3 Set VariableC
Set/create a variable on a target. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| value | No | ||
| target | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It reveals that the tool mutates state and is 'proxied', but it does not explain what proxying means, whether the change persists, what happens if the target does not exist, or how creation differs from setting an existing variable.
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 short and front-loaded, with no filler. The parenthetical '(proxied)' is cryptic and does not clearly earn its place, but overall the structure is economical.
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 mutation tool with three parameters, no annotations, and no visible parameter documentation, the description is too thin. An agent still lacks needed details about target identifiers, value serialization, and failure behavior. The presence of an output schema helps with return values but not with input semantics.
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 0%, so the description should compensate by explaining name, value, and target semantics. It only restates the concept of a target and gives no detail on value format, naming rules, or how the create/set behavior is triggered. The parameter names are self-explanatory enough to avoid a score of 1.
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 states a specific operation ('Set/create') and a clear resource ('a variable on a target'), so an agent can understand the core purpose. However, it does not explicitly distinguish this local-variable tool from the sibling sb3_cloud_set_var, so sibling differentiation is incomplete.
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?
There is no guidance about when to use this tool instead of related siblings such as sb3_cloud_set_var, sb3_delete_variable, or sb3_set_list. The description only says what the tool does, not under what conditions it should be chosen.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_stop_projectSb3 Stop ProjectC
Stop in TurboWarp Desktop via bridge. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only reveals that the operation is 'proxied' through a bridge. It does not mention side effects, whether a project must be running, whether the stop is abrupt or graceful, or any state changes beyond stopping.
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 and contains no filler, which suits a tool with no parameters. The only minor issue is that '(proxied)' may be redundant with 'via bridge', but overall it is efficient.
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?
Even for a parameterless tool, the description omits essential usage context: what state the project must be in, what 'stop' affects in TurboWarp Desktop, and how this differs from the many sibling stop/vm tools. The output schema exists, so return values need no explanation, but the behavior and prerequisites are still underspecified.
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 zero parameters with 100% coverage, so the description has no parameter documentation burden. Baseline 4 is appropriate for a parameterless tool.
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 states a specific action ('Stop') and a context ('in TurboWarp Desktop via bridge'), so it is not a tautology. However, it does not explicitly say what is being stopped; the object 'project' is only implied by the title. It also does not distinguish itself from similar sibling tools like sb3_vm_stop, leaving some ambiguity about scope.
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 is given for when to use this tool versus alternatives such as sb3_vm_stop or other project control tools. The phrase 'via bridge' and '(proxied)' hints at an environment difference, but the description never states conditions, prerequisites, 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.
sb3_studio_infoSb3 Studio InfoA
Fetch a Scratch studio's title, description, and stats.
| Name | Required | Description | Default |
|---|---|---|---|
| studio_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. 'Fetch' conveys a read-only operation, but it does not mention authentication needs, rate limits, or behaviors around invalid studio IDs. This is adequate for a simple lookup but leaves those traits undisclosed.
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?
A single concise sentence that front-loads the action and resource. There is no wasted text; every phrase contributes meaning.
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 one-parameter read-only tool with an output schema present, the description covers the core operation and return content. It is slightly incomplete only because it omits usage context and behavioral caveats, but the simple interface makes this a minor gap.
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 0%, so the description must compensate for the undocumented studio_id parameter. It only implies that studio_id identifies a studio; it does not explain the expected format (numeric ID, URL, slug), which an agent would need to supply a valid 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 uses the specific verb 'Fetch' and identifies the resource ('Scratch studio') plus the exact fields returned ('title, description, and stats'). It is clearly distinguishable from the sibling project-focused tools because the scope is explicitly a 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?
No guidance is provided about when to use this tool versus alternatives, nor any context about prerequisites, intended workflow, or selection criteria. The description only states what the tool does without any usage heuristics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_validate_blocksSb3 Validate BlocksA
Validate target blocks against the opcode catalog. (proxied)
Omit target for all targets. Advisory — custom extension blocks ignored.
| Name | Required | Description | Default |
|---|---|---|---|
| target | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses that the operation is proxied and flags that custom extension blocks are ignored, which are genuine behavioral caveats. It does not state side effects, but the operation's validate-read-only nature is implied and the output schema covers return behavior.
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 short sentences front-load the core action and add the caveat without filler. The parenthetical '(proxied)' is compact and every clause earns its place.
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 single-optional-parameter validation tool with an output schema, the description covers invocation and the main limitation. It could be more explicit about what target identifiers look like and why 'proxied' matters, but nothing essential for calling the tool is missing.
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 schema only provides type/default for target, so the description's 'Omit target for all targets' adds the key semantic. It clarifies that target is optional and that omission selects all targets; however, it doesn't specify the expected identifier format for a single target.
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 phrase 'Validate target blocks against the opcode catalog' names a specific action, object, and reference standard. It is clearly distinct from sibling block-related tools such as sb3_list_blocks or sb3_get_block_schema, even though no sibling is named.
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?
'Omit target for all targets' directly tells the agent how to invoke the tool for the all-targets case, and the advisory about custom extension blocks being ignored gives a relevant exclusion. It does not explicitly name a fallback tool or contrast with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_vm_clonesSb3 Vm ClonesA
Live clone census: name, pose, costume, sprite-locals per clone. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the behavioral disclosure burden. It does add meaningful context by stating the data is 'live' and 'proxied', indicating a current, indirect view rather than a static snapshot. However, it does not explicitly confirm read-only behavior, side-effect-freedom, staleness, or what 'proxied' entails, so it is only minimally transparent.
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 compact sentence that front-loads the core purpose and the returned fields, with no wasted words. The parenthetical 'proxied' is cryptic, but conciseness itself is excellent.
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 zero-parameter, read-style census tool with an output schema, the description covers the essential invocation contract: what the tool is about and what data it reports. The main missing piece is sibling differentiation, but that is captured under usage_guidelines and does not block correct invocation given the schema and output 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?
The input schema has zero parameters and 100% schema coverage, so there is no parameter-semantic burden for the description to carry. Per the baseline for a parameterless tool, this is fully adequate; the description correctly adds no parameter detail.
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 identifies clones as the resource and enumerates the returned fields (name, pose, costume, sprite-locals), so an agent can tell this is a live clone inspection tool. It lacks an explicit verb, but 'census' strongly implies a listing/reading operation. It is distinguishable from sibling VM tools like sb3_vm_state or sb3_vm_threads, though it does not name them.
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 gives no guidance about when to use this tool versus alternatives such as sb3_vm_state, sb3_vm_threads, or sb3_vm_monitors. 'Live' hints at temporal freshness but does not state that this is the read-only inspection option or when it should be preferred. Selection is left entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_vm_green_flagSb3 Vm Green FlagC
Press green flag in the headless VM. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden. It says 'press green flag' but does not explain what that does (e.g., start the project, trigger a broadcast, reset state). The '(proxied)' hint is vague and doesn't disclose side effects, state changes, or response behavior. Significant gap for a tool that likely mutates VM state.
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 short (one sentence), which is concise. However, the brevity comes at the cost of essential context. It's not wasteful, but it under-delivers on meaning. A short description that says too little is not ideal, so a 3 reflects that.
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 tool sits among many VM tools with overlapping semantics, and the description does not clarify what 'green flag' entails, whether it requires a loaded project, or how it differs from sb3_vm_run. No return value or side effects are described. Despite an output schema existing, the tool's behavior is opaque, making it incomplete for an agent to call correctly.
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 tool has zero parameters, and schema coverage is 100% (trivially). Per the calibration, a 0-parameter tool gets a baseline of 4. The description adds nothing beyond the schema, but there's nothing to explain, so this is acceptable.
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 states a clear verb ('press green flag') and resource ('headless VM'), which is specific. However, it doesn't differentiate from sibling tools like sb3_vm_run or sb3_vm_load, which might have overlapping functionality. The purpose is clear in isolation but not distinguished from alternatives.
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 the many VM-related siblings. The description does not mention any conditions, prerequisites, or alternative tools. An agent would have to infer that 'green flag' is a Scratch-specific event, but there's no explicit routing or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_vm_inputSb3 Vm InputB
Feed keyboard/mouse/answer input to the headless VM. (proxied)
keys accepts a JSON array of {key, isDown?} objects or a single key
name (wrapped to a full tap). Anything else that parses to a non-list
raises ValueError before touching the sidecar — the sidecar's zod
schema would reject it anyway, but failing here gives the shorter,
proxy-attributed error.
| Name | Required | Description | Default |
|---|---|---|---|
| keys | No | ||
| answer | No | ||
| mouseX | No | ||
| mouseY | No | ||
| mouseDown | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior itself. It does mention the validation behavior: invalid `keys` input raises a ValueError before reaching the sidecar, and explains the proxy-attributed error rationale. However, it does not describe success behavior, side effects on the VM, whether input is immediate or queued, or any state changes. This is partial 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 compact and front-loaded. The main purpose is stated in the first sentence, and the additional paragraph about `keys` is precise and necessary. There is no filler or redundancy; every sentence earns its place.
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 tool has five optional parameters and no annotations, and the schema provides zero descriptions. The description only covers one parameter and omits any mention of return values, side effects, or preconditions. Given the tool's complexity (multiple input channels), this is incomplete and leaves the agent guessing about `answer`, mouse coordinates, and expected 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 0%, so the description must compensate. It only explains the `keys` parameter in detail (JSON array or single key name, wrapping behavior). The other four parameters (`answer`, `mouseX`, `mouseY`, `mouseDown`) are not described at all, leaving the agent with no semantic guidance for them. This is a significant gap.
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 opens with a clear, specific verb-resource pair: 'Feed keyboard/mouse/answer input to the headless VM.' This distinguishes it from sibling VM tools (load, run, stop, etc.) and conveys exactly what the tool accomplishes. The phrase 'to the headless VM' anchors the resource and context.
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?
There is no guidance on when to use this tool versus alternatives. It does not mention any prerequisites (e.g., a loaded/running project) or contrast with other input-related tools. The description only states the action, leaving the agent to infer context from the tool's name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_vm_loadSb3 Vm LoadB
Load the open project into the headless VM. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It reveals that the operation is proxied and targets the headless VM, but it does not state whether loading replaces existing VM state, is idempotent, or what happens if no project is open.
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?
A single sentence with no filler. The key object ('open project') and destination ('headless VM') are front-loaded, and the parenthetical 'proxied' adds useful context without bloating the description.
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 zero-parameter action with an output schema, the description is close to sufficient. However, it omits the prerequisite that a project must be open and does not clarify its position in the VM workflow, so an agent could invoke it at the wrong time.
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 tool has zero parameters, and the schema is complete with 100% coverage. There is nothing for the description to add semantically, so the baseline of 4 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 states a clear action and object: load the open project into the headless VM. The verb 'load' distinguishes it from execution-oriented siblings like sb3_vm_run, though it does not explicitly differentiate itself from related project/VM 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?
The phrase 'the open project' implies a prerequisite that a project must already be open and suggests this precedes VM execution. However, the description never explicitly states when to use this tool versus sb3_open_project, sb3_vm_run, or other VM lifecycle tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_vm_mix_wavSb3 Vm Mix WavB
Offline sound mix as WAV base64 + event count + seconds. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. It does mention the operation is offline and proxied, and reveals the output shape, but it does not state whether the tool mutates state, requires a loaded project, or has side effects. This is a minimal disclosure for a zero-annotation tool.
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 packs several useful details: offline, sound mixing, WAV base64, event count, and seconds. It is front-loaded and contains no filler, though it is slightly telegraphic and could benefit from a fuller sentence.
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 too thin for an agent to know what 'sound mix' operates on, how it relates to the current project or VM state, or what the returned event count represents. The output schema exists but does not compensate for missing semantic context about the tool's inputs or prerequisites.
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 tool has zero parameters and schema description coverage is 100%, so there is nothing for the description to add about parameters. The baseline for zero-parameter tools is 4, and the description appropriately focuses on output behavior instead.
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 states the operation ('Offline sound mix') and the result format ('WAV base64 + event count + seconds'), which conveys what the tool does. It is specific enough to distinguish from sibling VM tools like sb3_vm_state or sb3_vm_pen_png, though it does not explicitly contrast with them.
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?
There is no guidance on when to use this tool versus alternatives, no prerequisites, and no mention of expected project state. The word 'Offline' hints at context, but there is no explicit when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_vm_monitorsSb3 Vm MonitorsA
Full monitor table (visible or not): label, opcode, value, mode. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses useful behavioral scope: it returns the full monitor table including hidden entries and lists the output fields, and it notes the call is proxied. However, with no annotations, it does not explicitly state that the operation is read-only or explain what 'proxied' means, leaving some of the behavioral burden unmet.
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 one short, front-loaded sentence that states the main scope and output fields immediately. The parentheticals add relevant detail without unnecessary filler.
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 zero-parameter tool with an output schema, the description conveys the essential information: what is returned and the scope. The meaning of 'monitor' and 'mode' is left implicit, but the output schema can fill those gaps, so the incompleteness is minor.
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 is empty and schema coverage is 100%, so there are no parameters for the description to elaborate on. The field list is still helpful for understanding what the tool returns, which is appropriate for a zero-parameter tool.
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 identifies the subject as a monitor table and enumerates the returned fields (label, opcode, value, mode), including hidden monitors. It lacks an explicit verb such as 'returns' or 'lists', and it does not explicitly contrast itself with sibling VM introspection tools like sb3_vm_state or sb3_vm_threads.
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?
There is no guidance on when to use this tool versus any of the many sb3_vm_* siblings, such as sb3_vm_state or sb3_vm_watch. The parenthetical '(proxied)' hints at execution context but gives no selection criteria or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_vm_pen_pngSb3 Vm Pen PngB
Pen raster as PNG base64 + non-transparent pixel count. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. It mentions '(proxied)' without explaining what that entails, does not state whether the operation is read-only or has side effects, and does not describe any error or edge-case behavior. The return format is hinted at, but critical context 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?
The description is a single, compact sentence that front-loads the key output details (PNG base64 and pixel count). It is appropriately terse for a no-parameter tool. The parenthetical '(proxied)' is extra but does not bloat the text. It could benefit from a clearer structure, but it is concise and to the point.
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 tool is low-complexity (no params, output schema present), so the description need not explain return values. However, it omits usage context: no mention of when to call this versus related tools, no clarification of what 'proxied' means, and no indication of whether a project must be loaded. For a simple operation, this is marginally adequate but leaves 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?
The tool has zero parameters, so the input schema is trivially complete. Per the rubric, 0 parameters sets a baseline of 4. The description does not need to add parameter information, and it does not; it correctly focuses on the output.
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 states the resource (pen raster) and the output (PNG base64 plus non-transparent pixel count). It is specific enough to distinguish from other VM tools like sb3_screenshot, though it lacks an explicit verb like 'retrieves' or 'returns', and does not name any sibling it is not. This is clear but not maximally differentiated.
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?
There is no guidance on when to use this tool versus alternatives. It does not mention any prerequisites, such as needing a loaded project, nor does it name any sibling tools for comparison. The description is purely informational and leaves usage inference entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_vm_pokeSb3 Vm PokeA
Set live VM state (fault injection mid-wave). (proxied)
Each arg is a JSON array string: variables entries
{target?, name, value}, lists entries {target?, name, items},
sprites entries {target, x?, y?, direction?, size?, visible?, costume?}. Unknown target/variable/list/costume is an error.
| Name | Required | Description | Default |
|---|---|---|---|
| lists | No | ||
| sprites | No | ||
| variables | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses the mutating nature, the live-VM context, and the error condition for unknown targets/variables/lists/costumes. It does not address permissions, reversibility, or explain 'proxied', but the core side-effect profile is clear.
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 efficient sentences: purpose is front-loaded and the parameter format is dense but necessary. The unexplained 'proxied' parenthetical is minor noise, but there is no substantial waste or repetition.
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 three-parameter VM mutation tool, the description covers the input grammar and failure mode, and an output schema exists so return-value explanation is not required. It omits explicit guidance on how this tool relates to single-varible setters or whether changes apply immediately, but the 'live state' framing implies immediacy.
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 schema has 0% description coverage, so the description must compensate—and it does thoroughly. It defines each parameter's JSON-array-string format and the exact entry shapes, including optional fields and error behavior. This is far more than the bare input schema provides.
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?
Description states a specific action ('Set live VM state') and resource with a clear use-case ('fault injection mid-wave'). It does not explicitly name sibling tools or contrast itself with related tools like sb3_vm_state or sb3_set_varible, so it falls just short of full sibling differentiation.
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?
Gives a clear context for when to use the tool: live fault injection mid-wave. It does not state exclusions or alternatives, but the use-case is unambiguous enough to guide an agent toward this tool among the many VM-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_vm_runSb3 Vm RunA
Advance the headless VM; returns state + event timeline. (proxied)
Budgets (seconds/frames) are omitted when 0 so the sidecar's own
defaults apply (its zod schema rejects an explicit 0), and untilIdle /
paced are only forwarded when set (None = sidecar default).
paced=False runs the budget back-to-back with no per-frame sleep, which
is what deterministic step-debug wants.
| Name | Required | Description | Default |
|---|---|---|---|
| paced | No | ||
| frames | No | ||
| seconds | No | ||
| untilIdle | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It discloses key hidden behaviors: budgets of 0 are omitted because the sidecar's zod schema rejects explicit 0, None values are not forwarded, and paced=False disables per-frame sleep. This adds genuine context beyond the schema, though 'proxied' remains unexplained and side effects are only implicit.
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 compact and front-loaded with the core action and return value. The technical quirks are placed in parentheticals and short clarifying sentences, and every sentence earns its place. It could be slightly more structured, but it is appropriately sized for the tool's complexity.
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 four parameters, no annotations, and an output schema, the description covers the important edge cases: default forwarding, zero-budget omission, and the deterministic pacing behavior. It omits preconditions like needing a loaded VM, and it doesn't explicitly route the agent to related tools, but it is otherwise sufficient for correct invocation.
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 schema provides no parameter descriptions, so the description must compensate. It does explain that seconds/frames are budgets, that 0 causes omission, that untilIdle/paced are only forwarded when set, and that paced=False disables per-frame sleep. It stops short of defining what untilIdle actually means, but the added semantic value is strong.
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 states a specific action and resource: 'Advance the headless VM; returns state + event timeline.' This clearly conveys what the tool does, but it does not explicitly differentiate itself from sibling tools like sb3_vm_step_frame or sb3_vm_run_until, which could imply similar behavior.
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?
There is useful usage guidance, such as 'paced=False runs the budget back-to-back with no per-frame sleep, which is what deterministic step-debug wants,' and the explanation of when sidecar defaults apply. However, it never states when to choose this tool over sb3_vm_run_until or sb3_vm_step_frame, nor gives explicit when-not conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_vm_run_untilSb3 Vm Run UntilA
Run the headless VM on virtual time until a predicate fires. (proxied)
until is a JSON object string, e.g.
{"broadcastSeen": ["GameStart"]}, {"varEquals": [{"name": "Score", "value": 100}]}, {"threadsIdle": true} — fires when ANY entry matches
(OR). Budgets omitted when 0 so sidecar defaults apply. Replaces N×
sb3_vm_run poll loops with one call.
| Name | Required | Description | Default |
|---|---|---|---|
| until | No | ||
| seconds | No | ||
| chunkFrames | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 discloses the OR semantics for predicates, budget defaulting behavior, and that it is 'proxied'. However, it does not explain whether the call blocks until the predicate or a budget is exhausted, or what state the VM is left in after completion. This is a notable gap for a run tool.
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 compact and well-structured: core purpose first, then predicate syntax, then a note on budgets, and finally the benefit over polling. Every sentence adds value; no redundancy. Slightly dense but appropriate for the tool's complexity.
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 presence of an output schema (which covers return values), the description covers the essential usage aspects: predicate syntax, OR semantics, budget defaults, and the advantage over polling. It does not mention timeout/error handling, but budgets are implied to prevent infinite runs. Overall, sufficient for an agent to use it correctly in most scenarios.
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 0%, so the description must compensate. It explains the 'until' parameter in detail with examples and JSON format, and implicitly treats 'seconds' and 'chunkFrames' as budgets mentioned in the budget-default sentence. However, it does not explicitly define what these two parameters represent (e.g., max virtual time, frame chunk size) or their units, leaving ambiguity.
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?
States a specific verb and resource: 'Run the headless VM on virtual time until a predicate fires.' It clearly distinguishes from the sibling sb3_vm_run by explicitly stating it replaces N× sb3_vm_run poll loops with one call. The scope is unambiguous.
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?
Explicitly names the alternative (sb3_vm_run) and the condition to use this tool instead (to avoid poll loops). Provides concrete predicate examples, but does not mention other relevant siblings like sb3_vm_step_frame or potential exclusion criteria (e.g., when step-wise control is needed). Clear enough for most cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_vm_seedSb3 Vm SeedB
Deterministic PRNG seed for operator_random; None restores Math.random. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. It does reveal that an integer seed makes operator_random deterministic and that null restores Math.random, which is valuable. However, it does not explain persistence, scope across VM runs, or side effects, and the appended '(proxied)' is ambiguous.
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 with no filler. The core behavior is stated first, and the null restoration behavior is secondary. The parenthetical '(proxied)' is minor but unexplained, slightly detracting from an otherwise tight 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?
For a tool with one optional parameter, no annotations, and a simple effect, the description adequately covers the key behavior and the null case. Return values are not discussed, but an output schema exists so that is acceptable. It is slightly thin on usage context but sufficient for correct invocation.
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 0%, so the description must compensate. It explains that the seed parameter accepts an integer for deterministic behavior and null to restore Math.random, adding meaningful semantic context beyond the schema's type union. This is strong compensation for the coverage gap.
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 sets a deterministic PRNG seed for operator_random and that null restores Math.random. It names a specific mechanism (operator_random), which helps distinguish it from sibling VM tools. However, it lacks an explicit verb like 'sets' and does not explicitly contrast it with alternative tools, so it falls just short of a 5.
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?
There is no guidance on when to use this tool versus other sb3_vm_* tools or when not to use it. The description does not mention prerequisites, exclusions, or typical use cases, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_vm_stateSb3 Vm StateB
Snapshot headless VM state. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of disclosing side effects and operational behavior. 'Snapshot' implies a read-only capture, but the description does not explicitly state whether the VM continues running, whether the VM must already exist, or what subset of state is included.
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 minimal and front-loaded: 'Snapshot headless VM state.' The parenthetical '(proxied)' is a small, non-redundant qualifier. Every word earns its place and there is no filler.
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 output schema exists and there are zero parameters, which simplifies the invocation contract. However, with no annotations and no usage context, the description leaves ambiguity about VM prerequisites, side effects, and how this snapshot differs from other VM tools. It is minimally viable but not complete.
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 zero parameters and 100% schema coverage, so there is no parameter documentation burden on the description. This earns the baseline 4 for a parameterless tool; no additional parameter semantics are needed.
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 states a clear verb and resource: 'Snapshot headless VM state.' It conveys a specific action and distinguishes itself as a state-capture operation. However, 'state' is broad and not differentiated from other VM introspection siblings like sb3_vm_threads or sb3_vm_monitors, so it stops short of a 5.
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?
There is no guidance on when to use this tool versus the many sb3_vm_* siblings. It does not say whether the VM must be loaded or running, whether this is a diagnostics step, or when snapshotting is preferable to monitors/threads. The '(proxied)' note is not explained as a usage condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_vm_step_frameSb3 Vm Step FrameA
Step exactly one frame; returns before/after + delta. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that the call is proxied and that it reports before, after, and delta states, which is useful beyond the bare name. However, with no annotations, it does not state prerequisites such as a loaded VM or side effects on ongoing execution; 'step' only implicitly conveys mutation.
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?
A single front-loaded sentence states the action, the exact scope, and the return summary. The parenthetical '(proxied)' is the only extra marker and is informative rather than filler.
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 zero-parameter tool with an output schema, the description covers the action and the return concept. The only missing context is prerequisite state, such as whether the VM must already be loaded via sb3_vm_load, which is a minor gap for a simple stepping 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?
The tool has zero parameters, so there is no parameter semantic burden on the description. The schema already covers the empty input fully, and the baseline for a zero-parameter tool is 4.
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 verb 'step' plus 'exactly one frame' identifies a precise, singular action and distinguishes it from sibling tools like sb3_vm_run and sb3_vm_run_until. The return summary adds further specificity without ambiguity.
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?
Clear context: this is the tool to use when the agent needs to advance exactly one frame rather than run continuously. It does not explicitly name alternatives or exclusions, but 'exactly one frame' makes the intended usage obvious among VM stepping siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_vm_stopSb3 Vm StopA
Stop all scripts in the headless VM. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'proxied' and 'headless', but does not state side effects on VM state, whether variables are reset, whether threads are terminated, or whether the operation is destructive. For a mutation tool, this is a meaningful 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 entire description is a single front-loaded sentence that clearly states the operation and scope. Every word earns its place, with no filler or redundancy.
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 zero-parameter command with an output schema, the description is minimally sufficient: it names the action and resource. However, it lacks usage context for when to invoke this versus related VM tools, and it does not explain the practical effect on a running project or VM lifecycle, which an agent would need for reliable selection.
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 zero parameters and 100% schema description coverage, so there is no parameter meaning that the description must add. A baseline of 4 is appropriate for a parameterless tool; there is nothing to compensate for.
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 states a specific verb ('stop') and a clear resource ('all scripts in the headless VM'), and adds the scope qualifier 'all scripts'. This distinguishes it from related tools like sb3_stop_project or sb3_vm_run without needing to inspect schemas.
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 is given about when to use this tool versus alternatives such as sb3_stop_project, sb3_vm_green_flag, or sb3_vm_run_until. The description implies a stop action but does not clarify whether it is a hard stop, whether it is reversible, or what distinguishes it from other stop/reset tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_vm_stub_callsSb3 Vm Stub CallsB
Recorded pen/sound stub calls since load. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing side effects. 'Recorded' implies the tool returns previously captured data rather than mutating state, and 'since load' communicates accumulation/reset behavior. '(proxied)' adds a behavioral trait, though it is cryptic and unexplained; no details are given about side effects, ordering, or whether the call triggers the proxy.
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 short and front-loaded, with no filler. The parenthetical '(proxied)' is terse but the overall structure is economical. It loses a point because the brevity creates ambiguity about the operation being described.
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?
A zero-parameter read-only diagnostic with an output schema can be minimally complete, and 'since load' gives enough context to reason about state. However, the description does not explain what a 'stub call' is, why '(proxied)' matters, or when this tool is useful relative to the many VM siblings. It is adequate but leaves clear 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?
The input schema is empty and there are zero parameters, so the description does not need to explain parameter meaning. The baseline for a parameterless tool is 4, and the description does not undermine this.
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 phrase 'Recorded pen/sound stub calls since load' identifies the resource (stub calls) and a temporal scope (since load), so an agent can guess what data is returned. However, it lacks an action verb like 'get' or 'list', and the passive noun-phrase style leaves it ambiguous whether the tool records calls or returns recorded calls. It does not explicitly distinguish itself from the many sb3_vm_* 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 is provided about when to use this tool versus sb3_vm_state, sb3_vm_threads, sb3_vm_onitors, or other VM inspection tools. The phrase 'since load' hints at a lifecycle dependency, but there is no explicit instruction about when to call it or what problem it solves.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_vm_threadsSb3 Vm ThreadsA
Live thread inspector: target, clone flag, hat, stack, status. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden of behavioral disclosure. 'Inspector' implies a read-only operation, and 'live' suggests current-state observation, but the parenthetical '(proxied)' is unexplained and could confuse an agent about the data source. It provides some behavioral context but not rich detail.
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 that packs the resource and key attributes into twelve words. No filler or redundant content appears; the '(proxied)' note is the only minor opaque addition.
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 zero parameters and an output schema available, the description covers the essential return dimensions (target, clone flag, hat, stack, status). It lacks explicit usage context relative to the many VM siblings, but for a simple inspector with an output schema, it is nearly complete.
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 tool accepts zero parameters, so there is no parameter documentation burden. The description need not add semantics beyond the already complete empty 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 identifies the tool as a 'Live thread inspector' and enumerates the exposed attributes (target, clone flag, hat, stack, status), which specifies the resource and distinguishes it from sibling tools like sb3_vm_state or sb3_vm_clones. It is a noun phrase rather than a verb, but 'inspector' clearly conveys the action of inspecting threads.
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 is provided about when to use this tool versus alternatives such as sb3_vm_state or sb3_vm_clones. The description does not include context, exclusions, or mention of any sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sb3_vm_watchSb3 Vm WatchC
Poll-and-diff variable watcher: old/new/changed per key. (proxied)
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| target | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses the core behavior (polling and diffing) and output shape (old/new/changed per key), but leaves statefulness, first-call semantics, side effects, and the meaning of '(proxied)' unexplained.
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 compact and front-loads the core purpose and result shape. The parenthetical '(proxied)' is cryptic and does not earn its place, but the structure itself is efficient and not padded.
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 output schema covers return values, and the description contributes the old/new/changed concept, but critical context is missing: parameter semantics, usage conditions, lifecycle behavior, and what 'proxied' means. For a tool with no annotations, this is a significant completeness gap.
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 0%, and the description adds no meaning to the 'name' or 'target' parameters. Both are optional with empty defaults, but there is no indication of what they filter, how they relate to variables, or what values are valid.
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 identifies a variable watcher that polls, diffs, and returns old/new/changed values per key. This distinguishes it from variable setters/deleters and state readers, though it does not explicitly name a sibling or scope boundary.
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 phrase 'poll-and-diff variable watcher' implies it should be used when you need to observe variable changes over time. However, it provides no explicit when-to-use/when-not-to-use guidance and no comparison to alternatives like sb3_vm_state or sb3_set_variable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_become_scratcherSocial Become ScratcherA
Accept a "become a Scratcher" invitation for the active account.
Scratch promotes a New Scratcher only after the Scratch Team invites them.
On the website the invitation is accepted by reading through the Community
Guidelines and clicking to agree, so accepting here means the account holder
accepts those guidelines. For that reason nothing happens unless confirm
is set: called without it, this only reports eligibility.
The guidelines are at https://scratch.mit.edu/community_guidelines and ask everyone on Scratch, in summary, to: be respectful, remembering the audience is broad and includes children; be constructive when commenting; share freely and give credit when remixing; keep personal information private; be honest rather than impersonating others or spreading rumours; and report anything inappropriate rather than escalating it.
Promotion cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| confirm | No | Set true to actually accept. Left false, this reports the account's rank and whether an invitation is pending, and changes nothing. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| rank | Yes | |
| invited | Yes | |
| promoted | Yes | |
| username | Yes | |
| is_scratcher | Yes | |
| was_scratcher | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the side effects: nothing happens without confirm, accepting implies agreement to community guidelines, and promotion cannot be undone. This is thorough and explicit, far exceeding a minimal disclosure.
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 longer than average due to the guidelines summary, but it is well-structured: purpose first, then usage nuance, then guidelines, then irreversibility. Each sentence serves a purpose, though the guidelines excerpt could be trimmed for conciseness without losing essential meaning.
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 gravity (accepting a promotion with legal implications), the description is remarkably complete. It covers the workflow, the confirm parameter, the guidelines acceptance, and the irreversible outcome. Since an output schema exists, not detailing return values is acceptable. No critical information for an agent to call it correctly is missing.
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 schema already describes the single `confirm` parameter with full coverage (100%), including its default and behavior. The description reinforces this by restating the confirm semantics in context ('nothing happens unless confirm is set'). It adds marginal value by tying the parameter to the overall workflow, but the schema alone is already clear.
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 opens with a precise verb and object: 'Accept a "become a Scratcher" invitation for the active account.' It clearly identifies the action and resource, and the subsequent context about Scratch's promotion process distinguishes it from other social tools like posting comments or following users.
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 explains the exact invocation pattern: calling without `confirm` only reports eligibility, while setting `confirm` to true actually accepts. It also provides the prerequisite (an invitation must be pending) and notes that promotion is irreversible, giving an agent clear guidance on when and how to call the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_check_inboxSocial Check InboxA
Check the active account's message inbox.
Scratch splits the inbox across three endpoints with independent unread state, and this reports all of them:
unread_count+messages: ordinary activity (comments, follows, loves). The count is genuinely unread, but the list is simply the newest messages whether read or not, so the two do not necessarily correspond.scratch_team_messages: alerts from the Scratch Team.invitation: a pending "become a Scratcher" invite, carrying its ownunreadflag.
unread_elsewhere is true when something is unread outside the activity
feed, so an unread_count of 0 does not by itself mean an empty inbox.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many messages to return (1-40). | |
| offset | No | How many of the newest messages to skip. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| limit | Yes | |
| offset | Yes | |
| messages | Yes | |
| returned | Yes | |
| invitation | Yes | |
| unavailable | Yes | |
| unread_count | Yes | |
| unread_elsewhere | Yes | |
| scratch_team_messages | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the behavioral disclosure burden. It explains nuanced behaviors: the inbox is split across three endpoints with independent unread state, unread_count may not correspond to the messages list, and unread_elsewhere means a zero count does not imply an empty inbox. This goes beyond a simple read operation and materially protects against misinterpretation.
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 well organized: a one-line summary, a bulleted breakdown of the three subcomponents, and a closing caveat. Every sentence adds meaningful context, no repetition or fluff.
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 covers the full scope of the response semantics, including edge cases around unread counts and list contents. Since an output schema exists, return values need not be repeated here. The description is complete enough for an agent to correctly interpret the results without additional assumptions.
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 limit and offset already clearly documented in the input schema. The description adds no additional parameter semantics, which is acceptable because the structured fields already carry the meaning.
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 opens with a specific verb and resource: 'Check the active account's message inbox.' It then clearly enumerates what is reported (three endpoints, unread_count, messages, scratch_team_messages, invitation), making the tool's function unambiguous and distinct from siblings like social_get_comments.
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 establishes clear context: it checks the active account's inbox and aggregates all three inbox endpoints. It does not explicitly name alternatives or when-not-to-use conditions, but the scope is well defined enough that an agent can infer appropriate use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_connect_sessionSocial Connect SessionA
Login to the Scratch site using set login details.
You may either provide a path_to_env, a scratch_username and scratch_password, or a scratch_session_id, or a browser_name (optional).
If none is provided, it will fallback to logging in via the user's installed browser.
Sessions are remembered across restarts by default, so this usually only needs to be called once per account. Check social_list_sessions first.
| Name | Required | Description | Default |
|---|---|---|---|
| remember | No | Save the session id to disk so the login survives a server restart. Only the session id is stored, never the password. Pass False for a login that lives only as long as this process. | |
| path_to_env | No | Path to a .env file containing SCRATCH_USERNAME and SCRATCH_PASSWORD environment variables, or a SCRATCH_SESSION_ID variable. If not provided, the below values must be instead. | |
| browser_name | No | If none of the above are provided, it defaults to logging in via browser. Either pass a preferred browser to fetch the cookie from, or leave it empty to default to autodetect any installed browser and uses those credentials. | |
| scratch_password | No | The password to authenticate with. | |
| scratch_username | No | The username to authenticate with. | |
| scratch_session_id | No | A session token from Scratch to use when authenticating. This value can be obtained from any logged-in browser by fetching the value of the cookie `scratchsessionsid`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the transparency burden. It discloses the fallback-to-browser behavior and session persistence across restarts, which is helpful. However, it does not mention whether the new session becomes the active session, whether side effects like overwriting an existing session occur, or any potential failures or prerequisites beyond browser availability.
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 well organized: purpose first, then authentication options, then persistence and guidance. It is a bit redundant with the parameter names already present in the schema, but the reminder of the either/or selection logic is useful and the length is reasonable for the complexity.
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—multiple authentication paths, optional parameters, and persistence behavior—the description covers the key decisions and directs the agent to social_list_sessions. The presence of an output schema covers return-value details. It could be more complete by clarifying the relationship with social_set_active_session and what exactly happens after a successful login.
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 coverage is 100%, so the baseline is 3, but the description adds real value by explaining the mutual-exclusion relationships: provide either path_to_env, username/password, scratch_session_id, or browser_name. This helps an agent understand how to choose among the parameters, which the schema alone does not make explicit.
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 opens with a specific verb and resource: 'Login to the Scratch site.' It clearly identifies the tool as the session-connect/login operation among the social_* siblings and even points to social_list_sessions as a prior check. However, it does not explicitly differentiate itself from the similarly named sb3_scratch_login sibling, so it stops short of a 5.
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 gives practical usage context: sessions persist across restarts, so this should usually be called only once per account, and users should 'Check social_list_sessions first.' It also explains the fallback behavior when no credentials are provided. It does not explicitly list exclusions or alternatives like social_set_active_session, but the provided guidance is actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_follow_userSocial Follow UserA
Follow, unfollow, or check whether the active account follows a user.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | "check" to only report (the default, since it changes nothing), "follow", "unfollow", or "toggle" to invert the current state. | check |
| username | Yes | The account to act on. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose that the tool can mutate follow state or simply check it, and the schema notes that 'check' changes nothing. However, it does not mention authentication/session requirements, rate limits, or what happens when following fails.
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 with no filler. It efficiently covers all core operations in one line and earns its place.
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 tool is simple, has an output schema, and the schema covers all parameter semantics, so the description does not need to explain return values. However, with no annotations and no mention of session/auth prerequisites or usage versus sibling tools, there are some gaps for a mutating social action.
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 both parameters and the action enum thoroughly. The description itself adds no extra parameter meaning, which is acceptable given the high schema coverage.
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 uses specific verbs ('follow', 'unfollow', 'check') tied to a clear resource ('whether the active account follows a user'). This clearly differentiates it from sibling tools like social_get_user_info or social_like_project and tells an agent exactly what operation is available.
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 states what the tool does but does not explicitly say when to choose it over alternatives or mention prerequisites like having an active session. Some usage context is implied by the verb set, but no exclusions or alternative routing are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_forget_sessionSocial Forget SessionA
Drop a session from this server and from the on-disk store.
| Name | Required | Description | Default |
|---|---|---|---|
| logout | No | Also invalidate the session id server-side on Scratch. This breaks any other client using the same session id, including the user's browser if the login came from there. | |
| username | Yes | Username of the session to remove. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does reveal that the session is removed from both the server and the on-disk store, which is useful. However, it does not state irreversibility, required permissions, or consequences for active clients; the logout parameter description partially covers server-side invalidation.
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 one front-loaded sentence with no filler: it names the action, the resource, and the two affected storage locations. Every word earns its place.
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 tool is simple, has only two well-documented parameters, and has an output schema, so the core invocation details are present. The main gap is the lack of usage guidance and side-effect disclosure beyond the literal removal, but the low complexity keeps the shortcoming moderate.
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 both parameters ('username' and 'logout') already have detailed schema descriptions. The tool description adds no additional meaning beyond what the schema provides, 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 uses the specific verb 'Drop' with the resource 'a session' and states the scope ('from this server and from the on-disk store'), making the operation distinct from siblings like social_connect_session, social_list_sessions, social_set_active_session, and social_verify_session. It is immediately clear what this tool does.
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 explains when to use this tool versus alternatives such as social_verify_session or social_set_active_session, and there is no mention of when-not-to-use or prerequisites. The usage must be inferred entirely from the name and short description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_get_comment_repliesSocial Get Comment RepliesA
Fetch the replies to one top-level comment.
For source="profile" this is slow: Scratch has no endpoint for a single
profile comment, so scratchattach pages through the profile until it finds
the id. Prefer social_get_comments, which returns profile replies inline.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max replies to return (1-40). project and studio only. | |
| offset | No | How many replies to skip. project and studio only. | |
| source | Yes | "project", "studio", or "profile". | |
| source_id | Yes | The numeric project or studio id, or the username, matching `source`. | |
| comment_id | Yes | Id of the top-level comment whose replies you want. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| page | Yes | |
| limit | Yes | |
| offset | Yes | |
| source | Yes | |
| comments | Yes | |
| has_more | Yes | |
| returned | Yes | |
| source_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden, and it delivers: it discloses the non-obvious performance behavior (scratchattach pages through the profile) and the underlying implementation reason (no single-profile-comment endpoint). This is valuable beyond just saying 'fetch.' It doesn't mention error cases or rate limits, but the output schema covers return structure and this is a read-only operation.
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 short sentences, no filler. The first states the core purpose, the second delivers the caveat and redirects to the preferred alternative. Every sentence earns its place and the most important guidance is front-loaded.
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 fetch tool with an output schema, the description is dimensionally complete: purpose, the key performance caveat, and the alternative are all covered. It doesn't explicitly mention the need for an active social session, but the sibling tool names and schema context make that implicit. Minor gap, but overall well-rounded.
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 schema already documents all parameters. The description's phrase 'one top-level comment' mirrors the schema's comment_id description ('Id of the top-level comment') and does not add new parameter semantics. 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 opens with a specific verb and resource: 'Fetch the replies to one top-level comment.' It clearly distinguishes itself from the sibling tool social_get_comments by explicitly naming it as an alternative that returns profile replies inline, so an agent can differentiate them without opening schemas.
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 gives explicit guidance on when NOT to use this tool: for source='profile' it is slow, and social_get_comments should be preferred. This directly addresses usage context and names the alternative, leaving no ambiguity about tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_get_commentsSocial Get CommentsA
Page through the comments on a project, a studio, or a user's profile.
The sources paginate differently because Scratch exposes them differently, so read the argument notes:
source="project" / "studio": uses
limit+offset. Replies are a separate request, soinclude_repliescosts one extra request per comment.source="profile": uses
page(30 top-level comments per page);offsetis ignored. Replies always come back, free of charge, soinclude_repliesis irrelevant here.
Only top-level comments are listed. Scratch has a single level of nesting: a reply to a reply is stored as a reply to the top-level comment.
Both sources page over a live feed, so on a busy project or profile a comment can shift between pages while you read them.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Which page of profile comments to read, starting at 1. profile only. | |
| limit | No | Max top-level comments to return (1-40). | |
| offset | No | How many comments to skip. project and studio only. | |
| source | Yes | "project", "studio", or "profile" for a user's profile. | |
| source_id | Yes | The numeric project or studio id, or the username, matching `source`. | |
| include_replies | No | Fetch replies for each comment. project and studio only; costs one request per comment. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| page | Yes | |
| limit | Yes | |
| offset | Yes | |
| source | Yes | |
| comments | Yes | |
| has_more | Yes | |
| returned | Yes | |
| source_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden, and it delivers: it discloses pagination differences per source, that offset is ignored on profile, that replies are included free on profile, and the live-feed shift caveat. It also flags the request cost of include_replies. This is comprehensive behavioral disclosure.
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 summary sentence is front-loaded and each subsequent section earns its place. The dash/bullet layout makes the source-specific behavior scannable rather than a dense wall of text.
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 (three sources with divergent pagination) and no annotations, the description covers all known call-time behaviors: what is returned, pagination, nesting model, cost, and stability caveat. The output schema exists, so return values need no description. Nothing essential is missing.
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 already covers all parameters, so baseline is 3, but description compensates far beyond: it explains the meaning of limit/offset for project/studio, explains that page is profile-only with 30 per page and offset ignored, and quantifies the include_replies request cost. This materially improves an agent's ability to set parameters correctly.
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?
Opens with a precise verb and target ('Page through the comments on a project, a studio, or a user's profile'), and then explicitly narrows scope by saying only top-level comments are listed, with replies handled separately. This distinguishes it from social_get_comment_replies and posting tools without needing to open schemas.
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?
Provides detailed when-to-use guidance: source-specific pagination choices, when include_replies is worth its cost, and when it is irrelevant. It gives clear context though it never names the sibling tool (social_get_comment_replies) as the explicit alternative for reply-only fetches, so not quite a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_get_project_infoSocial Get Project InfoB
Fetch a Scratch project's metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The numeric project id. | |
| recent_comments | No | How many of the newest project comments to include as a preview. Set 0 to skip the extra request. Use `social_get_comments` to page through them all. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| url | Yes | |
| loves | Yes | |
| notes | Yes | |
| title | Yes | |
| views | Yes | |
| created | Yes | |
| favorites | Yes | |
| remix_root | Yes | |
| share_date | Yes | |
| author_name | Yes | |
| remix_count | Yes | |
| instructions | Yes | |
| parent_title | Yes | |
| remix_parent | Yes | |
| comments_note | Yes | |
| last_modified | Yes | |
| thumbnail_url | Yes | |
| is_loved_by_me | Yes | |
| recent_comments | Yes | |
| comments_allowed | Yes | |
| is_favorited_by_me | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. 'Fetch' conveys a read-only operation, and the parameter description discloses that comments require an 'extra request,' which is useful. However, it does not mention failure modes, rate limits, or other side effects.
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 with no filler or redundancy. It communicates the core purpose immediately and relies on the schema for detail.
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 simple signature and output schema reduce the need for extensive explanation. Still, the lack of sibling differentiation and absence of any when-to-use guidance leaves a noticeable gap for an agent choosing among many similar tools.
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 parameters are already well documented in the schema. The description itself adds no extra parameter meaning, so the 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 description states a specific action and resource: 'Fetch a Scratch project's metadata.' It is clear but does not differentiate from similarly named siblings like project_info, sb3_project_info, or project_summary.
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 main description provides no guidance on when to use this tool rather than the many sibling project-info tools. The only usage hint appears in the recent_comments parameter, which points to social_get_comments for paging, but no exclusions or alternative selection criteria are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_get_user_infoSocial Get User InfoB
Fetch a Scratch user's profile.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | The account to look up. | |
| recent_comments | No | How many of the newest profile comments to include as a preview. Set 0 to skip the extra request. Use `social_get_comments` to page through them all. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| name | Yes | |
| wiwo | Yes | |
| country | Yes | |
| about_me | Yes | |
| icon_url | Yes | |
| username | Yes | |
| join_date | Yes | |
| profile_url | Yes | |
| scratchteam | Yes | |
| comments_note | Yes | |
| recent_comments | Yes | |
| is_followed_by_me | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. 'Fetch' clearly implies a read-only retrieval rather than a mutation, and the schema notes that including comments triggers an extra request. However, auth requirements, rate limits, and side-effect guarantees are not addressed.
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 main description is a single, front-loaded sentence with no filler. It is concise and immediately understandable, though it leaves details such as the comment preview behavior to the schema.
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 simple fetch operation with two fully described parameters and an output schema, the definition is near-adequate. Still, the absence of annotations and the lack of explicit guidance about authentication or when this tool is the right choice create a minor gap.
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 both parameters are already documented. The description itself adds no parameter-level meaning beyond 'profile,' which is acceptable but not compensating for anything.
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 states a specific verb and resource: 'Fetch a Scratch user's profile.' This clearly identifies the operation and distinguishes it from sibling tools like social_get_project_info and social_get_comments, though 'profile' is not further elaborated.
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 context is mostly implied rather than explicit. The input schema for recent_comments usefully routes comment pagination to social_get_comments, but the description itself provides no when-to-use guidance or exclusions for alternative profile-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_like_projectSocial Like ProjectA
Love and/or favourite a project, remove either, or just check.
"like" is Scratch's love (the heart); "favourite" is the star. They are
independent, so both and removeboth operate on each.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The numeric project id. | |
| action | No | "check" to only report (the default), "like", "favourite", "both", "unlike", "unfavourite", or "removeboth". | check |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that 'check' only reports (default), and that like/favourite are independent, which clarifies the behavior of combined actions. It does not mention authentication requirements or side effects like rate limits, but the action semantics are well covered.
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 and front-loaded: the first sentence states the full purpose, and the second clarifies the key semantic distinction. Every sentence earns its place, with no fluff or repetition.
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 tool has an output schema, so return values are covered. The description explains the action semantics and the independence of like/favourite, which is the main complexity. It could mention whether authentication is required or what 'check' returns, but the output schema likely covers that. Overall, it is complete enough for an agent to call correctly.
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 both parameters. The description adds value by explaining the meaning of 'like' vs 'favourite' and the independence of the two actions, which goes beyond the enum values. It doesn't add syntax details, but the schema is sufficient.
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: to love and/or favourite a project, remove either, or just check. It explicitly maps 'like' to Scratch's love (heart) and 'favourite' to the star, which disambiguates the action semantics. This distinguishes it from sibling tools like social_get_project_info or social_follow_user.
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 explains the independence of like and favourite, and that 'both' and 'removeboth' operate on each independently. It does not explicitly state when to use this tool versus alternatives, but the action enum and clear semantics make the usage context obvious. It could be improved by noting that this is the tool for social interactions on a project, not for retrieving project info.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_list_sessionsSocial List SessionsA
List the Scratch sessions this server currently holds.
Use it to discover what is already available before asking the user for credentials.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden. It communicates that listing sessions is a safe discovery step performed before credential acquisition, implying no authentication is needed and no mutation occurs. This is meaningful context beyond the bare verb 'list'.
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 front-load the core action ('List the Scratch sessions this server currently holds') and immediately add the practical usage context. No filler or redundant detail is present.
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 no-parameter read-only listing tool with an output schema, the description is complete. It states what is listed, the scope ('this server currently holds'), and when the agent should call it. Nothing necessary for correct invocation is missing.
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 tool has zero parameters, so there is no param semantics to document. The description does not need to compensate for any schema gaps, and the empty input schema is fully consistent with the tool's purpose.
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 states a specific verb and resource: 'List the Scratch sessions this server currently holds.' This clearly differentiates it from sibling tools like social_connect_session or social_forget_session, which create, modify, or remove sessions rather than listing them.
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 tells the agent when to use it: 'Use it to discover what is already available before asking the user for credentials.' It gives clear contextual timing, though it does not name alternatives or explicitly state 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.
social_post_commentSocial Post CommentA
Post a comment on a project, a studio, or a user's profile, as the active session.
Requires a logged-in session. To reply to an existing comment, prefer
social_reply_to_comment.
Scratch rate-limits commenting and rejects content it considers spam or disallowed, which surfaces as a CommentPostFailure.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | "project", "studio", or "profile" to comment on a user's profile. | |
| content | Yes | The comment text. Max 500 characters. | |
| parent_id | No | Id of a top-level comment to reply to. Leave unset for a new top-level comment. | |
| source_id | Yes | The numeric project or studio id, or the username, matching `source`. | |
| commentee_id | No | Numeric user id to @-mention and notify. Leave unset for none. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| source | Yes | |
| content | Yes | |
| author_id | Yes | |
| parent_id | Yes | |
| source_id | Yes | |
| author_name | Yes | |
| reply_count | Yes | |
| commentee_id | Yes | |
| is_top_level | Yes | |
| datetime_created | Yes | |
| written_by_scratchteam | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden and does so well: it discloses the session requirement, rate-limit behavior, and spam/disallowed-content rejection with the resulting CommentPostFailure. This is meaningful operational context beyond the name and schema.
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 four concise, purposeful sentences with the core action first, followed by auth requirements, rate-limit failure caveats, and sibling routing. No filler or duplication of schema 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?
Given a complete input schema and an output schema, the description covers the critical external context an agent needs: authentication, failureprone behavior, and which sibling to prefer for replies. The most operationally relevant sibling is named, and nothing essential is missing.
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 5 parameters including enums, formats, and defaults. The description does not need to restate parameters, and since it adds no additional param-level meaning, the 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 description states a specific action and resource: posting a comment to a project, studio, or user profile as the active session. It distinguishes itself from the key sibling social_reply_to_comment, so an agent can tell top-level commenting apart from replying.
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 explicitly names the alternative social_reply_to_comment and instructs to prefer it when replying to an existing comment. It also states the prerequisite of a logged-in session, giving clear when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_reply_to_commentSocial Reply To CommentA
Reply to an existing comment on a project, studio or profile, as the active session.
parent_id must be a TOP-LEVEL comment id. Scratch supports only one level
of nesting, so replying to a reply must target that reply's top-level
parent; social_get_comments reports is_top_level and parent_id for
every comment so you can pick the right id.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | "project", "studio", or "profile". | |
| content | Yes | The reply text. Max 500 characters. | |
| parent_id | Yes | Id of the top-level comment being replied to. | |
| source_id | Yes | The numeric project or studio id, or the username, matching `source`. | |
| commentee_id | No | Numeric user id to @-mention and notify, normally the author of the comment you are replying to. Leave unset for none. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| source | Yes | |
| content | Yes | |
| author_id | Yes | |
| parent_id | Yes | |
| source_id | Yes | |
| author_name | Yes | |
| reply_count | Yes | |
| commentee_id | Yes | |
| is_top_level | Yes | |
| datetime_created | Yes | |
| written_by_scratchteam | Yes |
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 discloses the key behavioral constraint: only top-level comments can be replied to, and replying to a reply must target the top-level parent. It also implies the action is a write operation (reply) and mentions the active session context. It does not detail side effects like notifications or rate limits, but the nesting constraint is the most critical behavioral trait and is clearly disclosed.
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 compact and front-loaded: the first sentence states the core purpose, and the second sentence provides the critical nesting constraint. Every sentence earns its place, and there is no redundant repetition of schema details.
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 complete for the tool's core use case: it explains the action, the target resources, the active session context, and the critical parent_id constraint. It doesn't describe the return value, but an output schema exists, so that is not required. It also doesn't mention potential errors (e.g., invalid parent_id), but the guidance on using social_get_comments mitigates that gap. Overall, it is well-rounded for a social action 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 description coverage is 100%, so the schema already documents all parameters. The description adds value by explaining the relationship between parent_id and the top-level nesting rule, which is not fully captured in the schema's brief 'Id of the top-level comment being replied to.' It also clarifies the source_id semantics indirectly by mentioning project/studio/profile. The commentee_id parameter is well-documented in the schema, and the description doesn't need to repeat it.
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 action: 'Reply to an existing comment on a project, studio or profile, as the active session.' It identifies the resource (comments on project/studio/profile) and the specific verb (reply). It also distinguishes itself from related tools like social_post_comment and social_get_comment_replies by focusing on replying to an existing comment.
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 explicit guidance on when to use this tool and how to avoid a common pitfall: it explains that parent_id must be a top-level comment id, that Scratch only supports one level of nesting, and that social_get_comments reports is_top_level and parent_id so the agent can pick the right id. This is actionable usage guidance that goes beyond a simple statement of purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_search_projectsSocial Search ProjectsA
Search Scratch's shared projects, or browse them when no query is given.
Results are a lean summary: id, title, author, url, thumbnail and stats.
Follow up with social_get_project_info for the full record of one project,
or project_download to pull one apart and edit it.
Note: as of 27/07/26, the API is broken right now, so if it doesn't work it's an upstream issue -- not our one. You can, if you wish, search the web for status updates as to Scratch search functionality.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | "trending" (default), "popular", or "recent". | trending |
| limit | No | How many results to return (1-40). | |
| query | No | Words to search for. Leave unset to browse instead of search. | |
| offset | No | How many results to skip, for paging. | |
| language | No | Two-letter language code Scratch should rank for. | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| sort | Yes | |
| limit | Yes | |
| query | Yes | |
| offset | Yes | |
| results | Yes | |
| browsing | Yes | |
| has_more | Yes | |
| language | Yes | |
| returned | Yes |
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 that results are a lean summary, lists the returned fields, and importantly warns that the underlying API is currently broken and failures may be an upstream issue. This gives an agent useful expectations about behavior and failure handling, though it does not mention rate limits or error shapes.
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 well-structured and front-loaded with the core purpose, followed by result format, follow-up tools, and a relevant reliability warning. The phrasing is slightly informal in places, but each part earns its place and the length is appropriate.
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 simple search/browse tool with a complete input schema and an output schema present, the description covers the main behavior, return summary, follow-up paths, and even a known upstream outage. It is sufficiently complete for an agent to call it and interpret results, though it could have explicitly stated whether the operation is read-only.
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 fully explains sort, limit, query, offset, and language. The description adds only the browse-vs-search behavior for an empty query, which is also stated in the schema. It does not materially deepen parameter understanding beyond the structured definitions.
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 action: search or browse Scratch's shared projects. It uses a specific verb and resource, and adds enough detail about result contents to distinguish it from the many sibling tools focused on opening, editing, or managing local projects.
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 explains when to browse versus search ('browse them when no query is given') and explicitly names follow-up tools: social_get_project_info for full records and project_download for editing. It does not exhaustively contrast against all alternative tools, but provides practical routing guidance for the main decision.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_set_active_sessionSocial Set Active SessionA
Choose which logged-in account subsequent authenticated tools act as.
| Name | Required | Description | Default |
|---|---|---|---|
| username | Yes | Username of a session from `social_list_sessions`. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states that it changes the active session for subsequent tools, but does not mention prerequisites (e.g., an existing session), reversibility, error conditions, or whether the change persists. For a state-changing tool, this is minimal and 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 one concise sentence that front-loads the core action and effect. It contains no filler or redundant information, making it appropriately sized and efficient.
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 simple setter with a single parameter and no annotations, the description covers the key aspects: what it does (chooses account), the scope (subsequent authenticated tools), and implicitly how to get the username (from social_list_sessions). The presence of an output schema likely covers return details, so nothing critical is missing.
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 schema already fully documents the single 'username' parameter with a description pointing to social_list_sessions, achieving 100% coverage. The description adds marginal context by clarifying that it refers to a logged-in account, but does not meaningfully enhance schema semantics. 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 clearly states the verb 'choose' and the resource 'active session', explaining that it selects which logged-in account subsequent authenticated tools act as. This distinguishes it from siblings like social_list_sessions (which lists sessions) and social_connect_session (which establishes a connection), leaving no ambiguity about its role.
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 that this tool should be used after listing sessions (since the username comes from social_list_sessions) and that it affects subsequent authenticated tools. However, it does not explicitly mention alternatives or when not to use it, leaving some inference required. It gives clear context but no exclusions or direct comparison to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_set_bioSocial Set BioB
Set the 'About me' section on the active session's profile.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The new bio. Max 200 characters; longer values are rejected here because Scratch would silently discard them. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. It identifies the mutation and the scoped target, but it does not state whether the existing bio is overwritten, what happens if no active session exists, or what errors or response are returned. For a one-field setter this is mostly transparent, but the description stays at the surface.
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 no filler, front-loading the verb and the target resource. Nothing present is wasted, and the structure makes the tool's purpose immediately scannable.
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 tool is simple (one parameter) and an output schema exists, so return-value handling is covered. However, the active-session precondition is only implied, and the description never explains the relationship to sibling session-management tools. Adequate, but with a clear gap around the operational 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 description coverage is 100%; the text parameter is well documented with the 200-character limit and the reason longer values are rejected. The tool description itself adds no parameter-level meaning beyond that, so the 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 uses a specific verb ('Set') plus a specific resource ('About me' section on the active session's profile). It is immediately distinguishable from sibling setters like social_set_pfp and social_set_whatimworkingon, so an agent can route to the correct tool without opening schemas.
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?
There is no when-to-use or when-not-to-use guidance. The description does not contrast with related social setters, nor does it explain the prerequisite that an active session must exist or be selected (e.g., via social_set_active_session). The phrase 'active session' implies a precondition but never instructs the agent on it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_set_pfpSocial Set PfpA
Set the profile picture of the active session's account.
Scratch caps avatars at 500x500 pixels. An oversized image is rejected with HTTP 200 and an error in the body, so this checks the size before uploading and reads the response rather than assuming success.
SVG is not accepted by Scratch; rasterise it first (for example inkscape logo.svg -w 500 -h 500 -o logo.png).
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Path to a .png, .jpg or .gif no larger than 500x500. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavior burden and does well by disclosing the 500x500 cap, the deceptive HTTP 200 error body, the size pre-check, and the SVG rejection. It is missing some details like auth failure or rate limits, but the covered edge cases are highly relevant for successful invocation.
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 the core action, then packs critical caveats into a few purposeful sentences. The Inkscape example is directly actionable, and there is no filler or redundant restating of the tool name.
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 single-parameter tool with full schema coverage and an output schema, the description covers the necessary operational context: session scope, file constraints, failure mode, and SVG handling. An agent has enough information to invoke it correctly.
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 baseline is 3. The description adds value beyond the schema by explaining why the size limit matters, warning that SVG is not accepted, and giving a concrete rasterization command, which helps the agent prepare the file correctly.
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 states a specific verb ('Set') and resource ('profile picture of the active session's account'), which clearly identifies what the tool does. This differentiates it from sibling tools like social_set_bio and project_set_thumbnail, which target different resources.
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 gives clear context: it operates on the active session's account and is for setting the profile picture. It does not explicitly name alternative tools or say when not to use them, but the context is strong enough that an agent can infer the intended use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_set_whatimworkingonSocial Set WhatimworkingonB
Set the "What I'm working on" section on the active session's profile.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | The new status. Max 255 characters; longer values are rejected here because Scratch would silently discard them. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only states that it sets a field. It does not disclose side effects, overwriting behavior, authentication requirements, or failure modes if no active session exists. The verb 'set' implies mutation, but that is minimal and not explicit enough for a tool without annotation support.
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 that states the action with no filler. It is appropriately concise, though it lacks any structural enhancement or additional context.
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 operation is simple, but the description omits the key prerequisite that an active session is required, leaving an agent without guidance on how to sequence this relative to social_set_active_session. The output schema covers return values, but this contextual gap prevents full 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?
Schema description coverage is 100%, and the schema already provides a thorough explanation of the `text` parameter, including max length and rejection behavior. The tool description adds nothing beyond the schema, so the 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 uses a specific verb ('Set') and names the exact resource ('What I'm working on' section on the active session's profile'). This clearly differentiates it from sibling tools like social_set_bio and social_set_pfp, making the intended action unmistakable.
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 that an active session must exist first (e.g., via social_set_active_session), nor any conditions that would favor this over social_set_bio or social_set_pfp. It is purely functional with no usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
social_verify_sessionSocial Verify SessionA
Check with Scratch whether a stored session id is still valid.
Restored sessions are rebuilt offline from the session id, so an expired or revoked login looks fine until it is used. This performs a real request to confirm, and refreshes the account details on success.
| Name | Required | Description | Default |
|---|---|---|---|
| username | No | Session to check. Defaults to the active session. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
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 that the tool performs a real network request and refreshes account details on success, which is behavior an agent could not infer from the schema alone. It does not describe failure behavior in detail, but the output schema likely covers that.
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 purpose is front-loaded in the first sentence, followed by two concise sentences explaining the trap and the real-request behavior. Every sentence earns its place with no redundancy.
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 simple, optional-parameter verification tool with an output schema, the description covers purpose, trigger scenario, network behavior, and side effect on success. Nothing essential is missing for correct invocation.
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% for the single optional username parameter, so the description does not need to add much parameter-level detail. It aligns the session-id concept with the tool's purpose but adds no new syntax or format guidance 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 states a specific verb and resource: 'Check with Scratch whether a stored session id is still valid.' This clearly distinguishes verification from sibling tools like social_connect_session or social_list_sessions.
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 explains the important context: restored sessions are rebuilt offline and can look valid even when expired or revoked, so a real request is needed to confirm. This gives clear guidance on when to use the tool, though it does not explicitly name alternative tools or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spy_add_package_blocksSpy Add Package BlocksB
Make blocks for an already-installed module (stdlib modules work too).
| Name | Required | Description | Default |
|---|---|---|---|
| module | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavior on its own, but it only states 'Make blocks'. It does not mention whether the operation mutates the project, whether it is reversible, whether an open project is required, or what happens with invalid module names. This leaves meaningful behavioral uncertainty for an 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, tightly worded sentence with no filler. It front-loads the main action and immediately includes the key prerequisite, so every word earns its place.
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 only one parameter and the presence of an output schema, the definition covers the basic call shape. Yet it leaves gaps around preconditions, side effects, and how 'making blocks'integrates with the broader spy_ workflow (e.g., needing an open project). It is minimally viable but not fully self-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?
The schema offers only a bare string parameter named 'module' with 0% description coverage. The description adds that it should be an already-installed module and that standard library modules are valid, which gives the agent useful grounding for the parameter. However, it does not provide examples, format expectations, or differentiation between package name and module path.
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 'Make blocks for an already-installed module' names a concrete action and resource, and the 'already-installed' qualifier distinguishes it from installation-related siblings like spy_install_package. It is not a tautology and gives a clear sense of the operation, though 'blocks' is somewhat domain-specific and not fully elaborated.
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 phrase 'already-installed module' establishes a prerequisite for use, and 'stdlib modules work too' clarifies a common edge case. However, it does not explicitly direct the agent to a specific sibling (e.g., spy_remove_package_blocks) or state when not to use the tool, so the guidance is mostly 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.
spy_delete_fileSpy Delete FileC
Remove a tab from the project.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of disclosing behavior, but it only says 'remove a tab'. It does not state whether the file is permanently deleted, whether the action is reversible, what side effects occur, or what happens to unsaved changes. For a delete-like operation, this is a significant transparency 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, compact sentence with no wasted words, and the action is front-loaded. However, it is so terse that it omits essential context, so the brevity is more under-specification than effective 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?
Though the tool has only one parameter and an output schema, the description remains incomplete: it does not clarify the behavior, parameter semantics, or usage context. An agent would not have enough information to confidently invoke this tool, especially given the ambiguity between removing a tab and deleting a file.
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 0%, so the description must compensate for the undocumented 'file' parameter. It does not: it says 'tab' but never explains that the file parameter identifies a tab, a path, a project ID, or something else. The agent is left without meaning for the only required parameter.
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 states a clear action ('Remove a tab from the project'), but the wording is ambiguous relative to the tool name and parameter: 'tab' is not the same as 'file', and it is unclear whether this deletes a file or merely closes an editor tab. It does not explicitly distinguish this from other remove/delete 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 is provided about when to use this tool versus alternatives such as project_remove_asset or sb3_remove_sprite. There are no conditions, exclusions, or context cues to help an agent decide when this is the appropriate deletion/removal operation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spy_import_python_fileSpy Import Python FileB
Turn an existing .py file on disk into blocks.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 of behavioral disclosure. It states the action but does not explain side effects, whether an open project is required, whether existing blocks are replaced, or what happens on failure. This is thin for an operation that likely mutates project state.
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 short sentence with no filler. It front-loads the action and the key constraint, delivering maximum information per word for such a simple 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?
For a one-parameter tool with an output schema, the description is almost sufficient. The main gaps are usage context and behavioral side effects, which matter because no annotations exist to fill them.
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?
There is no parameter description in the schema, so the description must compensate. It does clarify that 'path' refers to a .py file on disk, which adds some meaning, but it omits details like relative vs absolute paths, file accessibility, or required format.
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 uses a specific verb ('Turn') and resource ('existing .py file on disk'), making the core action clear. It implies the reverse of spy_write_python, though it does not explicitly name sibling alternatives.
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 intended use is implied by the purpose statement: import a Python file from disk to create blocks. However, there is no explicit guidance about when to prefer this over related spy_* tools, no prerequisites, and no when-not-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spy_install_packageSpy Install PackageC
pip install a package and turn it into blocks.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
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 disclosure. It only says 'pip install a package and turn it into blocks' but does not disclose side effects such as network access, project mutation, package overwrites, or failure behavior.
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 with no filler, and the core pip-install action is front-loaded. Terseness, however, leads to ambiguity around what 'blocks' means.
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?
Although the tool has only one parameter and an output schema, the description omits important context: what happens after installation, whether the current project is modified, how 'blocks' relate to the project, and what the output represents. An agent would still need to investigate before invoking confidently.
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 0%, so the description must compensate. It implies that 'name' refers to a pip-installable package, which adds some meaning beyond the bare string type, but it does not explain name format, version constraints, or whether the package must already be available.
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 states a concrete action: pip-install a package and transform it into blocks. However, 'blocks' is undefined and the relationship to sibling tools like spy_add_package_blocks or spy_remove_package_blocks is not clarified, so the tool's exact role is only partially clear.
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 is given about when to use this tool versus alternatives such as spy_list_packages or spy_add_package_blocks. There is no mention of prerequisites, like having a project open, or when installation would be unnecessary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spy_list_block_typesSpy List Block TypesC
Every kind of block ScratchPy knows, with the Python each one produces.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose the main behavior—enumerating known block types and their generated Python—but does not mention the optional category filtering behavior, ordering, or whether the list is affected by installed packages. This is adequate for a simple read-only list but not richly transparent.
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 with no wasted words. It front-loads the core purpose and output format, though it sacrifices the parameter semantics for brevity.
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 tool is simple with only one optional parameter and an output schema exists, so the description doesn't need to explain return structure. However, the missing explanation of the 'category' parameter and the lack of usage context make it only minimally complete.
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 one optional parameter, 'category', with 0% schema description coverage, and the description does not explain it at all. An agent has no way to know what category values are valid or how the category parameter affects results.
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 states a specific resource ('every kind of block ScratchPy knows') and the key output ('with the Python each one produces'). This clearly distinguishes it from sibling tools like spy_read_blocks or spy_list_packages, though it could more directly say 'returns a list...'.
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 is given about when to use this tool versus alternatives. It does not mention that this is a reference lookup for block types, nor does it clarify whether it should be used before writing Python or adding package blocks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spy_list_packagesSpy List PackagesB
Python packages installed in the environment ScratchPy uses.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that it lists installed packages, implying a read-only operation, but does not explicitly confirm safety, absence of side effects, or any prerequisites. It also does not mention what happens if the environment is unavailable or how the output is structured. The description is minimal and does not add behavioral context beyond the obvious.
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 states the resource and action without redundancy. It is appropriately sized for a tool with no parameters and no complexity. It is front-loaded with the key information, and every word contributes meaning.
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 (no parameters, no annotations, and an output schema that likely documents return values), the description is adequate but could be slightly more explicit. It covers the core purpose, but does not mention that it is a read-only operation or any environment assumptions. Since the output schema exists, the lack of return format details is acceptable, but the description could note the read-only nature for clarity.
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 tool has zero parameters, so the schema coverage is trivially 100%. The description adds no parameter details because there are none to add. Per the rubric, with 0 parameters the baseline score is 4, and the description does not need to compensate for any missing parameter information.
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 states a specific verb ('list') and a clear resource: Python packages installed in the environment ScratchPy uses. This clearly distinguishes it from siblings like spy_install_package and spy_add_package_blocks, which involve modifying packages rather than listing them. However, it does not explicitly say 'returns a list' or mention the output format, though the verb 'list' is implied by the name and the phrase 'packages installed'.
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 is provided on when to use this tool versus alternatives. The description only states what the tool does, with no mention of contexts where listing packages is appropriate, nor any comparison to sibling tools like spy_install_package or spy_add_package_blocks. An agent must infer usage from the tool name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spy_open_projectSpy Open ProjectA
Open (or create) a ScratchPy .spy project file; all other spy_* tools act on it.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool can both open and create a file, and that it sets a context for subsequent spy_* tools. However, it doesn't disclose what happens if the file doesn't exist (does it create a blank project?), whether it overwrites existing content, or what the output schema contains. The 'or create' behavior is useful but incomplete.
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 with no waste. The core action is front-loaded, and the scoping note about other spy_* tools is placed at the end. Every word earns its place.
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 single-parameter tool with an output schema, the description is mostly adequate. It explains the tool's role in the spy_* workflow. However, it doesn't clarify the create-vs-open decision logic, error behavior, or what the output schema contains. Given the tool's role as a session/context setter, a bit more detail on state effects would help.
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 0%, so the description must compensate. The description mentions 'path' implicitly by saying 'a .spy project file', but doesn't clarify whether the path should include the .spy extension, whether directories are created, or what happens if the path is invalid. With only one parameter, the description adds some meaning but leaves format details 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 states a clear verb ('Open (or create)') and resource ('.spy project file'), and distinguishes itself from siblings by noting that all other spy_* tools act on it. It doesn't explicitly name sibling alternatives like project_open or sb3_open_project, but the spy_* namespace and the 'all other spy_* tools act on it' clause provide enough differentiation.
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 this tool: before using any other spy_* tool, since they act on the opened project. However, it doesn't explicitly state when not to use it or mention alternatives like project_open or sb3_open_project for other project types. The guidance 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.
spy_project_overviewSpy Project OverviewB
What is in the .spy project: tabs, variables, lists, custom blocks, package packs.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. 'What is in...' implies a read-only inspection and lists the returned categories, but it does not explicitly state that no project mutation occurs, whether a project must be open first, or any other behavioral constraints.
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 short sentence that places the core question ('What is in...') first and enumerates the content categories. It is economical and scannable, though the brevity contributes to missing guidance in other dimensions.
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 zero-parameter tool with an output schema, the description covers the main purpose and return categories. It is less complete in orienting an agent among the many related spy/project/sb3 tools, and it omits explicit behavioral context, but the provided schema and output schema fill some 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?
The tool has zero parameters and schema coverage is 100%, so the baseline of 4 applies. The description adds no parameter detail, but none is needed since the schema already exhaustively defines an empty input object.
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 identifies the resource (.spy project) and enumerates content categories (tabs, variables, lists, custom blocks, package packs), making the tool's purpose understandable. It lacks an explicit verb and does not differentiate itself from siblings like project_summary or spy_read_blocks, so it does not fully earn a 5.
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 is given about when to use this tool versus siblings such as project_summary, spy_read_blocks, or spy_list_packages. There are no use-case conditions, exclusions, or alternative references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spy_read_blocksSpy Read BlocksC
Readable outline of every script in a tab.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does convey that the output is a human-readable outline rather than raw code or block data, and that it covers all scripts in a tab. However, it does not clarify prerequisites like whether a project/tab must be open, what 'tab' means, or whether this operation is strictly non-mutating.
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 that front-loads the core behavior. It could be slightly more explicit by using a verb, but it contains no filler or redundant 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?
The tool is simple and has an output schema, so return-value detail is not needed in the description. However, the complete absence of parameter semantics and usage guidance leaves a meaningful gap: an agent cannot confidently determine what 'file' means or when to invoke this tool over its siblings.
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 0% and the description never mentions the only parameter, 'file'. There is no explanation of whether 'file' identifies a tab, a path, or a project file, nor what the empty-string default means. The agent must guess how to supply this parameter.
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 identifies the resource (block scripts), the scope (every script in a tab), and the output form (a readable outline). It lacks an explicit verb like 'returns' and does not explicitly distinguish itself from siblings, but the intent is clear enough for an agent.
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 is given about when to use this tool instead of related siblings like spy_read_code, sb3_list_blocks, or spy_project_overview. The only usage signal is the name and the implied purpose of inspecting blocks, so the agent is left to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spy_read_codeSpy Read CodeD
The Python a tab's blocks generate.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the burden of behavioral disclosure. It only hints that the output is generated Python; it does not say whether the operation is read-only, whether a project must be open, whether a file is required, or what happens when the file parameter is empty.
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, but this is severe under-specification, not effective conciseness. The sentence structure is confusing and fails to communicate the intended function 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?
Even though there is an output schema, the input param is undocumented, the description gives no operational context, and the relationship to sibling tools is absent. An agent has no reliable basis to invoke this tool correctly.
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 one param, file, with no schema description (0% coverage), and the tool description never mentions it. An agent is left completely in the dark about what to pass, whether it is required, and what the default '' means.
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 is a grammatically garbled noun phrase: 'The Python a tab's blocks generate.' It likely means 'read the Python code generated from a tab's blocks,' but there is no clear verb or explicit statement of what the tool does. It does not adequately distinguish itself from spies like spy_read_blocks or spy_write_python.
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 is provided on when to use this tool versus related tools such as spy_read_blocks, spy_write_python, or project_list_assets. The description vaguely implies generated Python code is involved, but never states conditions, prerequisites, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spy_remove_package_blocksSpy Remove Package BlocksC
Take a package's blocks back out of the project.
| Name | Required | Description | Default |
|---|---|---|---|
| module | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for disclosing behavioral details. It only states the action without mentioning side effects (e.g., whether the package itself is removed, reversibility, or any effects on the project structure). This is a significant gap for a mutation tool.
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, short sentence with no wasted words, but it is under-specified. While conciseness is good, the lack of essential detail means it does not fully earn its place. It is not a tautology and adds some clarity, but it could be more informative without sacrificing brevity.
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 simple one-parameter tool with an output schema, the description is still incomplete. It does not explain the module parameter, any side effects, or when to use it. The output schema may cover return values, but the absence of usage and parameter guidance leaves the agent with insufficient context for correct invocation.
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 one required parameter 'module' with no description, and the schema description coverage is 0%. The description mentions 'a package's blocks' but never explicitly links the 'module' parameter to the package identifier, nor does it explain expected format or any constraints. The agent must guess that 'module' refers to the package name, which is not stated.
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 uses a specific verb ('take back out') and resource ('a package's blocks') indicating removal from the project. It is clear about the core action and distinct from related tools like spy_add_package_blocks or spy_list_packages, though it does not explicitly name alternatives. The phrase 'back out' implies reversal of an earlier add operation, adding context.
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?
There is no guidance on when to use this tool versus other removal tools or the inverse spy_add_package_blocks. The description simply states the action without specifying prerequisites, typical scenarios, or exclusions. An agent must infer usage from the name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spy_runSpy RunB
Run a tab's generated Python and return what it printed.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | ||
| stdin | No | ||
| timeout | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that the tool executes Python and returns printed output, but it does not disclose execution-environment details, potential side effects of running arbitrary code, timeout semantics, or error behavior. For an execution tool, this leaves important behavioral traits unspecified.
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 with no filler. Every word contributes to understanding the tool's core purpose and output, making it easy to parse quickly.
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 code-execution tool with three parameters, no annotations, and no parameter descriptions, the one-line description is too sparse. It omits prerequisites, execution environment, how parameters interact, and failure modes. The presence of an output schema helps with return values but does not compensate for the missing operational 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 description coverage is 0%, and the description does not explain any of the three parameters: file, stdin, or timeout. The parameter names offer some intuitive meaning, but 'file' is ambiguous without context, and the description does not clarify how stdin or timeout affect execution.
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 states a specific verb ('Run'), resource ('a tab's generated Python'), and observable outcome ('return what it printed'). It clearly distinguishes this execution tool from sibling read/write tools like spy_read_code and spy_write_python, as well as from VM-based run 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?
The phrase 'a tab's generated Python' implies this tool belongs to a code-generation workflow: first generate or write Python, then run it via spy_run. However, the description does not explicitly state when to prefer this over alternatives like sb3_vm_run or sb3_run_project, nor does it mention any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spy_set_variableSpy Set VariableB
Create a variable or list, or change its starting value.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | variable | |
| name | Yes | ||
| value | No | 0 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It adds useful nuance by describing the operation as setting a 'starting value' rather than a live runtime value, and implies create-or-change behavior. However, it does not mention scope, side effects, or how the behavior differs for lists vs variables.
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 one compact sentence with no fluff or repetition of schema details. The action and object are front-loaded, making it easy to scan.
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 simple three-parameter tool with an output schema, this is minimally usable: the description plus schema gives a basic mental model. But it omits which project or scope it operates on and does not explain when to choose it over the similar sb3_set_variable/sb3_set_list tools.
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 0%, so the description must compensate for undocumented parameters. It only hints that kind may be 'variable' or 'list' and that value is a starting value; the required name parameter and value format are left entirely to inference.
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 states a specific verb and resource: create or change a variable/list's starting value. It clearly conveys the core action, though it does not differentiate this from sibling tools like sb3_set_variable or sb3_set_list.
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?
There is no guidance on when to use this tool versus similar alternatives, and no exclusions or prerequisites are given. The existence of close siblings such as sb3_set_variable and sb3_set_list makes this gap noticeable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spy_write_pythonSpy Write PythonC
THE MAIN BUILD TOOL: give ordinary Python, it becomes Scratch blocks in a tab.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | main | |
| source | Yes | ||
| replace | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior, but it only states the high-level transformation. It omits critical details such as the effect of the 'replace' parameter (default true), whether it requires an open project, or any side effects on existing code in the tab. This is insufficient for safe invocation.
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 but under-specified. It is front-loaded with 'THE MAIN BUILD TOOL', but the single sentence lacks necessary details about parameters and behavior. For a tool with three parameters and no annotations, this is inappropriately brief, failing to earn its completeness.
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 markedly incomplete for a tool with 3 parameters (one required) and no annotations. It does not mention prerequisites, side effects, how the file parameter works, or the behavior of the replace flag. Given the complexity and the need to guide an agent, this description is grossly inadequate.
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 0%, so the description must compensate by explaining the parameters. It only hints at 'source' through 'give ordinary Python' but says nothing about the 'file' parameter or the 'replace' boolean. The description adds no value beyond the raw schema, leaving the agent to guess parameter semantics.
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 core function: converting Python source into Scratch blocks. It uses the phrase 'THE MAIN BUILD TOOL' to establish its primary role, and 'give ordinary Python, it becomes Scratch blocks' precisely describes the transformation, distinguishing it from other project manipulation 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?
The description implies this is the primary build tool ('THE MAIN BUILD TOOL'), giving some usage context. However, it does not explicitly mention when to prefer this over alternatives like spy_import_python_file or project_build, nor does it state any exclusions or prerequisites.
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.
117 tool updates
v1.0.0- First observed
project_add_costume - First observed
project_add_sound - First observed
project_build - First observed
project_check_toolchain - First observed
project_close - First observed
project_download - First observed
project_editing_guide - First observed
project_goboscript_docs_help - First observed
project_info - First observed
project_list - First observed
project_list_assets - First observed
project_new - First observed
project_open - First observed
project_remove_asset - First observed
project_save_to_cloud - First observed
project_select - First observed
project_set_thumbnail - First observed
project_summary - First observed
sb3_add_broadcast - First observed
sb3_add_comment - First observed
sb3_add_costume - First observed
sb3_add_sound - First observed
sb3_add_sprite - First observed
sb3_cloud_get_vars - First observed
sb3_cloud_logs - First observed
sb3_cloud_set_var - First observed
sb3_delete_list - First observed
sb3_delete_variable - First observed
sb3_enable_extension - First observed
sb3_favorites - First observed
sb3_find_blocks - First observed
sb3_get_block_schema - First observed
sb3_get_target - First observed
sb3_get_target_json - First observed
sb3_git_diff - First observed
sb3_git_pack - First observed
sb3_git_unpack - First observed
sb3_list_blocks - First observed
sb3_list_comments - First observed
sb3_list_sprites - First observed
sb3_open_project - First observed
sb3_open_scratch_project - First observed
sb3_patch_target - First observed
sb3_project_info - First observed
sb3_push_to_scratch - First observed
sb3_reload - First observed
sb3_remixes - First observed
sb3_remove_comment - First observed
sb3_remove_costume - First observed
sb3_remove_sound - First observed
sb3_remove_sprite - First observed
sb3_rename_target - First observed
sb3_run_project - First observed
sb3_save_project - First observed
sb3_scratch_login - First observed
sb3_screenshot - First observed
sb3_screenshot_jpeg - First observed
sb3_set_comment - First observed
sb3_set_list - First observed
sb3_set_sprite - First observed
sb3_set_stage - First observed
sb3_set_variable - First observed
sb3_share_project - First observed
sb3_stop_project - First observed
sb3_studio_info - First observed
sb3_validate_blocks - First observed
sb3_vm_clones - First observed
sb3_vm_green_flag - First observed
sb3_vm_input - First observed
sb3_vm_load - First observed
sb3_vm_mix_wav - First observed
sb3_vm_monitors - First observed
sb3_vm_pen_png - First observed
sb3_vm_poke - First observed
sb3_vm_run - First observed
sb3_vm_run_until - First observed
sb3_vm_seed - First observed
sb3_vm_state - First observed
sb3_vm_step_frame - First observed
sb3_vm_stop - First observed
sb3_vm_stub_calls - First observed
sb3_vm_threads - First observed
sb3_vm_watch - First observed
social_add_project_to_studio - First observed
social_become_scratcher - First observed
social_check_inbox - First observed
social_connect_session - First observed
social_follow_user - First observed
social_forget_session - First observed
social_get_comment_replies - First observed
social_get_comments - First observed
social_get_project_info - First observed
social_get_user_info - First observed
social_like_project - First observed
social_list_sessions - First observed
social_post_comment - First observed
social_reply_to_comment - First observed
social_search_projects - First observed
social_set_active_session - First observed
social_set_bio - First observed
social_set_pfp - First observed
social_set_whatimworkingon - First observed
social_verify_session - First observed
spy_add_package_blocks - First observed
spy_delete_file - First observed
spy_import_python_file - First observed
spy_install_package - First observed
spy_list_block_types - First observed
spy_list_packages - First observed
spy_open_project - First observed
spy_project_overview - First observed
spy_read_blocks - First observed
spy_read_code - First observed
spy_remove_package_blocks - First observed
spy_run - First observed
spy_set_variable - First observed
spy_write_python
TDQS
Scored across 117 tools
The prefix families (project_, social_, sb3_, spy_) provide clear context, so many tools are distinguishable. However, there are multiple overlapping same-purpose tools across subsystems—project_info vs sb3_project_info vs social_get_project_info, project_download vs sb3_open_scratch_project, project_save_to_cloud vs sb3_push_to_scratch, and project_add_costume vs sb3_add_costume—which can cause misselection if the agent is not attentive to the descriptions.
All names are snake_case and there is a recognizable prefix convention, which is helpful. But within each prefix the pattern is mixed: some are verb_noun (project_add_costume, social_post_comment), some are noun phrases (project_summary, sb3_project_info, spy_project_overview), and some are noun+verb (sb3_vm_run, sb3_vm_input). Retrieval verbs also vary between get_, list_, and read_ without a consistent rule.
117 tools is an extreme tool count, far beyond what is practical for an agent to navigate or select from reliably. Even for a 'unified' Scratch server, this appears to be four or more separate tool surfaces merged into one, and the rubric explicitly flags 50+ tools as an extreme mismatch.
The server is functionally very complete: it covers goboscript project authoring, build/upload, Scratch website social interactions, .sb3 editing, VM-based testing, and ScratchPy code-to-blocks conversion. Minor gaps remain—social comment deletion/editing, studio creation/management, and project deletion/unsharing are absent—but these are workable around and do not block core workflows.
Maintenance
Related MCP Connectors
Free public MCP for AI agents — 193 tools, 44 workflows. No API key.
A registry of AI agent tools — MCP servers, APIs, CLIs, SDKs — kept current by automated ingestion.
Hosted MCP with 91 agent tools: X, domains, SEO, Maps, Trends, Search, YouTube, TikTok, and more.
One AI endpoint to search and call 22k+ MCP servers; 50+ hosted tools work instantly, no key.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceExposes 5 meta-tools that allow AI agents to autonomously discover and execute tools from 100+ MCP servers, reducing token usage by 99%.1,504 npm1MIT
- AlicenseNot gradedqualityBmaintenanceA production MCP integration that lets AI agents control Roblox Studio to autonomously build, test, and debug Roblox games. Provides 39 tools for explorer control, script management, terrain generation, and autonomous testing.1MIT
- AlicenseCqualityAmaintenanceEnables AI agents to autonomously develop and test Godot 4 games through an MCP-based feedback loop, providing tools for authoring, running, observing, playtesting, and verifying game projects.2099 npm6MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to directly control Roblox, reverse engineer games, intercept network traffic, simulate user input, and manipulate game state through 150+ MCP tools.80 npmMIT
social_add_project_to_studioSocial Add Project To StudioA
Add a project to a studio as the active account.
Scratch only allows this if the account may add to that studio: it must be the owner, a curator, or the studio must allow anyone to add.
Output Schema
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 that the operation uses the active account identity and that Scratch imposes permission requirements. This is meaningful behavioral context beyond what the schema shows, though it does not cover failure modes or side effects.
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 short, front-loaded with the action, and every sentence adds value. The permission caveat is important and placed immediately after the main action without unnecessary filler.
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 tool has a simple two-parameter schema, full parameter documentation, and an output schema, so returns need no explanation. The description covers the key contextual point (active account and permission conditions). Slightly more detail about failure behavior would be ideal, but it is not necessary for correct invocation.
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 both parameters clearly described as numeric IDs. The description does not add further parameter-level detail, so the baseline of 3 applies since the schema already documents everything needed.
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 states a specific verb ('Add') and resource ('project to a studio'), and clarifies it operates as the active account. This clearly distinguishes it from the many sibling tools and makes the tool's function unambiguous.
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 provides clear context on when the operation is allowed (owner, curator, or open studio), which helps the agent anticipate failure conditions. It does not explicitly name alternatives, but the tool is unique among siblings, so exclusion guidance is less critical.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.