Skip to main content
Glama

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 8787

Die 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_xxxxxxxxxxxx

Health: 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_ab12cd34ef56

Endstatus: 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 -q

Cursor 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

  1. Polar-Credit-Pakete + Lizenzschlüssel als Authorization: Bearer; nur bei Erfolg belasten.

  2. Slack/Telegram-Ping, wenn Status needs_review ist; Mensch schreibt human_note (REST POST /qa_note/{job_id} und MCP qa_note akzeptieren die Notiz bereits).

  3. Auflistung auf PulseMCP / Glama / offiziellem MCP-Registry (Entdeckung, kein Marktplatz).

  4. Öffentlicher Beispielbericht + eine 30-zeilige llms.txt.

Fügen Sie kein Dashboard, keine GitHub-App und keine Krypto-Schiene hinzu.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Point 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.
    44
    20 PyPI
    2
    Apache 2.0
  • A
    license
    A
    quality
    A
    maintenance
    Enables coding agents to independently verify web changes by scanning pages, inspecting UI structure, generating Playwright reproductions, and executing tests with structured QA evidence.
    4
    59 npm
    4
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables 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 npm
    4
    MIT