Skip to main content
Glama

compare_screen

Compares an Android or iOS Simulator app screen with a Figma frame, reports position, size, text, color and visual differences, and suggests fixes.

Instructions

Compares the app's current screen on the device (Android or iOS Simulator) with a Figma frame. Matches Figma layers to app elements by visible text, name = AutomationId or position, and reports differences in position, size, text and background color. Non-text layers (buttons, fields, lines, icons, images) are found in the screenshot by how they look, comparing box, fill, corner radius, border and content. Reports fidelity (% of elements as in Figma, and how much it changed since the previous comparison) and how to fix each difference with the framework's properties. Generates report.html (interactive report to show the user), side_by_side.png and diff.png (in diff.png: green = matches, orange = differs, dotted blue = where Figma says it should be). Open the images for a visual review. If the screenshot doesn't look like the design (a loading screen), it waits and captures again up to 3 times.

Input Schema

NameRequiredDescriptionDefault
refreshNotrue to download the Figma frame again instead of using the local cache. Use it only if the design changed: each download uses Figma API quota.
figmaUrlYesFigma frame URL (Copy link to selection), must include ?node-id=
frameworkNoApp framework, to write the suggestions with its properties: maui, android (XML views), compose, uikit, swiftui or flutter. Optional.
toleranceNoPosition/size tolerance in dp or pt. Default 2.
projectPathNoApp project folder. Optional: if it has files newer than the installed app, the report warns that the app needs to be rebuilt and reinstalled.
deviceSerialNoDevice serial or UDID. Optional: uses the first one.
colorToleranceNoColor tolerance (RGB distance 0–441). Default 24.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and does so extensively: it explains matching heuristics, diff color meanings, generated files, cache/API quota implications, fidelity reporting, and automatic retry up to 3 times. This gives an agent detailed behavioral context beyond the schema.

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?

The description is dense but front-loaded with the core comparison purpose and then layers on behavior and outputs. Every sentence carries useful information, though the single long paragraph could be more structurally scannable for such a complex tool.

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?

For a complex visual comparison tool with no output schema and no annotations, the description is remarkably complete: it covers inputs, matching logic, output artifacts, retry behavior, and reporting. An agent has enough information to invoke it correctly and interpret results.

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 meaningful semantics: refresh uses Figma API quota, projectPath triggers rebuild warnings, deviceSerial defaults to first device, and tolerance/colorTolerance define comparison thresholds. It could still clarify figmaUrl format, but overall it adds value beyond the schema.

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?

States a specific verb and resource: compares the app's current screen with a Figma frame. It details matching strategy, reported differences, generated artifacts, and retry behavior, making it clearly distinct from siblings like capture_screen and get_design_specs.

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?

Clearly establishes the comparison context and when retry happens (loading screen), but does not explicitly say when to use this versus siblings such as get_design_specs or capture_screen. The usage context is strong but lacks explicit alternatives or exclusions.

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