Skip to main content
Glama
BlockHand

BlockHand

by gjlmotea

BlockHand — MCP server for Minecraft Education

English | 繁體中文

BlockHand: an MCP server for Minecraft Education Edition

BlockHand gives AI agents hands and eyes inside Minecraft Education Edition. Claude Code, Codex, Gemini CLI, Grok or any other Model Context Protocol client can drive the Agent robot, build structures, read blocks, compare regions and react to game events.

It talks to the game only through Minecraft Education's built-in /connect (/wsserver) WebSocket command. There is no add-on, behavior pack, mod or Script API to install in the game, nothing is injected into the game process, and no screen reading is involved. On a school computer, the only thing to install is the AI client.

  • 44 tools and 2 resources: Agent robot control, world edits, 24 build shapes, blueprints, block reading, region comparison, symmetry checks and event subscription.

  • Fast building: shapes are merged into the fewest possible /fill commands (a solid sphere of radius 8 goes from 2,000+ blocks to under 200 commands).

  • Local by default: the game WebSocket listens on 127.0.0.1 unless MINECRAFT_EDU_WS_HOST changes it, and no account or online service is involved.

  • One fixed address: every AI session on the machine shares one background hub, so the game always connects with /connect 127.0.0.1:19131.

  • Hands-off by design: the agent reloads packs, rejoins the world and restarts a hung game by itself instead of asking the player to. The player is needed only to sign in. See Hands-off operation.

  • Installers for Claude Code, Codex, Gemini CLI and Grok CLI when you run from source.

The /connect command is an official interface. The WebSocket message protocol behind it has no published stability guarantee, so behavior should be re-checked after game updates.

Contents

Related MCP server: Minecraft MCP Server

Quick start

Requirements:

  • Minecraft Education Edition, in a world with Cheats on. The player who connects needs operator rights. Verified on 1.26.32 (Windows desktop and macOS 14+).

  • Node.js 22 or newer on the machine that runs the AI client.

1. Register the server with your AI client

Claude Code:

claude mcp add blockhand --scope user -- npx -y @gjlmotea/blockhand-mcp

Codex:

codex mcp add blockhand -- npx -y @gjlmotea/blockhand-mcp

Clients that read an mcpServers JSON config (Claude Desktop, Cursor, Gemini CLI):

{
  "mcpServers": {
    "blockhand": {
      "command": "npx",
      "args": ["-y", "@gjlmotea/blockhand-mcp"]
    }
  }
}

VS Code uses a top-level servers key instead, and each server has a type:

{
  "servers": {
    "blockhand": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@gjlmotea/blockhand-mcp"]
    }
  }
}

Where each client keeps the file:

Client

Config file

Claude Desktop

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json; Windows: %APPDATA%\Claude\claude_desktop_config.json. Settings → Developer → Edit Config opens it

Cursor

~/.cursor/mcp.json for every project, .cursor/mcp.json inside one project

Gemini CLI

~/.gemini/settings.json (user), .gemini/settings.json (project)

VS Code

.vscode/mcp.json in the workspace, or the user mcp.json that the MCP: Open User Configuration command opens

Sources: Claude Desktop, Cursor, Gemini CLI, VS Code.

Desktop apps started from Finder or the Start menu often do not see your shell's PATH. If the server fails to start with a vague "server not responding" error, replace npx with its absolute path (which npx on macOS, where npx on Windows).

Restart the AI client after registering.

2. Connect the game

The game connects to the server, not the other way round.

  1. Open a world in Minecraft Education. The main menu is not enough.

  2. Make sure Cheats are on.

  3. Type in the chat:

    /connect 127.0.0.1:19131

If your agent can send keys to the game window (see Hands-off operation), it types this itself; it reads the exact command from mc_status.

When the connection is made, a green "✔ BlockHand connected" line appears in the chat, in the game's own language: English, Traditional Chinese or Simplified Chinese, and English for any other game language. You can also ask the AI to call mc_status, which returns the exact connectCommand.

3. Ask for something

Build a hollow glass sphere with radius 6 in front of me.

Summon the Agent, walk it five blocks forward and plant a row of wheat.

Check whether the house at 0 64 0 to 20 80 20 is mirror-symmetric and show me which blocks break the symmetry.

Install from source

Use this route to work on BlockHand itself, or to use the installers and the doctor check.

git clone https://github.com/gjlmotea/blockhand-mcp.git
cd blockhand-mcp
corepack pnpm install --frozen-lockfile
corepack pnpm run build

Register with one of the installers:

corepack pnpm run setup:claude    # or setup:codex / setup:gemini / setup:grok
corepack pnpm run doctor          # add --client=claude etc. to check another client

The installers do more than write a config entry:

  • They fill in the absolute path of this machine's Node, so desktop apps that cannot read nvm, Homebrew or your shell PATH still start the server.

  • Before changing any setting, they run a real MCP initialize with the exact command, arguments and environment they are about to save, and check that all 44 tools are there.

  • They do nothing when the server is already registered correctly, so re-running is safe.

  • When an entry with the same name exists but differs, they stop and show the difference instead of overwriting someone else's settings.

  • They write only through each client's official mcp add / mcp remove command, never by editing config files directly.

Remove with corepack pnpm run uninstall:claude (or uninstall:codex, and so on). It refuses to remove entries it cannot identify as belonging to this checkout.

Client

Writes to

Then

Codex

~/.codex/config.toml

Quit and restart; desktop app, CLI and IDE share it

Claude Code

~/.claude.json (user scope)

Restart the session

Gemini CLI

~/.gemini/settings.json (user scope)

Restart the CLI

Grok CLI

~/.grok/config.toml

Restart the CLI

To register by hand, point the client at <NODE> <REPO>/dist/index.js, where <NODE> is the absolute path from node -p "process.execPath" and <REPO> is the absolute path of the checkout. Claude Code and Gemini CLI place the command differently:

claude mcp add blockhand --scope user -- <NODE> <REPO>/dist/index.js
gemini mcp add --scope user blockhand <NODE> <REPO>/dist/index.js

Claude Code wants -- before the command. Gemini CLI takes the command right after the name (gemini mcp add [options] <name> <commandOrUrl> [args...]); a -- there would leave it without a command. Gemini only needs -- after the command, in front of server arguments that collide with its own options, and BlockHand takes no arguments. Gemini's default scope is project, so use --scope user to make it global. Claude Code's default scope is local; --scope project writes a shareable .mcp.json, which is handy for a whole class. Sources: Claude Code, Gemini CLI.

Tools

Connection and fallback (6)

Tool

Purpose

mc_status

Bridge state, the /connect command, subscribed events, command counters. Check this first when anything fails

mc_await_connection

Wait for the game to connect (up to 120 seconds per call)

mc_run_command

One raw slash command, for anything without a dedicated tool

mc_run_commands

Several raw commands in order

mc_undo_control

Inspect, clear or configure single-step undo (off by default)

mc_undo

Undo the last protected build, after checking for conflicting changes

Agent robot (10)

Tool

Purpose

mc_agent_create

Summon the Agent

mc_agent_move

Walk N blocks in a direction

mc_agent_turn

Turn left or right by 90 degrees

mc_agent_teleport

Bring a lost Agent back to the player

mc_agent_act

Attack, destroy or till, optionally repeated

mc_agent_place

Place a block from an inventory slot

mc_agent_collect

Pick up dropped items

mc_agent_inventory

Count, free space, item detail, drop, drop all, transfer

mc_agent_sense

Inspect, inspect data, detect, detect redstone: the Agent's eyes

mc_agent_program

Send a whole sequence of actions in one call and get a result per step

Agent directions are relative to the way the Agent is facing, not compass directions.

World (13)

mc_set_block, mc_fill, mc_clone, mc_test_block, mc_read_block, mc_verify_reading, mc_compare_regions, mc_analyze_symmetry, mc_query_target, mc_summon, mc_world_settings (time, weather, game rules, difficulty), mc_structure (save and load structures), mc_ticking_area.

mc_query_target parses the JSON that querytarget returns. It is the way to find where the player or the Agent is before building.

mc_compare_regions compares two regions with a single testforblocks. Its masked mode ignores air in the source, which is how you check that a student's build contains everything it should, whatever else is around it.

mc_analyze_symmetry checks whether a region is mirror-symmetric and, when it is not, points to the cells that differ. It works by saving the region, loading a mirrored copy into a scratch area, comparing, and restoring the scratch area afterwards. The scratch area may not overlap the region being analyzed; this is checked before any command is sent. If backing up the scratch area fails, nothing is placed.

mc_structure saves to memory by default (gone when the game closes). Use saveMode: "disk" only when the user asks to keep a structure; it writes into the world folder. The game has no command that lists saved structures, so mc_status reports the names saved during the current session.

Player and feedback (7)

mc_teleport, mc_give, mc_gamemode, mc_effect, mc_player_action (kill, clear, xp, ability), mc_message (say, tell, title, subtitle, action bar), mc_feedback (sounds and particles).

Building (4)

Tool

Purpose

mc_build_preview

Plan only: block count, bounding box, number of /fill batches

mc_build_shape

24 geometric shapes; most support hollow

mc_blueprint_preview

Preview a block-by-block blueprint

mc_build_blueprint

Any shape from a list of "coordinate → block"; identical blocks are merged

Group

Shapes

Solids

box, sphere, ellipsoid, cylinder, cone, pyramid, prism

Lines and surfaces

line, curve (smooth curve), disk, tube (cylinder along any direction)

Building parts

wedge (single slope), roof (gable or hip), arch, stairs, spiralStairs, polywall (polyline wall)

Terrain and paths

heightfield (rolling ground), ribbon (road or bridge deck)

Decorative

torus, helix, cross, star, revolution (solid of revolution)

With 24 shapes, the real risk is the AI picking the wrong one: a wrong pick does not fail, it builds something plausible but wrong. The tool description is therefore organized by what you want to build, with the most commonly confused pairs spelled out:

You want

Use

Not

Slanted pillars, beams, pipes

tube

cylinder (axis-aligned only)

Walls with sharp corners

polywall

curve (rounds the corners)

A roof with a ridge

roof

wedge (one slope only)

Stairs winding up a tower

spiralStairs

helix (no treads) or stairs (straight)

Towers or chimneys that taper

cone / pyramid with topRadius

stacked boxes

Domes, vases, cooling towers

revolution with a profile

a new shape per object

Uneven ground

heightfield

many boxes

A few parameters are easy to misread: the radius of prism and pyramid is the distance from the center to an edge, not to a corner; the ridgeAxis of roof is the direction the ridge runs, not the way the slopes face; heightfield corners are thicknesses in blocks; and arch draws the arch itself, with the opening (width 2 × radius − 1) in the middle.

Events (4)

mc_events_catalog, mc_events_subscribe, mc_events_unsubscribe, mc_events_poll.

Events go into a ring buffer that you read with a cursor. dropped > 0 means polling was too slow and some events were lost. Subscriptions are restored automatically after a reconnect. Known event names include PlayerMessage, BlockPlaced, BlockBroken, ItemAcquired, ItemCrafted, MobKilled, PlayerTravelled, AgentCommand and more (see mc_events_catalog). Events only fire when the thing actually happens: BlockPlaced is sent when a player places a block by hand, not for /setblock or /fill.

Resources (2)

minecraft-edu://connection (live connection state) and minecraft-edu://capabilities (what the bridge can and cannot do).

Connecting and staying connected

All AI sessions on one machine (desktop apps, CLIs, IDEs, parallel tasks) share a background hub that owns port 19131 and the single game connection. Each session's MCP server is a thin proxy to it. The first session that needs the hub starts it; every open session checks in once a minute, so port 19131 stays served while any session is open, and a hub that dies is restarted right away. The hub exits about 10 minutes after the last session and the game are both gone.

  • Switching sessions, models or AI tools does not drop the game connection.

  • /reload all, moving to another world, and going back to the main menu and into a world again do not drop it either during a normal load. At the main menu the connection stays open, but every command answers "Unknown command". The main menu and the world list have no chat bar, so /connect can only be typed inside a world.

  • You only need to type /connect again after restarting Minecraft, or after the hub side closes the connection (the chat shows "Connection closed").

  • You do not need to type /connect while connected. Doing so shows nothing at all, which looks like a hang; typing and commands keep working as usual.

  • mc_run_command can send reload all. For development packs, scripts, behavior pack JSON and custom blocks reload this way. Whether resource packs (textures, language files) also reload this way has differed between the two setups tested, cause unknown: a Windows machine reloaded changed and added language strings and changed item textures, a macOS machine did not reload a changed language file. So the agent works in this order: send reload all, wait until the game is back in the world (send nothing else meanwhile), then check (a titleraw with a translate component shows what the client resolves; look at a texture). Only if the new content is missing does it type /reload all in the game chat itself.

  • A script cannot connect the game: /connect run from a behavior pack script, whether as the player or as a dimension, is accepted but opened no connection in the setups tested, while /connect typed in the chat did. An in-game "connect" button therefore cannot replace typing it; the agent types it instead. While a load hangs, the bridge's 30-second keepalive probe keeps running, and after three unanswered probes in a row the bridge closes the connection.

  • If an old BlockHand without hub support already holds 19131, new sessions fall back to standalone mode on a random port; use the address mc_status reports. Standalone mode never takes 19131 itself.

Manual fallback, for a player working without an agent that can send keys: to reconnect quickly, press T in the game, press ↑ to recall the last command, then Enter.

Hands-off operation

BlockHand is built so that an agent can keep working without stopping to ask the player to click, type or confirm things it can do itself. Every pause costs the player's time, and a tool people have to babysit does not get used.

