Skip to main content
Glama

perceptdot

AI Visual QA. visual_check(url) screenshots a page with Cloudflare Browser Rendering and finds layout bugs with Gemini 2.5 Flash. Use it from any MCP client (Claude Code, Cursor, Windsurf, Cline) or as a GitHub Action.

License: MIT perceptdot.com

A typical page takes about 7 seconds, long pages up to ~20 seconds. Fully headless: no desktop or GUI needed.


Quick start

  1. Get a free API key at perceptdot.com (100 credits per month, no card).

  2. Add the remote MCP server. The key goes in the X-Percept-Key header.

Claude Code

claude mcp add --transport http perceptdot https://mcp.perceptdot.com/mcp --header "X-Percept-Key: YOUR_KEY"

Cursor (~/.cursor/mcp.json)

{"mcpServers":{"perceptdot":{"url":"https://mcp.perceptdot.com/mcp","headers":{"X-Percept-Key":"YOUR_KEY"}}}}

Windsurf (~/.codeium/windsurf/mcp_config.json)

{"mcpServers":{"perceptdot":{"serverUrl":"https://mcp.perceptdot.com/mcp","headers":{"X-Percept-Key":"YOUR_KEY"}}}}

Then ask your AI: "Check https://your-site.com with perceptdot".


Related MCP server: token-pilot

GitHub Action

The action lives in the eye-action/ folder of this repo.

name: Visual QA
on: [pull_request]

jobs:
  visual-check:
    runs-on: ubuntu-latest
    steps:
      - uses: perceptdot/percept/eye-action@v1.0.0
        with:
          url: ${{ steps.deploy.outputs.preview_url }}
          api_key: ${{ secrets.PERCEPT_API_KEY }}
          # fail_on_issue: true   # optional

Inputs: url (required), api_key (required), fail_on_issue (optional).


What it checks

  • DOM audit (deterministic): viewport overflow, broken images, parent overflow, low contrast.

  • AI review: each tile of the page is reviewed by Gemini 2.5 Flash for layout problems, with severity (high / medium / low).

Desktop (1280px), tablet (768px) and mobile (375px) viewports are supported.


Pricing

1 credit = 1 tile = a 1280×1600 px slice of the page. A short page is about 1 credit, a long landing page about 3–5 credits.

Plan

Price

Credits / month

Status

Free

$0

100 (+100 one-time bonus after submitting feedback; resets on the 1st, UTC)

Available

Pro

$19/month

10,000

Coming Soon

Team

$49/month

30,000 (fair use)

Coming Soon

Payments are handled by Paddle.


Privacy

Screenshots are not stored. They are sent to Google (Gemini API) and Cloudflare (Workers AI, fallback) for analysis. Analysis results (summary and issues, never screenshots) are cached for up to 10 minutes per URL and viewport. Google may use data sent to unpaid Gemini API tiers to improve its products, so do not check pages that contain personal data.


API

curl -X POST https://api.perceptdot.com/v1/eye/check \
  -H "Content-Type: application/json" \
  -H "X-Percept-Key: YOUR_KEY" \
  -d '{"url":"https://example.com"}'

Legacy packages

@perceptdot/ga4, @perceptdot/vercel, @perceptdot/github, @perceptdot/sentry and @perceptdot/core belong to an earlier product and are no longer maintained.


License

MIT. See LICENSE.

Available Tools

1 tool
visual_checkB

Screenshot a URL and analyze for visual bugs using AI.

NameRequiredDescriptionDefault
urlYesURL to visually check

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of disclosing behavioral traits. It only says 'screenshot and analyze' without mentioning whether the action is read-only, destructive, or requires permissions. No details on side effects or limits are given.

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 extremely concise with a single sentence that is front-loaded. It avoids unnecessary words and effectively communicates the core function. However, it could be slightly more structured with separate purpose and usage notes.

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 simple tool with one parameter and no output schema, the description is minimally adequate. It explains what the tool does but lacks usage guidance and behavioral context. The gaps are noticeable but not critical for basic understanding.

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 coverage is 100% for the single parameter, and the schema description 'URL to visually check' is clear. The tool description adds 'screenshot a URL' which aligns with the schema but does not provide additional meaning beyond the purpose. Hence, baseline 3 is appropriate.

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?

The description clearly states the tool's action: screenshot a URL and analyze for visual bugs using AI. It specifies the resource (URL) and the purpose (visual bug detection), which is direct and unambiguous. Since no sibling tools are listed, differentiation is not needed.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool or when to avoid it. There are no exclusions, prerequisites, or alternative scenarios mentioned. The description lacks context for decision-making.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.0.0
    • Addedvisual_check

TDQS

A3.7/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion or overlap between tools.

Naming Consistency5/5

The single tool name 'visual_check' follows a clear verb_noun pattern, which is consistent and descriptive.

Tool Count4/5

Having only one tool is appropriate for a focused purpose like visual bug checking, though it is at the lower end of the typical range.

Completeness5/5

The tool fully covers its domain: taking a screenshot and analyzing it for visual bugs, with no obvious missing functionality.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A meta-server that aggregates multiple MCP servers into a single interface, reducing token usage by 98%+ through progressive tool discovery and direct code execution that processes data between tools without consuming context window space.
    16 npm
    10
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Local-first MCP server that gives any AI coding agent per-project memory, workflow intelligence, and always-on, lossless token & context optimization.
    37
    13 npm
    6
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    An MCP server that reduces AI coding agent token usage by 80-99% through a queryable knowledge graph of code, change tracking, and persistent memory across sessions.
    75 npm
    3
    MIT