c64bridge 0.8.1 → 0.9.0

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 (77) hide show
  1. package/.github/prompts/steer.prompt.md +55 -0
  2. package/AGENTS.md +9 -7
  3. package/README.md +139 -95
  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 +921 -0
  12. package/dist/.tsbuildinfo +1 -1
  13. package/dist/device.js +86 -10
  14. package/dist/mcp-server.js +1 -1
  15. package/dist/prompts/registry.js +27 -25
  16. package/dist/rag/knowledgeIndex.js +112 -79
  17. package/dist/rag/resourceUris.js +93 -0
  18. package/dist/tools/audio.js +11 -11
  19. package/dist/tools/debug.js +1 -1
  20. package/dist/tools/developer.js +13 -13
  21. package/dist/tools/graphics.js +10 -10
  22. package/dist/tools/machineControl.js +5 -5
  23. package/dist/tools/memory.js +19 -11
  24. package/dist/tools/meta/index.js +1 -1
  25. package/dist/tools/printer.js +11 -12
  26. package/dist/tools/programRunners.js +16 -16
  27. package/dist/tools/rag.js +9 -9
  28. package/dist/tools/registry/config.js +1 -1
  29. package/dist/tools/registry/disk.js +1 -1
  30. package/dist/tools/registry/drive.js +1 -1
  31. package/dist/tools/registry/extract.js +1 -1
  32. package/dist/tools/registry/graphics.js +1 -1
  33. package/dist/tools/registry/memory.js +1 -1
  34. package/dist/tools/registry/platform.js +1 -1
  35. package/dist/tools/registry/printer.js +1 -1
  36. package/dist/tools/registry/program.js +1 -1
  37. package/dist/tools/registry/rag.js +1 -1
  38. package/dist/tools/registry/sound.js +1 -1
  39. package/dist/tools/registry/stream.js +1 -1
  40. package/dist/tools/registry/system.js +1 -1
  41. package/dist/tools/storage.js +15 -15
  42. package/dist/tools/streaming.js +3 -3
  43. package/dist/tools/types.js +41 -4
  44. package/dist/tools/vice.js +2 -5
  45. package/dist/vice/process.js +79 -2
  46. package/dist/vice/readiness.js +35 -0
  47. package/dist/vice/smokeOptions.js +44 -0
  48. package/dist/viceRunner.js +2 -0
  49. package/doc/plans/prompts/README.md +7 -7
  50. package/mcp/prompts.json +42 -59
  51. package/mcp/protocol-examples.json +2 -2
  52. package/mcp/resources.json +179 -166
  53. package/mcp/schemas/c64_config.schema.json +109 -326
  54. package/mcp/schemas/c64_debug.schema.json +158 -337
  55. package/mcp/schemas/c64_disk.schema.json +180 -262
  56. package/mcp/schemas/c64_drive.schema.json +31 -111
  57. package/mcp/schemas/c64_extract.schema.json +193 -291
  58. package/mcp/schemas/c64_graphics.schema.json +208 -308
  59. package/mcp/schemas/c64_memory.schema.json +94 -144
  60. package/mcp/schemas/c64_printer.schema.json +151 -205
  61. package/mcp/schemas/c64_program.schema.json +229 -367
  62. package/mcp/schemas/c64_rag.schema.json +25 -59
  63. package/mcp/schemas/c64_select_backend.schema.json +19 -26
  64. package/mcp/schemas/c64_sound.schema.json +346 -622
  65. package/mcp/schemas/c64_stream.schema.json +25 -54
  66. package/mcp/schemas/c64_system.schema.json +79 -212
  67. package/mcp/schemas/c64_vice.schema.json +24 -55
  68. package/mcp/server.json +1 -1
  69. package/mcp/tools.json +1935 -3443
  70. package/mcp.json +3 -3
  71. package/package.json +17 -14
  72. package/scripts/fetch-external-sources.mjs +1 -2
  73. package/scripts/run-coverage.mjs +26 -1
  74. package/scripts/run-tests.mjs +2 -2
  75. package/scripts/run-tests.ts +273 -52
  76. package/scripts/update-readme.ts +54 -2
  77. 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,20 @@ 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
