Skip to main content
Glama

Screenrove: UI Design Reference & Screenshots (free Mobbin alternative)

Check the user's UI against real references

check_my_ui
Read-only

Compare the user's UI structure with the closest real products. Describe what they have (screen type, sections, flow steps, plan count; no personal names, prices or customer data) and get factual comparisons, not recommendations: plan counts, section order, blocks the references have that theirs lacks, flow length. image=true attaches the closest one's screenshot.

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": {
      "description": "<description>"
    },
    "name": "check_my_ui"
  }
}

Input Schema

NameRequiredDescriptionDefault
kindNoOnly compare with this kind of capture.
imageNoAttach the closest reference's 1x screenshot (MCP) or return its URL in image.
limitNoHow many references to return, 1 to 5.
productNoOnly compare with this product id.
flowTypeNoWhat the flow does, so step counts are only compared with flows of the same kind. Inferred from screenType when omitted.
sectionsNoPage sections top to bottom, e.g. ["Hero", "Plan cards", "FAQ"].
flowStepsNoFor a multi-screen flow, each step's title in order, e.g. ["Sign up", "Verify email", "Create workspace"].
planCountNoFor pricing screens, how many plans are shown.
screenTypeNoWhat kind of screen it is.
descriptionYesOne or two sentences on what the screen is for and how it is laid out, e.g. "Pricing page with three plan cards, a monthly/yearly toggle and a feature table".
primaryActionNoThe main button or action, e.g. "Start free trial".

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed6 schema fields changed
    • addedInput schema / properties / image
      Added value: +{
      +  "default": false,
      +  "description": "Attach the closest reference's 1x screenshot (MCP) or return its URL in image.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / limit / maximum
      Added value: +5
    • addedInput schema / properties / limit / minimum
      Added value: +1
    • changedInput schema / properties / limit / type
      Previous value: -"number"New value: +"integer"
    • changedInput schema / properties / planCount / type
      Previous value: -"number"New value: +"integer"
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "next": {
      -      "type": "string"
      -    },
      -    "references": {
      -      "items": {
      -        "properties": {
      -          "facts": {
      -            "items": {
      -              "type": "string"
      -            },
      -            "type": "array"
      -          },
      -          "id": {
      -            "type": "string"
      -          },
      -          "imageUrl": {
      -            "type": "string"
      -          },
      -          "kind": {
      -            "description": "flow is an onboarding step, marketing a public web page, product an in-app screen.",
      -            "enum": [
      -              "flow",
      -              "marketing",
      -              "product"
      -            ],
      -            "type": "string"
      -          },
      -          "notes": {
      -            "type": "string"
      -          },
      -          "previewUrl": {
      -            "type": "string"
      -          },
      -          "product": {
      -            "type": "string"
      -          },
      -          "productName": {
      -            "description": "Present on pick options and related screens.",
      -            "type": "string"
      -          },
      -          "scope": {
      -            "description": "What was captured. marketing: logged-out marketing pages only. public-demo: logged out, but real\nproduct surfaces or public demos were used. task-incomplete: signed in, but the journey stops before\nits result. signed-in: signed in, and the journey reaches its result.\n",
      -            "enum": [
      -              "marketing",
      -              "public-demo",
      -              "task-incomplete",
      -              "signed-in"
      -            ],
      -            "type": "string"
      -          },
      -          "screenType": {
      -            "type": "string"
      -          },
      -          "style": {
      -            "description": "What the screen looks like, judged from its first viewport (tags/style-spec.md). Searchable through q.",
      -            "properties": {
      -              "accentHue": {
      -                "description": "The accent hue of buttons and highlights, or none.",
      -                "type": "string"
      -              },
      -              "aesthetic": {
      -                "description": "One or two of minimal, editorial, playful, technical, glassy, bold, warm, data-dense, retro, corporate.",
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "caption": {
      -                "description": "What makes the screen look the way it does.",
      -                "type": "string"
      -              },
      -              "colorMode": {
      -                "enum": [
      -                  "monochrome",
      -                  "single-accent",
      -                  "multi-color",
      -                  "pastel",
      -                  "vivid-gradient"
      -                ],
      -                "type": "string"
      -              },
      -              "density": {
      -                "enum": [
      -                  "airy",
      -                  "balanced",
      -                  "dense"
      -                ],
      -                "type": "string"
      -              },
      -              "headingFont": {
      -                "enum": [
      -                  "sans",
      -                  "serif",
      -                  "mono",
      -                  "rounded",
      -                  "display"
      -                ],
      -                "type": "string"
      -              },
      -              "imagery": {
      -                "description": "One or two of none, product-ui, photography, illustration, 3d, icons-only, charts.",
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "theme": {
      -                "enum": [
      -                  "light",
      -                  "dark",
      -                  "mixed"
      -                ],
      -                "type": "string"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          "tags": {
      -            "description": "Design-problem tags. The first pattern is the primary one. See listTags.",
      -            "properties": {
      -              "component": {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "pattern": {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "state": {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              },
      -              "task": {
      -                "items": {
      -                  "type": "string"
      -                },
      -                "type": "array"
      -              }
      -            },
      -            "type": "object"
      -          },
      -          "title": {
      -            "type": "string"
      -          },
      -          "why": {
      -            "type": "string"
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "report": {
      -      "description": "Markdown summary of the comparison.",
      -      "type": "string"
      -    }
      -  },
      -  "type": "object"
      -}New value: +null
  2. Changed1 schema field changed
    • addedOutput schema / properties / references / items / properties / style
      Added value: +{
      +  "description": "What the screen looks like, judged from its first viewport (tags/style-spec.md). Searchable through q.",
      +  "properties": {
      +    "accentHue": {
      +      "description": "The accent hue of buttons and highlights, or none.",
      +      "type": "string"
      +    },
      +    "aesthetic": {
      +      "description": "One or two of minimal, editorial, playful, technical, glassy, bold, warm, data-dense, retro, corporate.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "caption": {
      +      "description": "What makes the screen look the way it does.",
      +      "type": "string"
      +    },
      +    "colorMode": {
      +      "enum": [
      +        "monochrome",
      +        "single-accent",
      +        "multi-color",
      +        "pastel",
      +        "vivid-gradient"
      +      ],
      +      "type": "string"
      +    },
      +    "density": {
      +      "enum": [
      +        "airy",
      +        "balanced",
      +        "dense"
      +      ],
      +      "type": "string"
      +    },
      +    "headingFont": {
      +      "enum": [
      +        "sans",
      +        "serif",
      +        "mono",
      +        "rounded",
      +        "display"
      +      ],
      +      "type": "string"
      +    },
      +    "imagery": {
      +      "description": "One or two of none, product-ui, photography, illustration, 3d, icons-only, charts.",
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "theme": {
      +      "enum": [
      +        "light",
      +        "dark",
      +        "mixed"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  3. Changed3 schema fields changed
    • changedOutput schema / properties / references / items / properties / productName / description
      Previous value: -"Present on pick options."New value: +"Present on pick options and related screens."
    • addedOutput schema / properties / references / items / properties / scope
      Added value: +{
      +  "description": "What was captured. marketing: logged-out marketing pages only. public-demo: logged out, but real\nproduct surfaces or public demos were used. task-incomplete: signed in, but the journey stops before\nits result. signed-in: signed in, and the journey reaches its result.\n",
      +  "enum": [
      +    "marketing",
      +    "public-demo",
      +    "task-incomplete",
      +    "signed-in"
      +  ],
      +  "type": "string"
      +}
    • addedOutput schema / properties / references / items / properties / tags
      Added value: +{
      +  "description": "Design-problem tags. The first pattern is the primary one. See listTags.",
      +  "properties": {
      +    "component": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "pattern": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "state": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "task": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  4. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "next": {
      +      "type": "string"
      +    },
      +    "references": {
      +      "items": {
      +        "properties": {
      +          "facts": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "imageUrl": {
      +            "type": "string"
      +          },
      +          "kind": {
      +            "description": "flow is an onboarding step, marketing a public web page, product an in-app screen.",
      +            "enum": [
      +              "flow",
      +              "marketing",
      +              "product"
      +            ],
      +            "type": "string"
      +          },
      +          "notes": {
      +            "type": "string"
      +          },
      +          "previewUrl": {
      +            "type": "string"
      +          },
      +          "product": {
      +            "type": "string"
      +          },
      +          "productName": {
      +            "description": "Present on pick options.",
      +            "type": "string"
      +          },
      +          "screenType": {
      +            "type": "string"
      +          },
      +          "title": {
      +            "type": "string"
      +          },
      +          "why": {
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "report": {
      +      "description": "Markdown summary of the comparison.",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  5. First observed

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond that: it discloses that results are factual comparison facts (plan counts, section order, missing blocks, flow length) and that image=true attaches the closest reference's screenshot.

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 front-loaded sentence states the core action immediately, and the parenthetical privacy constraint is efficiently packed. It is dense but every clause carries meaning, with no filler.

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?

With no output schema, the description usefully characterizes the return content (plan counts, section order, missing blocks, flow length) and privacy handling, which compensates for the absent output schema. It stops short of explaining pagination or limit behavior, which is left to the schema.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all 11 parameters, and 3 have enums. The description reinforces a couple of them (image behavior, what the description field should contain) but adds little syntax or format detail beyond the schema, so the baseline 3 applies.

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?

The description states a specific verb+resource: comparing the user's UI structure against the closest real products, and it clarifies the output is factual comparisons rather than recommendations. It doesn't explicitly differentiate itself from siblings like compare_screens or find_related_screens, so the agent must infer positioning.

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?

It gives real guidance on what to include in the description (screen type, sections, flow steps, plan count; excluding personal names, prices, customer data) and states results are factual, not recommendations. However, it never states when to prefer this over compare_screens or find_related_screens, leaving the alternative selection implicit.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources