pet-tools-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| pet_session_listA | List running emulated PET sessions (name, model, pid, monitor port). |
| pet_session_startA | Boot a fresh emulated PET (headless, warp). Models: pet2001-4k, pet2001, pet3032, pet4032, pet8032, pet8296. Optionally attach a d64/d80/d82 disk image. |
| pet_session_stopC | Stop a running PET session (the only one if name is omitted). |
| pet_session_resetC | Reset the PET (soft, or hard power-cycle). Leaves the machine running. |
| pet_statusB | The session and whether the machine is running or stopped right now. state is answered by the session daemon's own tracking (no emulator traffic); "unknown" without a daemon. |
| pet_screen_textA | Read the PET screen as plain text. This is the PREFERRED way to see program output — faster and more reliable than screenshots for AI use. |
| pet_screenshotA | Save a PNG screenshot. Prefer pet_screen_text for reading output; use this only when pixel-level appearance matters. |
| pet_mem_readA | Read emulated memory. addr accepts $hex, 0xhex, decimal, or a symbol from the loaded label file. Returns hex-encoded bytes plus "bytes" as a decimal int array. |
| pet_mem_findB | Search memory for a byte pattern (values: one or more $hex/decimal
bytes). Returns match addresses; "truncated" is true when |
| pet_mem_writeB | Write bytes to emulated memory. addr accepts $hex/0xhex/decimal/symbol. |
| pet_reg_getB | Read CPU registers. PC is annotated with the nearest symbol when a label file is loaded. |
| pet_reg_setC | Set a CPU register (e.g. PC, A, X, Y). value accepts $hex/0xhex/decimal. |
| pet_break_addA | Set a breakpoint at an address or symbol. Machine keeps running; use pet_wait_break to block until it fires. |
| pet_break_listB | List breakpoints/watchpoints with hit counts. |
| pet_break_removeC | Remove a breakpoint/watchpoint by id. |
| pet_break_clearA | Remove ALL breakpoints (exec checkpoints); watchpoints are kept. Checkpoints persist across pet_run/rebuilds — clear stale ones or duplicates accumulate. |
| pet_watch_clearA | Remove ALL watchpoints (load/store checkpoints); breakpoints are kept. |
| pet_watch_addC | Set a watchpoint on a memory range (default: both load and store). |
| pet_stepA | Execute N instructions. The machine STAYS STOPPED afterwards; use pet_continue to resume. |
| pet_finishC | Run until the current subroutine returns. Machine stays stopped. |
| pet_continueA | Resume execution after a breakpoint/step. |
| pet_untilB | Run until an address/symbol is executed count times; machine stays stopped there. count>1 = deterministic frame stepping on a loop label. On timeout: raises with the machine LEFT RUNNING and the checkpoint removed. |
| pet_wait_textA | Block until TEXT appears on the screen. A timeout returns {"fired": null, "screen": ...} (not an error) so you can inspect what the program actually displayed. |
| pet_wait_memB | Block until the byte at addr equals the value ($hex/decimal accepted). |
| pet_wait_breakA | Block until a breakpoint/watchpoint fires; reports checkpoint id, PC, and registers. Machine is left stopped when it fires. On timeout the machine is LEFT RUNNING (your checkpoints remain set) and the result is {"fired": null, "machine": "running", ...} — data, not an error. |
| pet_buildB | Assemble 6502 source (ca65 syntax) to a .prg + VICE label file. |
| pet_packageA | Package a .s/.bas/.prg into an artifact any VICE user can run: a .prg,
or (when output ends in .d64/.d80/.d82) a disk image whose first file is
the program so |
| pet_runA | Build/tokenize a .bas/.s/.prg as needed, then load and RUN it on the running PET. Registers assembly symbols on the session automatically. |
| pet_loadA | Load a .prg via autostart (optionally without RUN); optionally register a VICE label file for symbolic debugging. |
| pet_basic_typeA | Type BASIC program text into the running PET via the keyboard (keywords may be upper or lower case; each line ends with \n). Set run=true to type RUN afterwards. |
| pet_disk_createC | Create a blank d64/d80/d82 disk image. |
| pet_disk_lsC | List the directory of a disk image. |
| pet_disk_putC | Copy a host file onto a disk image. |
| pet_disk_getC | Copy a file off a disk image to the host. |
| pet_disk_bootB | Attach a disk image to the running PET and LOAD+RUN its first file. |
| pet_rom_infoC | Identify the loaded ROM set (names + content hashes). |
| pet_rom_disasmB | Disassemble live memory with ROM + session symbol annotations. start accepts $hex/0xhex/decimal or a symbol (e.g. CHROUT). |
| pet_test_runC | Run a declarative YAML test (boots its own fresh PET; see spec §8). |
| pet_test_programsA | Run every example-program directory (program + expect.txt) as a test. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/nschneir/PET-Project'
If you have feedback or need assistance with the MCP directory API, please join our Discord server