CertScore.ai MCP Light
Рекомендуемая точка входа для обнаружения: безавторизационные Streamable HTTP-сканирования конфиденциальности веб-сайтов для клиентов MCP. Передайте агенту публичный URL и получите наблюдения, подтвержденные доказательствами, обCookies и хранилище, трекерах и поставщиках, управлении согласием, поверхностях политики конфиденциальности и сигналах HTTPS/TLS.
CertScore.ai MCP Light доступен в GitHub MCP Registry как ai.certscore/mcp-light. Он предоставляет четыре инструмента и не требует регистрации, API-ключа, bearer-токена, входа в браузер или OAuth.
| Endpoint | https://mcp.certscore.ai/mcp/light |
| Transport | Streamable HTTP |
| Authentication | None |
| Tools | certscore_scan_site → certscore_get_scan_status → certscore_get_scan_bundle |
| Current hosted version | 0.2.21 |
Start with MCP Light · Install in Cursor · Read the installation reference
Попробуйте за минуту
Добавьте публичный endpoint в Codex:
codex mcp add certscore --url https://mcp.certscore.ai/mcp/light
Затем задайте вопрос:
Сканируйте https://ergoveritas.com/.well-known/certscore-canary/sentinels/broad-baseline.html. Пройдите через возвращающийся жизненный цикл сканирования, получите завершённый пакет выводов и суммируйте балл, уровень риска, выводы, ссылки на доказательства, ограничения охвата и URL-отчета. Укажите, было ли результатом новое сканирование или повторно использованное. Рассматривайте результаты как автоматические наблюдения публичного веба, а не юридическую консультацию или сертификацию.
ErgoVeritas — стабильный, управляемый канарий с намеренными тестовыми сигналами. Для обычного обзора заменяйте любой публичный HTTP или HTTPS URL, который вы уполномочены оценить.
Light MCP — без аутентификации: начните здесь
Light — это анонимный Streamable HTTP-эндпойнт для первых запусков и низкой загрузки агентов:
Light:
https://mcp.certscore.ai/mcp/light
Authentication: None
Tools: certscore_scan_site, certscore_get_scan_status, certscore_get_scan_bundle
Light позволяет выполнять до 50 genuinely new сканов в UTC-сутки по поверхности Light и до 5 сканов за каждые 10 минут в скользящем окне, с дополнительной защитой по IP/провайдеру. Повторно использованные подходящие результаты не расходуют квоту.
Light — бесплатный сканер приватности веб-сайтов и проверка cookies для публичных сайтов. Может возвращать канонические доказательства и выводы для cookies и хранения до презентации согласия, трекеры и вендоры, баннеры cookies, CMP и источников управления согласием, полей политики конфиденциальности и поверхностей прозрачности, сигналы обзора GDPR/ePrivacy и CCPA/CPRA, а также наблюдения за транспортом HTTPS/TLS. Типичные применения включают preflight приватности релиза, обзор публичных доменов поставщиков, инспекцию трекеров на лендинге, триаж аудита и сбор доказательств перед human privacy review.
Детальный первый запуск:
Сканируйте https://ergoveritas.com/.well-known/certscore-canary/sentinels/broad-baseline.html. Если certscore_scan_site включает preConsentPreview, трактуйте это как частичный просмотр и продолжайте работу. Различайте зафиксированные totals и возвращённые идентичности; используйте trackingVendorCount для неоперационных трекеров и держите operationalVendors отдельно. Не сравнивайте счётчик совместимости preview trackerCount с полным inventory trackerCount. Никогда не указывайте количество превью как итоговый. Если certscore_scan_site возвращает очередной, выполняющийся или завершающийся результат, сохраните возвращённый scanId и опрашивайте certscore_get_scan_status используя только scanId. Если certscore_scan_site вернул ошибку retryable без scanId, дождитесь retryAfterSeconds и повторите certscore_scan_site; вызывать certscore_get_scan_status нельзя пока scanId не существует. Как только скан достигнет терминального статуса, вызовите certscore_get_scan_bundle с detail=findings и maxBytes=8000. Подведите итог: было ли результатом новое или повторно использованное. Укажите балл, уровень риска, выводы, ссылки на доказательства, ограничения охвата и URL-отчета. Объясните усечение или пропущенные разделы, если они присутствуют. Рассматривайте результаты как автоматические наблюдения публичного веба, а не юридические выводы, сертификацию или определение соответствия.
Canonical Light workflow (канонический рабочий процесс Light):
-
Вызывайте
certscore_scan_siteс открытым URL. -
Если произошла повторяемая ошибка без
scanId, подождитеretryAfterSecondsи повторитеcertscore_scan_site. -
Если есть
preConsentPreview, это частичный просмотр checkpoint-пассивных наблюдений. Его счётчики частичны и не представляют итоговую сводку; не репортируйте их как итоговую. Он не содержит канонических выводов или балла и не заменяет завершённый пакет. -
Если результат в очереди, выполняется или завершается, сохраняйте
scanId. -
Периодически опрашивайте
certscore_get_scan_statusпо толькоscanId. Остановитесь на любом терминальном статусе. -
При
completedилиcompleted_limitedвызовитеcertscore_get_scan_bundleдо репорта полной сводки; используйте финальные итоги, канонические выводы и ограничения; для выводаfindings,evidenceилиfullприменяйте их только при необходимости углублённого Bounding-context. -
Резюмируйте канонический балл, риск, выводы, охват, ограничения и URL-отчета; не трактуйте претендующее preview, no-go, not-observed или ограниченный охват как доказательство соответствия.
Recommended bundle budgets и ограничение по byte:
MCP Light ограничивает ответ до 25 000 байт. Рекомендованные бюджеты: summary — 5000 байт, findings — 8000 байт, evidence — 8000 байт, full — 12000–25000 байт. При превышении лимита результат возвращается, но с ограничениями. При меньшем бюджете компактные core finding rows имеют приоритет над дополнительными полями.
TextContent ограничен 8 000 символами и использует короткие обычные текстовые строки, а не крупные таблицы или вложенный JSON. Он содержит канонические факты обзора и проекционные выводы перед строками inventory, чтобы одно семейство доказательств не заглушало другое.
mcpMetadata всегда включает requestedMaxBytes, effectiveMaxBytes, responseCeilingBytes, responseBudgetClamped, actualBytes, fullPayloadBytes, truncated, canonicalFindingsComplete, truncationReason, omittedSections, deduplicatedSections, nextRecommendedMaxBytes, omittedContentAvailableViaUrl, и contentUrls. При дефиците байтов опциональные detail и inventory-строки уменьшаются в пользу компактных core finding rows. canonicalFindingsComplete отделяет завершённые проекционные выводы от частично пропущенного конверта. nextRecommendedMaxBytes — округлённый размер, необходимый для полного запрошенного уровня, а не шаг повторной попытки; если полный уровень превышает потолок MCP, ответ направляет агенту на доступный URL отчета/доказательств. При tight-бюджете возможны пропуски diagnostics; омятая информация перечислена в mcpMetadata.omittedSections. При наличии canonicalFindingsComplete повторная попытка требуется только если необходим пропущенный envelope detail.
-
certscore_export_findings- вернуть структурированные выводы плюс завершённо-ограниченное no-go disposition и руководство для последующего обзора. -
certscore_list_findings- целевой последующий обзор: перечислить ограниченные Findings API v2 публично-видимой выборки с соответствующим high-signal TextContent и структурированным содержимым. При широких конфиденциальных вопросах сначала используйтеcertscore_get_scan_bundle. -
certscore_get_pre_consent_cookies_trackers- целевой последующий обзор: вернуть ограниченную row-level публично-совместимой pre-consent cookie/tracker evidence с сопоставимым TextContent и structuredContent. При новом широком запросе, например проверке сайта на pre-consent tracking, используйте сначалаcertscore_scan_site, затемcertscore_get_scan_bundle. -
certscore_explain_finding- объяснить одно проективное finding с публичными доказательствами, оговорками, следующими шагами рецензирования и контекстом no-go по конкретному основанию. -
certscore_get_latest_domain_scan- получить последнюю подходящую API v2 публично-совместимую выборку для домена.
Поля происхождения (provenance) остаются отдельными: provenance.retrievalMode описывает текущий режим чтения, provenance.creationDecision сообщает сохранённое оригинальное решение о новом/повторном использовании или unknown, а provenance.scanAgeSeconds — числовой возраст, если доступен. Само по себе скан-id lookup не доказывает повторное использование.
При сжатых бюджетах bundle краток: действия nextStep остаются короткими, если они помещаются без смещения поfinding. Расширенная детальность и доказательства доступны через канонические URL-адреса или больший полный уровень.
certscore_get_latest_domain_pre_consent_cookies_trackers- целевой последующий обзор: вернуть ограниченную row-level evidence pre-consent cookies/tracker для последнего подходящего скана домена, с сопоставимым TextContent и structuredContent. При широком обзоре текущего сайта сначала используйтеcertscore_scan_site, затемcertscore_get_scan_bundle.
Начальная поверхность MCP сознательно не включает инструменты просмотра сканов аккаунтом или сравнения сканов.
Временные поля сканов
Инструменты MCP, основанные на ресурсах скана API v2, возвращают время скана, когда CertScore имеет достаточно данных по времени:
startedAtcompletedAtscanTimeSeconds
Это относится к certscore_scan_site, когда возвращается ресурс скана API v2 или задача, к certscore_get_scan и к certscore_get_scan_status, вызываемым по scanId. Значение scanTimeSeconds: null означает, что время недоступно или неполно, и не следует отображать как 0.
Завершённые Light-результаты каноничны. certscore_scan_site, терминальный certscore_get_scan_status и certscore_get_scan_bundle возвращают одну и ту же оценку, уровень риска, охват и поля времени. Оценки включают scoreStatus, scoreVersion и scoreUpdatedAt; скан остаётся в состоянии finalizing, пока не будет готова.persisted каноническая проекция отчета, поэтому ответ с завершением всегда имеет scoreStatus: "final".
No-go-результаты начинаются с удерживаемого блока доступа, “Not scored,” фрагмента доказательства, следующего шага и повторной инструкции. Структурированные ответы сохраняют resultDisposition, noGo, нулевые балл/риск и пустые выводы. При строгом бюджете bundle сохраняет этот блокер и решение до диагностики по дополнительному каналу; пропущенные диагностические данные перечисляются в mcpMetadata.omittedSections. Запрос full для no-go не придумывает полный отчет.
Значение охватывает только наблюдаемые сигналы публичного веба. Клиенты не должны делать выводы о технологиях, не присутствующих в возвращённых доказательствах, сравнивать значение с гипотетической базовой линией соответствия или делать выводы о юридическом статусе.
Каждый статус failed, expired или rate_limited включает ограниченный объект error с полями code, message, retryable, retryAfterSeconds и recommendedNextAction.
Детали Bundle Light и бюджеты по байтам
Каждый bundle объявляет свой выбранный режим detail. summary возвращает обзор, канонический результат, до пяти компактных проективных объектов finding, компактные row-level pre-consent cookie/tracker evidence, охват, ограничения, счётчики и URL-отчета. Это позволяет клиентам MCP перечислять проективные сигналы управления согласием, CMP-контекст, транспорт, прозрачность GDPR/ePrivacy, интеграцию в соцсети/медиа, доступность, раскрытие и другие возвращаемые сигналы обзора без обращения к второму инструменту; возвращаются только те категории, которые реально присутствуют в канонических проекциях. Выводы и разделы инвентаря содержат total, returned и truncated. Каждый компактный finding сохраняет свою ссылку на evidence в API v2. Каждая строка инвентаря включает идентификатор cookie/tracker, имена cookie (если есть), vendor, purpose, category, время первого наблюдения, домены, классификацию доказательств и доверие. findings увеличивает допустимое число выводов до 20. evidence добавляет ограниченные дайджесты доказательств и ссылки. full добавляет максимально возможные разделы, которые не дублируют друг друга, с учётом эффективного бюджета по байтам; выводы, топ-выводы и транспортная безопасность возвращаются один раз в верхнем каноническом разделе bundle. Если fullPayloadBytes превышает потолок Light, используйте канонические content URLs вместо повторной попытки выше потолка.
TextContent ограничен 8 000 символами и использует короткие текстовые строки вместо больших таблиц или вложенного JSON. Он представляет канонические факты обзора и проективные выводы до строки inventory, чтобы одна семья доказательств не заглушала другие. Полный профиль канонического bundle по умолчанию составляет 50 000 байтов и допускает запрос caller-указанного диапазона от 5 000 до 200 000 байтов. Light по умолчанию устанавливает и применяет потолок в 25 000 байтов. При необходимости представления может быть пропущен возвращаемый items; в этом случае явно указывается и сохраняются суммы и метаданные о усечении.
mcpMetadata всегда включает requestedMaxBytes, effectiveMaxBytes, responseCeilingBytes, responseBudgetClamped, actualBytes, fullPayloadBytes, truncated, canonicalFindingsComplete, truncationReason, omittedSections, deduplicatedSections, nextRecommendedMaxBytes, omittedContentAvailableViaUrl, и contentUrls. При давлении байтов опциональные detail и inventory-строки уменьшаются в пользу компактных core finding rows. canonicalFindingsComplete отделяет завершённые проекционные выводы от частично пропущенного конверта. nextRecommendedMaxBytes — это округлённый размер, необходимый для полного запрошенного уровня, а не шаг повторной попытки; если полный уровень превышает потолок MCP, ответ направляет агента к доступному URL-отчета/доказательств.
Ошибки валидации входа остаются в виде ошибок MCP -32602 и дополнительно включают структурированные детали invalid_arguments с затронутым полем и безопасным следующим действием. Ошибочные результаты содержат сжатый текст плюс машинно читаемые детали. Успешные результаты помещают типизированный результат в structuredContent; пакеты сканов также отображают ограниченную row-level evidence-сводку в TextContent для совместимости клиента.
Рабочий процесс Light таков:
-
Вызывайте
certscore_scan_siteс публичным URL. -
Если повторяемая ошибка без
scanId, ждитеretryAfterSecondsи повторитеcertscore_scan_site; опрос не выполняйте. -
Если результат в очереди, выполняется или завершается, сохраните
scanIdи опрашивайтеcertscore_get_scan_statusтолько по этому ID. -
Остановитесь на любом терминальном статусе. Для
completedилиcompleted_limitedвызовитеcertscore_get_scan_bundle. -
Если пакет усечён, следуйте
recommendedNextAction, увеличьтеmaxBytesили откройте указанный URL содержимого. -
Подведите итог: балл CertScore, риск, pre-consent строки, выводы, охват, ограничения и URL-отчета без учета no-go, not-observed и ограниченного охвата как доказательств соответствия.
Completed-Limited No-Go Results
No-go-сканы являются допустимыми терминальными результатами, а не сбоями транспорта. Соответствующие инструменты сохраняют status: "completed_limited", resultDisposition: "no_go", устойчивый код причины, безопасный для клиента заголовок и объяснение, limitationKind атрибуцию, подсказки по повторной попытке, и ограниченный evidenceExcerpt при сохранении. Неизвестные будущие причины используют общий текст клиента, оставаясь структурированными как reasonCode: "unknown".
Hosted MCP — OAuth
OAuth-совместимые клиенты MCP могут подключаться к:
https://mcp.certscore.ai/mcp
Доступ к discovery endpoints:
https://mcp.certscore.ai/.well-known/oauth-protected-resource/mcp
https://certscore.ai/.well-known/oauth-authorization-server
Полная размещённая служба использует OAuth authorization code with PKCE. Члены активных рабочих пространств могут подключаться через зарегистрированные OAuth-клиенты по планам с правами scan:read, scan:create и mcp. Существуют ограничения. Каноническая пригодность, авторизация и повторное подключение: https://certscore.ai/developers/mcp#hosted-oauth-start. Локальная политика API-key отдельно.
Для низкого объёма агентского обнаружения без учётной записи и без настройки OAuth используйте неавторизованный эндпойнт:
https://mcp.certscore.ai/mcp/anonymous
Для самого простого сценария без учётной записи используйте Light-быстрый старт в начале документа. Метаданные OAuth применяются только к https://mcp.certscore.ai/mcp.
Local MCP — конфигурация ключа API с областью действия
Установить через Homebrew на macOS:
brew tap ergoveritas1-alt/certscore https://github.com/ergoveritas1-alt/certscore.ai
brew install --cask certscore-mcp
Казённый пакет устанавливает предсобранную MCP-команду для пользователей, предпочитающих персистентный локальный бинарник.
Используйте установленную команду из клиента MCP:
{
"mcpServers": {
"certscore": {
"command": "certscore-mcp",
"env": {
"CERTSCORE_API_KEY": "YOUR_TOKEN",
"CERTSCORE_BASE_URL": "https://certscore.ai"
}
}
}
}
Запуск из этого монорепозитория для локальной разработки:
CERTSCORE_API_KEY=... pnpm mcp:certscore
Сгенерируйте ограниченный ключ предварительного просмотра после применения миграций БД:
pnpm db:migrate
pnpm mcp:certscore:generate-key -- --name "CertScore MCP preview"
Запустите собранный пакет напрямую после локальной сборки:
CERTSCORE_API_KEY=... certscore-mcp
Необязательно:
CERTSCORE_BASE_URL=https://certscore.ai
CERTSCORE_REQUEST_TIMEOUT_MS=300000
CERTSCORE_API_KEY должен быть ограниченным токеном CertScore API для рабочего пространства или пользователя предварительного просмотра. MCP-сервер передает его Pulse как bearer-токен и не сохраняет.
Local MCP — доступ по ограниченному API-ключу
Stdio API-ключи используют pulse:read и mcp; создание сканов дополнительно требует pulse:scan. Hosted OAuth использует scan:read scan:create mcp в рамках политики активного рабочего пространства зарегистрированного клиента. См. https://certscore.ai/developers/mcp#hosted-oauth-start для текущей пригодности и доступностиVerified-клиентов.
Проверка установки
certscore-mcp --version
certscore-mcp --help
CERTSCORE_API_KEY=... certscore-mcp doctor
CERTSCORE_API_KEY=... certscore-mcp doctor --check-auth
Команда doctor проверяет запуск бинарника, вывод версии, совместимость рантайма Node.js, настроенный базовый URL CertScore, здоровье API v2 и наличие API key. Добавьте --check-auth, чтобы верифицировать учётные данные против /api/v2/auth/check без создания скана. Она не печатает секреты и не Inspectraw артефакты сканирования.
No-account агентский путь скана
Агенты, не имеющие учётной записи или не настраивающие OAuth, могут использовать публичный путь скана API v2 без заголовка Authorization:
curl -X POST https://certscore.ai/api/v2/scans \
-H "Content-Type: application/json" \
-d '{"url":"https://ergoveritas.com/.well-known/certscore-canary/sentinels/broad-baseline.html","freshness":"latest","scanFrom":"eu_ie"}'
Новые анонимные сканы ограничены 20-ю сканами с одного IP-адреса за UTC-день. Повторно использованный подходящий результат не расходует квоту. Осуществляйте опрос возвращённого status-resource, затем получите выводы или доказательства. Свяжитесь с support@certscore.ai для большего объема квоты, включая случаи, когда повторное использование подходит под текущий запрос.
Примеры MCP-клиента
Claude Desktop-style config:
{
"mcpServers": {
"certscore": {
"command": "certscore-mcp",
"env": {
"CERTSCORE_API_KEY": "YOUR_TOKEN",
"CERTSCORE_BASE_URL": "https://certscore.ai"
}
}
}
}
Cursor config:
{
"mcpServers": {
"certscore": {
"command": "certscore-mcp",
"env": {
"CERTSCORE_API_KEY": "YOUR_TOKEN",
"CERTSCORE_BASE_URL": "https://certscore.ai"
}
}
}
}
Windsurf или generic stdio MCP-клиент:
{
"mcpServers": {
"certscore": {
"command": "certscore-mcp",
"env": {
"CERTSCORE_API_KEY": "YOUR_TOKEN",
"CERTSCORE_BASE_URL": "https://certscore.ai"
}
}
}
}
Локальный конфиг репозитория для контрибьюторов:
{
"mcpServers": {
"certscore": {
"command": "pnpm",
"args": ["mcp:certscore"],
"cwd": "/path/to/WC01",
"env": {
"CERTSCORE_API_KEY": "YOUR_TOKEN",
"CERTSCORE_BASE_URL": "https://certscore.ai"
}
}
}
}
Workflow агентов
-
Вызывайте
certscore_scan_siteс публичным URL. Повторно использованный подходящий результат может завершиться сразу; новый скан возвращает его устойчивыйscanIdи может вернуть частичный просмотр, когда рантайм-полоска завершится или достигнет шестисекундной контрольной точки. -
Если
preConsentPreviewприсутствует, различайте зафиксированные totals и возвращённые идентичности. ИспользуйтеtrackingVendorCountдля неоперационных трекеров и держитеoperationalVendorsотдельно; не сравнивайте compatiblity previewtrackerCountс более широкимtrackerCountв inventory. Это не вывод и не итог. -
Если статус
queued,runningилиfinalizing, сохраняйте возвращённыйscanIdи опрашивайтеcertscore_get_scan_statusтолько по этому ID. Остановитесь на любом терминальном статусе:completed,completed_limited,failed,expired,rate_limited. -
Для
completedилиcompleted_limitedвызовитеcertscore_get_scan_bundleс умолчаниями detail:"summary"перед отчетом полной сводки. Используйте его финальные расчёты, канонические findings и ограничения. Применяйтеfindings,evidenceилиfullтолько по мере необходимости для углублённого контекста. -
Подведите итог канонического балла, риска, выводов, охвата, ограничений, URL-отчета и следующего действия. Никогда не принимайте preview, no-go, not-observed или ограниченный охват как доказательство соответствия.
Канонический первый запуск:
Сканируйте эти публичные URL-адреса. Для каждого вызова используйте certscore_scan_site. Если присутствует preConsentPreview, трактуйте его как частичный просмотр, чьи счётчики checkpoints и частично зависят от контекста; не репортируйте как итоговыеTotals и продолжайте рабочий процесс. Если статус
queued,runningилиfinalizing, сохраняйтеscanIdи опрашивайтеcertscore_get_scan_statusпоscanIdтолько. Остановитесь на завершённых статусах:completed,completed_limited,failed,expiredилиrate_limited. Для завершённых или завершённых в ограниченном виде сканов вызовитеcertscore_get_scan_bundleс detail=findings перед репортом полной сводки. Используйте bundle для итоговой фиксированной суммы, канонических findings и ограничений. Если усечён, следуйтеrecommendedNextActionили увеличьтеmaxBytes. Сообщите канонический балл, уровень риска, охват, выводы, ограничения, URL-отчета и следующее действие. Никогда не рассматривайте preConsentPreview, no-go, not-observed или ограниченный охват как доказательство соответствия.
-
Вызывайте
certscore_get_report,certscore_get_evidence,certscore_list_findingsилиcertscore_get_pre_consent_cookies_trackersтолько когда задача требует отдельного представления. -
Вызывайте
certscore_explain_finding, когда reviewer нуждается в доказательствах и оговорках по конкретному finding. -
Вызывайте
certscore_get_latest_domain_scanилиcertscore_get_latest_domain_pre_consent_cookies_trackers, когда пользователь запрашивает последние допустимые публичные данные по домену.
certscore_scan_site сообщает, был ли результат повторно использован, почему принято решение о свежести, использована ли анонимная квота, оставшееся дневное лимитированное количество, UTC-сбрасывание и рекомендуемый следующий инструмент.
С опцией freshness: "latest" CertScore повторно использует подходящий скан, завершённый в пределах последних 24 часов для той же нормализованной цели и региона скана. Повторно используемый результат должен иметь завершённое покрытие страниц и не должен быть ранним отключением, без страниц или иного нерелевантного повторного использования. Повторное использование не расходует анонимную квоту. freshnessDecision сообщает, был ли использован недавно выполненный результат или новый скан был поставлен в очередь; reusedScanAgeSeconds сообщает возраст повторно использованного результата.
Происхождение (provenance) держит текущее извлечение отдельно от исходного решения о создании. retrievalMode=creation_response означает, что результат пришёл из certscore_scan_site; retrievalMode=scan_id_lookup означает, что позднее инструмент нашёл сохранённый скан по ID. creationDecision равен new_scan или reused_scan только если ответ сохраняет этот факт, иначе unknown. Не переводите scan_id_lookup как claim о reused-scan. scanAgeSeconds сообщает неотрицательный возраст, если доступна сохранённая дата создания или завершения.
{
"tool": "certscore_get_pre_consent_cookies_trackers",
"arguments": {
"scanId": "00000000-0000-4000-8000-000000000123"
}
}
{
"tool": "certscore_get_latest_domain_pre_consent_cookies_trackers",
"arguments": {
"domain": "ergoveritas.com",
"scanFrom": "eu_ie"
}
}
При суммировании табличных данных группируйте строки по vendor, purpose и host, если пользователь не запросил JSON на уровне строки.
Считайте выход MCP как автоматические наблюдения публичного веба для человеческого и агентного анализа. Это не юридическая консультация, сертификация или решение о соответствии. Инструменты MCP не должны выводить выводы из сырых пометок, сырых сетевых событий, отсутствующих данных или выводов, доступных только для отображения.
Live Smoke
CERTSCORE_API_KEY=... pnpm mcp:certscore:smoke
Опционально:
CERTSCORE_MCP_SMOKE_URL=https://ergoveritas.com/.well-known/certscore-canary/sentinels/broad-baseline.html
Без CERTSCORE_API_KEY скрипт smoke завершится успешно с пропуском.
Для полного операционного smoke в продакшене запустите из репозитория WC01:
CERTSCORE_ALLOW_PAID_ECS_SMOKE=1 pnpm ops:smoke:mcp-cli-production
Это проверяет установленную Homebrew-команду certscore-mcp против живого https://certscore.ai. Сначала требуется, чтобы версия CLI соответствовала версии рабочего пространства, затем создаётся временный ключ-предпросмотр, хранится только хэш в продакшене через одобренный ECS/Fargate путь, проверяются требуемые инструменты, требуется непустые findings и строки pre-consent cookies/trackers, и затем временный ключ отзывается. Явно нужен выбор оплаты, потому что эта отдельная проверка CLI запускает одноразовые задачи в Fargate. Используйте pnpm ops:smoke:mcp-production для размещённого, сохранённого скана, только чтения канарей.
Поисправка
-
Неожиданный OAuth в Codex: удалите сервер и добавьте его снова с точным Light URL
https://mcp.certscore.ai/mcp/light. Не настраивайте bearer-токен. -
Успешное подключение Light: инициализация Streamable HTTP завершается, страница авторизации не открывается, а
tools/listвозвращает ровноcertscore_scan_site,certscore_get_scan_status, иcertscore_get_scan_bundle. -
Отсутствие scan ID: повторяйте
certscore_scan_siteтолько если ошибка повторяемая. Не вызывайтеcertscore_get_scan_statusпокаscanIdне существует. -
Rate limit: следуйте
retryAfterSeconds, воспользуйтесьrecommendedNextAction, подождите UTC-сброса или повторно используйте подходящий результат. -
Повторно использованный результат: сообщайте, что подходящий предыдущий скан был повторно использован и квота не была потрачена.
-
Усечённый пакет: сначала проверьте
canonicalFindingsComplete; если он true, повторяйте только для пропущенного envelope detail. В противном случае следуйтеnextRecommendedMaxBytes, увеличьтеmaxBytesили откройте возвращённый контент URL. -
Неверный URL: исправьте поле, название которого указано в структурированном
invalid_arguments, и повторите с открытым публичным HTTP или HTTPS URL. -
Ограниченный результат против сбоя:
completed_limited, no-go, not-observed и ограниченный охват — это только наблюдения, а не доказательство соответствия.failed,expiredи ошибки соединения — это сбои с инструкциями по повторной попытке. -
Команда не найдена: повторно выполните установку Homebrew и убедитесь, что директория bin Homebrew в PATH.
-
Неверный API-ключ: установите
CERTSCORE_API_KEYв окружении MCP-клиента и повторно запуститеcertscore-mcp doctor. -
Неверный токен: поменяйте ключ или запросите ограниченный API/MCP-ключ у
support@certscore.ai. -
Невозможно достучаться до API: проверьте
CERTSCORE_BASE_URLи убедитесь, что доступенhttps://certscore.ai/api/v2/health. -
Устаревший tap Homebrew: выполните
brew updateи переустановитеcertscore-mcp. -
Старый кешированный релиз: выполните
brew reinstall --cask certscore-mcpпосле обновления tap.
Runbook
См. docs/certscore-mcp-homebrew-release.md для процессов релиза Homebrew и docs/certscore-mcp-preview-runbook.md для выпуска ключей, smoke-тестирования, проверки развёртывания и guard-rails скана до отчета.
Hosted request diagnostics
Hosted MCP хранит ограниченные redacted previews явно отправленных аргументов инструментов и метаданных клиента для операционной диагностики. Всплывающее окно админ-панели «What the caller sent» различает текущие аргументы, per-request metadata и initialization metadata. Оно фиксирует причины для чувствительных полей, чувствительного контента, глубины, текста, количества полей и ограничений по байтам. Эти значения отправляются самим вызывающим и не проверяются какClaims или копия переписки.
Весь record деталей запроса остаётся ограниченным до 4 КБ с текущими 90-дневными данными. Превью содержит не более 24 полей и 300 символов на строку. Заголовки аутентификации, cookies, известные credential-поля и истории чата исключены; предварительный просмотр содержит только origin URL. Сводные вопросы контекста задачи показывают явные требования к обмену/источнику и не могут быть восстановлены через общий путь превью. Общий превью может показывать краткий текст, явно переданный в отдельных аргументах, таких как reason, notes или prompt; он не получает чат пользователя.
Контекст вопроса из предыдущего запроса отображается отдельно только тогда, когда сохранённый вызывающий клиент, сессия, скан, провайдер и входная точка совпадают, и источник предшествует текущему вызову максимум на 24 часа. Отсутствие идентичностей, отфильтрованный трафик и неверный контекст закрываются без восстановления. Никакой унаследованный контекст не записывается обратно в текущие события, и поведение сканирования, выводов или скоринга не изменяется.
Оценочная стоимость при объёме запросов на сентябрь 2026 года — менее $0.10/мес, при существующих лимитах на хранение и записи. Нет дополнительных вызовов моделей, изменений инфраструктуры или удлинённого срока хранения.
Complete report evidence JSON (OAuth и Light)
Используйте certscore_get_scan_bundle для краткого обзора. Для всех полей отображаемого одностраничного или полного отчета используйте certscore_get_report_evidence_page({scanId}). Продолжайте с {scanId, cursor: pagination.nextCursor} пока pagination.complete не станет true. Это добавляет четвертый Light-инструмент; работа с тремя инструментами скан → статус → bundle остаётся по умолчанию.
Каждая страница содержит entries с JSON Pointer RFC 6901 path и value. Применяйте их по порядку, создавая родительские контейнеры перед детьми. Пустой путь заменяет корень. Для слишком длинной строки объединяйте value по нулевой базовой stringPart через stringParts перед присвоением. Относитесь к путям как к данным; используйте собственные свойства при реконструировании объектов, чтобы предотвратить прототип-полицию. Все страницы должны иметь одинаковый snapshot; HTTP 409 требует перезапуска без курсора и отбрасывания старого частичного экспорта.
Экспорт сохраняет канонические findings, таблицы доказательств, выдержки из политики, инвентарь, доказательства согласия/действия/CMP и поверхность охвата как в проекции отчета. Полный экспорт не означает полного наблюдения скана: сохранённые образцы, недоступные доказательства и ограничения вывода остаются авторитетными. Исходные вредоносные артефакты сканирования за пределами отчета и двоичные данные встроенных изображений исключены. Данные по полному сайту появляются в fullSiteReport, включая все строки страниц/ресурсов, сервисы, формы и сохранённые поля. Доступные снимки форм находятся по URL-адресам в fullSiteReport.collectionSurfaces.rows[].snapshot.url; используйте OAuth-б bearer для изображений рабочих пространств, или без учётных данных для подходящих анонимных публичных сканов. Эти загрузки сохраняют существующее происхождение и проверки безопасности изображений. Снимки, недоступные для загрузки, не продвигаются. OAuth может читать отчеты своего рабочего пространства и подходящие публичные сканы; Light может читать только подходящие анонимные публичные сканы. Скан не создаётся этим инструментом. Применяются существующие лимиты чтения; соблюдайте Retry-After.
Прямой JSON-эндпоинт: GET /api/v2/scans/{scanId}/report-evidence?cursor={nextCursor}. TypeScript SDK: client.getReportEvidencePage(scanId, {cursor}).
-
certscore_get_connection_status- Прочитать текущий аутентифицированный режим соединения, предоставленные скоупы, доступ к рабочему пространству, квоту сканирования и действия по восстановлению. scanId не нужен и скан не создаётся. Используйте это для диагностики чтения или квотных ограничений; повторно подключайтесь только при истёкших, отозванных или расширенных доступах. -
certscore_get_report_evidence_page- Получить отображение отчета скана в виде постраниченного JSON, без внутренних диагностических JSON-загрузок. Ответ также предлагает единоразовую загрузку полного JSON-файла; приватные ссылки загрузки JSON истекают через пять минут и не требуют OAuth-заголовков; используйте постраничность, если источник не позволяет загружать файлы. Повторяющиеся записи отображения используютreportContentRefJSON Pointer. Включает таблицы доказательств, страницы и запасы полного сайта, все сохранённые дополнительные поля формы, ссылки на загрузку снимков форм и сохранённые ограничения. Снимки изображений скачиваются отдельно по возвращённым URL, с OAuth-б bearer-аутентификацией для сканирований рабочего пространства. Доступно в OAuth и Light. Начинайте сscanId; следуйтеpagination.nextCursorдо тех пор, пока не станетcomplete. Страницы имеют общий снимок; перезапуск требуется, если он меняется. Каждая запись имеетpathJSON Pointer иvalue; для длинных строк применяйте номерованный раздел. Экспорт не представляет собой полное наблюдение. Используйте канонический bundle для обобщений; этот инструмент — для исчерпывающего доказательства. Новый скан не создаётся.
Страницы экспорта evidence содержат до 64 KB JSON-записей и требуют один терминальный чтение как на Hosted MCP, так и на API. Существующие лимиты: 120 единиц/10 минут и дневные лимиты сохраняются; повторные курсоры действуют. Полные отчеты доказательств, экспорты выводов и bundle остаются четырьмя единицами. Если экспорт достигает лимита, сохраните последний nextCursor, дождитесь Retry-After и продолжайте, а не перезапускайте.
Полный JSON-скачиваемый отчет
certscore_get_scan_bundle остаётся по умолчанию для кратких обзоров. Для полного экспорта отчета вызовите certscore_get_report_evidence_page один раз: download.url возвращает весь JSON-отчет на одном HTTP-ответе, вместе с его размером в байтах.
Рабочие URLs загрузок содержат только режим отчетов и истекают через пять минут. Загружайте напрямую без OAuth-заголовков. Отдельно храните приватные ссылки. Доступны для подходящих публичных отчетов без имени пользователя.
Если хост не может загрузить файлы с авторизацией, следуйте pagination.nextCursor через MCP. Это не требует подключения другого канала.
Экспорт не включает диагностические JSON-загрузки и внутренние графики рантайма. Повторные записи используют reportContentRef RFC 6901 указатели внутри экспортированного документа; разрешайте их после загрузки. Форма полей, строки инвентаря, ограничения покрытия и доступные ссылки на снимки остаются включёнными. Байты изображений — отдельные загрузки.
Загрузка использует существующую квоту чтения отчета и не создаёт новый артефакт экспорта. Реальная поддержка загрузки на хосте должна тестироваться отдельно; возвращаемый URL не доказывает, что Cursor или Claude смогут получить его.