changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "$schema": "http://json-schema.org/draft-07/schema#",
+ "additionalProperties": false,
+ "properties": {
+ "categories": {
+ "description": "The five weighted categories and their 21 checks.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "checks": {
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "categoryId": {
+ "$ref": "#/properties/categories/items/properties/id"
+ },
+ "id": {
+ "type": "string"
+ },
+ "note": {
+ "description": "Short evidence, e.g. \"1,204 URLs\" or \"404 · missing\".",
+ "type": "string"
+ },
+ "state": {
+ "description": "pass, partial (counts as half) or fail; unknown means it could not be verified and is left out of the score.",
+ "enum": [
+ "pass",
+ "partial",
+ "fail",
+ "unknown"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "categoryId",
+ "state",
+ "note"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "id": {
+ "enum": [
+ "discovery",
+ "readable",
+ "structured",
+ "actions",
+ "trust"
+ ],
+ "type": "string"
+ },
+ "name": {
+ "type": "string"
+ },
+ "num": {
+ "description": "Display number, e.g. \"01\".",
+ "type": "string"
+ },
+ "passCount": {
+ "type": "number"
+ },
+ "score": {
+ "description": "Category score, 0-100.",
+ "type": "number"
+ },
+ "total": {
+ "type": "number"
+ },
+ "unknownCount": {
+ "description": "Checks that could not be verified, excluded from score.",
+ "type": "number"
+ },
+ "weight": {
+ "description": "Percent of the overall score; the five sum to 100.",
+ "type": "number"
+ },
+ "why": {
+ "description": "Why the category matters to AI agents.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "id",
+ "num",
+ "name",
+ "weight",
+ "why",
+ "score",
+ "passCount",
+ "total",
+ "unknownCount",
+ "checks"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "cleanUrl": {
+ "description": "Hostname and path scanned, e.g. stripe.com.",
+ "type": "string"
+ },
+ "limited": {
+ "description": "True when bot protection blocked so much that the headline score is not meaningful; the per-check breakdown still is.",
+ "type": "boolean"
+ },
+ "ok": {
+ "const": true,
+ "type": "boolean"
+ },
+ "projectedScore": {
+ "description": "The score the site would reach with the top fixes applied.",
+ "type": "number"
+ },
+ "protection": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "vendor": {
+ "description": "Bot protection detected, e.g. \"Cloudflare\".",
+ "type": "string"
+ },
+ "via": {
+ "description": "The signal it was detected by.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "vendor",
+ "via"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Bot protection on the homepage, or null when there is none."
+ },
+ "scannedAt": {
+ "description": "When the scan finished, Unix milliseconds.",
+ "type": "number"
+ },
+ "scannedUrl": {
+ "description": "The absolute URL that was fetched.",
+ "type": "string"
+ },
+ "score": {
+ "description": "Agent-readiness score, 0-100.",
+ "type": "number"
+ },
+ "topFixes": {
+ "description": "Fixes ranked by the points each would recover.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "body": {
+ "type": "string"
+ },
+ "checkId": {
+ "type": "string"
+ },
+ "impact": {
+ "description": "Points the overall score would gain if this check passed.",
+ "type": "number"
+ },
+ "rank": {
+ "type": "number"
+ },
+ "tag": {
+ "description": "Category and weight, e.g. \"ACTIONS & MCP · 30%\".",
+ "type": "string"
+ },
+ "title": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "checkId",
+ "rank",
+ "title",
+ "body",
+ "tag",
+ "impact"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "unverifiedCount": {
+ "description": "Checks that could not be verified, e.g. behind bot protection.",
+ "type": "number"
+ }
+ },
+ "required": [
+ "ok",
+ "cleanUrl",
+ "scannedUrl",
+ "score",
+ "projectedScore",
+ "categories",
+ "topFixes",
+ "unverifiedCount",
+ "limited",
+ "protection",
+ "scannedAt"
+ ],
+ "type": "object"
+}