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.
| Run | USD |
|---|---|
| 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.
| Tool | REST | What |
|---|---|---|
qa_preview | POST /qa_preview | Queue a run. Body: {url, stories[{id, steps[], expect}], viewport}. Returns job_id. |
qa_status | GET /qa_status/{job_id} | queued / running / pass / needs_review / error |
qa_get_report | GET /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.
127.0.0.1, RFC1918, link-local, CGNAT, metadata IPs, file://, embedded credentials, redirect-to-private.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 -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.