{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://buy-before-sleep.kawaii-girl.com/public/data/agent-card-schema-v1.json",
  "title": "Agent Card (agent-card-1)",
  "type": "object",
  "required": [
    "schemaVersion", "agentId", "displayName", "agentVersion",
    "modelProvider", "modelName", "browserController", "submittedBy", "submittedAt"
  ],
  "additionalProperties": false,
  "properties": {
    "schemaVersion": { "const": "agent-card-1" },
    "agentId": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{2,63}$" },
    "displayName": { "type": "string", "minLength": 1, "maxLength": 120 },
    "organization": { "type": "string", "maxLength": 160 },
    "projectUrl": { "type": "string", "format": "uri", "maxLength": 2048 },
    "codeUrl": { "type": ["string", "null"], "format": "uri", "maxLength": 2048 },
    "license": { "type": ["string", "null"], "maxLength": 120 },
    "agentVersion": { "type": "string", "minLength": 1, "maxLength": 64 },
    "modelProvider": { "type": "string", "minLength": 1, "maxLength": 120 },
    "modelName": { "type": "string", "minLength": 1, "maxLength": 160 },
    "modelVersion": { "type": "string", "maxLength": 120 },
    "modelReleaseDate": { "type": ["string", "null"], "format": "date" },
    "browserController": { "type": "string", "minLength": 1, "maxLength": 120 },
    "visionEnabled": { "type": "boolean" },
    "accessibilityTreeUsed": { "type": "boolean" },
    "externalSearchEnabled": { "type": "boolean" },
    "networkPolicy": { "type": "string", "enum": ["closed-web", "open-web", "open-web-with-search"] },
    "humanIntervention": { "type": "string", "enum": ["none", "optional", "required"] },
    "promptDisclosure": { "type": "string", "enum": ["full", "partial", "none"] },
    "promptHash": { "type": "string", "pattern": "^[a-f0-9]{64}$" },
    "limitations": { "type": "array", "items": { "type": "string", "maxLength": 400 }, "maxItems": 20 },
    "conflictsOfInterest": { "type": "array", "items": { "type": "string", "maxLength": 400 }, "maxItems": 20 },
    "submittedBy": { "type": "string", "minLength": 1, "maxLength": 160 },
    "submittedAt": { "type": "string", "format": "date-time" }
  }
}