The agent does these itself, without asking first:

  • /reload all after changing a pack: send reload all with mc_run_command, wait until the game is back in the world, check that the new content arrived, and only if a resource pack change is missing, type /reload all in the game chat.

  • Leaving the world and entering it again.

  • Restarting Minecraft when a reload hangs on the loading screen (see Troubleshooting), or before a reload when the game process has been open for hours. The world was saved when the reload began.

  • Typing the connectCommand that mc_status reports whenever the game is not connected (check connected first; the port is not always 19131).

Only the player does:

  • Signing in. Passwords are never typed or read by the agent. If the game comes back already signed in, nothing is needed from the player at all.

Before acting, the agent checks:

  • That nobody is in the middle of playing. Look at the screen and compare mc_query_target position and rotation twice a few seconds apart; if either changed, the player is playing, so wait instead of interrupting. No change only means no movement was seen (a player in their inventory or crafting stands still too), so it is not permission by itself: reload when the person asked for it or is working with the agent right now, and ask when unsure.

  • That the right world is selected before pressing Play: never enter or test in a world that is not the one being worked on.

How it reaches the game window. BlockHand itself only talks to the game over the WebSocket. Typing in chat, picking a world and restarting the game go through the AI client's own desktop automation. Work in this order, and keep the person at the computer in control of their screen:

  1. Background. Game commands go through BlockHand. Keys for the chat bar and menus go through a tool that delivers them to the game window without bringing it forward.

  2. Foreground, only for the one step the background cannot do. Before taking the screen, tell the person which step it is, which background method was tried or checked, and what blocked it (if you cannot name all three, you do not need the foreground). Give focus back right after.

  3. The player, only for what an agent cannot do, such as signing in.

When unsure, move up this list, not down: losing the screen for a few seconds costs the person less than being interrupted to type a command themselves.

Practical notes from Windows:

  • This package ships a background key tool for Windows, blockhand-keys (npx -p @gjlmotea/blockhand-mcp blockhand-keys --help, or node scripts/game-keys.mjs --help in a source checkout). It posts keyboard messages to the game window with Win32 PostMessage (WM_KEYDOWN, WM_KEYUP, WM_CHAR), which never changes focus, and it sends no mouse input.

    • --probe finds the game window and sends nothing. With several games open, pass --pid.

    • --open-chat presses T; take a screenshot to confirm the chat bar opened, then --send "/reload all" types into it and presses Enter. --chat does both at once; use it only when the game shows no screen or menu.

    • --keys escape, --keys down,return, --keys shift+tab and so on drive the menus.

    • It prints focus_unchanged=True when the foreground window did not change. Its output says what was queued, not what the game did, so confirm on screen or through BlockHand. A second call while one is sending gets ERROR=busy; that lock covers one call, so between calls (open the chat bar, screenshot, send) another agent could still type. Let only one agent drive the game screen at a time.

    • It only targets the Education edition: the executable must report the product name Minecraft Education (regular Bedrock runs under the same process name).

  • Keyboard messages sent this way reach the chat bar, the pause menu and the world list while another app keeps the focus. Chat commands, menu navigation with the arrow keys and Enter, leaving the world and entering it again all work this way.

  • Leaving and re-entering a world with keys only: Escape opens the pause menu; Down twice selects the save-and-leave button, then Enter; the confirmation starts on Cancel, so Up, then Enter. On the play screen, Down moves the white frame to the worlds tile, then Enter. In the world list, Tab twice reaches the search box, and Down from there lands on the most recently played world. Enter opens that world's small menu; before pressing Play, check that the date and size shown under the menu belong to the intended world.

  • Mouse buttons posted the same way did not mine blocks in the setup tested, so mining or attacking cannot be done in the background with this method.

  • Git Bash rewrites an argument that starts with / into a file path, so a chat command passed through it arrives as C:/Program Files/Git/reload all; blockhand-keys detects this and refuses. Send chat commands from PowerShell, or set MSYS_NO_PATHCONV=1.

Practical notes from macOS:

  • Chat: press T, wait for the chat bar to appear (the first characters are lost if you type immediately), type, then Enter.

  • World list: mouse clicks on world tiles sent in the background can land on "New world" instead. Use the keyboard: type the world's name into the search box so only that world remains, press the right arrow to select it, Enter for its menu, Enter again for Play.

  • Restart: osascript -e 'tell application id "com.microsoft.minecraft-edu" to quit', then open -g -j -b com.microsoft.minecraft-edu starts it again in the background.

  • Right-click and attack clicks sent in the background are not received by the game, so entity interactions cannot be tested by clicking. Give the add-on a /scriptevent probe that calls the same handler the interaction event would (for example, run the before-interact gate and the interact handler for the nearest entity of a type) and another that prints the entity's state without opening it. Then the agent can test interactive mechanics end to end without the player.

  • Photos for checking a build: note the player's position, horizontal rotation and game mode, tell them with tellraw, move them with tp, take the screenshot, then put them back. Pitch cannot be read back, so say beforehand that the view will return level.

How building stays fast

Sending one setblock per block would mean tens of thousands of WebSocket round trips for a medium-sized sphere. BlockHand's pipeline is:

shape parameters → inside() test over the bounding box → set of block coordinates
  → merge runs along X → merge rectangles along Z → merge boxes along Y (3-stage greedy)
  → split by the 32,768-block /fill limit
  → send

The merge is deterministic, and tests pin that the merged batches cover exactly the original set of blocks, no more and no less. Hollow shapes all come from the same "inside test plus shell-neighbor test", so a new shape only needs an inside() function. tests/domain/fill-efficiency.test.ts sets an upper bound on fill commands per block for every shape.

For very large terrain work, compute the coordinates yourself and send many /fill commands with mc_run_commands (200 per call), or write a .mcfunction file and run it with /function. See agents/docs/large-builds.md for the limits involved.

Reading blocks

Minecraft Education has no command that simply returns the block at a position, so reading has built-in limits:

  • mc_test_block is a yes/no question: you have to guess a block ID.

  • mc_read_block does not need a guess. It asks whether the block is air, and when the answer is no, the game's error message names the actual block. The result is the localized display name ("Dirt"), not the block ID (dirt).

  • When the message cannot be parsed, mc_read_block returns an error, never a successful response with block: null. The consumer is an AI, and an AI that sees a successful null will confidently treat the spot as empty and may build over a student's work.

  • mc_verify_reading checks that the parsing still works, with at most two read-only commands. Run it after a game update, after changing the game language (supported: Traditional Chinese, Simplified Chinese, English), or whenever mc_read_block starts failing on blocks you can see. Mutation tests make sure the probe and the parser turn red when the parsing rules are broken.

Reading a whole region block by block would need a behavior pack and the Script API, which BlockHand deliberately avoids so that school computers need no extra installs.

Undo (off by default)

Automatic undo is off by default. On Minecraft Education 1.26.32 (macOS), the native region check that undo sends before the first small build (body.version=25) never got a reply; after that, every command on the connection timed out, including what the player typed in chat, and only restarting Minecraft recovered. This was reproduced three times. Turn it on with MINECRAFT_EDU_UNDO_ENABLED=1 or mc_undo_control with configure enabled=true only if you accept that risk. Design notes: agents/docs/undo/region-undo.md.

When enabled, undo keeps one operation of up to 4,096 blocks, snapshotted in game memory with structure save ... memory (nothing is written to disk). There is no redo. It covers the overworld, absolute integer coordinates and basic static building blocks; unsupported builds are rejected before anything is changed.

Configuration

Everything has a default; no .env file is needed.

Variable

Default

Meaning

MINECRAFT_EDU_WS_HOST

127.0.0.1

Listen address of the game WebSocket; loopback only by default (see Safety). The hub's control port always listens on 127.0.0.1

MINECRAFT_EDU_WS_PORT

19131

Port the game connects to. The default uses the shared hub; any other value (such as 0) runs an isolated standalone bridge

MINECRAFT_EDU_HUB

auto

0 disables the hub (one bridge per session); 1 forces the hub on a custom port

MINECRAFT_EDU_HUB_PORT

19132

Local control port the sessions use to reach the hub; also the lock that decides which process is the hub

MINECRAFT_EDU_HUB_DIR

~/.blockhand

Folder for the hub's state file hub.json (holds the hub's access token) and its log hub.log; see Safety

MINECRAFT_EDU_HUB_IDLE_MS

600000

The hub exits after this long with no session check-ins and no game connection

MINECRAFT_EDU_HUB_ATTACH_MS

8000

How long a session waits for a hub it has just started to answer (500–60,000 ms); if the hub does not answer in time, the session runs a standalone bridge on a random port

MINECRAFT_EDU_CONNECT_NOTICE

on

Show the green "✔ BlockHand connected" line in chat, in the game language (detected with one read-only time query daytime first); 0 turns it off

MINECRAFT_EDU_WS_PORT_FALLBACK

1

Pick a free port when the preferred one is taken; 0 fails instead

MINECRAFT_EDU_ENCRYPTION

on

When the game connects, try the WebSocket encryption handshake; if it is not negotiated, the connection continues in plaintext. 0 skips the handshake

MINECRAFT_EDU_COMMAND_TIMEOUT_MS

10000

How long to wait for the game to answer one command

MINECRAFT_EDU_KEEPALIVE_INTERVAL_MS

30000

Interval of the idle keepalive probe (time query daytime); three unanswered probes in a row close the connection

MINECRAFT_EDU_EVENT_BUFFER

500

Event ring buffer size

MINECRAFT_EDU_MAX_BUILD_BLOCKS

40000000

Maximum blocks per build; non-solid shapes are also capped at an 8,000,000-block scan volume

MINECRAFT_EDU_UNDO_ENABLED

0

1 turns on automatic single-step undo (see the warning above)

MINECRAFT_EDU_UNDO_MAX_BLOCKS

4096

Undo budget, 1–32,768 blocks, in at most 64 regions

MINECRAFT_EDU_STEP_DELAY_MS

100

Default delay between Agent program steps

MINECRAFT_EDU_DEBUG_FRAMES

unset

1 prints every raw frame from the game to stderr

Safety

  • By default the game WebSocket listens on 127.0.0.1 only. MINECRAFT_EDU_WS_HOST changes that address. The game port does not authenticate connections, and a new connection replaces the current one, so any other address lets every machine that can reach it connect in place of the game. The hub's control port (MINECRAFT_EDU_HUB_PORT, 19132 by default) always listens on 127.0.0.1. BlockHand itself makes no connections to the internet.

  • The shared hub keeps two files in ~/.blockhand (or MINECRAFT_EDU_HUB_DIR). When the hub is off (MINECRAFT_EDU_HUB=0, or a custom MINECRAFT_EDU_WS_PORT without MINECRAFT_EDU_HUB=1), neither file is written.

    • hub.json holds the hub's process ID, ports, build ID, start time and a random access token. The hub creates a new token each time it starts and removes the file when it shuts down. Every request to the control port must present the token as a bearer token; sessions read it from this file to reach the hub. The folder is created with mode 0700 and the file with mode 0600. Node.js cannot set owner/group/other permissions on Windows, so these modes only take effect on macOS and Linux.

    • hub.log is the hub's timestamped log. When a new hub starts and the log is larger than 1 MiB, it is renamed to hub.log.1. With MINECRAFT_EDU_DEBUG_FRAMES=1, every raw frame from the game is logged there too.

  • Apart from those files, the server writes nothing on the host. mc_structure with saveMode: "disk" makes the game write a structure into its world folder; the tool reply says where.

  • No accounts or credentials for any online service are involved; the hub token only guards the local control port.

  • mc_run_command accepts slash commands, which only act inside the local game world. Its gate is structural rather than a keyword blocklist:

    1. One line only. Newlines and NUL are rejected, so one request cannot become two commands.

    2. Commands that would cut or redirect the bridge are refused: wsserver, connect and closewebsocket, including when wrapped in execute.

    3. Everything else is tagged read-only, world-write or wide-effect, so the MCP host can ask for confirmation based on the tool annotations.

  • Block IDs, selectors and state strings that go into a command line are checked against allow-list patterns first, so spaces cannot smuggle in extra arguments.

  • On a shared hub, only one AI session can change the world at a time. A second session's write tool is refused immediately with a clear message; read-only tools are not affected.

Troubleshooting

The player says chat stopped responding. Do not restart the game first. Check, in order:

  1. What the game screen shows (in a world, main menu, or a loading screen).

  2. mc_status: commandState: "timed-out" means the bridge's own commands are not being answered either.

  3. Subscribe to PlayerMessage and ask the player to type a line. Player chat produces a type: "chat" event. Not receiving one is not proof by itself, because a subscription is not confirmed by the game; compare with the screen.

  4. The last lines of ~/.blockhand/hub.log (every line is timestamped, rejected handshakes are logged too).

When a built-in command such as time answers "Unknown command", the tools add a hint: the game is most likely not in a world.

