c64bridge 0.8.1 → 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (92) hide show
  1. package/.github/prompts/steer.prompt.md +55 -0
  2. package/AGENTS.md +9 -7
  3. package/README.md +192 -154
  4. package/data/embeddings_asm.json +1 -1
  5. package/data/embeddings_basic.json +1 -1
  6. package/data/embeddings_hardware.json +1 -1
  7. package/data/embeddings_mixed.json +1 -1
  8. package/data/embeddings_other.json +1 -1
  9. package/data/graphics/petscii-style-guide.md +4 -4
  10. package/data/graphics/sprite-charset-best-practices.md +9 -9
  11. package/data/vice/vice-binary-monitor-spec.md +938 -0
  12. package/dist/.tsbuildinfo +1 -1
  13. package/dist/c64Client.js +76 -2
  14. package/dist/device.js +129 -13
  15. package/dist/mcp-server.js +1 -1
  16. package/dist/prompts/registry.js +27 -25
  17. package/dist/rag/indexer.js +18 -8
  18. package/dist/rag/knowledgeIndex.js +112 -79
  19. package/dist/rag/resourceUris.js +93 -0
  20. package/dist/sidwaveCompiler.js +1 -1
  21. package/dist/{assemblyConverter.js → tools/assember.js} +10 -1
  22. package/dist/tools/audio.js +11 -11
  23. package/dist/{basicConverter.js → tools/basicTokenizer.js} +1 -1
  24. package/dist/tools/debug.js +159 -6
  25. package/dist/tools/developer.js +13 -13
  26. package/dist/tools/disassembler.js +478 -0
  27. package/dist/tools/graphics.js +10 -10
  28. package/dist/tools/input.js +338 -0
  29. package/dist/tools/machineControl.js +5 -5
  30. package/dist/tools/memory.js +336 -12
  31. package/dist/tools/meta/index.js +1 -1
  32. package/dist/tools/printer.js +11 -12
  33. package/dist/tools/programRunners.js +61 -22
  34. package/dist/tools/rag.js +9 -9
  35. package/dist/tools/registry/batch.js +167 -0
  36. package/dist/tools/registry/config.js +1 -1
  37. package/dist/tools/registry/disk.js +1 -1
  38. package/dist/tools/registry/drive.js +1 -1
  39. package/dist/tools/registry/extract.js +1 -1
  40. package/dist/tools/registry/graphics.js +102 -2
  41. package/dist/tools/registry/index.js +4 -0
  42. package/dist/tools/registry/input.js +2 -0
  43. package/dist/tools/registry/memory.js +62 -2
  44. package/dist/tools/registry/platform.js +1 -1
  45. package/dist/tools/registry/printer.js +1 -1
  46. package/dist/tools/registry/program.js +1 -1
  47. package/dist/tools/registry/rag.js +1 -1
  48. package/dist/tools/registry/sound.js +1 -1
  49. package/dist/tools/registry/stream.js +1 -1
  50. package/dist/tools/registry/system.js +1 -1
  51. package/dist/tools/schema.js +4 -5
  52. package/dist/tools/storage.js +15 -15
  53. package/dist/tools/streaming.js +3 -3
  54. package/dist/tools/symbolRegistry.js +49 -0
  55. package/dist/tools/types.js +56 -4
  56. package/dist/tools/vice.js +2 -5
  57. package/dist/vice/process.js +120 -2
  58. package/dist/vice/readiness.js +35 -0
  59. package/dist/vice/smokeOptions.js +44 -0
  60. package/dist/vice/viceClient.js +5 -1
  61. package/dist/viceRunner.js +2 -0
  62. package/doc/plans/prompts/README.md +7 -7
  63. package/mcp/prompts.json +42 -59
  64. package/mcp/protocol-examples.json +2 -2
  65. package/mcp/resources.json +179 -166
  66. package/mcp/schemas/c64_batch.schema.json +53 -0
  67. package/mcp/schemas/c64_config.schema.json +525 -283
  68. package/mcp/schemas/c64_debug.schema.json +763 -304
  69. package/mcp/schemas/c64_disk.schema.json +499 -243
  70. package/mcp/schemas/c64_drive.schema.json +165 -90
  71. package/mcp/schemas/c64_extract.schema.json +533 -274
  72. package/mcp/schemas/c64_graphics.schema.json +607 -295
  73. package/mcp/schemas/c64_input.schema.json +136 -0
  74. package/mcp/schemas/c64_memory.schema.json +637 -128
  75. package/mcp/schemas/c64_printer.schema.json +393 -196
  76. package/mcp/schemas/c64_program.schema.json +699 -340
  77. package/mcp/schemas/c64_rag.schema.json +100 -54
  78. package/mcp/schemas/c64_select_backend.schema.json +49 -23
  79. package/mcp/schemas/c64_sound.schema.json +1092 -577
  80. package/mcp/schemas/c64_stream.schema.json +89 -47
  81. package/mcp/schemas/c64_system.schema.json +351 -185
  82. package/mcp/schemas/c64_vice.schema.json +85 -47
  83. package/mcp/server.json +1 -1
  84. package/mcp/tools.json +7299 -3346
  85. package/mcp.json +3 -3
  86. package/package.json +17 -14
  87. package/scripts/fetch-external-sources.mjs +1 -2
  88. package/scripts/run-coverage.mjs +33 -1
  89. package/scripts/run-tests.mjs +2 -2
  90. package/scripts/run-tests.ts +275 -52
  91. package/scripts/update-readme.ts +132 -3
  92. package/server.json +2 -2
@@ -0,0 +1,55 @@
1
+ ROLE
2
+
3
+ You are an execution-focused engineering agent operating inside an active repository with an existing PLANS.md and WORKLOG.md.
4
+
5
+ You are in a live execution session. Your primary responsibility is to maintain forward progress while applying tightly scoped steering changes without disrupting the current plan.
6
+
7
+ OBJECTIVE
8
+
9
+ Apply a small, well-defined refinement to the system while preserving momentum and respecting the current execution state.
10
+
11
+ PROCESS
12
+
13
+ 1. Read the current PLANS.md and identify the active execution context.
14
+ 2. Do NOT replace, rewrite, or restructure the plan.
15
+ 3. Append a new TODO item to PLANS.md that captures the steering instruction provided after `/steer`.
16
+ 4. Treat this TODO as part of the current plan, not a separate phase.
17
+ 5. Execute the TODO immediately after appending it.
18
+ 6. Continue executing the remaining plan without interruption.
19
+
20
+ CONSTRAINTS
21
+
22
+ - Treat the steering input as a minimal refinement, not a redesign.
23
+ - Prefer the smallest possible change set.
24
+ - Do not introduce unrelated changes.
25
+ - Do not refactor broadly unless explicitly required by the steering input.
26
+ - Preserve all existing behavior unless the steering explicitly requires a change.
27
+ - Do not rename commands, files, or interfaces unless explicitly instructed.
28
+ - Do not reset context or restart the implementation.
29
+
30
+ VALIDATION
31
+
32
+ - Ensure no regressions are introduced.
33
+ - Verify that existing commands and workflows behave as before unless explicitly changed.
34
+ - If the change affects user-facing behavior, ensure it remains consistent with intent.
35
+
36
+ STATE TRACKING
37
+
38
+ - Append a concise entry to WORKLOG.md including:
39
+ - what was changed
40
+ - why it was changed
41
+ - confirmation of validation
42
+
43
+ EXECUTION RULES
44
+
45
+ - Do not stop at analysis. Execute the change.
46
+ - Do not expand scope beyond the steering instruction.
47
+ - Do not declare completion if any part of the appended TODO remains incomplete.
48
+ - Maintain deterministic, verifiable progress.
49
+
50
+ TERMINATION CONDITION
51
+
52
+ - The appended TODO has been fully implemented
53
+ - Validation has been performed
54
+ - WORKLOG.md has been updated
55
+ - Execution has resumed on the existing plan
package/AGENTS.md CHANGED
@@ -74,6 +74,7 @@ If a workflow description starts listing tool calls outside `.github/skills`, tr
74
74
  - Discover resources and prompts with ListResources and ListPrompts.
