Skip to main content
Glama
simen

VICE C64 Emulator MCP Server

by simen

vice-mcp

A Model Context Protocol (MCP) server for autonomous C64 debugging via the VICE emulator.

What is this?

vice-mcp bridges AI agents to the VICE Commodore 64 emulator, enabling autonomous debugging of 6502 assembly programs. Unlike raw protocol wrappers, it provides a semantic layer that interprets C64-specific data structures and returns meaningful, actionable information.

Why this exists:

  • AI agents need more than hex dumps—they need interpreted data with context

  • Debugging C64 code requires understanding VIC-II banks, PETSCII encoding, sprite pointers, and memory layouts

  • Every response includes hints suggesting next steps and related tools

Key differentiators:

  • Semantic output: readScreen returns text, not screen codes. readVicState explains graphics modes, not register bits.

  • Actionable hints: Every response suggests what to do next

  • Cross-references: Tools point to related tools for common workflows

  • Agent-friendly errors: Clear error codes and recovery suggestions

Related MCP server: C64 Debug MCP

Prerequisites

  • Node.js 18 or later

  • VICE emulator with binary monitor enabled

Starting VICE with Binary Monitor

# x64sc is the accurate C64 emulator (recommended)
x64sc -binarymonitor -binarymonitoraddress ip4://127.0.0.1:6502

# Or with x64 (faster, less accurate)
x64 -binarymonitor -binarymonitoraddress ip4://127.0.0.1:6502

The binary monitor listens on port 6502 by default.

Installation

From npm (when published)

npx @simen/vice-mcp

From GitHub

npx github:simen/vice-mcp

Local Development

git clone https://github.com/simen/vice-mcp.git
cd vice-mcp
npm install
npm run build
npm start

Claude Code Installation

The quickest way to get started with Claude Code:

1. Start VICE with binary monitor:

x64sc -binarymonitor -binarymonitoraddress ip4://127.0.0.1:6502

2. Add the MCP server:

claude mcp add vice-mcp -- npx github:simen/vice-mcp

3. Restart Claude Code to load the new MCP server.

That's it! You can now ask Claude Code to debug your C64 programs.

Manual Configuration

Alternatively, add to ~/.claude/claude_desktop_config.json:

{
  "mcpServers": {
    "vice-mcp": {
      "command": "npx",
      "args": ["github:simen/vice-mcp"]
    }
  }
}

Configuration

Add to your MCP client configuration (e.g., Claude Desktop, Cursor, or custom agent):

{
  "mcpServers": {
    "vice": {
      "command": "npx",
      "args": ["@simen/vice-mcp"]
    }
  }
}

Or for local development:

{
  "mcpServers": {
    "vice": {
      "command": "node",
      "args": ["/path/to/vice-mcp/dist/index.js"]
    }
  }
}

Tool Reference

Connection & Status

Tool

Description

connect

Connect to VICE (default: 127.0.0.1:6502)

disconnect

Disconnect from VICE

status

Get connection state and emulation status

Memory Operations

Tool

Description

readMemory

Read raw bytes with hex dump and ASCII

writeMemory

Write bytes to memory

CPU & Execution

Tool

Description

getRegisters

Get A, X, Y, SP, PC, and flags (interpreted)

step

Single-step execution (with step-over option)

continue

Resume execution

reset

Soft or hard reset

runTo

Run until specific address (temporary breakpoint)

disassemble

Disassemble 6502 code with KERNAL labels

Breakpoints & Watchpoints

Tool

Description

setBreakpoint

Set execution breakpoint

deleteBreakpoint

Remove breakpoint or watchpoint

listBreakpoints

List all breakpoints

toggleBreakpoint

Enable/disable breakpoint

setWatchpoint

Set memory read/write watchpoint

listWatchpoints

List all watchpoints

Semantic Layer (Interpreted C64 Data)

Tool

Description

readScreen

Get screen as text (PETSCII decoded) with summary mode

readColorRam

Get color RAM with color names and usage stats

readVicState

Full VIC-II state: graphics mode, colors, banks, sprites

readSprites

All 8 sprites: position, visibility, colors, pointers

Visual Feedback

Tool

Description

screenshot

Capture display buffer with palette

renderScreen

ASCII art rendering of display

State Management

Tool

Description

saveSnapshot

Save complete machine state to file

loadSnapshot

Load machine state from file

loadProgram

Load and optionally run PRG/D64/T64 files

Example Usage

Basic Debugging Session

1. connect()                    → Establish connection
2. loadProgram("game.prg")      → Load the program
3. setBreakpoint(0x0810)        → Break at main loop
4. continue()                   → Run until breakpoint
5. getRegisters()               → Check CPU state
6. readScreen()                 → See what's on screen
7. step(count: 5)               → Execute 5 instructions
8. disassemble()                → See code at current PC

Debugging Sprite Issues

1. readVicState()               → Check sprite enable bits
2. readSprites(enabledOnly: true) → Get enabled sprite details
   → Response includes visibility check and position analysis
3. If sprite not visible, hint tells you why (off-screen, wrong bank, etc.)

Memory Watchpoint Workflow

1. setWatchpoint(startAddress: 0x0400, type: "store")
   → Watch for writes to screen RAM
2. continue()
   → Execution stops when something writes to screen
3. getRegisters()
   → See PC to find the code that wrote
4. disassemble()
   → Understand what the code is doing

State Checkpoint Pattern

1. saveSnapshot("before-test.vsf")  → Save state
2. [Make changes, test things]
3. loadSnapshot("before-test.vsf")  → Restore to known state

Response Format

All responses include:

  • Structured data with value and hex representations

  • _meta block with connection state

  • hint field with contextual next steps

Example getRegisters response:

{
  "a": { "value": 65, "hex": "$41" },
  "x": { "value": 0, "hex": "$00" },
  "y": { "value": 0, "hex": "$00" },
  "sp": { "value": 243, "hex": "$f3", "stackTop": "$01f3" },
  "pc": { "value": 2049, "hex": "$0801" },
  "flags": {
    "negative": false,
    "overflow": false,
    "zero": false,
    "carry": false,
    "string": "nv-bdizc"
  },
  "hint": "CPU state looks normal",
  "_meta": {
    "connected": true,
    "running": false,
    "host": "127.0.0.1",
    "port": 6502
  }
}

Architecture Overview

┌─────────────────────────────────────────────────────────┐
│                    MCP Client (Agent)                    │
└─────────────────────────────────────────────────────────┘
                            │
                            │ MCP Protocol (stdio)
                            ▼
┌─────────────────────────────────────────────────────────┐
│                     src/index.ts                         │
│                    (MCP Server)                          │
│  ┌─────────────────────────────────────────────────┐    │
│  │              Tool Handlers (24 tools)            │    │
│  │  • Connection: connect, disconnect, status       │    │
│  │  • Memory: readMemory, writeMemory              │    │
│  │  • CPU: getRegisters, step, continue, reset     │    │
│  │  • Breakpoints: set, delete, list, toggle       │    │
│  │  • Watchpoints: set, list                       │    │
│  │  • Semantic: readScreen, readVicState, etc.     │    │
│  │  • Visual: screenshot, renderScreen            │    │
│  │  • State: saveSnapshot, loadSnapshot, loadPrg   │    │
│  └─────────────────────────────────────────────────┘    │
└─────────────────────────────────────────────────────────┘
                            │
                            │ Uses
                            ▼
