Skip to main content
Glama

ShipCheck v0

コーディングエージェント向けの、独立したプレビューURL QA。エージェントが公開httpsプレビューURLと受け入れストーリーをPOSTする。こちらはPlaywrightのヒューリスティックを実行し、各ストーリーをスクリーンショットし、パス/フェイルの証拠パックを返す。失敗は、人間(またはこのページを調べているこのエージェント)が短いメモを追加するまでneeds_reviewのままになる。

UIを書いたモデル自身は、そのUIの良し悪しを判断するのには不向きだ。それがこのプロダクトの本質である。

Playwright MCPは無料だ。これはホスト型ブラウザではなく、失敗時に人間が関与する独立したチェックである。スクリーンショットAPIはピクセルを返すだけだ。ShipCheckが答えるのは「ストーリー3は実際に動いたか?」である。

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

このボックスにはvenvがすでに存在する。デフォルトではAPIプロセスがディスクキューも処理する(インラインワーカー)。分割する場合:

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

ヘルスチェック: GET http://127.0.0.1:8787/health

公開(Cloudflareクイックトンネル、このボックス、2026年8月19日(水)): https://realtor-all-enclosed-altered.trycloudflare.com 同じプロセスがGET /(ランディングページ)、REST、POST /mcpを提供する。URLはPUBLIC_URL.txtにも記載されている。クイックトンネルはcloudflaredが停止すると消える。

ジョブは/workspace/shipcheck/queue/{job_id}.jsonに置かれる。レポートとスクリーンショットは/workspace/shipcheck/reports/にある。

Related MCP server: Prufa

リクエスト/レスポンスの例

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"
  }'

レスポンス:

{
  "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

最終ステータスはpass(すべてのヒューリスティックがグリーンで、人間の対応は不要)またはneeds_review(ヒューリスティックの失敗が列挙される。後のパスでPOST /qa_note/{job_id}またはMCP qa_noteによりhuman_noteが追加される)。errorはインフラ側の問題(タイムアウト、クラッシュ、安全でないURL)であり、課金はされない。

将来の課金に備えたオプションのヘッダー: Authorization: Bearer <key>またはX-Api-Key。v0はキーがなくても受け付け、デビット(引き落とし)はしない。

オプションのストーリーステップ(指定しない場合はそのままメモとして扱われる): click:css=.buy, click:text=Sign in, fill:#email|user@example.com, wait:1000, see:Order total。

証拠パックの形はexamples/sample_report.jsonを参照。

セキュリティ

httpsのみ。localhost、ループバック(RFC1918)、リンクローカル、CGNAT、メタデータIP(169.254.169.254)、file://、埋め込まれた資格情報、プライベートへのリダイレクトを拒否する。すべてのPlaywrightリクエストは再チェックされる。ナビゲーションタイムアウトは20秒、ジョブ上限は4分。詳細はPRODUCT.mdにある。

SSRFテスト(ライブターゲットは不要):

cd /workspace/shipcheck
python -m pytest tests/test_ssrf.py tests/test_api.py -q

Cursor の mcp.json

Streamable-HTTP MCPはPOST /mcp(RESTと同じプロセス)で提供される。ツール: qa_preview、qa_status、qa_get_report、qa_note。これを.cursor/mcp.jsonまたは~/.cursor/mcp.jsonに追加する(typeは省略。Cursorはurlをstreamable HTTPとして扱う):

{
  "mcpServers": {
    "shipcheck": {
      "url": "https://realtor-all-enclosed-altered.trycloudflare.com/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

v0はキーがなくても受け付け、引き落としはしない。同じファイルはexamples/mcp.jsonにもある。サーバーが起動している必要がある(python -m shipcheck serve --host 127.0.0.1 --port 8787)。公開URLはそのプロセスの前に立つCloudflareクイックトンネルだ。

ランディングページ: GET /(HTMLはshipcheck/landing.html)。公開プレビューのレート制限: 20 qa_preview ジョブ/日/IP(ループバックは無制限)。SHIPCHECK_PREVIEW_LIMIT_PER_IPで上書きでき、0で無効になる。

料金

意図(まだ課金しない): 実行ごとに $6 デスクトップ / $10 両ビューポート(または5–8ストーリー)。あとでPolarのプリペイドックレジットを使う。フック: shipcheck/billing.py。

次のステップ

  1. Polarのクレジットパック+Authorization: Bearerとしてのライセンスキー。成功時のみ引き落とす。

  2. ステータスがneeds_reviewになったらSlack/Telegramに通知し、人間がhuman_noteを書く(REST POST /note/{job_id}とMCP qa_noteはすでにそのメモを受け付ける)。

  3. PulseMCP / Glama / 公式MCPレジストリに掲載(ディスカバリーだけで、マーケットプレイスではない)。

  4. 公開サンプルレポート+30行のllms.txt。

に関する dashboard、GitHub App、crypto railは追加しない。

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