{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://webgcp.org/schemas/entity/v0.1.json",
  "$comment": "v0.1 stub schema for the per-row skill / entity payload. Full normative shape in prose at https://webgcp.org/spec/v0.1/#section-3-2. Validates top-level required fields only; v0.2 tightens. Reference instance schema: https://github.com/myparallel/catalog/blob/main/spec/pillar-skills.md (Step 4 promotion).",
  "title": "webGCP Entity (skill row) v0.1",
  "type": "object",
  "required": [
    "name",
    "description",
    "inputSchema",
    "invocation_url"
  ],
  "properties": {
    "name": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9_]*$",
      "description": "snake_case tool/skill name per WebMCP convention."
    },
    "description": {"type": "string"},
    "inputSchema": {
      "type": "object",
      "description": "JSON Schema (any draft) for the skill's invocation parameters."
    },
    "readOnlyHint": {"type": "boolean"},
    "invocation_url": {
      "type": "string",
      "format": "uri"
    },
    "pricing": {
      "type": "object",
      "description": "Optional Commerce-layer pricing info; see x402 spec."
    },
    "tier": {"type": "string"},
    "owner": {"type": "string"},
    "version": {
      "type": "string",
      "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$"
    },
    "quality_tier": {
      "enum": ["experimental", "beta", "production"]
    },
    "feedback_count": {
      "type": "integer",
      "minimum": 0
    },
    "last_invoked_at": {
      "type": "string",
      "format": "date-time"
    },
    "skill_feedback_aggregate_id": {"type": "string"}
  }
}
