perceptdot
OfficialUse the perceptdot MCP server to perform AI-powered visual QA on a webpage.
Call
visual_check(url)with a requiredurlargument.Screenshot the page with Cloudflare Browser Rendering.
Analyze page tiles with Gemini 2.5 Flash for layout bugs, with severity high/medium/low.
Run deterministic DOM checks: viewport overflow, broken images, parent overflow, low contrast.
Check desktop 1280px, tablet 768px, and mobile 375px viewports.
Use it from MCP clients such as Claude Code, Cursor, Windsurf, and Cline using an
X-Percept-Keyheader.
Provides repository intelligence by allowing agents to retrieve pull request details, monitor issues, and check the status of CI/CD workflows.
Provides access to real-time and historical analytics data from Google Analytics 4, including sessions, pageviews, top pages, and event counts.
Integrates with Sentry to surface unresolved application errors, provide detailed stack traces, and track the health of software releases.
Enables deployment monitoring for Vercel projects, allowing agents to check deployment status, view recent commit messages, and list project states.
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.
A typical page takes about 7 seconds, long pages up to ~20 seconds. Fully headless: no desktop or GUI needed.
Quick start
Get a free API key at perceptdot.com (100 credits per month, no card).
Add the remote MCP server. The key goes in the
X-Percept-Keyheader.
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 # optionalInputs: 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
OpenAPI spec: perceptdot.com/openapi.json
Endpoints:
POST /v1/eye/check,GET /v1/quota,POST /v1/free-keyathttps://api.perceptdot.com
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 toolvisual_checkB
Screenshot a URL and analyze for visual bugs using AI.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to visually check |
TDQS
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.
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.
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.
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.
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.
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 tool update
v1.0.0- Added
visual_check
TDQS
Scored across 1 tool
With only one tool, there is no possibility of confusion or overlap between tools.
The single tool name 'visual_check' follows a clear verb_noun pattern, which is consistent and descriptive.
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.
The tool fully covers its domain: taking a screenshot and analyzing it for visual bugs, with no obvious missing functionality.
Maintenance
Related MCP Connectors
Analytics for MCP servers. Find out which of your tools agents get wrong. MCPulse shows you which tools AI agents retry, which come back empty, and which they never call at all. Two lines inside your own server. It never sees your arguments or your results. getmcpulse.com
LLM cost optimization gateway, repo token-waste auditor & model arbitrage MCP server.
LLM cost optimization gateway, repo token-waste auditor & model arbitrage MCP server.
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA 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 npm10Apache 2.0
- AlicenseAqualityAmaintenanceMCP server that reduces token consumption in AI coding assistants by up to 90% via structural reads, PreToolUse hooks, and tp-\* subagents.2595 npm5MIT
- AlicenseAqualityCmaintenanceLocal-first MCP server that gives any AI coding agent per-project memory, workflow intelligence, and always-on, lossless token & context optimization.3713 npm6MIT
- AlicenseNot gradedqualityBmaintenanceAn 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 npm3MIT