75
75
  - Use the matching skill in `.github/skills/` to decide the actual tool sequence, validation, and safety behavior.
76
76
  - After discovery has already happened for the active session, prefer execution over repeated rediscovery for unambiguous requests.
77
+ - When the request targets the `vice` backend, read `c64://vice/binary-monitor-spec` before executing so Binary Monitor framing, single-client limits, and trap/resume side effects are in scope.
77
78
  - Treat `c64_program`, `c64_memory`, `c64_graphics`, `c64_sound`, `c64_system`, `c64_config`, `c64_rag`, `c64_extract`, and similar grouped MCP tools as discriminated unions: every direct call must include `op`.
78
79
  - Never call a grouped tool with `{}` or with only secondary arguments. Choose the sub-operation first, then send `{ op: "...", ... }`.
79
80
  - When a skill tells you to execute a grouped tool, copy the exact `op` string from the skill instead of inferring it from the tool name.
@@ -113,13 +114,14 @@ Tools and parameters are listed dynamically via ListTools.
113
114
 
114
115
  Use ListResources to discover built-in knowledge, then read specific URIs to enrich context before coding:
115
116
 
116
- - `c64://specs/basic` — BASIC v2 tokens, syntax, device I/O
117
- - `c64://specs/assembly` — 6510 opcodes, addressing, zero-page strategy
118
- - `c64://specs/vic` — raster timing, sprites, colour RAM, bitmap modes
119
- - `c64://specs/sid` — SID registers, waveforms, ADSR
120
- - `c64://specs/memory-map` — full 64 KB address map
121
- - `c64://docs/basic/pitfalls` — quoting, line length, token pitfalls
122
- - `c64://docs/petscii-style` — readable PETSCII, colour/dither guidance
117
+ - `c64://basic/spec` — BASIC v2 tokens, syntax, device I/O
118
+ - `c64://assembly/6510-spec` — 6510 opcodes, addressing, zero-page strategy
119
+ - `c64://graphics/vic/spec` — raster timing, sprites, colour RAM, bitmap modes
120
+ - `c64://sound/sid/spec` — SID registers, waveforms, ADSR
121
+ - `c64://memory/map` — full 64 KB address map
122
+ - `c64://vice/binary-monitor-spec` — mandatory reference when targeting VICE; covers Binary Monitor transport, command framing, and debugger side effects
123
+ - `c64://basic/pitfalls` — quoting, line length, token pitfalls
124
+ - `c64://graphics/petscii/style-guide` — readable PETSCII, colour/dither guidance
123
125
 
124
126
  Pull RAG snippets via `c64_rag` (ops `basic`/`asm`) for targeted examples.
125
127
 
