shipcheck
ShipCheck v0
Unabhängige Preview-URL-QA für Coding-Agenten. Ein Agent sendet per POST eine öffentliche https-Preview-URL plus Akzeptanzgeschichten. Wir führen Playwright-Heuristiken aus, machen Screenshots von jeder Geschichte und liefern ein Bestehen/Nichtbestehen-Nachweispaket. Fehlschläge bleiben needs_review, bis ein Mensch (oder dieser Agent, der sich die Seite ansieht) eine kurze Notiz hinzufügt.
Dasselbe Modell, das die UI geschrieben hat, ist ein schlechter Beurteiler der UI. Das ist das Produkt.
Playwright MCP ist kostenlos; dies ist kein gehosteter Browser. Es ist eine unabhängige Prüfung mit einem Menschen bei Fehlschlag. Screenshot-APIs liefern Pixel. ShipCheck beantwortet: „Hat Geschichte 3 tatsächlich funktioniert?“
Run
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 8787Die venv existiert bereits auf dieser Box. Standard: Der API-Prozess leert auch die Disk-Queue (Inline-Worker). Zum Trennen:
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_xxxxxxxxxxxxHealth: GET http://127.0.0.1:8787/health
Öffentlich (Cloudflare-Quick-Tunnel, diese Box, Mi. 19. Aug. 2026): https://realtor-all-enclosed-altered.trycloudflare.com
Derselbe Prozess bedient GET / (Landing), REST und POST /mcp. URL auch in PUBLIC_URL.txt. Quick-Tunnel sterben, wenn cloudflared stoppt.
Jobs liegen unter /workspace/shipcheck/queue/{job_id}.json. Berichte und Screenshots unter /workspace/shipcheck/reports/.
Related MCP server: Prufa
Beispielanfrage / -antwort
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"
}'Antwort:
{
"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_ab12cd34ef56Endstatus: pass (alle Heuristiken grün, kein Mensch erforderlich) oder needs_review (Heuristikfehler aufgelistet; ein späterer Durchlauf fügt human_note hinzu über POST /qa_note/{job_id} oder MCP qa_note). error ist unsere Infrastruktur (Timeout, Absturz, unsichere URL) und wird nicht berechnet.
Optionale Header für spätere Abrechnung: Authorization: Bearer <key> oder X-Api-Key. v0 akzeptiert fehlende Schlüssel und belastet nicht.
Optionale Story-Schritte (sonst als Notizen behandelt): click:css=.buy, click:text=Sign in, fill:#email|user@example.com, wait:1000, see:Order total.
Siehe examples/sample_report.json für die Form des Nachweispakets.
Sicherheit
Nur https. Localhost, RFC1918, Link-Local, CGNAT, Metadaten-IPs (169.254.169.254), file://, eingebettete Anmeldedaten und Redirect-to-Private werden abgelehnt. Jede Playwright-Anfrage wird erneut geprüft. 20s Navigations-Timeout, 4-Minuten-Job-Limit. Details in PRODUCT.md.
SSRF-Tests (kein Live-Ziel erforderlich):
cd /workspace/shipcheck
python -m pytest tests/test_ssrf.py tests/test_api.py -qCursor mcp.json
Streamable-HTTP-MCP wird unter POST /mcp bereitgestellt (gleicher Prozess wie REST). Tools: qa_preview, qa_status, qa_get_report, qa_note. Fügen Sie dies zu .cursor/mcp.json oder ~/.cursor/mcp.json hinzu (lassen Sie type weg; Cursor behandelt eine url als streamable HTTP):
{
"mcpServers": {
"shipcheck": {
"url": "https://realtor-all-enclosed-altered.trycloudflare.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}v0 akzeptiert einen fehlenden Schlüssel und belastet nicht. Dieselbe Datei liegt unter examples/mcp.json. Der Server muss laufen (python -m shipcheck serve --host 127.0.0.1 --port 8787). Die öffentliche URL ist ein Cloudflare-Quick-Tunnel vor diesem Prozess.
Landingpage: GET / (HTML in shipcheck/landing.html). Öffentliches Preview-Ratenlimit: 20 qa_preview-Jobs/Tag/IP (Loopback unbegrenzt). SHIPCHECK_PREVIEW_LIMIT_PER_IP überschreibt; 0 deaktiviert.
Preisgestaltung
Absicht, noch nicht berechnet: $6 Desktop / $10 beide Viewports (oder 5–8 Stories) pro Lauf. Prepaid-Polar-Credits später. Hook: shipcheck/billing.py.
Nächste Schritte
Polar-Credit-Pakete + Lizenzschlüssel als
Authorization: Bearer; nur bei Erfolg belasten.Slack/Telegram-Ping, wenn Status
needs_reviewist; Mensch schreibthuman_note(RESTPOST /qa_note/{job_id}und MCPqa_noteakzeptieren die Notiz bereits).Auflistung auf PulseMCP / Glama / offiziellem MCP-Registry (Entdeckung, kein Marktplatz).
Öffentlicher Beispielbericht + eine 30-zeilige
llms.txt.
Fügen Sie kein Dashboard, keine GitHub-App und keine Krypto-Schiene hinzu.
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