The request ID field is 4 bytes (not 1), and the packet structure was
incorrect:
- Request: STX(1) + API(1) + Length(4) + ReqID(4) + Cmd(1) + Body
- Response: STX(1) + API(1) + Length(4) + Type(1) + Error(1) + ReqID(4) + Body
This was causing all commands after connect() to timeout because response
matching was reading the wrong bytes for the request ID.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
When npx installs from GitHub, it runs the prepare script to build.
Without this, dist/ doesn't exist and the bin entry fails.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Quick-start instructions for Claude Code users with the
`claude mcp add` command and manual config file option.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Covers installation (npm and GitHub), configuration, full tool reference,
example workflows, response format, architecture overview, and protocol
reference. Emphasizes semantic layer and agent-friendly design patterns.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Minor AX fix from owl's final review.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Protocol layer:
- Add DisplayGet command (0x84) for screen capture
- Add PaletteGet command (0x91) for color palette
- Implement getDisplay() and getPalette() client methods
New tools:
- screenshot: Capture display as indexed pixel data with palette
- Returns base64-encoded pixel buffer for efficient transfer
- Includes display dimensions and visible area bounds
- Optionally includes RGB palette values
- renderScreen: ASCII art representation of current display
- Converts pixel luminance to ASCII shading characters
- Configurable output dimensions and character set
- Useful for quick visual debugging in text-only contexts
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Protocol layer:
- Add watchpoint support (setWatchpoint, toggleCheckpoint, listWatchpoints)
- Add snapshot methods (saveSnapshot, loadSnapshot)
- Add autostart support
- Update command codes to match VICE binary monitor protocol
- Refactor BreakpointInfo to CheckpointInfo for unified handling
New tools:
- toggleBreakpoint: Enable/disable breakpoints without deleting
- setWatchpoint: Memory read/write watchpoints
- listWatchpoints: Show active watchpoints
- runTo: Run until specific address (temporary breakpoint)
- disassemble: 6502 disassembler with KERNAL/BASIC labels
- saveSnapshot/loadSnapshot: Machine state persistence
- loadProgram: Autostart PRG/D64/T64 files
Utilities:
- Add full 6502 disassembler with all addressing modes
- Include KERNAL/BASIC entry point labels
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- readScreen now supports format: "summary" | "full" option
- summary: non-empty lines with trimming (agent-friendly)
- full: all 25 lines (debugging use)
- readVicState now tracks sprite visibility:
- visibleSprites array with sprite numbers
- visibleCount for quick checking
- Updated hint when sprites enabled but not visible
AX feedback from owl review.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Fix status hint: clarify step() vs setBreakpoint+continue for pausing
- Add flag string to getRegisters: "NV-BDIZC" format (uppercase=set)
- Add listBreakpoints tool with local breakpoint tracking
- Track breakpoints in client for listing support
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- TypeScript project with tsup build
- MCP server with status, connect, disconnect tools (stubs)
- Uses zod for schema validation
- Builds and starts successfully
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>