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.
- package/.github/prompts/steer.prompt.md +55 -0
- package/AGENTS.md +9 -7
- package/README.md +192 -154
- package/data/embeddings_asm.json +1 -1
- package/data/embeddings_basic.json +1 -1
- package/data/embeddings_hardware.json +1 -1
- package/data/embeddings_mixed.json +1 -1
- package/data/embeddings_other.json +1 -1
- package/data/graphics/petscii-style-guide.md +4 -4
- package/data/graphics/sprite-charset-best-practices.md +9 -9
- package/data/vice/vice-binary-monitor-spec.md +938 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/c64Client.js +76 -2
- package/dist/device.js +129 -13
- package/dist/mcp-server.js +1 -1
- package/dist/prompts/registry.js +27 -25
- package/dist/rag/indexer.js +18 -8
- package/dist/rag/knowledgeIndex.js +112 -79
- package/dist/rag/resourceUris.js +93 -0
- package/dist/sidwaveCompiler.js +1 -1
- package/dist/{assemblyConverter.js → tools/assember.js} +10 -1
- package/dist/tools/audio.js +11 -11
- package/dist/{basicConverter.js → tools/basicTokenizer.js} +1 -1
- package/dist/tools/debug.js +159 -6
- package/dist/tools/developer.js +13 -13
- package/dist/tools/disassembler.js +478 -0
- package/dist/tools/graphics.js +10 -10
- package/dist/tools/input.js +338 -0
- package/dist/tools/machineControl.js +5 -5
- package/dist/tools/memory.js +336 -12
- package/dist/tools/meta/index.js +1 -1
- package/dist/tools/printer.js +11 -12
- package/dist/tools/programRunners.js +61 -22
- package/dist/tools/rag.js +9 -9
- package/dist/tools/registry/batch.js +167 -0
- package/dist/tools/registry/config.js +1 -1
- package/dist/tools/registry/disk.js +1 -1
- package/dist/tools/registry/drive.js +1 -1
- package/dist/tools/registry/extract.js +1 -1
- package/dist/tools/registry/graphics.js +102 -2
- package/dist/tools/registry/index.js +4 -0
- package/dist/tools/registry/input.js +2 -0
- package/dist/tools/registry/memory.js +62 -2
- package/dist/tools/registry/platform.js +1 -1
- package/dist/tools/registry/printer.js +1 -1
- package/dist/tools/registry/program.js +1 -1
- package/dist/tools/registry/rag.js +1 -1
- package/dist/tools/registry/sound.js +1 -1
- package/dist/tools/registry/stream.js +1 -1
- package/dist/tools/registry/system.js +1 -1
- package/dist/tools/schema.js +4 -5
- package/dist/tools/storage.js +15 -15
- package/dist/tools/streaming.js +3 -3
- package/dist/tools/symbolRegistry.js +49 -0
- package/dist/tools/types.js +56 -4
- package/dist/tools/vice.js +2 -5
- package/dist/vice/process.js +120 -2
- package/dist/vice/readiness.js +35 -0
- package/dist/vice/smokeOptions.js +44 -0
- package/dist/vice/viceClient.js +5 -1
- package/dist/viceRunner.js +2 -0
- package/doc/plans/prompts/README.md +7 -7
- package/mcp/prompts.json +42 -59
- package/mcp/protocol-examples.json +2 -2
- package/mcp/resources.json +179 -166
- package/mcp/schemas/c64_batch.schema.json +53 -0
- package/mcp/schemas/c64_config.schema.json +525 -283
- package/mcp/schemas/c64_debug.schema.json +763 -304
- package/mcp/schemas/c64_disk.schema.json +499 -243
- package/mcp/schemas/c64_drive.schema.json +165 -90
- package/mcp/schemas/c64_extract.schema.json +533 -274
- package/mcp/schemas/c64_graphics.schema.json +607 -295
- package/mcp/schemas/c64_input.schema.json +136 -0
- package/mcp/schemas/c64_memory.schema.json +637 -128
- package/mcp/schemas/c64_printer.schema.json +393 -196
- package/mcp/schemas/c64_program.schema.json +699 -340
- package/mcp/schemas/c64_rag.schema.json +100 -54
- package/mcp/schemas/c64_select_backend.schema.json +49 -23
- package/mcp/schemas/c64_sound.schema.json +1092 -577
- package/mcp/schemas/c64_stream.schema.json +89 -47
- package/mcp/schemas/c64_system.schema.json +351 -185
- package/mcp/schemas/c64_vice.schema.json +85 -47
- package/mcp/server.json +1 -1
- package/mcp/tools.json +7299 -3346
- package/mcp.json +3 -3
- package/package.json +17 -14
- package/scripts/fetch-external-sources.mjs +1 -2
- package/scripts/run-coverage.mjs +33 -1
- package/scripts/run-tests.mjs +2 -2
- package/scripts/run-tests.ts +275 -52
- package/scripts/update-readme.ts +132 -3
- 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://
|
|
117
|
-
- `c64://
|
|
118
|
-
- `c64://
|
|
119
|
-
- `c64://
|
|
120
|
-
- `c64://
|
|
121
|
-
- `c64://
|
|
122
|
-
- `c64://
|
|
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
|
[](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
|
|
11
11
|
[](doc/developer.md)
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
[](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
|
+
[](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
|
+
[](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
|
+
[](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 **
|
|
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
|
-
| `
|
|
588
|
-
| `
|
|
589
|
-
| `
|
|
590
|
-
| `
|
|
591
|
-
| `
|
|
592
|
-
| `
|
|
593
|
-
| `
|
|
594
|
-
| `
|
|
595
|
-
| `
|
|
596
|
-
| `
|
|
597
|
-
| `
|
|
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
|
-
| `
|
|
644
|
-
| `
|
|
645
|
-
| `
|
|
646
|
-
| `
|
|
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
|
-
| `
|
|
655
|
-
| `
|
|
656
|
-
| `
|
|
657
|
-
| `
|
|
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://
|
|
763
|
-
| `c64://
|
|
764
|
-
| `c64://
|
|
765
|
-
| `c64://
|
|
766
|
-
| `c64://
|
|
767
|
-
| `c64://
|
|
768
|
-
| `c64://
|
|
769
|
-
| `c64://
|
|
770
|
-
| `c64://
|
|
771
|
-
| `c64://
|
|
772
|
-
| `c64://
|
|
773
|
-
| `c64://
|
|
774
|
-
| `c64://
|
|
775
|
-
| `c64://
|
|
776
|
-
| `c64://
|
|
777
|
-
| `c64://
|
|
778
|
-
| `c64://
|
|
779
|
-
| `c64://
|
|
780
|
-
| `c64://
|
|
781
|
-
| `c64://
|
|
782
|
-
| `c64://
|
|
783
|
-
| `c64://
|
|
784
|
-
| `c64://
|
|
785
|
-
| `c64://
|
|
786
|
-
| `c64://
|
|
787
|
-
| `c64://
|
|
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
|
|