+ [![Use with Claude Code](https://img.shields.io/badge/Use_with-Claude_Code-D97757?style=flat-square&logo=anthropic&logoColor=white)](#claude-code)
18
+
19
+ C64 Bridge is an MCP server for controlling and working with a Commodore 64 from an AI client.
20
+
21
+ 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
22
 
15
23
  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
24
 
25
+ C64 Bridge is listed in the [Official MCP Registry](https://registry.modelcontextprotocol.io/?q=c64bridge).
26
+
17
27
  ## Contents
18
28
 
19
29
  - [C64 Bridge](#c64-bridge)
@@ -43,6 +53,7 @@ It is built on the official TypeScript `@modelcontextprotocol/sdk` and supports
43
53
  - [SID Playback](#sid-playback)
44
54
  - [RAG](#rag)
45
55
  - [Testing](#testing)
56
+ - [Claude Code](#claude-code)
46
57
  - [Example Workflow](#example-workflow)
47
58
  - [HTTP Invocation](#http-invocation)
48
59
  - [Build and Test](#build-and-test)
@@ -182,9 +193,14 @@ The detailed lookup order, merge rules, backend examples, and override model are
182
193
 
183
194
  ### 4. Connect from an MCP Client
184
195
 
185
- If you use VS Code, follow the [VS Code MCP Setup](#vs-code-mcp-setup) section below.
196
+ C64 Bridge ships a single canonical `stdio` entry point that every MCP client uses:
186
197
 
187
- If you use another MCP client, point it at the `stdio` server entry point and pass any required environment variables exactly as documented in this README and in [mcp.json](./mcp.json).
198
+ - **VS Code (GitHub Copilot)** — see [VS Code MCP Setup](#vs-code-mcp-setup).
199
+ - **Claude Code (CLI and VS Code plugin)** — see [Claude Code](#claude-code).
200
+ - **Cursor, Visual Studio, VS Code Insiders** — use the install badges at the top of this README.
201
+ - **Any other MCP client** — point it at the same `stdio` server, with the environment variables documented in [Runtime Environment Variable Reference](#runtime-environment-variable-reference) and the registry manifest in [mcp.json](./mcp.json).
202
+
203
+ The startup command is the same across clients: `npx -y c64bridge@latest` for the published package, or `node scripts/start.mjs` from a local checkout. Backend selection (`c64u` vs `vice`) and credentials live in the shared [Configuration](#configuration) files and environment variables — clients only need to know the command.
188
204
 
189
205
  ## Configuration
190
206
 
@@ -235,8 +251,8 @@ Use this for managed VICE launches:
235
251
  }
236
252
  ```
237
253
 
238
- - `directory` is optional. When omitted, C64 Bridge auto-detects a VICE resource directory by looking for the standard C64 ROM set near the emulator binary and in common system locations.
239
- - `VICE_BINARY`, `VICE_DIRECTORY`, `VICE_HOST`, `VICE_PORT`, `VICE_VISIBLE`, `VICE_WARP`, and `VICE_ARGS` override managed VICE startup without editing config files.
254
+ - `directory` is optional. When omitted, or when the configured path is invalid, C64 Bridge auto-detects a VICE resource directory by looking for the standard C64 ROM set near the selected emulator binary and in common system locations.
255
+ - `VICE_BINARY`, `VICE_DIRECTORY`, `VICE_HOST`, `VICE_PORT`, `VICE_VISIBLE`, `VICE_WARP`, and `VICE_ARGS` override managed VICE startup without editing config files. Valid explicit `VICE_BINARY` and `VICE_DIRECTORY` values are used as-is; automatic search only fills in missing or invalid values.
240
256
  - If no explicit binary is configured, the runtime prefers `/usr/local/bin/x64sc` when present, then falls back to `x64sc` or `x64` on `PATH` so the same setup remains portable across operating systems.
241
257
 
242
258
  > [!NOTE]
@@ -268,6 +284,8 @@ The screenshots below were captured from actual backend bitmap responses after t
268
284
 
269
285
  ## VS Code MCP Setup
270
286
 
287
+ This section covers the GitHub Copilot integration that ships with VS Code. For the Claude Code VS Code plugin, see [Claude Code](#claude-code) — it reads `.mcp.json`, not `.vscode/mcp.json`.
288
+
271
289
  If this repository is checked out locally, open the prepared [.vscode/mcp.json](./.vscode/mcp.json).
272
290
 
273
291
  Otherwise, put the following into your own `.vscode/mcp.json`:
@@ -430,8 +448,8 @@ Every runtime environment variable documented in `mcp.json` can be set in your M
430
448
  | `DISABLE_XVFB` | 0 | — | Set to 1 to disable Xvfb fallback and use the current display only |
431
449
  | `FORCE_XVFB` | 0 | — | Set to 1 to force managed VICE launches to run under Xvfb |
432
450
  | `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 |
451
+ | `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 |
452
+ | `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
453
  | `VICE_HOST` | 127.0.0.1 | vice.host | Override the VICE Binary Monitor host |
436
454
  | `VICE_PORT` | 6502 | vice.port | Override the VICE Binary Monitor port |
437
455
  | `VICE_VISIBLE` | true | vice.visible | Launch VICE visibly on the desktop instead of headless/Xvfb when possible |
@@ -474,6 +492,24 @@ Every runtime environment variable documented in `mcp.json` can be set in your M
474
492
 
475
493
  <!-- AUTO-GENERATED:ENV-VARS-END -->
476
494
 
495
+ ## Claude Code
496
+
497
+ [Claude Code](https://docs.claude.com/en/docs/claude-code/mcp) is supported as a first-class MCP client. It uses the same canonical start command and the same backend [Configuration](#configuration) files and environment variables as every other client — only the discovery file differs.
498
+
499
+ **Claude Code CLI** — register the published server in one command:
500
+
501
+ ```bash
502
+ claude mcp add c64bridge -- npx -y c64bridge@latest
503
+ ```
504
+
505
+ Use `--scope user` to make it available across all your projects, or `--scope project` to write a `.mcp.json` next to the current repo. Backend selection (`c64u` vs `vice`), host, port, and password come from the same files documented in [Configuration](#configuration); per-shell overrides come from the variables in [Runtime Environment Variable Reference](#runtime-environment-variable-reference).
506
+
507
+ **Project-scoped discovery** — this repository ships a checked-in [.mcp.json](./.mcp.json) that points Claude Code at the local source via `node scripts/start.mjs`. When you open the repo with `claude` (CLI or VS Code plugin), Claude Code prompts to enable the project-scoped server on first run. Approve it once and the `c64_*` tools become discoverable in that workspace.
508
+
509
+ **Claude Code VS Code plugin** — the plugin reads the same `.mcp.json` and the same user-scope `claude mcp add` registrations as the CLI. No extra setup is required beyond installing the plugin and approving the project server prompt. The existing [.vscode/mcp.json](./.vscode/mcp.json) is read by GitHub Copilot, not by Claude Code; the two files coexist without conflict because they target different clients with different config schemas.
510
+
511
+ **Verify it works** — after registration, run `claude mcp list` (CLI) or open the MCP panel (plugin) and look for `c64bridge`. Then ask Claude Code something like *“use vice: write a small BASIC program that clears the screen and prints HELLO CLAUDE”* — it should call `c64_select_backend` and `c64_program` directly. If tools do not appear, confirm Node 24+ is on `PATH`, that the server was approved at the requested scope, and that the backend is reachable per the [Configuration](#configuration) section.
512
+
477
513
  ## Example Workflow
478
514
 
479
515
  Compose a children’s song with ChatGPT and VS Code:
@@ -525,14 +561,22 @@ The [`./build`](./build) script at the project root wraps all development tasks
525
561
  ./build test # integration tests (mock backend)
526
562
  ./build test --real # test against real hardware
527
563
  ./build test --platform vice --target mock # single test leg
564
+ ./build test:vice:mock # curated VICE mock matrix (feature-matrix coverage)
565
+ ./build test:vice:device # curated real-VICE validation (device backend + smoke, headless/Xvfb by default)
528
566
  ./build test:matrix # full matrix (c64u/mock · vice/mock · vice/device)
529
567
  ./build coverage # merged coverage report
530
568
  ./build coverage:single --platform c64u --target mock
569
+ npm run vice:smoke # direct VICE binary-monitor smoke test
570
+ npm run vice:smoke:visible # human-visible VICE boot + HELLO demo (keeps window open)
531
571
  ./build check # build + test matrix (no install)
532
572
  ./build rag:rebuild # rebuild RAG embeddings
533
573
  ./build release --version 1.2.3 # prepare a release
534
574
  ```
535
575
 
576
+ The visible smoke demo accepts `true`/`false`, `on`/`off`, and `1`/`0` for `VICE_VISIBLE`, `VICE_WARP`, and `VICE_KEEP_OPEN`. `npm run vice:smoke:visible` forces a visible, warp-off session, waits for a stable `READY.` screen, then injects `HELLO` and keeps the window open for inspection.
577
+
578
+ Automation note: `npm run test:vice:device` and `./build` force the real-VICE validation leg into headless/Xvfb mode so the CI-style matrix does not open a confusing local emulator window.
579
+
536
580
  > **Starting the MCP server** is not managed by `./build`. Use `npm start` (from source) or `npx -y c64bridge@latest` (published package) as shown in the [Quick Start](#quick-start) section above.
537
581
 
538
582
  ## Documentation
@@ -563,20 +607,20 @@ Grouped entry point for configuration reads/writes, diagnostics, and snapshots.
563
607
  | Operation | Description | Required Inputs | Notes | C64U | VICE |
564
608
  | --- | --- | --- | --- | --- | --- |
565
609
  | `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` | — | ✅ | ✅ |
610
+ | `diff` | Compare the current configuration with a snapshot. | — | — | ✅ | ✅ |
611
+ | `get` | Read a configuration category or specific item. | — | — | ✅ | ✅ |
568
612
  | `info` | Retrieve Ultimate hardware information and status. | — | — | ✅ | ✅ |
569
613
  | `list` | List configuration categories reported by the firmware. | — | — | ✅ | ✅ |
570
614
  | `load_flash` | Load configuration from flash storage. | — | — | ✅ | |
571
615
  | `read_debugreg` | Read the Ultimate debug register ($D7FF). | — | — | ✅ | |
572
616
  | `reset_defaults` | Reset firmware configuration to factory defaults. | — | — | ✅ | |
573
- | `restore` | Restore configuration from a snapshot file. | `path` | — | ✅ | ✅ |
617
+ | `restore` | Restore configuration from a snapshot file. | — | — | ✅ | ✅ |
574
618
  | `save_flash` | Persist the current configuration to flash storage. | — | — | ✅ | |
575
- | `set` | Write a configuration value in the selected category. | `category`, `item`, `value` | — | ✅ | ✅ |
619
+ | `set` | Write a configuration value in the selected category. | — | — | ✅ | ✅ |
576
620
  | `shuffle` | Discover PRG/CRT files and run each with optional screen capture. | — | — | ✅ | |
577
- | `snapshot` | Snapshot configuration to disk for later restore or diff. | `path` | — | ✅ | ✅ |
621
+ | `snapshot` | Snapshot configuration to disk for later restore or diff. | — | — | ✅ | ✅ |
578
622
  | `version` | Fetch firmware version details. | — | — | ✅ | ✅ |
579
- | `write_debugreg` | Write a hex value to the Ultimate debug register ($D7FF). | `value` | — | ✅ | |
623
+ | `write_debugreg` | Write a hex value to the Ultimate debug register ($D7FF). | — | — | ✅ | |
580
624
 
581
625
  #### c64_debug
582
626
 
@@ -584,17 +628,17 @@ Grouped entry point for VICE debugger operations (breakpoints, registers, steppi
584
628
 
585
629
  | Operation | Description | Required Inputs | Notes | C64U | VICE |
586
630
  | --- | --- | --- | --- | --- | --- |
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` | — | | ✅ |
631
+ | `create_checkpoint` | Create a new checkpoint (breakpoint) in VICE. | — | — | | ✅ |
632
+ | `delete_checkpoint` | Remove a checkpoint by id. | — | — | | ✅ |
633
+ | `get_checkpoint` | Fetch a single checkpoint by id. | — | — | | ✅ |
590
634
  | `get_registers` | Read register values, optionally filtered by name or id. | — | — | | ✅ |
591
635
  | `list_checkpoints` | List all active VICE checkpoints (breakpoints). | — | — | | ✅ |
592
636
  | `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` | — | | ✅ |
637
+ | `set_condition` | Attach a conditional expression to a checkpoint. | — | — | | ✅ |
638
+ | `set_registers` | Write register values. | — | — | | ✅ |
595
639
  | `step` | Single-step CPU execution. | — | — | | ✅ |
596
640
  | `step_return` | Continue execution until the current routine returns. | — | — | | ✅ |
597
- | `toggle_checkpoint` | Enable or disable a checkpoint by id. | `id`, `enabled` | — | | ✅ |
641
+ | `toggle_checkpoint` | Enable or disable a checkpoint by id. | — | — | | ✅ |
598
642
 
599
643
  #### c64_disk
600
644
 
@@ -602,12 +646,12 @@ Grouped entry point for disk mounts, listings, image creation, and program disco
602
646
 
603
647
  | Operation | Description | Required Inputs | Notes | C64U | VICE |
604
648
  | --- | --- | --- | --- | --- | --- |
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` | — | ✅ | ✅ |
649
+ | `create_image` | Create a blank disk image of the specified format. | — | supports verify | ✅ | |
650
+ | `file_info` | Inspect metadata for a file on the Ultimate filesystem. | — | supports verify | ✅ | |
651
+ | `find_and_run` | Search for a PRG/CRT by name substring and run the first match. | — | supports verify | ✅ | |
652
+ | `list_drives` | List Ultimate drive slots and their mounted images. | — | supports verify | ✅ | ✅ |
653
+ | `mount` | Mount a disk image with optional verification and retries. | — | supports verify | ✅ | ✅ |
654
+ | `unmount` | Remove the mounted image from an Ultimate drive slot. | — | supports verify | ✅ | ✅ |
611
655
 
612
656
  #### c64_drive
613
657
 
@@ -615,11 +659,11 @@ Grouped entry point for drive power, mode, reset, and ROM operations.
615
659
 
616
660
  | Operation | Description | Required Inputs | Notes | C64U | VICE |
617
661
  | --- | --- | --- | --- | --- | --- |
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` | — | ✅ | ✅ |
662
+ | `load_rom` | Temporarily load a custom ROM into an Ultimate drive slot. | — | — | ✅ | |
663
+ | `power_off` | Power off a specific Ultimate drive slot. | — | — | ✅ | ✅ |
664
+ | `power_on` | Power on a specific Ultimate drive slot. | — | — | ✅ | ✅ |
665
+ | `reset` | Issue an IEC reset for the selected drive slot. | — | — | ✅ | ✅ |
666
+ | `set_mode` | Set the emulation mode for a drive slot (1541/1571/1581). | — | — | ✅ | ✅ |
623
667
 
624
668
  #### c64_extract
625
669
 
@@ -630,8 +674,8 @@ Grouped entry point for sprite/charset extraction, memory dumps, filesystem stat
630
674
  | `charset` | Locate and extract 2KB character sets from RAM. | — | — | ✅ | |
631
675
  | `firmware_health` | Run firmware readiness checks and report status metrics. | — | — | ✅ | |
632
676
  | `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` | — | ✅ | |
677
+ | `memory_dump` | Dump a RAM range to hex or binary files with manifest metadata. | — | — | ✅ | |
678
+ | `sprites` | Scan RAM for sprites and optionally export .spr files. | — | — | ✅ | |
635
679
 
636
680
  #### c64_graphics
637
681
 
@@ -640,10 +684,10 @@ Grouped entry point for frame capture and graphics rendering workflows.
640
684
  | Operation | Description | Required Inputs | Notes | C64U | VICE |
641
685
  | --- | --- | --- | --- | --- | --- |
642
686
  | `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` | — | ✅ | ✅ |
687
+ | `render_bitmap` | Import an image file, convert it to VIC-II bitmap memory, write it into RAM, and display it. | — | — | ✅ | ✅ |
644
688
  | `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` | — | ✅ | ✅ |
689
+ | `render_petscii_text` | Display PETSCII text with optional border and background colours. | — | — | ✅ | ✅ |
690
+ | `render_sprite` | Display supplied 63-byte sprite data at the requested position and colour by writing memory and patching VIC-II registers directly. | — | — | ✅ | ✅ |
647
691
 
648
692
  #### c64_memory
649
693
 
@@ -651,10 +695,10 @@ Grouped entry point for memory I/O, screen reads, and screen polling.
651
695
 
652
696
  | Operation | Description | Required Inputs | Notes | C64U | VICE |
653
697
  | --- | --- | --- | --- | --- | --- |
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 | ✅ | ✅ |
698
+ | `read` | Read a range of bytes and return a hex dump with address metadata. | — | supports verify | ✅ | ✅ |
699
+ | `read_screen` | Return the current 40x25 text screen converted to ASCII. | — | supports verify | ✅ | ✅ |
700
+ | `wait_for_text` | Poll the screen until a substring or regex appears, or timeout elapses. | — | supports verify | ✅ | ✅ |
701
+ | `write` | Write a hexadecimal byte sequence into RAM. | — | supports verify | ✅ | ✅ |
658
702
 
659
703
  #### c64_printer
660
704
 
@@ -662,9 +706,9 @@ Grouped entry point for Commodore and Epson printing helpers.
662
706
 
663
707
  | Operation | Description | Required Inputs | Notes | C64U | VICE |
664
708
  | --- | --- | --- | --- | --- | --- |
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` | — | ✅ | |
709
+ | `define_chars` | Define custom printer characters (Commodore DLL mode). | — | — | ✅ | |
710
+ | `print_bitmap` | Print a bitmap row via Commodore (BIM) or Epson ESC/P workflows. | — | — | ✅ | |
711
+ | `print_text` | Generate BASIC that prints text to device 4. | — | — | ✅ | |
668
712
 
669
713
  #### c64_program
670
714
 
@@ -672,14 +716,14 @@ Grouped entry point for program upload, execution, and batch workflows.
672
716
 
673
717
  | Operation | Description | Required Inputs | Notes | C64U | VICE |
674
718
  | --- | --- | --- | --- | --- | --- |
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` | — | ✅ | |
719
+ | `batch_run` | Run multiple PRG/CRT programs with post-run assertions. | — | supports verify | ✅ | ✅ |
720
+ | `bundle_run` | Capture screen, memory, and debug registers into an artifact bundle. | — | supports verify | ✅ | |
677
721
  | `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 | ✅ | ✅ |
722
+ | `load_prg` | Load a PRG from Ultimate storage without executing it. | — | supports verify | ✅ | |
723
+ | `run_crt` | Mount and run a CRT cartridge image. | — | supports verify | ✅ | |
724
+ | `run_prg` | Load and execute a PRG from Ultimate-visible storage on c64u or a host-local path on VICE. | — | supports verify | ✅ | ✅ |
725
+ | `upload_run_asm` | Assemble 6502/6510 source, upload the PRG, and execute it. | — | supports verify | ✅ | ✅ |
726
+ | `upload_run_basic` | Upload Commodore BASIC v2 source and execute it immediately. | — | supports verify | ✅ | ✅ |
683
727
 
684
728
  #### c64_rag
685
729
 
@@ -687,8 +731,8 @@ Grouped entry point for BASIC and assembly RAG lookups.
687
731
 
688
732
  | Operation | Description | Required Inputs | Notes | C64U | VICE |
689
733
  | --- | --- | --- | --- | --- | --- |
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` | — | ✅ | ✅ |
734
+ | `asm` | Retrieve 6502/6510 assembly references from the local knowledge base. | — | — | ✅ | ✅ |
735
+ | `basic` | Retrieve BASIC references and snippets from the local knowledge base. | — | — | ✅ | ✅ |
692
736
 
693
737
  #### c64_select_backend
694
738
 
@@ -696,7 +740,7 @@ Switch the active backend between C64U hardware and the VICE emulator at runtime
696
740
 
697
741
  | Operation | Description | Required Inputs | Notes | C64U | VICE |
698
742
  | --- | --- | --- | --- | --- | --- |
699
- | `select` | Switch the active runtime backend without restarting the MCP server. | `backend` | — | ✅ | ✅ |
743
+ | `select` | Switch the active runtime backend without restarting the MCP server. | — | — | ✅ | ✅ |
700
744
 
701
745
  #### c64_sound
702
746
 
@@ -704,19 +748,19 @@ Grouped entry point for SID control, playback, composition, and analysis workflo
704
748
 
705
749
  | Operation | Description | Required Inputs | Notes | C64U | VICE |
706
750
  | --- | --- | --- | --- | --- | --- |
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. | — | — | ✅ | ✅ |
751
+ | `analyze` | Automatically analyze SID playback when verification is requested. | — | supports verify | ✅ | |
752
+ | `capture_samples` | Capture raw stereo PCM samples from the C64 Ultimate audio UDP stream. | — | supports verify | ✅ | |
753
+ | `compile_play` | Compile SIDWAVE or CPG source and optionally play it immediately. | — | supports verify | ✅ | ✅ |
754
+ | `generate` | Generate a lightweight SID arpeggio playback sequence. | — | supports verify | ✅ | ✅ |
755
+ | `note_off` | Release a SID voice by clearing its gate bit. | — | supports verify | ✅ | ✅ |
756
+ | `note_on` | Trigger a SID voice with configurable waveform, ADSR, and pitch. | — | supports verify | ✅ | ✅ |
713
757
  | `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` | — | ✅ | |
758
+ | `play_mod_file` | Play a MOD tracker module via the Ultimate SID player. | — | supports verify | ✅ | |
715
759
  | `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` | — | ✅ | ✅ |
760
+ | `play_sid_file` | Play a SID file stored on the Ultimate filesystem. | — | supports verify | ✅ | |
761
+ | `record_analyze` | Record audio for a fixed duration and return SID analysis metrics. | — | supports verify | ✅ | |
762
+ | `reset` | Soft or hard reset of SID registers to clear glitches. | — | supports verify | ✅ | ✅ |
763
+ | `set_volume` | Set the SID master volume register at $D418 (0-15). | — | supports verify | ✅ | ✅ |
720
764
  | `silence_all` | Silence all SID voices with optional audio verification. | — | supports verify | ✅ | ✅ |
721
765
 
722
766
  #### c64_stream
@@ -725,8 +769,8 @@ Grouped entry point for starting and stopping Ultimate streaming sessions.
725
769
 
726
770
  | Operation | Description | Required Inputs | Notes | C64U | VICE |
727
771
  | --- | --- | --- | --- | --- | --- |
728
- | `start` | Start an Ultimate streaming session toward a host:port target. | `stream`, `target` | — | ✅ | |
729
- | `stop` | Stop an active Ultimate streaming session. | `stream` | — | ✅ | |
772
+ | `start` | Start an Ultimate streaming session toward a host:port target. | — | — | ✅ | |
773
+ | `stop` | Stop an active Ultimate streaming session. | — | — | ✅ | |
730
774
 
731
775
  #### c64_system
732
776
 
@@ -742,9 +786,9 @@ Grouped entry point for power, reset, menu, and background task control.
742
786
  | `reboot` | Trigger a firmware reboot to recover from faults. | — | — | ✅ | ✅ |
743
787
  | `reset` | Issue a soft reset without cutting power. | — | — | ✅ | ✅ |
744
788
  | `resume` | Resume CPU execution after a pause. | — | — | ✅ | |
745
- | `start_task` | Start a named background task that runs on an interval. | `name`, `operation` | — | ✅ | ✅ |
789
+ | `start_task` | Start a named background task that runs on an interval. | — | — | ✅ | ✅ |
746
790
  | `stop_all_tasks` | Stop every running background task and persist state. | — | — | ✅ | ✅ |
747
- | `stop_task` | Stop a specific background task and clear its timer. | `name` | — | ✅ | ✅ |
791
+ | `stop_task` | Stop a specific background task and clear its timer. | — | — | ✅ | ✅ |
748
792
 
749
793
  #### c64_vice
750
794
 
@@ -752,39 +796,39 @@ Grouped entry point for reading and updating selected VICE resources.
752
796
 
753
797
  | Operation | Description | Required Inputs | Notes | C64U | VICE |
754
798
  | --- | --- | --- | --- | --- | --- |
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` | — | | ✅ |
799
+ | `resource_get` | Read a VICE configuration resource (safe prefixes only). | — | — | | ✅ |
800
+ | `resource_set` | Write a VICE configuration resource (safe prefixes only). | — | — | | ✅ |
757
801
 
758
802
  ### Resources
759
803
 
760
804
  | Name | Summary |
761
805
  | --- | --- |
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. |
806
+ | `c64://guide/index` | Explains how to approach each knowledge bundle and when to consult it. |
807
+ | `c64://guide/bootstrap` | Step-by-step rules for safe automation, verification, and rollback on the C64. |
808
+ | `c64://guide/fast-paths` | Condensed routing guide for one-call demos, backend switching, and when to prefer orchestration over manual tool composition. |
809
+ | `c64://vice/binary-monitor-spec` | Transport framing, single-client constraints, command semantics, and monitor side effects that shape all VICE-backed operations. |
810
+ | `c64://basic/spec` | Token definitions, syntax rules, and device I/O guidance for BASIC v2. |
811
+ | `c64://basic/pitfalls` | Quickref covering quotation handling, line length, tokenization, variable names, and other BASIC traps. |
812
+ | `c64://assembly/6510-spec` | Official opcode matrix, addressing modes, and zero-page strategy for the 6510 CPU. |
813
+ | `c64://sound/sid/spec` | Register map, waveform behaviour, and ADSR envelopes for expressive SID playback. |
814
+ | `c64://sound/sidwave/spec` | Defines the SIDWAVE interchange format used by the SID composer workflow. |
815
+ | `c64://sound/sid/file-format` | Explains PSID/RSID headers, metadata blocks, and compatibility notes for imported music. |
816
+ | `c64://sound/sid/best-practices` | Captures proven waveforms, ADSR presets, phrasing, and verification workflow for pleasant SID music. |
817
+ | `c64://graphics/vic/spec` | Covers raster timing, sprite control, colour RAM, and bitmap modes on the VIC-II. |
818
+ | `c64://graphics/character-set` | Character code table mapping PETSCII codes to screen codes, glyphs, and keyboard input. |
819
+ | `c64://graphics/petscii/style-guide` | Documents colour palette, readability presets, dithering patterns, and best practices for creating artistic and readable PETSCII displays. |
820
+ | `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. |
821
+ | `c64://memory/map` | Page-by-page breakdown of the 64 KB address space with hardware, ROM, and RAM regions. |
822
+ | `c64://memory/zero-page-and-workspace` | Documents zero-page variables, BASIC pointers, and KERNAL workspace addresses. |
823
+ | `c64://kernal/rom-routines` | Lists KERNAL ROM vectors and service routines for OS-level functionality. |
824
+ | `c64://io/spec` | Covers VIC-II, SID, CIA, and system control registers with address ranges and usage notes. |
825
+ | `c64://io/cia/spec` | Details CIA 1/2 registers, timers, interrupts, and keyboard matrix layout. |
826
+ | `c64://printer/spec` | Covers device setup, control codes, and Ultimate 64 integration for printers. |
827
+ | `c64://printer/commodore/text` | Character sets, control codes, and formatting for Commodore MPS text output. |
828
+ | `c64://printer/commodore/bitmap` | Details bitmap modes, graphics commands, and data layout for MPS bitmap printing. |
829
+ | `c64://printer/epson/text` | Lists ESC/P control codes and formatting advice for Epson FX text output. |
830
+ | `c64://printer/epson/bitmap` | Explains bit-image modes, density options, and data packing for Epson bitmap jobs. |
831
+ | `c64://printer/prompt-guide` | Reusable prompt templates that drive complex printer jobs through the MCP server. |
788
832
 
789
833
  ### Prompts
790
834