# Minecraft Custom Mod Builder

## Links

- Product page URL: https://www.agentpmt.com/marketplace/minecraft-custom-mod-builder
- Product markdown URL: https://www.agentpmt.com/marketplace/minecraft-custom-mod-builder?format=agent-md
- Product JSON URL: https://www.agentpmt.com/marketplace/minecraft-custom-mod-builder?format=agent-json

## Overview

- Product ID: 69f94706113a9d7251fe31e2
- Vendor: Apoth3osis
- Type: function
- Unit type: request
- Price: 2500 credits
- Categories: Developer Tools, Video Game Design, 3D Asset Creation
- Generated at: 2026-05-25T22:10:28.801Z

### Page Description

Create your own custom Minecraft mods and add-ons — no coding required. Just describe what you want to add to the game, from a flaming sword or a glowing ore to a rideable mob, a custom skin pack, or a whole new dimension, and get back a ready-to-install file in seconds. Build for Minecraft Bedrock (.mcaddon) and Java with Fabric and NeoForge (.jar). Create items, weapons, tools, armor, blocks, ores, food, mobs, bosses, biomes, structures, recipes, loot tables, enchantments, trades, and special in-game behavior — each with its own custom texture from a color, your own artwork, or generated pixel art. Preview every icon before you install, and download editable source so you can keep building. Perfect for creators, streamers, server owners, and players who want their own Minecraft content fast.

### Agent Description

