ViewportWitness by Apex Labs
MCP serverWeb & browsingPaid browser QA for AI agents across phone and desktop viewports, using x402.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use ViewportWitness by Apex Labs
Install ViewportWitness by Apex Labs
The server’s own address, for the clients that take one directly. Or connect ahel onceand every client you use reads it from one address, with the account kept on ahel rather than in each client’s config.
Claude Code
claude mcp add --transport http viewportwitness-by-apex-labs 'https://qa.honeygate.app/mcp'Run it once in your project, then open /mcp to approve any sign-in the server asks for.
Claude Desktop
https://qa.honeygate.app/mcpAdd a custom connector in Settings, paste this address, and approve the sign-in.
Cursor
cursor://anysphere.cursor-deeplink/mcp/install?name=viewportwitness-by-apex-labs&config=eyJ1cmwiOiJodHRwczovL3FhLmhvbmV5Z2F0ZS5hcHAvbWNwIn0=Open the link and Cursor adds the server at that address.
ChatGPT
https://qa.honeygate.app/mcpIn Settings, enable Developer mode, create an MCP app, and paste this address. Your plan and workspace must allow custom apps.
Codex
codex mcp add viewportwitness-by-apex-labs --url 'https://qa.honeygate.app/mcp'Run it once, then sign in with codex mcp login viewportwitness-by-apex-labs if the server asks for an account.
From the project's README
As published by Baffles78/viewport-witness in README.md.
Remote MCP server and x402 API for AI-agent browser QA. Submit a public HTTPS URL and receive screenshots, accessibility findings, layout analysis, and structured JSON across phone and desktop viewports.
The live service is at https://qa.honeygate.app. A standard report costs $0.08 USDC, read-only assertions cost $0.10, and a baseline comparison costs $0.12. Local instances can run in test mode without payment.
- Official MCP Registry listing
- MCP setup for ChatGPT, Claude, Codex, Cursor, and VS Code
- Privacy policy · Terms · Support
Live service
# Probe the live service (returns 402 with payment requirements)
curl -s -X POST https://qa.honeygate.app/v1/checks \
-H 'Content-Type: application/json' \
-d '{"url": "https://example.com"}'
# Payment discovery
curl -s https://qa.honeygate.app/.well-known/x402 | jq .
# Agent skill manifest
curl -s https://qa.honeygate.app/skill.md
Use an x402-aware client (e.g. @x402/fetch with a funded wallet) for paid requests.
See llms.txt for the full agent usage guide.
Local development
npm install
npx playwright install chromium
cp .env.example .env
npm run dev
# Create a check (test mode — no payment required)
curl -s -X POST http://localhost:3000/v1/checks \
-H 'Content-Type: application/json' \
-d '{"url": "https://example.com"}' | jq .
# Poll result
curl -s http://localhost:3000/v1/checks/JOB_ID | jq .status
# Get screenshot
curl -o desktop.png http://localhost:3000/v1/checks/JOB_ID/screenshots/desktop
Local defaults to PAYMENT_MODE=test. No CDP keys needed for test mode. Results are labeled
paymentMode: "test" and do not represent real payment settlements.
API
| Method | Path | Description |
|---|---|---|
| GET | / | Service info |
| GET | /health | Liveness probe |
| GET | /ready | Readiness probe (DB + worker) |
| GET | /openapi.json | OpenAPI 3.1 spec |
| GET | /llms.txt | Agent usage guide |
| GET | /skill.md | Concise agent skill manifest |
| GET | /privacy | Privacy policy |
| GET | /terms | Terms of service |
| GET | /logo.png | Directory and integration logo |
| GET | /.well-known/x402 | Payment discovery |
| POST | /v1/checks | Create a QA check job |
| POST | /v1/verify | Check explicit read-only assertions |
| POST | /v1/compare | Compare against an unexpired baseline job |
| POST | /mcp | Remote MCP interface with x402-paid tools |
| GET | /v1/checks/:id | Poll job status / get report |
| GET | /v1/checks/:id/screenshots/:viewport | Download screenshot PNG |
| GET | /v1/checks/:id/diffs/:viewport | Download comparison diff PNG |
Viewports: phonePortrait (375×812), phoneLandscape (812×375), desktop (1440×900)
Payment modes
| Mode | Payment required | Network |
|---|---|---|
test | No | — (local dev only) |
testnet | Yes (x402) | Base Sepolia; optional Solana Devnet |
production | Yes (x402, $0.08 USDC) | Base mainnet; optional Solana mainnet |
Production mode requires ENABLE_MAINNET_PAYMENTS=true and a reviewed release.
Solana is separately off by default. Enabling it requires ENABLE_SOLANA_PAYMENTS=true, the
public test and revenue destinations, facilitator capability confirmation, and its own settlement
test. The application selects the correct destination from PAYMENT_MODE.
Paid modes also require a private CUSTOMER_HASH_SECRET of at least 32 characters. It creates a
stable, one-way customer label for repeat-use measurements; raw payer wallet addresses are not
stored. Attribution is best-effort and never blocks delivery after a verified payment. Changing
this secret starts a new measurement series and does not rewrite old jobs.
See docs/RUNBOOK.md for activation steps.
Run tests
npm test # unit tests (no browser required)
npm run test:e2e # local e2e (requires Playwright Chromium)
npm run typecheck # TypeScript strict check
Docker
docker compose build
docker compose up -d
curl http://localhost:3000/health
Further reading
- Build specification — full product and safety spec
- Runbook — operations, backups, upgrades, mainnet activation
- Agent guide — machine-readable usage instructions
- Skill manifest — concise agent skill guide
- MCP install guide — connect ChatGPT, Claude, Codex, Cursor, and VS Code
- Privacy policy and terms
- Customer feedback — request a capability or report a result without posting secrets
- Build evidence — test results and known limits
MIT License
Advanced
- Delivery
- viewport-witness MCP server → your ahel gateway (mcp.ahel.ai) → every connected AI client.
- Catalog kind
- mcp-server
- Gateway key
io-github-baffles78-viewport-witness- Source
- github.com/Baffles78/viewport-witness
- Hosted endpoint
https://qa.honeygate.app/mcp