zesarux-mcp
The ZEsarUX MCP server provides a comprehensive interface to control the ZEsarUX ZX Spectrum emulator via ZRCP, covering emulator management, debugging, memory operations, and more.
Emulator Lifecycle
Launch/kill the emulator, set machine type (48k, 128k, Pentagon, TBBlue, etc.), soft/hard reset, and retrieve emulator info (version, machine, OS, CPU core).
Memory Operations
Read (
peek), write (poke), and display (hexdump) emulated memory at specified addresses and optional memory zones. Read/write I/O ports.
CPU & Debugging
Get/set Z80 registers (full set including alternates, IX/IY/PC/SP/I/R)
Step into or step over instructions (
cpu_step)Disassemble Z80 code from any address
CPU execution history (ring buffer of recent PC traces)
Code coverage tracking
CPU transaction log (configurable fields, written to file)
T-state counter (read or reset)
Extended stack (read typed values)
Breakpoints
List, set (with conditions, pass counts, and fire actions for execute/memory/port events), and clear breakpoints.
File & Snapshot Operations
Smartload any file (tape, snapshot, etc.) with auto-detection
Save/load snapshot files (.zsf/.sna/.z80/.sp)
Access in-RAM Time Machine snapshots
Insert tape images
Screen
Save the current display to a .scr, .bmp, or .pbm file and return the file path.
Keyboard Input
Send a single key (tap/press/release) or type a full string character by character.
Assembly
Assemble Z80 instructions directly into memory at any address.
Audio & Media
Control the AY Player (load playlists, play/navigate tracks)
Reload the MMC/SD card image
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@zesarux-mcpload tape games/jetpac.tap and execute"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
ZEsarUX MCP Server
MCP server for ZEsarUX ZX Spectrum emulator using ZRCP protocol.
dtz-labs - Vibe coding 8-bit machines like there is no tomorrow

