{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "type": "object",
  "title": "ERC721",
  "description": "ERC721 NFT management actions including balance checking, minting, and transfers",
  "x-icon": "/skills/erc721/erc721.svg",
  "x-tags": [
    "Crypto",
    "NFT"
  ],
  "properties": {
    "enabled": {
      "type": "boolean",
      "title": "Enabled",
      "description": "Whether this skill is enabled",
      "default": false
    },
    "states": {
      "type": "object",
      "properties": {
        "erc721_get_balance": {
          "type": "string",
          "title": "Get NFT Balance",
          "enum": [
            "disabled",
            "public",
            "private"
          ],
          "x-enum-title": [
            "Disabled",
            "Agent Owner + All Users",
            "Agent Owner Only"
          ],
          "description": "Get the NFT balance for an address from an ERC721 contract",
          "default": "disabled"
        },
        "erc721_mint": {
          "type": "string",
          "title": "Mint NFT",
          "enum": [
            "disabled",
            "public",
            "private"
          ],
          "x-enum-title": [
            "Disabled",
            "Agent Owner + All Users",
            "Agent Owner Only"
          ],
          "description": "Mint an NFT to a specified destination address",
          "default": "disabled"
        },
        "erc721_transfer": {
          "type": "string",
          "title": "Transfer NFT",
          "enum": [
            "disabled",
            "public",
            "private"
          ],
          "x-enum-title": [
            "Disabled",
            "Agent Owner + All Users",
            "Agent Owner Only"
          ],
          "description": "Transfer an NFT to another address",
          "default": "disabled"
        }
      },
      "description": "States for each ERC721 skill (disabled, public, or private)"
    }
  },
  "required": [
    "states",
    "enabled"
  ],
  "additionalProperties": true
}
