Skip to main content
Glama
dbonomo
by dbonomo

flow_run

Run a flow spec on the Pebble emulator, capture screenshots at each step, and return images with metadata.

Instructions

Run a gallery-style flow spec against the emery emulator and return every screenshot.

Parses flow_text (see pebble_mcp.flow for the line format), installs each app/pbw onto the emulator with the kill+wipe-first discipline, drives the buttons/waits, and captures the shot steps. Project dirs in app steps resolve against the repo root (parent of the pebble-mcp package dir, overridable via PEBBLE_MCP_REPO_ROOT). out_dir defaults to a fresh tempdir.

Returns a JSON metadata block — flow name, out_dir, per-shot {app, name, path, duration_s}, plus retries and wedge_recoveries — followed by one MCP image per shot.

Refuses any flow requesting more than 40 shots (runaway guard).

SAFETY — live-write hazard. flow_run drives REAL apps that can fire REAL network POSTs. A flow against an app with server-mutating screens must NEVER confirm a live-send action (e.g. press select on a "submit" / "send" screen or inside a value picker that commits on confirm). The convention is a # SAFETY RULES (live-write hazards — DO NOT TRIGGER): comment block at the top of every flow file; the bundled example flows under pebble_mcp/examples/flows/ show the pattern — follow their rules. Capturing those screens is fine; confirming them is not.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
out_dirNo
flow_textYes
Behavior5/5

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

With no annotations provided, the description takes on the full burden of behavioral disclosure. It covers installation discipline (kill+wipe-first), environment variable override, default tempdir, the 40-shot guard, the metadata return format, and an extensive live-write hazard warning. This is far beyond a typical tool description.

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?

The description is long but each paragraph carries distinct information: what it does, how it executes, what it returns, its guard, and its safety rules. It's structured with paragraph breaks and front-loaded with the main purpose, so the length is justified.

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

Completeness5/5

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

The tool is complex (executes flows, installs apps, captures screenshots, has safety hazards), and the description addresses all major aspects: input format reference, output structure, execution behavior, limits, and safety. Given no output schema, the description conveys the return shape. It is complete for an agent to use effectively.

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

Parameters4/5

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

Both parameters are described beyond the schema: flow_text is identified as a flow spec with a reference to the line format, and out_dir is explained as defaulting to a fresh tempdir. While the exact flow_text syntax is externalized to a reference, the description gives enough context for an agent to understand what to pass.

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

Purpose5/5

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

The description opens with a specific verb+object and output: 'Run a gallery-style flow spec against the emery emulator and return every screenshot.' This clearly distinguishes it from sibling tools like flow_validate (validation) and emu_input (individual button presses).

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool (running a flow and capturing screenshots) and includes safety exclusions about never confirming live-write actions. However, it doesn't explicitly name alternatives or contrast with flow_validate/emu_screenshot, so it falls short of the strictest 'when vs when-not' standard.

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

Install Server

Other Tools

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/dbonomo/pebble-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server