{"name":"io.github.xcodethink/pixelcheck","slug":"xcodethink-pixelcheck","title":null,"description":"Real eyes and hands on the web for AI agents. MCP-first. Local-first. Vendor-agnostic.","url":"https://mcp.market/server/xcodethink-pixelcheck","rating":null,"grade":"C","score":68,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":31,"stars":6,"forks":2,"downloads_week":38,"last_push_at":"2026-09-21T01:09:55.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/xcodethink/pixelcheck","website":null,"version":"2.1.0","remotes":[],"packages":[{"registryType":"npm","identifier":"pixelcheck","version":"2.1.0","runtimeHint":"npx","transport":{"type":"stdio"},"runtimeArguments":[{"value":"pixelcheck","type":"named","name":"-p"},{"value":"pixelcheck-mcp","type":"positional"}],"environmentVariables":[{"description":"Anthropic API key. Required for LLM-backed primitives (judge, extract-with-schema) and the audit_url / explore_url presets. Meta tools (list_personas, list_scenarios, get_last_report) work without it.","isRequired":true,"format":"string","isSecret":true,"name":"ANTHROPIC_API_KEY"}]}],"tools":[{"name":"AUDIT_COMPARES_DIR","description":"Override the artifacts root for `compare` (one subdir per call).","write_action":false,"price_micros":0,"input_schema":null},{"name":"AUDIT_MEMORY_DISABLED","description":"Set to 1/true/yes to bypass agent memory entirely.","write_action":false,"price_micros":0,"input_schema":null},{"name":"AUDIT_MEMORY_PATH","description":"SQLite file backing the agent memory store. Override to isolate per env.","write_action":false,"price_micros":0,"input_schema":null},{"name":"AUDIT_PLAN_CACHE_DISABLED","description":"Set to 1/true/yes to bypass the planner's cache.","write_action":false,"price_micros":0,"input_schema":null},{"name":"AUDIT_PLAN_CACHE_PATH","description":"SQLite file backing the planner's cache.","write_action":false,"price_micros":0,"input_schema":null},{"name":"AUDIT_REPORTS_DIR","description":"Override the reports root used by audit_url / explore_url. Reports DB lives under `<root>/history.db`.","write_action":false,"price_micros":0,"input_schema":null},{"name":"LOG_FILE","description":"Append all log lines to this file as well as stderr.","write_action":false,"price_micros":0,"input_schema":null},{"name":"LOG_LEVEL","description":"pino log level: trace | debug | info | warn | error | fatal. Default info.","write_action":false,"price_micros":0,"input_schema":null},{"name":"LOG_PRETTY","description":"Force pretty-printed logs (1) vs JSON (0). Default: TTY-aware.","write_action":false,"price_micros":0,"input_schema":null},{"name":"act","description":"Execute a sequence of actions on a URL: goto / click / fill / press / wait / wait_for / scroll / screenshot, plus AI steps `act` (Stagehand natural language) and `note` (one vision call). Returns per-step status, final DOM summary, console errors, and a final screenshot. Engine auto-selects: Stagehand only if any step.type='act'.","write_action":true,"price_micros":0,"input_schema":null},{"name":"audit_url","description":"Run a UX audit against a URL using one persona. Returns the audit summary + report path.","write_action":true,"price_micros":0,"input_schema":null},{"name":"calibrate_critic","description":"Run the critic calibration gate against labeled screenshot fixtures. Returns pass/fail + metrics.","write_action":true,"price_micros":0,"input_schema":null},{"name":"compare","description":"A/B page comparison primitive. Each side is `{url}` or a pre-captured `{capture}`. Default mode `double_blind` judges each side independently with the same rubric (parallel) then runs ONE synthesis vision call seeing both screenshots — 3 vision calls total, free of anchoring bias (commercial UX-review practice). `fast` mode collapses to 1 side-by-side vision call (cheaper, anchored). Built-in rubr","write_action":false,"price_micros":0,"input_schema":null},{"name":"diagnose","description":"Holistic page-health diagnosis (ADR-034 / Phase 0 entrypoint). Captures a URL with eager visual scoring, reads every diagnostics dimension (performance / network / popups / cookies / storage / visual), and produces a commercial-grade structured report: per-finding severity + dimension + confidence + evidence_refs (cited diagnostics paths) + standards_mapping (Core Web Vitals, WCAG, OWASP, GDPR), a","write_action":false,"price_micros":0,"input_schema":null},{"name":"doctor","description":"Diagnose the pixelcheck environment (Node, API key, browser binary, network).","write_action":false,"price_micros":0,"input_schema":null},{"name":"explore_url","description":"Send the autonomous agent to explore a URL with a free-form goal. Faster than audit_url; no scenario file required.","write_action":true,"price_micros":0,"input_schema":null},{"name":"extract","description":"Schema-bound structured extraction from a URL. Caller hands us a JSON Schema describing the desired payload shape; the tool runs Stagehand's extract() under the hood and returns matching `data` plus DOM summary, console errors, and a screenshot. Single LLM call per invocation. Single engine: Stagehand. When `schema` is omitted, returns Stagehand's free-form `{ extraction: string }` driven by `inst","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_last_report","description":"Read the most recent audit's summary JSON from the reports history DB.","write_action":false,"price_micros":0,"input_schema":null},{"name":"judge","description":"Single-page rubric-driven critic. Captures a URL (or accepts a pre-captured snapshot) and runs one vision call against the chosen rubric(s). Built-in rubrics: 'aesthetic' (8 criteria — visual hierarchy, typography, alignment, contrast, spacing, polish, density, brand cohesion) and 'dark_pattern' (12 criteria — forced continuity, hidden costs, pre-selected options, fake urgency, confirmshaming, obs","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_capabilities","description":"Self-describe the MCP server. Returns every shipped tool with its kind, input schema, result schema title, cacheability, static cost-estimate band, side-effects, and dependency declarations; plus the public env-var table and live state of the result cache. Pure introspection — no LLM, no browser, no probe of secret presence. Call this first to plan which tools to use and budget for them.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_personas","description":"List all personas available in the project's personas/ directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"list_scenarios","description":"List all scenarios available in the project's scenarios/ directory.","write_action":false,"price_micros":0,"input_schema":null},{"name":"see","description":"Look at a URL once and return DOM summary + screenshot + console errors + an optional vision note. Lightweight primitive: 0 LLM cost when goal is omitted, ~1 vision call when set. Faster than audit_url / explore_url for one-shot inspection.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":68,"grade":"C","scanned_at":"2026-09-24T05:07:15.608Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-24T05:07:15.528Z","components":{"code":{"score":15,"max":25,"notes":["247 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 3 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[{"id":"install.script","severity":"medium","component":"code","title":"npm install lifecycle script present"},{"id":"install.script","severity":"medium","component":"code","title":"npm install lifecycle script present","evidence":"package.json: …ly && node scripts/chmod-bins.mjs\", \"postinstall\": \"node scripts/postinstall.mjs\", \"pr…"}],"inputs":{"packages":[{"registryType":"npm","identifier":"pixelcheck","version":"2.1.0","found":true,"license":"MIT","hasInstallScripts":true,"dependencyCount":19,"publishedAt":"2026-08-04T16:00:20.796Z","repositoryUrl":"git+https://github.com/xcodethink/pixelcheck.git","weeklyDownloads":38}],"repo":{"found":true,"owner":"xcodethink","repo":"pixelcheck","archived":false,"pushedAt":"2026-09-21T01:09:55Z","stars":6,"forks":2,"openIssues":3,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/197905818?v=4","ownerCreatedAt":"2025-02-05T11:06:44Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/197905818?v=4&s=128","source":"github"},"presence":{"stars":6,"forks":2,"downloadsWeek":38,"license":"MIT","lastPushAt":"2026-09-21T01:09:55.000Z","score":31}}}},"grade_history":[],"reviews":[]}