A reload hangs on the loading screen. In a world with development packs, /reload all (from chat or from the bridge) is a full rejoin: the game saves the world, returns to the menu and loads the world again, and camera settings are cleared. A fresh game process does this in under 10 seconds; one that has been open for hours takes 30–45 seconds, and the progress bar pauses around 25% for a while. On macOS 1.26.x it has also stopped for good at 25% or 60% (four times, each after the same game process had been open for an hour or more and had reloaded several times).

  • While it hangs, the world has in fact loaded: a process sample shows the server and the client world ticking normally while the main thread draws the loading screen. It is waiting for a signal that does not come. Escape and closing the bridge connection do not help. Once, a bar stopped at 50% did enter the world by itself after about 3 minutes.

  • Treat a bar that has not moved for about 90 seconds as stuck. Take a sample first if you want evidence (sample <pid> 5 -file <file> on macOS); waiting one or two more minutes before restarting costs little.

  • Recovery: quit Minecraft and start it again; the agent does this itself without asking (see Hands-off operation). The world was saved when the reload began. On macOS, osascript -e 'tell application id "com.microsoft.minecraft-edu" to quit' ends it within a second (it may still print "User canceled"; check that the process is gone), and open -g -j -b com.microsoft.minecraft-edu starts it again without taking the screen. Then sign in, enter the world and type /connect again.

  • Do not send bridge commands while a reload is loading; they time out. Restarting a game that has been open for a long time before a reload makes a hang less likely.

A reload ends on "Couldn't connect to the world … Invalid tenant ID". The Education sign-in has expired (seen on macOS 1.26.x from about 3.5 hours after signing in). Pressing OK saves the world and returns to the menu, but starting any world from the menu shows the same error. Only a restart and a fresh sign-in fix it: quit and start Minecraft as above, the player signs in, then enter the world and type /connect again. In long sessions, do the important checks first, or restart before a reload when the game has been signed in for several hours.

mc_status shows a port other than 19131. Another process holds 19131. Find it with lsof -nP -iTCP:19131 -sTCP:LISTEN (macOS) and check whether the hub is running with ls ~/.blockhand.

Windows, Microsoft Store (UWP) version. Windows app isolation blocks loopback connections. Grant an exemption with CheckNetIsolation LoopbackExempt.

A large build gets cut off. MCP clients usually time out requests after about 60 seconds, while the tool keeps sending fills. Check fillBatches with mc_build_preview first and split large builds.

Known limitations

  • Text from the game stays in the game's language. Tool descriptions, server instructions and error messages are in English, but what the game itself returns (statusMessage, and the block names from mc_read_block) comes back in the game language.

  • The world must have Cheats on; otherwise the game rejects every command.

  • The Agent exists only in Education Edition.

  • Event names and the agent subcommands are not formally documented by Mojang; they come from public observation and may change with game updates. mc_events_subscribe accepts names outside the known list but marks them unverified.

  • @s does not always resolve for commands sent over WebSocket, so mc_query_target defaults to @p.

  • Commands sent over WebSocket are parsed with an older command version: execute as @e … at @s run … is a syntax error, use the legacy form execute @e[...] ~ ~ ~ <command>; in Education 1.26.x summon also rejects the rotation arguments, so summon first and turn the entity with tp. Add-on scripts calling runCommand are a different path; prefer the script API there instead of relying on either syntax.

  • Some responses arrive with a request ID that matches no request. When exactly one request is pending and no timeout has happened on the connection, the bridge may attribute the response by inference and logs it; after any timeout it only accepts exact matches. Modifying commands are never resent automatically.

  • Commands are sent one at a time with a queue of at most 64; anything beyond that is refused with command-queue-full, and queued commands that outlive their own timeout are dropped and reported as not sent.

  • After rebuilding, the running hub keeps the old version until it restarts; a hub restart drops the game connection.

Development

corepack pnpm run verify   # typecheck, tests, build, stdio smoke, shared-hub smoke
corepack pnpm run live     # end-to-end check against a running game (prints the /connect to type)

live walks through connect, read player position, chat, set time, summon the Agent, sense, walk an L-shaped path, preview and build a hollow glass sphere, verify the blocks, merge a blueprint, receive events, test the command gate and clean up. Add --keep to node scripts/live-check.mjs to keep the demo build.

src/
  domain/          pure logic, no MCP, ws or Node dependencies
    commands.ts            slash command builders and injection allow-lists
    command-policy.ts      structural gate for raw commands
    build/shapes.ts        the 24 shapes: inside() plus shell-neighbor test
    build/fill-planner.ts  3-stage greedy merge and batch splitting
    build/undo-plan.ts     undo regions, budgets and native region checks
  adapters/ws-minecraft-connection.ts   WebSocket server, request matching, events, reconnects
  application/     services: Agent programs, querytarget parsing, building, undo
  hub/             shared hub, session proxy, cross-session write lock
  server/          MCP server, schemas and the tools
  composition.ts   wiring; accepts a fake connection for tests
  index.ts         stdio entry point

The domain layer knows nothing about WebSockets, so the whole MCP tool pipeline is tested with in-memory fakes, without a running game.

License and trademarks

MIT.

NOT AN OFFICIAL MINECRAFT PRODUCT. NOT APPROVED BY OR ASSOCIATED WITH MOJANG OR MICROSOFT. Minecraft and Minecraft Education are trademarks of Mojang Studios and Microsoft. BlockHand is an independent open-source project.

Available Tools

42 tools
mc_agent_actAgent 攻擊/挖掘/耕地A
Destructive

對指定方向做動作:attack 攻擊生物、destroy 挖掉方塊並收進背包、till 把泥土翻成耕地。repeat 可連續執行。Agent 是 Education Edition 專屬的機器人,必須先用 mc_agent_create 召喚。方向是相對 Agent 自身面向,不是世界方位。

NameRequiredDescriptionDefault
actionYes
repeatNo
delayMsNo
directionNoforward

Output Schema

NameRequiredDescription
okYes
failedYes
issuedYes
outcomesYes
elapsedMsYes
succeededYes
firstFailureYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already signal destructive behavior, but the description adds useful operational details beyond them: destroying puts blocks into the backpack, repeat allows consecutive executions, and direction is relative to the agent's facing. It also notes the agent is Education Edition exclusive and requires creation first. This gives an agent a clear behavioral model without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded, with the main action semantics in the first sentence, then a note on repeat, a prerequisite, and a critical direction clarification. Each sentence earns its place, and there is no redundant repetition of the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 the annotations already cover destructive intent, the description provides all necessary context for correct invocation: the prerequisite of mc_agent_create, the precise meaning of each action, the direction reference frame, and repeat behavior. An agent can confidently select and call this tool without needing additional information.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 well by explaining the three action enum values (attack, destroy, till) and the meaning of direction (relative to agent facing). It also clarifies that repeat can be used for continuous execution. The delayMs parameter is not mentioned, but its meaning is self-evident from its name and schema defaults. Overall, it adds substantial meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs three specific actions (attack, destroy, till) on a specified direction, distinguishing it from siblings like mc_agent_move or mc_agent_place. It even explains the effect of each action (e.g., destroy collects blocks into backpack) and clarifies the direction is relative to the agent's facing, leaving 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: when the agent needs to attack, destroy, or till. It also includes a key prerequisite (must use mc_agent_create first) and explains direction semantics. However, it does not explicitly mention alternatives or when not to use it, but the action list itself implies the appropriate use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_agent_collectAgent 撿取掉落物A

撿取 Agent 附近的掉落物。item 留空代表全部撿。Agent 是 Education Edition 專屬的機器人,必須先用 mc_agent_create 召喚。方向是相對 Agent 自身面向,不是世界方位。

NameRequiredDescriptionDefault
itemNo方塊 ID,例如 stone 或 minecraft:oak_planks

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide no positive hints (all false), so the description carries the burden. It does add useful context: Agent is Education Edition-only, must be summoned first, and direction is relative to Agent facing. However, it does not disclose the mutating effect on the world or inventory, failure modes, or behavior when no items match.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loaded with purpose, followed by parameter behavior, prerequisite, and orientation caveat. Every sentence contributes, though the direction note is only marginally relevant to a collect action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a simple 1-optional-parameter tool with an output schema present, the description is largely complete: purpose, optional parameter semantics, and the Education Edition/Agent-creation prerequisite are covered. Minor omissions like collection range or no-drop behavior do not seriously hurt usability.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and already defines item as a block ID with a null default, so baseline is 3. The description adds meaning beyond the schema by explaining that an empty item value collects all items, which is significant for the single parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 撿取 Agent 附近的掉落物 (collect dropped items near the Agent). This clearly distinguishes it from sibling tools like mc_agent_inventory, mc_agent_sense, or mc_give, whose purposes are different.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage context: item left blank means collect all, and the Agent must first be created with mc_agent_create. It also notes Education Edition exclusivity. It does not explicitly name alternative tools or state when not to use it, so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_agent_create召喚 AgentA
Idempotent

在玩家旁邊生成 Agent。已存在時重複呼叫是安全的。Agent 是 Education Edition 專屬的機器人,必須先用 mc_agent_create 召喚。方向是相對 Agent 自身面向,不是世界方位。

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true, and the description reinforces this by saying repeated calls are safe. It additionally discloses useful behaviors not in the structured fields: the Agent spawns beside the player, is Education Edition-exclusive, and the direction semantics are relative to the Agent's own facing rather than world orientation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief, front-loads the core action, and packs idempotency, edition exclusivity, prerequisite usage, and directional behavior into three sentences. It is not perfectly structured because the sentence '必須先用 mc_agent_create 召喚' is mildly self-referential, and the direction note is cryptic given that the tool has no input parameters.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, idempotent, non-destructive creation tool with an output schema, the description covers everything needed: what is created, where it appears, that it is repeat-safe, that it is Education Edition-only, and that it is the required prerequisite for Agent operations. No essential call context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema documents that fully, so the description has no parameter semantics to add. The directional note appears to describe Agent behavior rather than any input, and there is no schema gap needing compensation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb and resource: '生成 Agent' next to the player, and it identifies the Agent as an Education Edition-specific robot. It does not explicitly contrast this tool with sibling alternatives such as mc_summon, so it stops just short of the top score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives strong usage context by saying the Agent must be summoned with mc_agent_create first, and that repeated calls are safe. It also notes the Education Edition-only restriction, but it does not explicitly name alternative tools for non-Agent entities or state when not to use this tool beyond that restriction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_agent_inventoryAgent 背包操作A

對 Agent 背包做一件事:count 查槽內數量、space 查剩餘空間、detail 查物品細節、drop 丟出指定數量、dropAll 清空整槽方向、transfer 在槽之間搬移。Agent 是 Education Edition 專屬的機器人,必須先用 mc_agent_create 召喚。方向是相對 Agent 自身面向,不是世界方位。

