Skip to main content
Glama

ios_screenshot

Read-onlyIdempotent

Capture the screen as an image, optionally annotating element refs, to inspect layouts, locate unlabeled elements, and choose visual targets for actions.

Instructions

Capture the screen as an image.

Use this when an element has no accessibility label, when the layout matters, or when ios_observe cannot find something you can plainly see. With annotate_refs each element is boxed and labelled with its ref, so you can pick one by eye and pass it to an action tool.

Annotating re-reads the screen first, so the refs on the image are the current ones rather than whatever was observed last. That costs a tree fetch, and needs the vision extra installed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
annotate_refsNoDraw labelled boxes over the elements, using fresh refs.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.6.0
    • changedInput schema / properties / annotate_refs / description
      Previous value: -"Draw numbered boxes over the elements from the last observation."New value: +"Draw labelled boxes over the elements, using fresh refs."
  2. First observedv0.1.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive/openWorld, so the safety profile is covered. The description goes beyond that with two non-obvious behaviors: annotate_refs forces a fresh screen re-read (costing a tree fetch) and requires the 'vision' extra to be installed. It stops short of describing the return payload or device/session prerequisites, so it is strong rather than complete.

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?

Front-loaded with the core purpose, then usage, then caveats — a sensible ordering. Every sentence carries information, though the third paragraph could be folded more tightly into the second without loss.

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

Completeness4/5

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

For a single-boolean, zero-required-parameter tool with annotations and no output schema, the definition covers purpose, selection criteria, dependency, and cost. The only gap is how the image is returned (path vs. inline data), which the missing output schema leaves unaddressed.

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 coverage is 100%, so the baseline is 3, but the description adds real meaning: the boxes are labelled with refs you can act on, and the refs are guaranteed current because annotating re-reads the screen. That 'fresh refs' semantics plus the cost implication is more than the schema's 'using fresh refs' alone conveys.

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?

Opens with a specific verb+resource: 'Capture the screen as an image.' It is immediately distinguishable from ios_observe, ios_read_text, and ios_find, and the annotate_refs sentence clarifies the secondary capability (boxed refs for visual selection).

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

Usage Guidelines5/5

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

Gives explicit triggering conditions: no accessibility label, layout matters, or ios_observe cannot find something visible. It also names the downstream action ('pass it to an action tool'), so the agent knows how this fits into a workflow rather than just when to call it.

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