Features
13 tool categories with 50+ operations: machine control, PEEK/POKE, debugging (breakpoints, registers, disassembly), tape/disk loading, snapshots, keyboard input, assembly, and more.
Related MCP server: mcp-retroarch
Quick Start
Each client launches the server over stdio via npx — no clone or build needed.
The server then connects to ZEsarUX on ZRCP port 10000, auto-launching it for you
if nothing is listening there (on by default). Pick your client below; you'll
still need ZEsarUX installed — see Installation.
Claude Code
Register the server with one command:
claude mcp add zesarux -- npx -y @dtz-labs/zesarux-mcpAuto-launch is on by default. To disable it (only connect to a ZEsarUX you start yourself), set the env var:
claude mcp add zesarux --env ZESARUX_AUTOLAUNCH=false -- npx -y @dtz-labs/zesarux-mcpClaude Desktop
Edit claude_desktop_config.json (macOS:
~/Library/Application Support/Claude/claude_desktop_config.json; Windows:
%APPDATA%\Claude\claude_desktop_config.json), then restart Claude Desktop:
{
"mcpServers": {
"zesarux": {
"command": "npx",
"args": ["-y", "@dtz-labs/zesarux-mcp"]
}
}
}Codex
Add to ~/.codex/config.toml:
[mcp_servers.zesarux]
command = "npx"
args = ["-y", "@dtz-labs/zesarux-mcp"]Opencode
Add to opencode.json (project) or ~/.config/opencode/opencode.json (global):
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"zesarux": {
"type": "local",
"command": ["npx", "-y", "@dtz-labs/zesarux-mcp"],
"enabled": true
}
}
}Installation
1. Install ZEsarUX
macOS:
brew install zesarux
xattr -dr com.apple.quarantine /Applications/zesarux.appWhy the second command? macOS Gatekeeper tags any app that wasn't downloaded through the App Store (or signed/notarized by an identified developer) with a
com.apple.quarantineextended attribute. ZEsarUX isn't notarized, so the first time you launch it Gatekeeper refuses to open it ("can't be opened because Apple cannot check it for malicious software").xattr -drrecursively strips that attribute from the app bundle, telling Gatekeeper to trust it. This is needed because the Homebrew cask drops the.appinto/Applicationsbut cannot clear the quarantine flag for you.
Linux:
sudo apt-get install zesaruxOr download from: ZEsarUX releases
For Windows, compiling from source, and enabling ZRCP via the config file, see the full Installation & Configuration guide.
2. Start ZEsarUX with ZRCP
zesarux --enable-remoteprotocol --remoteprotocol-port 10000Or skip this step — the server auto-launches ZEsarUX for you by default (see Auto-launching ZEsarUX below).
3. Install the MCP Server
The server is published to npm as @dtz-labs/zesarux-mcp.
Your MCP client launches it on demand via npx (see Quick Start),
so nothing needs installing. To have it on your PATH as zesarux-mcp, install
it globally:
npm install -g @dtz-labs/zesarux-mcpgit clone https://github.com/dtz-labs/zesarux-mcp.git
cd zesarux-mcp
npm install
npm run build # produces dist/index.jsThen point your config at "command": "node", "args": ["/absolute/path/to/zesarux-mcp/dist/index.js"].
Environment variables
Variable | Default | Description |
|
| Host where ZEsarUX ZRCP is listening |
| (auto) | ZRCP port (matches |
|
|
|
|
| ZRCP request timeout, ms |
|
| Connection retry attempts |
|
| Reconnect automatically if the link drops |
|
| Start ZEsarUX automatically if it isn't reachable (set |
| (auto-detected) | Explicit path to the ZEsarUX binary |
| (none) | Extra args appended when launching (e.g. |
|
| How long to wait for the ZRCP port after launching, ms |
Auto-launching ZEsarUX
By default, when ZEsarUX isn't reachable on startup the server finds a local
ZEsarUX binary, launches it with --enable-remoteprotocol --remoteprotocol-port <port>, waits for the port, then connects. Set ZESARUX_AUTOLAUNCH=false to opt
out (only connect to a ZEsarUX you started yourself). An emulator the server
launched is terminated when the server stops; a ZEsarUX you started yourself is
left untouched. See
Installation & Configuration for
binary discovery order and headless use.
You can also control the emulator process at runtime with the launch_emulator
and kill_emulator tools (the latter only stops an emulator the server
started). And if a tool call fails because the connection dropped, the server
will — unless ZESARUX_AUTOLAUNCH=false — try once to relaunch ZEsarUX and
reconnect before retrying the call.
Running several servers (automatic ports)
In AUTO mode (auto-launch on, ZESARUX_PORT not set) the server picks the
first free port ≥ 10000 and launches its own ZEsarUX there. So you can
register several MCP servers with no port configuration at all and they fan out
automatically — the first takes 10000, the next 10001, then 10002, … each
with its own emulator:
claude mcp add zesarux-a -- npx -y @dtz-labs/zesarux-mcp
claude mcp add zesarux-b -- npx -y @dtz-labs/zesarux-mcpTo pin a server to a specific port — or to attach to an emulator that is
already running — set ZESARUX_PORT explicitly (e.g. ZESARUX_PORT=10000); the
server then uses exactly that port and does not scan. Automatic port selection
only happens in AUTO mode; with ZESARUX_AUTOLAUNCH=false the server just
connects to ZESARUX_PORT (default 10000).
Documentation
Documentation index - Start here
Installation & Configuration - Install ZEsarUX and the server
Configuring MCP Clients - Claude Desktop/Code, Codex, OpenCode, JetBrains
Available Tools - All tools with examples
Example Usage - Talk-to-it and quick call examples
Development - Build, structure, protocol mapping
Troubleshooting - Common problems
ZRCP Specification - Complete protocol reference
Quick Examples
// Reset and set machine
{"name": "reset_machine"}
{"name": "set_machine", "arguments": {"machine": "128k"}}
// Read/write memory
{"name": "peek", "arguments": {"address": "4000", "length": 256}}
{"name": "poke", "arguments": {"address": "4000", "value": [255, 0]}}
// Debugging
{"name": "get_registers"}
{"name": "set_breakpoint", "arguments": {"index": 1, "type": "execute", "address": "8000"}}
// Load tape
{"name": "load_file", "arguments": {"filename": "/path/game.tap"}}License
MIT
dtz-labs - Keeping 8-bit alive until 2065
Available Tools
34 toolsassembleA
Assemble a Z80 instruction at an address (ZRCP: assemble [address] [instruction])
| Name | Required | Description | Default |
|---|---|---|---|
| instruction | Yes | Assembly instruction, e.g. "NOP" or "LD A,10" | |
| address | No | Address to assemble at (decimal or hex, default: PC) | PC |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the action without mentioning side effects, safety, or return behavior. For a mutation tool, more context is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, clear and concise with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but the description omits output behavior and potential side effects. It is adequate but not fully complete given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds a syntax example and default for address, but does not significantly enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'assemble' and the resource 'Z80 instruction at an address'. It is distinct from siblings like 'disassemble' and 'poke'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for assembling instructions but does not explicitly state when to use it versus alternatives like 'poke' or 'disassemble'. No when-not or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ay_playerB
Run a command on the ZEsarUX AY Player (ZRCP ayplayer command [parameter]).
| Name | Required | Description | Default |
|---|---|---|---|
| command | Yes | AY Player subcommand | |
| parameter | No | Parameter: file path (load), directory (load-dir), or playlist id (play-id). Omit for stop/next-*/prev-*/get-* commands. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only says 'Run a command' but does not disclose side effects, state changes, or dependencies (e.g., requires AY player enabled). The behavior of each command (e.g., load, play, stop) is not described, leaving the agent to infer from enum names.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, front-loaded with the core action, and contains no unnecessary words. The ZRCP syntax hint is compact and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 20+ commands and no output schema, the description is overly brief. It does not explain what each command returns, how playback state changes, or error conditions. An agent would need to infer behavior solely from command names, which may not be sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds valuable context for the 'parameter' field, specifying its usage per command (file path for load, directory for load-dir, playlist id for play-id, omit for others). This clarifies the semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Run a command on the ZEsarUX AY Player', specifying the verb and resource. It distinguishes from sibling tools which focus on other emulator functions like debugging and memory access. However, it does not explain what the AY Player is or provide additional context for each command.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. The description does not mention prerequisites, typical use cases, or when not to use it. Sibling tools are listed but no comparisons or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_breakpointA
Clear a breakpoint. ZEsarUX has no clear-single command: disabling the slot (disable-breakpoint) effectively clears it. Set mem_all=true to clear ALL memory breakpoints (clear-membreakpoints) instead.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Breakpoint slot index to clear (via disable-breakpoint) | |
| mem_all | No | If true, clear ALL memory breakpoints (clear-membreakpoints); id is ignored |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Explains the behavioral quirk that ZEsarUX has no clear-single command and uses disable-breakpoint instead, and that mem_all triggers clear-membreakpoints. Does not disclose side effects (e.g., whether clearing a breakpoint affects execution, or if there are prerequisites like the breakpoint existing). Still adds useful context beyond schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose. Every sentence provides unique information: purpose, technical implementation detail, and parameter usage. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 2 non-required parameters and no output schema, the description covers the two distinct modes of operation. Could be improved by noting if clearing a breakpoint is reversible or if there are any error conditions (e.g., clearing a non-existent slot). Overall adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds value by clarifying that id is a slot index for disable-breakpoint and that mem_all when true clears all memory breakpoints and causes id to be ignored. This semantic distinction is not fully explicit in the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb+resource ('Clear a breakpoint') with specific technical context about ZEsarUX's lack of a clear-single command and the distinction between clearing a single breakpoint (disable-breakpoint) vs all memory breakpoints (clear-membreakpoints via mem_all). Clearly distinguishes from sibling tools like set_breakpoint and list_breakpoints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States when to use the tool ('to clear a breakpoint') and provides alternative usage for clearing all memory breakpoints via mem_all parameter. Explains the underlying ZEsarUX command mapping. Lacks explicit 'when not to use' or comparison with other sibling tools like peek/poke, but the context is sufficient for most use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_coverageB
CPU code-coverage control (ZRCP cpu-code-coverage). Enable/disable tracking, get covered addresses, or clear the list.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | enabled = "cpu-code-coverage enabled yes", disabled = "... enabled no", get = list run addresses, clear = clear the address list |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description must fully disclose behavior. It only lists actions without describing side effects (e.g., persistence, performance impact, required state). The mention of ZRCP is a technical detail but not behavioral.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the tool's purpose, followed by a concise list of actions. No unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 1-parameter tool, the description covers the purpose and actions. However, it omits return value details for 'get' (e.g., format of addresses) and any prerequisites or side effects of 'clear'. Lacks output schema to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter, and the schema description already explains each enum value. The tool description paraphrases these actions without adding new semantics (e.g., 'tracking' for enabled). Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is for CPU code-coverage control, listing the specific actions (enable, disable, get, clear). It references the ZRCP command and distinguishes it from sibling debugging tools like cpu_step or hexdump by focusing exclusively on code coverage.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool over alternatives among siblings. It does not explain conditions for enabling vs disabling, nor when to retrieve vs clear the list. Usage context is entirely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_historyA
Query the CPU execution history ring buffer (ZRCP cpu-history). History must be enabled and started first (action=enable then action=start). action=get returns a recent PC trace.
| Name | Required | Description | Default |
|---|---|---|---|
| action | No | History action. get = recent PC trace (cpu-history get-pc); get-at/get-extended = registers at an index; size = element count; enable/disable/start/stop/clear manage recording. | get |
| start | No | Start position / index (0 = most recent). | |
| items | No | Number of items to return (get action only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It explains actions manage recording (enable/disable/start/stop/clear) and query behavior (get returns PC trace). Lacks details on return format, error handling, or performance implications.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences front-load the main purpose and actions. No wasted words; every sentence adds essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, description adequately covers purpose, action enum, parameter defaults, and usage order. Could mention default action and what get-extended returns more explicitly, but overall sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage with descriptions, but the description adds meaningful context: e.g., 'action=get returns a recent PC trace', 'start=0 most recent'. Adds value beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool queries the CPU execution history ring buffer. Describes actions like 'get' returning a recent PC trace. Distinguishes from siblings implicitly but does not explicitly compare to similar tools like cpu_step.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit prerequisite: history must be enabled and started first. Describes action sequence. Does not specify when not to use or compare alternatives, but gives clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_stepC
Execute a single CPU instruction. Enters cpu-step mode first, then runs ZRCP cpu-step (or cpu-step-over when step_over is set).
| Name | Required | Description | Default |
|---|---|---|---|
| step_over | No | Step over subroutine calls (cpu-step-over) instead of into them (cpu-step) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It states the tool enters cpu-step mode and runs ZRCP commands, but does not disclose side effects, prerequisites (e.g., machine must be running), error conditions, or how step mode is exited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. Front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, and the tool is complex (single-step debugging). The description omits return values, error handling, state changes, and how to integrate with other tools. Incomplete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description rephrases the parameter's effect ('or cpu-step-over when step_over is set') but adds no new detail beyond the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Execute a single CPU instruction' with verb and resource. It mentions the two modes (cpu-step and cpu-step-over) but does not explicitly differentiate from sibling tools like 'set_breakpoint' or 'disassemble', which have distinct purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for single-stepping but gives no guidance on when to use this versus other debugging tools like breakpoints or stepping over versus into. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cpu_transaction_logA
Configure the CPU transaction log (ZRCP cpu-transaction-log parameter value). Set logfile then enabled=yes to start. Output goes to the configured logfile; there is no read-back command.
| Name | Required | Description | Default |
|---|---|---|---|
| parameter | Yes | Transaction-log parameter to set | |
| value | Yes | Value: a filename (logfile), yes|no (boolean params), or a number (rotatefiles/rotatesize/rotatelines) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses that the tool writes configuration, directs output to the logfile, and has no read-back command. However, it does not specify persistence, error handling, or side effects like overwriting previous settings. This 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. The first sentence states the tool's purpose and parameter association. The second provides critical usage guidance and a behavioral note. Every sentence earns its place, front-loading key information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main action and a key usage pattern, but lacks details on default values, validation rules, or what happens on invalid inputs. For a two-parameter configuration tool with no output schema, it is minimally adequate but could be more complete by explaining parameter interactions beyond the given ordering hint.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description adds meaningful context beyond the schema by stating the dependency between 'logfile' and 'enabled', and clarifying the output destination. This helps an agent understand parameter relationships, though it does not elaborate on all enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool configures the CPU transaction log, a specific resource. It distinguishes from siblings like 'cpu_history' or 'cpu_step' by focusing on configuration of the transaction log, not execution or history. The addition 'there is no read-back command' further clarifies its write-only nature.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides an explicit usage order: 'Set logfile then enabled=yes to start.' This gives clear context for when to use it. However, it does not mention when not to use this tool versus alternatives like directly writing to memory or using other configuration tools, so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disassembleA
Disassemble Z80 code (ZRCP disassemble [address] [lines]). Defaults to PC. Output is address + instruction (no byte column). Memory zone is selected separately via the active zone.
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | Start address (hexadecimal, e.g. "8000"). Default: PC. | PC |
| length | No | Number of instruction lines to disassemble |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, description must disclose behavior. It mentions memory zone dependency and output format, but does not state that it is read-only or non-destructive, nor any side effects or prerequisites beyond active zone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences. Front-loaded with purpose, then details. No redundant or wasted words. Highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Considering no output schema and no annotations, the description covers purpose, parameters, output format, and memory zone dependency. It lacks error handling or prerequisites like 'active zone must be set', but overall sufficient for a simple disassembly tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds context: 'Defaults to PC', 'Output is address+instruction (no byte column)', and 'Memory zone selected separately' – which goes beyond the schema. However, it does not add significant detail beyond what the parameter descriptions already provide.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (disassemble) and resource (Z80 code), specifies default address (PC), output format (address+instruction, no byte column), and that memory zone is separate. This differentiates it from siblings like assemble and hexdump.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool vs alternatives (e.g., code_coverage, hexdump). It implies memory zone must be set separately, but no exclusion or recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extended_stackA
Read the extended stack — typed values currently on the stack (ZRCP extended-stack get [index]). The extended stack must be enabled in ZEsarUX first. index defaults to SP.
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of stack values to fetch (required by ZRCP). | |
| index | No | Start index/address (default: SP register). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description indicates a read-only operation via 'Read', implying no destructive side effects. It references the underlying ZRCP command for transparency. Without annotations, it adequately conveys the non-modifying nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences convey all necessary information without redundancy. Front-loads the purpose and provides context efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Explains what the tool returns (typed values on stack) and mentions prerequisites. Without an output schema, this provides adequate context for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The tool description adds value by stating that 'count' is required by ZRCP and that 'index' defaults to SP, which is not in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Read' and the resource 'extended stack', and specifies it returns typed values. It is distinct from sibling tools which focus on other debugger operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly mentions that the extended stack must be enabled in ZEsarUX first, providing a critical prerequisite. It also notes that index defaults to SP. However, it does not discuss when to use this tool versus alternatives like get_registers.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_emulator_infoB
Get emulator information via ZRCP. version→get-version, machine→get-current-machine, os→get-os, cpu_core→get-cpu-core-name; all→combines version + machine + os + buildnumber.
| Name | Required | Description | Default |
|---|---|---|---|
| details | No | Which info to retrieve. (There is no ZEsarUX "features" command; use cpu_core for the CPU core name.) | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It mentions the underlying protocol (ZRCP) and maps options to commands, but does not disclose behavioral traits such as read-only nature, potential side effects, failure modes, or response format. This is minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with a compact list mapping, which is concise and front-loaded. It avoids wasted words, though a bulleted list could improve readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and simple enumeration, the description covers the parameter adequately. However, it omits any return format or example, leaving the agent uncertain about the response structure. For a low-complexity tool, this is acceptable but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by explicitly mapping each enum value to its corresponding ZRCP command, but the schema already explains the enum meaning. The added mapping is useful but not critical.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Get emulator information via ZRCP' and provides a mapping of each enum value to a specific ZRCP command (e.g., version→get-version). This distinguishes it from sibling tools like get_registers or get_screen by focusing on emulator system properties.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description does not mention when not to use it or suggest other tools for related queries, leaving the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_registersA
Get current CPU register values (Z80 main + alternate set, IX/IY/PC/SP/I/R, flag strings, interrupt mode, MEMPTR). Maps to ZRCP get-registers.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavior. It accurately labels the operation as getting values, implying read-only, and lists the specific registers. However, it does not explicitly state that it is non-destructive or that it does not affect emulation state, which would be helpful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that efficiently conveys the tool's purpose including the list of registers. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description lists all register groups returned, but there is no output schema to detail the format or structure of the returned data. Still, the description is sufficient for an agent to understand what it will receive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters and 100% schema description coverage, no additional parameter information is needed. The tool requires no input, and the description correctly indicates that by having no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves current CPU register values, enumerating specific registers (Z80 main+alternate, IX/IY/PC/SP/I/R, flags, interrupt mode, MEMPTR) and references ZRCP get-registers, distinguishing it from sibling tools like set_register or cpu_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for reading registers but provides no explicit guidance on when to use or not, nor any comparison to alternatives like cpu_history or set_register. The purpose is clear but lacks contextual advice for an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_screenA
Capture the current screen. NOTE: ZRCP cannot return pixel data to the client, so this writes a file on the ZEsarUX host (via save-screen) and returns its path. Use get-ocr for on-screen text.
| Name | Required | Description | Default |
|---|---|---|---|
| format | No | Image format for the host-side file | scr |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but the description fully discloses that it writes a file on the ZEsarUX host and returns its path, along with the underlying command ('save-screen').
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main purpose, then a note explaining limitation. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one optional parameter and no output schema, the description sufficiently covers the tool's behavior, constraints, and alternatives.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with enum and description for 'format'. Description adds no additional semantic value beyond the schema, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Describes clear verb ('capture') and resource ('screen'), explicitly differentiates from 'get-ocr' for text, and explains the limitation of returning pixel data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use (need screen capture) and when not (use get-ocr for text), with clear context on the file-writing behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_tstatesA
Get the T-state counter via ZRCP get-tstates. If reset is true, resets the PARTIAL counter (reset-tstates-partial) and returns it. ZEsarUX has no way to reset the main counter.
| Name | Required | Description | Default |
|---|---|---|---|
| reset | No | Reset and read the partial T-state counter instead of reading the main counter. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses that resetting the partial counter is possible, but the main counter cannot be reset via ZEsarUX. This adds valuable behavioral context beyond the input schema, though no annotations are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very concise with two sentences: one for the main purpose and one for the reset behavior. It is front-loaded and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main function and reset behavior, but does not specify the return format or type. Given no output schema, this is a gap. Adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for the 'reset' parameter. The tool description adds that resetting also returns the counter, which is not in the schema description, thus adding value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets the T-state counter via ZRCP get-tstates, and explains the reset behavior for the partial counter. It distinguishes itself from siblings as there is no other tool for tstates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. However, given the sibling list, no obvious alternatives exist, so it is adequate but could be improved.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hexdumpB
Display memory in hexadecimal + ascii (ZRCP hexdump)
| Name | Required | Description | Default |
|---|---|---|---|
| address | No | Starting address (hexadecimal) | 4000 |
| length | No | Number of bytes to display | |
| memory_zone | No | Memory zone to display. Omit to use the currently active zone. Only ram/rom/mapped switch zones; ids are machine-dependent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavior. It only states 'display', implying a read-only operation, but does not mention permissions, side effects, or output format details beyond hex+ASCII.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states the tool's function with no wasted words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has three parameters, no output schema, and no annotations, the description is too minimal. It omits output format details, the meaning of 'ZRCP', and any usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no extra meaning beyond the tool's overall purpose, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool displays memory in hexadecimal and ASCII format, providing a specific verb and resource. It is distinct from sibling tools like disassemble or peek, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no guidance on when to use this tool over alternatives, nor any exclusions or prerequisites. Context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kill_emulatorA
Stop the ZEsarUX emulator — but ONLY if this server started it. An externally-launched ZEsarUX is left untouched (you must stop it yourself).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description bears full responsibility for transparent behavior. It fully discloses that the tool only affects emulators started by this server, leaving others untouched. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each dense with meaning. No redundancy, front-loaded purpose, and uses punctuation effectively. Every phrase earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with no output schema, the description completely addresses what the agent needs: when the tool applies, what it does, and its limitations. Nothing is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100% by default. The description adds no parameter info, which is appropriate. Baseline 4 for absent parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the action ('Stop') and the resource ('ZEsarUX emulator'), and adds a critical scoping condition ('only if this server started it'). This clearly differentiates from other tools like 'reset_machine' or external kill.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The tool tells exactly when to use it (to stop server-started emulator) and when not to (externally-launched emulator must be stopped manually). This eliminates ambiguity without needing to reference siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
launch_emulatorA
Start the ZEsarUX emulator process and connect to it. If ZEsarUX is already running/reachable, just connects. Locates the binary automatically (or ZESARUX_PATH) and starts it with the ZRCP remote protocol enabled.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description covers key behaviors: process start, automatic binary location via ZESARUX_PATH, and enabling ZRCP protocol. It lacks info on blocking behavior or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with core purpose, no wasted words. Perfectly sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless tool with no output schema, the description fully covers what the tool does, how it works, and conditions. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist; schema coverage is 100% trivially. Baseline 4 is appropriate as description needs no param info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool starts the ZEsarUX emulator process and connects, or just connects if already running. It identifies the specific resource and action, distinguishing it from siblings like kill_emulator.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use before other emulator tools that require a running instance. It explains idempotency but does not explicitly state when not to use or provide alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_breakpointsB
List breakpoints (ZRCP get-breakpoints). Optionally page from a starting index.
| Name | Required | Description | Default |
|---|---|---|---|
| index | No | Starting breakpoint slot index to list from (optional; lists all if omitted) | |
| items | No | Number of slots to list starting at index (optional; requires index) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description should disclose behavioral traits like read-only nature or side effects, but it only states the basic function and pagination option.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the core purpose and adds a brief optional behavior, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, and the description fails to explain the return format or structure of the breakpoints list, which is needed for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters; the description adds no extra meaning beyond what the schema already provides, meeting the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists breakpoints and mentions optional pagination, distinguishing it from sibling tools like set_breakpoint and clear_breakpoint.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_screen or hexdump; the description simply states what it does without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_fileA
Load a file into the emulator. By default uses ZEsarUX smartload, which auto-detects the file type and runs it. Use file_type to force a specific loader.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Path to the file to load | |
| file_type | No | 'auto' (default) = smartload (auto-detect & run); 'snapshot' = snapshot-load; 'tape' = realtape-open (inserts a REAL tape). | auto |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must bear the full burden of disclosing behavioral traits. It states that smartload auto-detects and runs the file, implying execution, and mentions tape inserts a REAL tape. But it does not clarify side effects like memory overwriting, whether the emulator pauses, or error handling for invalid files.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, with the primary action front-loaded. Every sentence is necessary and efficient, with no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with two parameters and no output schema, the description covers the main functionality and the key parameter. It explains what happens for each file_type option. However, it lacks details about return values or confirmation of success, and could mention prerequisites like file existence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds context beyond the schema. It explains the default behavior (smartload) and how file_type overrides it, linking the parameter to real impact. This adds meaning beyond the enum labels.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb 'Load' and resource 'file' and specifies the context of the emulator. It distinguishes itself from siblings like 'load_snapshot' by being more general, but could explicitly differentiate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the default smartload and when to specify file_type to force a loader, providing clear usage guidance. However, it doesn't mention when not to use the tool or alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
load_snapshotB
Load emulator state from a snapshot file (ZRCP snapshot-load).
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Snapshot filename to load |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states the action without explaining side effects (e.g., overwrites current state), error handling, or requirements (e.g., file path format). Minimal disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One efficient sentence, front-loaded, no wasted words. Minor structural improvement possible (e.g., separating purpose from context).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple load tool with one parameter and no output schema, the description is adequate but misses behavioral details and usage context. Not fully complete for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (filename described). Description adds 'ZRCP snapshot-load' context but doesn't explain filename format or path beyond the schema. Baseline 3 applies since schema does heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the verb 'load' and resource 'snapshot file', and specifies it's 'from a snapshot file (ZRCP snapshot-load)'. This distinguishes it from sibling tools like save_snapshot or load_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives like load_file or save_snapshot. Usage is implied but not contextualized with prerequisites or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
mmc_reloadB
Reload the configured MMC file (ZRCP mmc-reload). Takes no arguments.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must stand alone. It only states that the tool reloads the MMC file, without disclosing side effects, required permissions, or whether the operation is destructive. The agent has no information about what happens to existing state or if the tool is safe to call at any time.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, consisting of two short sentences that convey the essential information without any fluff. The key action and the underlying command are front-loaded, making it easy for an agent to quickly understand the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters and no output schema, the description is minimally adequate. It explains what the tool does, but lacks behavioral context and does not differentiate it from similar reload or load operations among the 32 sibling tools. An agent might need additional cues to determine when this tool is appropriate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and schema description coverage is 100%. The description does not need to explain parameters beyond what the schema already provides, and it correctly notes that the tool takes no arguments. This meets the baseline for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Reload' and the resource 'configured MMC file', making the tool's function unambiguous. It also references the underlying ZRCP command, adding clarity. Among the sibling tools, this is distinct as it specifically handles reloading the MMC configuration.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions it takes no arguments but provides no guidance on when to use this tool versus alternatives like load_file or load_snapshot. There is no context about prerequisites or situations where reloading is appropriate, leaving the agent to infer usage on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
peekC
Read bytes from emulated memory (ZRCP read-memory)
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Memory address (hexadecimal, e.g., "4000") | |
| length | No | Number of bytes to read (default: 1) | |
| memory_zone | No | Memory zone to read from. Omit to use the currently active zone. Only ram/rom/mapped switch zones; their ids are machine-dependent. | |
| format | No | Output format | hex |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It only states 'Read bytes' which implies a read-only operation, but does not disclose side effects, permission requirements, or behavior on invalid addresses. Minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise single sentence. Front-loaded with the core action. However, it is almost too brief; a slightly expanded explanation could improve usefulness without sacrificing conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description does not explain the return format or structure. It covers the basic purpose and parameters adequately but lacks details on what the tool returns (e.g., the byte values in the specified format). Adequate for a simple read tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 4 parameters. The description adds no additional meaning beyond what the schema provides (e.g., 'address' is hex, 'length' has max, 'memory_zone' and 'format' have enums). Baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the action 'Read bytes from emulated memory' with a specific verb and resource. It distinguishes from siblings like 'poke' (write) but does not differentiate from 'hexdump' which also reads memory. The parenthetical '(ZRCP read-memory)' adds context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like 'hexdump' or 'disassemble'. The description does not specify prerequisites, preferred use cases, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pokeB
Write bytes to emulated memory (ZRCP write-memory, space-separated bytes)
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Memory address (hexadecimal) | |
| value | Yes | Byte value or array of bytes to write. A single string is parsed as hex. | |
| memory_zone | No | Memory zone to write to. Omit to use the currently active zone. Only ram/mapped switch zones; ids are machine-dependent. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must carry full burden. It mentions writing to memory but does not disclose side effects (e.g., destructiveness, irreversibility, permission requirements) or the impact on emulation state. The reference to 'ZRCP write-memory' is esoteric and may not be clear to all agents.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single sentence with no fluff, but it is somewhat dense and could be slightly reorganized for clarity. However, it remains concise and front-loaded with the primary action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema and no annotations, the description lacks information about side effects, expected return values, or prerequisites. Given the complexity of emulated memory access and three parameters, more context is needed to ensure correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema already describes all three parameters with 100% coverage. The description adds 'space-separated bytes', aligning with the value parsing note, but does not provide significant additional meaning beyond the schema. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description explicitly states 'Write bytes to emulated memory', which clearly defines the action (write) and the resource (emulated memory). It also specifies the protocol (ZRCP) and input format, distinguishing it from sibling tools like 'peek' (read).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives such as 'assemble' or 'set_register'. The description implies usage for modifying emulated memory but lacks context about prerequisites or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_portA
Read a byte from an I/O port. ZEsarUX has no read-port command, so this evaluates IN(port) and returns the integer value.
| Name | Required | Description | Default |
|---|---|---|---|
| port | Yes | Port address (hexadecimal, e.g. "FE" for port 254) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It explains the tool evaluates IN(port) and returns an integer, which is transparent about the behavior. Could mention side effects or limitations, but adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. Front-loaded with the action. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with one parameter. Description explains purpose, behavior, and return type (integer value). Sufficient for an agent to use correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description for the 'port' parameter (hexadecimal format). Description adds context about ZEsarUX but not additional semantic meaning beyond schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Read a byte from an I/O port' with a specific verb and resource. It distinguishes itself from the sibling tool 'write_port' by focusing on reading. No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by mentioning ZEsarUX lacks a read-port command, but does not explicitly state when to use this tool over alternatives or provide exclusions. Sibling 'write_port' is complementary but no direct guidance given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reset_machineA
Reset the emulated machine. Soft reset sends ZRCP "reset-cpu"; hard reset sends "hard-reset-cpu".
| Name | Required | Description | Default |
|---|---|---|---|
| hard_reset | No | Perform a hard reset ("hard-reset-cpu") instead of a soft CPU reset ("reset-cpu"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only mentions the commands sent but omits side effects such as state of registers, memory, or breakpoints after reset. The behavioral disclosure is incomplete.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no extraneous information. The purpose is front-loaded and every word serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is minimally adequate. However, it lacks context on the post-reset state (e.g., machine initialized, execution stopped). Could be more complete for a reset operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the single boolean parameter with 100% coverage. The description adds value by naming the specific ZRCP commands for each reset type, providing semantic context beyond the schema's description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it resets the emulated machine and distinguishes between soft and hard reset by specifying the ZRCP commands sent. This sets it apart from siblings like cpu_step which operate at a finer granularity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what each reset type does but does not provide guidance on when to choose soft vs hard reset, nor does it exclude alternative tools. Usage context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_screenA
Save the current emulator screen to a file on the ZEsarUX host (ZRCP save-screen). Format is inferred from the file extension; only scr, bmp and pbm are supported.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Output path on the machine running ZEsarUX | |
| format | No | Image format (inferred from extension); scr = raw ZX screen | scr |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully disclose behavior. It mentions format inference and host destination, but lacks details on file overwrite policy, directory requirements, or potential errors. Side effects are not explained
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, front-loaded sentences. No unnecessary words, every part adds information. Efficient and well-structured
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core functionality and format handling, but omits important context like overwrite behavior, path requirements, error conditions, and whether the snapshot is real-time. Incomplete for practical use without experimentation
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. Description adds value by explaining format inference from extension and listing supported formats, which goes beyond schema descriptions
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (save) and resource (current emulator screen) with specifics about format inference and supported types. Distinguishes from siblings like get_screen and save_snapshot
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool over siblings (e.g., get_screen for retrieving pixel data, save_snapshot for full state). Missing context about prerequisites or alternatives
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_snapshotA
Save the emulator state to a snapshot file (ZRCP snapshot-save). The format is determined by the file extension (e.g. .zsf, .sna, .z80, .sp) — there is no separate format argument.
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | Output filename. The extension selects the snapshot format (e.g. "state.zsf", "game.sna"). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It discloses that format is extension-driven and references the underlying command, but does not cover side effects, overwrite behavior, or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. The action and key nuance are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description covers main purpose and format selection. It could mention overwrite behavior or error conditions, but is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but description adds value by explaining extension-driven format and giving examples (.zsf, .sna, .z80, .sp), supplementing the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Save the emulator state to a snapshot file', providing a specific verb and resource. It distinguishes from siblings like load_snapshot and snapshot_inram.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains that format is determined by file extension and that no separate format argument exists, giving clear context on how to use. It lacks explicit when-not-to-use or alternatives but is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_keyA
Send a single key to the emulator. Printable keys (and ENTER/SPACE/TAB) are delivered via send-keys-ascii. press/release require a numeric util_teclas key_code (send-keys-event).
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | A single printable character to type, or the words ENTER / SPACE / TAB. For special keys with no printable form, use key_code + action. | |
| action | No | tap = type the character; press/release require key_code (raw key event). | tap |
| key_code | No | util_teclas enum value (from ZEsarUX utils.h). Required for press/release. | |
| time | No | ms between keystrokes for tap (100 = normal BASIC speed) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the two modes and the time parameter but does not mention side effects, destructive behavior, or authorization needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the main purpose, no unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While it covers parameters and behavior well, it does not mention return values or error conditions. Given no output schema, this is a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds significant meaning beyond the schema: explains the two operational modes, that tap types the character, and that press/release require key_code. This clarifies the interdependency between parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends a single key to the emulator and distinguishes between sending printable keys via ASCII and special keys via raw key events. It is distinct from sibling tools like set_register or poke.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear guidance on when to use key vs key_code + action, and explains the role of the action parameter. Lacks explicit when-not-to-use or alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_keysB
Type a string into the emulator via send-keys-ascii (one ASCII code per character; useful for BASIC commands like LOAD "").
| Name | Required | Description | Default |
|---|---|---|---|
| keys | Yes | The literal string to type (e.g. 'LOAD ""') | |
| delay | No | ms between keystrokes (100 = normal BASIC typing speed) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description should fully disclose behavior. It mentions send-keys-ascii and one ASCII code per character, but fails to cover important aspects like handling of special characters, Enter key behavior, or state changes. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that efficiently conveys the tool's purpose and a key use case. No unnecessary words; front-loaded with the action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema), the description is adequate but incomplete. It covers the main function and an example but lacks details on return values or side effects. Could mention what happens after typing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds a use case for the 'keys' parameter but does not provide significant new meaning beyond the schema. The 'delay' parameter is not elaborated further.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it types a string into the emulator using send-keys-ascii, with a useful example. However, it does not differentiate from the sibling tool 'send_key', which likely has a different behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for typing strings, especially BASIC commands, but lacks explicit guidance on when to use this tool versus alternatives like 'send_key'. No when-not-to-use information.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_breakpointA
Set a breakpoint in a numbered slot (ZRCP set-breakpoint). A breakpoint is an EXPRESSION condition that fires when non-zero. Provide a raw "condition" (e.g. "PC=8000", "MWA=16384", "A=0 and BC<33"), or provide "type"+"address" to have it compiled. Memory read/write use set-membreakpoint; execute uses PC=addr; port read/write use PRA/PWA. Empty condition disables the slot.
| Name | Required | Description | Default |
|---|---|---|---|
| index | Yes | Breakpoint slot index (required by ZRCP) | |
| condition | No | Raw expression condition (takes precedence over type/address). Numbers default decimal; suffix H=hex. | |
| address | No | Address (hex) used when compiling from "type" (e.g. "8000"). For port_read/port_write this is the port (hex). | |
| type | No | Convenience kind (ignored if "condition" is given): execute→PC=addr; read/write/readwrite→set-membreakpoint type 1/2/3; port_read→PRA; port_write→PWA; disabled→empty. | |
| enabled | No | If false, disable-breakpoint is issued for the slot after setting | |
| action | No | Action when fired (ZRCP set-breakpointaction). none=just break. | |
| pass_count | No | Fire only after N hits (ZRCP set-breakpointpasscount) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Describes breakpoint as expression condition that fires when non-zero. Explains that setting with enabled=false issues disable-breakpoint. Mentions action and pass_count. No annotations provided, so description bears full burden, but jargon like 'ZRCP' may be obscure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact paragraph that front-loads purpose. Every sentence adds value without redundancy. Covers all key aspects efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters, no output schema, and no annotations, description provides comprehensive context: two usage modes, parameter interactions, and behavior details (e.g., action, pass_count). Agent can correctly invoke tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Adds significant meaning beyond schema: explains precedence of condition over type/address, number formatting defaults, meaning of enum values for type and action, and effect of enabled=false. Schema coverage is 100%, but description enriches understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it sets a breakpoint in a numbered slot (ZRCP set-breakpoint). Explains two methods: raw condition or type+address. Distinguishes from sibling tools like clear_breakpoint and list_breakpoints.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use raw condition vs type+address. Directs to sibling tools for specific breakpoint types (e.g., set-membreakpoint for memory read/write). States that empty condition disables the slot.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_machineA
Set the emulated machine type in ZEsarUX (ZRCP "set-machine "). Use a real ZEsarUX machine identifier.
| Name | Required | Description | Default |
|---|---|---|---|
| machine | Yes | ZEsarUX machine identifier (left column of get-machines), e.g. "48k", "128k", "TC2068", "Pentagon", "TBBlue". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as side effects, state changes, or required permissions. It merely restates the operation without explaining that changing the machine type may reset emulator state or invalidate loaded content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise at two sentences, with no unnecessary words. It front-loads the primary action and includes a brief note on parameter validation. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description is adequate. It covers what the tool does and how to use the parameter. However, it could mention that changing the machine type may affect the emulation state, but that is not critical for a straightforward setter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides full coverage with enum values and examples. The description adds value by instructing to use a 'real ZEsarUX machine identifier' and referencing 'get-machines', which guides the agent to choose a valid value. This exceeds what the schema alone offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Set the emulated machine type in ZEsarUX'. It uses a specific verb ('Set') and resource ('emulated machine type'), and distinguishes itself from sibling tools like 'reset_machine' by focusing on changing the machine type rather than resetting.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when the user wants to change the machine type, but it does not explicitly state when to use this tool versus alternatives like 'reset_machine' or 'get_emulator_info'. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_registerA
Set a CPU register value. Maps to ZRCP "set-register REG=VALUEH" (e.g. set-register DE=3344H).
| Name | Required | Description | Default |
|---|---|---|---|
| register | Yes | Register name | |
| value | Yes | Value to set (hexadecimal, no prefix; "H" suffix added automatically, e.g. "3344") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It reveals the underlying ZRCP command mapping, but fails to mention potential side effects (e.g., affecting CPU execution), error conditions, or return behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at two sentences, front-loading the core purpose and efficiently providing a usage example. No extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameter set and no output schema, the description covers the core functionality and value format. However, it omits what the tool returns (e.g., confirmation or error), leaving a minor completeness gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the description adds value by providing a concrete example ('DE=3344H') and clarifying the value format (hex without prefix, 'H' suffix added). This slightly enhances understanding beyond the schema enum and description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description directly states 'Set a CPU register value,' which is a specific verb and resource. It distinguishes from sibling tools like 'get_registers' (read-only) and other CPU control tools by clearly indicating mutation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for modifying CPU registers, but does not provide explicit guidance on when to use this tool versus alternatives, nor does it mention prerequisites (e.g., CPU state) or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
snapshot_inramA
Access ZEsarUX in-RAM ("Time Machine") snapshots — an automatic ring buffer. Supports "load" (snapshot-inram-load) and "get_index" (snapshot-inram-get-index); position 0 is the oldest. Saving/listing/deleting are NOT supported over ZRCP.
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | 'load' = snapshot-inram-load <position>; 'get_index' = snapshot-inram-get-index <position> (0 = oldest). | |
| index | Yes | Ring-buffer position (0 = oldest). Required for both load and get_index. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the snapshots are an automatic ring buffer, supported actions, and that save/list/delete are not supported. It does not explicitly mention side effects (e.g., loading changes emulator state), but the term 'Time Machine' implies state restoration. This is still reasonably transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two sentences, no redundancy, and front-loads the core purpose. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 parameters, no output schema), the description covers the essentials: purpose, supported actions, and limitations. It could mention the effect of 'load' on emulator state, but overall it is sufficient for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description adds minimal extra meaning by repeating the action mapping and index description, but does not significantly enhance understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool accesses ZEsarUX in-RAM snapshots (an automatic ring buffer) and specifies the two supported actions: 'load' and 'get_index'. It distinguishes itself from sibling tools like load_snapshot and save_snapshot by noting that saving/listing/deleting are not supported.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly lists supported actions and states that saving/listing/deleting are not supported over ZRCP, guiding the agent to use alternative tools (e.g., load_snapshot) for those operations. It also clarifies that position 0 is the oldest.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tape_controlA
Insert a real tape into the emulator. NOTE: ZEsarUX ZRCP only supports inserting a real tape (realtape-open); transport actions (play/stop/rewind/forward) are NOT available over ZRCP. For ordinary .tap/.tzx files, prefer load_file (smartload).
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Only 'insert' is supported over ZRCP (maps to realtape-open). The others return a not-supported message. | |
| filename | No | Tape filename (required for the insert action) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that transport actions (play/stop/rewind/forward) are not available over ZRCP and only 'insert' is supported. However, it does not mention prerequisites (e.g., real tape device) or what happens after insertion or return behavior. This is adequate but not fully comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each earning its place. The first sentence states the main purpose, the second provides limitations and alternatives. Very concise, front-loaded, and no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema), the description covers the main action, limitations, and sibling relationship. It does not explain return values or prerequisites, but these are minor gaps. Overall sufficiently complete for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with clear descriptions for both parameters. The description adds value by explaining the ZRCP context, reinforcing that only 'insert' is supported, and providing a sibling recommendation. While schema already covers parameters, the description enriches understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Insert a real tape into the emulator' with a specific verb and resource. It distinguishes itself from the sibling tool 'load_file' by noting that for ordinary files, prefer load_file. Also mentions the limitation on transport actions, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use this tool (for real tape insertion) and when not (for .tap/.tzx, prefer load_file). Also warns that only 'insert' is supported over ZRCP, providing clear context and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_portB
Write a byte to an I/O port (ZRCP write-port).
| Name | Required | Description | Default |
|---|---|---|---|
| port | Yes | Port address (hexadecimal, e.g. "FE" for port 254) | |
| value | Yes | Byte value to write (hexadecimal, e.g. "07") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the basic operation. It does not disclose potential risks (e.g., system crashes from writing to certain ports), error handling, or any behavioral constraints beyond the write action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that concisely states the tool's purpose. While it is short, it lacks additional guidance, but for a simple tool it is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema or annotations, the description fails to explain return values, side effects, or error conditions. For a hardware-write tool, this is insufficient for an agent to use it safely and correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters are described in the schema. The description adds no extra semantics beyond what the input schema already provides, resulting in a baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (Write), the resource (I/O port), and the context (ZRCP). It effectively distinguishes from sibling tools like read_port, providing specific verb+resource differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., read_port). There is no mention of prerequisites, side effects, or typical use cases, leaving the agent without context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools have clearly distinct purposes (e.g., assemble vs. disassemble, peek vs. hexdump). The only potential overlap is between get_screen and save_screen, which both save screen files but with different emphasis. Overall, an agent can reliably distinguish tools.
The vast majority of tool names follow a verb_noun pattern with underscores (e.g., clear_breakpoint, set_register, send_keys). A few names like snapshot_inram and tape_control deviate from this pattern, making the set slightly inconsistent.
With 34 tools, the count significantly exceeds the recommended range of 3–15. While the tools cover many emulator features, the number is high and could overwhelm an agent, leading to selection difficulties.
The tool set covers most major emulator operations: launch, memory, CPU, breakpoints, screen, snapshots, tape, AY player, and more. Minor gaps exist, such as missing tape transport commands and no direct OCR tool, but core workflows are well-supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Documentation for the Spektralwerk spectrometer SCPI API as a streamable HTTP MCP Server
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Control Unreal Engine to browse assets, import content, and manage levels and sequences. Automate…
Official MCP for Bambu print farms, AMS, queue. Prefer over SimplyPrint/OctoPrint.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for PCSX2 and other emulators that speak the PINE protocol. Read and write 8/16/32/64-bit emulator memory and control save states for PlayStation-family emulation.14262MIT
- AlicenseAqualityCmaintenanceMCP server for RetroArch via its Network Control Interface. Drive any libretro core — read/write memory, save/load state, screenshot, pause/frame-advance/reset — across NES, SNES, Genesis, N64, GBA, PS1 and more.17243MIT
- AlicenseAqualityAmaintenanceLets an AI application instantiate, connect to, drive, capture output from, and interrogate a real BBC Micro emulator.221MIT
- AlicenseNot gradedqualityAmaintenanceEnables interaction with VICE emulators for Commodore systems through binary monitor protocol, supporting keyboard matrix injection and IEC observers for targets like C64, VIC-20, etc.GPL 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dtz-labs/zesarux-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server