NameRequiredDescriptionDefault
slotNocount/space/detail/drop 需要
actionYes
quantityNodrop/transfer 需要
directionNodrop/dropAll 需要
destinationSlotNotransfer 需要

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are all false, so the description carries the burden. It reveals the direction relativity (important behavior) and lists actions, but it does not disclose consequences like whether dropping items removes them permanently or places them in the world, nor does it mention error handling or side effects. The term '清空整槽方向' is ambiguous about what happens to the items. Some transparency is provided, but significant gaps remain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (two sentences) and front-loads the action list. It avoids redundancy, though the first sentence is a long enumeration that could be structured more cleanly. Overall it is efficient and effective.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, the return format is known. The description includes the prerequisite, direction semantics, and action list, covering key aspects for a multi-action tool with 5 parameters. It lacks discussion of error cases, permissions, or detailed side effects, but given the output schema and clear prerequisite, it is reasonably complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 80%, which provides baseline, but the description adds value by mapping actions to parameters (e.g., 'count 查槽內數量') and clarifying that direction is relative to Agent's facing, not world orientation. This goes beyond the schema's enum listing. It also explains the necessity of mc_agent_create, aiding parameter interpretation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description specifies the tool operates on the Agent backpack with a clear list of actions (count, space, detail, drop, dropAll, transfer), each with a brief meaning. It also explicitly states a prerequisite (Agent must be summoned with mc_agent_create) and clarifies a key distinction from world coordinates (direction relative to Agent's facing). This is a specific verb+resource description that differentiates it from siblings like mc_agent_act or mc_agent_move.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly states the prerequisite of using mc_agent_create and defines the tool's scope as Agent backpack operations. However, it does not explicitly mention when not to use it or name alternative tools for similar tasks. It provides clear context for invocation but lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_agent_moveAgent 移動A

讓 Agent 往指定方向走 steps 格,每格一條指令。被方塊擋住時該步會失敗但不會中斷後續。Agent 是 Education Edition 專屬的機器人,必須先用 mc_agent_create 召喚。方向是相對 Agent 自身面向,不是世界方位。

NameRequiredDescriptionDefault
stepsNo
delayMsNo每步間隔,給遊戲時間完成移動
directionYes

Output Schema

NameRequiredDescription
okYes
failedYes
issuedYes
outcomesYes
elapsedMsYes
succeededYes
firstFailureYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

因 annotations 全為 false,描述承擔了行為透明度的責任。它揭露了被方塊擋住時該步會失敗但不會中斷後續,以及每格一條指令的特性,超越了 annotations 提供的資訊。

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

三句話簡潔扼要:先講動作,再講失敗行為,最後講前置條件與方向定義。每句都有價值,無冗詞。

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

涵蓋了核心資訊:動作內容、失敗處理、前置條件及方向相對性。雖然未提及回傳值,但輸出 schema 存在,因此足夠完整。

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema 描述覆蓋率僅 33% (只有 delayMs 有描述),描述補充了 steps 代表的格數與 direction 的相對面向語意,有效填補了未描述參數的缺口。delayMs 則由 schema 提供。

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

明確的動詞與資源 (讓 Agent 走 steps 格),指出是 Agent 專用移動工具,並提及需先召喚,與 mc_agent_teleport 等兄弟工具明顯區隔。

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

明確指出前置條件 (必須先用 mc_agent_create 召喚),並解釋方向是相對自身面向而非世界方位,提供實際使用情境。但未直接說明與其他移動方式 (如 teleport) 的比較。

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_agent_placeAgent 放置方塊A

從指定背包槽(1–27)取出方塊放到指定方向。槽位空的時候會失敗。Agent 是 Education Edition 專屬的機器人,必須先用 mc_agent_create 召喚。方向是相對 Agent 自身面向,不是世界方位。

NameRequiredDescriptionDefault
slotYes
repeatNo
delayMsNo
directionNoforward

Output Schema

NameRequiredDescription
okYes
failedYes
issuedYes
outcomesYes
elapsedMsYes
succeededYes
firstFailureYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnlyHint: false, destructiveHint: false) indicate this is a mutating but non-destructive operation. The description adds meaningful behavioral details beyond annotations: it discloses that the tool fails if the slot is empty, that the Agent must be created first, and that direction is relative to the Agent's facing. These are operational constraints an agent needs to know. It does not mention repeat or delay behavior, but the annotations do not contradict the description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a compact three-sentence structure that front-loads the core action, then covers failure conditions, prerequisites, and a direction nuance. Each sentence delivers discrete, non-redundant information, and no space is wasted. This 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.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists (so return values are documented) and annotations are present, the description covers the essential operational context: the prerequisite to create the Agent, the failure mode when the slot is empty, and the relative-direction semantics. It omits explicit mention of the repeat and delayMs behavior, but these are less critical for correct invocation. Overall, it is sufficiently complete for a moderately complex tool, with minor gaps around loop timing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% parameter descriptions, so the tool description must compensate. It adequately explains the 'slot' parameter (range 1-27, failure when empty) and the 'direction' parameter (relative to agent, six options). However, it provides no semantic clarity for 'repeat' and 'delayMs' parameters beyond what the schema's defaults and bounds convey. Since two of the four parameters are left unexplained, it only partially compensates for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('take a block from the specified inventory slot (1-27) and place it in the specified direction') with a specific verb, resource (agent's inventory slot), and destination (direction). It also distinguishes itself from related block-placement tools by specifying that it operates through the Agent robot, which is exclusive to Education Edition, and that it requires prior creation via mc_agent_create.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: it explicitly states the prerequisite that the Agent must be summoned with mc_agent_create, and it notes the critical behavioral distinction that direction is relative to the Agent's own facing, not the world orientation. However, it does not explicitly name or contrast with alternative block-placing tools like mc_set_block or mc_fill, leaving some ambiguity about when to prefer this tool over those.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_agent_program執行一段 Agent 程式A
Destructive

把一連串 Agent 動作當成一支程式依序執行,這是讓 Agent 真正「做事」的主力工具:邊走邊鋪路、挖一條隧道、耕一整片田都用它。每步結果都會個別回報,可設定失敗即停。

NameRequiredDescriptionDefault
stepsYes
delayMsNo每步間隔;null 使用預設 100 ms
stopOnErrorNo

Output Schema

NameRequiredDescription
okYes
failedYes
issuedYes
commandsYes
outcomesYes
elapsedMsYes
succeededYes
firstFailureYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, the description discloses sequential execution, per-step result reporting, and configurable stop-on-failure behavior. It does not detail the exact side effects or failure semantics, but adds meaningful behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with a clear front-loaded definition, followed by memorable use-case examples and the two most important behavioral switches. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the highly detailed union schema and existing output schema, the description covers the tool's core role, examples, sequencing, per-step output, and failure policy. It omits prerequisites such as agent existence and parameter details, but those are less critical for selecting and invoking the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description partially compensates for low schema coverage by clarifying that 'steps' are a chain of Agent actions and that stop-on-failure is configurable. It does not explain delayMs or the action object structures, leaving the rich item-level schema to carry most parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly defines the tool as executing a sequence of Agent actions as a program, with concrete examples such as paving while walking, digging a tunnel, and tilling a field. It distinguishes the batch/program nature from single-action siblings, though it does not explicitly name an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context for when to use it: any multi-step, task-oriented Agent behavior, and calls it the main tool for making the Agent actually do things. It gives representative use cases, but does not explicitly say when to prefer single-action sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_agent_senseAgent 感測周遭A
Read-onlyIdempotent

讀取 Agent 周圍狀態,不改變世界:inspect 看方塊種類、inspectData 看方塊資料值、detect 偵測該方向是否有實體方塊、detectRedstone 偵測紅石訊號。這是 Agent 的「眼睛」,行動前先看。

NameRequiredDescriptionDefault
modeNoinspect
directionNoforward

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reinforces the non-destructive nature ('不改變世界') and adds specifics beyond the annotations: inspect returns block type, inspectData returns data values, detect checks for solid blocks, and detectRedstone checks redstone signals. These details align perfectly with readOnlyHint/idempotentHint and provide actionable behavioral expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with no fluff. It front-loads the core purpose and safety property, then efficiently enumerates the modes, ending with a memorable usage metaphor. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the availability of an output schema and comprehensive annotations, the description covers all necessary context: what each mode does, that it is non-destructive, and when to use it. For a sensing tool with two enum parameters and no required fields, nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description takes on full responsibility for explaining the mode parameter. It explicitly defines each enum value, which is the critical parameter. The direction parameter values (forward/back/left/right/up/down) are self-explanatory standard directions, so no additional description is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool reads the Agent's surroundings and does NOT change the world, listing four specific sensing modes (inspect, inspectData, detect, detectRedstone) with distinct purposes. This differentiates it from action-oriented siblings like mc_agent_act or mc_agent_move, making the tool's role unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase '這是 Agent 的「眼睛」,行動前先看' provides clear context: use this tool as a pre-action sensing step. While it doesn't explicitly compare against alternative read tools like mc_read_block or mc_query_target, it establishes a clear usage heuristic and when to invoke it (before acting).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_agent_teleportAgent 傳送到玩家身邊A
Idempotent

把 Agent 叫到玩家旁邊。Agent 走丟、卡住或掉進洞裡時用這個回收。Agent 是 Education Edition 專屬的機器人,必須先用 mc_agent_create 召喚。方向是相對 Agent 自身面向,不是世界方位。

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds behavioral context beyond the annotations, noting the Agent is Education Edition exclusive, requires prior creation with mc_agent_create, and that direction is relative to the Agent's facing rather than world coordinates. The annotations (idempotentHint=true, destructiveHint=false) already cover the safety profile, so the description adds value without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences deliver the action, use cases, prerequisite, and a directional caveat without redundancy. Each sentence earns its place, and the main action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, an output schema present, and the description covering purpose, usage conditions, prerequisite, and a subtle behavioral detail, an agent has everything needed to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, so the description does not need to explain parameter formats; the baseline of 4 applies since there is nothing to clarify.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 ('把 Agent 叫到玩家旁邊' – call the Agent to the player's side) and reinforces the purpose with the recovery use case ('Agent 走丟、卡住或掉進洞裡時用這個回收'). This clearly distinguishes it from sibling tools like mc_agent_move (targeted movement) and mc_teleport (general entity teleportation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit conditions for use ('走丟、卡住或掉進洞裡時') and a prerequisite ('必須先用 mc_agent_create 召喚'), giving an agent clear context on when to invoke it. It does not explicitly name alternatives, but the use-case restrictions and prerequisite are sufficient for routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_agent_turnAgent 轉向A

讓 Agent 原地左轉或右轉,每次 90 度。times=2 等於轉身。Agent 是 Education Edition 專屬的機器人,必須先用 mc_agent_create 召喚。方向是相對 Agent 自身面向,不是世界方位。

NameRequiredDescriptionDefault
timesNo
directionYes

Output Schema

NameRequiredDescription
okYes
failedYes
issuedYes
outcomesYes
elapsedMsYes
succeededYes
firstFailureYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are all false and provide no real safety profile, so the description carries the behavioral disclosure burden. It discloses the core effect (rotate in place 90 degrees), the times=2 about-face behavior, and the relative-to-self orientation semantics. It omits failure modes or world interaction, but for a simple turn action this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each earning its place: core action with degrees, times semantics, prerequisite, and coordinate-frame clarification. There is no filler, repetition of schema fields, or vague preamble.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With only two parameters, an output schema present, and a simple behavior, the description covers the action, prerequisite, and orientation nuance. Nothing needed for a correct call is missing; the schema covers bounds and enums.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description compensates meaningfully: direction is clarified as relative to the Agent's own facing rather than world coordinates, and times is given a concrete behavioral meaning with the times=2 turn-around example. The schema already supplies min/max/default, so the description adds the missing semantic layer.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: '讓 Agent 原地左轉或右轉' (make the Agent turn left or right in place), specifies 90 degrees per turn, and thereby distinguishes itself from movement, placement, and collection siblings. The prerequisite and relative-direction note further sharpen 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states a condition of use: the Agent must first be summoned with mc_agent_create, and it notes the Agent is Education Edition exclusive. It does not explicitly contrast with mc_agent_move or other orientation-affecting tools, but the in-place rotation semantics make the appropriate use case evident.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_analyze_symmetry分析建築的鏡像對稱程度A
DestructiveIdempotent

檢查一塊區域是否左右(或前後)對稱,並在不對稱時指出哪幾塊不對稱。批改學生作品用這個:分數是對稱格子的比例,不是憑感覺。原理:testforblocks 只會平移比對不會鏡像,所以先用 structure save/load 的 mirror 參數做出鏡像副本,再跟原區比對。⚠️ 這會暫時寫入 scratch 指定的暫存區:流程一定先備份該區內容,比對完立刻還原;備份失敗就中止且不動世界。scratch 不可與分析區重疊,否則鏡像副本會蓋掉原始建築。區域受 structure 指令上限限制(64×384×64)。

NameRequiredDescriptionDefault
toYes分析區的對角
fromYes分析區的一角
mirrorNo鏡射軸;x 檢查左右對稱、z 檢查前後對稱、xz 兩軸都要x
scratchYes暫存區最小角;會被覆蓋後還原,不可與分析區重疊
cellsPerAxisNo整體不對稱時的細分粒度;每軸 n 段共 n³ 格,每格一條指令

Output Schema

NameRequiredDescription
scoreYes0–100,對稱格子的比例
mirrorYes
symmetricYes
totalCellsYes
matchedCellsYes
commandsIssuedYes
asymmetricCellsYes
scratchRestoredYesfalse 代表暫存區沒還原成功,世界被留下改動

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes well beyond the annotations by disclosing that the tool temporarily writes to the scratch region, backs it up before writing, restores it immediately after comparison, and aborts without modifying the world if backup fails. It also warns that overlapping scratch with the analysis region can destroy the original build and explains the underlying mirror-copy algorithm. This is excellent behavioral disclosure for a tool marked destructiveHint=true.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but efficient: it states purpose, method, safety behavior, and constraints in a few sentences. It is front-loaded with the primary function and then adds warnings. Slightly longer than strictly necessary, but every sentence carries useful information about behavior or limitations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose, scoring semantics, algorithm, side effects, failure mode, safety restoration, overlap prohibition, and size limits. It also explains how asymmetric results are reported at a per-cell granularity. Combined with the output schema and annotations, nothing essential is missing for an agent to invoke this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

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 five parameters. The description adds practical semantic value by explaining the roles of the symmetry axes (x/z/xz), the meaning of cellsPerAxis as per-axis subdivisions, and the critical constraint that scratch cannot overlap the analysis region. This extra context helps the agent choose parameter values correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('檢查'), resource (a region/building), and the core function: detecting whether a region is mirror-symmetric and identifying which sub-blocks are not. It also distinguishes the output as a quantitative score (proportion of symmetric cells) rather than a heuristic judgment, clearly differentiating it from a generic region comparison like mc_compare_regions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit use case: grading student builds with an objective symmetry score. It also provides important operational conditions, such as scratch must not overlap the analysis region and region size limits. It does not explicitly name alternative tools or state when not to use it, but the use-case guidance is concrete enough for an agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_await_connection等待 Minecraft 連入A
Read-only

阻塞等待遊戲連上橋接,最多等 timeoutSeconds 秒。逾時不算錯誤,只是回報 connected=false。適合在請使用者輸入 /connect 之後呼叫。

NameRequiredDescriptionDefault
timeoutSecondsNo

Output Schema

NameRequiredDescription
hostYes
portYes
connectedYes
encryptedYes
listeningYes
connectedAtYes
bufferedEventsYes
commandsIssuedYes
connectCommandYes
connectionCountYes
savedStructuresYes本次連線存過的結構;遊戲沒有列出結構的指令,所以只能由橋接自己記
subscribedEventsYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Even though readOnlyHint=true already signals safety, the description adds genuinely useful behavior: the call blocks, it has a timeout, a timeout is not an error, and it reports connected=false. This is exactly the kind of behavioral context an agent needs and is not present in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences deliver the core behavior, the timeout semantics, and the intended invocation context with no filler. The most important fact—blocking wait with a maximum duration—is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 and read-only annotations, the description leaves no critical gap: it covers what the tool waits for, how long, how timeout is handled, and when to call it. The existing output schema supplies the return-structure detail that the description need not repeat.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description names timeoutSeconds and explains that it is the maximum wait in seconds. It also clarifies the semantic consequence of reaching that timeout (connected=false), compensating for the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise verb and resource: it blocks waiting for the game to connect to the bridge, with a timeout limit. This clearly distinguishes it from the sibling tools, none of which perform this bridge-connection wait. The added usage hint ('適合在請使用者輸入 /connect 之後呼叫') further anchors its purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase '適合在請使用者輸入 /connect 之後呼叫' gives an explicit, actionable trigger for when to use this tool. It does not name alternatives or state when not to use it, so it stops short of a full when/when-not guide.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_blueprint_preview預覽藍圖建造A
Read-onlyIdempotent

只計算不動工:把一份逐格藍圖依方塊種類分組,回報總方塊數與合併後的 fill 批次數。

NameRequiredDescriptionDefault
entriesYes

Output Schema

NameRequiredDescription
blockYes
shapeYes
boundsYes
blockCountYes
blockStatesYes
fillBatchesYes
savedCommandsYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, and the description reinforces this by saying it only calculates and does not start work. It adds useful behavioral detail about grouping blocks by type and reporting merged fill batch counts. No contradiction with the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire description is one sentence with no filler. It front-loads the critical non-action guarantee ('只計算不動工') before stating the computation and outputs, making it easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Together with the read-only annotations, the rich input schema, and the output schema, the description provides enough context for correct invocation. A minor gap is that it does not specify how optional blockStates affect grouping or merged fill batch calculation, which could matter for blueprints that use block states.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage for the top-level 'entries' parameter is 0%, but the description identifies it as a per-cell blueprint, adding domain meaning. The item-level schema already documents position, block, and blockStates, though the description does not clarify whether blockStates participate in grouping, so compensation for the missing top-level description is only partial.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a precise computation ('only calculates, does not start work') on a specific resource (a cell-by-cell blueprint) and names the exact outputs: total block count and merged fill batch count. This clearly distinguishes it from actual building tools like mc_fill or mc_build_blueprint.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase '只計算不動工' gives clear context that this is a planning-only tool and explicitly excludes performing construction. It does not name alternative sibling tools, but the boundary between calculating and building is clear enough for an agent to decide 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.

mc_build_blueprint建造逐格藍圖A
DestructiveIdempotent

蓋出任意形狀:直接給一份「座標 → 方塊」清單,相同方塊會自動合併成最少的 fill。幾何形狀請優先用 mc_build_shape;這個工具是給像素畫、文字、不規則造型或從外部資料轉來的模型用的。

NameRequiredDescriptionDefault
entriesYes

Output Schema

NameRequiredDescription
okYes
planYes
failedYes
issuedYes
outcomesYes
elapsedMsYes
succeededYes
firstFailureYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, idempotentHint=true, readOnlyHint=false. The description adds a non-obvious behavioral trait: identical blocks are automatically merged into the fewest possible fill commands, which affects execution cost and expectations. It does not contradict annotations. This extra context is valuable beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the primary action and input format, and the sibling routing is placed second. No redundant phrasing; every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Description plus schema and annotations cover what the tool does, when to use it, how input is structured, and the destructive/idempotent behavior. An output schema exists, so return values are accounted for. The only small gap is whether coordinates are absolute or relative, but Minecraft tool conventions and the plain integer schema make absolute coordinates the likely default, so this is not a serious omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates by framing the sole parameter (entries) as a 'coordinate → block' list, which maps directly to the array of position/block pairs. It does not spell out the JSON structure or the optional blockStates, but the schema already provides those details, and the semantic framing is enough for an agent to form the correct input shape.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States '蓋出任意形狀' (build any shape) with a specific verb and resource, and immediately clarifies the input mechanism (coordinate→block list). It explicitly contrasts with sibling mc_build_shape, which is for geometric shapes, and lists its intended use cases (pixel art, text, irregular shapes, external data), so an agent can distinguish it from alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly names the alternative tool mc_build_shape and gives a routing rule: prefer it for geometric shapes, use this for pixel art/text/irregular/external data. This is a clear when-to-use/alternative statement with no ambiguity.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_build_preview預覽幾何建造A
Read-onlyIdempotent

只計算不動工:回報這個形狀會用掉幾個方塊、邊界盒在哪、會拆成幾條 fill 指令。座標一律是絕對世界座標;不知道玩家在哪就先用 mc_query_target。建造會直接改變世界,動手前建議先用對應的 preview 工具看方塊數與邊界盒。

NameRequiredDescriptionDefault
blockYes方塊 ID,例如 stone 或 minecraft:oak_planks
shapeYes
blockStatesNo選用的方塊狀態,例如 ["stone_type":"granite"]

Output Schema

NameRequiredDescription
blockYes
shapeYes
boundsYes
blockCountYes
blockStatesYes
fillBatchesYes
savedCommandsYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnlyHint=true and idempotentHint=true. The description adds specifics: it reports block count, bounding box, and fill command count, and emphasizes absolute world coordinates. This goes beyond the annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero waste. The purpose is front-loaded, the coordinate caveat and tool suggestion are concise, and no irrelevant detail is included.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a preview tool with an output schema, the description adequately covers use, output highlights, and a coordinate prerequisite. It doesn't mention volume limits or edge cases, but those are likely in the output schema. It is sufficiently complete 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67% and the schema already documents shape variants and block states. The description adds no parameter-specific guidance (e.g., how to choose shape kind), so it stays at baseline without compensating for the uncovered parts of the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with '只計算不動工' (only calculate, don't build), a specific verb+resource that immediately distinguishes it from building tools. It then lists concrete outputs: block count, bounding box, and number of fill commands. This clearly differentiates it from siblings like mc_build_shape and mc_blueprint_preview.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It instructs to use mc_query_target when the player's location is unknown, and recommends using this preview tool before any build that changes the world. However, it doesn't explicitly name the building sibling (mc_build_shape) or state when NOT to use it, leaving some inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_build_shape建造幾何形狀A
DestructiveIdempotent

