Skip to main content
Glama

ShipCheck v0

Независимый QA по preview URL для агентов, пишущих код. Агент отправляет POST-запросом публичный https preview URL и приёмочные сценарии. Мы запускаем эвристики Playwright, делаем скриншот каждого сценария и возвращаем комплект доказательств с результатом pass/fail. Неудачные результаты остаются в статусе needs_review, пока человек (или этот агент, просматривающий страницу) не добавит короткое примечание.

Модель, написавшая UI, — плохой судья для этого UI. В этом и заключается продукт.

Playwright MCP бесплатен; это не облачный браузер. Это независимая проверка с участием человека при неудаче. Screenshot API дают пиксели. ShipCheck отвечает на вопрос: «действительно ли сработал сценарий 3?»

Запуск

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

Публичный URL (быстрый туннель Cloudflare, эта машина, среда, 19 августа 2026): 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 (перечислены ошибки эвристик; последующий проход добавляет human_note через POST /qa_note/{job_id} или MCP qa_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, link-local, CGNAT, IP-адреса метаданных (169.254.169.254), file://, встроенные учётные данные и redirect-to-private отклоняются. Каждый запрос 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). Лимит публичных preview-задач: 20 qa_preview задач/день/IP (loopback без ограничений). SHIPCHECK_PREVIEW_LIMIT_PER_IP переопределяет лимит; 0 отключает.

Цены

Задумано, но пока не взимается: $6 десктоп / $10 оба вьюпорта (или 5–8 сценариев) за один прогон. Предоплаченные кредиты Polar — позже. Хук: shipcheck/billing.py.

Следующие шаги

  1. Кредитные пакеты Polar + лицензионный ключ в качестве Authorization: Bearer; списание только при успехе.

  2. Пинг в Slack/Telegram, когда статус — needs_review; человек пишет human_note (REST POST /qa_note/{job_id} и MCP qa_note уже принимают примечание).

  3. Разместить в PulseMCP / Glama / официальном реестре MCP (обнаружение, а не маркетплейс).

  4. Публичный пример отчёта + llms.txt из 30 строк.

Не добавляйте дашборд, GitHub App или криптовалютный платёжный канал.

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