ShipCheck v0

Independent preview-URL QA for coding agents. You POST a public https preview URL plus acceptance stories. We run Playwright heuristics, screenshot each story, and return a pass/fail evidence pack. Failures stay needs_review until a human (or this agent looking at the page) adds a short note.

Public preview. No billing yet. Credits (Polar) later. Localhost and private URLs are rejected.

Price intent (not charged)

RunUSD
Desktop or mobile, 1–4 stories$6
Both viewports, or 5–8 stories$10

Prepaid credits coming. Timeouts, SSRF rejects, and crashes will not be billed. v0 accepts a missing API key and does not debit.

Three tool calls

ToolRESTWhat
qa_previewPOST /qa_previewQueue a run. Body: {url, stories[{id, steps[], expect}], viewport}. Returns job_id.
qa_statusGET /qa_status/{job_id}queued / running / pass / needs_review / error
qa_get_reportGET /qa_get_report/{job_id}Evidence pack: heuristics, screenshots, optional human_note

Also: POST /qa_note/{job_id} (MCP qa_note) to close needs_review. Streamable-HTTP MCP is POST /mcp on this same host. Health: GET /health.

Rules

mcp.json

Cursor: add to .cursor/mcp.json (omit type; a url is streamable HTTP). Key optional in v0.

{
  "mcpServers": {
    "shipcheck": {
      "url": "https://THIS-HOST/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY"
      }
    }
  }
}

curl

curl -sS -X POST https://THIS-HOST/qa_preview \
  -H 'Content-Type: application/json' \
  -d '{"url":"https://example.com/","stories":[{"id":"home","steps":["open"],"expect":"Example Domain"}]}'

ShipCheck does not log into your GitHub, does not scrape behind auth walls, and does not solve CAPTCHAs. No marketplace. No dashboard.