package/README.md CHANGED
@@ -10,10 +10,19 @@ Your AI Command Bridge for the Commodore 64.
10
10
  [![License: GPL v2](https://img.shields.io/badge/License-GPL%20v2-blue.svg)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
11
11
  [![Platform](https://img.shields.io/badge/platform-Linux%20%7C%20macOS%20%7C%20Windows-forestgreen)](doc/developer.md)
12
12
 
13
- C64 Bridge is a Model Context Protocol ([MCP](https://modelcontextprotocol.io/docs/getting-started/intro)) server for controlling a real Commodore 64 Ultimate or Ultimate 64, and for switching into a VICE emulator session when you want emulator-backed workflows in the same MCP conversation.
13
+ [![Install in VS Code](https://img.shields.io/badge/Install_in-VS_Code-0098FF?style=flat-square&logo=visualstudiocode&logoColor=white)](https://vscode.dev/redirect/mcp/install?name=io.github.chrisgleissner%2Fc64bridge&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22c64bridge%22%5D%2C%22env%22%3A%7B%22C64_MODE%22%3A%22c64u%22%2C%22C64U_HOST%22%3A%22c64u%22%2C%22VICE_BINARY%22%3A%22%2Fusr%2Flocal%2Fbin%2Fx64sc%22%2C%22VICE_DIRECTORY%22%3A%22%2Fusr%2Flocal%2Fshare%2Fvice%22%2C%22VICE_VISIBLE%22%3A%22true%22%2C%22VICE_WARP%22%3A%22false%22%7D%7D)
14
+ [![Install in VS Code Insiders](https://img.shields.io/badge/Install_in-VS_Code_Insiders-24bfa5?style=flat-square&logo=visualstudiocode&logoColor=white)](https://insiders.vscode.dev/redirect/mcp/install?name=io.github.chrisgleissner%2Fc64bridge&config=%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22c64bridge%22%5D%2C%22env%22%3A%7B%22C64_MODE%22%3A%22c64u%22%2C%22C64U_HOST%22%3A%22c64u%22%2C%22VICE_BINARY%22%3A%22%2Fusr%2Flocal%2Fbin%2Fx64sc%22%2C%22VICE_DIRECTORY%22%3A%22%2Fusr%2Flocal%2Fshare%2Fvice%22%2C%22VICE_VISIBLE%22%3A%22true%22%2C%22VICE_WARP%22%3A%22false%22%7D%7D&quality=insiders)
15
+ [![Install in Visual Studio](https://img.shields.io/badge/Install_in-Visual_Studio-C16FDE?style=flat-square&logo=visualstudio&logoColor=white)](https://vs-open.link/mcp-install?%7B%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22c64bridge%22%5D%2C%22env%22%3A%7B%22C64_MODE%22%3A%22c64u%22%2C%22C64U_HOST%22%3A%22c64u%22%2C%22VICE_BINARY%22%3A%22%2Fusr%2Flocal%2Fbin%2Fx64sc%22%2C%22VICE_DIRECTORY%22%3A%22%2Fusr%2Flocal%2Fshare%2Fvice%22%2C%22VICE_VISIBLE%22%3A%22true%22%2C%22VICE_WARP%22%3A%22false%22%7D%7D)
16
+ [![Install in Cursor](https://img.shields.io/badge/Install_in-Cursor-000000?style=flat-square&logoColor=white)](https://cursor.com/en/install-mcp?name=io.github.chrisgleissner%2Fc64bridge&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsImM2NGJyaWRnZSJdLCJlbnYiOnsiQzY0X01PREUiOiJjNjR1IiwiQzY0VV9IT1NUIjoiYzY0dSIsIlZJQ0VfQklOQVJZIjoiL3Vzci9sb2NhbC9iaW4veDY0c2MiLCJWSUNFX0RJUkVDVE9SWSI6Ii91c3IvbG9jYWwvc2hhcmUvdmljZSIsIlZJQ0VfVklTSUJMRSI6InRydWUiLCJWSUNFX1dBUlAiOiJmYWxzZSJ9fQ==)
17
+
18
+ C64 Bridge is an MCP server for controlling and working with a Commodore 64 from an AI client.
19
+
20
+ It lets you run programs, read and write memory, render graphics, and play sound on a real [Commodore 64 Ultimate](https://www.commodore.net/) or [Ultimate 64](https://ultimate64.com/). You can also switch to a [VICE](https://vice-emu.sourceforge.io/) emulator session at any time, so the same MCP conversation works with both hardware and emulator.
14
21
 
15
22
  It is built on the official TypeScript `@modelcontextprotocol/sdk` and supports both `stdio` for local AI integration and an optional HTTP bridge for manual inspection.
16
23
 
24
+ C64 Bridge is listed in the [Official MCP Registry](https://registry.modelcontextprotocol.io/?q=c64bridge).
25
+
17
26
  ## Contents
18
27
 
19
28
  - [C64 Bridge](#c64-bridge)
@@ -430,8 +439,8 @@ Every runtime environment variable documented in `mcp.json` can be set in your M
430
439
  | `DISABLE_XVFB` | 0 | — | Set to 1 to disable Xvfb fallback and use the current display only |
431
440
  | `FORCE_XVFB` | 0 | — | Set to 1 to force managed VICE launches to run under Xvfb |
432
441
  | `VICE_ARGS` | | vice.args | Extra command-line arguments forwarded to managed VICE launches |
433
- | `VICE_BINARY` | x64sc | vice.exe | VICE binary to launch for managed emulator sessions and audio capture |
434
- | `VICE_DIRECTORY` | auto-detect | vice.directory | Override the VICE resource directory used for ROM and UI asset discovery |
442
+ | `VICE_BINARY` | x64sc | vice.exe | VICE binary to launch for managed emulator sessions and audio capture; automatic search is used only when this override is missing or invalid |
443
+ | `VICE_DIRECTORY` | auto-detect | vice.directory | Override the VICE resource directory used for ROM and UI asset discovery; automatic search is used only when this override is missing or invalid |
435
444
  | `VICE_HOST` | 127.0.0.1 | vice.host | Override the VICE Binary Monitor host |
436
445
  | `VICE_PORT` | 6502 | vice.port | Override the VICE Binary Monitor port |
437
446
  | `VICE_VISIBLE` | true | vice.visible | Launch VICE visibly on the desktop instead of headless/Xvfb when possible |
@@ -552,239 +561,268 @@ This allows agents to inspect the available tools, resources, prompts, and schem
552
561
 
553
562
  <!-- AUTO-GENERATED:MCP-DOCS-START -->
554
563
 
555
- This MCP server exposes **15 tools**, **26 resources**, and **10 prompts** for controlling your Commodore 64.
564
+ This MCP server exposes **17 tools**, **26 resources**, and **10 prompts** for controlling your Commodore 64.
556
565
 
557
566
  ### Tools
558
567
 
568
+ _Address range convention: `address` + `length` means start address plus byte count; `startAddress` + `endAddress` means inclusive bounds._
569
+
570
+ #### c64_batch
571
+
572
+ Execute multiple c64bridge tool calls in a single request. Reduces latency for multi-step workflows.
573
+
574
+ _No operations defined._
575
+
559
576
  #### c64_config
560
577
 
561
578
  Grouped entry point for configuration reads/writes, diagnostics, and snapshots.
562
579
 
563
- | Operation | Description | Required Inputs | Notes | C64U | VICE |
564
- | --- | --- | --- | --- | --- | --- |
565
- | `batch_update` | Apply multiple configuration updates in a single request. | — | — | ✅ | ✅ |
566
- | `diff` | Compare the current configuration with a snapshot. | `path` | — | ✅ | ✅ |
567
- | `get` | Read a configuration category or specific item. | `category` | — | ✅ | ✅ |
568
- | `info` | Retrieve Ultimate hardware information and status. | — | — | ✅ | ✅ |
569
- | `list` | List configuration categories reported by the firmware. | — | — | ✅ | ✅ |
570
- | `load_flash` | Load configuration from flash storage. | — | — | ✅ | |
571
- | `read_debugreg` | Read the Ultimate debug register ($D7FF). | — | — | ✅ | |
572
- | `reset_defaults` | Reset firmware configuration to factory defaults. | — | — | ✅ | |
573
- | `restore` | Restore configuration from a snapshot file. | `path` | — | ✅ | ✅ |
574
- | `save_flash` | Persist the current configuration to flash storage. | — | — | ✅ | |
575
- | `set` | Write a configuration value in the selected category. | `category`, `item`, `value` | — | ✅ | ✅ |
576
- | `shuffle` | Discover PRG/CRT files and run each with optional screen capture. | — | — | ✅ | |
577
- | `snapshot` | Snapshot configuration to disk for later restore or diff. | `path` | — | ✅ | ✅ |
578
- | `version` | Fetch firmware version details. | — | — | ✅ | ✅ |
579
- | `write_debugreg` | Write a hex value to the Ultimate debug register ($D7FF). | `value` | — | ✅ | |
580
+ | Operation | Description | Required Inputs | Optional Inputs | Notes | C64U | VICE |
581
+ | --- | --- | --- | --- | --- | --- | --- |
582
+ | `batch_update` | Apply multiple configuration updates in a single request. | — | — | — | ✅ | ✅ |
583
+ | `diff` | Compare the current configuration with a snapshot. | `path` | — | — | ✅ | ✅ |
584
+ | `get` | Read a configuration category or specific item. | `category` | `item` | — | ✅ | ✅ |
585
+ | `info` | Retrieve Ultimate hardware information and status. | — | — | — | ✅ | ✅ |
586
+ | `list` | List configuration categories reported by the firmware. | — | — | — | ✅ | ✅ |
587
+ | `load_flash` | Load configuration from flash storage. | — | — | — | ✅ | |
588
+ | `read_debugreg` | Read the Ultimate debug register ($D7FF). | — | — | — | ✅ | |
589
+ | `reset_defaults` | Reset firmware configuration to factory defaults. | — | — | — | ✅ | |
590
+ | `restore` | Restore configuration from a snapshot file. | `path` | `applyToFlash=false` | — | ✅ | ✅ |
591
+ | `save_flash` | Persist the current configuration to flash storage. | — | — | — | ✅ | |
592
+ | `set` | Write a configuration value in the selected category. | `category`, `item`, `value` | — | — | ✅ | ✅ |
593
+ | `shuffle` | Discover PRG/CRT files and run each with optional screen capture. | — | `root="/"`, `extensions=["prg","crt"]`, `durationMs=5000`, `captureScreen=true`, `maxPrograms=10`, `outputPath`, `resetDelayMs=100` | — | ✅ | |
594
+ | `snapshot` | Snapshot configuration to disk for later restore or diff. | `path` | — | — | ✅ | ✅ |
595
+ | `version` | Fetch firmware version details. | — | — | — | ✅ | ✅ |
596
+ | `write_debugreg` | Write a hex value to the Ultimate debug register ($D7FF). | `value` | — | — | ✅ | |
580
597
 
581
598
  #### c64_debug
582
599
 
583
600
  Grouped entry point for VICE debugger operations (breakpoints, registers, stepping).
584
601
 
585
- | Operation | Description | Required Inputs | Notes | C64U | VICE |
586
- | --- | --- | --- | --- | --- | --- |
587
- | `create_checkpoint` | Create a new checkpoint (breakpoint) in VICE. | `address` | — | | ✅ |
588
- | `delete_checkpoint` | Remove a checkpoint by id. | `id` | — | | ✅ |
589
- | `get_checkpoint` | Fetch a single checkpoint by id. | `id` | — | | ✅ |
590
- | `get_registers` | Read register values, optionally filtered by name or id. | — | — | | ✅ |
591
- | `list_checkpoints` | List all active VICE checkpoints (breakpoints). | — | — | | ✅ |
592
- | `list_registers` | List available registers (metadata). | — | — | | ✅ |
593
- | `set_condition` | Attach a conditional expression to a checkpoint. | `id`, `expression` | — | | ✅ |
594
- | `set_registers` | Write register values. | `writes` | — | | ✅ |
595
- | `step` | Single-step CPU execution. | — | — | | ✅ |
596
- | `step_return` | Continue execution until the current routine returns. | — | — | | ✅ |
597
- | `toggle_checkpoint` | Enable or disable a checkpoint by id. | `id`, `enabled` | — | | ✅ |
602
+ | Operation | Description | Required Inputs | Optional Inputs | Notes | C64U | VICE |
603
+ | --- | --- | --- | --- | --- | --- | --- |
604
+ | `continue_execution` | Exit the Binary Monitor and resume CPU execution (BM 0xAA Exit). | — | — | — | | ✅ |
605
+ | `create_checkpoint` | Create a new checkpoint (breakpoint) in VICE. | `address` | `endAddress`, `stopOnHit=true`, `enabled=true`, `temporary=false`, `label`, `operations`, `memspace` | — | | ✅ |
606
+ | `delete_checkpoint` | Remove a checkpoint by id. | `id` | — | — | | ✅ |
607
+ | `get_checkpoint` | Fetch a single checkpoint by id. | `id` | — | — | | ✅ |
608
+ | `get_monitor_state` | Read CPU registers and return the current monitor state. | — | `memspace` | — | | ✅ |
609
+ | `get_registers` | Read register values, optionally filtered by name or id. | — | `memspace`, `registers` | — | | ✅ |
610
+ | `list_checkpoints` | List all active VICE checkpoints (breakpoints). | — | — | — | | ✅ |
611
+ | `list_registers` | List available registers (metadata). | — | `memspace` | — | | ✅ |
612
+ | `nuclear_reset` | Kill and restart the VICE process (managed instances only). | — | — | — | | ✅ |
613
+ | `set_condition` | Attach a conditional expression to a checkpoint. | `id`, `expression` | — | — | | ✅ |
614
+ | `set_registers` | Write register values. | `writes` | `memspace` | — | | ✅ |
615
+ | `step` | Single-step CPU execution. | — | `count=1`, `mode` | — | | ✅ |
616
+ | `step_return` | Continue execution until the current routine returns. | — | — | — | | ✅ |
617
+ | `toggle_checkpoint` | Enable or disable a checkpoint by id. | `id`, `enabled` | — | — | | ✅ |
618
+ | `wait_for_state` | Poll CPU registers until PC equals expectedPC or timeout elapses. | — | `expectedPC`, `timeoutMs=5000`, `pollMs=100` | — | | ✅ |
598
619
 
599
620
  #### c64_disk
600
621
 
601
622
  Grouped entry point for disk mounts, listings, image creation, and program discovery.
602
623
 
603
- | Operation | Description | Required Inputs | Notes | C64U | VICE |
604
- | --- | --- | --- | --- | --- | --- |
605
- | `create_image` | Create a blank disk image of the specified format. | `format`, `path` | — | ✅ | |
606
- | `file_info` | Inspect metadata for a file on the Ultimate filesystem. | `path` | — | ✅ | |
607
- | `find_and_run` | Search for a PRG/CRT by name substring and run the first match. | `nameContains` | — | ✅ | |
608
- | `list_drives` | List Ultimate drive slots and their mounted images. | — | — | ✅ | ✅ |
609
- | `mount` | Mount a disk image with optional verification and retries. | `drive`, `image` | supports verify | ✅ | ✅ |
610
- | `unmount` | Remove the mounted image from an Ultimate drive slot. | `drive` | — | ✅ | ✅ |
624
+ | Operation | Description | Required Inputs | Optional Inputs | Notes | C64U | VICE |
625
+ | --- | --- | --- | --- | --- | --- | --- |
626
+ | `create_image` | Create a blank disk image of the specified format. | `format`, `path` | `diskname`, `tracks` | — | ✅ | |
627
+ | `file_info` | Inspect metadata for a file on the Ultimate filesystem. | `path` | — | — | ✅ | |
628
+ | `find_and_run` | Search for a PRG/CRT by name substring and run the first match. | `nameContains` | `root="/"`, `extensions`, `caseInsensitive=true`, `sort="discovered"`, `waitMs=0`, `captureCandidates=10` | — | ✅ | |
629
+ | `list_drives` | List Ultimate drive slots and their mounted images. | — | — | — | ✅ | ✅ |
630
+ | `mount` | Mount a disk image with optional verification and retries. | `drive`, `image` | `type`, `attachmentMode`, `driveMode`, `verify=false`, `powerOnIfNeeded=true`, `resetAfterMount=true`, `maxRetries=2`, `retryDelayMs=500` | supports verify | ✅ | ✅ |
631
+ | `unmount` | Remove the mounted image from an Ultimate drive slot. | `drive` | — | — | ✅ | ✅ |
611
632
 
612
633
  #### c64_drive
613
634
 
614
635
  Grouped entry point for drive power, mode, reset, and ROM operations.
615
636
 
616
- | Operation | Description | Required Inputs | Notes | C64U | VICE |
617
- | --- | --- | --- | --- | --- | --- |
618
- | `load_rom` | Temporarily load a custom ROM into an Ultimate drive slot. | `drive`, `path` | — | ✅ | |
619
- | `power_off` | Power off a specific Ultimate drive slot. | `drive` | — | ✅ | ✅ |
620
- | `power_on` | Power on a specific Ultimate drive slot. | `drive` | — | ✅ | ✅ |
621
- | `reset` | Issue an IEC reset for the selected drive slot. | `drive` | — | ✅ | ✅ |
622
- | `set_mode` | Set the emulation mode for a drive slot (1541/1571/1581). | `drive`, `mode` | — | ✅ | ✅ |
637
+ | Operation | Description | Required Inputs | Optional Inputs | Notes | C64U | VICE |
638
+ | --- | --- | --- | --- | --- | --- | --- |
639
+ | `load_rom` | Temporarily load a custom ROM into an Ultimate drive slot. | `drive`, `path` | — | — | ✅ | |
640
+ | `power_off` | Power off a specific Ultimate drive slot. | `drive` | — | — | ✅ | ✅ |
641
+ | `power_on` | Power on a specific Ultimate drive slot. | `drive` | — | — | ✅ | ✅ |
642
+ | `reset` | Issue an IEC reset for the selected drive slot. | `drive` | — | — | ✅ | ✅ |
643
+ | `set_mode` | Set the emulation mode for a drive slot (1541/1571/1581). | `drive`, `mode` | — | — | ✅ | ✅ |
623
644
 
624
645
  #### c64_extract
625
646
 
626
647
  Grouped entry point for sprite/charset extraction, memory dumps, filesystem stats, and firmware health checks.
627
648
 
628
- | Operation | Description | Required Inputs | Notes | C64U | VICE |
629
- | --- | --- | --- | --- | --- | --- |
630
- | `charset` | Locate and extract 2KB character sets from RAM. | — | — | ✅ | |
631
- | `firmware_health` | Run firmware readiness checks and report status metrics. | — | — | ✅ | |
632
- | `fs_stats` | Walk the filesystem and aggregate counts/bytes by extension. | — | — | ✅ | |
633
- | `memory_dump` | Dump a RAM range to hex or binary files with manifest metadata. | `address`, `length`, `outputPath` | — | ✅ | |
634
- | `sprites` | Scan RAM for sprites and optionally export .spr files. | `address`, `length` | — | ✅ | |
649
+ | Operation | Description | Required Inputs | Optional Inputs | Notes | C64U | VICE |
650
+ | --- | --- | --- | --- | --- | --- | --- |
651
+ | `charset` | Locate and extract 2KB character sets from RAM. | — | `address`, `scanRange="common"`, `outputPath`, `pauseDuringRead=true`, `minNonEmptyChars=32`, `minEntropy=0.3` | — | ✅ | |
652
+ | `firmware_health` | Run firmware readiness checks and report status metrics. | — | — | — | ✅ | |
653
+ | `fs_stats` | Walk the filesystem and aggregate counts/bytes by extension. | — | `root="/"`, `extensions`, `includeContainers=true`, `maxSamplesPerExtension=3` | — | ✅ | |
654
+ | `memory_dump` | Dump a RAM range to hex or binary files with manifest metadata. | `address`, `length`, `outputPath` | `format="hex"`, `chunkSize=512`, `pauseDuringRead=true`, `retries=1` | — | ✅ | |
655
+ | `sprites` | Scan RAM for sprites and optionally export .spr files. | `address`, `length` | `stride=64`, `maxSprites=16`, `minNonZeroRows=4`, `minSetBits=12`, `includeBase64=true`, `outputDir`, `pauseDuringRead=true` | — | ✅ | |
635
656
 
636
657
  #### c64_graphics
637
658
 
638
659
  Grouped entry point for frame capture and graphics rendering workflows.
639
660
 
640
- | Operation | Description | Required Inputs | Notes | C64U | VICE |
641
- | --- | --- | --- | --- | --- | --- |
642
- | `capture_frame` | Capture one or more complete video frames from the active backend. | — | — | ✅ | ✅ |
643
- | `render_bitmap` | Import an image file, convert it to VIC-II bitmap memory, write it into RAM, and display it. | `imagePath`, `format` | — | ✅ | ✅ |
644
- | `render_petscii_art` | Create PETSCII art from prompts, text, or explicit bitmap data, and optionally display it on the C64. | — | — | ✅ | ✅ |
645
- | `render_petscii_text` | Display PETSCII text with optional border and background colours. | `text` | — | ✅ | ✅ |
646
- | `render_sprite` | Display supplied 63-byte sprite data at the requested position and colour by writing memory and patching VIC-II registers directly. | `sprite` | — | ✅ | ✅ |
661
+ | Operation | Description | Required Inputs | Optional Inputs | Notes | C64U | VICE |
662
+ | --- | --- | --- | --- | --- | --- | --- |
663
+ | `capture_frame` | Capture one or more complete video frames from the active backend. | — | `count=1`, `includePixels=true`, `encoding="base64"` | — | ✅ | ✅ |
664
+ | `get_display_state` | Read VIC-II and CIA2 registers to determine the current graphics mode and memory layout. Works on C64U and VICE; both backends are read through shared memory primitives so the response shape is identical. | — | — | — | ✅ | ✅ |
665
+ | `render_bitmap` | Import an image file, convert it to VIC-II bitmap memory, write it into RAM, and display it. | `imagePath`, `format` | `bitmapAddress=8192`, `screenAddress=1024`, `borderColor=0`, `backgroundColor=0`, `preserveAspect=true` | — | ✅ | ✅ |
666
+ | `render_petscii_art` | Create PETSCII art from prompts, text, or explicit bitmap data, and optionally display it on the C64. | — | `prompt`, `text`, `maxWidth`, `maxHeight`, `borderColor`, `backgroundColor`, `foregroundColor`, `dryRun=false`, `bitmap` | — | ✅ | ✅ |
667
+ | `render_petscii_text` | Display PETSCII text with optional border and background colours. | `text` | `borderColor`, `backgroundColor` | — | ✅ | ✅ |
668
+ | `render_sprite` | Display supplied 63-byte sprite data at the requested position and colour by writing memory and patching VIC-II registers directly. | `sprite` | `index=0`, `x=100`, `y=100`, `color=1`, `multicolour=false` | — | ✅ | ✅ |
669
+
670
+ #### c64_input
671
+
672
+ Keyboard buffer injection (cross-platform) and joystick simulation (VICE only).
673
+
674
+ | Operation | Description | Required Inputs | Optional Inputs | Notes | C64U | VICE |
675
+ | --- | --- | --- | --- | --- | --- | --- |
676
+ | `joystick` | Simulate joystick input by writing directly to CIA1 Port A/B registers. | `port`, `controls`, `action` | `durationMs=80` | — | | ✅ |
677
+ | `key` | Tap a single key or hold it for a duration. | `key` | `durationMs=0`, `count=1` | — | ✅ | ✅ |
678
+ | `write_text` | Send a text string to the keyboard buffer, with PETSCII token expansion. | `text` | `delayMs=0` | — | ✅ | ✅ |
647
679
 
648
680
  #### c64_memory
649
681
 
650
682
  Grouped entry point for memory I/O, screen reads, and screen polling.
651
683
 
652
- | Operation | Description | Required Inputs | Notes | C64U | VICE |
653
- | --- | --- | --- | --- | --- | --- |
654
- | `read` | Read a range of bytes and return a hex dump with address metadata. | `address` | — | ✅ | ✅ |
655
- | `read_screen` | Return the current 40x25 text screen converted to ASCII. | — | — | ✅ | ✅ |
656
- | `wait_for_text` | Poll the screen until a substring or regex appears, or timeout elapses. | `pattern` | — | ✅ | ✅ |
657
- | `write` | Write a hexadecimal byte sequence into RAM. | `address`, `bytes` | supports verify | ✅ | ✅ |
684
+ | Operation | Description | Required Inputs | Optional Inputs | Notes | C64U | VICE |
685
+ | --- | --- | --- | --- | --- | --- | --- |
686
+ | `compare_memory` | Compare two memory regions byte-by-byte and report differences. | `address1`, `address2`, `length` | `maxDiffs=10` | — | ✅ | ✅ |
687
+ | `copy_memory` | Copy a RAM region to another address. | `source`, `dest`, `length` | — | — | ✅ | ✅ |
688
+ | `disassemble` | Disassemble a memory region into annotated 6502/6510 instructions, including undocumented opcodes with canonical names. Symbol annotations from `.vs` files are applied when available. Works on both C64U and VICE. | `address` | `length=64`, `instructionCount` | — | ✅ | ✅ |
689
+ | `fill_memory` | Fill a memory range with a repeating byte pattern. | `address`, `length`, `pattern` | — | — | ✅ | ✅ |
690
+ | `read` | Read a range of bytes and return a hex dump with address metadata. | `address` | `length=256` | — | ✅ | ✅ |
691
+ | `read_screen` | Return the current 40x25 text screen converted to ASCII. | — | — | — | ✅ | ✅ |
692
+ | `save_memory` | Dump a memory range to a local file, with an optional PRG load-address header. | `startAddress`, `endAddress`, `filePath` | `asPrg=true` | — | ✅ | ✅ |
693
+ | `search_memory` | Search for a byte pattern within a memory range and return matching addresses. | `startAddress`, `endAddress`, `pattern` | `maxResults=10` | — | ✅ | ✅ |
694
+ | `wait_for_text` | Poll the screen until a substring or regex appears, or timeout elapses. | `pattern` | `isRegex=false`, `caseInsensitive=true`, `timeoutMs=3000`, `intervalMs=100` | — | ✅ | ✅ |
695
+ | `write` | Write a hexadecimal byte sequence into RAM. | `address`, `bytes` | `verify=false`, `expected`, `mask`, `abortOnMismatch=true` | supports verify | ✅ | ✅ |
658
696
 
659
697
  #### c64_printer
660
698
 
661
699
  Grouped entry point for Commodore and Epson printing helpers.
662
700
 
663
- | Operation | Description | Required Inputs | Notes | C64U | VICE |
664
- | --- | --- | --- | --- | --- | --- |
665
- | `define_chars` | Define custom printer characters (Commodore DLL mode). | `firstChar`, `chars` | — | ✅ | |
666
- | `print_bitmap` | Print a bitmap row via Commodore (BIM) or Epson ESC/P workflows. | `printer`, `columns` | — | ✅ | |
667
- | `print_text` | Generate BASIC that prints text to device 4. | `text` | — | ✅ | |
701
+ | Operation | Description | Required Inputs | Optional Inputs | Notes | C64U | VICE |
702
+ | --- | --- | --- | --- | --- | --- | --- |
703
+ | `define_chars` | Define custom printer characters (Commodore DLL mode). | `firstChar`, `chars` | `secondaryAddress` | — | ✅ | |
704
+ | `print_bitmap` | Print a bitmap row via Commodore (BIM) or Epson ESC/P workflows. | `printer="commodore"`, `columns` | `repeats`, `useSubRepeat`, `secondaryAddress`, `ensureMsb=true`, `mode`, `density`, `timesPerLine` | — | ✅ | |
705
+ | `print_text` | Generate BASIC that prints text to device 4. | `text` | `target="commodore"`, `secondaryAddress`, `formFeed=false` | — | ✅ | |
668
706
 
669
707
  #### c64_program
670
708
 
671
709
  Grouped entry point for program upload, execution, and batch workflows.
672
710
 
673
- | Operation | Description | Required Inputs | Notes | C64U | VICE |
674
- | --- | --- | --- | --- | --- | --- |
675
- | `batch_run` | Run multiple PRG/CRT programs with post-run assertions. | `programs` | — | ✅ | ✅ |
676
- | `bundle_run` | Capture screen, memory, and debug registers into an artifact bundle. | `runId`, `outputPath` | — | ✅ | |
677
- | `cross_platform_greeting` | Show a platform-customized greeting on one or more configured backends, capture screenshots, and verify the results. | — | supports verify | ✅ | ✅ |
678
- | `load_prg` | Load a PRG from Ultimate storage without executing it. | `path` | — | ✅ | |
679
- | `run_crt` | Mount and run a CRT cartridge image. | `path` | — | ✅ | |
680
- | `run_prg` | Load and execute a PRG from Ultimate-visible storage on c64u or a host-local path on VICE. | `path` | — | ✅ | ✅ |
681
- | `upload_run_asm` | Assemble 6502/6510 source, upload the PRG, and execute it. | `program` | supports verify | ✅ | ✅ |
682
- | `upload_run_basic` | Upload Commodore BASIC v2 source and execute it immediately. | `program` | supports verify | ✅ | ✅ |
711
+ | Operation | Description | Required Inputs | Optional Inputs | Notes | C64U | VICE |
712
+ | --- | --- | --- | --- | --- | --- | --- |
713
+ | `batch_run` | Run multiple PRG/CRT programs with post-run assertions. | `programs` | `continueOnError=false`, `durationMs=2000`, `outputPath`, `resetDelayMs=100` | — | ✅ | ✅ |
714
+ | `bundle_run` | Capture screen, memory, and debug registers into an artifact bundle. | `runId`, `outputPath` | `captureScreen=true`, `memoryRanges`, `captureDebugReg=true` | — | ✅ | |
715
+ | `cross_platform_greeting` | Show a platform-customized greeting on one or more configured backends, capture screenshots, and verify the results. | — | `platforms=["vice","c64u"]`, `messageTemplate="HAVE A GREAT DAY, {PLATFORM}!"`, `verify=true`, `captureScreenshot=true`, `outputPath`, `restoreActiveBackend=true`, `timeoutMs=1500`, `pollIntervalMs=100` | supports verify | ✅ | ✅ |
716
+ | `load_prg` | Load a PRG from Ultimate storage without executing it. | `path` | `symbolsFile` | — | ✅ | |
717
+ | `run_crt` | Mount and run a CRT cartridge image. | `path` | — | — | ✅ | |
718
+ | `run_prg` | Load and execute a PRG from Ultimate-visible storage on c64u or a host-local path on VICE. | `path` | `symbolsFile` | — | ✅ | ✅ |
719
+ | `upload_run_asm` | Assemble 6502/6510 source, upload the PRG, and execute it. | `program` | `verify=false` | supports verify | ✅ | ✅ |
720
+ | `upload_run_basic` | Upload Commodore BASIC v2 source and execute it immediately. | `program` | `verify=false` | supports verify | ✅ | ✅ |
683
721
 
684
722
  #### c64_rag
685
723
 
686
724
  Grouped entry point for BASIC and assembly RAG lookups.
687
725
 
688
- | Operation | Description | Required Inputs | Notes | C64U | VICE |
689
- | --- | --- | --- | --- | --- | --- |
690
- | `asm` | Retrieve 6502/6510 assembly references from the local knowledge base. | `q` | — | ✅ | ✅ |
691
- | `basic` | Retrieve BASIC references and snippets from the local knowledge base. | `q` | — | ✅ | ✅ |
726
+ | Operation | Description | Required Inputs | Optional Inputs | Notes | C64U | VICE |
727
+ | --- | --- | --- | --- | --- | --- | --- |
728
+ | `asm` | Retrieve 6502/6510 assembly references from the local knowledge base. | `q` | `k=3` | — | ✅ | ✅ |
729
+ | `basic` | Retrieve BASIC references and snippets from the local knowledge base. | `q` | `k=3` | — | ✅ | ✅ |
692
730
 
693
731
  #### c64_select_backend
694
732
 
695
733
  Switch the active backend between C64U hardware and the VICE emulator at runtime.
696
734
 
697
- | Operation | Description | Required Inputs | Notes | C64U | VICE |
698
- | --- | --- | --- | --- | --- | --- |
699
- | `select` | Switch the active runtime backend without restarting the MCP server. | `backend` | — | ✅ | ✅ |
735
+ | Operation | Description | Required Inputs | Optional Inputs | Notes | C64U | VICE |
736
+ | --- | --- | --- | --- | --- | --- | --- |
737
+ | `select` | Switch the active runtime backend without restarting the MCP server. | `backend` | — | — | ✅ | ✅ |
700
738
 
701
739
  #### c64_sound
702
740
 
703
741
  Grouped entry point for SID control, playback, composition, and analysis workflows.
704
742
 
705
- | Operation | Description | Required Inputs | Notes | C64U | VICE |
706
- | --- | --- | --- | --- | --- | --- |
707
- | `analyze` | Automatically analyze SID playback when verification is requested. | `request` | — | ✅ | |
708
- | `capture_samples` | Capture raw stereo PCM samples from the C64 Ultimate audio UDP stream. | — | — | ✅ | |
709
- | `compile_play` | Compile SIDWAVE or CPG source and optionally play it immediately. | — | — | ✅ | ✅ |
710
- | `generate` | Generate a lightweight SID arpeggio playback sequence. | — | — | ✅ | ✅ |
711
- | `note_off` | Release a SID voice by clearing its gate bit. | `voice` | — | ✅ | ✅ |
712
- | `note_on` | Trigger a SID voice with configurable waveform, ADSR, and pitch. | — | — | ✅ | ✅ |
713
- | `pipeline` | Compile a SIDWAVE score, play it, and analyze the recording. | — | supports verify | ✅ | |
714
- | `play_mod_file` | Play a MOD tracker module via the Ultimate SID player. | `path` | — | ✅ | |
715
- | `play_preset` | Compile and play a built-in SID preset such as Für Elise by Beethoven. | — | supports verify | ✅ | ✅ |
716
- | `play_sid_file` | Play a SID file stored on the Ultimate filesystem. | `path` | — | ✅ | |
717
- | `record_analyze` | Record audio for a fixed duration and return SID analysis metrics. | `durationSeconds` | — | ✅ | |
718
- | `reset` | Soft or hard reset of SID registers to clear glitches. | — | — | ✅ | ✅ |
719
- | `set_volume` | Set the SID master volume register at $D418 (0-15). | `volume` | — | ✅ | ✅ |
720
- | `silence_all` | Silence all SID voices with optional audio verification. | — | supports verify | ✅ | ✅ |
743
+ | Operation | Description | Required Inputs | Optional Inputs | Notes | C64U | VICE |
744
+ | --- | --- | --- | --- | --- | --- | --- |
745
+ | `analyze` | Automatically analyze SID playback when verification is requested. | `request` | `durationSeconds`, `expectedSidwave` | — | ✅ | |
746
+ | `capture_samples` | Capture raw stereo PCM samples from the C64 Ultimate audio UDP stream. | — | `count=256`, `encoding="base64"` | — | ✅ | |
747
+ | `compile_play` | Compile SIDWAVE or CPG source and optionally play it immediately. | — | `sidwave`, `cpg`, `format`, `output="prg"`, `dryRun=false` | — | ✅ | ✅ |
748
+ | `generate` | Generate a lightweight SID arpeggio playback sequence. | — | `root="C4"`, `pattern="0,4,7"`, `steps=16`, `tempoMs=120`, `waveform="tri"`, `preset="classic"` | — | ✅ | ✅ |
749
+ | `note_off` | Release a SID voice by clearing its gate bit. | `voice` | — | — | ✅ | ✅ |
750
+ | `note_on` | Trigger a SID voice with configurable waveform, ADSR, and pitch. | — | `voice=1`, `note`, `frequencyHz`, `system="PAL"`, `waveform="pulse"`, `pulseWidth=2048`, `attack=1`, `decay=1`, `sustain=15`, `release=3` | — | ✅ | ✅ |
751
+ | `pipeline` | Compile a SIDWAVE score, play it, and analyze the recording. | — | `sidwave`, `cpg`, `output="prg"`, `waitBeforeCaptureMs=500`, `analysisDurationSeconds=3`, `expectedSidwave`, `verifySilenceBefore=true`, `verifySilenceAfter=true`, `silenceDurationSeconds=1.5`, `silenceRmsThreshold=0.02`, `postSilenceWaitMs=200`, `silenceWaitMs=150` | supports verify | ✅ | |
752
+ | `play_mod_file` | Play a MOD tracker module via the Ultimate SID player. | `path` | — | — | ✅ | |
753
+ | `play_preset` | Compile and play a built-in SID preset such as Für Elise by Beethoven. | — | `preset="fuer_elise"`, `platforms`, `verify=true`, `analysisDurationSeconds=4`, `waitBeforeCaptureMs=400`, `restoreActiveBackend=true` | supports verify | ✅ | ✅ |
754
+ | `play_sid_file` | Play a SID file stored on the Ultimate filesystem. | `path` | `songnr` | — | ✅ | |
755
+ | `record_analyze` | Record audio for a fixed duration and return SID analysis metrics. | `durationSeconds` | `expectedSidwave` | — | ✅ | |
756
+ | `reset` | Soft or hard reset of SID registers to clear glitches. | — | `hard=false` | — | ✅ | ✅ |
757
+ | `set_volume` | Set the SID master volume register at $D418 (0-15). | `volume` | — | — | ✅ | ✅ |
758
+ | `silence_all` | Silence all SID voices with optional audio verification. | — | `verify=false` | supports verify | ✅ | ✅ |
721
759
 
722
760
  #### c64_stream
723
761
 
724
762
  Grouped entry point for starting and stopping Ultimate streaming sessions.
725
763
 
726
- | Operation | Description | Required Inputs | Notes | C64U | VICE |
727
- | --- | --- | --- | --- | --- | --- |
728
- | `start` | Start an Ultimate streaming session toward a host:port target. | `stream`, `target` | — | ✅ | |
729
- | `stop` | Stop an active Ultimate streaming session. | `stream` | — | ✅ | |
764
+ | Operation | Description | Required Inputs | Optional Inputs | Notes | C64U | VICE |
765
+ | --- | --- | --- | --- | --- | --- | --- |
766
+ | `start` | Start an Ultimate streaming session toward a host:port target. | `stream`, `target` | — | — | ✅ | |
767
+ | `stop` | Stop an active Ultimate streaming session. | `stream` | — | — | ✅ | |
730
768
 
731
769
  #### c64_system
732
770
 
733
771
  Grouped entry point for power, reset, menu, and background task control.
734
772
 
735
- | Operation | Description | Required Inputs | Notes | C64U | VICE |
736
- | --- | --- | --- | --- | --- | --- |
737
- | `list_tasks` | List known background tasks with status metadata. | — | — | ✅ | ✅ |
738
- | `menu` | Toggle the Ultimate menu button for navigation. | — | — | ✅ | |
739
- | `pause` | Pause the machine until resumed. | — | — | ✅ | |
740
- | `performance_report` | Summarize diagnostics spans and tool latencies from the current or latest MCP session. | — | — | ✅ | ✅ |
741
- | `poweroff` | Request a controlled shutdown via the Ultimate firmware. | — | — | ✅ | ✅ |
742
- | `reboot` | Trigger a firmware reboot to recover from faults. | — | — | ✅ | ✅ |
743
- | `reset` | Issue a soft reset without cutting power. | — | — | ✅ | ✅ |
744
- | `resume` | Resume CPU execution after a pause. | — | — | ✅ | |
745
- | `start_task` | Start a named background task that runs on an interval. | `name`, `operation` | — | ✅ | ✅ |
746
- | `stop_all_tasks` | Stop every running background task and persist state. | — | — | ✅ | ✅ |
747
- | `stop_task` | Stop a specific background task and clear its timer. | `name` | — | ✅ | ✅ |
773
+ | Operation | Description | Required Inputs | Optional Inputs | Notes | C64U | VICE |
774
+ | --- | --- | --- | --- | --- | --- | --- |
775
+ | `list_tasks` | List known background tasks with status metadata. | — | — | — | ✅ | ✅ |
776
+ | `menu` | Toggle the Ultimate menu button for navigation. | — | — | — | ✅ | |
777
+ | `pause` | Pause the machine until resumed. | — | — | — | ✅ | |
778
+ | `performance_report` | Summarize diagnostics spans and tool latencies from the current or latest MCP session. | — | `scope="current"`, `includeTimeline=true`, `maxEntries=25` | — | ✅ | ✅ |
779
+ | `poweroff` | Request a controlled shutdown via the Ultimate firmware. | — | — | — | ✅ | ✅ |
780
+ | `reboot` | Trigger a firmware reboot to recover from faults. | — | — | — | ✅ | ✅ |
781
+ | `reset` | Issue a soft reset without cutting power. | — | — | — | ✅ | ✅ |
782
+ | `resume` | Resume CPU execution after a pause. | — | — | — | ✅ | |
783
+ | `start_task` | Start a named background task that runs on an interval. | `name`, `operation` | `arguments={}`, `intervalMs=1000`, `maxIterations` | — | ✅ | ✅ |
784
+ | `stop_all_tasks` | Stop every running background task and persist state. | — | — | — | ✅ | ✅ |
785
+ | `stop_task` | Stop a specific background task and clear its timer. | `name` | — | — | ✅ | ✅ |
748
786
 
749
787
  #### c64_vice
750
788
 
751
789
  Grouped entry point for reading and updating selected VICE resources.
752
790
 
753
- | Operation | Description | Required Inputs | Notes | C64U | VICE |
754
- | --- | --- | --- | --- | --- | --- |
755
- | `resource_get` | Read a VICE configuration resource (safe prefixes only). | `name` | — | | ✅ |
756
- | `resource_set` | Write a VICE configuration resource (safe prefixes only). | `name`, `value` | — | | ✅ |
791
+ | Operation | Description | Required Inputs | Optional Inputs | Notes | C64U | VICE |
792
+ | --- | --- | --- | --- | --- | --- | --- |
793
+ | `resource_get` | Read a VICE configuration resource (safe prefixes only). | `name` | — | — | | ✅ |
794
+ | `resource_set` | Write a VICE configuration resource (safe prefixes only). | `name`, `value` | — | — | | ✅ |
757
795
 
758
796
  ### Resources
759
797
 
760
798
  | Name | Summary |
761
799
  | --- | --- |
762
- | `c64://docs/index` | Explains how to approach each knowledge bundle and when to consult it. |
763
- | `c64://context/bootstrap` | Step-by-step rules for safe automation, verification, and rollback on the C64. |
764
- | `c64://context/fast-paths` | Condensed routing guide for one-call demos, backend switching, and when to prefer orchestration over manual tool composition. |
765
- | `c64://specs/basic` | Token definitions, syntax rules, and device I/O guidance for BASIC v2. |
766
- | `c64://docs/basic/pitfalls` | Quickref covering quotation handling, line length, tokenization, variable names, and other BASIC traps. |
767
- | `c64://specs/assembly` | Official opcode matrix, addressing modes, and zero-page strategy for the 6510 CPU. |
768
- | `c64://specs/sid` | Register map, waveform behaviour, and ADSR envelopes for expressive SID playback. |
769
- | `c64://specs/sidwave` | Defines the SIDWAVE interchange format used by the SID composer workflow. |
770
- | `c64://docs/sid/file-structure` | Explains PSID/RSID headers, metadata blocks, and compatibility notes for imported music. |
771
- | `c64://docs/sid/best-practices` | Captures proven waveforms, ADSR presets, phrasing, and verification workflow for pleasant SID music. |
772
- | `c64://specs/vic` | Covers raster timing, sprite control, colour RAM, and bitmap modes on the VIC-II. |
773
- | `c64://specs/charset` | Character code table mapping PETSCII codes to screen codes, glyphs, and keyboard input. |
774
- | `c64://docs/petscii-style` | Documents colour palette, readability presets, dithering patterns, and best practices for creating artistic and readable PETSCII displays. |
775
- | `c64://docs/sprite-charset-workflows` | Documents sprite and charset workflows, memory layout, VIC-II configuration, common pitfalls, and proven techniques for hardware-accelerated graphics. |
776
- | `c64://specs/memory-map` | Page-by-page breakdown of the 64 KB address space with hardware, ROM, and RAM regions. |
777
- | `c64://specs/memory-low` | Documents zero-page variables, BASIC pointers, and KERNAL workspace addresses. |
778
- | `c64://specs/memory-kernal` | Lists KERNAL ROM vectors and service routines for OS-level functionality. |
779
- | `c64://specs/io` | Covers VIC-II, SID, CIA, and system control registers with address ranges and usage notes. |
780
- | `c64://specs/cia` | Details CIA 1/2 registers, timers, interrupts, and keyboard matrix layout. |
781
- | `c64://specs/printer` | Covers device setup, control codes, and Ultimate 64 integration for printers. |
782
- | `c64://docs/printer/guide` | Quick-look workflow covering setup, troubleshooting, and sample jobs for both printer families. |
783
- | `c64://docs/printer/commodore-text` | Character sets, control codes, and formatting for Commodore MPS text output. |
784
- | `c64://docs/printer/commodore-bitmap` | Details bitmap modes, graphics commands, and data layout for MPS bitmap printing. |
785
- | `c64://docs/printer/epson-text` | Lists ESC/P control codes and formatting advice for Epson FX text output. |
786
- | `c64://docs/printer/epson-bitmap` | Explains bit-image modes, density options, and data packing for Epson bitmap jobs. |
787
- | `c64://docs/printer/prompts` | Reusable prompt templates that drive complex printer jobs through the MCP server. |
800
+ | `c64://guide/index` | Explains how to approach each knowledge bundle and when to consult it. |
801
+ | `c64://guide/bootstrap` | Step-by-step rules for safe automation, verification, and rollback on the C64. |
802
+ | `c64://guide/fast-paths` | Condensed routing guide for one-call demos, backend switching, and when to prefer orchestration over manual tool composition. |
803
+ | `c64://vice/binary-monitor-spec` | Transport framing, single-client constraints, command semantics, and monitor side effects that shape all VICE-backed operations. |
804
+ | `c64://basic/spec` | Token definitions, syntax rules, and device I/O guidance for BASIC v2. |
805
+ | `c64://basic/pitfalls` | Quickref covering quotation handling, line length, tokenization, variable names, and other BASIC traps. |
806
+ | `c64://assembly/6510-spec` | Official opcode matrix, addressing modes, and zero-page strategy for the 6510 CPU. |
807
+ | `c64://sound/sid/spec` | Register map, waveform behaviour, and ADSR envelopes for expressive SID playback. |
808
+ | `c64://sound/sidwave/spec` | Defines the SIDWAVE interchange format used by the SID composer workflow. |
809
+ | `c64://sound/sid/file-format` | Explains PSID/RSID headers, metadata blocks, and compatibility notes for imported music. |
810
+ | `c64://sound/sid/best-practices` | Captures proven waveforms, ADSR presets, phrasing, and verification workflow for pleasant SID music. |
811
+ | `c64://graphics/vic/spec` | Covers raster timing, sprite control, colour RAM, and bitmap modes on the VIC-II. |
812
+ | `c64://graphics/character-set` | Character code table mapping PETSCII codes to screen codes, glyphs, and keyboard input. |
813
+ | `c64://graphics/petscii/style-guide` | Documents colour palette, readability presets, dithering patterns, and best practices for creating artistic and readable PETSCII displays. |
814
+ | `c64://graphics/sprite-charset/best-practices` | Documents sprite and charset workflows, memory layout, VIC-II configuration, common pitfalls, and proven techniques for hardware-accelerated graphics. |
815
+ | `c64://memory/map` | Page-by-page breakdown of the 64 KB address space with hardware, ROM, and RAM regions. |
816
+ | `c64://memory/zero-page-and-workspace` | Documents zero-page variables, BASIC pointers, and KERNAL workspace addresses. |
817
+ | `c64://kernal/rom-routines` | Lists KERNAL ROM vectors and service routines for OS-level functionality. |
818
+ | `c64://io/spec` | Covers VIC-II, SID, CIA, and system control registers with address ranges and usage notes. |
819
+ | `c64://io/cia/spec` | Details CIA 1/2 registers, timers, interrupts, and keyboard matrix layout. |
820
+ | `c64://printer/spec` | Covers device setup, control codes, and Ultimate 64 integration for printers. |
821
+ | `c64://printer/commodore/text` | Character sets, control codes, and formatting for Commodore MPS text output. |
822
+ | `c64://printer/commodore/bitmap` | Details bitmap modes, graphics commands, and data layout for MPS bitmap printing. |
823
+ | `c64://printer/epson/text` | Lists ESC/P control codes and formatting advice for Epson FX text output. |
824
+ | `c64://printer/epson/bitmap` | Explains bit-image modes, density options, and data packing for Epson bitmap jobs. |
825
+ | `c64://printer/prompt-guide` | Reusable prompt templates that drive complex printer jobs through the MCP server. |
788
826
 
789
827
  ### Prompts
790
828