MCP 服务器

CertScore.ai MCP Light

ai.certscore/mcp-light
法律与合规 安全 公开且可连接 MCP 2025-11-25

此 MCP 可以做什么

Scans public websites for cookies, trackers, consent mechanisms, privacy disclosures, and HTTPS/TLS and regulatory risk signals.

certscore_get_report_evidence_page
Get report evidence page
Use workpaper=tracking for the starting-page tracking inventory, privacy choices/notices and GPC evidence, with JSON and CSV downloads. The workpaper selector also applies to every continuation request. Otherwise retrieve scan report display content as paginated JSON, without internal diagnostic JSON downloads. The response also offers a single-file full JSON download; private JSON download links expire after five minutes and need no OAuth header; use pagination if your host blocks file downloads. Repeated display records use reportContentRef JSON Pointers. Includes evidence tables, full-site page and resource inventories, all retained additional-page form fields, form snapshot download references, and retained limitations. Snapshot images are downloaded separately from the returned URLs, with OAuth bearer authentication for workspace scans. Available on OAuth and Light. Start with scanId; follow pagination.nextCursor until complete. Pages share a snapshot; restart if it changes. Each entry has a JSON Pointer path and value; oversized strings use numbered parts. Export completion is not complete observation coverage. Use the concise scan bundle for summaries; use this tool for exhaustive report evidence. No new scan is created.
只读
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['scanId'], 'properties': {'cursor': {'type': 'string', 'maxLength': 100}, 'scanId': {'type': 'string', 'format': 'uuid'}, 'workpaper': {'type': 'string', 'const': 'tracking'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['type', 'version', 'scanId', 'snapshot', 'reportUrl', 'entries', 'pagination', 'coverage', 'reconstruction'], 'properties': {'type': {'type': 'string', 'const': 'certscore_report_evidence_page'}, 'scanId': {'type': 'string', 'format': 'uuid'}, 'entries': {'type': 'array', 'items': {'type': 'object', 'required': ['path'], 'properties': {'path': {'type': 'string'}, 'value': {}, 'stringPart': {'type': 'integer', 'minimum': 0}, 'stringParts': {'type': 'integer', 'exclusiveMinimum': 0}}, 'additionalProperties': False}}, 'version': {'type': 'number', 'const': 1}, 'coverage': {'type': 'object', 'required': ['scope', 'exportTruncated', 'observationCompleteness', 'exclusions'], 'properties': {'scope': {'type': 'string', 'const': 'public_report_projection'}, 'exclusions': {'type': 'array', 'items': {'type': 'string'}}, 'exportTruncated': {'type': 'boolean', 'const': False}, 'observationCompleteness': {'type': 'string', 'const': 'see_report_coverage'}}, 'additionalProperties': False}, 'download': {'type': 'object', 'required': ['url', 'mediaType', 'bytes', 'authentication', 'instructions'], 'properties': {'url': {'type': 'string', 'format': 'uri'}, 'bytes': {'type': 'integer', 'minimum': 0}, 'csvUrl': {'type': 'string', 'format': 'uri'}, 'expiresAt': {'type': 'string', 'format': 'date-time'}, 'mediaType': {'type': 'string', 'const': 'application/json'}, 'instructions': {'type': 'string'}, 'authentication': {'enum': ['same_access_rules_as_mcp', 'short_lived_report_link', 'public'], 'type': 'string'}}, 'additionalProperties': False}, 'snapshot': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, 'reportUrl': {'type': 'string'}, 'workpaper': {'type': 'string', 'const': 'tracking'}, 'pagination': {'type': 'object', 'required': ['offset', 'returned', 'total', 'complete', 'nextCursor'], 'properties': {'total': {'type': 'integer', 'minimum': 0}, 'offset': {'type': 'integer', 'minimum': 0}, 'complete': {'type': 'boolean'}, 'returned': {'type': 'integer', 'minimum': 0}, 'nextCursor': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'reconstruction': {'type': 'string'}}, 'additionalProperties': False}
certscore_get_scan_bundle
Get scan bundle
Returns the completed or completed-limited CertScore evidence bundle for a stable scanId as concise TextContent and matching structuredContent. The default summary distinguishes observed external domains from classified tracker vendors and states the public-page scope. Use detail=evidence to inspect bounded retained request examples and policy-surface candidates even when there are no findings; use certscore_get_report_evidence_page for deeper report evidence. Available sections also include retained privacy-choice controls and notice topics in privacyAuditSummary (full evidence in detail=full), canonical findings, pre-consent cookie and tracker evidence, coverage limitations, persisted execution provenance, and retrieval URLs. Detail tiers and byte budgets report returned, total, truncated, and omitted-section metadata. Accept and Reject results distinguish registered decisions from retained after-click facts. Their execution reports succeeded for a completed click and bounded observation, and succeeded_with_confirmation when the consent decision is also verified. Optional afterAction summaries remain useful when registration is unconfirmed; absent or failed capture remains explicitly limited. Consume canonical findings for any scoring effect. Results are automated public-web observations, not legal advice, certification, or a compliance determination.
只读
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['scanId'], 'properties': {'detail': {'enum': ['summary', 'findings', 'evidence', 'full'], 'type': 'string', 'description': 'Response detail. Defaults to summary; evidence and full opt into heavier retained context.'}, 'scanId': {'type': 'string', 'minLength': 1, 'description': 'Stable CertScore scan ID.'}, 'maxBytes': {'type': 'integer', 'maximum': 200000, 'minimum': 5000, 'description': 'Requested serialized structured response budget in bytes. The full profile defaults to 50000. MCP Light defaults to and applies a transport-safe 25000-byte ceiling; larger Light requests are clamped and reported in response metadata.'}, 'maxFindings': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Maximum compact findings to return. Defaults to 5 for summary and 20 otherwise.'}, 'maxPreConsentRows': {'type': 'integer', 'maximum': 50, 'minimum': 1, 'description': 'Maximum compact pre-consent inventory rows to return. Defaults to 20.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['type', 'detail', 'scanId', 'domain', 'url', 'scanFrom', 'status', 'score', 'scoreLabel', 'scoreStatus', 'scoreVersion', 'scoreUpdatedAt', 'riskLevel', 'provenance', 'interpretationGuidance', 'createdAt', 'startedAt', 'completedAt', 'scanTimeSeconds', 'findings', 'findingsMetadata', 'transportSecurity', 'reportUrl', 'recommendedNextTool', 'recommendedNextAction', 'error', 'mcpMetadata', 'observationOnlyDisclaimer', 'disclaimer'], 'properties': {'url': {'type': ['string', 'null']}, 'noGo': {'anyOf': [{'type': 'object', 'required': ['reasonCode', 'title', 'explanation', 'summary', 'limitationKind', 'recommendedNextAction', 'retryLikelyToHelp'], 'properties': {'title': {'type': 'string'}, 'summary': {'type': 'string'}, 'reasonCode': {'enum': ['blank_or_unusable_page', 'loading_or_stalled', 'not_found_404', 'parked_or_placeholder', 'site_not_ready', 'captcha_or_challenge', 'access_denied_or_forbidden_page', 'authentication_required', 'rate_limited_429', 'server_error_5xx', 'configuration_error', 'maintenance_or_unavailable', 'tls_or_certificate_error', 'unsupported_region', 'target_unreachable_or_unsuitable', 'navigation_transport_failure', 'visual_capture_failed_or_placeholder', 'retained_visual_error_shell', 'unknown'], 'type': 'string'}, 'explanation': {'type': 'string'}, 'limitationKind': {'enum': ['target_site_state', 'scanner_access_limitation', 'scanner_capture_limitation'], 'type': 'string'}, 'evidenceExcerpt': {'type': 'string', 'maxLength': 360}, 'retryLikelyToHelp': {'type': 'boolean'}, 'recommendedNextAction': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'type': {'type': 'string', 'const': 'certscore_scan_bundle'}, 'error': {'anyOf': [{'type': 'object', 'required': ['code', 'message', 'retryable', 'retryAfterSeconds', 'recommendedNextAction'], 'properties': {'code': {'type': 'string'}, 'name': {'type': 'string'}, 'field': {'type': 'string'}, 'issues': {'type': 'array', 'items': {'type': 'object', 'required': ['field', 'code'], 'properties': {'code': {'type': 'string', 'maxLength': 80}, 'field': {'type': 'string', 'maxLength': 80}, 'required': {'type': 'boolean'}}, 'additionalProperties': False}, 'maxItems': 8}, 'status': {'type': 'integer'}, 'mcpCode': {'type': 'integer'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean'}, 'responseBody': {}, 'retryAfterSeconds': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'recommendedNextAction': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'links': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'score': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'detail': {'enum': ['summary', 'findings', 'evidence', 'full'], 'type': 'string'}, 'domain': {'type': 'string'}, 'scanId': {'type': 'string'}, 'status': {'enum': ['queued', 'running', 'finalizing', 'completed', 'completed_limited', 'failed', 'expired', 'rate_limited'], 'type': 'string'}, 'timing': {'type': 'object', 'required': ['createdAt', 'startedAt', 'completedAt', 'scanTimeSeconds'], 'properties': {'createdAt': {'type': ['string', 'null']}, 'startedAt': {'type': ['string', 'null']}, 'completedAt': {'type': ['string', 'null']}, 'scanTimeSeconds': {'type': ['number', 'null']}}, 'additionalProperties': False}, 'summary': {'type': 'object', 'required': ['headline', 'executiveSummary', 'counts', 'agentInterpretation'], 'properties': {'counts': {'anyOf': [{'type': 'object', 'additionalProperties': {'type': ['number', 'boolean', 'null']}}, {'type': 'null'}]}, 'headline': {'type': ['string', 'null']}, 'executiveSummary': {'anyOf': [{'type': 'object', 'properties': {'score': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'domain': {'type': 'string'}, 'riskLevel': {'type': 'string'}, 'scoreLabel': {'type': 'string'}, 'actionLabel': {'type': 'string'}, 'scoreMetadata': {'type': 'object', 'properties': {'kind': {'type': 'string'}, 'source': {'type': 'string'}, 'status': {'type': 'string'}, 'version': {'type': ['string', 'null']}, 'metricLabel': {'type': 'string'}, 'coverageRatio': {'type': ['number', 'null']}, 'withholdingReason': {'type': ['string', 'null']}, 'coverageConfidence': {'type': 'string'}}, 'additionalProperties': True}, 'issuesToReview': {'type': 'integer', 'minimum': 0}, 'scanTimeSeconds': {'type': ['number', 'null']}, 'completionSummary': {'type': 'string'}}, 'additionalProperties': True}, {'type': 'null'}]}, 'agentInterpretation': {'anyOf': [{'type': 'object', 'required': ['responseClass', 'safeSummaryUse', 'requiresHumanReview', 'doNotCallThis'], 'properties': {'doNotCallThis': {'type': 'array', 'items': {'enum': ['legal_advice', 'certification', 'compliance_determination'], 'type': 'string'}}, 'responseClass': {'enum': ['completed_pulse', 'pending_pulse', 'api_error', 'rate_limited'], 'type': 'string'}, 'safeSummaryUse': {'type': 'boolean'}, 'requiresHumanReview': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, {'type': 'null'}]}}, 'additionalProperties': False}, 'coverage': {'anyOf': [{'anyOf': [{'not': {}}, {'type': 'object', 'properties': {'status': {'type': 'string'}, 'summary': {'type': 'string'}, 'limitations': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': True}]}, {'type': 'null'}]}, 'findings': {'type': 'array', 'items': {'anyOf': [{'type': 'object', 'required': ['type', 'id', 'scanId', 'label', 'criticality', 'confidence', 'plainEnglish', 'evidence'], 'properties': {'id': {'type': 'string'}, 'noGo': {'$ref': '#/properties/noGo/anyOf/0'}, 'type': {'type': 'string', 'const': 'certscore_finding'}, 'label': {'type': 'string'}, 'links': {'type': 'object', 'properties': {'docs': {'type': 'string'}, 'self': {'type': 'string'}, 'pulse': {'type': 'string'}, 'report': {'type': 'string'}, 'status': {'type': 'string'}, 'findings': {'type': 'string'}, 'latestDomainScan': {'type': 'string'}}, 'additionalProperties': True}, 'detail': {'type': 'object', 'properties': {'caveats': {'type': 'array', 'items': {'type': 'string'}}, 'recommendedReviewerQuestions': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': True}, 'scanId': {'type': 'string'}, 'evidence': {'type': 'object', 'required': ['basis', 'summary', 'exampleCount', 'examplesShown'], 'properties': {'basis': {'enum': ['runtime_observation', 'policy_surface_detection', 'accessibility_check', 'public_report_projection'], 'type': 'string'}, 'phase': {'type': ['string', 'null']}, 'excerpt': {'type': 'object', 'required': ['excerpt', 'isTruncated', 'truncationMarker', 'sourceUrl', 'evidenceUrl'], 'properties': {'excerpt': {'type': 'string'}, 'sourceUrl': {'anyOf': [{'type': 'string', 'maxLength': 2048}, {'type': 'null'}]}, 'evidenceUrl': {'type': 'string', 'maxLength': 2048}, 'isTruncated': {'type': 'boolean'}, 'truncationMarker': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'summary': {'type': 'string'}, 'examples': {'type': 'array', 'items': {'type': 'object', 'required': ['type'], 'properties': {'type': {'enum': ['request', 'page', 'accessibility_check', 'policy_surface'], 'type': 'string'}, 'phase': {'type': ['string', 'null']}, 'vendor': {'type': ['string', 'null']}, 'urlHost': {'type': ['string', 'null']}, 'finalUrl': {'anyOf': [{'type': 'string', 'maxLength': 2048}, {'type': 'null'}]}, 'frameUrl': {'anyOf': [{'type': 'string', 'maxLength': 2048}, {'type': 'null'}]}, 'requestUrl': {'anyOf': [{'type': 'string', 'maxLength': 2048}, {'type': 'null'}]}, 'documentUrl': {'anyOf': [{'type': 'string', 'maxLength': 2048}, {'type': 'null'}]}, 'initiatorUrl': {'anyOf': [{'type': 'string', 'maxLength': 2048}, {'type': 'null'}]}, 'observedAtMs': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'resourceType': {'anyOf': [{'type': 'string', 'maxLength': 80}, {'type': 'null'}]}, 'initiatorHost': {'anyOf': [{'type': 'string', 'maxLength': 253}, {'type': 'null'}]}, 'initiatorType': {'anyOf': [{'type': 'string', 'maxLength': 80}, {'type': 'null'}]}, 'pageContextId': {'anyOf': [{'type': 'string', 'maxLength': 120}, {'type': 'null'}]}, 'redirectChain': {'type': 'array', 'items': {'type': 'string', 'maxLength': 2048}, 'maxItems': 10}, 'scannedPageUrl': {'anyOf': [{'type': 'string', 'maxLength': 2048}, {'type': 'null'}]}, 'rawObservedVendor': {'anyOf': [{'type': 'string', 'maxLength': 160}, {'type': 'null'}]}, 'registrableDomain': {'type': ['string', 'null']}, 'projectionWarnings': {'type': 'array', 'items': {'type': 'string', 'maxLength': 120}, 'maxItems': 12}, 'resolvedEndpointVendor': {'anyOf': [{'type': 'string', 'maxLength': 160}, {'type': 'null'}]}, 'vendorAttributionBasis': {'anyOf': [{'type': 'string', 'maxLength': 120}, {'type': 'null'}]}, 'rawObservedVendorCategory': {'anyOf': [{'type': 'string', 'maxLength': 120}, {'type': 'null'}]}, 'relatedOrInitiatingVendor': {'anyOf': [{'type': 'string', 'maxLength': 160}, {'type': 'null'}]}, 'resolvedEndpointVendorCategory': {'anyOf': [{'type': 'string', 'maxLength': 120}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 5}, 'exampleCount': {'type': 'integer', 'minimum': 0}, 'examplesShown': {'type': 'integer', 'minimum': 0}, 'hasPolicyAnchor': {'type': 'boolean'}, 'hasTimingAnchor': {'type': 'boolean'}, 'hasVendorAnchor': {'type': 'boolean'}, 'examplesAvailable': {'type': 'integer', 'minimum': 0}, 'hasConsentContext': {'type': 'boolean'}, 'projectionWarnings': {'type': 'array', 'items': {'type': 'string', 'maxLength': 120}, 'maxItems': 20}, 'authRequiredForExamples': {'type': 'boolean'}}, 'additionalProperties': False}, 'nextStep': {'type': ['string', 'null']}, 'confidence': {'enum': ['strong', 'good', 'moderate', 'weak', 'unknown'], 'type': 'string'}, 'disclaimer': {'type': 'string'}, 'criticality': {'enum': ['critical', 'high', 'medium', 'low', 'info', 'unknown'], 'type': 'string'}, 'plainEnglish': {'type': 'string'}, 'reviewLenses': {'type': 'array', 'items': {'type': 'string'}, 'default': []}, 'resultDisposition': {'$ref': '#/properties/resultDisposition/anyOf/0'}}, 'additionalProperties': True}, {'type': 'object', 'required': ['type', 'id', 'label', 'criticality', 'confidence', 'plainEnglish'], 'properties': {'id': {'type': 'string'}, 'type': {'type': 'string', 'const': 'certscore_finding'}, 'label': {'type': 'string'}, 'nextStep': {'type': 'string'}, 'confidence': {'$ref': '#/properties/findings/items/anyOf/0/properties/confidence'}, 'criticality': {'$ref': '#/properties/findings/items/anyOf/0/properties/criticality'}, 'evidenceUrl': {'anyOf': [{'type': 'string', 'maxLength': 2048}, {'type': 'null'}]}, 'plainEnglish': {'type': 'string'}}, 'additionalProperties': False}]}}, 'scanFrom': {'anyOf': [{'enum': ['eu_de', 'eu_ie', 'california'], 'type': 'string'}, {'type': 'null'}]}, 'createdAt': {'type': ['string', 'null']}, 'reportUrl': {'type': ['string', 'null']}, 'riskLevel': {'type': ['string', 'null']}, 'startedAt': {'type': ['string', 'null']}, 'disclaimer': {'type': ['string', 'null']}, 'fullReport': {'type': 'object', 'required': ['type'], 'properties': {'meta': {'type': 'object', 'properties': {'detail': {'enum': ['tiny', 'standard', 'full', 'summary', 'evidence'], 'type': 'string'}, 'format': {'enum': ['json', 'markdown'], 'type': 'string'}, 'source': {'type': 'string'}, 'apiVersion': {'type': 'string'}, 'generatedAt': {'type': 'string'}, 'pulseVersion': {'type': 'string'}, 'schemaVersion': {'type': 'string'}, 'projectionVersion': {'type': 'string'}}, 'additionalProperties': True}, 'noGo': {'$ref': '#/properties/noGo/anyOf/0'}, 'type': {'enum': ['certscore_pulse', 'certscore_pulse_summary', 'certscore_pulse_evidence'], 'type': 'string'}, 'links': {'type': 'object', 'properties': {'docsUrl': {'type': 'string'}, 'jsonUrl': {'type': 'string'}, 'fullJsonUrl': {'type': 'string'}, 'markdownUrl': {'type': 'string'}, 'scanJsonUrl': {'type': 'string'}, 'fullReportUrl': {'type': 'string'}, 'summaryJsonUrl': {'type': 'string'}, 'evidenceJsonUrl': {'type': 'string'}, 'immutableJsonUrl': {'type': 'string'}, 'canonicalPulseUrl': {'type': 'string'}, 'findingsReferenceUrl': {'type': 'string'}, 'immutableFullJsonUrl': {'type': 'string'}, 'immutableMarkdownUrl': {'type': 'string'}}, 'additionalProperties': True}, 'domain': {'type': 'string'}, 'scanId': {'type': 'string'}, 'request': {'type': 'object', 'additionalProperties': {}}, 'scan_id': {'type': 'string'}, 'summary': {'type': 'object', 'properties': {'score': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'headline': {'type': 'string'}, 'benchmark': {'type': ['string', 'null']}, 'riskLevel': {'type': 'string'}, 'coverageNote': {'type': 'string'}, 'humanSummary': {'type': 'string'}, 'machineSummary': {'type': 'object', 'additionalProperties': {}}}, 'additionalProperties': True}, 'coverage': {'type': 'object', 'properties': {'status': {'type': 'string'}, 'summary': {'type': 'string'}, 'limitations': {'type': 'array', 'items': {'type': 'string'}}, 'scopeSummary': {'type': 'string'}, 'interruptions': {'type': 'array', 'items': {'type': 'object', 'required': ['label', 'reason'], 'properties': {'label': {'type': 'string'}, 'reason': {'type': 'string'}, 'reviewTitle': {'type': 'string'}, 'reviewReason': {'type': 'string'}}, 'additionalProperties': True}}, 'homepageObserved': {'type': 'boolean'}, 'interruptionCount': {'type': 'integer'}}, 'additionalProperties': True}, 'feedback': {'type': 'object', 'required': ['email'], 'properties': {'email': {'type': 'string'}, 'prompt': {'type': 'string'}, 'feedbackUrl': {'type': 'string'}, 'negativeUrl': {'type': 'string'}, 'positiveUrl': {'type': 'string'}}, 'additionalProperties': True}, 'disclaimer': {'type': 'string'}, 'scanStatus': {'type': 'string'}, 'gpcResponse': {'anyOf': [{'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0'}, {'type': 'null'}]}, 'topFindings': {'type': 'array', 'items': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string'}, 'label': {'type': 'string'}, 'nextStep': {'type': 'string'}, 'anchorUrl': {'type': 'string'}, 'confidence': {'type': 'string'}, 'criticality': {'type': 'string'}, 'plainEnglish': {'type': 'string'}, 'reviewLenses': {'type': 'array', 'items': {'type': 'string'}}, 'evidenceDigest': {'type': 'object', 'properties': {'basis': {'type': 'string'}, 'phase': {'type': ['string', 'null']}, 'exampleCount': {'type': 'integer'}, 'examplesShown': {'type': 'integer'}, 'hasPolicyAnchor': {'type': 'boolean'}, 'hasTimingAnchor': {'type': 'boolean'}, 'hasVendorAnchor': {'type': 'boolean'}, 'examplesAvailable': {'type': 'integer'}, 'hasConsentContext': {'type': 'boolean'}, 'authRequiredForExamples': {'type': 'boolean'}}, 'additionalProperties': True}}, 'additionalProperties': True}}, 'capabilities': {'type': 'object', 'required': ['method', 'observes', 'doesNotProvide'], 'properties': {'method': {'type': 'string', 'const': 'automated_runtime_analysis'}, 'observes': {'type': 'array', 'items': {'enum': ['pre_consent_tracking', 'cmp_load_order', 'third_party_requests', 'consent_enforcement_gaps', 'cookie_activity', 'accessibility_signals', 'disclosure_inconsistencies'], 'type': 'string'}}, 'doesNotProvide': {'type': 'array', 'items': {'enum': ['legal_advice', 'certification', 'compliance_determination'], 'type': 'string'}}}, 'additionalProperties': False}, 'resultDisposition': {'$ref': '#/properties/resultDisposition/anyOf/0'}, 'transportSecurity': {'type': 'object', 'required': ['status', 'evidenceRetained', 'observationCounts', 'observations', 'limitations'], 'properties': {'status': {'enum': ['available', 'limited', 'unavailable'], 'type': 'string'}, 'limitations': {'type': 'array', 'items': {'type': 'string'}}, 'observations': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'label', 'status', 'assessmentStatus', 'evidenceState', 'summary', 'evidenceRefs'], 'properties': {'id': {'type': 'string'}, 'label': {'type': 'string'}, 'status': {'enum': ['Gap observed', 'Observed', 'Not confirmed', 'Not observed', 'Not testable', 'Review signal', 'Insufficient evidence', 'Out of scope'], 'type': 'string'}, 'summary': {'type': 'string'}, 'evidenceRefs': {'type': 'array', 'items': {'type': 'string'}}, 'evidenceState': {'enum': ['observed', 'not_observed', 'not_testable', 'not_applicable'], 'type': 'string'}, 'assessmentStatus': {'enum': ['gap_observed', 'review_signal', 'checked', 'coverage_limitation', 'not_applicable'], 'type': 'string'}}, 'additionalProperties': False}}, 'retainedSummary': {'type': 'object', 'additionalProperties': {}}, 'evidenceRetained': {'type': 'boolean'}, 'observationCounts': {'type': 'object', 'required': ['total', 'observedPositive', 'concernOrReview', 'notObserved', 'unavailable'], 'properties': {'total': {'type': 'integer', 'minimum': 0}, 'notObserved': {'type': 'integer', 'minimum': 0}, 'unavailable': {'type': 'integer', 'minimum': 0}, 'concernOrReview': {'type': 'integer', 'minimum': 0}, 'observedPositive': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'agentInterpretation': {'$ref': '#/properties/summary/properties/agentInterpretation/anyOf/0'}, 'postAcceptObservation': {'anyOf': [{'$ref': '#/properties/postAcceptObservation/anyOf/0/anyOf/1/anyOf/0'}, {'type': 'null'}]}, 'postRefusalObservation': {'anyOf': [{'$ref': '#/properties/postRefusalObservation/anyOf/0/anyOf/1/anyOf/0'}, {'type': 'null'}]}}, 'additionalProperties': True}, 'provenance': {'type': 'object', 'required': ['mode', 'retrievalMode', 'creationDecision', 'scanAgeSeconds', 'executionMode', 'reused', 'freshnessDecision'], 'properties': {'mode': {'enum': ['new_scan_started', 'existing_completed_scan_reused', 'existing_scan_retrieved', 'unknown'], 'type': 'string'}, 'reused': {'type': ['boolean', 'null']}, 'executionMode': {'anyOf': [{'enum': ['new_scan', 'reused_scan'], 'type': 'string'}, {'type': 'null'}]}, 'retrievalMode': {'enum': ['creation_response', 'scan_id_lookup', 'unknown'], 'type': 'string'}, 'scanAgeSeconds': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}]}, 'creationDecision': {'enum': ['new_scan', 'reused_scan', 'unknown'], 'type': 'string'}, 'freshnessDecision': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'scoreLabel': {'type': 'string', 'const': 'CertScore score'}, 'completedAt': {'type': ['string', 'null']}, 'gpcResponse': {'anyOf': [{'anyOf': [{'not': {}}, {'anyOf': [{'type': 'object', 'required': ['status', 'findingTitle', 'summary', 'scoreEffect', 'legalInterpretation', 'comparison', 'californiaPolicy', 'evidenceUrl'], 'properties': {'status': {'enum': ['responsive', 'no_observable_response', 'indeterminate'], 'type': 'string'}, 'summary': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'comparison': {'type': 'object', 'required': ['comparable', 'protocol', 'baselineArtifact', 'gpcArtifact', 'enabledProof', 'deltas', 'limitationKeys'], 'properties': {'deltas': {'type': 'object', 'required': ['cookies', 'trackers', 'advertisingOrMeasurementActivity', 'consentOrCmpBehavior'], 'properties': {'cookies': {'type': 'object', 'required': ['baselineCount', 'gpcCount', 'countDelta', 'baselineOnly', 'gpcOnly', 'shared'], 'properties': {'shared': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 100}, 'gpcOnly': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 100}, 'gpcCount': {'type': 'integer', 'minimum': 0}, 'countDelta': {'type': 'integer'}, 'sharedCount': {'type': 'integer', 'minimum': 0}, 'baselineOnly': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 100}, 'gpcOnlyCount': {'type': 'integer', 'minimum': 0}, 'baselineCount': {'type': 'integer', 'minimum': 0}, 'samplesTruncated': {'type': 'boolean'}, 'baselineOnlyCount': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, 'trackers': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/comparison/properties/deltas/properties/cookies'}, 'webStorage': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/comparison/properties/deltas/properties/cookies'}, 'consentOrCmpBehavior': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/comparison/properties/deltas/properties/cookies'}, 'advertisingOrMarketingActivity': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/comparison/properties/deltas/properties/cookies'}, 'advertisingOrMeasurementActivity': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/comparison/properties/deltas/properties/cookies'}}, 'additionalProperties': False}, 'coverage': {'type': 'object', 'required': ['status', 'comparedThroughMs'], 'properties': {'status': {'enum': ['complete', 'limited', 'unavailable'], 'type': 'string'}, 'comparedThroughMs': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'delivery': {'type': 'object', 'required': ['status'], 'properties': {'status': {'enum': ['verified', 'limited', 'unavailable'], 'type': 'string'}}, 'additionalProperties': False}, 'protocol': {'type': 'string', 'const': 'passive_baseline_with_sec_gpc'}, 'comparable': {'type': 'boolean'}, 'gpcArtifact': {'anyOf': [{'type': 'object', 'required': ['lane', 'sha256', 'sizeBytes'], 'properties': {'lane': {'type': 'string', 'const': 'gpc_observation'}, 'sha256': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, 'sizeBytes': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'null'}]}, 'enabledProof': {'type': 'object', 'required': ['secGpcHeaderValue', 'requestsWithSecGpc', 'requestEventIds', 'navigatorGlobalPrivacyControl'], 'properties': {'requestEventIds': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 100}, 'secGpcHeaderValue': {'anyOf': [{'type': 'string', 'const': '1'}, {'type': 'null'}]}, 'requestsWithSecGpc': {'type': 'integer', 'minimum': 0}, 'navigatorGlobalPrivacyControl': {'type': ['boolean', 'null']}}, 'additionalProperties': False}, 'responseBasis': {'enum': ['qualified_activity_reduction', 'no_qualified_reduction', 'insufficient_evidence'], 'type': 'string'}, 'limitationKeys': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 24}, 'baselineArtifact': {'anyOf': [{'type': 'object', 'required': ['lane', 'sha256', 'sizeBytes'], 'properties': {'lane': {'type': 'string', 'const': 'runtime_evidence'}, 'sha256': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, 'sizeBytes': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'null'}]}}, 'additionalProperties': False}, 'evidenceUrl': {'type': 'string', 'format': 'uri'}, 'observation': {'type': 'object', 'required': ['contractVersion', 'scope', 'status', 'sourceSha256', 'sessionSha256', 'documentUrlSha256', 'delivery', 'semanticProbe', 'registration', 'acknowledgment', 'requests', 'limitationKeys', 'scoreEffect', 'legalInterpretation'], 'properties': {'scope': {'type': 'string', 'const': 'main_document_and_retained_http_requests'}, 'status': {'enum': ['complete', 'limited', 'unavailable'], 'type': 'string'}, 'delivery': {'type': 'object', 'required': ['httpHeaderRetained', 'mainNavigatorReadbackRetained', 'fullContextVerified'], 'properties': {'httpHeaderRetained': {'type': 'boolean'}, 'fullContextVerified': {'type': 'boolean'}, 'mainNavigatorReadbackRetained': {'type': 'boolean'}}, 'additionalProperties': False}, 'requests': {'type': 'object', 'required': ['count', 'blockedBeforeTransmissionCount', 'complete', 'fromMs', 'documentCommittedAtMs', 'throughMs', 'classifiedCount', 'collectionCount', 'evidenceIds', 'samplesTruncated'], 'properties': {'count': {'type': 'integer', 'minimum': 0}, 'fromMs': {'anyOf': [{'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}, {'type': 'null'}]}, 'complete': {'type': 'boolean'}, 'throughMs': {'anyOf': [{'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}, {'type': 'null'}]}, 'evidenceIds': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 100}, 'classifiedCount': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}, 'collectionCount': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}, 'samplesTruncated': {'type': 'boolean'}, 'documentCommittedAtMs': {'anyOf': [{'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}, {'type': 'null'}]}, 'blockedBeforeTransmissionCount': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}}, 'additionalProperties': False}, 'scoreEffect': {'type': 'string', 'const': 'none'}, 'registration': {'type': 'object', 'required': ['basis', 'sale', 'sharing', 'cmpGpcSignal', 'causedByGpc'], 'properties': {'sale': {'enum': ['opted_out', 'not_opted_out', 'unknown'], 'type': 'string'}, 'basis': {'type': 'string', 'const': 'current_recorded_state'}, 'sharing': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/registration/properties/sale'}, 'causedByGpc': {'type': 'string', 'const': 'not_established'}, 'cmpGpcSignal': {'enum': ['received', 'not_received', 'unknown'], 'type': 'string'}}, 'additionalProperties': False}, 'sourceSha256': {'anyOf': [{'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, {'type': 'null'}]}, 'semanticProbe': {'enum': ['observed', 'unsupported', 'unavailable', 'not_ready', 'invalid', 'incomplete'], 'type': 'string'}, 'sessionSha256': {'anyOf': [{'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, {'type': 'null'}]}, 'acknowledgment': {'type': 'object', 'required': ['observed', 'captureComplete'], 'properties': {'observed': {'type': 'boolean'}, 'captureComplete': {'type': 'boolean'}}, 'additionalProperties': False}, 'limitationKeys': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 32}, 'contractVersion': {'type': 'string', 'const': 'certscore.gpc-bounded-observation.v1'}, 'documentUrlSha256': {'anyOf': [{'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, {'type': 'null'}]}, 'legalInterpretation': {'type': 'string', 'const': 'not_assessed'}}, 'additionalProperties': False}, 'scoreEffect': {'type': 'string', 'const': 'none'}, 'findingTitle': {'enum': ['GPC response', 'No observable GPC response'], 'type': 'string'}, 'contractVersion': {'enum': ['certscore.gpc-response-assessment.v1', 'certscore.gpc-response-assessment.v2', 'certscore.gpc-response-assessment.v3'], 'type': 'string'}, 'californiaPolicy': {'type': 'object', 'required': ['applied', 'deductionPoints'], 'properties': {'applied': {'type': 'boolean'}, 'deductionPoints': {'enum': [0, 15], 'type': 'number'}}, 'additionalProperties': False}, 'activityComparison': {'type': 'object', 'required': ['contractVersion', 'scanId', 'status', 'scope', 'durationMs', 'sourceHashes', 'activity', 'scoreEffect', 'causedByGpc'], 'properties': {'scope': {'type': 'string', 'const': 'matched_post_commit_request_window'}, 'scanId': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'status': {'type': 'string', 'const': 'measured'}, 'activity': {'type': 'object', 'required': ['advertisingMarketing', 'analyticsReplay'], 'properties': {'analyticsReplay': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/activityComparison/properties/activity/properties/advertisingMarketing'}, 'advertisingMarketing': {'type': 'object', 'required': ['baselineRequests', 'gpcRequests', 'baselineServices', 'gpcServices'], 'properties': {'gpcRequests': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/activityComparison/properties/activity/properties/advertisingMarketing/properties/baselineRequests'}, 'gpcServices': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/activityComparison/properties/activity/properties/advertisingMarketing/properties/baselineRequests'}, 'baselineRequests': {'type': 'integer', 'maximum': 5000, 'minimum': 0}, 'baselineServices': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/activityComparison/properties/activity/properties/advertisingMarketing/properties/baselineRequests'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'durationMs': {'enum': [250, 500, 1000], 'type': 'number'}, 'causedByGpc': {'type': 'string', 'const': 'not_established'}, 'scoreEffect': {'type': 'string', 'const': 'none'}, 'sourceHashes': {'type': 'object', 'required': ['baseline', 'gpc'], 'properties': {'gpc': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, 'baseline': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}}, 'additionalProperties': False}, 'contractVersion': {'type': 'string', 'const': 'certscore.gpc-activity-comparison.v1'}}, 'additionalProperties': False}, 'legalInterpretation': {'type': 'string', 'const': 'not_assessed'}}, 'additionalProperties': False}, {'type': 'null'}]}]}, {'type': 'null'}]}, 'mcpMetadata': {'type': 'object', 'required': ['detail', 'heavyEvidenceIncluded', 'findingsTruncated', 'requestedMaxBytes', 'effectiveMaxBytes', 'responseCeilingBytes', 'responseBudgetClamped', 'actualBytes', 'fullPayloadBytes', 'truncated', 'canonicalFindingsComplete', 'truncationReason', 'omittedSections', 'deduplicatedSections', 'nextRecommendedMaxBytes', 'omittedContentAvailableViaUrl', 'contentUrls'], 'properties': {'detail': {'enum': ['summary', 'findings', 'evidence', 'full'], 'type': 'string'}, 'truncated': {'type': 'boolean'}, 'actualBytes': {'type': 'integer', 'minimum': 0}, 'contentUrls': {'type': 'object', 'additionalProperties': {'type': 'string'}}, 'omittedSections': {'type': 'array', 'items': {'type': 'string'}}, 'fullPayloadBytes': {'type': 'integer', 'minimum': 0}, 'truncationReason': {'type': ['string', 'null']}, 'effectiveMaxBytes': {'type': 'integer', 'maximum': 200000, 'minimum': 5000}, 'findingsTruncated': {'type': 'boolean'}, 'requestedMaxBytes': {'type': 'integer', 'minimum': 5000}, 'deduplicatedSections': {'type': 'array', 'items': {'type': 'string'}}, 'responseCeilingBytes': {'type': 'integer', 'maximum': 200000, 'minimum': 5000}, 'heavyEvidenceIncluded': {'type': 'boolean'}, 'responseBudgetClamped': {'type': 'boolean'}, 'nextRecommendedMaxBytes': {'anyOf': [{'type': 'integer', 'maximum': 200000, 'minimum': 5000}, {'type': 'null'}]}, 'canonicalFindingsComplete': {'type': 'boolean'}, 'omittedContentAvailableViaUrl': {'type': 'boolean'}}, 'additionalProperties': False}, 'scoreStatus': {'enum': ['provisional', 'final'], 'type': 'string'}, 'scoreVersion': {'type': ['string', 'null']}, 'scoreUpdatedAt': {'type': ['string', 'null']}, 'evidenceSummary': {'type': 'object', 'additionalProperties': {}}, 'scanTimeSeconds': {'type': ['number', 'null']}, 'findingsMetadata': {'type': 'object', 'required': ['shown', 'returned', 'total', 'truncated'], 'properties': {'shown': {'type': 'integer', 'minimum': 0}, 'total': {'type': 'integer', 'minimum': 0}, 'returned': {'type': 'integer', 'minimum': 0}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}, 'resultDisposition': {'anyOf': [{'enum': ['no_go'], 'type': 'string'}, {'type': 'null'}]}, 'transportSecurity': {'$ref': '#/properties/fullReport/properties/transportSecurity'}, 'evidenceUrlTemplate': {'type': 'string', 'const': '{contentUrls.findings}/{findingId}'}, 'privacyAuditSummary': {'type': 'object', 'required': ['scanId', 'capturedAt', 'sourceHash', 'verificationStatus', 'scoreEffect', 'negativeControlCoverage', 'collectionPointNoticeAssessment', 'contractVersion', 'retainedControlCount', 'retainedNoticeCount', 'controls', 'notices', 'truncated'], 'properties': {'scanId': {'type': 'string', 'minLength': 1}, 'notices': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'url', 'evidenceRef', 'directlyLinkedFromScannedPage', 'coverage', 'topics'], 'properties': {'url': {'$ref': '#/properties/privacyAuditSummary/properties/controls/items/properties/sourceUrl'}, 'kind': {'enum': ['privacy_policy', 'california_notice', 'notice_at_collection'], 'type': 'string'}, 'topics': {'type': 'array', 'items': {'enum': ['sale_sharing', 'collection_purposes', 'retention', 'privacy_rights', 'opt_out_methods'], 'type': 'string'}, 'maxItems': 5}, 'coverage': {'enum': ['complete', 'partial'], 'type': 'string'}, 'evidenceRef': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'directlyLinkedFromScannedPage': {'type': 'boolean'}}, 'additionalProperties': False}, 'maxItems': 2}, 'controls': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'label', 'sourceUrl', 'destinationUrl', 'placement', 'evidenceRef', 'retrieval', 'interaction'], 'properties': {'kind': {'enum': ['do_not_sell_or_share', 'your_privacy_choices', 'cookie_settings'], 'type': 'string'}, 'label': {'type': 'string', 'maxLength': 200}, 'placement': {'type': 'string', 'maxLength': 80}, 'retrieval': {'enum': ['not_attempted', 'fetched', 'failed', 'skipped_budget'], 'type': 'string'}, 'sourceUrl': {'type': 'string', 'format': 'uri', 'maxLength': 800}, 'evidenceRef': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'interaction': {'type': 'string', 'const': 'not_tested'}, 'destinationUrl': {'anyOf': [{'$ref': '#/properties/privacyAuditSummary/properties/controls/items/properties/sourceUrl'}, {'type': 'null'}]}, 'accessibleNameSource': {'enum': ['aria_label', 'aria_labelledby', 'text', 'image_alt', 'svg_title', 'title'], 'type': 'string'}, 'classificationProvenance': {'type': 'string', 'const': 'privacy_surface_classifier.v1'}}, 'additionalProperties': False}, 'maxItems': 3}, 'truncated': {'type': 'boolean'}, 'capturedAt': {'type': 'string', 'format': 'date-time'}, 'sourceHash': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, 'scoreEffect': {'type': 'string', 'const': 'none'}, 'contractVersion': {'enum': ['certscore.privacy-audit-evidence.v1', 'certscore.privacy-audit-evidence.v2'], 'type': 'string'}, 'controlCandidates': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'label', 'sourceUrl', 'destinationUrl', 'placement', 'evidenceRef', 'verification'], 'properties': {'kind': {'$ref': '#/properties/privacyAuditSummary/properties/controls/items/properties/kind'}, 'label': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'placement': {'type': 'string', 'maxLength': 80}, 'sourceUrl': {'$ref': '#/properties/privacyAuditSummary/properties/controls/items/properties/sourceUrl'}, 'evidenceRef': {'type': 'string', 'maxLength': 240, 'minLength': 1}, 'verification': {'enum': ['visibility_unverified', 'accessible_name_unverified'], 'type': 'string'}, 'destinationUrl': {'$ref': '#/properties/privacyAuditSummary/properties/controls/items/properties/sourceUrl'}}, 'additionalProperties': False}, 'maxItems': 3}, 'verificationStatus': {'type': 'string', 'const': 'verified'}, 'retainedNoticeCount': {'type': 'integer', 'minimum': 0}, 'retainedControlCount': {'type': 'integer', 'minimum': 0}, 'negativeControlCoverage': {'type': 'string', 'const': 'not_verified'}, 'collectionPointNoticeAssessment': {'type': 'string', 'const': 'not_assessed'}}, 'additionalProperties': False}, 'recommendedNextTool': {'anyOf': [{'enum': ['certscore_get_scan_status', 'certscore_get_scan_bundle'], 'type': 'string'}, {'type': 'null'}]}, 'privacyAuditEvidence': {'anyOf': [{'anyOf': [{'type': 'object', 'required': ['scanId', 'documentUrl', 'capturedAt', 'sourceHash', 'verificationStatus', 'scoreEffect', 'passagePolicy', 'controls', 'notices', 'negativeControlCoverage', 'collectionPointNoticeAssessment', 'truncated', 'contractVersion'], 'properties': {'scanId': {'$ref': '#/properties/privacyAuditSummary/properties/scanId'}, 'notices': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'url', 'evidenceRef', 'directlyLinkedFromScannedPage', 'coverage', 'passages'], 'properties': {'url': {'$ref': '#/properties/privacyAuditSummary/properties/controls/items/properties/sourceUrl'}, 'kind': {'$ref': '#/properties/privacyAuditSummary/properties/notices/items/properties/kind'}, 'coverage': {'$ref': '#/properties/privacyAuditSummary/properties/notices/items/properties/coverage'}, 'passages': {'type': 'array', 'items': {'type': 'object', 'required': ['topic', 'excerpt'], 'properties': {'topic': {'$ref': '#/properties/privacyAuditSummary/properties/notices/items/properties/topics/items'}, 'excerpt': {'type': 'string', 'maxLength': 480, 'minLength': 1}}, 'additionalProperties': False}, 'maxItems': 5}, 'evidenceRef': {'$ref': '#/properties/privacyAuditSummary/properties/notices/items/properties/evidenceRef'}, 'directlyLinkedFromScannedPage': {'$ref': '#/properties/privacyAuditSummary/properties/notices/items/properties/directlyLinkedFromScannedPage'}}, 'additionalProperties': False}, 'maxItems': 4}, 'controls': {'type': 'array', 'items': {'$ref': '#/properties/privacyAuditSummary/properties/controls/items'}, 'maxItems': 12}, 'truncated': {'type': 'boolean'}, 'capturedAt': {'$ref': '#/properties/privacyAuditSummary/properties/capturedAt'}, 'sourceHash': {'$ref': '#/properties/privacyAuditSummary/properties/sourceHash'}, 'documentUrl': {'$ref': '#/properties/privacyAuditSummary/properties/controls/items/properties/sourceUrl'}, 'scoreEffect': {'$ref': '#/properties/privacyAuditSummary/properties/scoreEffect'}, 'passagePolicy': {'type': 'string', 'const': 'california_notice_passages.v1'}, 'contractVersion': {'type': 'string', 'const': 'certscore.privacy-audit-evidence.v1'}, 'verificationStatus': {'$ref': '#/properties/privacyAuditSummary/properties/verificationStatus'}, 'negativeControlCoverage': {'$ref': '#/properties/privacyAuditSummary/properties/negativeControlCoverage'}, 'collectionPointNoticeAssessment': {'$ref': '#/properties/privacyAuditSummary/properties/collectionPointNoticeAssessment'}}, 'additionalProperties': False}, {'type': 'object', 'required': ['scanId', 'documentUrl', 'capturedAt', 'sourceHash', 'verificationStatus', 'scoreEffect', 'passagePolicy', 'controls', 'notices', 'negativeControlCoverage', 'collectionPointNoticeAssessment', 'truncated', 'contractVersion', 'controlCandidates'], 'properties': {'scanId': {'$ref': '#/properties/privacyAuditSummary/properties/scanId'}, 'notices': {'$ref': '#/properties/privacyAuditEvidence/anyOf/0/anyOf/0/properties/notices'}, 'controls': {'$ref': '#/properties/privacyAuditEvidence/anyOf/0/anyOf/0/properties/controls'}, 'truncated': {'$ref': '#/properties/privacyAuditEvidence/anyOf/0/anyOf/0/properties/truncated'}, 'capturedAt': {'$ref': '#/properties/privacyAuditSummary/properties/capturedAt'}, 'sourceHash': {'$ref': '#/properties/privacyAuditSummary/properties/sourceHash'}, 'documentUrl': {'$ref': '#/properties/privacyAuditSummary/properties/controls/items/properties/sourceUrl'}, 'scoreEffect': {'$ref': '#/properties/privacyAuditSummary/properties/scoreEffect'}, 'passagePolicy': {'$ref': '#/properties/privacyAuditEvidence/anyOf/0/anyOf/0/properties/passagePolicy'}, 'contractVersion': {'type': 'string', 'const': 'certscore.privacy-audit-evidence.v2'}, 'controlCandidates': {'type': 'array', 'items': {'$ref': '#/properties/privacyAuditSummary/properties/controlCandidates/items'}, 'maxItems': 12}, 'verificationStatus': {'$ref': '#/properties/privacyAuditSummary/properties/verificationStatus'}, 'negativeControlCoverage': {'$ref': '#/properties/privacyAuditSummary/properties/negativeControlCoverage'}, 'collectionPointNoticeAssessment': {'$ref': '#/properties/privacyAuditSummary/properties/collectionPointNoticeAssessment'}}, 'additionalProperties': False}]}, {'type': 'null'}]}, 'postAcceptObservation': {'anyOf': [{'anyOf': [{'not': {}}, {'anyOf': [{'type': 'object', 'required': ['status', 'acceptanceExercised', 'observationCount', 'productionProjectable', 'evidenceDisposition', 'indeterminateReason', 'verdict', 'interpretation', 'observationStrategy', 'termination', 'completedAt', 'coverageLimitations', 'limitations'], 'properties': {'status': {'enum': ['confirmed_observation', 'confirmed_clean', 'unconfirmed', 'not_attempted', 'unsupported', 'aborted'], 'type': 'string'}, 'verdict': {'enum': ['eligible_nonessential_activity_observed_after_confirmed_acceptance', 'retained_consent_signal_contradiction_observed_after_confirmed_acceptance', 'no_eligible_nonessential_activity_observed_during_completed_window', 'no_confirmed_post_accept_verdict'], 'type': 'string'}, 'execution': {'type': 'object', 'required': ['policyVersion', 'status', 'clickCompleted', 'observationCompleted', 'consentConfirmed'], 'properties': {'status': {'enum': ['succeeded', 'succeeded_with_confirmation', 'limited', 'not_attempted', 'unsupported'], 'type': 'string'}, 'policyVersion': {'type': 'string', 'const': 'choice_path_execution.v1'}, 'clickCompleted': {'type': 'boolean'}, 'consentConfirmed': {'type': 'boolean'}, 'observationCompleted': {'type': 'boolean'}}, 'additionalProperties': False}, 'afterAction': {'type': 'object', 'required': ['policyVersion', 'action', 'activationStatus', 'stopReason', 'requestsDropped', 'requestCount', 'storageWriteCount', 'storageSnapshotRetained'], 'properties': {'action': {'enum': ['accept', 'reject'], 'type': 'string'}, 'stopReason': {'enum': ['window_elapsed', 'aborted', 'target_changed', 'click_uncertain'], 'type': 'string'}, 'requestCount': {'type': 'integer', 'minimum': 0}, 'policyVersion': {'enum': ['bounded_after_action_capture.v1', 'bounded_after_action_capture.v2'], 'type': 'string'}, 'requestsDropped': {'type': 'integer', 'minimum': 0}, 'activationStatus': {'enum': ['completed', 'uncertain'], 'type': 'string'}, 'storageWriteCount': {'type': 'integer', 'minimum': 0}, 'storageSnapshotRetained': {'type': 'boolean'}}, 'additionalProperties': False}, 'completedAt': {'type': ['string', 'null']}, 'limitations': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 24}, 'termination': {'type': 'object', 'required': ['kind', 'intentional', 'trigger'], 'properties': {'kind': {'enum': ['evidence_satisfied', 'window_elapsed', 'unavailable'], 'type': 'string'}, 'trigger': {'enum': ['non_essential_request_observed', 'non_essential_storage_write_observed', 'acceptance_signal_contradiction_observed', 'window_elapsed', 'accept_control_not_observed', 'accept_path_timeout', 'accept_observation_window_truncated', 'worker_failed', 'unavailable'], 'type': 'string'}, 'intentional': {'type': 'boolean'}}, 'additionalProperties': False}, 'interpretation': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'observationCount': {'type': 'integer', 'minimum': 0}, 'acceptanceExercised': {'type': 'boolean'}, 'coverageLimitations': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 24}, 'evidenceDisposition': {'enum': ['confirmed', 'indeterminate'], 'type': 'string'}, 'indeterminateReason': {'anyOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'null'}]}, 'observationStrategy': {'enum': ['stop_on_first_eligible_activity', 'not_applicable'], 'type': 'string'}, 'productionProjectable': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'null'}]}]}, {'type': 'null'}]}, 'recommendedNextAction': {'type': 'string'}, 'interpretationGuidance': {'type': 'object', 'required': ['scoreLabel', 'observableSignalsOnly', 'doNotInferUnobservedTechnologies', 'doNotInferLegalComplianceStatus', 'statement'], 'properties': {'statement': {'type': 'string'}, 'scoreLabel': {'type': 'string', 'const': 'CertScore score'}, 'observableSignalsOnly': {'type': 'boolean', 'const': True}, 'doNotInferLegalComplianceStatus': {'type': 'boolean', 'const': True}, 'doNotInferUnobservedTechnologies': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, 'postRefusalObservation': {'anyOf': [{'anyOf': [{'not': {}}, {'anyOf': [{'type': 'object', 'required': ['status', 'refusalExercised', 'observationCount', 'productionProjectable', 'evidenceDisposition', 'indeterminateReason', 'verdict', 'interpretation', 'observationStrategy', 'termination', 'completedAt', 'coverageLimitations', 'limitations'], 'properties': {'status': {'enum': ['confirmed_observation', 'confirmed_clean', 'unconfirmed', 'not_attempted', 'unsupported', 'aborted'], 'type': 'string'}, 'verdict': {'enum': ['eligible_nonessential_activity_observed_after_confirmed_refusal', 'retained_consent_signal_contradiction_observed_after_confirmed_refusal', 'no_eligible_nonessential_activity_observed_during_completed_window', 'no_confirmed_post_refusal_verdict'], 'type': 'string'}, 'execution': {'$ref': '#/properties/postAcceptObservation/anyOf/0/anyOf/1/anyOf/0/properties/execution'}, 'afterAction': {'$ref': '#/properties/postAcceptObservation/anyOf/0/anyOf/1/anyOf/0/properties/afterAction'}, 'completedAt': {'type': ['string', 'null']}, 'limitations': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 24}, 'termination': {'type': 'object', 'required': ['kind', 'intentional', 'trigger'], 'properties': {'kind': {'enum': ['evidence_satisfied', 'window_elapsed', 'unavailable'], 'type': 'string'}, 'trigger': {'enum': ['non_essential_request_observed', 'non_essential_storage_write_observed', 'refusal_signal_contradiction_observed', 'window_elapsed', 'reject_path_timeout', 'worker_failed', 'unavailable'], 'type': 'string'}, 'intentional': {'type': 'boolean'}}, 'additionalProperties': False}, 'interpretation': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'observationCount': {'type': 'integer', 'minimum': 0}, 'refusalExercised': {'type': 'boolean'}, 'coverageLimitations': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 24}, 'evidenceDisposition': {'enum': ['confirmed', 'indeterminate'], 'type': 'string'}, 'indeterminateReason': {'anyOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'null'}]}, 'observationStrategy': {'enum': ['stop_on_first_eligible_activity', 'not_applicable'], 'type': 'string'}, 'productionProjectable': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'null'}]}]}, {'type': 'null'}]}, 'observationOnlyDisclaimer': {'type': 'string'}, 'preConsentCookiesTrackers': {'type': 'object', 'required': ['summary', 'rows', 'total', 'returned', 'truncated'], 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'kind', 'name', 'cookieNames', 'vendor', 'purpose', 'category', 'confidence', 'firstObservedAtMs', 'domains', 'requestCount', 'evidenceClassification'], 'properties': {'id': {'type': 'string', 'maxLength': 512}, 'kind': {'enum': ['cookie', 'tracker', 'request', 'storage', 'unknown'], 'type': 'string'}, 'name': {'type': 'string', 'maxLength': 256}, 'vendor': {'anyOf': [{'type': 'string', 'maxLength': 160}, {'type': 'null'}]}, 'domains': {'type': 'array', 'items': {'type': 'string', 'maxLength': 253}, 'maxItems': 12}, 'purpose': {'anyOf': [{'type': 'string', 'maxLength': 160}, {'type': 'null'}]}, 'category': {'anyOf': [{'type': 'string', 'maxLength': 160}, {'type': 'null'}]}, 'confidence': {'enum': ['high', 'medium', 'low', 'unknown'], 'type': 'string'}, 'cookieNames': {'type': 'array', 'items': {'type': 'string', 'maxLength': 256}, 'maxItems': 24}, 'requestCount': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}]}, 'firstObservedAtMs': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}]}, 'evidenceClassification': {'type': 'object', 'required': ['basis', 'phase', 'observedBeforeConsent', 'party', 'priority'], 'properties': {'basis': {'type': 'string', 'const': 'public_report_projection'}, 'party': {'enum': ['first_party', 'third_party', 'mixed', 'unknown'], 'type': 'string'}, 'phase': {'type': 'string', 'const': 'pre_consent'}, 'priority': {'enum': ['high', 'medium', 'review_needed', 'contextual', 'unknown'], 'type': 'string'}, 'observedBeforeConsent': {'type': 'boolean'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'maxItems': 50}, 'total': {'type': 'integer', 'minimum': 0}, 'summary': {'type': 'object', 'required': ['rowCount', 'trackerCount', 'cookieCount', 'requestCount'], 'properties': {'rowCount': {'type': 'integer', 'minimum': 0}, 'cookieCount': {'type': 'integer', 'minimum': 0}, 'domainCount': {'type': 'integer', 'default': 0, 'minimum': 0}, 'vendorCount': {'type': 'integer', 'default': 0, 'minimum': 0}, 'requestCount': {'type': 'integer', 'minimum': 0}, 'storageCount': {'type': 'integer', 'minimum': 0}, 'trackerCount': {'type': 'integer', 'minimum': 0}, 'trackerCountScope': {'type': 'string', 'const': 'canonical_inventory_rows_including_operational'}, 'trackerCategoryCounts': {'type': 'object', 'required': ['advertising', 'analytics', 'essential', 'functional', 'review'], 'properties': {'review': {'type': 'integer', 'minimum': 0}, 'analytics': {'type': 'integer', 'minimum': 0}, 'essential': {'type': 'integer', 'minimum': 0}, 'functional': {'type': 'integer', 'minimum': 0}, 'advertising': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'returned': {'type': 'integer', 'minimum': 0}, 'truncated': {'type': 'boolean'}}, 'additionalProperties': False}}, 'additionalProperties': True}
certscore_get_scan_status
Get scan status
Returns lifecycle status for a stable CertScore scanId. Active responses include phase, heartbeat, estimated progress, retryAfterSeconds, and sometimes a bounded preliminary preConsentPreview. Terminal responses include completion status, CertScore score and risk metadata when available, coverage, persisted execution region and timestamps, report URL, and a next-action field. Preliminary observations are distinct from completed findings.
只读 幂等
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['scanId'], 'properties': {'scanId': {'type': 'string', 'minLength': 1, 'description': 'Stable CertScore scan ID returned by certscore_scan_site.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['scoreLabel', 'error', 'provenance', 'interpretationGuidance', 'recommendedNextTool', 'recommendedNextAction', 'observationOnlyDisclaimer'], 'properties': {'url': {'type': ['string', 'null']}, 'noGo': {'type': 'object', 'required': ['reasonCode', 'title', 'explanation', 'summary', 'limitationKind', 'recommendedNextAction', 'retryLikelyToHelp'], 'properties': {'title': {'type': 'string'}, 'summary': {'type': 'string'}, 'reasonCode': {'enum': ['blank_or_unusable_page', 'loading_or_stalled', 'not_found_404', 'parked_or_placeholder', 'site_not_ready', 'captcha_or_challenge', 'access_denied_or_forbidden_page', 'authentication_required', 'rate_limited_429', 'server_error_5xx', 'configuration_error', 'maintenance_or_unavailable', 'tls_or_certificate_error', 'unsupported_region', 'target_unreachable_or_unsuitable', 'navigation_transport_failure', 'visual_capture_failed_or_placeholder', 'retained_visual_error_shell', 'unknown'], 'type': 'string'}, 'explanation': {'type': 'string'}, 'limitationKind': {'enum': ['target_site_state', 'scanner_access_limitation', 'scanner_capture_limitation'], 'type': 'string'}, 'evidenceExcerpt': {'type': 'string', 'maxLength': 360}, 'retryLikelyToHelp': {'type': 'boolean'}, 'recommendedNextAction': {'type': 'string'}}, 'additionalProperties': False}, 'type': {'enum': ['certscore_scan_job', 'certscore_pulse_status'], 'type': 'string'}, 'error': {'anyOf': [{'type': 'object', 'required': ['code', 'message', 'retryable', 'retryAfterSeconds', 'recommendedNextAction'], 'properties': {'code': {'type': 'string'}, 'name': {'type': 'string'}, 'field': {'type': 'string'}, 'issues': {'type': 'array', 'items': {'type': 'object', 'required': ['field', 'code'], 'properties': {'code': {'type': 'string', 'maxLength': 80}, 'field': {'type': 'string', 'maxLength': 80}, 'required': {'type': 'boolean'}}, 'additionalProperties': False}, 'maxItems': 8}, 'status': {'type': 'integer'}, 'mcpCode': {'type': 'integer'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean'}, 'responseBody': {}, 'retryAfterSeconds': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'recommendedNextAction': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'jobId': {'type': 'string'}, 'links': {'type': 'object', 'properties': {'docs': {'type': 'string'}, 'self': {'type': 'string'}, 'pulse': {'type': 'string'}, 'report': {'type': 'string'}, 'status': {'type': 'string'}, 'findings': {'type': 'string'}, 'latestDomainScan': {'type': 'string'}}, 'additionalProperties': True}, 'phase': {'type': 'string'}, 'score': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'domain': {'type': ['string', 'null']}, 'scanId': {'type': ['string', 'null']}, 'status': {'enum': ['queued', 'running', 'finalizing', 'completed', 'completed_limited', 'failed', 'expired', 'rate_limited'], 'type': 'string'}, 'scan_id': {'type': ['string', 'null']}, 'stalled': {'type': 'boolean'}, 'coverage': {'anyOf': [{'anyOf': [{'not': {}}, {'type': 'object', 'properties': {'status': {'type': 'string'}, 'summary': {'type': 'string'}, 'limitations': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': True}]}, {'type': 'null'}]}, 'scanFrom': {'anyOf': [{'enum': ['eu_de', 'eu_ie', 'california'], 'type': 'string'}, {'type': 'null'}]}, 'createdAt': {'type': ['string', 'null']}, 'reportUrl': {'type': ['string', 'null']}, 'riskLevel': {'type': ['string', 'null']}, 'startedAt': {'type': ['string', 'null']}, 'provenance': {'type': 'object', 'required': ['mode', 'retrievalMode', 'creationDecision', 'scanAgeSeconds', 'executionMode', 'reused', 'freshnessDecision'], 'properties': {'mode': {'enum': ['new_scan_started', 'existing_completed_scan_reused', 'existing_scan_retrieved', 'unknown'], 'type': 'string'}, 'reused': {'type': ['boolean', 'null']}, 'executionMode': {'anyOf': [{'enum': ['new_scan', 'reused_scan'], 'type': 'string'}, {'type': 'null'}]}, 'retrievalMode': {'enum': ['creation_response', 'scan_id_lookup', 'unknown'], 'type': 'string'}, 'scanAgeSeconds': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}]}, 'creationDecision': {'enum': ['new_scan', 'reused_scan', 'unknown'], 'type': 'string'}, 'freshnessDecision': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'scoreLabel': {'type': 'string', 'const': 'CertScore score'}, 'completedAt': {'type': ['string', 'null']}, 'gpcResponse': {'anyOf': [{'anyOf': [{'not': {}}, {'anyOf': [{'type': 'object', 'required': ['status', 'findingTitle', 'summary', 'scoreEffect', 'legalInterpretation', 'comparison', 'californiaPolicy', 'evidenceUrl'], 'properties': {'status': {'enum': ['responsive', 'no_observable_response', 'indeterminate'], 'type': 'string'}, 'summary': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'comparison': {'type': 'object', 'required': ['comparable', 'protocol', 'baselineArtifact', 'gpcArtifact', 'enabledProof', 'deltas', 'limitationKeys'], 'properties': {'deltas': {'type': 'object', 'required': ['cookies', 'trackers', 'advertisingOrMeasurementActivity', 'consentOrCmpBehavior'], 'properties': {'cookies': {'type': 'object', 'required': ['baselineCount', 'gpcCount', 'countDelta', 'baselineOnly', 'gpcOnly', 'shared'], 'properties': {'shared': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 100}, 'gpcOnly': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 100}, 'gpcCount': {'type': 'integer', 'minimum': 0}, 'countDelta': {'type': 'integer'}, 'sharedCount': {'type': 'integer', 'minimum': 0}, 'baselineOnly': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 100}, 'gpcOnlyCount': {'type': 'integer', 'minimum': 0}, 'baselineCount': {'type': 'integer', 'minimum': 0}, 'samplesTruncated': {'type': 'boolean'}, 'baselineOnlyCount': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, 'trackers': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/comparison/properties/deltas/properties/cookies'}, 'webStorage': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/comparison/properties/deltas/properties/cookies'}, 'consentOrCmpBehavior': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/comparison/properties/deltas/properties/cookies'}, 'advertisingOrMarketingActivity': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/comparison/properties/deltas/properties/cookies'}, 'advertisingOrMeasurementActivity': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/comparison/properties/deltas/properties/cookies'}}, 'additionalProperties': False}, 'coverage': {'type': 'object', 'required': ['status', 'comparedThroughMs'], 'properties': {'status': {'enum': ['complete', 'limited', 'unavailable'], 'type': 'string'}, 'comparedThroughMs': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'delivery': {'type': 'object', 'required': ['status'], 'properties': {'status': {'enum': ['verified', 'limited', 'unavailable'], 'type': 'string'}}, 'additionalProperties': False}, 'protocol': {'type': 'string', 'const': 'passive_baseline_with_sec_gpc'}, 'comparable': {'type': 'boolean'}, 'gpcArtifact': {'anyOf': [{'type': 'object', 'required': ['lane', 'sha256', 'sizeBytes'], 'properties': {'lane': {'type': 'string', 'const': 'gpc_observation'}, 'sha256': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, 'sizeBytes': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'null'}]}, 'enabledProof': {'type': 'object', 'required': ['secGpcHeaderValue', 'requestsWithSecGpc', 'requestEventIds', 'navigatorGlobalPrivacyControl'], 'properties': {'requestEventIds': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 100}, 'secGpcHeaderValue': {'anyOf': [{'type': 'string', 'const': '1'}, {'type': 'null'}]}, 'requestsWithSecGpc': {'type': 'integer', 'minimum': 0}, 'navigatorGlobalPrivacyControl': {'type': ['boolean', 'null']}}, 'additionalProperties': False}, 'responseBasis': {'enum': ['qualified_activity_reduction', 'no_qualified_reduction', 'insufficient_evidence'], 'type': 'string'}, 'limitationKeys': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 24}, 'baselineArtifact': {'anyOf': [{'type': 'object', 'required': ['lane', 'sha256', 'sizeBytes'], 'properties': {'lane': {'type': 'string', 'const': 'runtime_evidence'}, 'sha256': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, 'sizeBytes': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'null'}]}}, 'additionalProperties': False}, 'evidenceUrl': {'type': 'string', 'format': 'uri'}, 'observation': {'type': 'object', 'required': ['contractVersion', 'scope', 'status', 'sourceSha256', 'sessionSha256', 'documentUrlSha256', 'delivery', 'semanticProbe', 'registration', 'acknowledgment', 'requests', 'limitationKeys', 'scoreEffect', 'legalInterpretation'], 'properties': {'scope': {'type': 'string', 'const': 'main_document_and_retained_http_requests'}, 'status': {'enum': ['complete', 'limited', 'unavailable'], 'type': 'string'}, 'delivery': {'type': 'object', 'required': ['httpHeaderRetained', 'mainNavigatorReadbackRetained', 'fullContextVerified'], 'properties': {'httpHeaderRetained': {'type': 'boolean'}, 'fullContextVerified': {'type': 'boolean'}, 'mainNavigatorReadbackRetained': {'type': 'boolean'}}, 'additionalProperties': False}, 'requests': {'type': 'object', 'required': ['count', 'blockedBeforeTransmissionCount', 'complete', 'fromMs', 'documentCommittedAtMs', 'throughMs', 'classifiedCount', 'collectionCount', 'evidenceIds', 'samplesTruncated'], 'properties': {'count': {'type': 'integer', 'minimum': 0}, 'fromMs': {'anyOf': [{'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}, {'type': 'null'}]}, 'complete': {'type': 'boolean'}, 'throughMs': {'anyOf': [{'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}, {'type': 'null'}]}, 'evidenceIds': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 100}, 'classifiedCount': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}, 'collectionCount': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}, 'samplesTruncated': {'type': 'boolean'}, 'documentCommittedAtMs': {'anyOf': [{'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}, {'type': 'null'}]}, 'blockedBeforeTransmissionCount': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}}, 'additionalProperties': False}, 'scoreEffect': {'type': 'string', 'const': 'none'}, 'registration': {'type': 'object', 'required': ['basis', 'sale', 'sharing', 'cmpGpcSignal', 'causedByGpc'], 'properties': {'sale': {'enum': ['opted_out', 'not_opted_out', 'unknown'], 'type': 'string'}, 'basis': {'type': 'string', 'const': 'current_recorded_state'}, 'sharing': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/registration/properties/sale'}, 'causedByGpc': {'type': 'string', 'const': 'not_established'}, 'cmpGpcSignal': {'enum': ['received', 'not_received', 'unknown'], 'type': 'string'}}, 'additionalProperties': False}, 'sourceSha256': {'anyOf': [{'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, {'type': 'null'}]}, 'semanticProbe': {'enum': ['observed', 'unsupported', 'unavailable', 'not_ready', 'invalid', 'incomplete'], 'type': 'string'}, 'sessionSha256': {'anyOf': [{'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, {'type': 'null'}]}, 'acknowledgment': {'type': 'object', 'required': ['observed', 'captureComplete'], 'properties': {'observed': {'type': 'boolean'}, 'captureComplete': {'type': 'boolean'}}, 'additionalProperties': False}, 'limitationKeys': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 32}, 'contractVersion': {'type': 'string', 'const': 'certscore.gpc-bounded-observation.v1'}, 'documentUrlSha256': {'anyOf': [{'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, {'type': 'null'}]}, 'legalInterpretation': {'type': 'string', 'const': 'not_assessed'}}, 'additionalProperties': False}, 'scoreEffect': {'type': 'string', 'const': 'none'}, 'findingTitle': {'enum': ['GPC response', 'No observable GPC response'], 'type': 'string'}, 'contractVersion': {'enum': ['certscore.gpc-response-assessment.v1', 'certscore.gpc-response-assessment.v2', 'certscore.gpc-response-assessment.v3'], 'type': 'string'}, 'californiaPolicy': {'type': 'object', 'required': ['applied', 'deductionPoints'], 'properties': {'applied': {'type': 'boolean'}, 'deductionPoints': {'enum': [0, 15], 'type': 'number'}}, 'additionalProperties': False}, 'activityComparison': {'type': 'object', 'required': ['contractVersion', 'scanId', 'status', 'scope', 'durationMs', 'sourceHashes', 'activity', 'scoreEffect', 'causedByGpc'], 'properties': {'scope': {'type': 'string', 'const': 'matched_post_commit_request_window'}, 'scanId': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'status': {'type': 'string', 'const': 'measured'}, 'activity': {'type': 'object', 'required': ['advertisingMarketing', 'analyticsReplay'], 'properties': {'analyticsReplay': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/activityComparison/properties/activity/properties/advertisingMarketing'}, 'advertisingMarketing': {'type': 'object', 'required': ['baselineRequests', 'gpcRequests', 'baselineServices', 'gpcServices'], 'properties': {'gpcRequests': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/activityComparison/properties/activity/properties/advertisingMarketing/properties/baselineRequests'}, 'gpcServices': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/activityComparison/properties/activity/properties/advertisingMarketing/properties/baselineRequests'}, 'baselineRequests': {'type': 'integer', 'maximum': 5000, 'minimum': 0}, 'baselineServices': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/activityComparison/properties/activity/properties/advertisingMarketing/properties/baselineRequests'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'durationMs': {'enum': [250, 500, 1000], 'type': 'number'}, 'causedByGpc': {'type': 'string', 'const': 'not_established'}, 'scoreEffect': {'type': 'string', 'const': 'none'}, 'sourceHashes': {'type': 'object', 'required': ['baseline', 'gpc'], 'properties': {'gpc': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, 'baseline': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}}, 'additionalProperties': False}, 'contractVersion': {'type': 'string', 'const': 'certscore.gpc-activity-comparison.v1'}}, 'additionalProperties': False}, 'legalInterpretation': {'type': 'string', 'const': 'not_assessed'}}, 'additionalProperties': False}, {'type': 'null'}]}]}, {'type': 'null'}]}, 'scoreStatus': {'enum': ['provisional', 'final'], 'type': 'string'}, 'scoreVersion': {'type': ['string', 'null']}, 'lastUpdatedAt': {'type': 'string'}, 'phaseStartedAt': {'type': ['string', 'null']}, 'scoreUpdatedAt': {'type': ['string', 'null']}, 'lastHeartbeatAt': {'type': ['string', 'null']}, 'progressPercent': {'type': 'integer', 'maximum': 100, 'minimum': 0}, 'scanTimeSeconds': {'type': ['number', 'null']}, 'preConsentPreview': {'type': 'object', 'required': ['type', 'resultStage', 'final', 'sourceLane', 'generatedAt', 'runtimeCoverage', 'summary', 'cookies', 'trackers', 'truncated', 'mustContinuePolling', 'observationOnlyDisclaimer'], 'properties': {'type': {'type': 'string', 'const': 'certscore_pre_consent_preview'}, 'final': {'type': 'boolean', 'const': False}, 'cookies': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'domain', 'party', 'purpose', 'essentiality', 'observedAtMs'], 'properties': {'name': {'type': 'string', 'maxLength': 256, 'minLength': 1}, 'party': {'enum': ['first_party', 'third_party', 'unknown'], 'type': 'string'}, 'domain': {'anyOf': [{'type': 'string', 'maxLength': 253, 'minLength': 1}, {'type': 'null'}]}, 'purpose': {'enum': ['analytics', 'advertising', 'marketing', 'personalization', 'session_replay', 'consent_management', 'tag_management', 'infrastructure', 'security', 'performance_monitoring', 'customer_support', 'unknown'], 'type': 'string'}, 'essentiality': {'enum': ['essential', 'non_essential', 'unknown'], 'type': 'string'}, 'observedAtMs': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 20}, 'summary': {'type': 'object', 'required': ['cookieCount', 'trackerCount', 'thirdPartyRequestCount', 'vendorCount'], 'properties': {'cookieCount': {'type': 'integer', 'minimum': 0}, 'vendorCount': {'type': 'integer', 'minimum': 0}, 'trackerCount': {'type': 'integer', 'minimum': 0}, 'returnedCookieCount': {'type': 'integer', 'minimum': 0}, 'trackingVendorCount': {'type': 'integer', 'minimum': 0}, 'operationalVendorCount': {'type': 'integer', 'minimum': 0}, 'thirdPartyRequestCount': {'type': 'integer', 'minimum': 0}, 'returnedTrackingVendorCount': {'type': 'integer', 'minimum': 0}, 'returnedOperationalVendorCount': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, 'trackers': {'type': 'array', 'items': {'type': 'object', 'required': ['vendor', 'product', 'purpose', 'confidence', 'domains'], 'properties': {'vendor': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'domains': {'type': 'array', 'items': {'type': 'string', 'maxLength': 253, 'minLength': 1}, 'maxItems': 8}, 'product': {'anyOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'null'}]}, 'purpose': {'enum': ['analytics', 'advertising', 'marketing', 'personalization', 'session_replay', 'consent_management', 'tag_management', 'infrastructure', 'security', 'performance_monitoring', 'customer_support', 'unknown'], 'type': 'string'}, 'confidence': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 20}, 'resources': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'vendor', 'product', 'purpose', 'confidence', 'domains', 'party', 'observedAtMs', 'requestCount'], 'properties': {'kind': {'enum': ['request', 'embed'], 'type': 'string'}, 'party': {'enum': ['first_party', 'third_party', 'mixed', 'unknown'], 'type': 'string'}, 'vendor': {'anyOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'null'}]}, 'domains': {'type': 'array', 'items': {'type': 'string', 'maxLength': 253, 'minLength': 1}, 'maxItems': 8}, 'product': {'anyOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'null'}]}, 'purpose': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'confidence': {'anyOf': [{'type': 'number', 'maximum': 1, 'minimum': 0}, {'type': 'null'}]}, 'observedAtMs': {'type': 'integer', 'minimum': 0}, 'requestCount': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 20}, 'truncated': {'type': 'object', 'required': ['cookies', 'trackers'], 'properties': {'cookies': {'type': 'boolean'}, 'trackers': {'type': 'boolean'}, 'resources': {'type': 'boolean'}, 'operationalVendors': {'type': 'boolean'}}, 'additionalProperties': False}, 'sourceLane': {'type': 'string', 'const': 'runtime_evidence'}, 'generatedAt': {'type': 'string', 'format': 'date-time'}, 'resultStage': {'type': 'string', 'const': 'preliminary'}, 'runtimeCoverage': {'type': 'object', 'required': ['status', 'limitationKeys'], 'properties': {'status': {'enum': ['usable', 'limited_partial', 'limited_none', 'not_applicable'], 'type': 'string'}, 'limitationKeys': {'type': 'array', 'items': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'maxItems': 16}}, 'additionalProperties': False}, 'operationalVendors': {'type': 'array', 'items': {'type': 'object', 'required': ['vendor', 'product', 'purpose', 'confidence', 'domains'], 'properties': {'vendor': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'domains': {'type': 'array', 'items': {'type': 'string', 'maxLength': 253, 'minLength': 1}, 'maxItems': 8}, 'product': {'anyOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'null'}]}, 'purpose': {'enum': ['analytics', 'advertising', 'marketing', 'personalization', 'session_replay', 'consent_management', 'tag_management', 'infrastructure', 'security', 'performance_monitoring', 'customer_support', 'unknown'], 'type': 'string'}, 'confidence': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 20}, 'mustContinuePolling': {'type': 'boolean', 'const': True}, 'observationOnlyDisclaimer': {'type': 'string', 'maxLength': 500, 'minLength': 1}}, 'additionalProperties': False}, 'resultDisposition': {'enum': ['no_go'], 'type': 'string'}, 'retryAfterSeconds': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'progressIsEstimate': {'type': 'boolean'}, 'recommendedNextTool': {'anyOf': [{'enum': ['certscore_get_scan_status', 'certscore_get_scan_bundle'], 'type': 'string'}, {'type': 'null'}]}, 'postAcceptObservation': {'anyOf': [{'anyOf': [{'not': {}}, {'anyOf': [{'type': 'object', 'required': ['status', 'acceptanceExercised', 'observationCount', 'productionProjectable', 'evidenceDisposition', 'indeterminateReason', 'verdict', 'interpretation', 'observationStrategy', 'termination', 'completedAt', 'coverageLimitations', 'limitations'], 'properties': {'status': {'enum': ['confirmed_observation', 'confirmed_clean', 'unconfirmed', 'not_attempted', 'unsupported', 'aborted'], 'type': 'string'}, 'verdict': {'enum': ['eligible_nonessential_activity_observed_after_confirmed_acceptance', 'retained_consent_signal_contradiction_observed_after_confirmed_acceptance', 'no_eligible_nonessential_activity_observed_during_completed_window', 'no_confirmed_post_accept_verdict'], 'type': 'string'}, 'execution': {'type': 'object', 'required': ['policyVersion', 'status', 'clickCompleted', 'observationCompleted', 'consentConfirmed'], 'properties': {'status': {'enum': ['succeeded', 'succeeded_with_confirmation', 'limited', 'not_attempted', 'unsupported'], 'type': 'string'}, 'policyVersion': {'type': 'string', 'const': 'choice_path_execution.v1'}, 'clickCompleted': {'type': 'boolean'}, 'consentConfirmed': {'type': 'boolean'}, 'observationCompleted': {'type': 'boolean'}}, 'additionalProperties': False}, 'afterAction': {'type': 'object', 'required': ['policyVersion', 'action', 'activationStatus', 'stopReason', 'requestsDropped', 'requestCount', 'storageWriteCount', 'storageSnapshotRetained'], 'properties': {'action': {'enum': ['accept', 'reject'], 'type': 'string'}, 'stopReason': {'enum': ['window_elapsed', 'aborted', 'target_changed', 'click_uncertain'], 'type': 'string'}, 'requestCount': {'type': 'integer', 'minimum': 0}, 'policyVersion': {'enum': ['bounded_after_action_capture.v1', 'bounded_after_action_capture.v2'], 'type': 'string'}, 'requestsDropped': {'type': 'integer', 'minimum': 0}, 'activationStatus': {'enum': ['completed', 'uncertain'], 'type': 'string'}, 'storageWriteCount': {'type': 'integer', 'minimum': 0}, 'storageSnapshotRetained': {'type': 'boolean'}}, 'additionalProperties': False}, 'completedAt': {'type': ['string', 'null']}, 'limitations': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 24}, 'termination': {'type': 'object', 'required': ['kind', 'intentional', 'trigger'], 'properties': {'kind': {'enum': ['evidence_satisfied', 'window_elapsed', 'unavailable'], 'type': 'string'}, 'trigger': {'enum': ['non_essential_request_observed', 'non_essential_storage_write_observed', 'acceptance_signal_contradiction_observed', 'window_elapsed', 'accept_control_not_observed', 'accept_path_timeout', 'accept_observation_window_truncated', 'worker_failed', 'unavailable'], 'type': 'string'}, 'intentional': {'type': 'boolean'}}, 'additionalProperties': False}, 'interpretation': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'observationCount': {'type': 'integer', 'minimum': 0}, 'acceptanceExercised': {'type': 'boolean'}, 'coverageLimitations': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 24}, 'evidenceDisposition': {'enum': ['confirmed', 'indeterminate'], 'type': 'string'}, 'indeterminateReason': {'anyOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'null'}]}, 'observationStrategy': {'enum': ['stop_on_first_eligible_activity', 'not_applicable'], 'type': 'string'}, 'productionProjectable': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'null'}]}]}, {'type': 'null'}]}, 'recommendedNextAction': {'type': 'string'}, 'interpretationGuidance': {'type': 'object', 'required': ['scoreLabel', 'observableSignalsOnly', 'doNotInferUnobservedTechnologies', 'doNotInferLegalComplianceStatus', 'statement'], 'properties': {'statement': {'type': 'string'}, 'scoreLabel': {'type': 'string', 'const': 'CertScore score'}, 'observableSignalsOnly': {'type': 'boolean', 'const': True}, 'doNotInferLegalComplianceStatus': {'type': 'boolean', 'const': True}, 'doNotInferUnobservedTechnologies': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, 'postRefusalObservation': {'anyOf': [{'anyOf': [{'not': {}}, {'anyOf': [{'type': 'object', 'required': ['status', 'refusalExercised', 'observationCount', 'productionProjectable', 'evidenceDisposition', 'indeterminateReason', 'verdict', 'interpretation', 'observationStrategy', 'termination', 'completedAt', 'coverageLimitations', 'limitations'], 'properties': {'status': {'enum': ['confirmed_observation', 'confirmed_clean', 'unconfirmed', 'not_attempted', 'unsupported', 'aborted'], 'type': 'string'}, 'verdict': {'enum': ['eligible_nonessential_activity_observed_after_confirmed_refusal', 'retained_consent_signal_contradiction_observed_after_confirmed_refusal', 'no_eligible_nonessential_activity_observed_during_completed_window', 'no_confirmed_post_refusal_verdict'], 'type': 'string'}, 'execution': {'$ref': '#/properties/postAcceptObservation/anyOf/0/anyOf/1/anyOf/0/properties/execution'}, 'afterAction': {'$ref': '#/properties/postAcceptObservation/anyOf/0/anyOf/1/anyOf/0/properties/afterAction'}, 'completedAt': {'type': ['string', 'null']}, 'limitations': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 24}, 'termination': {'type': 'object', 'required': ['kind', 'intentional', 'trigger'], 'properties': {'kind': {'enum': ['evidence_satisfied', 'window_elapsed', 'unavailable'], 'type': 'string'}, 'trigger': {'enum': ['non_essential_request_observed', 'non_essential_storage_write_observed', 'refusal_signal_contradiction_observed', 'window_elapsed', 'reject_path_timeout', 'worker_failed', 'unavailable'], 'type': 'string'}, 'intentional': {'type': 'boolean'}}, 'additionalProperties': False}, 'interpretation': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'observationCount': {'type': 'integer', 'minimum': 0}, 'refusalExercised': {'type': 'boolean'}, 'coverageLimitations': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 24}, 'evidenceDisposition': {'enum': ['confirmed', 'indeterminate'], 'type': 'string'}, 'indeterminateReason': {'anyOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'null'}]}, 'observationStrategy': {'enum': ['stop_on_first_eligible_activity', 'not_applicable'], 'type': 'string'}, 'productionProjectable': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'null'}]}]}, {'type': 'null'}]}, 'estimatedRemainingSeconds': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}]}, 'observationOnlyDisclaimer': {'type': 'string'}}, 'additionalProperties': True}
certscore_scan_site
Scan site
Creates a public-website privacy scan or reuses an eligible recent completed scan. Coverage includes pre-consent storage, trackers, consent and CMP signals, privacy-policy disclosures, transport security, and GDPR/ePrivacy or CCPA/CPRA review signals. The response contains a stable scanId, lifecycle status, retry timing, and sometimes a bounded preliminary preConsentPreview; preliminary data contains no final findings or score. Results are automated public-web observations, not legal advice, certification, or a compliance determination. Tool and workflow documentation: https://certscore.ai/developers/mcp.
可访问外部资源
输入模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['url'], 'properties': {'url': {'type': 'string', 'minLength': 1, 'description': 'Public URL or domain to scan.'}, 'scanFrom': {'enum': ['eu_de', 'eu_ie', 'california'], 'type': 'string', 'description': 'Optional execution region for a newly queued scan: eu_de, eu_ie, california, or the service default when omitted.'}, 'freshness': {'enum': ['latest', 'refresh'], 'type': 'string', 'description': 'Scan freshness policy. latest allows eligible recent completed-result reuse when available; refresh requests a new scan. Defaults to latest.'}, 'taskContext': {'type': 'object', 'properties': {'purpose': {'enum': ['prelaunch_review', 'vendor_review', 'tracking_check', 'consent_gpc_check', 'policy_review', 'recheck', 'other', 'unknown'], 'type': 'string'}, 'skillVersion': {'$ref': '#/properties/taskContext/properties/integrationId'}, 'integrationId': {'type': 'string', 'pattern': '^[a-zA-Z0-9][a-zA-Z0-9._-]*$', 'maxLength': 80}, 'questionSource': {'enum': ['user_wording', 'agent_paraphrase'], 'type': 'string'}, 'questionSummary': {'type': 'string', 'maxLength': 8192, 'minLength': 1}, 'integrationVersion': {'$ref': '#/properties/taskContext/properties/integrationId'}, 'shareForImprovement': {'type': 'boolean'}}, 'description': 'Optional caller-declared purpose and integration ID/version for usage research. Only include questionSummary when the user knowingly agrees to share a brief non-sensitive question for product improvement; label user_wording or agent_paraphrase. Never include chat history, personal/account details, secrets or URLs. Omission does not affect scanning.', 'additionalProperties': False}, 'maxWaitSeconds': {'type': 'integer', 'maximum': 45, 'minimum': 1, 'description': 'Deprecated compatibility field; accepted but ignored. The bounded preliminary-preview wait is controlled by CertScore and never waits for scan completion.'}, 'waitForCompletion': {'type': 'boolean', 'description': 'Deprecated compatibility field; accepted but ignored. certscore_scan_site never waits for a new scan to finish, though MCP Light may briefly wait within a bounded preview window for preliminary pre-consent observations.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['type', 'status', 'scoreLabel', 'error', 'provenance', 'interpretationGuidance', 'recommendedNextTool', 'recommendedNextAction', 'observationOnlyDisclaimer'], 'properties': {'noGo': {'type': 'object', 'required': ['reasonCode', 'title', 'explanation', 'summary', 'limitationKind', 'recommendedNextAction', 'retryLikelyToHelp'], 'properties': {'title': {'type': 'string'}, 'summary': {'type': 'string'}, 'reasonCode': {'enum': ['blank_or_unusable_page', 'loading_or_stalled', 'not_found_404', 'parked_or_placeholder', 'site_not_ready', 'captcha_or_challenge', 'access_denied_or_forbidden_page', 'authentication_required', 'rate_limited_429', 'server_error_5xx', 'configuration_error', 'maintenance_or_unavailable', 'tls_or_certificate_error', 'unsupported_region', 'target_unreachable_or_unsuitable', 'navigation_transport_failure', 'visual_capture_failed_or_placeholder', 'retained_visual_error_shell', 'unknown'], 'type': 'string'}, 'explanation': {'type': 'string'}, 'limitationKind': {'enum': ['target_site_state', 'scanner_access_limitation', 'scanner_capture_limitation'], 'type': 'string'}, 'evidenceExcerpt': {'type': 'string', 'maxLength': 360}, 'retryLikelyToHelp': {'type': 'boolean'}, 'recommendedNextAction': {'type': 'string'}}, 'additionalProperties': False}, 'type': {'enum': ['certscore_scan', 'certscore_scan_job', 'certscore_tool_error'], 'type': 'string'}, 'error': {'anyOf': [{'type': 'object', 'required': ['code', 'message', 'retryable', 'retryAfterSeconds', 'recommendedNextAction'], 'properties': {'code': {'type': 'string'}, 'name': {'type': 'string'}, 'field': {'type': 'string'}, 'issues': {'type': 'array', 'items': {'type': 'object', 'required': ['field', 'code'], 'properties': {'code': {'type': 'string', 'maxLength': 80}, 'field': {'type': 'string', 'maxLength': 80}, 'required': {'type': 'boolean'}}, 'additionalProperties': False}, 'maxItems': 8}, 'status': {'type': 'integer'}, 'mcpCode': {'type': 'integer'}, 'message': {'type': 'string'}, 'retryable': {'type': 'boolean'}, 'responseBody': {}, 'retryAfterSeconds': {'anyOf': [{'type': 'integer'}, {'type': 'null'}]}, 'recommendedNextAction': {'type': 'string'}}, 'additionalProperties': False}, {'type': 'null'}]}, 'jobId': {'type': 'string'}, 'links': {'type': 'object', 'properties': {'docs': {'type': 'string'}, 'self': {'type': 'string'}, 'pulse': {'type': 'string'}, 'report': {'type': 'string'}, 'status': {'type': 'string'}, 'findings': {'type': 'string'}, 'latestDomainScan': {'type': 'string'}}, 'additionalProperties': True}, 'score': {'anyOf': [{'type': 'integer', 'maximum': 100, 'minimum': 0}, {'type': 'null'}]}, 'domain': {'type': ['string', 'null']}, 'scanId': {'type': ['string', 'null']}, 'status': {'anyOf': [{'enum': ['queued', 'running', 'finalizing', 'completed', 'completed_limited', 'failed', 'expired', 'rate_limited'], 'type': 'string'}, {'type': 'string', 'const': 'invalid_arguments'}]}, 'coverage': {'anyOf': [{'anyOf': [{'not': {}}, {'type': 'object', 'properties': {'status': {'type': 'string'}, 'summary': {'type': 'string'}, 'limitations': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': True}]}, {'type': 'null'}]}, 'scanFrom': {'enum': ['eu_de', 'eu_ie', 'california'], 'type': 'string'}, 'createdAt': {'type': ['string', 'null']}, 'reportUrl': {'type': ['string', 'null']}, 'riskLevel': {'type': ['string', 'null']}, 'startedAt': {'type': ['string', 'null']}, 'provenance': {'type': 'object', 'required': ['mode', 'retrievalMode', 'creationDecision', 'scanAgeSeconds', 'executionMode', 'reused', 'freshnessDecision'], 'properties': {'mode': {'enum': ['new_scan_started', 'existing_completed_scan_reused', 'existing_scan_retrieved', 'unknown'], 'type': 'string'}, 'reused': {'type': ['boolean', 'null']}, 'executionMode': {'anyOf': [{'enum': ['new_scan', 'reused_scan'], 'type': 'string'}, {'type': 'null'}]}, 'retrievalMode': {'enum': ['creation_response', 'scan_id_lookup', 'unknown'], 'type': 'string'}, 'scanAgeSeconds': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}]}, 'creationDecision': {'enum': ['new_scan', 'reused_scan', 'unknown'], 'type': 'string'}, 'freshnessDecision': {'type': ['string', 'null']}}, 'additionalProperties': False}, 'scoreLabel': {'type': 'string', 'const': 'CertScore score'}, 'completedAt': {'type': ['string', 'null']}, 'gpcResponse': {'anyOf': [{'anyOf': [{'not': {}}, {'anyOf': [{'type': 'object', 'required': ['status', 'findingTitle', 'summary', 'scoreEffect', 'legalInterpretation', 'comparison', 'californiaPolicy', 'evidenceUrl'], 'properties': {'status': {'enum': ['responsive', 'no_observable_response', 'indeterminate'], 'type': 'string'}, 'summary': {'type': 'string', 'maxLength': 2000, 'minLength': 1}, 'comparison': {'type': 'object', 'required': ['comparable', 'protocol', 'baselineArtifact', 'gpcArtifact', 'enabledProof', 'deltas', 'limitationKeys'], 'properties': {'deltas': {'type': 'object', 'required': ['cookies', 'trackers', 'advertisingOrMeasurementActivity', 'consentOrCmpBehavior'], 'properties': {'cookies': {'type': 'object', 'required': ['baselineCount', 'gpcCount', 'countDelta', 'baselineOnly', 'gpcOnly', 'shared'], 'properties': {'shared': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 100}, 'gpcOnly': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 100}, 'gpcCount': {'type': 'integer', 'minimum': 0}, 'countDelta': {'type': 'integer'}, 'sharedCount': {'type': 'integer', 'minimum': 0}, 'baselineOnly': {'type': 'array', 'items': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'maxItems': 100}, 'gpcOnlyCount': {'type': 'integer', 'minimum': 0}, 'baselineCount': {'type': 'integer', 'minimum': 0}, 'samplesTruncated': {'type': 'boolean'}, 'baselineOnlyCount': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, 'trackers': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/comparison/properties/deltas/properties/cookies'}, 'webStorage': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/comparison/properties/deltas/properties/cookies'}, 'consentOrCmpBehavior': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/comparison/properties/deltas/properties/cookies'}, 'advertisingOrMarketingActivity': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/comparison/properties/deltas/properties/cookies'}, 'advertisingOrMeasurementActivity': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/comparison/properties/deltas/properties/cookies'}}, 'additionalProperties': False}, 'coverage': {'type': 'object', 'required': ['status', 'comparedThroughMs'], 'properties': {'status': {'enum': ['complete', 'limited', 'unavailable'], 'type': 'string'}, 'comparedThroughMs': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'delivery': {'type': 'object', 'required': ['status'], 'properties': {'status': {'enum': ['verified', 'limited', 'unavailable'], 'type': 'string'}}, 'additionalProperties': False}, 'protocol': {'type': 'string', 'const': 'passive_baseline_with_sec_gpc'}, 'comparable': {'type': 'boolean'}, 'gpcArtifact': {'anyOf': [{'type': 'object', 'required': ['lane', 'sha256', 'sizeBytes'], 'properties': {'lane': {'type': 'string', 'const': 'gpc_observation'}, 'sha256': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, 'sizeBytes': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'null'}]}, 'enabledProof': {'type': 'object', 'required': ['secGpcHeaderValue', 'requestsWithSecGpc', 'requestEventIds', 'navigatorGlobalPrivacyControl'], 'properties': {'requestEventIds': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 100}, 'secGpcHeaderValue': {'anyOf': [{'type': 'string', 'const': '1'}, {'type': 'null'}]}, 'requestsWithSecGpc': {'type': 'integer', 'minimum': 0}, 'navigatorGlobalPrivacyControl': {'type': ['boolean', 'null']}}, 'additionalProperties': False}, 'responseBasis': {'enum': ['qualified_activity_reduction', 'no_qualified_reduction', 'insufficient_evidence'], 'type': 'string'}, 'limitationKeys': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 24}, 'baselineArtifact': {'anyOf': [{'type': 'object', 'required': ['lane', 'sha256', 'sizeBytes'], 'properties': {'lane': {'type': 'string', 'const': 'runtime_evidence'}, 'sha256': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, 'sizeBytes': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, {'type': 'null'}]}}, 'additionalProperties': False}, 'evidenceUrl': {'type': 'string', 'format': 'uri'}, 'observation': {'type': 'object', 'required': ['contractVersion', 'scope', 'status', 'sourceSha256', 'sessionSha256', 'documentUrlSha256', 'delivery', 'semanticProbe', 'registration', 'acknowledgment', 'requests', 'limitationKeys', 'scoreEffect', 'legalInterpretation'], 'properties': {'scope': {'type': 'string', 'const': 'main_document_and_retained_http_requests'}, 'status': {'enum': ['complete', 'limited', 'unavailable'], 'type': 'string'}, 'delivery': {'type': 'object', 'required': ['httpHeaderRetained', 'mainNavigatorReadbackRetained', 'fullContextVerified'], 'properties': {'httpHeaderRetained': {'type': 'boolean'}, 'fullContextVerified': {'type': 'boolean'}, 'mainNavigatorReadbackRetained': {'type': 'boolean'}}, 'additionalProperties': False}, 'requests': {'type': 'object', 'required': ['count', 'blockedBeforeTransmissionCount', 'complete', 'fromMs', 'documentCommittedAtMs', 'throughMs', 'classifiedCount', 'collectionCount', 'evidenceIds', 'samplesTruncated'], 'properties': {'count': {'type': 'integer', 'minimum': 0}, 'fromMs': {'anyOf': [{'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}, {'type': 'null'}]}, 'complete': {'type': 'boolean'}, 'throughMs': {'anyOf': [{'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}, {'type': 'null'}]}, 'evidenceIds': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 100}, 'classifiedCount': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}, 'collectionCount': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}, 'samplesTruncated': {'type': 'boolean'}, 'documentCommittedAtMs': {'anyOf': [{'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}, {'type': 'null'}]}, 'blockedBeforeTransmissionCount': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/requests/properties/count'}}, 'additionalProperties': False}, 'scoreEffect': {'type': 'string', 'const': 'none'}, 'registration': {'type': 'object', 'required': ['basis', 'sale', 'sharing', 'cmpGpcSignal', 'causedByGpc'], 'properties': {'sale': {'enum': ['opted_out', 'not_opted_out', 'unknown'], 'type': 'string'}, 'basis': {'type': 'string', 'const': 'current_recorded_state'}, 'sharing': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/observation/properties/registration/properties/sale'}, 'causedByGpc': {'type': 'string', 'const': 'not_established'}, 'cmpGpcSignal': {'enum': ['received', 'not_received', 'unknown'], 'type': 'string'}}, 'additionalProperties': False}, 'sourceSha256': {'anyOf': [{'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, {'type': 'null'}]}, 'semanticProbe': {'enum': ['observed', 'unsupported', 'unavailable', 'not_ready', 'invalid', 'incomplete'], 'type': 'string'}, 'sessionSha256': {'anyOf': [{'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, {'type': 'null'}]}, 'acknowledgment': {'type': 'object', 'required': ['observed', 'captureComplete'], 'properties': {'observed': {'type': 'boolean'}, 'captureComplete': {'type': 'boolean'}}, 'additionalProperties': False}, 'limitationKeys': {'type': 'array', 'items': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'maxItems': 32}, 'contractVersion': {'type': 'string', 'const': 'certscore.gpc-bounded-observation.v1'}, 'documentUrlSha256': {'anyOf': [{'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, {'type': 'null'}]}, 'legalInterpretation': {'type': 'string', 'const': 'not_assessed'}}, 'additionalProperties': False}, 'scoreEffect': {'type': 'string', 'const': 'none'}, 'findingTitle': {'enum': ['GPC response', 'No observable GPC response'], 'type': 'string'}, 'contractVersion': {'enum': ['certscore.gpc-response-assessment.v1', 'certscore.gpc-response-assessment.v2', 'certscore.gpc-response-assessment.v3'], 'type': 'string'}, 'californiaPolicy': {'type': 'object', 'required': ['applied', 'deductionPoints'], 'properties': {'applied': {'type': 'boolean'}, 'deductionPoints': {'enum': [0, 15], 'type': 'number'}}, 'additionalProperties': False}, 'activityComparison': {'type': 'object', 'required': ['contractVersion', 'scanId', 'status', 'scope', 'durationMs', 'sourceHashes', 'activity', 'scoreEffect', 'causedByGpc'], 'properties': {'scope': {'type': 'string', 'const': 'matched_post_commit_request_window'}, 'scanId': {'type': 'string', 'maxLength': 200, 'minLength': 1}, 'status': {'type': 'string', 'const': 'measured'}, 'activity': {'type': 'object', 'required': ['advertisingMarketing', 'analyticsReplay'], 'properties': {'analyticsReplay': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/activityComparison/properties/activity/properties/advertisingMarketing'}, 'advertisingMarketing': {'type': 'object', 'required': ['baselineRequests', 'gpcRequests', 'baselineServices', 'gpcServices'], 'properties': {'gpcRequests': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/activityComparison/properties/activity/properties/advertisingMarketing/properties/baselineRequests'}, 'gpcServices': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/activityComparison/properties/activity/properties/advertisingMarketing/properties/baselineRequests'}, 'baselineRequests': {'type': 'integer', 'maximum': 5000, 'minimum': 0}, 'baselineServices': {'$ref': '#/properties/gpcResponse/anyOf/0/anyOf/1/anyOf/0/properties/activityComparison/properties/activity/properties/advertisingMarketing/properties/baselineRequests'}}, 'additionalProperties': False}}, 'additionalProperties': False}, 'durationMs': {'enum': [250, 500, 1000], 'type': 'number'}, 'causedByGpc': {'type': 'string', 'const': 'not_established'}, 'scoreEffect': {'type': 'string', 'const': 'none'}, 'sourceHashes': {'type': 'object', 'required': ['baseline', 'gpc'], 'properties': {'gpc': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}, 'baseline': {'type': 'string', 'pattern': '^[a-f0-9]{64}$'}}, 'additionalProperties': False}, 'contractVersion': {'type': 'string', 'const': 'certscore.gpc-activity-comparison.v1'}}, 'additionalProperties': False}, 'legalInterpretation': {'type': 'string', 'const': 'not_assessed'}}, 'additionalProperties': False}, {'type': 'null'}]}]}, {'type': 'null'}]}, 'scoreStatus': {'enum': ['provisional', 'final'], 'type': 'string'}, 'scoreVersion': {'type': ['string', 'null']}, 'scoreUpdatedAt': {'type': ['string', 'null']}, 'scanTimeSeconds': {'type': ['number', 'null']}, 'demoSubstitution': {'type': 'object', 'required': ['requestedUrl', 'effectiveUrl', 'reason', 'message'], 'properties': {'reason': {'type': 'string', 'const': 'iana_example_domain'}, 'message': {'type': 'string'}, 'effectiveUrl': {'type': 'string', 'format': 'uri'}, 'requestedUrl': {'type': 'string'}}, 'additionalProperties': False}, 'preConsentPreview': {'type': 'object', 'required': ['type', 'resultStage', 'final', 'sourceLane', 'generatedAt', 'runtimeCoverage', 'summary', 'cookies', 'trackers', 'truncated', 'mustContinuePolling', 'observationOnlyDisclaimer'], 'properties': {'type': {'type': 'string', 'const': 'certscore_pre_consent_preview'}, 'final': {'type': 'boolean', 'const': False}, 'cookies': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'domain', 'party', 'purpose', 'essentiality', 'observedAtMs'], 'properties': {'name': {'type': 'string', 'maxLength': 256, 'minLength': 1}, 'party': {'enum': ['first_party', 'third_party', 'unknown'], 'type': 'string'}, 'domain': {'anyOf': [{'type': 'string', 'maxLength': 253, 'minLength': 1}, {'type': 'null'}]}, 'purpose': {'enum': ['analytics', 'advertising', 'marketing', 'personalization', 'session_replay', 'consent_management', 'tag_management', 'infrastructure', 'security', 'performance_monitoring', 'customer_support', 'unknown'], 'type': 'string'}, 'essentiality': {'enum': ['essential', 'non_essential', 'unknown'], 'type': 'string'}, 'observedAtMs': {'anyOf': [{'type': 'integer', 'minimum': 0}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 20}, 'summary': {'type': 'object', 'required': ['cookieCount', 'trackerCount', 'thirdPartyRequestCount', 'vendorCount'], 'properties': {'cookieCount': {'type': 'integer', 'minimum': 0}, 'vendorCount': {'type': 'integer', 'minimum': 0}, 'trackerCount': {'type': 'integer', 'minimum': 0}, 'returnedCookieCount': {'type': 'integer', 'minimum': 0}, 'trackingVendorCount': {'type': 'integer', 'minimum': 0}, 'operationalVendorCount': {'type': 'integer', 'minimum': 0}, 'thirdPartyRequestCount': {'type': 'integer', 'minimum': 0}, 'returnedTrackingVendorCount': {'type': 'integer', 'minimum': 0}, 'returnedOperationalVendorCount': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, 'trackers': {'type': 'array', 'items': {'type': 'object', 'required': ['vendor', 'product', 'purpose', 'confidence', 'domains'], 'properties': {'vendor': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'domains': {'type': 'array', 'items': {'type': 'string', 'maxLength': 253, 'minLength': 1}, 'maxItems': 8}, 'product': {'anyOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'null'}]}, 'purpose': {'enum': ['analytics', 'advertising', 'marketing', 'personalization', 'session_replay', 'consent_management', 'tag_management', 'infrastructure', 'security', 'performance_monitoring', 'customer_support', 'unknown'], 'type': 'string'}, 'confidence': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 20}, 'resources': {'type': 'array', 'items': {'type': 'object', 'required': ['kind', 'vendor', 'product', 'purpose', 'confidence', 'domains', 'party', 'observedAtMs', 'requestCount'], 'properties': {'kind': {'enum': ['request', 'embed'], 'type': 'string'}, 'party': {'enum': ['first_party', 'third_party', 'mixed', 'unknown'], 'type': 'string'}, 'vendor': {'anyOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'null'}]}, 'domains': {'type': 'array', 'items': {'type': 'string', 'maxLength': 253, 'minLength': 1}, 'maxItems': 8}, 'product': {'anyOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'null'}]}, 'purpose': {'type': 'string', 'maxLength': 80, 'minLength': 1}, 'confidence': {'anyOf': [{'type': 'number', 'maximum': 1, 'minimum': 0}, {'type': 'null'}]}, 'observedAtMs': {'type': 'integer', 'minimum': 0}, 'requestCount': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 20}, 'truncated': {'type': 'object', 'required': ['cookies', 'trackers'], 'properties': {'cookies': {'type': 'boolean'}, 'trackers': {'type': 'boolean'}, 'resources': {'type': 'boolean'}, 'operationalVendors': {'type': 'boolean'}}, 'additionalProperties': False}, 'sourceLane': {'type': 'string', 'const': 'runtime_evidence'}, 'generatedAt': {'type': 'string', 'format': 'date-time'}, 'resultStage': {'type': 'string', 'const': 'preliminary'}, 'runtimeCoverage': {'type': 'object', 'required': ['status', 'limitationKeys'], 'properties': {'status': {'enum': ['usable', 'limited_partial', 'limited_none', 'not_applicable'], 'type': 'string'}, 'limitationKeys': {'type': 'array', 'items': {'type': 'string', 'maxLength': 120, 'minLength': 1}, 'maxItems': 16}}, 'additionalProperties': False}, 'operationalVendors': {'type': 'array', 'items': {'type': 'object', 'required': ['vendor', 'product', 'purpose', 'confidence', 'domains'], 'properties': {'vendor': {'type': 'string', 'maxLength': 160, 'minLength': 1}, 'domains': {'type': 'array', 'items': {'type': 'string', 'maxLength': 253, 'minLength': 1}, 'maxItems': 8}, 'product': {'anyOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'null'}]}, 'purpose': {'enum': ['analytics', 'advertising', 'marketing', 'personalization', 'session_replay', 'consent_management', 'tag_management', 'infrastructure', 'security', 'performance_monitoring', 'customer_support', 'unknown'], 'type': 'string'}, 'confidence': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 20}, 'mustContinuePolling': {'type': 'boolean', 'const': True}, 'observationOnlyDisclaimer': {'type': 'string', 'maxLength': 500, 'minLength': 1}}, 'additionalProperties': False}, 'resultDisposition': {'enum': ['no_go'], 'type': 'string'}, 'recommendedNextTool': {'anyOf': [{'enum': ['certscore_get_scan_status', 'certscore_get_scan_bundle'], 'type': 'string'}, {'type': 'null'}]}, 'postAcceptObservation': {'anyOf': [{'anyOf': [{'not': {}}, {'anyOf': [{'type': 'object', 'required': ['status', 'acceptanceExercised', 'observationCount', 'productionProjectable', 'evidenceDisposition', 'indeterminateReason', 'verdict', 'interpretation', 'observationStrategy', 'termination', 'completedAt', 'coverageLimitations', 'limitations'], 'properties': {'status': {'enum': ['confirmed_observation', 'confirmed_clean', 'unconfirmed', 'not_attempted', 'unsupported', 'aborted'], 'type': 'string'}, 'verdict': {'enum': ['eligible_nonessential_activity_observed_after_confirmed_acceptance', 'retained_consent_signal_contradiction_observed_after_confirmed_acceptance', 'no_eligible_nonessential_activity_observed_during_completed_window', 'no_confirmed_post_accept_verdict'], 'type': 'string'}, 'execution': {'type': 'object', 'required': ['policyVersion', 'status', 'clickCompleted', 'observationCompleted', 'consentConfirmed'], 'properties': {'status': {'enum': ['succeeded', 'succeeded_with_confirmation', 'limited', 'not_attempted', 'unsupported'], 'type': 'string'}, 'policyVersion': {'type': 'string', 'const': 'choice_path_execution.v1'}, 'clickCompleted': {'type': 'boolean'}, 'consentConfirmed': {'type': 'boolean'}, 'observationCompleted': {'type': 'boolean'}}, 'additionalProperties': False}, 'afterAction': {'type': 'object', 'required': ['policyVersion', 'action', 'activationStatus', 'stopReason', 'requestsDropped', 'requestCount', 'storageWriteCount', 'storageSnapshotRetained'], 'properties': {'action': {'enum': ['accept', 'reject'], 'type': 'string'}, 'stopReason': {'enum': ['window_elapsed', 'aborted', 'target_changed', 'click_uncertain'], 'type': 'string'}, 'requestCount': {'type': 'integer', 'minimum': 0}, 'policyVersion': {'enum': ['bounded_after_action_capture.v1', 'bounded_after_action_capture.v2'], 'type': 'string'}, 'requestsDropped': {'type': 'integer', 'minimum': 0}, 'activationStatus': {'enum': ['completed', 'uncertain'], 'type': 'string'}, 'storageWriteCount': {'type': 'integer', 'minimum': 0}, 'storageSnapshotRetained': {'type': 'boolean'}}, 'additionalProperties': False}, 'completedAt': {'type': ['string', 'null']}, 'limitations': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 24}, 'termination': {'type': 'object', 'required': ['kind', 'intentional', 'trigger'], 'properties': {'kind': {'enum': ['evidence_satisfied', 'window_elapsed', 'unavailable'], 'type': 'string'}, 'trigger': {'enum': ['non_essential_request_observed', 'non_essential_storage_write_observed', 'acceptance_signal_contradiction_observed', 'window_elapsed', 'accept_control_not_observed', 'accept_path_timeout', 'accept_observation_window_truncated', 'worker_failed', 'unavailable'], 'type': 'string'}, 'intentional': {'type': 'boolean'}}, 'additionalProperties': False}, 'interpretation': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'observationCount': {'type': 'integer', 'minimum': 0}, 'acceptanceExercised': {'type': 'boolean'}, 'coverageLimitations': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 24}, 'evidenceDisposition': {'enum': ['confirmed', 'indeterminate'], 'type': 'string'}, 'indeterminateReason': {'anyOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'null'}]}, 'observationStrategy': {'enum': ['stop_on_first_eligible_activity', 'not_applicable'], 'type': 'string'}, 'productionProjectable': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'null'}]}]}, {'type': 'null'}]}, 'recommendedNextAction': {'type': 'string'}, 'interpretationGuidance': {'type': 'object', 'required': ['scoreLabel', 'observableSignalsOnly', 'doNotInferUnobservedTechnologies', 'doNotInferLegalComplianceStatus', 'statement'], 'properties': {'statement': {'type': 'string'}, 'scoreLabel': {'type': 'string', 'const': 'CertScore score'}, 'observableSignalsOnly': {'type': 'boolean', 'const': True}, 'doNotInferLegalComplianceStatus': {'type': 'boolean', 'const': True}, 'doNotInferUnobservedTechnologies': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, 'postRefusalObservation': {'anyOf': [{'anyOf': [{'not': {}}, {'anyOf': [{'type': 'object', 'required': ['status', 'refusalExercised', 'observationCount', 'productionProjectable', 'evidenceDisposition', 'indeterminateReason', 'verdict', 'interpretation', 'observationStrategy', 'termination', 'completedAt', 'coverageLimitations', 'limitations'], 'properties': {'status': {'enum': ['confirmed_observation', 'confirmed_clean', 'unconfirmed', 'not_attempted', 'unsupported', 'aborted'], 'type': 'string'}, 'verdict': {'enum': ['eligible_nonessential_activity_observed_after_confirmed_refusal', 'retained_consent_signal_contradiction_observed_after_confirmed_refusal', 'no_eligible_nonessential_activity_observed_during_completed_window', 'no_confirmed_post_refusal_verdict'], 'type': 'string'}, 'execution': {'$ref': '#/properties/postAcceptObservation/anyOf/0/anyOf/1/anyOf/0/properties/execution'}, 'afterAction': {'$ref': '#/properties/postAcceptObservation/anyOf/0/anyOf/1/anyOf/0/properties/afterAction'}, 'completedAt': {'type': ['string', 'null']}, 'limitations': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 24}, 'termination': {'type': 'object', 'required': ['kind', 'intentional', 'trigger'], 'properties': {'kind': {'enum': ['evidence_satisfied', 'window_elapsed', 'unavailable'], 'type': 'string'}, 'trigger': {'enum': ['non_essential_request_observed', 'non_essential_storage_write_observed', 'refusal_signal_contradiction_observed', 'window_elapsed', 'reject_path_timeout', 'worker_failed', 'unavailable'], 'type': 'string'}, 'intentional': {'type': 'boolean'}}, 'additionalProperties': False}, 'interpretation': {'type': 'string', 'maxLength': 500, 'minLength': 1}, 'observationCount': {'type': 'integer', 'minimum': 0}, 'refusalExercised': {'type': 'boolean'}, 'coverageLimitations': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 24}, 'evidenceDisposition': {'enum': ['confirmed', 'indeterminate'], 'type': 'string'}, 'indeterminateReason': {'anyOf': [{'type': 'string', 'maxLength': 160, 'minLength': 1}, {'type': 'null'}]}, 'observationStrategy': {'enum': ['stop_on_first_eligible_activity', 'not_applicable'], 'type': 'string'}, 'productionProjectable': {'type': 'boolean'}}, 'additionalProperties': False}, {'type': 'null'}]}]}, {'type': 'null'}]}, 'observationOnlyDisclaimer': {'type': 'string'}}, 'additionalProperties': True}
已更改
certscore_get_scan_bundle
2026年10月1日 02:51
已更改
certscore_get_scan_bundle
2026年9月29日 03:00
已更改
certscore_get_scan_bundle
2026年9月27日 02:51
已更改
certscore_get_report_evidence_page
2026年9月27日 02:51
已更改
certscore_get_scan_status
2026年9月27日 02:51
已更改
certscore_scan_site
2026年9月27日 02:51
已更改
certscore_get_scan_bundle
2026年9月16日 02:43
已更改
certscore_get_scan_status
2026年9月16日 02:43
已更改
certscore_scan_site
2026年9月16日 02:43
已更改
certscore_scan_site
2026年9月15日 02:43
已添加
certscore_get_report_evidence_page
2026年9月14日 02:43
已更改
certscore_get_scan_bundle
2026年9月13日 02:43
已更改
certscore_get_scan_status
2026年9月13日 02:43
已更改
certscore_scan_site
2026年9月13日 02:43
已添加
certscore_get_scan_bundle
2026年9月11日 15:32
已添加
certscore_get_scan_status
2026年9月11日 15:32
已添加
certscore_scan_site
2026年9月11日 15:32