Skip to main content
Glama

sim_run

Boot and simulate ESP32 firmware in a local emulator without hardware. Capture UART logs, FreeRTOS asserts, memory faults, and stop reasons to debug embedded code.

Instructions

Boots and simulates ESP32 firmware in a local emulator without hardware. Captures UART logs, FreeRTOS asserts, memory faults, and stop reason.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
chipNoTarget chip family. Default is s3 (ESP32-S3).
wifiNoAttach a virtual access point with DHCP/DNS/NAT. Spec like 'ssid=demo,psk=secret' (keys: ssid, psk, chan, bssid), or a bare SSID for an open network. Station gets 10.0.2.15.
boardNoBoard model: S3 'atech14' (default), 'waveshare-lcd4b', 'waveshare-amoled18-v2', 'waveshare-cam'; C6 'waveshare-c6-lcd147'; ESP32 'ttgo-tdisplay', 'esp32dev-loopback'; 'none' for a bare module. Omit on the C3, which has no boards. See sim_list_boards.
appBinNoDirect path to the application binary (.bin).
consoleNoConsole source to capture (default: both = UART0 + USB-Serial/JTAG). Lines ESP-IDF mirrors on both consoles are shown once.
ptableBinNoDirect path to partition-table.bin (needed with appBin for a real ROM boot).
maxSecondsNoMaximum emulated time in seconds (default: 10s). Emulation usually runs faster than real time.
projectDirNoPath to the ESP-IDF project root or build folder. If omitted, uses current working directory.
bootloaderBinNoDirect path to bootloader.bin (needed with appBin for a real ROM boot).
stopAfterExceptionsNoStop after N CPU exceptions (unset by default). Counts every exception, including the window overflow/underflow ones Xtensa firmware takes constantly, so it is a debugging aid, not a crash detector. Panics are detected from the log regardless.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.1

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses that execution is hardware-free and enumerates what is captured (UART logs, FreeRTOS asserts, memory faults, stop reason), but says nothing about blocking behavior, whether artifacts are written to disk, or how failures surface to the caller.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler, with the core action front-loaded and the diagnostic outputs listed compactly. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description partially compensates by naming the captured artifacts. However, for a 10-parameter tool with two distinct input modes (projectDir vs explicit appBin/ptableBin/bootloaderBin), it gives no guidance on which mode to choose or what a run session returns beyond the diagnostic list.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 10 parameters are already documented with rich detail (chip defaults, wifi spec syntax, board models, console modes). The description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (boots and simulates ESP32 firmware) plus the execution mode (local emulator, no hardware), which is unambiguous on its own. It never names or contrasts with siblings like sim_script or sim_expect, so an agent must infer that this is the raw run entry point rather than a scripted/scenario runner.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites (e.g. firmware must be built first), and no routing to sim_script / sim_expect / sim_doctor. The only implicit hint is that this is a run action, leaving the agent to guess how it relates to the other five sim_* tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.