Deterministically generate and preview Minecraft Bedrock, Bedrock skin pack, Fabric, and NeoForge mod artifacts from structured specs. Does NOT call an LLM and does NOT accept natural-language prompts. Three non-obvious rules: (1) one ItemSpec = one in-game item — do NOT split a weapon idea across multiple items[] entries; damage/durability/tool/armor/food/enchantable/repairable/digger all attach to the same item. (2) Every visible asset requires a texture — supply color_hex (#RRGGBB rendered as a kind-shaped sprite for tools/weapons/blocks/entities; a flat colored square for every other kind), source_base64 (PNG/JPEG bytes), or source_file_id (user-uploaded File Manager image). ARMOR rejects color_hex (MINECRAFT_ARMOR_TEXTURE_REQUIRES_IMAGE) — armor pieces must ship a real PNG via source_base64 or source_file_id. (3) Tools that should mine every block need `tool.break_all_blocks: true`; without it, vanilla pickaxe/axe/shovel/hoe destructible-tag rules apply and the tool will only break a small subset of blocks. The validator now also rejects dangling references: drops/recipe.result_item/block_placer/entity_placer/loot_table.target/worldgen.block_id pointing at same-mod ids that aren't defined fail with MINECRAFT_SPEC_VALIDATION_FAILED (use a minecraft:* identifier or define the target feature). Java armor durability, enchantability, repair tag, and equip sound now derive from tool_tier (no more iron-tier diamond armor). Java tool attack speed is derived per tool_type so pickaxes/axes/shovels/hoes swing at vanilla rates. Features carrying `enabled_platforms: ["bedrock"]` (or fabric/neoforge) are filtered out of builds for other platforms. ALWAYS call get_instructions first if unsure about the shape — it includes 12 copy-pasteable recipes (including Recipe 3b for break_all_blocks and Recipe 4 for armor with image textures), the three non-obvious rules, and a common-mistakes table keyed to the stable error codes. Then create_mod_project, then render_preview_image to confirm the icon. Legacy target_platform=forge is rejected with a migration error.

## Details

### Details

Create your own custom Minecraft mods and add-ons — no coding required. Just describe what you want to add to the game, from a flaming sword or a glowing ore to a rideable mob, a custom skin pack, or a whole new dimension, and get back a ready-to-install file in seconds. Build for Minecraft Bedrock (.mcaddon) and Java with Fabric and NeoForge (.jar). Create items, weapons, tools, armor, blocks, ores, food, mobs, bosses, biomes, structures, recipes, loot tables, enchantments, trades, and special in-game behavior — each with its own custom texture from a color, your own artwork, or generated pixel art. Preview every icon before you install, and download editable source so you can keep building. Perfect for creators, streamers, server owners, and players who want their own Minecraft content fast.

### Actions

- `list_capabilities` (25 credits): Return supported platforms, pinned dependencies, feature kinds, event kinds, action kinds, output artifacts, unsupported categories, the v2 schema version, the major capability matrix, and the Bedrock component registry derived from the pinned Mojang Bedrock Samples archive.
- `validate_mod_project` (25 credits): Validate either a structured mod specification (spec mode) or a previously generated source archive (archive mode). Spec mode: provide target_platform, mod_id, mod_name, features (or skin_pack for skinpacks). Archive mode: provide source_archive_file_id. Returns a validation report with error codes and warnings; does NOT write artifacts.
- `create_mod_project` (25 credits): Generate mod artifacts and upload them to File Manager. Returns artifact file_ids, signed URLs, generated file manifests, validation results, install instructions, warnings, and build reports. Always follow this call with render_preview_image to confirm the icon before asking the user to install.
- `render_preview_image` (25 credits): Render an enlarged PNG preview for an item/block/entity texture and upload it to File Manager. Three modes: (1) spec preview — pass target_platform, mod_id, mod_name, features; (2) archive preview — pass source_archive_file_id; (3) direct image preview — pass preview_source_file_id. Returns a preview artifact with PNG file_id, signed URL, and image metadata.

### Use Cases

Create installable Minecraft Bedrock add-ons (.mcaddon) from a simple description, Build Java mods for Fabric and NeoForge and download the .jar, Design custom swords, pickaxes, tools, and armor with their own textures, Add new blocks, ores, and crops with world generation, Create custom mobs from passive animals to hostile bosses and tameable pets, Make Bedrock skin packs (.mcpack) for a fresh character look, Give items special behavior like a sword that sets enemies on fire, Add custom crafting recipes, loot tables, enchantments, and villager trades, Generate custom biomes, dimensions, and structures, Use a color, your own image, or generated pixel art for every texture, Preview textures and icons before installing, Get editable source files to keep customizing your mod

### Workflows Using This Tool

No public workflows currently reference this product.

### Related Content

No related content is currently linked to this product.

## Integration Details

### DynamicMCP

- Setup page URL: https://www.agentpmt.com/dynamic-mcp
- Claude setup guide: https://www.agentpmt.com/dynamic-mcp?platform=claude#videos
- ChatGPT setup guide: https://www.agentpmt.com/dynamic-mcp?platform=chatgpt#videos
- Cursor setup guide: https://www.agentpmt.com/dynamic-mcp?platform=cursor#videos
- Windsurf setup guide: https://www.agentpmt.com/dynamic-mcp?platform=windsurf#videos

Use the local router for command-based MCP clients. It forwards requests to `https://api.agentpmt.com/mcp` and does not execute tools locally.

```bash
npm install -g @agentpmt/mcp-router
agentpmt-setup
```

### REST API

The live page renders cURL, Python, JavaScript, and Node.js examples. Logged-in users see those examples prefilled with their own API and budget credentials.

- Purchase endpoint: https://api.agentpmt.com/products/purchase
- Authorization format: `Bearer <base64(apiKey:budgetKey)>`

```bash
curl -X POST "https://api.agentpmt.com/products/purchase" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer eW91ci1hcGkta2V5LWhlcmU6eW91ci1idWRnZXQta2V5LWhlcmU=" \
  -d '{
    "product_id": "69f94706113a9d7251fe31e2",
    "parameters": {
      "action": "list_capabilities"
    }
  }'
```

### Autonomous Agents

Autonomous agents can access this tool through AgentAddress credit balances or direct x402 payments. Use the Autonomous Agent API reference for endpoint shapes after choosing the access pattern below.

- Autonomous Agent API reference URL: https://www.agentpmt.com/docs/api-reference/autonomous-agents
- Autonomous Agent API reference markdown URL: https://www.agentpmt.com/docs/api-reference/autonomous-agents?format=agent-md
- Credit-Based Access Using AgentAddress: https://www.agentpmt.com/docs/autonomous-agents/credit-based-tool-usage-with-agentaddress
- AgentAddress is preferred for persistent file access, stored platform state, and maximum tool use ability across repeated calls.
- Direct x402 is for independent one-off tool calls that do not require shared files or stored platform state.
- Direct x402 public payments: USDC on Base, Arbitrum, Optimism, Polygon, and Avalanche.

### Schema

#### Parameters

- Schema type: actions

```json
{
  "actions": {
    "list_capabilities": {
      "description": "Return supported platforms, pinned dependencies, feature kinds, event kinds, action kinds, output artifacts, unsupported categories, the v2 schema version, the major capability matrix, and the Bedrock component registry derived from the pinned Mojang Bedrock Samples archive.",
      "properties": {
        "target_platform": {
          "type": "string",
          "description": "Target platform. 'bedrock' generates a .mcaddon for Minecraft Bedrock Edition. 'bedrock_skinpack' generates a .mcpack skin pack. 'fabric' / 'neoforge' generate Java mod source zips and built jars.",
          "required": false,
          "enum": [
            "bedrock",
            "bedrock_skinpack",
            "fabric",
            "neoforge"
          ]
        }
      }
    },
    "validate_mod_project": {
      "description": "Validate either a structured mod specification (spec mode) or a previously generated source archive (archive mode). Spec mode: provide target_platform, mod_id, mod_name, features (or skin_pack for skinpacks). Archive mode: provide source_archive_file_id. Returns a validation report with error codes and warnings; does NOT write artifacts.",
      "properties": {
        "target_platform": {
          "type": "string",
          "description": "Required for spec-mode validation. Optional in archive-mode (omit when passing source_archive_file_id). One of bedrock, bedrock_skinpack, fabric, neoforge.",
          "required": false,
          "enum": [
            "bedrock",
            "bedrock_skinpack",
            "fabric",
            "neoforge"
          ]
        },
        "mod_id": {
          "type": "string",
          "description": "Required for spec-mode validation (lowercase ^[a-z][a-z0-9_]{1,63}$). Optional in archive-mode.",
          "required": false
        },
        "mod_name": {
          "type": "string",
          "description": "Required for spec-mode validation. Optional in archive-mode.",
          "required": false
        },
        "minecraft_version": {
          "type": "string",
          "description": "Pinned Minecraft version. Omit to use the platform default.",
          "required": false
        },
        "description": {
          "type": "string",
          "description": "Short mod description shown in the pack metadata.",
          "required": false
        },
        "compatibility_mode": {
          "type": "string",
          "required": false,
          "default": "strict",
          "enum": [
            "strict",
            "allow_platform_passthrough"
          ]
        },
        "mod_metadata": {
          "type": "object",
          "description": "Optional ModMetadataSpec: version, license, authors, homepage_url, issue_tracker_url, credits, logo_texture, brand_color_hex (#RRGGBB), java_side, bedrock_experiments. See get_instructions for the full shape.",
          "required": false
        },
        "assets": {
          "type": "object",
          "description": "Optional AssetSetSpec containing pre-bound textures/sounds/particles/models/language entries: {textures: NamedAssetSpec[], sounds: NamedAssetSpec[], particles: NamedAssetSpec[], models: NamedAssetSpec[], language: {locale: {key: value}}}. See get_instructions for shape.",
          "required": false
        },
        "advanced_resources": {
          "type": "array",
          "description": "Escape-hatch list of AdvancedResourceSpec entries for files the structured surface does not model (raw JSON blobs, custom sound definitions, etc.). Each entry has {path, content_base64|content_text|source_file_id, content_type}.",
          "required": false,
          "items": {
            "type": "object"
          }
        },
        "features": {
          "type": "object",
          "description": "Structured feature set (items, blocks, entities, events, etc.). Required for spec-mode validation on non-skinpack targets.",
          "required": false,
          "properties": {
            "animation_controllers": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "AnimationControllerSpec object. See get_instructions for the full shape."
              }
            },
            "animations": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "AnimationSpec object. See get_instructions for the full shape."
              }
            },
            "biomes": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "BiomeSpec object. See get_instructions for the full shape."
              }
            },
            "blocks": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "block_id": {
                    "type": "string",
                    "description": "Lowercase identifier (^[a-z][a-z0-9_]{1,63}$); becomes the in-game block id.",
                    "required": true
                  },
                  "block_kind": {
                    "type": "string",
                    "description": "Block class. 'basic' = stone-like solid block. 'ore' = drops items via the drops field when mined with the correct tool. 'light' = emits full light (use light_level to override). 'interactive' = supports right-click handlers via events. 'crop' / 'plant' = grows over time via the crop preset. 'redstone' = signal-aware (use redstone preset). 'machine' = container that runs a recipe (pair with the matching MachineSpec). 'container' = inventory storage (pair with the matching StorageSpec).",
                    "enum": [
                      "basic",
                      "ore",
                      "light",
                      "interactive",
                      "crop",
                      "plant",
                      "redstone",
                      "machine",
                      "container"
                    ],
                    "default": "basic",
                    "required": false
                  },
                  "collision_box": {
                    "type": "object",
                    "description": "BoxSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "component_overrides": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "ComponentOverrideSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "crafting_table": {
                    "type": "boolean",
                    "default": false,
                    "required": false
                  },
                  "crop": {
                    "type": "object",
                    "description": "CropSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "custom_components": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "description": "Human-readable block name shown to players.",
                    "required": true
                  },
                  "drops": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "flammable": {
                    "type": "object",
                    "properties": {
                      "catch_chance_modifier": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100,
                        "default": 5,
                        "required": false
                      },
                      "destroy_chance_modifier": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100,
                        "default": 20,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "friction": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1,
                    "required": false
                  },
                  "hardness": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "required": false
                  },
                  "light_level": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 15,
                    "required": false
                  },
                  "map_color": {
                    "type": "string",
                    "required": false
                  },
                  "material_instances": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "object",
                      "description": "MaterialInstanceSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "placement_filter": {
                    "type": "object",
                    "description": "PlacementFilterSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "redstone": {
                    "type": "object",
                    "description": "RedstoneSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "resistance": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 10000,
                    "required": false
                  },
                  "selection_box": {
                    "type": "object",
                    "description": "BoxSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "texture": {
                    "type": "object",
                    "description": "Required visible-asset texture for the block face. See BindingTextureSpec.",
                    "properties": {
                      "color_hex": {
                        "type": "string",
                        "description": "Explicit #RRGGBB color the renderer expands into a kind-shaped procedural sprite. One of source_base64, source_file_id, or color_hex is required on every visible asset.",
                        "required": false
                      },
                      "source_base64": {
                        "type": "string",
                        "description": "Base64-encoded image bytes (PNG or JPEG). Mutually exclusive with source_file_id. Max image dimension 1024 px, max byte size 5 MB.",
                        "required": false
                      },
                      "source_file_id": {
                        "type": "string",
                        "description": "File Manager file_id for a user-uploaded image. The file is fetched budget-scoped, validated, and converted to PNG. Use this when a user drew or uploaded their own texture.",
                        "required": false
                      },
                      "pixelize_to": {
                        "type": "integer",
                        "description": "When set, the source image is nearest-neighbor downscaled to this square dimension on ingest before being baked into the mod. Allowed values: 16, 32, 64, 128. Use 16 for items and blocks, 64 for entities and skins. None (default) keeps the source image at its uploaded dimensions. Has no effect on color_hex bindings.",
                        "minimum": 16,
                        "maximum": 128,
                        "required": false
                      },
                      "palette_colors": {
                        "type": "integer",
                        "description": "When set, the (post-pixelize) image is quantized to this number of palette colors via Pillow's Fast Octree quantizer with dither off (median-cut is not supported on RGBA inputs in stock Pillow; Fast Octree is deterministic and dither-free). Recommend 8 for crisp Minecraft-style sprites. Range: 2-256. None disables quantization. Has no effect on color_hex bindings.",
                        "minimum": 2,
                        "maximum": 256,
                        "required": false
                      }
                    },
                    "required": true
                  },
                  "tick": {
                    "type": "object",
                    "properties": {
                      "interval_range": {
                        "type": "array",
                        "minItems": 2,
                        "maxItems": 2,
                        "items": {
                          "type": "integer"
                        },
                        "required": false
                      },
                      "looping": {
                        "type": "boolean",
                        "default": true,
                        "required": false
                      }
                    },
                    "required": false
                  }
                }
              }
            },
            "commands": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "actions": {
                    "type": "array",
                    "maxItems": 50,
                    "items": {
                      "type": "object",
                      "description": "ActionSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "command_id": {
                    "type": "string",
                    "required": true
                  },
                  "command_kind": {
                    "type": "string",
                    "enum": [
                      "simple_command",
                      "argument_command",
                      "function_command",
                      "admin_command"
                    ],
                    "required": true
                  },
                  "description": {
                    "type": "string",
                    "required": true
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "parameters": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    },
                    "required": false
                  },
                  "permission_level": {
                    "type": "string",
                    "enum": [
                      "any",
                      "op",
                      "admin"
                    ],
                    "default": "any",
                    "required": false
                  }
                }
              }
            },
            "damage_types": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "DamageTypeSpec object. See get_instructions for the full shape."
              }
            },
            "dimensions": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "DimensionSpec object. See get_instructions for the full shape."
              }
            },
            "effects": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "EffectSpec object. See get_instructions for the full shape."
              }
            },
            "enchantments": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "EnchantmentSpec object. See get_instructions for the full shape."
              }
            },
            "entities": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "ai_goals": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "EntityAIGoalSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "attack_damage": {
                    "type": "integer",
                    "description": "Melee damage on attack. Default derived from entity_kind.",
                    "minimum": 0,
                    "maximum": 512,
                    "required": false
                  },
                  "breedable": {
                    "type": "object",
                    "description": "EntityBreedableSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "component_overrides": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "ComponentOverrideSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "description": "Human-readable entity name shown in death messages and the spawn-egg tooltip.",
                    "required": true
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "entity_id": {
                    "type": "string",
                    "description": "Lowercase identifier (^[a-z][a-z0-9_]{1,63}$); becomes the in-game entity id.",
                    "required": true
                  },
                  "entity_kind": {
                    "type": "string",
                    "description": "Mob class. Controls AI defaults, spawn category, and renderer registration. 'passive_mob' = cow/sheep-like, never attacks. 'hostile_mob' = zombie-like, attacks players on sight. 'neutral_mob' = wolf-like, attacks when hurt. 'tameable_pet' = wolf-like with taming behavior (requires tameable preset). 'rideable_mount' = horse-like (requires rideable preset). 'projectile' = arrow-like flying entity. 'npc_like' = villager-like with trades (use interactions preset). 'boss_like' = ender-dragon-like with boss bar.",
                    "enum": [
                      "passive_mob",
                      "hostile_mob",
                      "neutral_mob",
                      "projectile",
                      "npc_like",
                      "tameable_pet",
                      "rideable_mount",
                      "boss_like"
                    ],
                    "required": true
                  },
                  "equipment": {
                    "type": "object",
                    "description": "EntityEquipmentSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "families": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "health": {
                    "type": "integer",
                    "description": "Maximum health points (each heart = 2 HP).",
                    "minimum": 1,
                    "maximum": 2048,
                    "default": 20,
                    "required": false
                  },
                  "interactions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "EntityInteractionSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "loot_table": {
                    "type": "string",
                    "required": false
                  },
                  "movement_speed": {
                    "type": "number",
                    "description": "Walking speed. Vanilla baseline is 0.25 for passive mobs.",
                    "minimum": 0,
                    "maximum": 5,
                    "default": 0.25,
                    "required": false
                  },
                  "render": {
                    "type": "object",
                    "description": "EntityRenderSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "rideable": {
                    "type": "object",
                    "description": "EntityRideableSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "spawn_biomes": {
                    "type": "array",
                    "description": "Biome ids (minecraft:plains, etc.) where the mob can naturally spawn.",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "spawn_weight": {
                    "type": "integer",
                    "description": "Relative spawn weight in eligible biomes.",
                    "minimum": 1,
                    "maximum": 1000,
                    "default": 10,
                    "required": false
                  },
                  "tameable": {
                    "type": "object",
                    "description": "EntityTameableSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "texture": {
                    "type": "object",
                    "description": "Required visible-asset texture for the entity model and its spawn-egg icon. Bedrock uses a 64x64 humanoid-style atlas by default; supply a 64x64 PNG via source_base64 or source_file_id to override.",
                    "properties": {
                      "color_hex": {
                        "type": "string",
                        "description": "Explicit #RRGGBB color the renderer expands into a kind-shaped procedural sprite. One of source_base64, source_file_id, or color_hex is required on every visible asset.",
                        "required": false
                      },
                      "source_base64": {
                        "type": "string",
                        "description": "Base64-encoded image bytes (PNG or JPEG). Mutually exclusive with source_file_id. Max image dimension 1024 px, max byte size 5 MB.",
                        "required": false
                      },
                      "source_file_id": {
                        "type": "string",
                        "description": "File Manager file_id for a user-uploaded image. The file is fetched budget-scoped, validated, and converted to PNG. Use this when a user drew or uploaded their own texture.",
                        "required": false
                      },
                      "pixelize_to": {
                        "type": "integer",
                        "description": "When set, the source image is nearest-neighbor downscaled to this square dimension on ingest before being baked into the mod. Allowed values: 16, 32, 64, 128. Use 16 for items and blocks, 64 for entities and skins. None (default) keeps the source image at its uploaded dimensions. Has no effect on color_hex bindings.",
                        "minimum": 16,
                        "maximum": 128,
                        "required": false
                      },
                      "palette_colors": {
                        "type": "integer",
                        "description": "When set, the (post-pixelize) image is quantized to this number of palette colors via Pillow's Fast Octree quantizer with dither off (median-cut is not supported on RGBA inputs in stock Pillow; Fast Octree is deterministic and dither-free). Recommend 8 for crisp Minecraft-style sprites. Range: 2-256. None disables quantization. Has no effect on color_hex bindings.",
                        "minimum": 2,
                        "maximum": 256,
                        "required": false
                      }
                    },
                    "required": true
                  }
                }
              }
            },
            "events": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "actions": {
                    "type": "array",
                    "description": "Required non-empty list of actions to execute when the event fires.",
                    "minItems": 1,
                    "maxItems": 50,
                    "items": {
                      "type": "object",
                      "description": "ActionSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "conditions": {
                    "type": "array",
                    "maxItems": 20,
                    "items": {
                      "type": "object",
                      "description": "ConditionSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "event_id": {
                    "type": "string",
                    "required": true
                  },
                  "event_kind": {
                    "type": "string",
                    "description": "Event trigger. Filter to a specific item/block/entity with conditions; emit behavior with actions. Example: pair 'on_item_hit_entity' with a {condition_kind:'held_item', identifier:'modid:flame_sword'} condition and a {action_kind:'set_on_fire', duration_ticks:100} action to make a flame sword.",
                    "enum": [
                      "on_item_use",
                      "on_item_hit_entity",
                      "on_item_mine_block",
                      "on_item_inventory_tick",
                      "on_entity_spawn",
                      "on_entity_death",
                      "on_entity_hurt",
                      "on_entity_tick",
                      "on_player_tick",
                      "on_player_join",
                      "on_player_respawn",
                      "on_block_break",
                      "on_block_interact",
                      "on_block_place",
                      "on_block_tick",
                      "on_projectile_hit",
                      "on_enter_biome",
                      "on_command",
                      "on_inventory_change",
                      "on_redstone_change",
                      "on_machine_recipe_complete"
                    ],
                    "required": true
                  }
                }
              }
            },
            "functions": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "FunctionSpec object. See get_instructions for the full shape."
              }
            },
            "game_rules": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "GameRuleSpec object. See get_instructions for the full shape."
              }
            },
            "items": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "allow_off_hand": {
                    "type": "boolean",
                    "required": false
                  },
                  "armor": {
                    "type": "object",
                    "description": "Armor preset (slot + protection). Required when item_kind='armor' unless wearable is set.",
                    "properties": {
                      "dyeable": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      },
                      "knockback_resistance": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 0,
                        "required": false
                      },
                      "protection": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100,
                        "default": 1,
                        "required": false
                      },
                      "slot": {
                        "type": "string",
                        "enum": [
                          "head",
                          "chest",
                          "legs",
                          "feet"
                        ],
                        "required": true
                      },
                      "toughness": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100,
                        "default": 0,
                        "required": false
                      },
                      "trim_supported": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "block_placer": {
                    "type": "string",
                    "description": "Block id or preset; required when item_kind='block_placer'.",
                    "required": false
                  },
                  "bundle_interaction": {
                    "type": "object",
                    "required": false
                  },
                  "component_overrides": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "ComponentOverrideSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "compostable": {
                    "type": "object",
                    "properties": {
                      "chance": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 0.3,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "cooldown": {
                    "type": "object",
                    "properties": {
                      "category": {
                        "type": "string",
                        "default": "generic",
                        "required": false
                      },
                      "cooldown_type": {
                        "type": "string",
                        "description": "Cooldown trigger. 'use' fires on right-click activation; 'attack' fires on swing. Accepts cooldown_type or type as input.",
                        "enum": [
                          "use",
                          "attack"
                        ],
                        "default": "use",
                        "required": false
                      },
                      "duration_seconds": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 3600,
                        "default": 1,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "custom_components": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "damage": {
                    "type": "integer",
                    "description": "Attack damage when held. Used by item_kind in {'tool','weapon'}; default derives from tool_tier.",
                    "minimum": 0,
                    "maximum": 231,
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "digger": {
                    "type": "object",
                    "properties": {
                      "destroy_speeds": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "description": "Nested object; see get_instructions for full shape."
                        },
                        "required": false
                      },
                      "use_efficiency": {
                        "type": "boolean",
                        "default": true,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "description": "Human-readable item name shown to players in inventory tooltips.",
                    "required": true
                  },
                  "durability": {
                    "type": "integer",
                    "description": "Use count before the item breaks. Used by tool/weapon/armor; default derives from tool_tier.",
                    "minimum": 1,
                    "maximum": 100000,
                    "required": false
                  },
                  "dyeable": {
                    "type": "object",
                    "description": "DyeableSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "enchantable": {
                    "type": "object",
                    "properties": {
                      "slot": {
                        "type": "string",
                        "default": "pickaxe",
                        "required": false
                      },
                      "value": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100,
                        "default": 10,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "entity_placer": {
                    "type": "string",
                    "description": "Entity id or preset (spawn-egg-like); required when item_kind='entity_placer'.",
                    "required": false
                  },
                  "fire_resistant": {
                    "type": "boolean",
                    "required": false
                  },
                  "foil": {
                    "type": "boolean",
                    "required": false
                  },
                  "food": {
                    "type": "object",
                    "description": "Food preset (nutrition, saturation, effects). Required when item_kind='food' unless nutrition is set.",
                    "properties": {
                      "can_always_eat": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      },
                      "effects": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "description": "Nested object; see get_instructions for full shape."
                        },
                        "required": false
                      },
                      "nutrition": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 20,
                        "default": 4,
                        "required": false
                      },
                      "remove_effects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "required": false
                      },
                      "saturation_modifier": {
                        "type": "number",
                        "default": 0.6,
                        "required": false
                      },
                      "use_modifiers": {
                        "type": "object",
                        "description": "UseModifierSpec object. See get_instructions for the full shape.",
                        "required": false
                      },
                      "using_converts_to": {
                        "type": "string",
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "fuel": {
                    "type": "object",
                    "properties": {
                      "duration_seconds": {
                        "type": "number",
                        "maximum": 3600,
                        "exclusiveMinimum": 0,
                        "default": 5,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "glint": {
                    "type": "boolean",
                    "required": false
                  },
                  "hover_text_color": {
                    "type": "string",
                    "required": false
                  },
                  "interact_button": {
                    "type": "string",
                    "required": false
                  },
                  "item_id": {
                    "type": "string",
                    "description": "Lowercase identifier (^[a-z][a-z0-9_]{1,63}$); becomes the in-game item id.",
                    "required": true
                  },
                  "item_kind": {
                    "type": "string",
                    "description": "Behavior class. Drives icon sprite, creative-tab placement, stack size, and which preset fields are required. 'weapon' = sword-like, lands in Equipment tab, requires tool_type in {'sword','custom'}. 'tool' = pickaxe/axe/shovel/hoe, lands in Equipment tab, requires tool_type. 'armor' = head/chest/legs/feet, lands in Equipment tab, requires armor preset. 'food' = eatable, requires food preset or nutrition. 'projectile' = arrow-like, requires projectile/shooter/throwable. 'block_placer' / 'entity_placer' = spawn-egg-like, requires matching preset. 'fuel' = furnace fuel. 'generic' = raw material only (sticks, ingots, dust); rejects any combat/tool/armor/food preset.",
                    "enum": [
                      "generic",
                      "tool",
                      "weapon",
                      "armor",
                      "food",
                      "fuel",
                      "projectile",
                      "block_placer",
                      "entity_placer"
                    ],
                    "default": "generic",
                    "required": false
                  },
                  "kinetic_weapon": {
                    "type": "object",
                    "required": false
                  },
                  "liquid_clipped": {
                    "type": "boolean",
                    "required": false
                  },
                  "max_stack_size": {
                    "type": "integer",
                    "description": "Inventory stack size. Defaults to 1 for tool/weapon/armor/projectile and 64 for generic/food.",
                    "minimum": 1,
                    "maximum": 64,
                    "required": false
                  },
                  "nutrition": {
                    "type": "integer",
                    "description": "Food hunger points restored on consumption. Required (with food preset) when item_kind='food'.",
                    "minimum": 0,
                    "maximum": 20,
                    "required": false
                  },
                  "piercing_weapon": {
                    "type": "object",
                    "required": false
                  },
                  "projectile": {
                    "type": "object",
                    "description": "Projectile preset. One of projectile/shooter/throwable required when item_kind='projectile'.",
                    "properties": {
                      "minimum_critical_power": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 10,
                        "required": false
                      },
                      "projectile_entity": {
                        "type": "string",
                        "required": true
                      }
                    },
                    "required": false
                  },
                  "rarity": {
                    "type": "object",
                    "description": "RaritySpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "record": {
                    "type": "object",
                    "required": false
                  },
                  "repairable": {
                    "type": "object",
                    "properties": {
                      "repair_items": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "description": "Nested object; see get_instructions for full shape."
                        },
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "saturation": {
                    "type": "number",
                    "description": "Food saturation modifier paired with nutrition.",
                    "minimum": 0,
                    "maximum": 20,
                    "required": false
                  },
                  "shooter": {
                    "type": "object",
                    "description": "Bow-like shooter preset that consumes ammunition items.",
                    "properties": {
                      "ammunition": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "required": false
                      },
                      "charge_on_draw": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      },
                      "max_draw_duration": {
                        "type": "number",
                        "maximum": 20,
                        "exclusiveMinimum": 0,
                        "required": false
                      },
                      "scale_power_by_draw_duration": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      },
                      "search_inventory": {
                        "type": "boolean",
                        "default": true,
                        "required": false
                      },
                      "use_in_creative": {
                        "type": "boolean",
                        "default": true,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "should_despawn": {
                    "type": "boolean",
                    "required": false
                  },
                  "stacked_by_data": {
                    "type": "boolean",
                    "required": false
                  },
                  "swing_sounds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "texture": {
                    "type": "object",
                    "description": "Required visible-asset texture. Supply one of source_base64, source_file_id, or color_hex. color_hex paired with item_kind+tool_type renders a kind-shaped procedural sprite (sword, pickaxe, axe, shovel, or hoe).",
                    "properties": {
                      "color_hex": {
                        "type": "string",
                        "description": "Explicit #RRGGBB color the renderer expands into a kind-shaped procedural sprite. One of source_base64, source_file_id, or color_hex is required on every visible asset.",
                        "required": false
                      },
                      "source_base64": {
                        "type": "string",
                        "description": "Base64-encoded image bytes (PNG or JPEG). Mutually exclusive with source_file_id. Max image dimension 1024 px, max byte size 5 MB.",
                        "required": false
                      },
                      "source_file_id": {
                        "type": "string",
                        "description": "File Manager file_id for a user-uploaded image. The file is fetched budget-scoped, validated, and converted to PNG. Use this when a user drew or uploaded their own texture.",
                        "required": false
                      },
                      "pixelize_to": {
                        "type": "integer",
                        "description": "When set, the source image is nearest-neighbor downscaled to this square dimension on ingest before being baked into the mod. Allowed values: 16, 32, 64, 128. Use 16 for items and blocks, 64 for entities and skins. None (default) keeps the source image at its uploaded dimensions. Has no effect on color_hex bindings.",
                        "minimum": 16,
                        "maximum": 128,
                        "required": false
                      },
                      "palette_colors": {
                        "type": "integer",
                        "description": "When set, the (post-pixelize) image is quantized to this number of palette colors via Pillow's Fast Octree quantizer with dither off (median-cut is not supported on RGBA inputs in stock Pillow; Fast Octree is deterministic and dither-free). Recommend 8 for crisp Minecraft-style sprites. Range: 2-256. None disables quantization. Has no effect on color_hex bindings.",
                        "minimum": 2,
                        "maximum": 256,
                        "required": false
                      }
                    },
                    "required": true
                  },
                  "throwable": {
                    "type": "object",
                    "description": "Throwable preset (snowball-like behavior).",
                    "properties": {
                      "do_swing_animation": {
                        "type": "boolean",
                        "default": true,
                        "required": false
                      },
                      "launch_power_scale": {
                        "type": "number",
                        "maximum": 10,
                        "exclusiveMinimum": 0,
                        "default": 1,
                        "required": false
                      },
                      "max_draw_duration": {
                        "type": "number",
                        "maximum": 20,
                        "exclusiveMinimum": 0,
                        "required": false
                      },
                      "max_launch_power": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 10,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "tool": {
                    "type": "object",
                    "description": "Explicit tool preset overriding tool_type/tool_tier defaults.",
                    "properties": {
                      "attack_damage": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 231,
                        "default": 4,
                        "required": false
                      },
                      "attack_speed": {
                        "type": "number",
                        "maximum": 20,
                        "exclusiveMinimum": 0,
                        "default": 1.6,
                        "required": false
                      },
                      "break_all_blocks": {
                        "type": "boolean",
                        "description": "When true, the tool can mine every block at full speed regardless of the vanilla pickaxe/axe/shovel/hoe destructible tag. Bedrock emits a Molang-true tag predicate on minecraft:digger; Java emits a tier that ignores TagBlockEntries restrictions. Combine with instabreak for a creative-mode super-tool.",
                        "default": false,
                        "required": false
                      },
                      "digger": {
                        "type": "object",
                        "properties": {
                          "destroy_speeds": {
                            "type": "object",
                            "description": "Nested object; see get_instructions for full shape.",
                            "required": false
                          },
                          "use_efficiency": {
                            "type": "object",
                            "description": "Nested object; see get_instructions for full shape.",
                            "required": false
                          }
                        },
                        "required": false
                      },
                      "enchantable": {
                        "type": "object",
                        "properties": {
                          "slot": {
                            "type": "object",
                            "description": "Nested object; see get_instructions for full shape.",
                            "required": false
                          },
                          "value": {
                            "type": "object",
                            "description": "Nested object; see get_instructions for full shape.",
                            "required": false
                          }
                        },
                        "required": false
                      },
                      "instabreak": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      },
                      "mining_speed": {
                        "type": "number",
                        "maximum": 2048,
                        "exclusiveMinimum": 0,
                        "default": 4,
                        "required": false
                      },
                      "repairable": {
                        "type": "object",
                        "properties": {
                          "repair_items": {
                            "type": "object",
                            "description": "Nested object; see get_instructions for full shape.",
                            "required": false
                          }
                        },
                        "required": false
                      },
                      "tier": {
                        "type": "string",
                        "enum": [
                          "wood",
                          "stone",
                          "iron",
                          "gold",
                          "diamond",
                          "netherite",
                          "custom"
                        ],
                        "default": "iron",
                        "required": false
                      },
                      "tool_type": {
                        "type": "string",
                        "enum": [
                          "pickaxe",
                          "axe",
                          "shovel",
                          "hoe",
                          "sword",
                          "custom"
                        ],
                        "required": true
                      }
                    },
                    "required": false
                  },
                  "tool_tier": {
                    "type": "string",
                    "description": "Tier preset. Determines default durability, attack damage, mining speed, enchantability, and repair material. Defaults to 'iron' when omitted on a tool/weapon. 'custom' opts out of all tier defaults.",
                    "enum": [
                      "wood",
                      "stone",
                      "iron",
                      "gold",
                      "diamond",
                      "netherite",
                      "custom"
                    ],
                    "required": false
                  },
                  "tool_type": {
                    "type": "string",
                    "description": "Tool kind. Controls the rendered icon sprite when color_hex is the texture source, the destructible-block tag, and the Equipment-tab sub-group. Required when item_kind='tool'. Use 'sword' for item_kind='weapon'. 'custom' opts out of the kind-specific defaults so the spec must declare its own damage/durability/digger.",
                    "enum": [
                      "pickaxe",
                      "axe",
                      "shovel",
                      "hoe",
                      "sword",
                      "custom"
                    ],
                    "required": false
                  },
                  "use_modifiers": {
                    "type": "object",
                    "description": "UseModifierSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "wearable": {
                    "type": "object",
                    "properties": {
                      "protection": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100,
                        "required": false
                      },
                      "slot": {
                        "type": "string",
                        "enum": [
                          "slot.armor.head",
                          "slot.armor.chest",
                          "slot.armor.legs",
                          "slot.armor.feet",
                          "slot.weapon.offhand"
                        ],
                        "default": "slot.armor.head",
                        "required": false
                      }
                    },
                    "required": false
                  }
                }
              }
            },
            "localizations": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "LocalizationSpec object. See get_instructions for the full shape."
              }
            },
            "loot_tables": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "conditions": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "required": false
                  },
                  "drops": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 64,
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "functions": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "loot_id": {
                    "type": "string",
                    "required": true
                  },
                  "target": {
                    "type": "string",
                    "required": true
                  }
                }
              }
            },
            "machines": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "MachineSpec object. See get_instructions for the full shape."
              }
            },
            "particles": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "ParticleSpec object. See get_instructions for the full shape."
              }
            },
            "recipes": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "addition_item": {
                    "type": "string",
                    "required": false
                  },
                  "base_item": {
                    "type": "string",
                    "required": false
                  },
                  "cooking_time_seconds": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 3600,
                    "required": false
                  },
                  "count": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 64,
                    "default": 1,
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "ingredients": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "input_item": {
                    "type": "string",
                    "required": false
                  },
                  "key": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "pattern": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 3,
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "recipe_id": {
                    "type": "string",
                    "required": true
                  },
                  "recipe_kind": {
                    "type": "string",
                    "description": "Recipe class. 'shaped' requires pattern+key. 'shapeless' requires ingredients. 'furnace' requires input_item+cooking_time_seconds. 'smithing_transform' / 'smithing_trim' require template_item+base_item+addition_item. 'brewing_mix' / 'brewing_container' are Bedrock-only.",
                    "enum": [
                      "shaped",
                      "shapeless",
                      "furnace",
                      "brewing_mix",
                      "brewing_container",
                      "smithing_transform",
                      "smithing_trim"
                    ],
                    "default": "shapeless",
                    "required": false
                  },
                  "result_item": {
                    "type": "string",
                    "required": true
                  },
                  "template_item": {
                    "type": "string",
                    "required": false
                  }
                }
              }
            },
            "render_controllers": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "RenderControllerSpec object. See get_instructions for the full shape."
              }
            },
            "scoreboards": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "ScoreboardSpec object. See get_instructions for the full shape."
              }
            },
            "sounds": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "SoundSpec object. See get_instructions for the full shape."
              }
            },
            "storage": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "StorageSpec object. See get_instructions for the full shape."
              }
            },
            "structures": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "StructureSpec object. See get_instructions for the full shape."
              }
            },
            "trades": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "TradeSpec object. See get_instructions for the full shape."
              }
            },
            "transportation": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "TransportationSpec object. See get_instructions for the full shape."
              }
            },
            "ui": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "UISpec object. See get_instructions for the full shape."
              }
            },
            "worldgen": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "biomes": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "block_id": {
                    "type": "string",
                    "description": "Block id to place. Required for ore/single_block/vegetation features.",
                    "required": false
                  },
                  "count_per_chunk": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 128,
                    "default": 8,
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "feature_id": {
                    "type": "string",
                    "required": true
                  },
                  "feature_kind": {
                    "type": "string",
                    "description": "Worldgen feature class. 'ore_feature' places veins of block_id inside target_block. 'single_block_feature' places a single block. 'vegetation_patch' places a plant patch. 'structure_placement' places a stored structure. 'custom_biome' / 'custom_dimension' register a referenced biome/dimension.",
                    "enum": [
                      "ore_feature",
                      "single_block_feature",
                      "vegetation_patch",
                      "structure_placement",
                      "custom_biome",
                      "custom_dimension"
                    ],
                    "required": true
                  },
                  "max_y": {
                    "type": "integer",
                    "minimum": -64,
                    "maximum": 320,
                    "default": 64,
                    "required": false
                  },
                  "min_y": {
                    "type": "integer",
                    "minimum": -64,
                    "maximum": 320,
                    "default": -64,
                    "required": false
                  },
                  "radius": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 32,
                    "default": 4,
                    "required": false
                  },
                  "source_file_id": {
                    "type": "string",
                    "required": false
                  },
                  "target_block": {
                    "type": "string",
                    "default": "minecraft:stone",
                    "required": false
                  },
                  "vein_size": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 64,
                    "default": 6,
                    "required": false
                  },
                  "vertical_range": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 64,
                    "default": 5,
                    "required": false
                  }
                }
              }
            }
          }
        },
        "skin_pack": {
          "type": "object",
          "description": "Skin pack definition. Required for spec-mode validation when target_platform='bedrock_skinpack'.",
          "required": false,
          "properties": {
            "display_name": {
              "type": "string",
              "required": false
            },
            "pack_id": {
              "type": "string",
              "required": false
            },
            "skins": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "display_name": {
                    "type": "string",
                    "required": true
                  },
                  "geometry": {
                    "type": "string",
                    "enum": [
                      "geometry.humanoid.custom",
                      "geometry.humanoid.customSlim"
                    ],
                    "default": "geometry.humanoid.custom",
                    "required": false
                  },
                  "localization_name": {
                    "type": "string",
                    "required": false
                  },
                  "skin_id": {
                    "type": "string",
                    "required": true
                  },
                  "skin_type": {
                    "type": "string",
                    "description": "Skin type. Accepts skin_type or type as input.",
                    "enum": [
                      "free",
                      "paid"
                    ],
                    "default": "free",
                    "required": false
                  },
                  "texture": {
                    "type": "object",
                    "description": "Required 64x64 PNG skin texture. Supply source_base64 or source_file_id for a user-drawn skin; color_hex renders a flat humanoid silhouette.",
                    "properties": {
                      "color_hex": {
                        "type": "string",
                        "description": "Explicit #RRGGBB color the renderer expands into a kind-shaped procedural sprite. One of source_base64, source_file_id, or color_hex is required on every visible asset.",
                        "required": false
                      },
                      "source_base64": {
                        "type": "string",
                        "description": "Base64-encoded image bytes (PNG or JPEG). Mutually exclusive with source_file_id. Max image dimension 1024 px, max byte size 5 MB.",
                        "required": false
                      },
                      "source_file_id": {
                        "type": "string",
                        "description": "File Manager file_id for a user-uploaded image. The file is fetched budget-scoped, validated, and converted to PNG. Use this when a user drew or uploaded their own texture.",
                        "required": false
                      },
                      "pixelize_to": {
                        "type": "integer",
                        "description": "When set, the source image is nearest-neighbor downscaled to this square dimension on ingest before being baked into the mod. Allowed values: 16, 32, 64, 128. Use 16 for items and blocks, 64 for entities and skins. None (default) keeps the source image at its uploaded dimensions. Has no effect on color_hex bindings.",
                        "minimum": 16,
                        "maximum": 128,
                        "required": false
                      },
                      "palette_colors": {
                        "type": "integer",
                        "description": "When set, the (post-pixelize) image is quantized to this number of palette colors via Pillow's Fast Octree quantizer with dither off (median-cut is not supported on RGBA inputs in stock Pillow; Fast Octree is deterministic and dither-free). Recommend 8 for crisp Minecraft-style sprites. Range: 2-256. None disables quantization. Has no effect on color_hex bindings.",
                        "minimum": 2,
                        "maximum": 256,
                        "required": false
                      }
                    },
                    "required": true
                  }
                }
              },
              "minItems": 1,
              "maxItems": 64
            }
          }
        },
        "allow_experimental_bedrock_features": {
          "type": "boolean",
          "description": "Allow Bedrock features that require experimental world toggles.",
          "required": false
        },
        "source_archive_file_id": {
          "type": "string",
          "description": "File Manager file_id for a previously generated source zip. Supply this for archive-mode validation (skips spec validation; replays the zip's contents).",
          "required": false
        }
      }
    },
    "create_mod_project": {
      "description": "Generate mod artifacts and upload them to File Manager. Returns artifact file_ids, signed URLs, generated file manifests, validation results, install instructions, warnings, and build reports. Always follow this call with render_preview_image to confirm the icon before asking the user to install.",
      "properties": {
        "target_platform": {
          "type": "string",
          "description": "Required. One of bedrock, bedrock_skinpack, fabric, neoforge. Legacy 'forge' is rejected with a migration error pointing to 'neoforge'.",
          "required": true,
          "enum": [
            "bedrock",
            "bedrock_skinpack",
            "fabric",
            "neoforge"
          ]
        },
        "mod_id": {
          "type": "string",
          "description": "Required. Lowercase ^[a-z][a-z0-9_]{1,63}$. Becomes the mod namespace in generated identifiers (e.g. <mod_id>:flame_sword).",
          "required": true
        },
        "mod_name": {
          "type": "string",
          "description": "Human-readable mod name shown in the pack list.",
          "required": true
        },
        "minecraft_version": {
          "type": "string",
          "description": "Pinned Minecraft version. Omit to use the platform default.",
          "required": false
        },
        "description": {
          "type": "string",
          "description": "Short mod description shown in the pack metadata.",
          "required": false
        },
        "compatibility_mode": {
          "type": "string",
          "required": false,
          "default": "strict",
          "enum": [
            "strict",
            "allow_platform_passthrough"
          ]
        },
        "mod_metadata": {
          "type": "object",
          "description": "Optional ModMetadataSpec: version, license, authors, homepage_url, issue_tracker_url, credits, logo_texture, brand_color_hex (#RRGGBB), java_side, bedrock_experiments. See get_instructions for the full shape.",
          "required": false
        },
        "assets": {
          "type": "object",
          "description": "Optional AssetSetSpec containing pre-bound textures/sounds/particles/models/language entries: {textures: NamedAssetSpec[], sounds: NamedAssetSpec[], particles: NamedAssetSpec[], models: NamedAssetSpec[], language: {locale: {key: value}}}. See get_instructions for shape.",
          "required": false
        },
        "advanced_resources": {
          "type": "array",
          "description": "Escape-hatch list of AdvancedResourceSpec entries for files the structured surface does not model (raw JSON blobs, custom sound definitions, etc.). Each entry has {path, content_base64|content_text|source_file_id, content_type}.",
          "required": false,
          "items": {
            "type": "object"
          }
        },
        "features": {
          "type": "object",
          "description": "Structured feature set. Required when target_platform is bedrock/fabric/neoforge. Omit when target_platform='bedrock_skinpack' (use skin_pack instead).",
          "required": false,
          "properties": {
            "animation_controllers": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "AnimationControllerSpec object. See get_instructions for the full shape."
              }
            },
            "animations": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "AnimationSpec object. See get_instructions for the full shape."
              }
            },
            "biomes": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "BiomeSpec object. See get_instructions for the full shape."
              }
            },
            "blocks": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "block_id": {
                    "type": "string",
                    "description": "Lowercase identifier (^[a-z][a-z0-9_]{1,63}$); becomes the in-game block id.",
                    "required": true
                  },
                  "block_kind": {
                    "type": "string",
                    "description": "Block class. 'basic' = stone-like solid block. 'ore' = drops items via the drops field when mined with the correct tool. 'light' = emits full light (use light_level to override). 'interactive' = supports right-click handlers via events. 'crop' / 'plant' = grows over time via the crop preset. 'redstone' = signal-aware (use redstone preset). 'machine' = container that runs a recipe (pair with the matching MachineSpec). 'container' = inventory storage (pair with the matching StorageSpec).",
                    "enum": [
                      "basic",
                      "ore",
                      "light",
                      "interactive",
                      "crop",
                      "plant",
                      "redstone",
                      "machine",
                      "container"
                    ],
                    "default": "basic",
                    "required": false
                  },
                  "collision_box": {
                    "type": "object",
                    "description": "BoxSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "component_overrides": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "ComponentOverrideSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "crafting_table": {
                    "type": "boolean",
                    "default": false,
                    "required": false
                  },
                  "crop": {
                    "type": "object",
                    "description": "CropSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "custom_components": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "description": "Human-readable block name shown to players.",
                    "required": true
                  },
                  "drops": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "flammable": {
                    "type": "object",
                    "properties": {
                      "catch_chance_modifier": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100,
                        "default": 5,
                        "required": false
                      },
                      "destroy_chance_modifier": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100,
                        "default": 20,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "friction": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1,
                    "required": false
                  },
                  "hardness": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "required": false
                  },
                  "light_level": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 15,
                    "required": false
                  },
                  "map_color": {
                    "type": "string",
                    "required": false
                  },
                  "material_instances": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "object",
                      "description": "MaterialInstanceSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "placement_filter": {
                    "type": "object",
                    "description": "PlacementFilterSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "redstone": {
                    "type": "object",
                    "description": "RedstoneSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "resistance": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 10000,
                    "required": false
                  },
                  "selection_box": {
                    "type": "object",
                    "description": "BoxSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "texture": {
                    "type": "object",
                    "description": "Required visible-asset texture for the block face. See BindingTextureSpec.",
                    "properties": {
                      "color_hex": {
                        "type": "string",
                        "description": "Explicit #RRGGBB color the renderer expands into a kind-shaped procedural sprite. One of source_base64, source_file_id, or color_hex is required on every visible asset.",
                        "required": false
                      },
                      "source_base64": {
                        "type": "string",
                        "description": "Base64-encoded image bytes (PNG or JPEG). Mutually exclusive with source_file_id. Max image dimension 1024 px, max byte size 5 MB.",
                        "required": false
                      },
                      "source_file_id": {
                        "type": "string",
                        "description": "File Manager file_id for a user-uploaded image. The file is fetched budget-scoped, validated, and converted to PNG. Use this when a user drew or uploaded their own texture.",
                        "required": false
                      },
                      "pixelize_to": {
                        "type": "integer",
                        "description": "When set, the source image is nearest-neighbor downscaled to this square dimension on ingest before being baked into the mod. Allowed values: 16, 32, 64, 128. Use 16 for items and blocks, 64 for entities and skins. None (default) keeps the source image at its uploaded dimensions. Has no effect on color_hex bindings.",
                        "minimum": 16,
                        "maximum": 128,
                        "required": false
                      },
                      "palette_colors": {
                        "type": "integer",
                        "description": "When set, the (post-pixelize) image is quantized to this number of palette colors via Pillow's Fast Octree quantizer with dither off (median-cut is not supported on RGBA inputs in stock Pillow; Fast Octree is deterministic and dither-free). Recommend 8 for crisp Minecraft-style sprites. Range: 2-256. None disables quantization. Has no effect on color_hex bindings.",
                        "minimum": 2,
                        "maximum": 256,
                        "required": false
                      }
                    },
                    "required": true
                  },
                  "tick": {
                    "type": "object",
                    "properties": {
                      "interval_range": {
                        "type": "array",
                        "minItems": 2,
                        "maxItems": 2,
                        "items": {
                          "type": "integer"
                        },
                        "required": false
                      },
                      "looping": {
                        "type": "boolean",
                        "default": true,
                        "required": false
                      }
                    },
                    "required": false
                  }
                }
              }
            },
            "commands": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "actions": {
                    "type": "array",
                    "maxItems": 50,
                    "items": {
                      "type": "object",
                      "description": "ActionSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "command_id": {
                    "type": "string",
                    "required": true
                  },
                  "command_kind": {
                    "type": "string",
                    "enum": [
                      "simple_command",
                      "argument_command",
                      "function_command",
                      "admin_command"
                    ],
                    "required": true
                  },
                  "description": {
                    "type": "string",
                    "required": true
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "parameters": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    },
                    "required": false
                  },
                  "permission_level": {
                    "type": "string",
                    "enum": [
                      "any",
                      "op",
                      "admin"
                    ],
                    "default": "any",
                    "required": false
                  }
                }
              }
            },
            "damage_types": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "DamageTypeSpec object. See get_instructions for the full shape."
              }
            },
            "dimensions": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "DimensionSpec object. See get_instructions for the full shape."
              }
            },
            "effects": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "EffectSpec object. See get_instructions for the full shape."
              }
            },
            "enchantments": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "EnchantmentSpec object. See get_instructions for the full shape."
              }
            },
            "entities": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "ai_goals": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "EntityAIGoalSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "attack_damage": {
                    "type": "integer",
                    "description": "Melee damage on attack. Default derived from entity_kind.",
                    "minimum": 0,
                    "maximum": 512,
                    "required": false
                  },
                  "breedable": {
                    "type": "object",
                    "description": "EntityBreedableSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "component_overrides": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "ComponentOverrideSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "description": "Human-readable entity name shown in death messages and the spawn-egg tooltip.",
                    "required": true
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "entity_id": {
                    "type": "string",
                    "description": "Lowercase identifier (^[a-z][a-z0-9_]{1,63}$); becomes the in-game entity id.",
                    "required": true
                  },
                  "entity_kind": {
                    "type": "string",
                    "description": "Mob class. Controls AI defaults, spawn category, and renderer registration. 'passive_mob' = cow/sheep-like, never attacks. 'hostile_mob' = zombie-like, attacks players on sight. 'neutral_mob' = wolf-like, attacks when hurt. 'tameable_pet' = wolf-like with taming behavior (requires tameable preset). 'rideable_mount' = horse-like (requires rideable preset). 'projectile' = arrow-like flying entity. 'npc_like' = villager-like with trades (use interactions preset). 'boss_like' = ender-dragon-like with boss bar.",
                    "enum": [
                      "passive_mob",
                      "hostile_mob",
                      "neutral_mob",
                      "projectile",
                      "npc_like",
                      "tameable_pet",
                      "rideable_mount",
                      "boss_like"
                    ],
                    "required": true
                  },
                  "equipment": {
                    "type": "object",
                    "description": "EntityEquipmentSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "families": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "health": {
                    "type": "integer",
                    "description": "Maximum health points (each heart = 2 HP).",
                    "minimum": 1,
                    "maximum": 2048,
                    "default": 20,
                    "required": false
                  },
                  "interactions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "EntityInteractionSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "loot_table": {
                    "type": "string",
                    "required": false
                  },
                  "movement_speed": {
                    "type": "number",
                    "description": "Walking speed. Vanilla baseline is 0.25 for passive mobs.",
                    "minimum": 0,
                    "maximum": 5,
                    "default": 0.25,
                    "required": false
                  },
                  "render": {
                    "type": "object",
                    "description": "EntityRenderSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "rideable": {
                    "type": "object",
                    "description": "EntityRideableSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "spawn_biomes": {
                    "type": "array",
                    "description": "Biome ids (minecraft:plains, etc.) where the mob can naturally spawn.",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "spawn_weight": {
                    "type": "integer",
                    "description": "Relative spawn weight in eligible biomes.",
                    "minimum": 1,
                    "maximum": 1000,
                    "default": 10,
                    "required": false
                  },
                  "tameable": {
                    "type": "object",
                    "description": "EntityTameableSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "texture": {
                    "type": "object",
                    "description": "Required visible-asset texture for the entity model and its spawn-egg icon. Bedrock uses a 64x64 humanoid-style atlas by default; supply a 64x64 PNG via source_base64 or source_file_id to override.",
                    "properties": {
                      "color_hex": {
                        "type": "string",
                        "description": "Explicit #RRGGBB color the renderer expands into a kind-shaped procedural sprite. One of source_base64, source_file_id, or color_hex is required on every visible asset.",
                        "required": false
                      },
                      "source_base64": {
                        "type": "string",
                        "description": "Base64-encoded image bytes (PNG or JPEG). Mutually exclusive with source_file_id. Max image dimension 1024 px, max byte size 5 MB.",
                        "required": false
                      },
                      "source_file_id": {
                        "type": "string",
                        "description": "File Manager file_id for a user-uploaded image. The file is fetched budget-scoped, validated, and converted to PNG. Use this when a user drew or uploaded their own texture.",
                        "required": false
                      },
                      "pixelize_to": {
                        "type": "integer",
                        "description": "When set, the source image is nearest-neighbor downscaled to this square dimension on ingest before being baked into the mod. Allowed values: 16, 32, 64, 128. Use 16 for items and blocks, 64 for entities and skins. None (default) keeps the source image at its uploaded dimensions. Has no effect on color_hex bindings.",
                        "minimum": 16,
                        "maximum": 128,
                        "required": false
                      },
                      "palette_colors": {
                        "type": "integer",
                        "description": "When set, the (post-pixelize) image is quantized to this number of palette colors via Pillow's Fast Octree quantizer with dither off (median-cut is not supported on RGBA inputs in stock Pillow; Fast Octree is deterministic and dither-free). Recommend 8 for crisp Minecraft-style sprites. Range: 2-256. None disables quantization. Has no effect on color_hex bindings.",
                        "minimum": 2,
                        "maximum": 256,
                        "required": false
                      }
                    },
                    "required": true
                  }
                }
              }
            },
            "events": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "actions": {
                    "type": "array",
                    "description": "Required non-empty list of actions to execute when the event fires.",
                    "minItems": 1,
                    "maxItems": 50,
                    "items": {
                      "type": "object",
                      "description": "ActionSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "conditions": {
                    "type": "array",
                    "maxItems": 20,
                    "items": {
                      "type": "object",
                      "description": "ConditionSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "event_id": {
                    "type": "string",
                    "required": true
                  },
                  "event_kind": {
                    "type": "string",
                    "description": "Event trigger. Filter to a specific item/block/entity with conditions; emit behavior with actions. Example: pair 'on_item_hit_entity' with a {condition_kind:'held_item', identifier:'modid:flame_sword'} condition and a {action_kind:'set_on_fire', duration_ticks:100} action to make a flame sword.",
                    "enum": [
                      "on_item_use",
                      "on_item_hit_entity",
                      "on_item_mine_block",
                      "on_item_inventory_tick",
                      "on_entity_spawn",
                      "on_entity_death",
                      "on_entity_hurt",
                      "on_entity_tick",
                      "on_player_tick",
                      "on_player_join",
                      "on_player_respawn",
                      "on_block_break",
                      "on_block_interact",
                      "on_block_place",
                      "on_block_tick",
                      "on_projectile_hit",
                      "on_enter_biome",
                      "on_command",
                      "on_inventory_change",
                      "on_redstone_change",
                      "on_machine_recipe_complete"
                    ],
                    "required": true
                  }
                }
              }
            },
            "functions": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "FunctionSpec object. See get_instructions for the full shape."
              }
            },
            "game_rules": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "GameRuleSpec object. See get_instructions for the full shape."
              }
            },
            "items": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "allow_off_hand": {
                    "type": "boolean",
                    "required": false
                  },
                  "armor": {
                    "type": "object",
                    "description": "Armor preset (slot + protection). Required when item_kind='armor' unless wearable is set.",
                    "properties": {
                      "dyeable": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      },
                      "knockback_resistance": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 0,
                        "required": false
                      },
                      "protection": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100,
                        "default": 1,
                        "required": false
                      },
                      "slot": {
                        "type": "string",
                        "enum": [
                          "head",
                          "chest",
                          "legs",
                          "feet"
                        ],
                        "required": true
                      },
                      "toughness": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100,
                        "default": 0,
                        "required": false
                      },
                      "trim_supported": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "block_placer": {
                    "type": "string",
                    "description": "Block id or preset; required when item_kind='block_placer'.",
                    "required": false
                  },
                  "bundle_interaction": {
                    "type": "object",
                    "required": false
                  },
                  "component_overrides": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "ComponentOverrideSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "compostable": {
                    "type": "object",
                    "properties": {
                      "chance": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 0.3,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "cooldown": {
                    "type": "object",
                    "properties": {
                      "category": {
                        "type": "string",
                        "default": "generic",
                        "required": false
                      },
                      "cooldown_type": {
                        "type": "string",
                        "description": "Cooldown trigger. 'use' fires on right-click activation; 'attack' fires on swing. Accepts cooldown_type or type as input.",
                        "enum": [
                          "use",
                          "attack"
                        ],
                        "default": "use",
                        "required": false
                      },
                      "duration_seconds": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 3600,
                        "default": 1,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "custom_components": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "damage": {
                    "type": "integer",
                    "description": "Attack damage when held. Used by item_kind in {'tool','weapon'}; default derives from tool_tier.",
                    "minimum": 0,
                    "maximum": 231,
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "digger": {
                    "type": "object",
                    "properties": {
                      "destroy_speeds": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "description": "Nested object; see get_instructions for full shape."
                        },
                        "required": false
                      },
                      "use_efficiency": {
                        "type": "boolean",
                        "default": true,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "description": "Human-readable item name shown to players in inventory tooltips.",
                    "required": true
                  },
                  "durability": {
                    "type": "integer",
                    "description": "Use count before the item breaks. Used by tool/weapon/armor; default derives from tool_tier.",
                    "minimum": 1,
                    "maximum": 100000,
                    "required": false
                  },
                  "dyeable": {
                    "type": "object",
                    "description": "DyeableSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "enchantable": {
                    "type": "object",
                    "properties": {
                      "slot": {
                        "type": "string",
                        "default": "pickaxe",
                        "required": false
                      },
                      "value": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100,
                        "default": 10,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "entity_placer": {
                    "type": "string",
                    "description": "Entity id or preset (spawn-egg-like); required when item_kind='entity_placer'.",
                    "required": false
                  },
                  "fire_resistant": {
                    "type": "boolean",
                    "required": false
                  },
                  "foil": {
                    "type": "boolean",
                    "required": false
                  },
                  "food": {
                    "type": "object",
                    "description": "Food preset (nutrition, saturation, effects). Required when item_kind='food' unless nutrition is set.",
                    "properties": {
                      "can_always_eat": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      },
                      "effects": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "description": "Nested object; see get_instructions for full shape."
                        },
                        "required": false
                      },
                      "nutrition": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 20,
                        "default": 4,
                        "required": false
                      },
                      "remove_effects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "required": false
                      },
                      "saturation_modifier": {
                        "type": "number",
                        "default": 0.6,
                        "required": false
                      },
                      "use_modifiers": {
                        "type": "object",
                        "description": "UseModifierSpec object. See get_instructions for the full shape.",
                        "required": false
                      },
                      "using_converts_to": {
                        "type": "string",
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "fuel": {
                    "type": "object",
                    "properties": {
                      "duration_seconds": {
                        "type": "number",
                        "maximum": 3600,
                        "exclusiveMinimum": 0,
                        "default": 5,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "glint": {
                    "type": "boolean",
                    "required": false
                  },
                  "hover_text_color": {
                    "type": "string",
                    "required": false
                  },
                  "interact_button": {
                    "type": "string",
                    "required": false
                  },
                  "item_id": {
                    "type": "string",
                    "description": "Lowercase identifier (^[a-z][a-z0-9_]{1,63}$); becomes the in-game item id.",
                    "required": true
                  },
                  "item_kind": {
                    "type": "string",
                    "description": "Behavior class. Drives icon sprite, creative-tab placement, stack size, and which preset fields are required. 'weapon' = sword-like, lands in Equipment tab, requires tool_type in {'sword','custom'}. 'tool' = pickaxe/axe/shovel/hoe, lands in Equipment tab, requires tool_type. 'armor' = head/chest/legs/feet, lands in Equipment tab, requires armor preset. 'food' = eatable, requires food preset or nutrition. 'projectile' = arrow-like, requires projectile/shooter/throwable. 'block_placer' / 'entity_placer' = spawn-egg-like, requires matching preset. 'fuel' = furnace fuel. 'generic' = raw material only (sticks, ingots, dust); rejects any combat/tool/armor/food preset.",
                    "enum": [
                      "generic",
                      "tool",
                      "weapon",
                      "armor",
                      "food",
                      "fuel",
                      "projectile",
                      "block_placer",
                      "entity_placer"
                    ],
                    "default": "generic",
                    "required": false
                  },
                  "kinetic_weapon": {
                    "type": "object",
                    "required": false
                  },
                  "liquid_clipped": {
                    "type": "boolean",
                    "required": false
                  },
                  "max_stack_size": {
                    "type": "integer",
                    "description": "Inventory stack size. Defaults to 1 for tool/weapon/armor/projectile and 64 for generic/food.",
                    "minimum": 1,
                    "maximum": 64,
                    "required": false
                  },
                  "nutrition": {
                    "type": "integer",
                    "description": "Food hunger points restored on consumption. Required (with food preset) when item_kind='food'.",
                    "minimum": 0,
                    "maximum": 20,
                    "required": false
                  },
                  "piercing_weapon": {
                    "type": "object",
                    "required": false
                  },
                  "projectile": {
                    "type": "object",
                    "description": "Projectile preset. One of projectile/shooter/throwable required when item_kind='projectile'.",
                    "properties": {
                      "minimum_critical_power": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 10,
                        "required": false
                      },
                      "projectile_entity": {
                        "type": "string",
                        "required": true
                      }
                    },
                    "required": false
                  },
                  "rarity": {
                    "type": "object",
                    "description": "RaritySpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "record": {
                    "type": "object",
                    "required": false
                  },
                  "repairable": {
                    "type": "object",
                    "properties": {
                      "repair_items": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "description": "Nested object; see get_instructions for full shape."
                        },
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "saturation": {
                    "type": "number",
                    "description": "Food saturation modifier paired with nutrition.",
                    "minimum": 0,
                    "maximum": 20,
                    "required": false
                  },
                  "shooter": {
                    "type": "object",
                    "description": "Bow-like shooter preset that consumes ammunition items.",
                    "properties": {
                      "ammunition": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "required": false
                      },
                      "charge_on_draw": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      },
                      "max_draw_duration": {
                        "type": "number",
                        "maximum": 20,
                        "exclusiveMinimum": 0,
                        "required": false
                      },
                      "scale_power_by_draw_duration": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      },
                      "search_inventory": {
                        "type": "boolean",
                        "default": true,
                        "required": false
                      },
                      "use_in_creative": {
                        "type": "boolean",
                        "default": true,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "should_despawn": {
                    "type": "boolean",
                    "required": false
                  },
                  "stacked_by_data": {
                    "type": "boolean",
                    "required": false
                  },
                  "swing_sounds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "texture": {
                    "type": "object",
                    "description": "Required visible-asset texture. Supply one of source_base64, source_file_id, or color_hex. color_hex paired with item_kind+tool_type renders a kind-shaped procedural sprite (sword, pickaxe, axe, shovel, or hoe).",
                    "properties": {
                      "color_hex": {
                        "type": "string",
                        "description": "Explicit #RRGGBB color the renderer expands into a kind-shaped procedural sprite. One of source_base64, source_file_id, or color_hex is required on every visible asset.",
                        "required": false
                      },
                      "source_base64": {
                        "type": "string",
                        "description": "Base64-encoded image bytes (PNG or JPEG). Mutually exclusive with source_file_id. Max image dimension 1024 px, max byte size 5 MB.",
                        "required": false
                      },
                      "source_file_id": {
                        "type": "string",
                        "description": "File Manager file_id for a user-uploaded image. The file is fetched budget-scoped, validated, and converted to PNG. Use this when a user drew or uploaded their own texture.",
                        "required": false
                      },
                      "pixelize_to": {
                        "type": "integer",
                        "description": "When set, the source image is nearest-neighbor downscaled to this square dimension on ingest before being baked into the mod. Allowed values: 16, 32, 64, 128. Use 16 for items and blocks, 64 for entities and skins. None (default) keeps the source image at its uploaded dimensions. Has no effect on color_hex bindings.",
                        "minimum": 16,
                        "maximum": 128,
                        "required": false
                      },
                      "palette_colors": {
                        "type": "integer",
                        "description": "When set, the (post-pixelize) image is quantized to this number of palette colors via Pillow's Fast Octree quantizer with dither off (median-cut is not supported on RGBA inputs in stock Pillow; Fast Octree is deterministic and dither-free). Recommend 8 for crisp Minecraft-style sprites. Range: 2-256. None disables quantization. Has no effect on color_hex bindings.",
                        "minimum": 2,
                        "maximum": 256,
                        "required": false
                      }
                    },
                    "required": true
                  },
                  "throwable": {
                    "type": "object",
                    "description": "Throwable preset (snowball-like behavior).",
                    "properties": {
                      "do_swing_animation": {
                        "type": "boolean",
                        "default": true,
                        "required": false
                      },
                      "launch_power_scale": {
                        "type": "number",
                        "maximum": 10,
                        "exclusiveMinimum": 0,
                        "default": 1,
                        "required": false
                      },
                      "max_draw_duration": {
                        "type": "number",
                        "maximum": 20,
                        "exclusiveMinimum": 0,
                        "required": false
                      },
                      "max_launch_power": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 10,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "tool": {
                    "type": "object",
                    "description": "Explicit tool preset overriding tool_type/tool_tier defaults.",
                    "properties": {
                      "attack_damage": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 231,
                        "default": 4,
                        "required": false
                      },
                      "attack_speed": {
                        "type": "number",
                        "maximum": 20,
                        "exclusiveMinimum": 0,
                        "default": 1.6,
                        "required": false
                      },
                      "break_all_blocks": {
                        "type": "boolean",
                        "description": "When true, the tool can mine every block at full speed regardless of the vanilla pickaxe/axe/shovel/hoe destructible tag. Bedrock emits a Molang-true tag predicate on minecraft:digger; Java emits a tier that ignores TagBlockEntries restrictions. Combine with instabreak for a creative-mode super-tool.",
                        "default": false,
                        "required": false
                      },
                      "digger": {
                        "type": "object",
                        "properties": {
                          "destroy_speeds": {
                            "type": "object",
                            "description": "Nested object; see get_instructions for full shape.",
                            "required": false
                          },
                          "use_efficiency": {
                            "type": "object",
                            "description": "Nested object; see get_instructions for full shape.",
                            "required": false
                          }
                        },
                        "required": false
                      },
                      "enchantable": {
                        "type": "object",
                        "properties": {
                          "slot": {
                            "type": "object",
                            "description": "Nested object; see get_instructions for full shape.",
                            "required": false
                          },
                          "value": {
                            "type": "object",
                            "description": "Nested object; see get_instructions for full shape.",
                            "required": false
                          }
                        },
                        "required": false
                      },
                      "instabreak": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      },
                      "mining_speed": {
                        "type": "number",
                        "maximum": 2048,
                        "exclusiveMinimum": 0,
                        "default": 4,
                        "required": false
                      },
                      "repairable": {
                        "type": "object",
                        "properties": {
                          "repair_items": {
                            "type": "object",
                            "description": "Nested object; see get_instructions for full shape.",
                            "required": false
                          }
                        },
                        "required": false
                      },
                      "tier": {
                        "type": "string",
                        "enum": [
                          "wood",
                          "stone",
                          "iron",
                          "gold",
                          "diamond",
                          "netherite",
                          "custom"
                        ],
                        "default": "iron",
                        "required": false
                      },
                      "tool_type": {
                        "type": "string",
                        "enum": [
                          "pickaxe",
                          "axe",
                          "shovel",
                          "hoe",
                          "sword",
                          "custom"
                        ],
                        "required": true
                      }
                    },
                    "required": false
                  },
                  "tool_tier": {
                    "type": "string",
                    "description": "Tier preset. Determines default durability, attack damage, mining speed, enchantability, and repair material. Defaults to 'iron' when omitted on a tool/weapon. 'custom' opts out of all tier defaults.",
                    "enum": [
                      "wood",
                      "stone",
                      "iron",
                      "gold",
                      "diamond",
                      "netherite",
                      "custom"
                    ],
                    "required": false
                  },
                  "tool_type": {
                    "type": "string",
                    "description": "Tool kind. Controls the rendered icon sprite when color_hex is the texture source, the destructible-block tag, and the Equipment-tab sub-group. Required when item_kind='tool'. Use 'sword' for item_kind='weapon'. 'custom' opts out of the kind-specific defaults so the spec must declare its own damage/durability/digger.",
                    "enum": [
                      "pickaxe",
                      "axe",
                      "shovel",
                      "hoe",
                      "sword",
                      "custom"
                    ],
                    "required": false
                  },
                  "use_modifiers": {
                    "type": "object",
                    "description": "UseModifierSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "wearable": {
                    "type": "object",
                    "properties": {
                      "protection": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100,
                        "required": false
                      },
                      "slot": {
                        "type": "string",
                        "enum": [
                          "slot.armor.head",
                          "slot.armor.chest",
                          "slot.armor.legs",
                          "slot.armor.feet",
                          "slot.weapon.offhand"
                        ],
                        "default": "slot.armor.head",
                        "required": false
                      }
                    },
                    "required": false
                  }
                }
              }
            },
            "localizations": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "LocalizationSpec object. See get_instructions for the full shape."
              }
            },
            "loot_tables": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "conditions": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "required": false
                  },
                  "drops": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 64,
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "functions": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "loot_id": {
                    "type": "string",
                    "required": true
                  },
                  "target": {
                    "type": "string",
                    "required": true
                  }
                }
              }
            },
            "machines": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "MachineSpec object. See get_instructions for the full shape."
              }
            },
            "particles": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "ParticleSpec object. See get_instructions for the full shape."
              }
            },
            "recipes": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "addition_item": {
                    "type": "string",
                    "required": false
                  },
                  "base_item": {
                    "type": "string",
                    "required": false
                  },
                  "cooking_time_seconds": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 3600,
                    "required": false
                  },
                  "count": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 64,
                    "default": 1,
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "ingredients": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "input_item": {
                    "type": "string",
                    "required": false
                  },
                  "key": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "pattern": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 3,
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "recipe_id": {
                    "type": "string",
                    "required": true
                  },
                  "recipe_kind": {
                    "type": "string",
                    "description": "Recipe class. 'shaped' requires pattern+key. 'shapeless' requires ingredients. 'furnace' requires input_item+cooking_time_seconds. 'smithing_transform' / 'smithing_trim' require template_item+base_item+addition_item. 'brewing_mix' / 'brewing_container' are Bedrock-only.",
                    "enum": [
                      "shaped",
                      "shapeless",
                      "furnace",
                      "brewing_mix",
                      "brewing_container",
                      "smithing_transform",
                      "smithing_trim"
                    ],
                    "default": "shapeless",
                    "required": false
                  },
                  "result_item": {
                    "type": "string",
                    "required": true
                  },
                  "template_item": {
                    "type": "string",
                    "required": false
                  }
                }
              }
            },
            "render_controllers": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "RenderControllerSpec object. See get_instructions for the full shape."
              }
            },
            "scoreboards": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "ScoreboardSpec object. See get_instructions for the full shape."
              }
            },
            "sounds": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "SoundSpec object. See get_instructions for the full shape."
              }
            },
            "storage": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "StorageSpec object. See get_instructions for the full shape."
              }
            },
            "structures": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "StructureSpec object. See get_instructions for the full shape."
              }
            },
            "trades": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "TradeSpec object. See get_instructions for the full shape."
              }
            },
            "transportation": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "TransportationSpec object. See get_instructions for the full shape."
              }
            },
            "ui": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "UISpec object. See get_instructions for the full shape."
              }
            },
            "worldgen": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "biomes": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "block_id": {
                    "type": "string",
                    "description": "Block id to place. Required for ore/single_block/vegetation features.",
                    "required": false
                  },
                  "count_per_chunk": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 128,
                    "default": 8,
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "feature_id": {
                    "type": "string",
                    "required": true
                  },
                  "feature_kind": {
                    "type": "string",
                    "description": "Worldgen feature class. 'ore_feature' places veins of block_id inside target_block. 'single_block_feature' places a single block. 'vegetation_patch' places a plant patch. 'structure_placement' places a stored structure. 'custom_biome' / 'custom_dimension' register a referenced biome/dimension.",
                    "enum": [
                      "ore_feature",
                      "single_block_feature",
                      "vegetation_patch",
                      "structure_placement",
                      "custom_biome",
                      "custom_dimension"
                    ],
                    "required": true
                  },
                  "max_y": {
                    "type": "integer",
                    "minimum": -64,
                    "maximum": 320,
                    "default": 64,
                    "required": false
                  },
                  "min_y": {
                    "type": "integer",
                    "minimum": -64,
                    "maximum": 320,
                    "default": -64,
                    "required": false
                  },
                  "radius": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 32,
                    "default": 4,
                    "required": false
                  },
                  "source_file_id": {
                    "type": "string",
                    "required": false
                  },
                  "target_block": {
                    "type": "string",
                    "default": "minecraft:stone",
                    "required": false
                  },
                  "vein_size": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 64,
                    "default": 6,
                    "required": false
                  },
                  "vertical_range": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 64,
                    "default": 5,
                    "required": false
                  }
                }
              }
            }
          }
        },
        "skin_pack": {
          "type": "object",
          "description": "Skin pack definition. Required when target_platform='bedrock_skinpack'.",
          "required": false,
          "properties": {
            "display_name": {
              "type": "string",
              "required": false
            },
            "pack_id": {
              "type": "string",
              "required": false
            },
            "skins": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "display_name": {
                    "type": "string",
                    "required": true
                  },
                  "geometry": {
                    "type": "string",
                    "enum": [
                      "geometry.humanoid.custom",
                      "geometry.humanoid.customSlim"
                    ],
                    "default": "geometry.humanoid.custom",
                    "required": false
                  },
                  "localization_name": {
                    "type": "string",
                    "required": false
                  },
                  "skin_id": {
                    "type": "string",
                    "required": true
                  },
                  "skin_type": {
                    "type": "string",
                    "description": "Skin type. Accepts skin_type or type as input.",
                    "enum": [
                      "free",
                      "paid"
                    ],
                    "default": "free",
                    "required": false
                  },
                  "texture": {
                    "type": "object",
                    "description": "Required 64x64 PNG skin texture. Supply source_base64 or source_file_id for a user-drawn skin; color_hex renders a flat humanoid silhouette.",
                    "properties": {
                      "color_hex": {
                        "type": "string",
                        "description": "Explicit #RRGGBB color the renderer expands into a kind-shaped procedural sprite. One of source_base64, source_file_id, or color_hex is required on every visible asset.",
                        "required": false
                      },
                      "source_base64": {
                        "type": "string",
                        "description": "Base64-encoded image bytes (PNG or JPEG). Mutually exclusive with source_file_id. Max image dimension 1024 px, max byte size 5 MB.",
                        "required": false
                      },
                      "source_file_id": {
                        "type": "string",
                        "description": "File Manager file_id for a user-uploaded image. The file is fetched budget-scoped, validated, and converted to PNG. Use this when a user drew or uploaded their own texture.",
                        "required": false
                      },
                      "pixelize_to": {
                        "type": "integer",
                        "description": "When set, the source image is nearest-neighbor downscaled to this square dimension on ingest before being baked into the mod. Allowed values: 16, 32, 64, 128. Use 16 for items and blocks, 64 for entities and skins. None (default) keeps the source image at its uploaded dimensions. Has no effect on color_hex bindings.",
                        "minimum": 16,
                        "maximum": 128,
                        "required": false
                      },
                      "palette_colors": {
                        "type": "integer",
                        "description": "When set, the (post-pixelize) image is quantized to this number of palette colors via Pillow's Fast Octree quantizer with dither off (median-cut is not supported on RGBA inputs in stock Pillow; Fast Octree is deterministic and dither-free). Recommend 8 for crisp Minecraft-style sprites. Range: 2-256. None disables quantization. Has no effect on color_hex bindings.",
                        "minimum": 2,
                        "maximum": 256,
                        "required": false
                      }
                    },
                    "required": true
                  }
                }
              },
              "minItems": 1,
              "maxItems": 64
            }
          }
        },
        "output_mode": {
          "type": "string",
          "description": "Artifact mode: 'installable' (.mcaddon/.mcpack/.jar only), 'source' (zip only), or 'both'.",
          "required": false,
          "default": "both",
          "enum": [
            "installable",
            "source",
            "both"
          ]
        },
        "build_jar": {
          "type": "boolean",
          "description": "Fabric/NeoForge only; build the jar offline when true.",
          "required": false,
          "default": true
        },
        "validate_output": {
          "type": "boolean",
          "description": "Run platform validation (Bedrock Creator Tools) where available.",
          "required": false,
          "default": true
        },
        "include_file_preview": {
          "type": "boolean",
          "description": "Include capped previews for small generated text files in the response.",
          "required": false
        },
        "allow_experimental_bedrock_features": {
          "type": "boolean",
          "description": "Allow Bedrock features that require experimental world toggles.",
          "required": false
        }
      }
    },
    "render_preview_image": {
      "description": "Render an enlarged PNG preview for an item/block/entity texture and upload it to File Manager. Three modes: (1) spec preview — pass target_platform, mod_id, mod_name, features; (2) archive preview — pass source_archive_file_id; (3) direct image preview — pass preview_source_file_id. Returns a preview artifact with PNG file_id, signed URL, and image metadata.",
      "properties": {
        "target_platform": {
          "type": "string",
          "description": "Required for spec-mode preview. Optional when passing source_archive_file_id or preview_source_file_id.",
          "required": false,
          "enum": [
            "bedrock",
            "bedrock_skinpack",
            "fabric",
            "neoforge"
          ]
        },
        "mod_id": {
          "type": "string",
          "description": "Required for spec-mode preview; optional for archive-mode (defaults to the archive's mod_id).",
          "required": false
        },
        "mod_name": {
          "type": "string",
          "description": "Required for spec-mode preview.",
          "required": false
        },
        "minecraft_version": {
          "type": "string",
          "description": "Pinned Minecraft version. Omit to use the platform default.",
          "required": false
        },
        "description": {
          "type": "string",
          "description": "Short mod description shown in the pack metadata.",
          "required": false
        },
        "compatibility_mode": {
          "type": "string",
          "required": false,
          "default": "strict",
          "enum": [
            "strict",
            "allow_platform_passthrough"
          ]
        },
        "mod_metadata": {
          "type": "object",
          "description": "Optional ModMetadataSpec: version, license, authors, homepage_url, issue_tracker_url, credits, logo_texture, brand_color_hex (#RRGGBB), java_side, bedrock_experiments. See get_instructions for the full shape.",
          "required": false
        },
        "assets": {
          "type": "object",
          "description": "Optional AssetSetSpec containing pre-bound textures/sounds/particles/models/language entries: {textures: NamedAssetSpec[], sounds: NamedAssetSpec[], particles: NamedAssetSpec[], models: NamedAssetSpec[], language: {locale: {key: value}}}. See get_instructions for shape.",
          "required": false
        },
        "advanced_resources": {
          "type": "array",
          "description": "Escape-hatch list of AdvancedResourceSpec entries for files the structured surface does not model (raw JSON blobs, custom sound definitions, etc.). Each entry has {path, content_base64|content_text|source_file_id, content_type}.",
          "required": false,
          "items": {
            "type": "object"
          }
        },
        "features": {
          "type": "object",
          "description": "Structured feature set (items, blocks, entities, events, etc.). Required for create_mod_project on non-skinpack targets.",
          "required": false,
          "properties": {
            "animation_controllers": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "AnimationControllerSpec object. See get_instructions for the full shape."
              }
            },
            "animations": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "AnimationSpec object. See get_instructions for the full shape."
              }
            },
            "biomes": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "BiomeSpec object. See get_instructions for the full shape."
              }
            },
            "blocks": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "block_id": {
                    "type": "string",
                    "description": "Lowercase identifier (^[a-z][a-z0-9_]{1,63}$); becomes the in-game block id.",
                    "required": true
                  },
                  "block_kind": {
                    "type": "string",
                    "description": "Block class. 'basic' = stone-like solid block. 'ore' = drops items via the drops field when mined with the correct tool. 'light' = emits full light (use light_level to override). 'interactive' = supports right-click handlers via events. 'crop' / 'plant' = grows over time via the crop preset. 'redstone' = signal-aware (use redstone preset). 'machine' = container that runs a recipe (pair with the matching MachineSpec). 'container' = inventory storage (pair with the matching StorageSpec).",
                    "enum": [
                      "basic",
                      "ore",
                      "light",
                      "interactive",
                      "crop",
                      "plant",
                      "redstone",
                      "machine",
                      "container"
                    ],
                    "default": "basic",
                    "required": false
                  },
                  "collision_box": {
                    "type": "object",
                    "description": "BoxSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "component_overrides": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "ComponentOverrideSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "crafting_table": {
                    "type": "boolean",
                    "default": false,
                    "required": false
                  },
                  "crop": {
                    "type": "object",
                    "description": "CropSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "custom_components": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "description": "Human-readable block name shown to players.",
                    "required": true
                  },
                  "drops": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "flammable": {
                    "type": "object",
                    "properties": {
                      "catch_chance_modifier": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100,
                        "default": 5,
                        "required": false
                      },
                      "destroy_chance_modifier": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100,
                        "default": 20,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "friction": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1,
                    "required": false
                  },
                  "hardness": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 100,
                    "required": false
                  },
                  "light_level": {
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 15,
                    "required": false
                  },
                  "map_color": {
                    "type": "string",
                    "required": false
                  },
                  "material_instances": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "object",
                      "description": "MaterialInstanceSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "placement_filter": {
                    "type": "object",
                    "description": "PlacementFilterSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "redstone": {
                    "type": "object",
                    "description": "RedstoneSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "resistance": {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 10000,
                    "required": false
                  },
                  "selection_box": {
                    "type": "object",
                    "description": "BoxSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "texture": {
                    "type": "object",
                    "description": "Required visible-asset texture for the block face. See BindingTextureSpec.",
                    "properties": {
                      "color_hex": {
                        "type": "string",
                        "description": "Explicit #RRGGBB color the renderer expands into a kind-shaped procedural sprite. One of source_base64, source_file_id, or color_hex is required on every visible asset.",
                        "required": false
                      },
                      "source_base64": {
                        "type": "string",
                        "description": "Base64-encoded image bytes (PNG or JPEG). Mutually exclusive with source_file_id. Max image dimension 1024 px, max byte size 5 MB.",
                        "required": false
                      },
                      "source_file_id": {
                        "type": "string",
                        "description": "File Manager file_id for a user-uploaded image. The file is fetched budget-scoped, validated, and converted to PNG. Use this when a user drew or uploaded their own texture.",
                        "required": false
                      },
                      "pixelize_to": {
                        "type": "integer",
                        "description": "When set, the source image is nearest-neighbor downscaled to this square dimension on ingest before being baked into the mod. Allowed values: 16, 32, 64, 128. Use 16 for items and blocks, 64 for entities and skins. None (default) keeps the source image at its uploaded dimensions. Has no effect on color_hex bindings.",
                        "minimum": 16,
                        "maximum": 128,
                        "required": false
                      },
                      "palette_colors": {
                        "type": "integer",
                        "description": "When set, the (post-pixelize) image is quantized to this number of palette colors via Pillow's Fast Octree quantizer with dither off (median-cut is not supported on RGBA inputs in stock Pillow; Fast Octree is deterministic and dither-free). Recommend 8 for crisp Minecraft-style sprites. Range: 2-256. None disables quantization. Has no effect on color_hex bindings.",
                        "minimum": 2,
                        "maximum": 256,
                        "required": false
                      }
                    },
                    "required": true
                  },
                  "tick": {
                    "type": "object",
                    "properties": {
                      "interval_range": {
                        "type": "array",
                        "minItems": 2,
                        "maxItems": 2,
                        "items": {
                          "type": "integer"
                        },
                        "required": false
                      },
                      "looping": {
                        "type": "boolean",
                        "default": true,
                        "required": false
                      }
                    },
                    "required": false
                  }
                }
              }
            },
            "commands": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "actions": {
                    "type": "array",
                    "maxItems": 50,
                    "items": {
                      "type": "object",
                      "description": "ActionSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "command_id": {
                    "type": "string",
                    "required": true
                  },
                  "command_kind": {
                    "type": "string",
                    "enum": [
                      "simple_command",
                      "argument_command",
                      "function_command",
                      "admin_command"
                    ],
                    "required": true
                  },
                  "description": {
                    "type": "string",
                    "required": true
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "parameters": {
                    "type": "array",
                    "items": {
                      "type": "object"
                    },
                    "required": false
                  },
                  "permission_level": {
                    "type": "string",
                    "enum": [
                      "any",
                      "op",
                      "admin"
                    ],
                    "default": "any",
                    "required": false
                  }
                }
              }
            },
            "damage_types": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "DamageTypeSpec object. See get_instructions for the full shape."
              }
            },
            "dimensions": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "DimensionSpec object. See get_instructions for the full shape."
              }
            },
            "effects": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "EffectSpec object. See get_instructions for the full shape."
              }
            },
            "enchantments": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "EnchantmentSpec object. See get_instructions for the full shape."
              }
            },
            "entities": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "ai_goals": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "EntityAIGoalSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "attack_damage": {
                    "type": "integer",
                    "description": "Melee damage on attack. Default derived from entity_kind.",
                    "minimum": 0,
                    "maximum": 512,
                    "required": false
                  },
                  "breedable": {
                    "type": "object",
                    "description": "EntityBreedableSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "component_overrides": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "ComponentOverrideSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "description": "Human-readable entity name shown in death messages and the spawn-egg tooltip.",
                    "required": true
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "entity_id": {
                    "type": "string",
                    "description": "Lowercase identifier (^[a-z][a-z0-9_]{1,63}$); becomes the in-game entity id.",
                    "required": true
                  },
                  "entity_kind": {
                    "type": "string",
                    "description": "Mob class. Controls AI defaults, spawn category, and renderer registration. 'passive_mob' = cow/sheep-like, never attacks. 'hostile_mob' = zombie-like, attacks players on sight. 'neutral_mob' = wolf-like, attacks when hurt. 'tameable_pet' = wolf-like with taming behavior (requires tameable preset). 'rideable_mount' = horse-like (requires rideable preset). 'projectile' = arrow-like flying entity. 'npc_like' = villager-like with trades (use interactions preset). 'boss_like' = ender-dragon-like with boss bar.",
                    "enum": [
                      "passive_mob",
                      "hostile_mob",
                      "neutral_mob",
                      "projectile",
                      "npc_like",
                      "tameable_pet",
                      "rideable_mount",
                      "boss_like"
                    ],
                    "required": true
                  },
                  "equipment": {
                    "type": "object",
                    "description": "EntityEquipmentSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "families": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "health": {
                    "type": "integer",
                    "description": "Maximum health points (each heart = 2 HP).",
                    "minimum": 1,
                    "maximum": 2048,
                    "default": 20,
                    "required": false
                  },
                  "interactions": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "EntityInteractionSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "loot_table": {
                    "type": "string",
                    "required": false
                  },
                  "movement_speed": {
                    "type": "number",
                    "description": "Walking speed. Vanilla baseline is 0.25 for passive mobs.",
                    "minimum": 0,
                    "maximum": 5,
                    "default": 0.25,
                    "required": false
                  },
                  "render": {
                    "type": "object",
                    "description": "EntityRenderSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "rideable": {
                    "type": "object",
                    "description": "EntityRideableSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "spawn_biomes": {
                    "type": "array",
                    "description": "Biome ids (minecraft:plains, etc.) where the mob can naturally spawn.",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "spawn_weight": {
                    "type": "integer",
                    "description": "Relative spawn weight in eligible biomes.",
                    "minimum": 1,
                    "maximum": 1000,
                    "default": 10,
                    "required": false
                  },
                  "tameable": {
                    "type": "object",
                    "description": "EntityTameableSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "texture": {
                    "type": "object",
                    "description": "Required visible-asset texture for the entity model and its spawn-egg icon. Bedrock uses a 64x64 humanoid-style atlas by default; supply a 64x64 PNG via source_base64 or source_file_id to override.",
                    "properties": {
                      "color_hex": {
                        "type": "string",
                        "description": "Explicit #RRGGBB color the renderer expands into a kind-shaped procedural sprite. One of source_base64, source_file_id, or color_hex is required on every visible asset.",
                        "required": false
                      },
                      "source_base64": {
                        "type": "string",
                        "description": "Base64-encoded image bytes (PNG or JPEG). Mutually exclusive with source_file_id. Max image dimension 1024 px, max byte size 5 MB.",
                        "required": false
                      },
                      "source_file_id": {
                        "type": "string",
                        "description": "File Manager file_id for a user-uploaded image. The file is fetched budget-scoped, validated, and converted to PNG. Use this when a user drew or uploaded their own texture.",
                        "required": false
                      },
                      "pixelize_to": {
                        "type": "integer",
                        "description": "When set, the source image is nearest-neighbor downscaled to this square dimension on ingest before being baked into the mod. Allowed values: 16, 32, 64, 128. Use 16 for items and blocks, 64 for entities and skins. None (default) keeps the source image at its uploaded dimensions. Has no effect on color_hex bindings.",
                        "minimum": 16,
                        "maximum": 128,
                        "required": false
                      },
                      "palette_colors": {
                        "type": "integer",
                        "description": "When set, the (post-pixelize) image is quantized to this number of palette colors via Pillow's Fast Octree quantizer with dither off (median-cut is not supported on RGBA inputs in stock Pillow; Fast Octree is deterministic and dither-free). Recommend 8 for crisp Minecraft-style sprites. Range: 2-256. None disables quantization. Has no effect on color_hex bindings.",
                        "minimum": 2,
                        "maximum": 256,
                        "required": false
                      }
                    },
                    "required": true
                  }
                }
              }
            },
            "events": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "actions": {
                    "type": "array",
                    "description": "Required non-empty list of actions to execute when the event fires.",
                    "minItems": 1,
                    "maxItems": 50,
                    "items": {
                      "type": "object",
                      "description": "ActionSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "conditions": {
                    "type": "array",
                    "maxItems": 20,
                    "items": {
                      "type": "object",
                      "description": "ConditionSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "event_id": {
                    "type": "string",
                    "required": true
                  },
                  "event_kind": {
                    "type": "string",
                    "description": "Event trigger. Filter to a specific item/block/entity with conditions; emit behavior with actions. Example: pair 'on_item_hit_entity' with a {condition_kind:'held_item', identifier:'modid:flame_sword'} condition and a {action_kind:'set_on_fire', duration_ticks:100} action to make a flame sword.",
                    "enum": [
                      "on_item_use",
                      "on_item_hit_entity",
                      "on_item_mine_block",
                      "on_item_inventory_tick",
                      "on_entity_spawn",
                      "on_entity_death",
                      "on_entity_hurt",
                      "on_entity_tick",
                      "on_player_tick",
                      "on_player_join",
                      "on_player_respawn",
                      "on_block_break",
                      "on_block_interact",
                      "on_block_place",
                      "on_block_tick",
                      "on_projectile_hit",
                      "on_enter_biome",
                      "on_command",
                      "on_inventory_change",
                      "on_redstone_change",
                      "on_machine_recipe_complete"
                    ],
                    "required": true
                  }
                }
              }
            },
            "functions": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "FunctionSpec object. See get_instructions for the full shape."
              }
            },
            "game_rules": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "GameRuleSpec object. See get_instructions for the full shape."
              }
            },
            "items": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "allow_off_hand": {
                    "type": "boolean",
                    "required": false
                  },
                  "armor": {
                    "type": "object",
                    "description": "Armor preset (slot + protection). Required when item_kind='armor' unless wearable is set.",
                    "properties": {
                      "dyeable": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      },
                      "knockback_resistance": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 0,
                        "required": false
                      },
                      "protection": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100,
                        "default": 1,
                        "required": false
                      },
                      "slot": {
                        "type": "string",
                        "enum": [
                          "head",
                          "chest",
                          "legs",
                          "feet"
                        ],
                        "required": true
                      },
                      "toughness": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 100,
                        "default": 0,
                        "required": false
                      },
                      "trim_supported": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "block_placer": {
                    "type": "string",
                    "description": "Block id or preset; required when item_kind='block_placer'.",
                    "required": false
                  },
                  "bundle_interaction": {
                    "type": "object",
                    "required": false
                  },
                  "component_overrides": {
                    "type": "array",
                    "items": {
                      "type": "object",
                      "description": "ComponentOverrideSpec object. See get_instructions for the full shape."
                    },
                    "required": false
                  },
                  "compostable": {
                    "type": "object",
                    "properties": {
                      "chance": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 1,
                        "default": 0.3,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "cooldown": {
                    "type": "object",
                    "properties": {
                      "category": {
                        "type": "string",
                        "default": "generic",
                        "required": false
                      },
                      "cooldown_type": {
                        "type": "string",
                        "description": "Cooldown trigger. 'use' fires on right-click activation; 'attack' fires on swing. Accepts cooldown_type or type as input.",
                        "enum": [
                          "use",
                          "attack"
                        ],
                        "default": "use",
                        "required": false
                      },
                      "duration_seconds": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 3600,
                        "default": 1,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "custom_components": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "damage": {
                    "type": "integer",
                    "description": "Attack damage when held. Used by item_kind in {'tool','weapon'}; default derives from tool_tier.",
                    "minimum": 0,
                    "maximum": 231,
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "digger": {
                    "type": "object",
                    "properties": {
                      "destroy_speeds": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "description": "Nested object; see get_instructions for full shape."
                        },
                        "required": false
                      },
                      "use_efficiency": {
                        "type": "boolean",
                        "default": true,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "description": "Human-readable item name shown to players in inventory tooltips.",
                    "required": true
                  },
                  "durability": {
                    "type": "integer",
                    "description": "Use count before the item breaks. Used by tool/weapon/armor; default derives from tool_tier.",
                    "minimum": 1,
                    "maximum": 100000,
                    "required": false
                  },
                  "dyeable": {
                    "type": "object",
                    "description": "DyeableSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "enchantable": {
                    "type": "object",
                    "properties": {
                      "slot": {
                        "type": "string",
                        "default": "pickaxe",
                        "required": false
                      },
                      "value": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100,
                        "default": 10,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "entity_placer": {
                    "type": "string",
                    "description": "Entity id or preset (spawn-egg-like); required when item_kind='entity_placer'.",
                    "required": false
                  },
                  "fire_resistant": {
                    "type": "boolean",
                    "required": false
                  },
                  "foil": {
                    "type": "boolean",
                    "required": false
                  },
                  "food": {
                    "type": "object",
                    "description": "Food preset (nutrition, saturation, effects). Required when item_kind='food' unless nutrition is set.",
                    "properties": {
                      "can_always_eat": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      },
                      "effects": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "description": "Nested object; see get_instructions for full shape."
                        },
                        "required": false
                      },
                      "nutrition": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 20,
                        "default": 4,
                        "required": false
                      },
                      "remove_effects": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "required": false
                      },
                      "saturation_modifier": {
                        "type": "number",
                        "default": 0.6,
                        "required": false
                      },
                      "use_modifiers": {
                        "type": "object",
                        "description": "UseModifierSpec object. See get_instructions for the full shape.",
                        "required": false
                      },
                      "using_converts_to": {
                        "type": "string",
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "fuel": {
                    "type": "object",
                    "properties": {
                      "duration_seconds": {
                        "type": "number",
                        "maximum": 3600,
                        "exclusiveMinimum": 0,
                        "default": 5,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "glint": {
                    "type": "boolean",
                    "required": false
                  },
                  "hover_text_color": {
                    "type": "string",
                    "required": false
                  },
                  "interact_button": {
                    "type": "string",
                    "required": false
                  },
                  "item_id": {
                    "type": "string",
                    "description": "Lowercase identifier (^[a-z][a-z0-9_]{1,63}$); becomes the in-game item id.",
                    "required": true
                  },
                  "item_kind": {
                    "type": "string",
                    "description": "Behavior class. Drives icon sprite, creative-tab placement, stack size, and which preset fields are required. 'weapon' = sword-like, lands in Equipment tab, requires tool_type in {'sword','custom'}. 'tool' = pickaxe/axe/shovel/hoe, lands in Equipment tab, requires tool_type. 'armor' = head/chest/legs/feet, lands in Equipment tab, requires armor preset. 'food' = eatable, requires food preset or nutrition. 'projectile' = arrow-like, requires projectile/shooter/throwable. 'block_placer' / 'entity_placer' = spawn-egg-like, requires matching preset. 'fuel' = furnace fuel. 'generic' = raw material only (sticks, ingots, dust); rejects any combat/tool/armor/food preset.",
                    "enum": [
                      "generic",
                      "tool",
                      "weapon",
                      "armor",
                      "food",
                      "fuel",
                      "projectile",
                      "block_placer",
                      "entity_placer"
                    ],
                    "default": "generic",
                    "required": false
                  },
                  "kinetic_weapon": {
                    "type": "object",
                    "required": false
                  },
                  "liquid_clipped": {
                    "type": "boolean",
                    "required": false
                  },
                  "max_stack_size": {
                    "type": "integer",
                    "description": "Inventory stack size. Defaults to 1 for tool/weapon/armor/projectile and 64 for generic/food.",
                    "minimum": 1,
                    "maximum": 64,
                    "required": false
                  },
                  "nutrition": {
                    "type": "integer",
                    "description": "Food hunger points restored on consumption. Required (with food preset) when item_kind='food'.",
                    "minimum": 0,
                    "maximum": 20,
                    "required": false
                  },
                  "piercing_weapon": {
                    "type": "object",
                    "required": false
                  },
                  "projectile": {
                    "type": "object",
                    "description": "Projectile preset. One of projectile/shooter/throwable required when item_kind='projectile'.",
                    "properties": {
                      "minimum_critical_power": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 10,
                        "required": false
                      },
                      "projectile_entity": {
                        "type": "string",
                        "required": true
                      }
                    },
                    "required": false
                  },
                  "rarity": {
                    "type": "object",
                    "description": "RaritySpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "record": {
                    "type": "object",
                    "required": false
                  },
                  "repairable": {
                    "type": "object",
                    "properties": {
                      "repair_items": {
                        "type": "array",
                        "items": {
                          "type": "object",
                          "description": "Nested object; see get_instructions for full shape."
                        },
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "saturation": {
                    "type": "number",
                    "description": "Food saturation modifier paired with nutrition.",
                    "minimum": 0,
                    "maximum": 20,
                    "required": false
                  },
                  "shooter": {
                    "type": "object",
                    "description": "Bow-like shooter preset that consumes ammunition items.",
                    "properties": {
                      "ammunition": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        },
                        "required": false
                      },
                      "charge_on_draw": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      },
                      "max_draw_duration": {
                        "type": "number",
                        "maximum": 20,
                        "exclusiveMinimum": 0,
                        "required": false
                      },
                      "scale_power_by_draw_duration": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      },
                      "search_inventory": {
                        "type": "boolean",
                        "default": true,
                        "required": false
                      },
                      "use_in_creative": {
                        "type": "boolean",
                        "default": true,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "should_despawn": {
                    "type": "boolean",
                    "required": false
                  },
                  "stacked_by_data": {
                    "type": "boolean",
                    "required": false
                  },
                  "swing_sounds": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "texture": {
                    "type": "object",
                    "description": "Required visible-asset texture. Supply one of source_base64, source_file_id, or color_hex. color_hex paired with item_kind+tool_type renders a kind-shaped procedural sprite (sword, pickaxe, axe, shovel, or hoe).",
                    "properties": {
                      "color_hex": {
                        "type": "string",
                        "description": "Explicit #RRGGBB color the renderer expands into a kind-shaped procedural sprite. One of source_base64, source_file_id, or color_hex is required on every visible asset.",
                        "required": false
                      },
                      "source_base64": {
                        "type": "string",
                        "description": "Base64-encoded image bytes (PNG or JPEG). Mutually exclusive with source_file_id. Max image dimension 1024 px, max byte size 5 MB.",
                        "required": false
                      },
                      "source_file_id": {
                        "type": "string",
                        "description": "File Manager file_id for a user-uploaded image. The file is fetched budget-scoped, validated, and converted to PNG. Use this when a user drew or uploaded their own texture.",
                        "required": false
                      },
                      "pixelize_to": {
                        "type": "integer",
                        "description": "When set, the source image is nearest-neighbor downscaled to this square dimension on ingest before being baked into the mod. Allowed values: 16, 32, 64, 128. Use 16 for items and blocks, 64 for entities and skins. None (default) keeps the source image at its uploaded dimensions. Has no effect on color_hex bindings.",
                        "minimum": 16,
                        "maximum": 128,
                        "required": false
                      },
                      "palette_colors": {
                        "type": "integer",
                        "description": "When set, the (post-pixelize) image is quantized to this number of palette colors via Pillow's Fast Octree quantizer with dither off (median-cut is not supported on RGBA inputs in stock Pillow; Fast Octree is deterministic and dither-free). Recommend 8 for crisp Minecraft-style sprites. Range: 2-256. None disables quantization. Has no effect on color_hex bindings.",
                        "minimum": 2,
                        "maximum": 256,
                        "required": false
                      }
                    },
                    "required": true
                  },
                  "throwable": {
                    "type": "object",
                    "description": "Throwable preset (snowball-like behavior).",
                    "properties": {
                      "do_swing_animation": {
                        "type": "boolean",
                        "default": true,
                        "required": false
                      },
                      "launch_power_scale": {
                        "type": "number",
                        "maximum": 10,
                        "exclusiveMinimum": 0,
                        "default": 1,
                        "required": false
                      },
                      "max_draw_duration": {
                        "type": "number",
                        "maximum": 20,
                        "exclusiveMinimum": 0,
                        "required": false
                      },
                      "max_launch_power": {
                        "type": "number",
                        "minimum": 0,
                        "maximum": 10,
                        "required": false
                      }
                    },
                    "required": false
                  },
                  "tool": {
                    "type": "object",
                    "description": "Explicit tool preset overriding tool_type/tool_tier defaults.",
                    "properties": {
                      "attack_damage": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 231,
                        "default": 4,
                        "required": false
                      },
                      "attack_speed": {
                        "type": "number",
                        "maximum": 20,
                        "exclusiveMinimum": 0,
                        "default": 1.6,
                        "required": false
                      },
                      "break_all_blocks": {
                        "type": "boolean",
                        "description": "When true, the tool can mine every block at full speed regardless of the vanilla pickaxe/axe/shovel/hoe destructible tag. Bedrock emits a Molang-true tag predicate on minecraft:digger; Java emits a tier that ignores TagBlockEntries restrictions. Combine with instabreak for a creative-mode super-tool.",
                        "default": false,
                        "required": false
                      },
                      "digger": {
                        "type": "object",
                        "properties": {
                          "destroy_speeds": {
                            "type": "object",
                            "description": "Nested object; see get_instructions for full shape.",
                            "required": false
                          },
                          "use_efficiency": {
                            "type": "object",
                            "description": "Nested object; see get_instructions for full shape.",
                            "required": false
                          }
                        },
                        "required": false
                      },
                      "enchantable": {
                        "type": "object",
                        "properties": {
                          "slot": {
                            "type": "object",
                            "description": "Nested object; see get_instructions for full shape.",
                            "required": false
                          },
                          "value": {
                            "type": "object",
                            "description": "Nested object; see get_instructions for full shape.",
                            "required": false
                          }
                        },
                        "required": false
                      },
                      "instabreak": {
                        "type": "boolean",
                        "default": false,
                        "required": false
                      },
                      "mining_speed": {
                        "type": "number",
                        "maximum": 2048,
                        "exclusiveMinimum": 0,
                        "default": 4,
                        "required": false
                      },
                      "repairable": {
                        "type": "object",
                        "properties": {
                          "repair_items": {
                            "type": "object",
                            "description": "Nested object; see get_instructions for full shape.",
                            "required": false
                          }
                        },
                        "required": false
                      },
                      "tier": {
                        "type": "string",
                        "enum": [
                          "wood",
                          "stone",
                          "iron",
                          "gold",
                          "diamond",
                          "netherite",
                          "custom"
                        ],
                        "default": "iron",
                        "required": false
                      },
                      "tool_type": {
                        "type": "string",
                        "enum": [
                          "pickaxe",
                          "axe",
                          "shovel",
                          "hoe",
                          "sword",
                          "custom"
                        ],
                        "required": true
                      }
                    },
                    "required": false
                  },
                  "tool_tier": {
                    "type": "string",
                    "description": "Tier preset. Determines default durability, attack damage, mining speed, enchantability, and repair material. Defaults to 'iron' when omitted on a tool/weapon. 'custom' opts out of all tier defaults.",
                    "enum": [
                      "wood",
                      "stone",
                      "iron",
                      "gold",
                      "diamond",
                      "netherite",
                      "custom"
                    ],
                    "required": false
                  },
                  "tool_type": {
                    "type": "string",
                    "description": "Tool kind. Controls the rendered icon sprite when color_hex is the texture source, the destructible-block tag, and the Equipment-tab sub-group. Required when item_kind='tool'. Use 'sword' for item_kind='weapon'. 'custom' opts out of the kind-specific defaults so the spec must declare its own damage/durability/digger.",
                    "enum": [
                      "pickaxe",
                      "axe",
                      "shovel",
                      "hoe",
                      "sword",
                      "custom"
                    ],
                    "required": false
                  },
                  "use_modifiers": {
                    "type": "object",
                    "description": "UseModifierSpec object. See get_instructions for the full shape.",
                    "required": false
                  },
                  "wearable": {
                    "type": "object",
                    "properties": {
                      "protection": {
                        "type": "integer",
                        "minimum": 0,
                        "maximum": 100,
                        "required": false
                      },
                      "slot": {
                        "type": "string",
                        "enum": [
                          "slot.armor.head",
                          "slot.armor.chest",
                          "slot.armor.legs",
                          "slot.armor.feet",
                          "slot.weapon.offhand"
                        ],
                        "default": "slot.armor.head",
                        "required": false
                      }
                    },
                    "required": false
                  }
                }
              }
            },
            "localizations": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "LocalizationSpec object. See get_instructions for the full shape."
              }
            },
            "loot_tables": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "conditions": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "required": false
                  },
                  "drops": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 64,
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "functions": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "loot_id": {
                    "type": "string",
                    "required": true
                  },
                  "target": {
                    "type": "string",
                    "required": true
                  }
                }
              }
            },
            "machines": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "MachineSpec object. See get_instructions for the full shape."
              }
            },
            "particles": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "ParticleSpec object. See get_instructions for the full shape."
              }
            },
            "recipes": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "addition_item": {
                    "type": "string",
                    "required": false
                  },
                  "base_item": {
                    "type": "string",
                    "required": false
                  },
                  "cooking_time_seconds": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 3600,
                    "required": false
                  },
                  "count": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 64,
                    "default": 1,
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "ingredients": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "input_item": {
                    "type": "string",
                    "required": false
                  },
                  "key": {
                    "type": "object",
                    "additionalProperties": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "pattern": {
                    "type": "array",
                    "minItems": 1,
                    "maxItems": 3,
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "recipe_id": {
                    "type": "string",
                    "required": true
                  },
                  "recipe_kind": {
                    "type": "string",
                    "description": "Recipe class. 'shaped' requires pattern+key. 'shapeless' requires ingredients. 'furnace' requires input_item+cooking_time_seconds. 'smithing_transform' / 'smithing_trim' require template_item+base_item+addition_item. 'brewing_mix' / 'brewing_container' are Bedrock-only.",
                    "enum": [
                      "shaped",
                      "shapeless",
                      "furnace",
                      "brewing_mix",
                      "brewing_container",
                      "smithing_transform",
                      "smithing_trim"
                    ],
                    "default": "shapeless",
                    "required": false
                  },
                  "result_item": {
                    "type": "string",
                    "required": true
                  },
                  "template_item": {
                    "type": "string",
                    "required": false
                  }
                }
              }
            },
            "render_controllers": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "RenderControllerSpec object. See get_instructions for the full shape."
              }
            },
            "scoreboards": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "ScoreboardSpec object. See get_instructions for the full shape."
              }
            },
            "sounds": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "SoundSpec object. See get_instructions for the full shape."
              }
            },
            "storage": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "StorageSpec object. See get_instructions for the full shape."
              }
            },
            "structures": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "StructureSpec object. See get_instructions for the full shape."
              }
            },
            "trades": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "TradeSpec object. See get_instructions for the full shape."
              }
            },
            "transportation": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "TransportationSpec object. See get_instructions for the full shape."
              }
            },
            "ui": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "description": "UISpec object. See get_instructions for the full shape."
              }
            },
            "worldgen": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "biomes": {
                    "type": "array",
                    "items": {
                      "type": "string"
                    },
                    "required": false
                  },
                  "block_id": {
                    "type": "string",
                    "description": "Block id to place. Required for ore/single_block/vegetation features.",
                    "required": false
                  },
                  "count_per_chunk": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 128,
                    "default": 8,
                    "required": false
                  },
                  "description": {
                    "type": "string",
                    "required": false
                  },
                  "display_name": {
                    "type": "string",
                    "required": false
                  },
                  "enabled_platforms": {
                    "type": "array",
                    "items": {
                      "type": "string",
                      "enum": [
                        "bedrock",
                        "fabric",
                        "neoforge"
                      ]
                    },
                    "required": false
                  },
                  "feature_id": {
                    "type": "string",
                    "required": true
                  },
                  "feature_kind": {
                    "type": "string",
                    "description": "Worldgen feature class. 'ore_feature' places veins of block_id inside target_block. 'single_block_feature' places a single block. 'vegetation_patch' places a plant patch. 'structure_placement' places a stored structure. 'custom_biome' / 'custom_dimension' register a referenced biome/dimension.",
                    "enum": [
                      "ore_feature",
                      "single_block_feature",
                      "vegetation_patch",
                      "structure_placement",
                      "custom_biome",
                      "custom_dimension"
                    ],
                    "required": true
                  },
                  "max_y": {
                    "type": "integer",
                    "minimum": -64,
                    "maximum": 320,
                    "default": 64,
                    "required": false
                  },
                  "min_y": {
                    "type": "integer",
                    "minimum": -64,
                    "maximum": 320,
                    "default": -64,
                    "required": false
                  },
                  "radius": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 32,
                    "default": 4,
                    "required": false
                  },
                  "source_file_id": {
                    "type": "string",
                    "required": false
                  },
                  "target_block": {
                    "type": "string",
                    "default": "minecraft:stone",
                    "required": false
                  },
                  "vein_size": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 64,
                    "default": 6,
                    "required": false
                  },
                  "vertical_range": {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 64,
                    "default": 5,
                    "required": false
                  }
                }
              }
            }
          }
        },
        "skin_pack": {
          "type": "object",
          "description": "Skin pack definition. Required for create_mod_project when target_platform='bedrock_skinpack'.",
          "required": false,
          "properties": {
            "display_name": {
              "type": "string",
              "required": false
            },
            "pack_id": {
              "type": "string",
              "required": false
            },
            "skins": {
              "type": "array",
              "required": false,
              "items": {
                "type": "object",
                "properties": {
                  "display_name": {
                    "type": "string",
                    "required": true
                  },
                  "geometry": {
                    "type": "string",
                    "enum": [
                      "geometry.humanoid.custom",
                      "geometry.humanoid.customSlim"
                    ],
                    "default": "geometry.humanoid.custom",
                    "required": false
                  },
                  "localization_name": {
                    "type": "string",
                    "required": false
                  },
                  "skin_id": {
                    "type": "string",
                    "required": true
                  },
                  "skin_type": {
                    "type": "string",
                    "description": "Skin type. Accepts skin_type or type as input.",
                    "enum": [
                      "free",
                      "paid"
                    ],
                    "default": "free",
                    "required": false
                  },
                  "texture": {
                    "type": "object",
                    "description": "Required 64x64 PNG skin texture. Supply source_base64 or source_file_id for a user-drawn skin; color_hex renders a flat humanoid silhouette.",
                    "properties": {
                      "color_hex": {
                        "type": "string",
                        "description": "Explicit #RRGGBB color the renderer expands into a kind-shaped procedural sprite. One of source_base64, source_file_id, or color_hex is required on every visible asset.",
                        "required": false
                      },
                      "source_base64": {
                        "type": "string",
                        "description": "Base64-encoded image bytes (PNG or JPEG). Mutually exclusive with source_file_id. Max image dimension 1024 px, max byte size 5 MB.",
                        "required": false
                      },
                      "source_file_id": {
                        "type": "string",
                        "description": "File Manager file_id for a user-uploaded image. The file is fetched budget-scoped, validated, and converted to PNG. Use this when a user drew or uploaded their own texture.",
                        "required": false
                      },
                      "pixelize_to": {
                        "type": "integer",
                        "description": "When set, the source image is nearest-neighbor downscaled to this square dimension on ingest before being baked into the mod. Allowed values: 16, 32, 64, 128. Use 16 for items and blocks, 64 for entities and skins. None (default) keeps the source image at its uploaded dimensions. Has no effect on color_hex bindings.",
                        "minimum": 16,
                        "maximum": 128,
                        "required": false
                      },
                      "palette_colors": {
                        "type": "integer",
                        "description": "When set, the (post-pixelize) image is quantized to this number of palette colors via Pillow's Fast Octree quantizer with dither off (median-cut is not supported on RGBA inputs in stock Pillow; Fast Octree is deterministic and dither-free). Recommend 8 for crisp Minecraft-style sprites. Range: 2-256. None disables quantization. Has no effect on color_hex bindings.",
                        "minimum": 2,
                        "maximum": 256,
                        "required": false
                      }
                    },
                    "required": true
                  }
                }
              },
              "minItems": 1,
              "maxItems": 64
            }
          }
        },
        "allow_experimental_bedrock_features": {
          "type": "boolean",
          "description": "Allow Bedrock features that require experimental world toggles.",
          "required": false
        },
        "source_archive_file_id": {
          "type": "string",
          "description": "File Manager file_id for a previously generated source zip. Use to preview an asset from a built mod without re-supplying the spec.",
          "required": false
        },
        "preview_source_file_id": {
          "type": "string",
          "description": "render_preview_image: File Manager file_id for a user-supplied image to preview directly.",
          "required": false
        },
        "preview_target_kind": {
          "type": "string",
          "description": "render_preview_image: 'item', 'block', or 'entity'. Omit to auto-select.",
          "required": false,
          "enum": [
            "item",
            "block",
            "entity"
          ]
        },
        "preview_target_id": {
          "type": "string",
          "description": "render_preview_image: feature id or namespaced id to preview.",
          "required": false
        },
        "preview_size": {
          "type": "integer",
          "description": "render_preview_image: square preview size in pixels (32-1024). Default 256.",
          "required": false,
          "default": 256,
          "minimum": 32,
          "maximum": 1024
        },
        "preview_background": {
          "type": "string",
          "description": "render_preview_image: background style for the preview canvas.",
          "required": false,
          "default": "checkerboard",
          "enum": [
            "checkerboard",
            "transparent",
            "white",
            "black"
          ]
        }
      }
    }
  }
}
```

### Usage Instructions

# Minecraft Mod Builder

Generate deterministic Minecraft Bedrock, Fabric, and NeoForge mod artifacts from structured specifications. This tool does not call an LLM, does not accept prompts, and does not require user credentials.

## Two Rules That Will Save You Many Retries

### Rule 1 — One ItemSpec equals one in-game item

A single `ItemSpec` produces one in-game item. The fields `damage`, `durability`, `max_stack_size`, `nutrition`, `tool`, `armor`, `food`, `block_placer`, `entity_placer`, `enchantable`, `repairable`, `digger`, `cooldown`, `glint`, `rarity`, `dyeable`, and `component_overrides` all attach to the *same item*. A weapon does **not** need a separate entity or a separate "damage item." A sword does **not** need a partner "enchantment item." You ship one item; this tool wires up every relevant Minecraft component on that item from the fields above.

Do not split one weapon idea across many `items[]` entries. Do not duplicate a weapon and call one copy "damage" and another "durability." That is the most common source of bloated, broken submissions.

### Rule 2 — Every visible asset requires a texture

Items, blocks, entities, particles, named texture assets, machines, storage, and skin-pack skins must each carry a `texture` with one of these three sources:

* `source_base64` — base64-encoded PNG or JPEG bytes (max 1024×1024, max 5 MB).
* `source_file_id` — a File Manager file_id for a user-uploaded image.
* `color_hex` — an explicit `#RRGGBB` color. Only `item_kind in {tool, weapon}` (with `tool_type`) and the dedicated `texture_kind in {block, entity}` paths produce a recognizable sprite (sword/pickaxe/axe/shovel/hoe; shaded block face; humanoid silhouette). For every other kind — `generic`, `food`, `fuel`, `projectile`, `block_placer`, `entity_placer`, `armor`, particles, machines, storage — `color_hex` renders only as a flat colored 16×16 square. That is appropriate for raw materials (ingots, dust, gems) but looks like a missing texture for armor/food/machines. **Use `source_base64` or `source_file_id` whenever the item's identity is visual** (armor, food, machines, storage, projectiles). Tool/weapon `color_hex` requires `tool_type`; otherwise rejected.

A spec that omits the texture binding is rejected at validation with `MINECRAFT_VISIBLE_ASSET_TEXTURE_REQUIRED`. There is no procedural blob fallback. If you want the user to see something, you supply the texture.

**Armor pieces must ship a real PNG.** `item_kind="armor"` rejects `color_hex`-only textures (`MINECRAFT_ARMOR_TEXTURE_REQUIRES_IMAGE`) — the procedural sprite for armor is a flat colored square, which looks broken on the wearer model and in inventory. Supply `source_base64` or `source_file_id` for every helmet/chestplate/leggings/boots.

### Authoring textures with the Icon Generator + `pixelize_to`

The canonical way to author textures for items, blocks, entities, and particles is the **Icon Generator** (`/product-icon-generator`). Render at the exact target grid in `pixel_art_mode=true` — 16×16 for items and blocks, 64×64 for entities and skin packs — and pipe the returned `file_id` straight into this texture's `source_file_id`. Detailed recipes live in `agent_instructions/minecraft_texture_agent.md`.

When the texture originates outside the Icon Generator (AI image creator, user upload, third-party source), use the ingest-side safety net by setting `texture.pixelize_to` and optionally `texture.palette_colors`. Both fields are opt-in (`None` by default) so existing bindings remain byte-identical. Example: `{"texture": {"source_file_id": "abc...", "pixelize_to": 16, "palette_colors": 8}}` nearest-neighbor downscales the input to 16×16 and quantizes it to an 8-color palette with dithering disabled, producing crisp pixel-art output regardless of how the source was made. Failures surface as `MINECRAFT_TEXTURE_PIXELIZE_FAILED`.

Recommended defaults unless you have a specific reason to deviate: items/blocks → `pixelize_to: 16, palette_colors: 8`; entities/skins → `pixelize_to: 64, palette_colors: 16`; particles → `pixelize_to: 16, palette_colors: 4`. The `color_hex` binding path is unaffected — it already produces crisp procedural sprites.

## Quick Recipes

### Diamond sword
```json
{"items":[{"item_id":"flame_sword","display_name":"Flame Sword","item_kind":"weapon","tool_type":"sword","tool_tier":"diamond","damage":7,"texture":{"color_hex":"#ff5522"}}]}
```

### Iron pickaxe
```json
{"items":[{"item_id":"iron_pickaxe","display_name":"Iron Pickaxe","item_kind":"tool","tool_type":"pickaxe","tool_tier":"iron","texture":{"color_hex":"#cccccc"}}]}
```

### Custom-texture armor set
```json
{"items":[
  {"item_id":"set_helmet","display_name":"Set Helmet","item_kind":"armor","tool_tier":"diamond","armor":{"slot":"head","protection":3,"toughness":2},"texture":{"source_file_id":"<file_id>","pixelize_to":16,"palette_colors":8}},
  {"item_id":"set_chest","display_name":"Set Chest","item_kind":"armor","tool_tier":"diamond","armor":{"slot":"chest","protection":8,"toughness":2},"texture":{"source_file_id":"<file_id>","pixelize_to":16,"palette_colors":8}},
  {"item_id":"set_legs","display_name":"Set Legs","item_kind":"armor","tool_tier":"diamond","armor":{"slot":"legs","protection":6,"toughness":2},"texture":{"source_file_id":"<file_id>","pixelize_to":16,"palette_colors":8}},
  {"item_id":"set_boots","display_name":"Set Boots","item_kind":"armor","tool_tier":"diamond","armor":{"slot":"feet","protection":3,"toughness":2},"texture":{"source_file_id":"<file_id>","pixelize_to":16,"palette_colors":8}}
]}
```

### Block + matching ore
```json
{"blocks":[{"block_id":"raw_obsidium","display_name":"Raw Obsidium","block_kind":"basic","hardness":3.0,"resistance":12,"texture":{"color_hex":"#2a0033"}}],"worldgen":[{"feature_id":"obsidium_ore","feature_kind":"ore_feature","block_id":"raw_obsidium","vein_size":4,"count_per_chunk":2,"min_y":0,"max_y":48,"biomes":["minecraft:overworld"]}]}
```

### Passive entity (sheep-like)
```json
{"entities":[{"entity_id":"cloudling","display_name":"Cloudling","entity_kind":"passive_mob","health":12,"texture":{"source_file_id":"<file_id>","pixelize_to":64,"palette_colors":16}}]}
```

### Sword with on-hit fire event
```json
{"items":[{"item_id":"flame_sword","display_name":"Flame Sword","item_kind":"weapon","tool_type":"sword","tool_tier":"diamond","damage":7,"texture":{"color_hex":"#ff5522"}}],"events":[{"event_id":"flame_sword_ignite","event_kind":"on_item_hit_entity","conditions":[{"condition_kind":"held_item","identifier":"modid:flame_sword"}],"actions":[{"action_kind":"set_on_fire","duration_ticks":120}]}]}
```

### Skin pack (Bedrock)
```json
{"action":"create_mod_project","target_platform":"bedrock_skinpack","mod_id":"blue_pack","mod_name":"Blue Pack","skin_pack":{"pack_id":"blue_pack","display_name":"Blue Pack","skins":[{"skin_id":"blue_hero","display_name":"Blue Hero","texture":{"source_base64":"<base64-encoded 64x64 PNG>"}}]}}
```

Skin pack textures must be exactly 64×64 PNG.

## Verify Every Generation

Always follow `create_mod_project` with a `render_preview_image` call against the just-generated `mod_id`. The preview confirms the icon renders correctly before you ask the user to install. If the preview looks like a flat colored square or the wrong tool sprite, you forgot `item_kind`, `tool_type`, or both.

## Common Mistakes

| Mistake | What happens now |
|---|---|
| `item_kind="generic"` on a weapon with `damage` set | Rejected: `MINECRAFT_ITEM_KIND_REQUIRES_PRESET` |
| `item_kind="tool"` without `tool_type` | Rejected: `MINECRAFT_ITEM_KIND_REQUIRES_PRESET` |
| `item_kind="weapon"` with `tool_type="pickaxe"` | Rejected: weapon requires `sword` or `custom` |
| `item_kind="armor"` without `armor` or `wearable` | Rejected: `MINECRAFT_ITEM_KIND_REQUIRES_PRESET` |
| `item_kind="food"` without `food` preset or `nutrition` | Rejected: `MINECRAFT_ITEM_KIND_REQUIRES_PRESET` |
| `texture` omitted on any visible asset | Rejected: `MINECRAFT_VISIBLE_ASSET_TEXTURE_REQUIRED` |
| `texture: {}` with no `color_hex`, `source_base64`, or `source_file_id` | Rejected: `MINECRAFT_TEXTURE_SOURCE_REQUIRED` |
| `item_kind="armor"` with `texture: {color_hex: ...}` only | Rejected: `MINECRAFT_ARMOR_TEXTURE_REQUIRES_IMAGE` |
| `pixelize_to` set to a value other than 16, 32, 64, or 128 | Rejected: schema validation |
| Source image fails to decode during pixelize | `MINECRAFT_TEXTURE_PIXELIZE_FAILED` |
| Pickaxe specced to "break any block" but only breaks a few | Add `tool.break_all_blocks: true` |
| Feature appears in the wrong platform build | Set `enabled_platforms: ["bedrock"]` (or fabric/neoforge) |
| Block `drops` references an item id that doesn't exist | Rejected with `MINECRAFT_SPEC_VALIDATION_FAILED` |
| Multiple `items[]` entries for one weapon | Two items in inventory; collapse to one ItemSpec |
| `on_item_hit_entity` without a `held_item` condition | Fires for every hit; add a `held_item` condition |
| `command_id` shadowing a Minecraft command (e.g. `give`, `tp`) | Reject or behavior conflict; pick a unique id |

## Supported Platforms

- `bedrock`: Minecraft Bedrock add-on generation. Produces `.mcaddon` installables and Mojang Minecraft Creator Tools validation reports.
- `fabric`: Minecraft Java Fabric generation. Produces source zips and optional built jars.
- `neoforge`: Minecraft Java NeoForge generation. Produces source zips and optional built jars.
- `bedrock_skinpack`: Bedrock skin pack generation. Produces `.mcpack` files.
- `forge` is retired. Use `neoforge`.

## Texture Binding Fields (BindingTextureSpec)

Every visible asset's `texture` field is a `BindingTextureSpec`. Required: exactly one of `color_hex`, `source_base64`, or `source_file_id`.

Optional ingest-side transforms:
- `pixelize_to`: integer in `{16, 32, 64, 128}`. Nearest-neighbor downscales the source image to that square dimension before baking.
- `palette_colors`: integer 2-256. Quantizes the (post-pixelize) image to the requested palette size via Fast Octree (no dither).

Both fields default to `None` (no transform). They only affect the `source_base64` and `source_file_id` paths; `color_hex` renders are unaffected.

## Actions

- `list_capabilities`: Return the supported feature/event/action matrix for a target platform.
- `validate_mod_project`: Validate a spec without writing artifacts. Use to check coherence before paying for `create_mod_project`.
- `create_mod_project`: Validate + generate the mod artifact. Returns source zip and/or installable archive paths.
- `render_preview_image`: Render an enlarged preview of a generated texture/icon for verification.

## Output Behavior

- Bedrock `installable` returns a `.mcaddon` and validation report. With `validate_output=true`, Mojang Minecraft Creator Tools validates the generated add-on.
- Fabric/NeoForge `installable` returns a jar when `build_jar=true`; otherwise use `source` for source zips only.
- `render_preview_image` returns a preview artifact with a PNG `file_id`, signed URL, and image metadata.
- Artifacts expire according to the File Manager storage policy.

### Additional Product Content

## Your own Minecraft mods — no coding required

Minecraft Custom Mod Builder turns a simple description into a finished, installable mod. Tell it what you want to add to the game — a glowing ore, a flaming sword, a rideable beast, or a brand-new dimension — and get back a ready-to-play file in seconds. Build for **Minecraft Bedrock** (phones, console, and Windows) or **Minecraft Java** with **Fabric** and **NeoForge**.

## What you can build

1.  **Items & gear** — swords, pickaxes, axes, shovels, hoes, armor sets, food, fuel, and projectiles, each placed in the right creative-inventory tab.
2.  **Blocks & world content** — custom blocks, ores with world generation, crops, plants, machines, and storage containers.
3.  **Mobs & bosses** — passive animals, hostile monsters, neutral and tameable creatures, rideable mounts, and boss battles.
4.  **Gameplay systems** — crafting recipes, loot tables, enchantments, status effects, villager-style trades, and custom commands.
5.  **Worlds** — custom biomes, dimensions, structures, and spawn rules.
6.  **Skin packs** — Bedrock skin packs (.mcpack) for a fresh look.
7.  **Special behavior** — wire up actions like a sword that ignites enemies on hit or a block that triggers an effect when used.

## Make it look exactly how you want

Give every item, block, and creature its own texture. Pick a color, upload your own artwork, or drop in a generated pixel-art sprite. Preview each texture and icon in advance so you know it looks right before you ever install the mod.

## How it works

1.  **Describe it.** Say what you want to add to Minecraft.
2.  **Preview it.** Check the generated textures and icons.
3.  **Install & play.** Download the ready-to-install file and load it into your game or server.

## What you get

1.  Ready-to-install **.mcaddon**, **.mcpack**, and **.jar** files.
2.  Editable source projects so you can keep building and customizing.
3.  Preview images of your textures and icons.

## Who it's for

Creators, streamers, realm and server owners, educators, and players who want custom Minecraft content — fast, and without learning to code.

### Frequently Asked Questions

#### Can I use my own artwork for textures?

- Page URL: https://www.agentpmt.com/faq#faq-6a1227c7675a75b67fa934af
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md#faq-6a1227c7675a75b67fa934af
- Tags: Product Specific

Yes. Give any item, block, or creature a solid color, upload your own image, or use a generated pixel-art sprite — and preview it before you install.

#### Do I need to know how to code?

- Page URL: https://www.agentpmt.com/faq#faq-6a1227c7675a75b67fa934ac
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md#faq-6a1227c7675a75b67fa934ac
- Tags: Product Specific

No. Just describe what you want to add to Minecraft and you'll get back a finished, installable mod file — textures, items, behavior, and all.

#### What can I create?

- Page URL: https://www.agentpmt.com/faq#faq-6a1227c7675a75b67fa934b0
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md#faq-6a1227c7675a75b67fa934b0
- Tags: Product Specific

Items, weapons, tools, and armor; blocks, ores, and crops; custom mobs and bosses; recipes, loot tables, enchantments, and trades; plus biomes, dimensions, and structures.

#### What do I get when my mod is finished?

- Page URL: https://www.agentpmt.com/faq#faq-6a1227c7675a75b67fa934ae
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md#faq-6a1227c7675a75b67fa934ae
- Tags: Product Specific

A ready-to-install file you can load straight into Minecraft, preview images of your textures and icons, and editable source files so you can keep customizing.

#### Which versions of Minecraft does it support?

- Page URL: https://www.agentpmt.com/faq#faq-6a1227c7675a75b67fa934ad
- Markdown URL: https://www.agentpmt.com/faq?format=agent-md#faq-6a1227c7675a75b67fa934ad
- Tags: Product Specific

Both editions. It builds Bedrock add-ons (.mcaddon) and skin packs (.mcpack) for phones, console, and Windows, plus Java mods for Fabric and NeoForge (.jar).

### Dependencies

This product has no public dependency products.