┌─────────────────────────────────────────────────────────┐
│                 src/protocol/client.ts                   │
│                    (ViceClient)                          │
│  • TCP socket connection to VICE                        │
│  • Binary protocol encoding/decoding                    │
│  • Request/response correlation                         │
│  • Checkpoint (breakpoint/watchpoint) tracking          │
└─────────────────────────────────────────────────────────┘
                            │
                            │ TCP Socket
                            ▼
┌─────────────────────────────────────────────────────────┐
│                 VICE Binary Monitor                      │
│                   (Port 6502)                            │
└─────────────────────────────────────────────────────────┘

Key Files

File

Purpose

src/index.ts

MCP server, tool definitions, semantic layer

src/protocol/client.ts

VICE binary monitor client

src/protocol/types.ts

Protocol constants and types

src/utils/c64.ts

C64 utilities (PETSCII, colors, VIC banks)

src/utils/disasm.ts

6502 disassembler with all addressing modes

Design Principles

  1. Semantic over raw: Return interpreted data, not just bytes

  2. Hints everywhere: Every response suggests next actions

  3. Cross-references: Tools reference related tools

  4. Fail informatively: Errors explain what went wrong and how to fix it

  5. Agent-first: Designed for autonomous operation, not human CLI use

Protocol Reference

vice-mcp implements the VICE Binary Monitor Protocol. Key commands used:

Code

Command

Purpose

0x01

MemoryGet

Read memory

0x02

MemorySet

Write memory

0x12

CheckpointSet

Create breakpoint/watchpoint

0x13

CheckpointDelete

Remove checkpoint

0x15

CheckpointToggle

Enable/disable checkpoint

0x31

RegistersGet

Read CPU registers

0x41

Dump

Save snapshot

0x42

Undump

Load snapshot

0x81

Continue

Resume execution

0x82

Step

Single-step

0x84

DisplayGet

Capture screen

0x91

PaletteGet

Get color palette

0xdd

AutoStart

Load and run program

License

MIT

Available Tools

26 tools
connectA

Connect to a running VICE emulator instance via the binary monitor protocol.

VICE must be started with the binary monitor enabled: x64sc -binarymonitor -binarymonitoraddress ip4://127.0.0.1:6502

Default connection: 127.0.0.1:6502

Use this first before any debugging operations. Connection persists until disconnect() is called or VICE closes.

Related tools: status, disconnect

ParametersJSON Schema
NameRequiredDescriptionDefault
hostNoVICE host address (default: 127.0.0.1)
portNoVICE binary monitor port (default: 6502)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and discloses key behavioral traits: it explains connection persistence ('Connection persists until disconnect() is called or VICE closes'), default settings, and prerequisites for VICE configuration. It doesn't cover error handling or rate limits, but adds substantial context beyond basic function.

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

Conciseness5/5

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

Front-loaded with the core purpose in the first sentence, followed by essential details in bullet-like clarity. Every sentence earns its place: prerequisites, defaults, usage timing, persistence, and related tools. No wasted words, well-structured for quick comprehension.

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

Completeness4/5

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

Given no annotations and no output schema, the description provides good context for a connection tool: purpose, prerequisites, defaults, persistence, and related tools. It doesn't explain return values or error cases, but covers enough for basic usage in this debugging context, leaving some gaps for a complex operation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters with descriptions and constraints. The description adds minimal value beyond the schema by mentioning default connection ('Default connection: 127.0.0.1:6502'), which aligns with schema defaults. Baseline 3 is appropriate as the schema does most of the work.

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

Purpose5/5

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

The description clearly states the specific action ('Connect to a running VICE emulator instance') and resource ('via the binary monitor protocol'), distinguishing it from siblings like 'disconnect' or 'status' by explicitly mentioning it's the first step before debugging operations. It avoids tautology by explaining what connection means in this context.

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

Usage Guidelines5/5

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

Explicitly states when to use ('Use this first before any debugging operations') and when not to use (implies after connection is established, use other tools). It names related tools ('status, disconnect') and specifies prerequisites ('VICE must be started with the binary monitor enabled'), providing clear alternatives and context.

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

continueA

Resume C64 execution after a breakpoint or pause.

Starts the emulator running until the next breakpoint, manual stop, or error.

Related tools: step, status, setBreakpoint

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the tool's behavior ('starts the emulator running until the next breakpoint, manual stop, or error'), which covers execution flow and termination conditions. However, it doesn't mention potential side effects like memory changes or performance implications, leaving some gaps.

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

Conciseness5/5

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

The description is front-loaded with the core purpose in the first sentence, followed by behavioral details and related tools. Each sentence adds value without redundancy, and the structure is efficient with no wasted words.

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

Completeness4/5

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

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is largely complete for its purpose. It explains what the tool does, when to use it, and related tools. However, without annotations or output schema, it could benefit from more details on return values or error conditions, slightly reducing completeness.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so no parameter information is needed. The description appropriately doesn't discuss parameters, earning a baseline score of 4 for not adding unnecessary details beyond the schema.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('resume', 'starts') and identifies the resource ('C64 execution'). It distinguishes from siblings by specifying it's for continuing after a breakpoint or pause, unlike tools like 'step' (single-step) or 'reset' (restart).

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool ('after a breakpoint or pause') and lists related alternatives ('step, status, setBreakpoint'), providing clear guidance on context and sibling differentiation without misleading information.

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

deleteBreakpointA

Delete a breakpoint by its ID.

Use listBreakpoints to see current breakpoint IDs.

Related tools: setBreakpoint, listBreakpoints

ParametersJSON Schema
NameRequiredDescriptionDefault
breakpointIdYesBreakpoint ID from setBreakpoint

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that this is a destructive operation ('Delete'), but lacks details on permissions, side effects, error handling, or confirmation requirements. For a mutation tool with zero annotation coverage, this leaves significant behavioral gaps.

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

Conciseness5/5

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

The description is highly concise and well-structured, with three sentences that each serve a distinct purpose: stating the action, providing usage prerequisites, and listing related tools. There is no wasted text, and information is front-loaded effectively.

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

Completeness4/5

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

Given the tool's complexity (simple deletion with one parameter) and the lack of annotations or output schema, the description is reasonably complete. It covers purpose, usage, and parameters adequately, though it could benefit from more behavioral details like error conditions or success indicators.

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

Parameters3/5

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

Schema description coverage is 100%, with the parameter 'breakpointId' fully documented in the schema. The description adds minimal value by referencing 'Breakpoint ID from setBreakpoint', which slightly clarifies the source but doesn't provide additional syntax or format details beyond the schema's description.

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

Purpose5/5

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

The description clearly states the specific action ('Delete') and resource ('a breakpoint by its ID'), distinguishing it from sibling tools like setBreakpoint, listBreakpoints, and toggleBreakpoint. It explicitly names the verb and target, leaving no ambiguity about its function.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('Delete a breakpoint by its ID') and when to use alternatives ('Use listBreakpoints to see current breakpoint IDs'), including naming related tools (setBreakpoint, listBreakpoints). This clearly defines the context and prerequisites for invocation.

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

disassembleA

Disassemble 6502 machine code at a memory address.

Returns human-readable assembly instructions with:

  • Address and raw bytes

  • Mnemonic and operand

  • Branch target addresses (for branch instructions)

  • Known KERNAL/BASIC labels

Options:

  • address: Start address (default: current PC)

  • count: Number of instructions (default: 10)

Related tools: readMemory, getRegisters, step

ParametersJSON Schema
NameRequiredDescriptionDefault
addressNoStart address (default: current PC)
countNoNumber of instructions to disassemble (default: 10)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes what the tool does (disassembles machine code), what it returns (human-readable assembly with specific details like addresses, bytes, mnemonics, branch targets, and labels), and default behaviors (address defaults to current PC, count defaults to 10). However, it doesn't mention potential limitations like error handling or performance constraints.

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

