Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
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 limit clipped the list. Does not disturb run/stop state.

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 xpet out.d64 autostarts it. Returns the exact run command in "run".

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

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

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