直接在世界蓋出形狀:line 線、box 方體、sphere 球、ellipsoid 橢球、cylinder 圓柱、cone 圓錐、pyramid 金字塔、disk 圓盤/圓環、torus 甜甜圈、helix 螺旋。多數形狀有 hollow 可只蓋外殼。方塊座標會自動合併成最少的 fill 指令,所以蓋一顆半徑 20 的球只要幾百條指令而不是三萬條。座標一律是絕對世界座標;不知道玩家在哪就先用 mc_query_target。建造會直接改變世界,動手前建議先用對應的 preview 工具看方塊數與邊界盒。

NameRequiredDescriptionDefault
blockYes方塊 ID,例如 stone 或 minecraft:oak_planks
shapeYes
blockStatesNo選用的方塊狀態,例如 ["stone_type":"granite"]

Output Schema

NameRequiredDescription
okYes
planYes
failedYes
issuedYes
outcomesYes
elapsedMsYes
succeededYes
firstFailureYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true, and the description reinforces this ('建造會直接改變世界'). It adds valuable behavioral traits beyond annotations: block coordinates are automatically merged into minimal fill commands (efficiency behavior), and coordinates are always absolute world coordinates. It also notes that most shapes support hollow. No contradictions found.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and efficient: it starts with the core purpose, lists all shape kinds, mentions the hollow feature, explains the efficiency optimization, notes the coordinate system, and closes with usage guidance. Every sentence earns its place; there is no redundancy or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (12 shape variants) and the presence of an output schema, the description covers the key points: shape types, hollow capability, coordinate behavior, efficiency, and safety advice. It doesn't enumerate every parameter because the schema does that, but it provides the behavioral context an agent needs to invoke it correctly. The only minor gap is not referencing the blockStates parameter, but that is adequately documented in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema itself provides rich description coverage (67%) with detailed descriptions for many shape-specific parameters (e.g., hollow, points, profile). The description adds the crucial note that coordinates are absolute world coordinates and that most shapes have a hollow option, which is not explicitly stated in the schema. The blockStates parameter is not mentioned in the description, but the schema covers it adequately.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('蓋出形狀' - build shapes) and enumerates all shape kinds (line, box, sphere, etc.), making it easy to distinguish from sibling tools like mc_fill or mc_set_block. It also mentions the hollow option and the coordinate merging optimization, which further clarifies its unique role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage guidance: it advises using mc_query_target if unsure of player location, and recommends using the corresponding preview tool before building to check block count and bounding box. It also warns that building directly modifies the world, implying when to exercise caution. No exclusions are needed since the shape-building purpose is clear, but the alternative tools are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_clone複製一塊區域A
Destructive

把 begin–end 的區域複製到 destination。cloneMode="move" 會把原地清空。適合把手工蓋好的樣板量產。

NameRequiredDescriptionDefault
endYes
beginYes
maskModeNo
cloneModeNo
destinationYes

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false and destructiveHint=true, so the mutation profile is known. The description adds value by disclosing the specific destructive trait 'cloneMode="move" 會把原地清空' (move mode clears the source), which is exactly the what-gets-destroyed context annotations cannot express. It does not mention that normal cloning also overwrites destination blocks, but the destructive hint covers the general risk.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler: the operation, the key behavioral caveat, and the intended use case. The core purpose is front-loaded and every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The output schema and annotations cover return values and the safety profile, and the description covers the core flow plus the move-mode caveat. The main gap is that maskMode (a filter that meaningfully changes what gets copied) and the remaining cloneMode semantics are absent, so an agent invoking anything beyond defaults is left guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description must compensate, and it partially does: it clarifies that begin–end defines the source region, destination is the copy target, and explains one cloneMode value ('move' clears the source). However, maskMode is never mentioned and the 'normal' and 'force' cloneMode values are left unexplained, leaving the compensation incomplete for a 5-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: '把 begin–end 的區域複製到 destination' (copy the region from begin–end to destination), naming all three core parameters and their roles. The operation is unambiguous and clearly distinct from sibling tools such as mc_fill, mc_set_block, and mc_compare_regions, none of which copy a region.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final sentence '適合把手工蓋好的樣板量產' provides a concrete usage context: mass-producing hand-built templates. However, it names no alternative tools (e.g., mc_structure or mc_build_blueprint) and offers no when-not-to-use guidance, so it reaches clear context but stops short of explicit exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_compare_regions比對兩個等大區域是否一致A
Read-onlyIdempotent

用一條指令比對整片區域,適合檢查學生蓋的東西跟參考範例是否相同。逐格比對在幾百格以上就會撞到 MCP host 逾時,這個不會。masked=true 會忽略來源區域裡的空氣,只檢查「該有的東西在不在」,不管周圍多了什麼;masked=false 則要求完全一致。兩個區域大小必須相同,destination 是目標區域的最小角。

NameRequiredDescriptionDefault
endYes來源區域的對角
beginYes來源區域的一角
maskedNotrue 時忽略來源的空氣
destinationYes目標區域的最小角

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
identicalYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral detail beyond the annotations: it explains the timeout avoidance for large regions, the nested semantics of masked mode (ignoring air in source), and the size-equality requirement. This contextualizes the read-only and idempotent nature without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: it front-loads the core purpose, then provides usage guidance, behavior specifics, and a key constraint. Every sentence contributes meaningful information without redundancy or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers all essential operational aspects: what the tool does, when to use it, how masked mode alters behavior, the size requirement, and the meaning of destination. Since an output schema exists, return values do not need to be detailed here. The definition is complete for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3, but the description enriches understanding of key parameters: it clarifies that masked=false requires exact equality, masked=true only checks for presence, and that destination is the minimum corner. It also adds the constraint that both regions must be the same size, which is not explicit in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: comparing two equal-sized regions for consistency. It uses a specific verb and resource, and explicitly contrasts with per-block comparison, making its purpose unambiguous and distinct from siblings like mc_test_block or mc_analyze_symmetry.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool, such as checking student builds against a reference, and warns that per-block comparison times out for large regions. It implies the alternative is per-block checking but does not explicitly name a sibling tool, slightly reducing the guidance's precision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_effect施加或清除狀態效果C

action="apply" 施加藥水效果,"clear" 清除全部效果。

NameRequiredDescriptionDefault
actionNoapply
effectNoapply 需要,例如 speed 或 night_vision
targetNo目標選擇器(@a/@p/@s/@e/@r,可帶 [])或玩家名稱@s
secondsNo
amplifierNo
hideParticlesNo

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With all annotations false (no read-only, destructive, etc.), the description must carry the full behavioral burden. It mentions that 'clear' removes all effects, which is useful, but it does not disclose side effects like overwriting existing effects, persistence, or whether it modifies the world state. The coverage is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence that quickly communicates the core behavior. It is concise without being verbose, but it is too sparse to be considered well-structured for a tool of this complexity. It omits necessary detail, so the brevity is a weakness rather than a strength.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 6-parameter tool with only 33% schema coverage, no annotations, and no provided output schema, this description is severely inadequate. It does not explain valid effect names, how duration and amplifier work, what 'clear' does exactly, or any constraints. An agent would have insufficient information to call the tool correctly, especially without schema documentation for most parameters.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema documentation covers only 'effect' and 'target' (33%). The description adds meaning for the 'action' parameter by explaining the semantics of 'apply' and 'clear', but it does not elaborate on 'seconds', 'amplifier', or 'hideParticles'. Given the low schema coverage, the description does not sufficiently compensate for the undocumented parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool applies or clears potion effects based on the 'action' parameter, identifying the exact operation and resource. It is specific enough to distinguish from generic siblings like mc_give or mc_summon, though it does not explicitly name an alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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 are no exclusions, prerequisites, or context about when applying effects is preferable to other commands. The description only states what the tool does, not when to choose it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_events_catalog列出可訂閱的事件名稱A
Read-onlyIdempotent