Conciseness5/5

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

The description is well-structured and appropriately sized, with a clear purpose statement upfront, detailed output format, parameter options, and related tools. Every sentence adds value without redundancy, making it efficient and easy to parse for an AI agent.

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

Completeness4/5

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

Given the tool's moderate complexity (2 parameters, no output schema, no annotations), the description is largely complete. It covers purpose, output details, parameters, defaults, and related tools. However, without an output schema, it could benefit from more specifics on the return structure (e.g., format of the human-readable instructions), though the listed output components provide good context.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters (address and count) with their descriptions, types, and constraints. The description repeats the default values and adds context about 'current PC' for address, but doesn't provide significant additional semantic meaning beyond what's in the schema. This meets the baseline for high schema coverage.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb ('disassemble') and resource ('6502 machine code at a memory address'), distinguishing it from siblings like readMemory or getRegisters. It explicitly mentions the output format (human-readable assembly instructions) and the specific processor architecture (6502), making the purpose unambiguous and distinct.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance by listing related tools (readMemory, getRegisters, step) and specifying when to use this tool (for disassembling code) versus alternatives (e.g., readMemory for raw bytes, getRegisters for CPU state). It also implies context by mentioning 'current PC' as a default, suggesting it's used in debugging scenarios.

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

disconnectA

Disconnect from the VICE emulator instance.

Cleanly closes the connection. Safe to call even if not connected.

Related tools: connect, status

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: it performs a clean closure operation and is idempotent ('Safe to call even if not connected'). However, it doesn't mention potential side effects like whether this affects other tools or if reconnection is needed afterward.

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

Conciseness5/5

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

Perfectly front-loaded with the core purpose in the first sentence, followed by important behavioral context, and ending with related tools. Every sentence earns its place with zero wasted words, making it highly efficient and easy to parse.

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

Completeness4/5

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

For a zero-parameter tool with no annotations or output schema, the description provides complete context about what the tool does, when to use it, and its safety characteristics. The only minor gap is not explicitly mentioning what happens after disconnection or if there are any prerequisites, but given the simplicity of the operation, this is sufficient.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so the baseline would be 4. The description appropriately doesn't add parameter information since none exist, maintaining focus on the tool's purpose and behavior without unnecessary details.

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

Purpose5/5

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

The description clearly states the specific action ('Disconnect from the VICE emulator instance') and distinguishes it from siblings by specifying it's for connection termination rather than other emulator operations like 'connect', 'status', or memory operations. It goes beyond just restating the name by explaining what disconnecting means.

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

Usage Guidelines5/5

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

Explicitly provides when to use ('Cleanly closes the connection') and when not to worry about using it ('Safe to call even if not connected'), plus explicitly names related alternatives ('connect, status'). This gives clear context for when this tool is appropriate versus other connection-related tools.

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

getRegistersA

Get current 6502/6510 CPU register state.

Returns all CPU registers with interpreted flags.

Registers:

  • A: Accumulator (arithmetic operations)

  • X, Y: Index registers (addressing, loops)

  • SP: Stack pointer ($100-$1FF range)

  • PC: Program counter (current instruction address)

  • Flags: N(egative), V(overflow), B(reak), D(ecimal), I(nterrupt), Z(ero), C(arry)

Use this to:

  • Check CPU state at breakpoints

  • Understand program flow

  • Debug crashes (check PC, SP)

Related tools: setRegister, step, continue, status

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden of behavioral disclosure. It clearly explains what the tool returns ('all CPU registers with interpreted flags'), provides detailed register explanations, and mentions debugging use cases. However, it doesn't specify if this is a read-only operation (though implied by 'Get'), potential performance impact, or error conditions.

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

Conciseness5/5

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

The description is well-structured and efficiently organized: purpose statement first, then detailed register explanations, followed by usage guidelines, and finally related tools. Every sentence adds value - no redundant or unnecessary information. The bulleted lists make the information easily scannable.

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

Completeness4/5

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

For a 0-parameter tool with no output schema, the description provides excellent context about what information is returned (detailed register explanations) and when to use it. It could be slightly more complete by explicitly stating this is a read-only operation and mentioning any limitations (e.g., only works when emulator is paused), but overall it's very comprehensive for this tool type.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, and instead focuses on explaining the return value structure (register details) which is valuable context for the agent.

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

Purpose5/5

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

The description clearly states the tool's purpose: 'Get current 6502/6510 CPU register state' with specific verb ('Get') and resource ('CPU register state'). It distinguishes from siblings like 'readMemory' or 'status' by focusing specifically on CPU registers rather than memory or general emulator status.

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

Usage Guidelines5/5

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

The description explicitly provides usage guidance with 'Use this to:' section listing three specific scenarios: checking CPU state at breakpoints, understanding program flow, and debugging crashes. It also mentions related tools (setRegister, step, continue, status) to help the agent understand alternatives and complementary operations.

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

listBreakpointsA

List all active breakpoints.

Shows breakpoint IDs, addresses, and status for all breakpoints set in this session.

Note: This tracks breakpoints set through this MCP session. Breakpoints set through VICE's built-in monitor may not appear.

