{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://assetforgeindex.com/api/schema.json",
  "title": "Asset Forge Index tool record",
  "description": "One AI game-dev tool. Values are transcribed from vendor pages; null means the vendor page does not state it; the string 'unverified' means we could not confirm it.",
  "type": "object",
  "required": [
    "slug",
    "name",
    "url",
    "category",
    "license",
    "commercial_use",
    "source_urls",
    "last_checked",
    "verification"
  ],
  "properties": {
    "slug": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "url": {
      "type": "string",
      "format": "uri"
    },
    "category": {
      "enum": [
        "2d",
        "3d",
        "audio",
        "coding",
        "npc",
        "prompt-to-game",
        "localization"
      ]
    },
    "free_tier": {
      "type": [
        "string",
        "null"
      ]
    },
    "paid_price": {
      "type": [
        "object",
        "null"
      ],
      "properties": {
        "display": {
          "type": "string",
          "description": "Exactly as shown on the vendor pricing page"
        },
        "currency": {
          "type": "string"
        },
        "note": {
          "type": "string"
        }
      }
    },
    "cost_per_asset": {
      "type": [
        "string",
        "null"
      ]
    },
    "license": {
      "type": "object",
      "properties": {
        "free": {
          "type": [
            "string",
            "null"
          ]
        },
        "paid": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "commercial_use": {
      "type": "object",
      "properties": {
        "free": {
          "enum": [
            "yes",
            "yes_with_attribution",
            "conditional",
            "no",
            "conflicting",
            "unverified",
            "not_stated",
            "n/a"
          ]
        },
        "paid": {
          "enum": [
            "yes",
            "yes_with_attribution",
            "conditional",
            "no",
            "conflicting",
            "unverified",
            "not_stated",
            "n/a"
          ]
        },
        "basis": {
          "type": "string"
        }
      },
      "description": "Editorial one-word summary of the licence text. Always read license.* and source_urls before relying on it."
    },
    "attribution": {
      "type": "object",
      "properties": {
        "free": {
          "enum": [
            "not_required",
            "none_found",
            "required",
            "unverified",
            "n/a"
          ]
        },
        "paid": {
          "enum": [
            "not_required",
            "none_found",
            "required",
            "unverified",
            "n/a"
          ]
        },
        "basis": {
          "type": "string"
        }
      },
      "description": "Whether you must credit the vendor when you ship. not_required = an official page says so; none_found = no attribution requirement on the vendor pages listed in source_urls."
    },
    "export_engine": {
      "type": [
        "string",
        "null"
      ]
    },
    "api_mcp": {
      "type": [
        "string",
        "null"
      ]
    },
    "engines": {
      "type": "object",
      "description": "Vendor-stated engine integration. Levels: built_in, plugin, bridge, export, mentioned, not_stated. mcp = vendor offers an MCP server.",
      "properties": {
        "unity": {
          "enum": [
            "built_in",
            "plugin",
            "bridge",
            "export",
            "mentioned",
            "not_stated"
          ]
        },
        "unreal": {
          "enum": [
            "built_in",
            "plugin",
            "bridge",
            "export",
            "mentioned",
            "not_stated"
          ]
        },
        "godot": {
          "enum": [
            "built_in",
            "plugin",
            "bridge",
            "export",
            "mentioned",
            "not_stated"
          ]
        },
        "blender": {
          "enum": [
            "built_in",
            "plugin",
            "bridge",
            "export",
            "mentioned",
            "not_stated"
          ]
        },
        "mcp": {
          "type": "boolean"
        },
        "source": {
          "type": [
            "string",
            "null"
          ]
        },
        "basis": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "indemnity": {
      "type": "object",
      "properties": {
        "vendor_ip_indemnity": {
          "enum": [
            "offered",
            "offered_some_plans",
            "not_included",
            "none_found",
            "not_reviewed"
          ]
        },
        "you_indemnify_vendor": {
          "type": [
            "string",
            "null"
          ]
        },
        "source": {
          "type": [
            "string",
            "null"
          ]
        },
        "quote": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "affiliate": {
      "type": "object",
      "properties": {
        "status": {
          "enum": [
            "verified",
            "closed",
            "unverified"
          ]
        },
        "url": {
          "type": [
            "string",
            "null"
          ]
        },
        "terms": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "source_urls": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri"
      }
    },
    "last_checked": {
      "type": "string",
      "format": "date"
    },
    "verification": {
      "type": "object",
      "properties": {
        "price": {
          "enum": [
            "verified",
            "partial",
            "unverified"
          ]
        },
        "license": {
          "enum": [
            "verified",
            "partial",
            "unverified"
          ]
        }
      }
    },
    "notes": {
      "type": [
        "string",
        "null"
      ]
    },
    "changelog": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "date": {
            "type": "string",
            "format": "date"
          },
          "entry": {
            "type": "string"
          }
        }
      }
    },
    "links": {
      "type": "object"
    }
  }
}