回傳已知可用的事件名稱。Mojang 沒有正式文件化這份清單,所以訂閱清單外的名稱是允許的,只會被標記為未驗證。無副作用。

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
eventNamesYes

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, non-destructive), the description adds meaningful behavioral detail: Mojang has not officially documented the list, out-of-list names are permitted, and those names are marked as unverified. It also states there are no side effects, which reinforces the safe-read nature of the tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three short sentences with no filler: it states the purpose, discloses the unverified/official-documentation caveat, and confirms no side effects. Every sentence adds information an agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only catalog tool with an existing output schema, the description is complete. It explains what is returned, the trustworthiness boundary of the list, and that calling it has no side effects. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the schema already covers this completely with an empty properties object. There are no parameter semantics for the description to add, so a baseline score of 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('回傳' / returns) and identifies the resource: known available event names for subscriptions. The title further clarifies it lists subscribable events, which distinguishes it clearly from siblings like mc_events_subscribe, mc_events_unsubscribe, and mc_events_poll.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The context is clear: an agent should call this tool to discover known event names before subscribing. It also cautions that the list is not officially documented and not exhaustive, implying it should not be treated as an authoritative closed set. It does not explicitly name alternatives, but the tool's catalog role is evident from its position among subscription-related siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_events_poll讀取已收到的事件A
Read-only

取出游標之後的事件。第一次用 afterCursor=0,之後帶回上次回傳的 nextCursor 就能連續讀。dropped 大於 0 代表緩衝環繞、有事件永遠讀不到了,該提高輪詢頻率。無副作用。

NameRequiredDescriptionDefault
limitNo
eventNameNo只取這一種事件
afterCursorNo

Output Schema

NameRequiredDescription
eventsYes
droppedYes
nextCursorYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint annotation, the description explains meaningful behavior: continuous reading via nextCursor, buffer wrap-around detection via dropped, and the implication that events may be permanently lost if dropped > 0. It also explicitly states '無副作用' (no side effects), which aligns with and reinforces the readOnlyHint annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three concise sentences with no filler. It front-loads the core action, then provides the essential cursor usage, and ends with the important dropped warning. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a polling tool with an output schema, the description provides enough context to use it correctly: initial cursor, continuation pattern, and failure signal. The remaining parameter details are present in the input schema, and the output schema covers return values. No critical operational context is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is only 33%, so the description must compensate. It does explain afterCursor semantics well, including the first-call value and nextCursor continuation. However, it does not describe the limit parameter, and eventName is already covered by the schema. This is adequate but leaves one parameter's semantics to the schema's default and range constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: '取出游標之後的事件' (retrieve events after a cursor). It uses a specific verb and resource and is distinct from sibling tools like mc_events_catalog, mc_events_subscribe, and mc_events_unsubscribe by focusing on polling/reading already-received events.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives concrete usage instructions: use afterCursor=0 for the first call and pass the returned nextCursor thereafter. It also explains how to interpret the dropped indicator. It does not explicitly mention when to prefer this over sibling tools, but the cursor-based polling pattern is clearly conveyed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_events_subscribe訂閱遊戲事件A
Idempotent

開始接收某類遊戲事件(例如 PlayerMessage 聊天、BlockPlaced 放置方塊、PlayerTravelled 移動)。事件會存進環形緩衝,之後用 mc_events_poll 取出。這是讓 AI「感知」玩家在做什麼的方式。重新連線後會自動重新訂閱。

NameRequiredDescriptionDefault
eventNameYes

Output Schema

NameRequiredDescription
verifiedYes
eventNameYes
subscribedEventsYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds meaningful behavior beyond the annotations: events are stored in a ring buffer, consumed via mc_events_poll, and subscriptions are automatically re-established after reconnection. This complements the idempotentHint annotation without contradicting it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences cover the purpose, behavior, follow-up operation, and reconnection semantics without redundancy. The most important information is front-loaded with clear examples.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter subscription tool with an output schema and annotations, the description covers the key aspects: what to pass, what happens to events, how they are retrieved, and reconnection behavior. It does not mention the event catalog, but sibling naming makes that discoverable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides no description for eventName and schema description coverage is 0%. The description partially compensates by giving examples of valid event types, but it does not specify where to find the complete list of event names or whether the value must match an exact catalog entry.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action (開始接收 / subscribe) targeting a specific resource (某類遊戲事件), with concrete examples like PlayerMessage, BlockPlaced, and PlayerTravelled. It clearly distinguishes this tool from the sibling poll tool by explaining the ring-buffer flow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: subscribe first, then retrieve events with mc_events_poll. It explains the purpose as letting the AI perceive player actions. It does not explicitly mention alternatives like mc_events_catalog or mc_events_unsubscribe, but the flow with mc_events_poll is explicit enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_events_unsubscribe取消訂閱遊戲事件A
Idempotent

停止接收某類事件。已經收進緩衝的事件不會被清除。

NameRequiredDescriptionDefault
eventNameYes

Output Schema

NameRequiredDescription
eventNameYes
subscribedEventsYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare idempotentHint=true and destructiveHint=false; the description adds meaningful context that already-buffered events are not cleared, which goes beyond the structured hints. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the primary behavior and a compact clarification about buffered events. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 and idempotency annotation, the description covers the essential behavior and buffer caveat. The main gap is not referencing the event catalog or subscribe counterpart for valid eventName values.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the sole parameter eventName is only documented as a string. The description says '某類事件' (a certain type) but does not explain valid event names or point to mc_events_catalog for the list, leaving the agent to guess.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('stop receiving a certain type of event') with a clear resource (game events), and the verb 'unsubscribe' distinguishes it from poll/subscribe/catalog siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The use case is implied by '停止接收' (stop receiving), but the description does not explicitly say 'use after mc_events_subscribe' or 'do not use to clear the buffer.' It lacks explicit when-to-use or alternative routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_feedback播放音效或粒子B

播一個音效或在座標生成粒子效果,用來給玩家即時的感官回饋。

NameRequiredDescriptionDefault
idYes音效或粒子 ID,例如 random.levelup 或 minecraft:heart_particle
kindYes
targetNokind="sound" 時的聽眾@a
positionNo

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations are all false and provide no helpful hints, so the description carries the behavioral disclosure burden. It only states that sounds are played and particles are generated; it does not disclose scope of listeners, whether effects are transient, stacking behavior, or any side effects. It does not contradict the annotations, but adds little beyond the title.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short sentence that front-loads the core action and purpose. There is no filler or unnecessary repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has four parameters, an output schema, and a large sibling set, yet the description is minimal. It is enough to understand what the tool does, but it lacks guidance on selecting it over similar tools and does not compensate for the sparse behavioral and parameter context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is about 50%, with id and target described but kind and position lacking top-level description. The description adds a useful semantic hint by associating coordinates with particle generation and sound with being played, but it does not explain the id format, the meaning of kind, or how target works.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the resource and action: play a sound effect or generate a particle effect at coordinates, with the stated purpose of immediate sensory feedback. It does not explicitly contrast with sibling tools, but the sound/particle focus makes the tool's role reasonably distinct.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase '用來給玩家即時的感官回饋' gives an implied use case: use this when the agent wants to provide quick in-world feedback. However, it does not say when not to use it, nor does it point to alternatives such as mc_message, mc_effect, or mc_run_command that could serve similar purposes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_fill填滿一個長方體A
DestructiveIdempotent

用同一種方塊填滿 from 到 to 的長方體。Bedrock 單次上限 32768 格;超過請改用 mc_build_shape,它會自動拆批。mode=hollow 只留外殼、outline 只留邊框。

NameRequiredDescriptionDefault
toYes
fromYes
modeNo
blockYes方塊 ID,例如 stone 或 minecraft:oak_planks
blockStatesNo選用的方塊狀態,例如 ["stone_type":"granite"]
replaceBlockNo只在 mode="replace" 時有效
replaceStatesNo選用的方塊狀態,例如 ["stone_type":"granite"]

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already include `destructiveHint=true` and `idempotentHint=true`. The description goes beyond those by specifying the Bedrock per-operation limit of 32768 blocks and the meanings of `mode=hollow` (only outer shell) and `mode=outline` (only border), which are not in the annotations. This adds valuable context, though it does not elaborate on other mode effects like `replace` or `destroy`.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose and immediately followed by the key usage constraint and mode clarifications. There is no filler or redundant repetition of schema or annotation content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that an output schema exists and annotations cover destructive and idempotent behavior, the description adds the most critical operational detail: the block count limit and the alternative tool for exceeding it, plus the hollow/outline mode semantics. It does not explain the full set of mode values (e.g., replace/destroy/keep), but those are standard Minecraft commands and partly described in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is around 57%. The description compensates for the `mode` parameter by explaining the hollow and outline options, and it clarifies that the `block` parameter applies the same block across the whole volume. However, it does not add detail for coordinate modes or the replace-related parameters, leaving some meaning to the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (fill) and resource (a cuboid from `from` to `to`) and clarifies that it uses a single block type. It also distinguishes itself from the sibling `mc_build_shape` by calling out the size threshold, which helps an agent separate the two tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says that when the fill exceeds 32768 blocks, the agent should use `mc_build_shape` instead, which automatically batches. This is a clear when-not/alternative rule, and it implies that `mc_fill` is appropriate for fills within the limit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_gamemode切換遊戲模式C
Idempotent

把對象切成 survival、creative、adventure 或 spectator。

NameRequiredDescriptionDefault
modeYes
targetNo目標選擇器(@a/@p/@s/@e/@r,可帶 [])或玩家名稱@s

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations 已標示 readOnlyHint=false,描述「切換」也與此一致,但描述沒有額外揭露行為特質,例如改動目標遊戲模式後對遊戲的影響、是否需要權限、是否會覆寫既有模式等。idempotentHint=true 和 destructiveHint=false 的含義也未在描述中補充。

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

一句話即完整表達核心操作與可選模式,沒有冗詞,資訊密度高且直接切入重點。

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

此工具雖簡單,但考量到兄弟工具眾多且包含 mc_run_command 這種可能替代的通用指令工具,描述未提供任何使用情境或排除條件;同時也未說明切換遊戲模式的實際行為後果。搭配 annotation 與 output schema 仍不足以讓代理判斷何時該選此工具。

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema 對 target 有提供詳細說明,但 mode 參數只有 enum 沒有 prose 描述;描述中的「survival、creative、adventure 或 spectator」補足了 mode 的語意,且「對象」也暗示了 target 的用途。不過描述並未說明 mode 為必要參數或 target 預設為 @s,因此只算部分補償。

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

描述明確指出要對目標執行「切換遊戲模式」的動作,並列舉 survival、creative、adventure、spectator 四種模式,語意清楚且涵蓋資源與操作。但未特別與其他兄弟工具(如 mc_player_action 或 mc_run_command)做區隔,因此不到 5 分。

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

描述完全沒有提到何時應使用此工具、何時不應使用,也沒有指出與 mc_run_command、mc_player_action 等替代工具的選擇條件。使用者只能從工具名稱與語意自行推斷用途。

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_give給予物品B

給對象指定數量的物品。要讓 Agent 有東西可放,先 give 給玩家再交給 Agent。

NameRequiredDescriptionDefault
dataNo
itemYes方塊 ID,例如 stone 或 minecraft:oak_planks
amountNo
targetNo目標選擇器(@a/@p/@s/@e/@r,可帶 [])或玩家名稱@s

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are all false and offer no safety or side-effect information. The description only states the action without disclosing any behavioral nuances, such as impacts on existing inventory, permission requirements, or error handling. For a mutation 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loads the main action, and the second sentence adds valuable workflow context without any fluff. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple give tool, the description plus schema is mostly adequate. The workflow hint is useful, and the output schema covers return values, but there is no mention of edge cases (e.g., max stack size, inventory overflow) or cautions when giving items to players vs. agents.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%, covering item and target, but data and amount lack schema descriptions. The tool description does not compensate for this, explaining none of the parameters or any additional meaning like data values or stacking behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (give), resource (items), and target (object), making the core action clear. However, it does not explicitly differentiate this tool from siblings like mc_run_command, which could also give items via a command.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence provides a concrete workflow: to give items to an Agent for placing, first give to the player and then to the Agent. This gives clear context for one use case, though it does not mention 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.

mc_message在遊戲內顯示訊息A

say 全體聊天、tell 私訊、title/subtitle/actionbar 在畫面上顯示大字。教學或回報進度時用這個跟玩家說話。

NameRequiredDescriptionDefault
targetNo目標選擇器(@a/@p/@s/@e/@r,可帶 [])或玩家名稱@a
channelNosay
messageYes

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses meaningful behavioral detail beyond the annotations: say broadcasts to global chat, tell sends a private message, and title/subtitle/actionbar display large on-screen text. It makes the observable effect of each channel transparent without contradicting the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single well-structured sentence that front-loads the tool's purpose and channel breakdown without any filler. Every part adds meaning, and the format is easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple messaging tool, the description covers the essential behavior and usage context, and an output schema is available for return-value details. It is not fully complete because target and message semantics are under-described, but the overall complexity is low and the main decision points are addressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 33%, so the description should compensate for the undocumented 'message' parameter and clarify the 'target' parameter. It adds useful semantics for the 'channel' enum, but says nothing about what message content should look like or how target selectors/player names operate beyond the schema's terse description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that this tool sends messages to players and enumerates the exact channels (say, tell, title, subtitle, actionbar) with their distinct behaviors. It is unmistakably differentiated from sibling tools that perform actions, block edits, or queries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a concrete usage context: '教學或回報進度時用這個跟玩家說話' (use this to talk to players when teaching or reporting progress). It does not explicitly state when not to use it or name alternative tools, but the context is clear enough for an agent to know when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_player_action玩家雜項動作B
Destructive

kill 殺死對象、clear 清空背包(可指定單一物品)、xp 給經驗、ability 開關 worldbuilder/mayfly/mute 權限。

