← Capabilities

Real-device screenshots

Real-device screenshots let your AI see exactly what is on the screen of the phone, tablet, watch, or browser tab running your app — streamed back as a native MCP image block, not a text description.

What it is

Every OmniDebugLink SDK ships a screenshot task. When your AI tool calls it, the on-device SDK captures the current frame, compresses it to JPEG, and returns it through the relay. The result arrives in your AI tool as a native MCP image block — the model literally sees the pixels on the device screen, so layout bugs, clipped text, and broken rendering are verified visually instead of inferred from logs. Because the image is returned as an image block rather than base64 text, token cost stays minimal.

How it works

Under the hood the device returns the image through a file envelope. The SDK captures the screen, compresses it to a compact JPEG, base64-encodes it, and places it in the result alongside metadata like the frame's width and height. The server extracts the envelope and converts it into the MCP image block, stripping the original field from the text payload so the same bytes are never charged twice.

Sizing is tuned for vision models: frames are normalized to sensible dimensions and quality is stepped down if a capture would exceed the transport limit, so a screenshot call reliably succeeds on everything from a watch face to a full game scene. The synchronous call blocks until the image is back — the AI gets the picture in the same tool call, not via a callback.

Example MCP call

A screenshot request is a single run_task call with the screenshot task type:

run_task
  device:  "pixel-7-living-room"
  type:    "screenshot"
  payload: { "fullPage": false }

The result contains the frame's dimensions plus an image block your AI can look at directly — for example to confirm that a tap landed, that a dialog dismissed, or that a scene rendered as expected.

Platform coverage

The screenshot task is built into all 7 official SDKs: Unity, Android, iOS · macOS, Flutter, React Native, Godot, and Web (JavaScript).