Skip to main content
Glama

flow

Record Android phone UI actions once, then replay them without a model, using stable selectors, variables, screenshots, and step patching to automate repeatable tasks.

Instructions

Record once, replay without a model. name: flow name or .yaml path. record{name, vars?}: keep every successful act step (refs become stable selectors); ${var} in act takes vars, saved unexpanded. save / discard: end it. run{name, vars?, evidence?=dir}: replay; steps wait for their element. On failure: step number + screen; fix with patch{name, index, steps} (steps:[] deletes), run again. list, show{name}, help{name?:steps|selectors|flows|cli}: full reference.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "action": "<action>"
    },
    "name": "flow"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameNo
varsNo
indexNo
stepsNo
actionYes
evidenceNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations present, the description carries the full behavioral burden and does a good job: it discloses that recorded refs are converted to stable selectors, that `${var}` substitutions are stored unexpanded, that replay steps wait for their element, and that failure returns a step number plus screen. It also flags the destructive edge — `steps:[]` deletes a step — though it never states persistence/file-write side effects of `save` or permission requirements.

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

Conciseness4/5

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

Very tight and correctly front-loaded with the one-line identity before the mechanics; each line covers a distinct phase of the lifecycle. The invented `{name, vars?}` notation and the packed run-on failure line cost some parseability, so it is compact but slightly cryptic rather than cleanly structured.

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?

For a 6-parameter, 0%-coverage, annotation-free tool with no output schema, the description covers the lifecycle and failure path well. It still omits what `list`/`show` return at a useful level, the internal structure of a step object needed for `patch`, and how the tool relates to the `act`/`observe` siblings it presumably builds on.

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?

Schema description coverage is 0%, so this text has to do all the work, and it largely does: it maps parameters per action (`record{name, vars?}`, `run{name, vars?, evidence?=dir}`, `patch{name, index, steps}`, `show{name}`, `help{name?:...}`), which the schema never expresses. Gaps remain in the opaque `steps` object shape and the exact meaning of `index` (position? step number?), so it stops short of full coverage.

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?

Opens with a specific verb-pair and resource: record a flow once, replay it without a model, plus a `.yaml` path convention. It implicitly frames itself against the model-driven siblings (act/observe) but never names them, so an agent must infer the boundary rather than being told it.

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

Usage Guidelines3/5

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

The lifecycle guidance is strong (record → save/discard → run → patch → re-run on failure), which effectively tells the agent the order of operations. However it gives no explicit when-to-use-this-vs-`act`/`observe` rule and no preconditions (e.g., whether a live browser session must exist), leaving the selection decision implicit.

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

Deploy Server

Other Tools