NameRequiredDescriptionDefault
itemNoclear 可選
unitNopoints
actionYes
amountNoxp 需要
targetNo目標選擇器(@a/@p/@s/@e/@r,可帶 [])或玩家名稱@s
abilityNo
enabledNo

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare destructiveHint=true and readOnly=false, which already signal mutating behavior. The description adds per-action details such as clear being able to target a single item and ability toggling permission flags. However, it does not disclose side effects like the irreversibility of kill, the ability to use negative xp amounts, or whether ability changes persist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single dense sentence that front-loads all four action types and their effects. There is no filler or redundant repetition of the schema. Each segment earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters and 4 distinct behaviors, the description is terse. It covers the main action meanings but omits important operational details such as how unit affects xp, what enabled controls, and interaction with target selectors. The schema covers target and amount, and an output schema exists, but the combination is still not fully self-sufficient for an agent to use all options correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 43%, so the description must compensate. It does clarify the action enum and the meaning of the item parameter for clear. However, it leaves unit (levels vs points), enabled (boolean), and ability parameter semantics unstated, requiring the agent to guess from enum names or default values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly enumerates the four actions (kill, clear, xp, ability) and states what each does: killing a target, clearing inventory optionally for a single item, granting experience, and toggling permissions. This gives a specific verb and resource scope. It does not explicitly distinguish itself from sibling tools like mc_give or mc_effect, but the action list makes the tool's purpose immediately understandable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 such as mc_give, mc_effect, mc_gamemode, or mc_run_command. There are no exclusions, prerequisites, or routing hints. The agent must infer usage from action names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_query_target查詢實體位置與朝向A
Read-onlyIdempotent

用選擇器查詢實體的座標、朝向與唯一 ID,回傳已解析的 JSON。這是取得玩家或 Agent 目前位置的正規做法——建造前先問這個,才知道要蓋在哪裡。預設用 @p(最近的玩家)而非 @s:WebSocket 送進來的指令沒有實體身分,@s 在部分情況下無法解析。

NameRequiredDescriptionDefault
targetNo目標選擇器(@a/@p/@s/@e/@r,可帶 [])或玩家名稱@p

Output Schema

NameRequiredDescription
okYes
dataYes
detailsNo
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, and non-destructive behavior. The description adds meaningful behavioral context beyond that: output is resolved JSON, default target is @p rather than @s, and @s can fail in some WebSocket cases because the command has no entity identity. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences front-load the purpose and output, then the use case, then the default caveat. Every sentence adds essential information with no padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one optional parameter, full schema coverage, an output schema, and annotations already covering safety, the description covers everything needed to invoke correctly: what it returns, when to call it, and the selector default caveat.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents the target parameter with 100% coverage, so the baseline is 3. The description adds value by explaining the practical semantics of the default: why @p is preferred and why @s is unreliable in this context, which helps an agent choose or accept the value correctly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb (查詢/query) with a specific resource (實體 entities) and names the exact outputs: coordinates, orientation, and unique ID, returned as resolved JSON. It also labels itself as the canonical way to get a player or Agent's current position, which separates it from the broader sibling set.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear context: call this before building to know where to place things, and it is the standard way to get player/Agent positions. It explicitly warns about the @s selector failing over WebSocket and explains the default @p choice, though it does not name an alternative tool or specify when NOT to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_read_block讀取某座標實際是什麼方塊A
Read-onlyIdempotent

回報該座標實際上放著什麼,不需要你先猜。Education 沒有讀取方塊的指令,這裡是拿空氣當哨兵去 testforblock,猜錯時遊戲的訊息會把實際方塊講出來。注意:回傳的是在地化顯示名稱(例如「泥土」)而不是方塊 ID(dirt),不能直接餵回 mc_set_block;要用 ID 判斷請改用 mc_test_block。訊息格式沒有官方保證,解析不出來時 block 會是 null 並附上原始訊息,不會亂猜。

NameRequiredDescriptionDefault
positionYes

Output Schema

NameRequiredDescription
okYes
rawYes
dataYes
blockYes在地化顯示名稱;解析不出來時本工具回錯誤而不是 null
isAirYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint: false), so the description earns credit for enriching behavior beyond them: it discloses the implementation quirk (testforblock workaround because Education lacks a read command), the localized-name return semantics, and the failure contract (returns null plus raw message rather than guessing). It also warns that the message format is not officially guaranteed, which is exactly the kind of non-obvious behavior an agent needs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, purpose front-loaded, and every sentence carries load: the core function, the implementation rationale, the return-type caveat plus sibling routing, and the failure/parsing behavior. It is on the longer side, but the length is justified because the tool's testforblock hack and unguaranteed message format are genuinely non-obvious and risk-mitigating for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, full safety annotations, and a clear single positional parameter, the description covers everything essential: purpose, alternative tool, output semantics caveat, and failure handling. Minor gaps remain — no mention of world-boundary/loaded-area constraints or permission requirements — but nothing an agent needs to invoke the tool correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is reported at 0%, so the description carries the burden of parameter explanation, yet it says nothing about how to specify position, coordinate modes, or format. The gap is mitigated by the parameter being a self-evident coordinate triple and the schema's inline mode enum description (absolute/relative/local), making the missing compensation a moderate rather than severe deficiency.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb-resource pairing ('回報該座標實際上放著什麼' — reports what is actually at that coordinate) and immediately differentiates itself from siblings by warning that it returns localized display names, not block IDs, and explicitly routing ID-based checks to mc_test_block. The mechanism (air sentinel feeding testforblock) further clarifies what the tool is and is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use context ('不需要你先猜' — use this when you need ground truth rather than assumptions) and an explicit when-not-to-use rule with a named alternative ('要用 ID 判斷請改用 mc_test_block'). It also states a concrete downstream constraint: the localized-name output cannot be fed back into mc_set_block.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_run_command執行單一 slash 指令A
Destructive

送出一條原始 slash 指令,涵蓋本 server 沒有專用工具的功能。只接受單行、不得換行串接,並拒絕 wsserver/connect(那會切斷本橋接)。前導斜線可有可無。

NameRequiredDescriptionDefault
commandYes例如 "time set day" 或 "/give @s diamond 1"

Output Schema

NameRequiredDescription
okYes
dataYes
riskYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark destructiveHint=true, and the description adds important caveats: single-line only, no newline chaining, and rejection of bridge-breaking commands. This goes beyond the schema and gives the agent critical context about 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with no redundancy. The core purpose, constraints, and exclusions are all front-loaded, making the description easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

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 a full output schema and annotations covering destructive behavior, the description supplies all necessary behavioral constraints and usage boundaries. Nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers the single 'command' parameter 100% with an example. The description does not add parameter-specific details beyond the overall command-sending context, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool sends a raw slash command and explicitly scopes it to functionality without a dedicated tool, which distinguishes it from the many specialized sibling tools. The verb 'send' and resource 'slash command' are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It tells the agent to use this when no dedicated tool exists, and explicitly forbids wsserver/connect commands that would sever the bridge. It does not name sibling alternatives like mc_run_commands, but the 'no dedicated tool' condition provides clear selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_run_commands依序執行多條 slash 指令A
Destructive

照順序送出多條原始指令,每條都各自通過政策檢查。適合手動編排的巨集;大量方塊請改用 mc_build_shape 或 mc_build_blueprint,它們會自動合併成最少的 fill。

NameRequiredDescriptionDefault
delayMsNo
commandsYes
stopOnErrorNo

Output Schema

NameRequiredDescription
okYes
failedYes
issuedYes
outcomesYes
elapsedMsYes
succeededYes
firstFailureYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, but the description adds useful behavioral context: commands are raw, sent in order, and each one independently passes policy checks. This goes beyond the structured annotations and helps the agent understand execution semantics and safety implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no waste: the first states the core behavior, the second gives usage guidance and alternatives. The most important information is front-loaded and every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose, usage boundaries, and some behavioral nuance, and an output schema exists so return values need no explanation. However, it omits key parameter semantics, especially stopOnError and delayMs, which are relevant for a command runner and are not documented anywhere else. The presence of annotations and schema constraints mitigates this, so it is adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description carries the burden of explaining parameters, but it only vaguely hints at the commands array via 'multiple raw commands'. It does not explain delayMs or stopOnError, leaving the agent to rely solely on parameter names, defaults, and constraints in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: sending multiple raw commands sequentially, each passing policy checks. It differentiates itself from related siblings by explicitly naming mc_build_shape and mc_build_blueprint as alternatives for bulk block operations and by the 'multiple commands' framing, distinguishing it from the singular mc_run_command.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly says this is suitable for manually orchestrated macros, and provides a clear exclusion: for large numbers of blocks, use mc_build_shape or mc_build_blueprint instead. This gives the agent concrete decision criteria between this tool and its main alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_set_block放置單一方塊A
DestructiveIdempotent

在指定座標放一個方塊。大量方塊請改用 mc_fill 或 mc_build_shape——逐格呼叫這個工具會非常慢。

NameRequiredDescriptionDefault
blockYes方塊 ID,例如 stone 或 minecraft:oak_planks
handlingNo
positionYes
blockStatesNo選用的方塊狀態,例如 ["stone_type":"granite"]

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already disclose destructive and idempotent behavior, and the description adds a useful performance warning beyond them. However, it does not explain the default replace/destroy/keep handling behavior or what happens to existing blocks at the target position, so behavioral transparency is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One focused sentence front-loads the core action and then gives the scale-based alternative. Every part earns its place and there is no redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-block mutation tool, the description plus annotations and output schema cover the essential selection and invocation context. It could add handling semantics, but the missing details are partially available in the schema and annotations, so the overall picture is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With only 50% schema description coverage, the description needed to compensate for undocumented parameters such as handling, but it merely restates 'specified coordinates' and 'one block'. It adds no explanation of handling, position modes, or block-state syntax beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource ('place one block at specified coordinates') and explicitly differentiates itself from mc_fill and mc_build_shape for large numbers of blocks. This lets an agent distinguish it from relevant sibling tools immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit when-to-use rule: use for a single block, and switch to mc_fill or mc_build_shape for large quantities because per-block calls are slow. This is direct, actionable guidance with named alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_status讀取橋接與連線狀態A
Read-onlyIdempotent

回報 WebSocket 橋接是否在監聽、Minecraft 是否已連入、遊戲內應輸入的 /connect 指令、已訂閱事件與累計指令數。任何工具失敗時先查這個。無副作用。

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
hostYes
portYes
connectedYes
encryptedYes
listeningYes
connectedAtYes
bufferedEventsYes
commandsIssuedYes
connectCommandYes
connectionCountYes
savedStructuresYes本次連線存過的結構;遊戲沒有列出結構的指令,所以只能由橋接自己記
subscribedEventsYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description reinforces this with '無副作用' and adds useful behavioral context by specifying what status information is reported. No contradictions exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one dense sentence that front-loads the main reporting items and ends with a usage guideline. Every element earns its place, and there is no fluff or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 0-parameter status tool with an output schema and comprehensive annotations, the description provides enough context: what it reports, when to use it, and that it has no side effects. It doesn't explain the output structure, but that's covered by the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema is empty, so the baseline is 4. The description correctly omits any parameter details as none exist; there is nothing missing.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function with a specific verb '回報' and lists the exact status items it reports: WebSocket bridge listening state, Minecraft connection, /connect command, subscribed events, and cumulative command count. This distinguishes it from sibling tools like mc_await_connection or mc_feedback.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs to check this tool first when any tool fails ('任何工具失敗時先查這個'), providing a clear when-to-use context. It doesn't name alternative tools, but the condition is actionable and sufficient for an agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_structure儲存或載入結構A
Destructive

把一塊區域存成具名結構,或把已存的結構放回世界。這是把 AI 蓋好的東西保存、量產、帶到別的世界的官方途徑。

saveMode 要照使用者的意圖選,不要一律用同一個:

  • memory(預設)=這次連線內的暫存。AI 反覆修改同一棟建築時用這個:想留退路就存一版,改壞了 load 回來。關掉遊戲就消失,不會在硬碟累積檔案。

  • disk =使用者明確表示要保留時才用(「幫我記住這棟」「存起來下次還要用」)。它會寫成檔案存進遊戲的世界資料夾,關掉遊戲也還在——但那是真的在使用者硬碟上留東西,不要在他沒說要保留時擅自寫入。

版本管理就是取名字:castle_v1、castle_v2。同名會直接覆蓋,改版本前先換名字。遊戲沒有「列出已存結構」的指令,所以存過什麼只能靠名字記——本次連線存過的名單可以問 mc_status。

NameRequiredDescriptionDefault
toNosave 需要
fromNosave 需要
nameYes版本就靠這個區分;同名會覆蓋
actionYes
saveModeNomemory=暫存(預設);disk=寫進硬碟,只在使用者明確說要保留時用memory
destinationNoload 需要
includeEntitiesNo

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the destructiveHint annotation, the description discloses that disk mode writes actual files to the game world folder on the user's hard drive, persists after closing the game, and should not be used without explicit user request. It also explains that memory mode disappears on shutdown and that same-name saves overwrite silently. These are exactly the behavioral traits an agent needs to avoid destructive mistakes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is longer than average but every section earns its place: purpose, mode selection, persistence consequences, and versioning rules. The formatting with bolded headers and bullet-like lines makes it easy to scan, and the most safety-critical warning about disk writes is prominently placed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and input schema descriptions covering coordinate modes and required parameters, the description covers most operational context: when to use memory vs disk, how versioning works, and what happens on overwrite. The main gap is includeEntities, which has a default but no guidance on when an agent should enable it. Overall it is nearly complete for a destructive-capable tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds significant meaning to saveMode and name that the schema only gestures at: memory vs disk semantics, user-intent-based selection, and versioning via names. It also communicates the action-dependent coordinate roles indirectly. However, includeEntities is left undocumented in both the schema and the description, and parameter coverage is only 71%, so the description does not fully close the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: saving a region as a named structure or loading it back into the world, and positions it as the official path for preserving, mass-producing, and transporting AI-built structures. It does not explicitly differentiate from siblings like mc_clone or mc_blueprint_preview, so it lacks explicit sibling contrast, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives strong, decision-oriented guidance for saveMode: memory for session-scoped iteration and disk only when the user explicitly asks for persistence. It also warns about same-name overwrites and points to mc_status for listing session saves. It does not explicitly discuss when to use this tool versus alternatives such as mc_clone, but it provides clear context and practical constraints.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_summon生成生物或實體A

