{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://getzero.dev/contracts/zero.discovery.v1.schema.json",
  "title": "ZERO discovery manifest",
  "description": "Canonical machine-readable discovery manifest for ZERO agents and public crawlers.",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema_version",
    "schema",
    "name",
    "tagline",
    "homepage",
    "canonical_discovery",
    "agent_index",
    "agent_index_full",
    "skill",
    "skills_manifest",
    "open_core",
    "mcp",
    "public_contracts",
    "verification",
    "safety"
  ],
  "properties": {
    "schema_version": { "const": "zero.discovery.v1" },
    "schema": { "const": "https://getzero.dev/contracts/zero.discovery.v1.schema.json" },
    "name": { "const": "ZERO" },
    "tagline": {
      "type": "string",
      "minLength": 20,
      "pattern": "self-custodial onchain operations"
    },
    "homepage": { "const": "https://getzero.dev" },
    "canonical_discovery": { "const": "https://getzero.dev/.well-known/zero.json" },
    "agent_index": { "const": "https://getzero.dev/llms.txt" },
    "agent_index_full": { "const": "https://getzero.dev/llms-full.txt" },
    "skill": { "const": "https://getzero.dev/skill.md" },
    "skills_manifest": { "const": "https://getzero.dev/skills/manifest.json" },
    "open_core": {
      "type": "object",
      "additionalProperties": false,
      "required": ["open", "commercial"],
      "properties": {
        "open": {
          "type": "string",
          "minLength": 20
        },
        "commercial": {
          "type": "string",
          "minLength": 20,
          "pattern": "ZERO Intelligence API"
        }
      }
    },
    "mcp": {
      "type": "object",
      "additionalProperties": false,
      "required": ["public", "operator"],
      "properties": {
        "public": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "url",
            "transport",
            "auth",
            "boundary",
            "can_execute_orders",
            "can_mutate_runtime"
          ],
          "properties": {
            "url": { "const": "https://getzero.dev/oss/mcp" },
            "transport": { "const": "streamable-http" },
            "auth": { "const": "none" },
            "boundary": { "const": "public-read-only" },
            "can_execute_orders": { "const": false },
            "can_mutate_runtime": { "const": false }
          }
        },
        "operator": {
          "type": "object",
          "additionalProperties": false,
          "required": ["url", "transport", "auth", "boundary"],
          "properties": {
            "url": { "const": "https://getzero.dev/mcp" },
            "transport": { "const": "streamable-http" },
            "auth": { "const": "bearer_token" },
            "boundary": { "const": "scoped-operator" }
          }
        }
      }
    },
    "public_contracts": {
      "type": "object",
      "additionalProperties": false,
      "required": ["guide", "openapi", "examples", "schemas", "endpoints"],
      "properties": {
        "guide": { "const": "https://getzero.dev/contracts/public-operator.md" },
        "openapi": { "const": "https://getzero.dev/contracts/public-operator.openapi.yaml" },
        "examples": { "const": "https://getzero.dev/contracts/public-operator.examples.json" },
        "schemas": {
          "type": "object",
          "additionalProperties": false,
          "required": [
            "discovery",
            "mcp_tools",
            "mcp_refusal",
            "mcp_public_tool_results",
            "public_operators",
            "public_operator"
          ],
          "properties": {
            "discovery": { "const": "https://getzero.dev/contracts/zero.discovery.v1.schema.json" },
            "mcp_tools": { "const": "https://getzero.dev/contracts/zero.mcp.tools.v1.schema.json" },
            "mcp_refusal": { "const": "https://getzero.dev/contracts/zero.mcp.refusal.v1.schema.json" },
            "mcp_public_tool_results": { "const": "https://getzero.dev/contracts/zero.mcp.public_tool_results.v1.schema.json" },
            "public_operators": { "const": "https://getzero.dev/contracts/zero.public_operators.v1.schema.json" },
            "public_operator": { "const": "https://getzero.dev/contracts/zero.public_operator.v1.schema.json" }
          }
        },
        "endpoints": {
          "type": "array",
          "minItems": 5,
          "uniqueItems": true,
          "items": {
            "type": "string",
            "pattern": "^GET https://getzero\\.dev/(api/public/operators|api/public/operators/foundation|api/arena|api/arena/rewards|api/seasons)$"
          }
        }
      }
    },
    "verification": {
      "type": "object",
      "additionalProperties": false,
      "required": ["public_contracts", "public_mcp_workflow", "public_mcp_target", "checks"],
      "properties": {
        "public_contracts": { "const": "schema-validated in CI" },
        "public_mcp_workflow": { "const": "OSS MCP Smoke" },
        "public_mcp_target": { "const": "https://getzero.dev" },
        "checks": {
          "type": "array",
          "minItems": 4,
          "uniqueItems": true,
          "items": {
            "enum": [
              "tool_discovery",
              "read_only_annotations",
              "public_proof_calls",
              "mutation_refusal"
            ]
          }
        }
      }
    },
    "safety": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "paper_first",
        "public_mcp_read_only",
        "private_keys_in_public_payloads",
        "operator_live_mode_requires_explicit_authorization"
      ],
      "properties": {
        "paper_first": { "const": true },
        "public_mcp_read_only": { "const": true },
        "private_keys_in_public_payloads": { "const": false },
        "operator_live_mode_requires_explicit_authorization": { "const": true }
      }
    }
  }
}