Related tools: setBreakpoint, deleteBreakpoint

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses that the tool lists breakpoints (implying read-only behavior) and specifies scope (breakpoints set in this session vs. VICE's monitor). However, it doesn't mention potential side effects, error conditions, or response format details that would be helpful for an agent.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the core purpose. Each sentence adds value: the first states what it does, the second provides details on what's shown, the third clarifies scope limitations, and the fourth links to related tools. No wasted words.

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

Completeness3/5

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

Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is reasonably complete for a read-only listing operation. It covers purpose, scope, and related tools. However, without annotations or output schema, it could benefit from more detail on return format or error handling to be fully comprehensive.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so the schema fully documents the lack of parameters. The description appropriately doesn't discuss parameters, maintaining focus on the tool's purpose and behavior. A baseline of 4 is applied for zero-parameter tools.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verb ('List') and resource ('all active breakpoints'), and distinguishes it from siblings by specifying it shows breakpoints set in this MCP session. It explicitly mentions related tools (setBreakpoint, deleteBreakpoint) for context.

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

Usage Guidelines4/5

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

The description provides clear context on when to use this tool (to list breakpoints set in this session) and includes a note about limitations (breakpoints set through VICE's built-in monitor may not appear). However, it doesn't explicitly state when NOT to use it or compare it to all potential alternatives among siblings.

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

listWatchpointsA

List all active memory watchpoints.

Shows watchpoint IDs, address ranges, type (load/store), and status.

Related tools: setWatchpoint, deleteBreakpoint, listBreakpoints

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior3/5

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 describes what the tool returns (watchpoint details) but does not disclose behavioral traits such as permissions needed, rate limits, or whether it's a read-only operation. The description is informative but lacks critical operational context for a tool in a debugging environment.

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

Conciseness5/5

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

The description is front-loaded with the core purpose in the first sentence, followed by details and related tools. Every sentence adds value without waste, making it efficient and well-structured for quick understanding.

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

Completeness3/5

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

Given no annotations, no output schema, and low complexity (0 parameters), the description is adequate but incomplete. It explains what the tool does but lacks context on behavior, output format, or integration with sibling tools, which is important in a debugging toolset. It meets minimum viability but has clear gaps.

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

Parameters4/5

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

The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description does not add parameter information, which is appropriate, but it could have mentioned if there are any implicit parameters or constraints (e.g., session state). Baseline is 4 due to zero parameters.

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

Purpose5/5

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

The description clearly states the specific action ('List all active memory watchpoints') and resource ('memory watchpoints'), distinguishing it from sibling tools like listBreakpoints by specifying the type of breakpoint. It provides exact details about what information is shown (IDs, address ranges, type, status).

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

Usage Guidelines4/5

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

The description includes 'Related tools: setWatchpoint, deleteBreakpoint, listBreakpoints', which implies usage context by naming alternatives. However, it does not explicitly state when to use this tool versus those alternatives (e.g., for watchpoints vs. breakpoints), so it lacks explicit exclusions or detailed guidance.

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

loadProgramB

Load and optionally run a program file.

Supports PRG, D64, T64, and other C64 file formats. For disk images, can specify which file to run.

Options:

  • run: If true (default), starts execution after loading

  • fileIndex: For disk images, which file to load (0 = first)

Related tools: reset, status, setBreakpoint

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYesPath to the program file (PRG, D64, T64, etc.)
runNoRun after loading (default: true)
fileIndexNoFile index in disk image (default: 0)

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions that the tool 'Supports PRG, D64, T64, and other C64 file formats' and 'For disk images, can specify which file to run,' which adds some context. However, it fails to disclose critical behavioral traits such as whether loading overwrites existing memory, what happens on errors, or if there are rate limits or authentication needs. This leaves significant gaps for a mutation tool.

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

Conciseness4/5

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

The description is appropriately sized and front-loaded, starting with the core purpose. The bullet points for options are efficient, and the related tools section is concise. However, the inclusion of 'Related tools' could be seen as slightly extraneous if not integrated into usage guidelines, but overall, it remains well-structured with minimal waste.

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

Completeness2/5

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

Given the complexity of a tool that loads and runs programs (a mutation operation), the lack of annotations and output schema means the description should compensate more. It does not explain return values, error handling, or side effects (e.g., memory changes). While it covers basic functionality, it is incomplete for safe and effective use by an AI agent in this context.

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

Parameters3/5

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

The input schema has 100% description coverage, so the schema already documents all parameters (filename, run, fileIndex). The description adds minimal value beyond the schema by listing options in a bullet-point format but does not provide additional semantics, syntax, or format details. This meets the baseline score of 3 when schema coverage is high.

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

Purpose4/5

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

The description clearly states the tool's purpose: 'Load and optionally run a program file.' It specifies the verb ('load' and optionally 'run') and resource ('program file'), and mentions supported formats (PRG, D64, T64, etc.). However, it does not explicitly distinguish this tool from its siblings (e.g., 'loadSnapshot' or 'readMemory'), which would be needed for a score of 5.

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

Usage Guidelines3/5

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

The description provides implied usage guidance by listing 'Related tools: reset, status, setBreakpoint,' suggesting contexts where this tool might be used in conjunction with others. However, it lacks explicit instructions on when to use this tool versus alternatives (e.g., 'loadSnapshot' for saved states or 'readMemory' for direct memory access), and does not specify prerequisites or exclusions, keeping it at a moderate score.

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

loadSnapshotA

Load a previously saved machine state from a file.

Restores complete machine state including memory, registers, and peripheral states.

Warning: This completely replaces the current state!

Related tools: saveSnapshot

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYesFilename of the snapshot to load

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes key behavioral traits: it 'completely replaces the current state' (destructive nature), specifies what is restored ('memory, registers, and peripheral states'), and includes a warning about the impact. This covers critical aspects like mutability and scope without relying on structured hints.

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

Conciseness5/5

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

The description is front-loaded with the core purpose in the first sentence, followed by details on scope and a critical warning. Each sentence adds value: the first defines the action, the second specifies what is restored, and the third warns about replacement. There is no redundant or unnecessary information, making it efficiently structured.

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

Completeness4/5

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

Given the tool's complexity (destructive state restoration), no annotations, and no output schema, the description is largely complete: it explains the purpose, behavior, and usage context. However, it lacks details on error handling (e.g., what happens if the file is invalid) and does not describe the return value, which could be useful since there's no output schema. This minor gap prevents a perfect score.

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

Parameters4/5

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

The schema description coverage is 100%, with the parameter 'filename' documented in the schema as 'Filename of the snapshot to load'. The description adds minimal semantic value beyond this, as it does not elaborate on file formats, paths, or validation. However, with high schema coverage, the baseline is 3, and the description's mention of 'previously saved machine state' provides slight context, justifying a score above baseline.

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

Purpose5/5

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

The description clearly states the specific action ('Load a previously saved machine state from a file') and resource ('machine state'), distinguishing it from siblings like 'loadProgram' (which loads a program) and 'saveSnapshot' (which saves rather than loads). The verb 'load' is precise and the object 'machine state' is well-defined.

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

Usage Guidelines5/5

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

The description explicitly provides usage guidance by stating 'Related tools: saveSnapshot', indicating when to use this tool (to load a snapshot) versus its sibling (to save one). It also implies context for when to use it (when restoring a saved state) versus other tools like 'reset' or 'loadProgram'.

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

readColorRamA

Read color RAM ($D800-$DBE7) and return color values with names.

Color RAM determines the foreground color of each character on screen.

Returns:

  • 25x40 grid of color values (0-15) with names

  • Summary of colors used

Related tools: readScreen, readVicState

ParametersJSON Schema
NameRequiredDescriptionDefault
summaryNoReturn only color usage summary, not full grid (default: false)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by specifying the exact memory range, output format (25x40 grid with color names), and optional summary behavior. It clearly indicates this is a read-only operation and describes what information will be returned, though it doesn't mention potential limitations like performance impact or memory access constraints.

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

Conciseness5/5

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

The description is efficiently structured with clear sections: purpose statement, functional explanation, return format details, and related tools. Every sentence adds value without redundancy, and key information is front-loaded. The four sentences each serve distinct purposes with zero waste.

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

Completeness4/5

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

For a read operation with no annotations, 100% schema coverage, and no output schema, the description provides excellent coverage of purpose, behavior, and parameters. It explains what Color RAM is, what the tool reads, and what it returns. The main gap is lack of explicit output schema documentation, but the description compensates well by detailing the return format.

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

Parameters4/5

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

The schema has 100% description coverage for its single parameter, so the baseline is 3. The description adds value by explaining the default behavior ('default: false') and clarifying that when summary=true, it returns 'only color usage summary, not full grid,' which provides important semantic context beyond the schema's boolean type.

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

Purpose5/5

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

The description clearly states the specific action ('Read color RAM'), the resource location ('$D800-$DBE7'), and the output format ('return color values with names'). It distinguishes from sibling tools by mentioning related tools readScreen and readVicState, indicating this is specifically for color data rather than screen content or VIC chip state.

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

Usage Guidelines4/5

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

The description provides clear context by explaining what Color RAM does ('determines the foreground color of each character on screen') and lists related tools, giving implicit guidance on when this tool is appropriate. However, it doesn't explicitly state when to use this versus alternatives like readScreen or readVicState, nor does it provide exclusion criteria.

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

readMemoryA

Read memory from the C64's address space.

Returns raw bytes plus hex and ASCII representations.

C64 memory map highlights:

  • $0000-$00FF: Zero page (fast access, common variables)

  • $0100-$01FF: Stack

  • $0400-$07FF: Default screen RAM (1000 bytes)

  • $D000-$D3FF: VIC-II registers (graphics)

  • $D400-$D7FF: SID registers (sound)

  • $D800-$DBFF: Color RAM

For screen content, consider using readScreen instead for interpreted output. For sprite info, use readSprites for semantic data.

Related tools: writeMemory, readScreen, readSprites, readVicState

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesStart address (0x0000-0xFFFF)
lengthNoNumber of bytes to read (default: 256, max: 65536)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by explaining what the tool returns ('raw bytes plus hex and ASCII representations') and providing important context about the C64 memory map. However, it doesn't mention potential side effects, performance characteristics, or error conditions, leaving some behavioral aspects uncovered.

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

Conciseness5/5

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

The description is well-structured and appropriately sized. It starts with the core purpose, then explains the return format, provides valuable memory map context, gives usage guidance, and lists related tools. Every sentence adds value without redundancy.

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

Completeness4/5

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

For a read operation with no annotations and no output schema, the description does an excellent job providing context about the C64 memory architecture and return format. The memory map highlights are particularly valuable. However, without an output schema, more detail about the exact return structure would be helpful for completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents both parameters. The description doesn't add any parameter-specific information beyond what's in the schema. The memory map section provides context but doesn't directly explain parameter usage. Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verb ('Read memory') and resource ('from the C64's address space'), and distinguishes it from siblings by mentioning 'For screen content, consider using readScreen instead' and 'For sprite info, use readSprites'. The opening sentence is direct and unambiguous.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use alternatives: 'For screen content, consider using readScreen instead for interpreted output' and 'For sprite info, use readSprites for semantic data'. It also lists related tools at the end, giving clear context for tool selection.

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

readScreenA

Read the C64 screen memory and return it as interpreted text.

Converts PETSCII screen codes to readable ASCII. Returns 25 lines of 40 characters.

Use this instead of readMemory($0400) when you want to see what's displayed on screen.

Note: This reads from the current screen RAM location (may not be $0400 if the program moved it). In bitmap modes, the data won't represent text.

Options:

  • format: "full" (default) returns all 25 lines, "summary" returns only non-empty lines

  • includeRaw: Also return raw screen codes (default: false)

Related tools: readColorRam, readVicState, readMemory

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoOutput format: 'full' (all 25 lines) or 'summary' (non-empty lines only)
includeRawNoInclude raw screen codes array (default: false)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it explains the output format (25 lines of 40 characters), notes technical details (screen RAM location may vary, bitmap mode limitations), and describes optional parameters. However, it doesn't cover aspects like error handling or performance.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the core purpose, followed by usage guidance, notes, and parameter details. Every sentence adds value without redundancy, making it efficient and easy to parse.

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

Completeness4/5

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

Given the tool's moderate complexity, no annotations, and no output schema, the description is largely complete: it covers purpose, usage, behavioral notes, and parameters. However, it could benefit from more detail on output structure or error cases to be fully comprehensive.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents both parameters. The description adds minimal value by listing the options with brief explanations, but doesn't provide additional semantics beyond what's in the schema, warranting the baseline score of 3.

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

Purpose5/5

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

The description clearly states the specific action ('Read the C64 screen memory'), resource ('screen memory'), and transformation ('converts PETSCII screen codes to readable ASCII'), distinguishing it from siblings like readMemory by specifying its specialized purpose for screen display interpretation.

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

Usage Guidelines5/5

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

It explicitly states when to use this tool ('Use this instead of readMemory($0400) when you want to see what's displayed on screen') and provides context on limitations ('In bitmap modes, the data won't represent text'), with related tools listed for alternatives.

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

readSpritesA

Read state of all 8 hardware sprites with interpreted values.

Returns for each sprite:

  • Position (X, Y) with visibility check

  • Color (with name)

  • Enable status

  • Multicolor mode

  • X/Y expansion (double size)

  • Priority (in front of / behind background)

  • Data pointer address

Use this to debug sprite issues like:

  • "Why is my sprite invisible?" → check enabled, position, pointer

  • "Wrong colors?" → check multicolor mode and color registers

  • "Wrong size?" → check expand flags

Options:

  • enabledOnly: Only return enabled sprites (default: false)

Related tools: readVicState, readMemory (for sprite data)

ParametersJSON Schema
NameRequiredDescriptionDefault
enabledOnlyNoOnly return enabled sprites (default: false)

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes the tool's behavior by detailing the return structure (e.g., position, color, enable status) and debugging use cases. However, it lacks information on potential side effects, error handling, or performance characteristics like rate limits, leaving minor gaps.

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

Conciseness5/5

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

The description is well-structured and front-loaded, starting with the core purpose, followed by return details, usage examples, options, and related tools. Each sentence adds clear value without redundancy, making it efficient and easy to parse for an AI agent.

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

Completeness4/5

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

Given the complexity (debugging tool with detailed returns), no annotations, and no output schema, the description does a strong job by specifying the return structure and use cases. However, it could improve by mentioning error conditions or response formats more explicitly, leaving slight room for enhancement in completeness.

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

Parameters4/5

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

The schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the 'enabledOnly' parameter's purpose ('Only return enabled sprites') and default value in the 'Options' section, providing context beyond the schema. However, it doesn't elaborate on edge cases or interactions with other parameters, keeping it from a perfect score.

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

Purpose5/5

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

The description explicitly states the verb 'Read' and the resource 'state of all 8 hardware sprites with interpreted values', clearly distinguishing it from siblings like readVicState or readMemory. It specifies the exact scope (8 hardware sprites) and output format (interpreted values), making the purpose highly specific and distinct.

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

Usage Guidelines5/5

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

The description provides explicit usage guidance with a 'Use this to debug sprite issues like:' section listing three concrete scenarios (e.g., invisible sprite, wrong colors, wrong size). It also names related tools (readVicState, readMemory) as alternatives for different contexts, clearly indicating when to use this tool versus others.

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

readVicStateA

Read the full VIC-II state with interpreted values.

Returns all VIC-II registers with semantic meaning:

  • Border and background colors (with names)

  • Graphics mode (text, bitmap, multicolor, etc.)

  • Screen and character memory locations

  • Scroll values

  • Raster position

  • Sprite enable bits

This is the high-level view of the video chip. Use for understanding display configuration.

Related tools: readScreen, readSprites, readMemory (for $D000-$D02E)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It effectively describes the tool's behavior: it's a read operation (implied by 'Read'), returns interpreted/decoded register values (not raw data), and provides a high-level view. However, it doesn't mention potential limitations like performance impact or error conditions.

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

Conciseness5/5

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

The description is well-structured and concise. It starts with the core purpose, lists what's returned in a clear bulleted format, provides usage guidance, and ends with related tools. Every sentence adds value without repetition or fluff.

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

Completeness4/5

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

For a zero-parameter read tool with no annotations or output schema, the description is quite complete. It explains what the tool does, what it returns, when to use it, and how it relates to other tools. The only minor gap is lack of explicit mention of return format (e.g., JSON structure), though the bulleted list implies it.

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

Parameters4/5

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

The tool has zero parameters (schema coverage 100%), so the baseline is 4. The description appropriately doesn't discuss parameters, focusing instead on what the tool returns. This is efficient and avoids redundancy.

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

Purpose5/5

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

The description explicitly states the tool's purpose: 'Read the full VIC-II state with interpreted values.' It specifies the exact resource (VIC-II state/registers) and verb (read), and distinguishes it from siblings by listing related tools (readScreen, readSprites, readMemory) that handle subsets of this data.

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

Usage Guidelines5/5

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

The description provides clear usage guidance: 'Use for understanding display configuration.' It explicitly lists related tools (readScreen, readSprites, readMemory) as alternatives for more specific tasks, helping the agent choose when to use this comprehensive tool versus more focused ones.

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

renderScreenA

Render the current screen as ASCII art representation.

Creates a visual representation of the screen using ASCII characters to approximate the colors and content visible on the C64 display.

This is useful for quick visual debugging without image handling. For actual screen text, use readScreen instead.

Options:

  • width: Output width in characters (default: 80)

  • height: Output height in lines (default: 50)

  • charset: Character set to use for shading (default: " .:-=+*#%@")

Related tools: readScreen, screenshot, readVicState

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNoOutput width in characters (default: 80)
heightNoOutput height in lines (default: 50)
charsetNoCharacters for shading from dark to light (default: ' .:-=+*#%@')

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It explains the tool creates a visual representation approximating colors and content, which is helpful behavioral context. However, it doesn't disclose important behavioral traits like whether this is a read-only operation, if it affects emulator state, performance characteristics, or error conditions.

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

Conciseness4/5

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

Well-structured with purpose first, then usage guidance, then parameter details. The description is appropriately sized with no redundant sentences. Minor deduction because the parameter section repeats schema information without adding value, slightly reducing efficiency.

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

Completeness3/5

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

For a tool with no annotations and no output schema, the description provides good purpose and usage context but lacks important behavioral details. It doesn't explain what the output looks like (ASCII art format), whether it's paginated, error conditions, or performance implications. The 100% schema coverage helps, but more behavioral context would improve completeness.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents all three parameters. The description repeats the same parameter information in the 'Options' section without adding meaningful semantic context beyond what's in the schema. Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verb ('Render') and resource ('current screen as ASCII art representation'). It distinguishes from sibling readScreen by explaining this creates visual representation for debugging rather than actual screen text, and mentions screenshot as another related tool.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool ('for quick visual debugging without image handling') and when to use alternatives ('For actual screen text, use readScreen instead'). Also lists related tools including screenshot and readVicState, providing clear context for tool selection.

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

resetA

Reset the C64 machine.

Options:

  • hard: If true, performs hard reset (like power cycle). If false, soft reset (like reset button).

A soft reset preserves some memory contents, hard reset clears everything.

Related tools: connect, status

ParametersJSON Schema
NameRequiredDescriptionDefault
hardNoHard reset (true) vs soft reset (false, default)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well by explaining behavioral traits: it details the difference between hard and soft resets (e.g., 'hard reset clears everything', 'soft reset preserves some memory contents'), which is crucial for understanding the tool's impact beyond basic functionality.

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

Conciseness5/5

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

The description is appropriately sized and front-loaded: it starts with the core purpose, then lists options with clear explanations, and ends with related tools. Every sentence earns its place by adding essential information without redundancy.

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

Completeness4/5

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

Given the tool's moderate complexity (one parameter, no output schema), the description is fairly complete: it covers purpose, parameter semantics, and behavioral context. However, it lacks details on prerequisites (e.g., does the machine need to be connected?) or error conditions, which could be useful given the sibling tools include connection-related ones.

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

Parameters4/5

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

The schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the semantics of the 'hard' parameter beyond the schema's description ('Hard reset (true) vs soft reset (false, default)'), clarifying what each option does in practical terms (e.g., 'like power cycle' vs 'like reset button'), elevating the score.

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

Purpose5/5

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

The description clearly states the verb ('Reset') and resource ('the C64 machine'), making the purpose specific. It distinguishes this tool from siblings like 'connect' or 'status' by focusing on reset functionality rather than connection or status checking.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool (to reset the C64 machine) and mentions related tools ('connect', 'status'), but does not explicitly state when not to use it or compare it to all alternatives among the many siblings listed.

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

runToA

Run execution until a specific address is reached.

Sets a temporary breakpoint at the target address and continues execution. The breakpoint is automatically deleted when hit.

Use for:

  • "Run until this function" → runTo(functionAddress)

  • "Skip to the end of this loop" → runTo(addressAfterLoop)

Related tools: continue, step, setBreakpoint

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesAddress to run to (0x0000-0xFFFF)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it sets a temporary breakpoint, continues execution automatically, and the breakpoint auto-deletes when hit. It doesn't mention potential side effects like program state changes or execution limits, but covers the core behavior adequately.

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

Conciseness5/5

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

The description is perfectly structured: first sentence states the core purpose, next two explain the mechanism, 'Use for:' section provides practical examples, and final line references related tools. Every sentence earns its place with zero wasted words, and information is front-loaded appropriately.

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

Completeness4/5

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

For a debugging tool with no annotations and no output schema, the description does well by explaining the tool's behavior, usage scenarios, and relationship to other tools. It could be more complete by mentioning what happens if the address is never reached or describing the execution state after stopping, but covers the essentials adequately given the context.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents the address parameter range (0-65535) and format. The description adds minimal value beyond this by implying the address is a target location, but doesn't provide additional semantic context like address format examples or validation rules.

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

Purpose5/5

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

The description clearly states the specific action ('Run execution until a specific address is reached') and distinguishes it from siblings by explaining it sets a temporary breakpoint that auto-deletes. It uses concrete verbs like 'run', 'sets', 'continues', and 'deleted' that precisely define the operation.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool with two concrete examples ('Run until this function' and 'Skip to the end of this loop'), mentions related tools (continue, step, setBreakpoint) for comparison, and implicitly suggests alternatives by distinguishing its temporary breakpoint behavior from setBreakpoint.

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

saveSnapshotA

Save the complete machine state to a file.

Creates a VICE snapshot file containing:

  • All memory (RAM, I/O states)

  • CPU registers

  • VIC-II, SID, CIA states

  • Disk drive state (if attached)

Use to:

  • Save state before risky debugging

  • Create restore points

  • Share exact machine state

Related tools: loadSnapshot

ParametersJSON Schema
NameRequiredDescriptionDefault
filenameYesFilename for the snapshot (e.g., 'debug-state.vsf')

TDQS

A4.4/5.0
Behavior3/5

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 describes what the tool does (saves state to a file) and what is included in the snapshot, but lacks details on behavioral traits like file format constraints, error handling, or performance implications. It adequately conveys the core operation but misses deeper behavioral context.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the core purpose, followed by bullet points for details and usage guidelines. Every sentence adds value without redundancy, making it efficient and easy to parse for an AI agent.

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

Completeness4/5

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

Given the tool's complexity (saving full machine state) and lack of annotations or output schema, the description does a good job explaining what is saved and usage contexts. However, it could improve by mentioning output behavior (e.g., success confirmation or file path return) to be fully complete for an agent.

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

Parameters4/5

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

The input schema has 100% description coverage, documenting the single 'filename' parameter. The description does not add parameter-specific semantics beyond the schema, but with only one parameter and high schema coverage, the baseline is strong. No additional param info is needed, so it scores above the minimum.

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

Purpose5/5

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

The description clearly states the specific action ('Save the complete machine state to a file') and resource ('machine state'), distinguishing it from siblings like 'loadSnapshot' (which loads) and 'screenshot' (which captures only screen). It explicitly lists what is included in the snapshot (memory, CPU registers, etc.), making the purpose unambiguous and distinct.

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

Usage Guidelines5/5

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

The description provides explicit usage scenarios ('Save state before risky debugging', 'Create restore points', 'Share exact machine state') and names a related alternative tool ('loadSnapshot'), clearly indicating when to use this tool versus others. This gives clear context for application without ambiguity.

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

screenshotA

Capture the current VICE display as image data.

Returns the raw display buffer with:

  • Pixel data (indexed 8-bit palette colors)

  • Display dimensions and visible area

  • Current palette RGB values

The data can be used to understand what's currently on screen visually. For text mode screens, readScreen provides a simpler text representation.

Options:

  • includePalette: Also return the color palette (default: true)

Related tools: readScreen, readVicState

ParametersJSON Schema
NameRequiredDescriptionDefault
includePaletteNoInclude palette RGB values (default: true)

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes what the tool returns ('raw display buffer' with pixel data, dimensions, visible area, palette values) and its purpose ('to understand what's currently on screen visually'). However, it doesn't mention potential side effects, performance characteristics, or error conditions, which would be helpful for a complete behavioral picture.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the core purpose. Each sentence adds value: the first states what it does, the second details the return data, the third explains usage context, and the fourth covers the parameter. There's no wasted text, and information is presented in a logical flow.

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

Completeness4/5

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

Given no annotations and no output schema, the description does a good job explaining the tool's behavior and output. It covers the purpose, return data structure, usage context, and parameter semantics. However, it doesn't describe potential limitations (e.g., screen capture timing, memory usage) or error cases, leaving some gaps in completeness.

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

Parameters4/5

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

Schema description coverage is 100%, so the schema already documents the single parameter. The description adds value by explaining the parameter's purpose ('Also return the color palette') and providing the default value ('default: true'), which enhances understanding beyond the schema's basic documentation.

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

Purpose5/5

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

The description clearly states the specific action ('Capture'), target resource ('current VICE display'), and output format ('as image data'). It distinguishes from sibling readScreen by explaining that readScreen provides 'a simpler text representation' for text mode screens, making the differentiation explicit.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool versus alternatives: 'For text mode screens, readScreen provides a simpler text representation.' It also mentions 'Related tools: readScreen, readVicState' to indicate alternatives, giving clear context for tool selection.

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

setBreakpointA

Set an execution breakpoint at a memory address.

When the PC reaches this address, execution stops. Use to:

  • Debug code at specific points

  • Catch when routines are called

  • Analyze code flow

Returns a breakpoint ID for later management.

Related tools: deleteBreakpoint, listBreakpoints, continue, step

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesAddress to break at (0x0000-0xFFFF)
enabledNoWhether breakpoint is active (default: true)
temporaryNoAuto-delete after hit (default: false)

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the core behavior ('execution stops') and return value ('breakpoint ID for later management'), but lacks details on permissions, error conditions, or side effects. It adds some context but doesn't fully compensate for the absence of annotations.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, followed by bulleted usage examples and return information, all in a compact format. Every sentence earns its place without redundancy, making it highly efficient and well-structured.

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

Completeness4/5

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

Given the tool's moderate complexity (3 parameters, no output schema, no annotations), the description covers purpose, usage, and return value adequately. However, it could benefit from more behavioral details like error handling or execution context, leaving minor gaps in completeness.

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

Parameters3/5

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

Schema description coverage is 100%, providing detailed parameter documentation. The description doesn't add any parameter-specific information beyond what's in the schema, so it meets the baseline of 3 where the schema handles the heavy lifting without additional value from the description.

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

Purpose5/5

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

The description clearly states the specific action ('Set an execution breakpoint') and resource ('at a memory address'), distinguishing it from siblings like deleteBreakpoint, listBreakpoints, and setWatchpoint. It explicitly defines what the tool does rather than just restating the name.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('Debug code at specific points', 'Catch when routines are called', 'Analyze code flow') and lists related tools for alternative or complementary actions, including clear sibling differentiation like deleteBreakpoint for management.

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

setWatchpointA

Set a memory watchpoint to stop when memory is read or written.

Watchpoints are powerful for debugging:

  • "Why is this value changing?" → Use store watchpoint

  • "What's reading this address?" → Use load watchpoint

  • "Track all access to this region" → Use both

Range can be single address or address range (e.g., $D800-$DBFF for color RAM).

Related tools: deleteBreakpoint, listWatchpoints, continue

ParametersJSON Schema
NameRequiredDescriptionDefault
startAddressYesStart address of watched range (0x0000-0xFFFF)
endAddressNoEnd address of watched range (default: same as start for single address)
typeYesWatch type: 'load' (read), 'store' (write), or 'both'
enabledNoWhether watchpoint is active (default: true)
temporaryNoAuto-delete after hit (default: false)

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by explaining what watchpoints do ('stop when memory is read or written'), their debugging applications, and range capabilities. It mentions that watchpoints are 'powerful for debugging' but doesn't cover potential performance impacts, permissions needed, or what happens after a stop (though 'continue' is referenced).

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

Conciseness5/5

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

The description is efficiently structured with a clear purpose statement first, followed by bullet points for usage scenarios, range explanation, and related tools. Every sentence adds value without redundancy, and it's appropriately sized for the tool's complexity.

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

Completeness4/5

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

For a debugging tool with 5 parameters, 100% schema coverage, and no output schema, the description provides good context about what watchpoints are and when to use them. It could be more complete by explaining what happens after a watchpoint triggers (e.g., program stops, debugger enters break state) or mentioning limitations, but it covers the essential usage well.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds some context about address ranges ('single address or address range') and watch type purposes, but doesn't provide additional parameter semantics beyond what's in the schema descriptions. Baseline 3 is appropriate when schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states the specific action ('Set a memory watchpoint') and resource ('memory'), with the purpose 'to stop when memory is read or written.' It distinguishes from siblings like setBreakpoint by focusing on memory access monitoring rather than execution breakpoints.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use different watchpoint types with concrete debugging scenarios (e.g., 'Why is this value changing?' → store watchpoint). It also mentions related tools (deleteBreakpoint, listWatchpoints, continue) for context, though it doesn't explicitly state when NOT to use this tool.

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

statusA

Get current VICE connection and emulation state.

Returns connection status, whether emulation is running or paused, and host/port if connected.

Use this to:

  • Check if you're connected before running other commands

  • See if emulation is running or stopped (e.g., at a breakpoint)

  • Verify connection details

Related tools: connect, disconnect

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively describes what the tool returns ('connection status', 'whether emulation is running or paused', 'host/port if connected'), which is appropriate for a read-only status tool. However, it doesn't mention potential errors, latency, or rate limits.

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

Conciseness5/5

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

The description is well-structured and front-loaded with the core purpose, followed by specific usage guidelines and related tools. Every sentence adds value without redundancy, making it efficient and easy to parse.

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

Completeness4/5

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

For a 0-parameter status tool with no annotations or output schema, the description provides good context about what information is returned and when to use it. However, without an output schema, it could benefit from more detail about the exact structure of the returned data (e.g., specific fields, data types).

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so the baseline is 4. The description appropriately doesn't discuss parameters since none exist, focusing instead on the tool's purpose and usage.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('Get current VICE connection and emulation state') and resources ('connection status', 'emulation state', 'host/port'). It distinguishes itself from siblings by focusing on status retrieval rather than connection management or execution control.

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

Usage Guidelines5/5

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

The description provides explicit usage guidelines with a bulleted list of when to use this tool ('Check if you're connected before running other commands', 'See if emulation is running or stopped', 'Verify connection details'). It also mentions related tools (connect, disconnect) for context, though it doesn't explicitly state when not to use it.

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

stepA

Execute one or more instructions, then stop.

Single-stepping is essential for understanding code flow and debugging.

Options:

  • count: Number of instructions to execute (default: 1)

  • stepOver: If true, treat JSR as single instruction (don't step into subroutines)

After stepping, use getRegisters to see the new CPU state.

Related tools: getRegisters, continue, setBreakpoint, status

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of instructions to step (default: 1)
stepOverNoStep over JSR calls instead of into them (default: false)

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by explaining key behavioral traits: it's a controlled execution tool that stops after stepping, requires follow-up with 'getRegisters' to see results, and has specific stepping behavior with JSR calls. However, it doesn't mention potential side effects like memory changes or performance characteristics.

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

Conciseness4/5

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

The description is well-structured with clear sections: purpose statement, importance context, parameter options, and related tools. Every sentence earns its place, though the 'Single-stepping is essential...' sentence could be integrated more tightly with the purpose statement.

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

Completeness4/5

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

For a debugging tool with no annotations and no output schema, the description does well by explaining the tool's purpose, usage context, parameters, and follow-up actions. It could be more complete by describing what 'execute instructions' actually means in this context or what happens with invalid instructions, but it covers the essential debugging workflow adequately.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already fully documents both parameters. The description adds minimal value beyond the schema by mentioning the parameters in the 'Options' section but doesn't provide additional semantic context about when to use stepOver vs. not, or implications of different count values.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('execute one or more instructions, then stop') and distinguishes it from siblings by explaining its role in debugging and code flow analysis. It explicitly differentiates from 'continue' (continuous execution) and 'getRegisters' (state inspection).

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('essential for understanding code flow and debugging'), when not to use it (use 'continue' for continuous execution), and names specific alternatives ('getRegisters' for state inspection, 'continue' for resuming execution, 'setBreakpoint' for breakpoints). The 'Related tools' section reinforces this context.

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

toggleBreakpointA

Enable or disable a breakpoint without deleting it.

Use this to temporarily disable breakpoints while keeping their configuration.

Related tools: setBreakpoint, deleteBreakpoint, listBreakpoints

ParametersJSON Schema
NameRequiredDescriptionDefault
breakpointIdYesBreakpoint ID from setBreakpoint
enabledYesTrue to enable, false to disable

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses that the tool toggles breakpoints without deletion, implying mutation but not specifying permissions, side effects, or response behavior. While it adds useful context about preserving configuration, it lacks details on error conditions, rate limits, or what happens if the breakpoint doesn't exist.

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

Conciseness5/5

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

The description is highly concise and well-structured: the first sentence states the core purpose, the second provides usage context, and the third lists related tools. Every sentence adds value without redundancy, making it easy for an agent to parse quickly.

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

Completeness4/5

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

Given the tool's moderate complexity (mutation operation with 2 parameters), no annotations, and no output schema, the description is reasonably complete. It covers purpose, usage context, and sibling relationships but lacks details on behavioral aspects like error handling or return values. It compensates well for the missing structured data but could be more comprehensive.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema fully documents both parameters (breakpointId and enabled). The description adds no additional parameter semantics beyond what's in the schema, such as format examples or constraints. Baseline 3 is appropriate when the schema handles all parameter documentation.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verbs ('enable or disable') and resource ('breakpoint'), distinguishing it from siblings like deleteBreakpoint (which removes) and setBreakpoint (which creates). It explicitly mentions keeping configuration intact, which differentiates it from deletion.

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

Usage Guidelines5/5

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

The description provides explicit guidance on when to use this tool ('temporarily disable breakpoints while keeping their configuration') and lists related tools (setBreakpoint, deleteBreakpoint, listBreakpoints), clearly positioning it among alternatives. This helps the agent understand the specific use case versus other breakpoint operations.

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

writeMemoryA

Write bytes to the C64's memory.

Directly modifies memory at the specified address. Changes take effect immediately.

Common uses:

  • Poke values for testing

  • Patch code at runtime

  • Modify screen/color RAM directly

  • Change VIC/SID registers

Be careful writing to ROM areas ($A000-$BFFF, $E000-$FFFF) - you may need to bank out ROM first.

Related tools: readMemory, fillMemory

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesStart address (0x0000-0xFFFF)
bytesYesArray of bytes to write (0-255 each)

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden and does well by disclosing key behavioral traits: it directly modifies memory, changes take effect immediately, and warns about ROM areas requiring banking out. It covers mutation nature and immediate effects, though it could add more on error handling 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.

Conciseness5/5

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

The description is appropriately sized and front-loaded, starting with the core purpose, followed by behavioral details, common uses, warnings, and related tools. Every sentence adds value without redundancy, making it efficient and well-structured.

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

Completeness4/5

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

Given the tool's complexity (direct memory modification) and no annotations or output schema, the description is largely complete: it explains purpose, behavior, uses, warnings, and related tools. It could improve by detailing return values or error cases, but it covers most essential context for safe use.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents parameters (address and bytes) with ranges and descriptions. The description adds no additional parameter semantics beyond what the schema provides, such as format details or usage examples, meeting the baseline for high coverage.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb ('Write bytes') and resource ('C64's memory'), and distinguishes it from sibling tools like readMemory and fillMemory. It goes beyond the name by specifying the direct modification of memory at a specified address.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool through 'Common uses' (e.g., poke values, patch code, modify RAM, change registers) and mentions a related tool (readMemory) for comparison. However, it lacks explicit guidance on when NOT to use it or alternatives for specific scenarios beyond ROM warnings.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 26 tool updates
    • First observedconnect
    • First observedcontinue
    • First observeddeleteBreakpoint
    • First observeddisassemble
    • First observeddisconnect
    • First observedgetRegisters
    • First observedlistBreakpoints
    • First observedlistWatchpoints
    • First observedloadProgram
    • First observedloadSnapshot
    • First observedreadColorRam
    • First observedreadMemory
    • First observedreadScreen
    • First observedreadSprites
    • First observedreadVicState
    • First observedrenderScreen
    • First observedreset
    • First observedrunTo
    • First observedsaveSnapshot
    • First observedscreenshot
    • First observedsetBreakpoint
    • First observedsetWatchpoint
    • First observedstatus
    • First observedstep
    • First observedtoggleBreakpoint
    • First observedwriteMemory

TDQS

A3.9/5.0
Disambiguation4/5

Most tools have distinct purposes with clear boundaries, such as connect/disconnect for connection management, readMemory/readScreen for different memory views, and setBreakpoint/setWatchpoint for different debugging triggers. However, some tools like readScreen and renderScreen both provide screen representations, which could cause minor confusion about when to use each, though their descriptions clarify the differences.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, such as connect, disconnect, getRegisters, listBreakpoints, readMemory, and writeMemory. All names use lowercase with clear, descriptive verbs and nouns, making the set predictable and easy to understand.

Tool Count3/5

With 26 tools, the count is on the higher side for an emulator debugging server, which may feel heavy but is reasonable given the comprehensive coverage of debugging operations. It includes connection, execution control, memory access, breakpoints, screen rendering, and state management, though some tools could potentially be consolidated (e.g., readScreen and renderScreen).

Completeness5/5

The tool set provides complete coverage for C64 emulator debugging, including connection management, execution control (continue, step, runTo), breakpoint and watchpoint handling, memory and register access, screen and sprite inspection, state saving/loading, and reset functionality. There are no obvious gaps; all core debugging workflows are supported with logical tool relationships.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI-assisted reverse engineering and debugging through x64dbg integration. Provides 40+ tools for breakpoint management, memory operations, register manipulation, code analysis, process control, and advanced debugging features.
    22
    -
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI-powered control and debugging of Commodore 64 programs via the VICE emulator, supporting memory operations, breakpoints, register access, and program loading.
    18
    13
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server bridging Lauterbach TRACE32 debuggers to AI agents for autonomous debugging, providing 47 tools for execution control, breakpoints, memory, registers, variables, and symbol inspection.
    100
    7
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Enables AI agents to code and debug Commodore PET software using the VICE emulator, with CLI and MCP tools for session control, screen reading, memory manipulation, and testing.
    44
    1
    MIT

Latest Blog Posts

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/simen/vice-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server