在指定座標生成一個實體,可加名牌。position 留空則生在指令發起者位置。

NameRequiredDescriptionDefault
entityYes實體 ID,例如 cow 或 minecraft:villager
nameTagNo
positionNo

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no behavioral annotations, the description carries the transparency burden. It does disclose the core effect (spawning an entity) and the position/name-tag defaults, but it does not mention permissions, duplicate-entity behavior, or any broader world-modifying side effects, leaving some behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence front-loads the main action, then covers the two optional behaviors. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter tool with an output schema and detailed entity/coordinate-mode info already in the schema, the description covers the essential defaults and optional name tag. The only missing context is permission-level or operational caveats, which are not critical for basic invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is only 33%, so the description must compensate. It does: it clarifies position defaults to the caller when omitted and that nameTag is optional. The schema still handles the entity ID example and coordinate mode, so the description adds meaningful value without duplicating the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb and resource: '在指定座標生成一個實體' (spawn an entity at specified coordinates), and adds the optional name tag. This clearly separates it from sibling tools like mc_set_block (blocks) and mc_give (items), so an agent can select it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives one useful invocation rule: leaving position empty spawns at the command issuer's location. However, it never states when to prefer this tool over alternatives or when not to use it, so the usage guidance is mostly implied by the tool's purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_teleport傳送玩家或實體B
Idempotent

把選擇器指定的對象傳送到座標。target 預設 @s 是執行指令的玩家。

NameRequiredDescriptionDefault
targetNo目標選擇器(@a/@p/@s/@e/@r,可帶 [])或玩家名稱@s
destinationYes

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already classify this as non-read-only, idempotent, and non-destructive, and the description is consistent with that. It adds no extra disclosure about permissions, chunk-loading, or failure modes, but the annotations lower the burden.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the action front-loaded and no filler. Slightly under-specified for the nested destination/mode structure, so not a perfect 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple teleport tool with an output schema and annotations covering safety/idempotency, the core invocation is understandable. The main gap is lack of routing guidance among teleport-related siblings, and coordinate mode semantics depend entirely on the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description adds the useful note that target defaults to the executing player and frames the target as a selector, but it largely repeats schema info. With 50% schema coverage, x/y/z are left to inference, though the mode enum in the schema covers coordinate semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a concrete verb (傳送) and resource (selector-specified targets to coordinates), and the title narrows it to players/entities. It is clear, though it does not explicitly contrast itself with mc_agent_teleport.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides no guidance on when to use this tool instead of alternatives such as mc_agent_teleport or mc_agent_move, and no exclusions. The only usage hint is the @s default, which is more parameter-oriented than selection guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_test_block檢查某座標是不是指定方塊A
Read-onlyIdempotent

不改變世界,只回報該座標是否為指定方塊。建造前確認地形、或驗證剛才蓋的東西時用。

NameRequiredDescriptionDefault
blockYes方塊 ID,例如 stone 或 minecraft:oak_planks
positionYes
blockStatesNo選用的方塊狀態,例如 ["stone_type":"granite"]

Output Schema

NameRequiredDescription
okYes
dataYes
matchesYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds that the tool 'only reports whether the coordinate is the specified block', clarifying the return semantics as a boolean, and reiterates 'does not change the world' which aligns with annotations. It does not disclose other behaviors like error handling, but the safety profile is fully covered 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description consists of two concise sentences, front-loading the core behavior ('does not change the world, only reports whether the coordinate is the specified block') followed by usage context. Every word serves a purpose with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, read-only test tool, the description covers purpose, usage, and non-destructiveness. Required parameters are documented in the schema (with most having descriptions), annotations cover safety, and an output schema exists, so no return value explanation is needed. All necessary contextual information is present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not explain any parameters, merely referring to 'that coordinate'. The schema provides helpful descriptions for block, blockStates, and the mode field, but the position object itself lacks a description. With schema description coverage at 67% (not high), the tool description was expected to compensate for missing parameter guidance but does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: it does not change the world and reports whether a coordinate is the specified block. It also provides concrete use cases (confirming terrain before building, verifying recent builds), which distinguishes it from siblings like mc_read_block that likely return block data rather than a boolean test.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit usage context: use this tool before construction to check terrain or to verify placed blocks. However, it does not explicitly mention when not to use it or name alternative tools, so it lacks exclusions but still provides clear guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_ticking_area新增常載區域A
Idempotent

把一塊區域設為常載,讓玩家離開後那裡的機制仍會運作。Agent 要在遠處自動工作時需要這個。

NameRequiredDescriptionDefault
toYes
fromYes
nameNo

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate a non-read-only, non-destructive, idempotent mutation, but do not explain the persistent world behavior. The description adds that the area remains loaded and its mechanisms continue functioning after player departure, which is meaningful context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences front-load the core action and effect, then add the key use case. Every sentence earns its place with no redundant detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description gives the purpose and effect but omits parameter semantics and any prerequisites or limitations (e.g., area limits, persistence behavior once unloaded). The output schema exists and annotations help, so the gaps are moderate; an agent could probably call it correctly by using the schema structure, but not from the description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the top-level parameters, and the description provides no parameter-specific guidance (what 'from'/'to' represent, how 'name' is used, or coordinate mode implications). The agent must infer from the names and nested schema, and the description does not compensate for the missing coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action and resource: '把一塊區域設為常載' (set an area as always-loaded). It further explains the functional effect (mechanisms keep running after players leave) and distinguishes it from sibling tools by tying it to remote autonomous work.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use the tool: 'Agent 要在遠處自動工作時需要這個' (the agent needs this when working automatically at a distance). It does not provide exclusions or name alternatives, so it does not fully meet the 5-level bar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_verify_reading驗證「讀方塊」這條路還有效A
Read-onlyIdempotent

讀方塊靠的是 testforblock 失敗訊息會洩漏方塊名稱,而那個訊息格式沒有官方穩定性保證。遊戲改版改了文案、或遊戲語言不是繁中/簡中/英文,解析就會失效——而且失效的樣子是安靜的。這支探測會主動驗證解析路徑是否仍然有效,上課前跑一次就知道 mc_read_block 的結果能不能信。它不需要事先知道那格是什麼:若該格是空氣,就拿基岩去問(保證不符)逼出失敗訊息;若該格有東西,第一問就已經給了訊息。最多兩條指令,完全不寫入世界。parseable=false 代表協定已漂移,此時 mc_read_block 的結果一律不可信。

NameRequiredDescriptionDefault
positionYes任一座標皆可,空的或有方塊都行

Output Schema

NameRequiredDescription
rawYes
branchYes
parseableYesfalse 代表協定已漂移,讀方塊不可信
parsedNameYes
commandsIssuedYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds substantial behavioral context: it relies on testforblock failure message parsing, the failure mode is 'silent', it uses at most two commands, and guarantees no world writes. It also explains the algorithm (querying with bedrock to force a failure message if the cell is air), which is beyond what annotations provide. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense and front-loaded with the core problem (failure message format instability), then explains the verification approach and the consequence of parseable=false. Each sentence earns its place, and the structure flows logically from problem to solution to implication. While it is longer than average, the complexity of the tool justifies the detail; minor redundancy with annotations (e.g., 'no writes to world') is acceptable for emphasis.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the tool's purpose (why it exists), usage context (when to run it), internal behavior (how it works), and output interpretation (parseable=false implies protocol drift). Since an output schema exists, it does not need to enumerate return fields. No critical information is missing for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already documents the position object with x, y, z, and mode, including a description ('absolute=world coordinate; relative=~ relative to initiator; local=^ relative to facing') and a note that any coordinate works. Schema coverage is 100%, so the description does not need to add parameter semantics. The description adds no new param-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.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('verifies') and a specific resource ('the parsing path for block reading'), making it clear this tool checks whether mc_read_block's results can be trusted. It distinguishes itself from sibling tools like mc_read_block and mc_test_block by framing itself as a probe of the underlying protocol, not a read operation itself. The title and description align perfectly, 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives a clear trigger ('run before class') and a decision rule ('if parseable=false, mc_read_block results are untrustworthy'), indicating when to use this tool to validate the read path. It implies when it should be used instead of relying directly on mc_read_block, though it does not explicitly list exclusions or alternative tools. The context is strong but lacks explicit 'when-not-to-use' or sibling comparison.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mc_world_settings調整世界設定A
Idempotent

一次改一項世界設定:time 設定時間(day/night/noon/midnight 或 tick 數)、weather 天氣、gamerule 遊戲規則、difficulty 難度。

NameRequiredDescriptionDefault
ruleNosetting="gamerule" 時的規則名稱
valueYestime:day|weather:clear|difficulty:peaceful|gamerule 的值
settingYes
durationSecondsNo

Output Schema

NameRequiredDescription
okYes
dataYes
elapsedMsYes
statusCodeYes
commandLineYes
statusMessageYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate that the operation is idempotent and non-destructive; the description adds that exactly one setting is changed at a time and enumerates the setting types. However, it does not disclose side effects such as whether changes persist, how the world is affected, or how durationSeconds alters behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence expresses the key constraint ('one setting at a time') and then maps each setting category to its value form with zero filler. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema and annotations present, the description need not restate return values or safety, and it covers the main setting categories. The notable gap is the undocumented durationSeconds parameter, whose purpose and applicability are left to inference, making the tool not fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description enriches 'setting' and 'value' with concrete examples (day/night/noon/midnight, clear, peaceful) that complement the schema's terse examples. But it leaves 'durationSeconds' completely unexplained and does not state that 'rule' is required when setting='gamerule', so parameter semantics are only partially conveyed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('改' / change), a clear resource ('世界設定' / world settings), and an explicit scope: it changes only one setting at a time, with four named categories (time, weather, gamerule, difficulty). This makes it easy to distinguish from sibling tools like mc_run_command or mc_gamemode.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly establishes when to use the tool: when a single world setting (time, weather, gamerule, difficulty) needs to be changed. It does not explicitly name alternatives or exclusion conditions, but the category list and '一次改一項' constraint give sufficient context for an agent to select it over agent/command/block tools.

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.

  1. 42 tool updatesv0.1.0
    • First observedmc_agent_act
    • First observedmc_agent_collect
    • First observedmc_agent_create
    • First observedmc_agent_inventory
    • First observedmc_agent_move
    • First observedmc_agent_place
    • First observedmc_agent_program
    • First observedmc_agent_sense
    • First observedmc_agent_teleport
    • First observedmc_agent_turn
    • First observedmc_analyze_symmetry
    • First observedmc_await_connection
    • First observedmc_blueprint_preview
    • First observedmc_build_blueprint
    • First observedmc_build_preview
    • First observedmc_build_shape
    • First observedmc_clone
    • First observedmc_compare_regions
    • First observedmc_effect
    • First observedmc_events_catalog
    • First observedmc_events_poll
    • First observedmc_events_subscribe
    • First observedmc_events_unsubscribe
    • First observedmc_feedback
    • First observedmc_fill
    • First observedmc_gamemode
    • First observedmc_give
    • First observedmc_message
    • First observedmc_player_action
    • First observedmc_query_target
    • First observedmc_read_block
    • First observedmc_run_command
    • First observedmc_run_commands
    • First observedmc_set_block
    • First observedmc_status
    • First observedmc_structure
    • First observedmc_summon
    • First observedmc_teleport
    • First observedmc_test_block
    • First observedmc_ticking_area
    • First observedmc_verify_reading
    • First observedmc_world_settings

TDQS

A3.9/5.0

Scored across 42 tools

Disambiguation5/5

每个工具都有明确且独特的用途,例如mc_agent_*系列管理Agent行为,mc_build_*系列处理建造,mc_events_*系列订阅事件。即使有类似工具(如mc_set_block与mc_fill、mc_run_command与mc_run_commands),也在描述中明确区分了使用场景,没有模糊边界。

Naming Consistency5/5

所有工具均以mc_前缀开头,使用小写下划线命名,且按功能领域分组(如mc_agent_、mc_build_、mc_events_),模式高度一致。动词与名词的组合虽然不完全统一,但整体规律清晰,易于预测。

Tool Count5/5

工具数量为42个,但对Minecraft这样一个功能丰富的游戏来说,覆盖了Agent操作、建筑、世界管理、事件订阅等多个方面,每个工具都有存在的必要,没有冗余或缺失,规模与服务器目的匹配。

Completeness5/5

工具集涵盖了建造、查询、修改、事件处理、世界设置等完整生命周期,包括创建、读取、更新、删除的基本操作,也提供了预览和验证工具来避免错误。没有明显的功能死角,代理可以独立完成从规划到执行的完整流程。

Maintenance

ActivityActive
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers