shipcheck
ShipCheck v0
QA independiente de URL de vista previa para agentes de codificación. Un agente envía una URL de vista previa pública https más historias de aceptación. Ejecutamos heurísticas de Playwright, capturamos cada historia y devolvemos un paquete de evidencia con aprobado/reprobado. Las fallas permanecen needs_review hasta que un humano (o este agente mirando la página) añade una nota breve.
El mismo modelo que escribió la interfaz es un mal juez de la interfaz. Ese es el producto.
Playwright MCP es gratuito; esto no es un navegador alojado. Es una verificación independiente con un humano en las fallas. Las APIs de capturas dan píxeles. ShipCheck responde "¿la historia 3 realmente funcionó?"
Ejecutar
cd /workspace/shipcheck
python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/playwright install chromium
.venv/bin/python -m shipcheck serve --host 0.0.0.0 --port 8787El venv ya existe en esta máquina. Por defecto: el proceso de la API también drena la cola de trabajos (worker en línea). Para dividir:
SHIPCHECK_INLINE_WORKER=0 .venv/bin/python -m shipcheck serve --port 8787
.venv/bin/python -m shipcheck worker
.venv/bin/python -m shipcheck run-job sc_xxxxxxxxxxxxSalud: GET http://127.0.0.1:8787/health
Público (túnel rápido de Cloudflare, esta máquina, mié 19 ago 2026): https://realtor-all-enclosed-altered.trycloudflare.com
El mismo proceso sirve GET / (página de aterrizaje), REST y POST /mcp. La URL también está en PUBLIC_URL.txt. Los túneles rápidos mueren si cloudflared se detiene.
Los trabajos viven en /workspace/shipcheck/queue/{job_id}.json. Los informes y capturas en /workspace/shipcheck/reports/.
Related MCP server: Prufa
Ejemplo de solicitud / respuesta
curl -sS -X POST https://realtor-all-enclosed-altered.trycloudflare.com/qa_preview \
-H 'Content-Type: application/json' \
-d '{
"url": "https://example.com/",
"stories": [
{"id": "home", "steps": ["open homepage"], "expect": "Example Domain"}
],
"viewport": "desktop"
}'Respuesta:
{
"job_id": "sc_ab12cd34ef56",
"status": "queued",
"price_usd": 6,
"billed": false,
"message": "queued. poll GET /qa_status/{job_id}; fetch GET /qa_get_report/{job_id} when status is pass or needs_review."
}curl -sS https://realtor-all-enclosed-altered.trycloudflare.com/qa_status/sc_ab12cd34ef56
curl -sS https://realtor-all-enclosed-altered.trycloudflare.com/qa_get_report/sc_ab12cd34ef56Estados terminales: pass (todas las heurísticas en verde, sin necesidad de humano) o needs_review (fallas de heurísticas listadas; una pasada posterior añade human_note vía POST /qa_note/{job_id} o MCP qa_note). error es nuestra infraestructura (tiempo de espera agotado, fallo, URL no segura) y no se factura.
Cabeceras opcionales para facturación posterior: Authorization: Bearer <key> o X-Api-Key. v0 acepta claves faltantes y no hace cargos.
Pasos opcionales (tratados como notas): click:css=.buy, click:text=Sign in, fill:#email|user@example.com, wait:1000, see:Order total.
Ver examples/sample_report.json para la forma del paquete de evidencia.
Seguridad
Solo https. Localhost, RFC1918, enlace-local, CGNAT, IPs de metadatos (169.254.169.254), file://, credenciales incrustadas y redirección a privado son rechazados. Cada solicitud de Playwright se re-verifica. Tiempo de espera de navegación de 20s, límite de trabajo de 4 minutos. Detalles en PRODUCT.md.
Pruebas SSRF (sin objetivo en vivo requerido):
cd /workspace/shipcheck
python -m pytest tests/test_ssrf.py tests/test_api.py -qCursor mcp.json
MCP Streamable-HTTP se sirve en POST /mcp (mismo proceso que REST). Herramientas: qa_preview, qa_status, qa_get_report, qa_note. Añade esto a .cursor/mcp.json o ~/.cursor/mcp.json (omite type; Cursor trata una url como streamable HTTP):
{
"mcpServers": {
"shipcheck": {
"url": "https://realtor-all-enclosed-altered.trycloudflare.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}v0 acepta una clave faltante y no hace cargos. El mismo archivo vive en examples/mcp.json. El servidor debe estar ejecutándose (python -m shipcheck serve --host 127.0.0.1 --port 8787). URL pública es un túnel rápido de Cloudflare delante de ese proceso.
Página de aterrizaje: GET / (HTML en shipcheck/landing.html). Límite de tasa de vista previa pública: 20 trabajos qa_preview/día/IP (loopback ilimitado). SHIPCHECK_PREVIEW_LIMIT_PER_IP lo anula; 0 lo desactiva.
Precios
Intención, aún no cobrado: $6 escritorio / $10 ambas vistas (o 5–8 por ejecución) por historia. Créditos prepagados de Polar más adelante. Gancho: shipcheck/billing.py.
Próximos pasos
Créditos de Polar + paquetes de licencia como
Authorization: Bearer; cargo solo al éxito.Ping de Slack/Telegram cuando el estado sea
needs_review; el humano escribehuman_note(RESTPOST /qa_note/{job_id}y MCPqa_noteya aceptan la nota).Listar en PulseMCP / Glama / registro oficial de MCP (descubrimiento, no un mercado).
Informe de muestra público + un
llms.txtde 30 líneas.
No añadir un tablero, una app de GitHub ni un riel de cripto.
This server cannot be deployed
Maintenance
Related MCP Connectors
Human QA on real phones and browsers for your coding agent. Pass/fail per step, with screenshots.
Independent preview-URL QA for coding agents. Playwright heuristics, pass/fail pack.
Website QA for your coding agent: audit SEO, performance, security, accessibility over MCP.
Read-only web QA agent: scans a site in a real browser and returns evidence-backed findings
1
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables acceptance gates for AI coding-agent runs by recording evidence, running deterministic validation, applying a quality gate, and rendering auditable outcomes.7Apache 2.0
- AlicenseAqualityCmaintenancePoint your coding agent at a URL and get a real-browser QA audit: broken signup/login/checkout flows, JS console errors, missing analytics, consent + security headers, mobile tap targets, and accessibility — returned as machine-verified findings graded A-F.4420 PyPI2Apache 2.0

QualityMax QA MCPofficial
AlicenseAqualityAmaintenanceEnables coding agents to independently verify web changes by scanning pages, inspecting UI structure, generating Playwright reproductions, and executing tests with structured QA evidence.459 npm4MIT- AlicenseNot gradedqualityAmaintenanceEnables AI platforms to run ensemble front-end quality tests on public web pages, including accessibility, usability, and standards conformity, and to retrieve the resulting reports.842 npm4MIT