{"id":"7e4dc1db-f951-441f-9ccb-0f1ea2d74c71","entityType":"agent","slug":"clawhub-agentpmt-minecraft-custom-mod-builder","name":"Minecraft Custom Mod Builder","canonicalUrl":"https://www.xpersona.co/agent/clawhub-agentpmt-minecraft-custom-mod-builder","canonicalPath":"/agent/clawhub-agentpmt-minecraft-custom-mod-builder","generatedAt":"2026-10-10T08:36:27.224Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T03:39:13.068Z","emptyReason":null},"description":"Minecraft Custom Mod Builder: Generate and verify structured Minecraft Bedrock, Bedrock skin pack, Fabric, and NeoForge projects. Use when an agent needs min... Skill: Minecraft Custom Mod Builder Owner: agentpmt Summary: Minecraft Custom Mod Builder: Generate and verify structured Minecraft Bedrock, Bedrock skin pack, Fabric, and NeoForge projects. Use when an agent needs min... Tags: agentpmt:1.0.8, create-mod-project:1.0.8, get-build-job:1.0.8, get-instructions:1.0.8, latest:1.0.8, list-build-jobs:1.0.8, list-capabilities:1.0.8, marketplace:1.0.8, render-preview-image:1.0","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.7K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17c4gq739k6px8k8sryevfm9h86myay:minecraft-custom-mod-builder","sourceUrl":"https://clawhub.ai/agentpmt/minecraft-custom-mod-builder","homepage":"https://clawhub.ai/agentpmt/skills/minecraft-custom-mod-builder","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/agentpmt/minecraft-custom-mod-builder","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/agentpmt/skills/minecraft-custom-mod-builder","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":65,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Minecraft Custom Mod Builder: Generate and verify structured Minecraft Bedrock, Bedrock skin pack, Fabric, and NeoForge projects. Use when an agent needs min..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T03:39:13.068Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T03:39:13.068Z","emptyReason":null},"stars":null,"forks":null,"downloads":1724,"packageName":null,"latestVersion":"1.0.8","tractionLabel":"1.7K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T03:39:13.000Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T03:39:13.068Z","lastCrawledAt":"2026-10-10T03:39:13.000Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T03:39:13.000Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.8","createdAt":"2026-07-14T21:13:36.548Z","changelog":"Publish minecraft-custom-mod-builder v1.0.8","fileCount":4,"zipByteSize":34631},{"version":"1.0.7","createdAt":"2026-07-14T04:14:09.470Z","changelog":"Publish minecraft-custom-mod-builder v1.0.7","fileCount":4,"zipByteSize":34794},{"version":"1.0.6","createdAt":"2026-07-11T17:02:36.680Z","changelog":"Publish minecraft-custom-mod-builder v1.0.6","fileCount":4,"zipByteSize":10095},{"version":"1.0.5","createdAt":"2026-07-11T16:38:20.658Z","changelog":"Publish minecraft-custom-mod-builder v1.0.5","fileCount":4,"zipByteSize":9803},{"version":"1.0.4","createdAt":"2026-07-09T18:25:39.840Z","changelog":"Publish minecraft-custom-mod-builder v1.0.4","fileCount":4,"zipByteSize":9722},{"version":"1.0.3","createdAt":"2026-07-08T17:14:10.305Z","changelog":"Publish minecraft-custom-mod-builder v1.0.3","fileCount":4,"zipByteSize":27069},{"version":"1.0.2","createdAt":"2026-07-08T16:02:11.318Z","changelog":"Publish minecraft-custom-mod-builder v1.0.2","fileCount":4,"zipByteSize":26187},{"version":"1.0.1","createdAt":"2026-07-08T00:25:42.694Z","changelog":"Publish minecraft-custom-mod-builder v1.0.1","fileCount":4,"zipByteSize":25929}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17c4gq739k6px8k8sryevfm9h86myay:minecraft-custom-mod-builder","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-agentpmt-minecraft-custom-mod-builder/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-agentpmt-minecraft-custom-mod-builder/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-agentpmt-minecraft-custom-mod-builder/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-agentpmt-minecraft-custom-mod-builder/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-agentpmt-minecraft-custom-mod-builder/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-agentpmt-minecraft-custom-mod-builder/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T08:36:27.221Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-agentpmt-minecraft-custom-mod-builder/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-agentpmt-minecraft-custom-mod-builder/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-agentpmt-minecraft-custom-mod-builder/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-agentpmt-minecraft-custom-mod-builder/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T03:39:13.068Z","emptyReason":null},"readme":"Skill: Minecraft Custom Mod Builder\n\nOwner: agentpmt\n\nSummary: Minecraft Custom Mod Builder: Generate and verify structured Minecraft Bedrock, Bedrock skin pack, Fabric, and NeoForge projects. Use when an agent needs min...\n\nTags: agentpmt:1.0.8, create-mod-project:1.0.8, get-build-job:1.0.8, get-instructions:1.0.8, latest:1.0.8, list-build-jobs:1.0.8, list-capabilities:1.0.8, marketplace:1.0.8, render-preview-image:1.0.8, start-build-job:1.0.8, validate-mod-project:1.0.8, x402:1.0.8\n\nVersion history:\n\nv1.0.8 | 2026-07-14T21:13:36.548Z | user\n\nPublish minecraft-custom-mod-builder v1.0.8\n\nv1.0.7 | 2026-07-14T04:14:09.470Z | user\n\nPublish minecraft-custom-mod-builder v1.0.7\n\nv1.0.6 | 2026-07-11T17:02:36.680Z | user\n\nPublish minecraft-custom-mod-builder v1.0.6\n\nv1.0.5 | 2026-07-11T16:38:20.658Z | user\n\nPublish minecraft-custom-mod-builder v1.0.5\n\nv1.0.4 | 2026-07-09T18:25:39.840Z | user\n\nPublish minecraft-custom-mod-builder v1.0.4\n\nv1.0.3 | 2026-07-08T17:14:10.305Z | user\n\nPublish minecraft-custom-mod-builder v1.0.3\n\nv1.0.2 | 2026-07-08T16:02:11.318Z | user\n\nPublish minecraft-custom-mod-builder v1.0.2\n\nv1.0.1 | 2026-07-08T00:25:42.694Z | user\n\nPublish minecraft-custom-mod-builder v1.0.1\n\nv1.0.0 | 2026-06-23T22:14:35.733Z | user\n\nPublish minecraft-custom-mod-builder v1.0.0\n\nArchive index:\n\nArchive v1.0.8: 4 files, 34631 bytes\n\nFiles: schema.md (25923b), skill-card.md (2687b), SKILL.md (84710b), _meta.json (147b)\n\nFile v1.0.8:SKILL.md\n\n---\nname: minecraft-custom-mod-builder\ndescription: \"Minecraft Custom Mod Builder: Generate and verify structured Minecraft Bedrock, Bedrock skin pack, Fabric, and NeoForge projects. Use when an agent needs minecraft custom mod builder, create runtime verified bedrock add ons and skin packs; build and verify fabric and neoforge jars; generate typed items, blocks, entities, commands, create mod project, target platform, mod id through AgentPMT-hosted remote tool calls. Discovery terms: minecraft custom mod builder.\"\nversion: 1.0.8\nhomepage: https://www.agentpmt.com/marketplace/minecraft-custom-mod-builder\ncompatibility: \"Agent instructions for AgentPMT-hosted remote tool calls. Follow this skill body for supported account, wallet, and setup routes. No local command runtime is declared.\"\nmetadata: {\"author\":\"agentpmt\",\"openclaw\":{\"homepage\":\"https://www.agentpmt.com/marketplace/minecraft-custom-mod-builder\"}}\n---\n# Minecraft Custom Mod Builder\n\n## Freshness\nLast updated: `2026-07-14`.\n\nIf the current date is more than 7 days after the last updated date, reinstall this skill from skills.sh or ClawHub before relying on endpoints, schemas, setup steps, or examples.\n\n## What This Tool Does\nBuild structured Minecraft Bedrock add-ons, Bedrock skin packs, and Fabric/NeoForge projects with strict schemas, real runtime behavior checks, File Manager visual proof galleries, async install-readiness gates, and a full test loop for agent-edited source.\n\n## Product Instructions\n### Minecraft Mod Builder\n\nGenerate 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.\n\n#### Two Rules That Will Save You Many Retries\n\n##### Rule 1 — One ItemSpec equals one in-game item\n\nA 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.\n\nDo 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.\n\n##### Rule 2 — Every visible asset requires a texture\n\nItems, blocks, entities, particles, named texture assets, machines, storage, and skin-pack skins must each carry a `texture` with one of these three sources:\n\n* `source_base64` — base64-encoded PNG or JPEG bytes (max 1024×1024, max 5 MB).\n* `source_file_id` — a File Manager file_id for a user-uploaded image.\n* `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; model-compatible cuboid atlas). 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.\n\nA 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.\n\n**Java armor inventory icons must ship a real PNG.** `item_kind=\"armor\"` rejects `color_hex`-only textures (`MINECRAFT_ARMOR_TEXTURE_REQUIRES_IMAGE`) because that produces only a flat inventory square. Supply `source_base64` or `source_file_id` for every helmet/chestplate/leggings/boots. Declarative Java armor uses the selected vanilla iron/gold/diamond/netherite equipment asset while worn; the supplied image is the inventory icon, not a wearable UV atlas. A custom material or custom worn texture must use the agent-edited source workflow and pass client/runtime verification. Declarative Bedrock armor is rejected because a wearable item without a verified attachable would be invisible on the wearer.\n\n##### Authoring textures with the Icon Generator + `pixelize_to`\n\nThe 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`.\n\nWhen 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`.\n\nRecommended 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.\n\n#### Request Shape Rules\n\nPrefer the canonical field names below. The backend accepts the listed aliases when they are exact equivalents, but canonical names make the generated schema and validation errors easier to follow.\n\n##### Verified async builds and install readiness\n\nUse `start_build_job` for anything the user should install. It validates the request, queues the build, and returns immediately with `task_id` and `status=\"queued\"`. Poll with `get_build_job` using the same `task_id` until `status` is `completed` or `failed`.\n\n`start_build_job` defaults to `verification_level=\"behavior\"`. The completed job result includes:\n\n* `runtime_verification` — boot/behavior/render/client checks or the exact reason verification could not run.\n* `visual_proof` — File Manager–hosted PNG frames (texture enlargements, entity composites, particle sheets, and Java in-game client screenshots when the client lane runs). Each frame has `signed_url`, `file_id`, `caption`, and machine checks. Video clips are not part of this surface yet.\n* `quality_gate` — `passed`, `failed`, `blocked`, or `unverified`. Visual fidelity/frame failures use `MINECRAFT_VISUAL_FIDELITY_INSUFFICIENT` or `MINECRAFT_VISUAL_PROOF_FAILED`.\n* `ready_for_install` — `true` only when the quality gate passed (behavior **and** required visual proof).\n* `verification_not_run` — `true` when the requested runtime checks did not execute.\n* `request_classification` — `supported_declarative`, `needs_agent_code`, or `platform_constrained`.\n\n**Agent visual review is mandatory.** Before telling a user a mod is finished, open every `visual_proof.frames[].signed_url` (or use the File Manager tool with each frame `file_id` under the same budget) and confirm the art matches the request. The same frames are also listed in `artifacts[]` with `label=visual_proof_frame`. Do not claim success from behavior checks alone. If frames show flat colored squares, missing identity art, wrong subjects, or unusable scale, fix textures (`source_base64` / `source_file_id`, not only `color_hex` for armor, food, entities, particles, machines, or skins) or edit source and re-run `start_build_job`.\n\nTreat `ready_for_install=false`, `quality_gate.status!=\"passed\"`, `verification_not_run=true`, or `visual_proof.status` in `{failed,partial}` on a behavior job as \"fix the spec/art/source and rerun.\" Do not present those artifacts as working mods even if the task status is `completed`; completed only means the job produced inspectable output.\n\nA generated `behavior` job must declare at least one concrete feature, advanced resource, or skin. Use `create_mod_project` or `verification_level=\"off\"` for an intentionally empty scaffold; an empty project cannot be certified as a functional mod.\n\nUse `list_build_jobs` with `limit` (`1` to `100`) to inspect recent build jobs for the current budget.\n\n`create_mod_project` remains synchronous and unverified. It accepts only `verification_level=\"off\"` and returns `ready_for_install=false`. Use it for fast source/debug output, not final user delivery.\n\nUse `verification_level=\"boot_smoke\"` only when the user explicitly wants a faster runtime-load check instead of behavior checks. Use `verification_level=\"off\"` only for debug/source iteration and tell the user the result is unverified.\n\n##### Agent-edited source testing\n\nFor behavior the declarative schema cannot faithfully express, generate source first, edit the code, upload a zip, then call `start_build_job` with:\n\n```json\n{\n  \"action\": \"start_build_job\",\n  \"target_platform\": \"fabric\",\n  \"mod_id\": \"edited_mod\",\n  \"authoring_mode\": \"agent_code\",\n  \"source_archive_file_id\": \"file_...\",\n  \"source_test_mode\": \"test_only\",\n  \"verification_contract\": {\n    \"schema_version\": \"1\",\n    \"target_platform\": \"fabric\",\n    \"mod_id\": \"edited_mod\",\n    \"user_intent_summary\": \"Using the edited mod marks the player as verified.\",\n    \"expected_checks\": [\n      {\n        \"check_id\": \"boot\",\n        \"description\": \"The edited mod boots without registration errors.\",\n        \"check_kind\": \"boot\"\n      },\n      {\n        \"check_id\": \"player_marked\",\n        \"description\": \"The edited behavior adds the edited_mod_verified player tag.\",\n        \"check_kind\": \"behavior\",\n        \"assertion_kind\": \"tag_present\",\n        \"target\": \"edited_mod_verified\"\n      }\n    ]\n  }\n}\n```\n\n`source_test_mode` defaults to `test_only`; use that mode while iterating. Set `source_test_mode=\"test_and_package\"` only when the runtime report passes; install artifacts are returned only when `ready_for_install=true`. Do not put verifier files under `.agentpmt/verification/**` into shipped artifacts.\n\nFor `verification_level=\"behavior\"`, the contract must include at least one `behavior`, `render`, or `client` check. A contract containing only `boot` and/or `static` checks is rejected because loading and file presence do not prove requested behavior. Use `verification_level=\"boot_smoke\"` when load-only verification is the actual goal; boot-smoke output is never install-ready.\n\n`authoring_mode` is deterministic: `auto` and `declarative` validate the typed feature schema; `agent_code` requires `source_archive_file_id` on `start_build_job`. The service never guesses this route from keywords in a prompt.\n\nEvery edited-source check must be machine-observable. Contract assertion kinds are grouped by surface:\n\n| `check_kind` | Allowed `assertion_kind` values |\n|---|---|\n| `boot` | `boot_loaded` |\n| `behavior` | `command_succeeds`, `scoreboard_value`, `scoreboard_delta`, `tag_present`, `tag_absent`, `effect_present`, `block_state`, `entity_present`, `entity_spawned`, `item_present`, `item_granted`, `item_dropped`, `teleport_delta`, `time_window`, `weather_state`, `machine_output` |\n| `static` | `file_exists` |\n| `render` | `render_coverage` |\n| `client` | `client_option_state`, `message_observed`, `title_observed`, `screenshot_marker` |\n\nUse `setup_commands` for bounded Minecraft-world setup and `trigger_command` for the command that causes the behavior. `scoreboard_value` and `scoreboard_delta` targets are `objective` or `objective:holder`; item, entity, effect, and block assertions use namespaced identifiers; `teleport_delta.expected_value` is an `x,y,z` offset; `time_window.target` uses the documented time keywords; `weather_state.target` is `clear`, `rain`, or `thunder`; `screenshot_marker.target` is `#RRGGBB` and its optional `expected_value` is a minimum pixel count. `message_observed` and `title_observed` compare exact text from the actual Java client GUI. `screenshot_marker` inspects the framebuffer. Self-reported log/client markers are not accepted as proof. The nonce-bound `AGENTPMT_RUNTIME` marker family is harness-private and rejected in uploaded source.\n\nWhen typed postconditions cannot trigger the edited code directly, include the applicable verifier overlay in the source zip. Java server checks use `.agentpmt/verification/java/AgentpmtCustomVerifier.java` with `public static void verify(String checkId, ServerLevel serverLevel, ServerPlayer player)`. Java client checks may add `.agentpmt/verification/java/AgentpmtCustomClientVerifier.java` with `public static void verify(String checkId, Minecraft client)`. Bedrock uses `.agentpmt/verification/bedrock/custom_verifier.js` with `export function verifyCustomCheck(checkId, context)`. A Java archive may include both server and client verifier files when its contract has both surfaces. The harness always evaluates its built-in postcondition first, then runs a supplied custom verifier before recording success; agent-supplied verifier code is never the sole proof. The verifier must throw on failure and cannot replace a generic postcondition. Verifier overlays and `.agentpmt/runtime/**` are reserved, throwaway paths and never ship in artifacts.\n\nFor `client_option_state`, set `target` to `render_distance`, `simulation_distance`, `entity_distance_scaling`, `gamma`, `graphics_mode`, `cloud_status`, or `particles`, and set `expected_value` to the exact requested value. Use `message_observed`/`title_observed` for text and `screenshot_marker` with a `#RRGGBB` target for arbitrary visual overlays or particles; do not ask verifier code to certify its own output.\n\nUploaded Java build scripts, wrappers, `buildSrc`, alternate Gradle hooks, generated output/cache directories (`build`, `.gradle`, `out`, `target`), and precompiled Java/native binaries are not trusted. The service rejects generated outputs and precompiled `.class`/`.jar`/native-library files, replaces executable Gradle configuration with the pinned loader template, passes an explicit allowlisted child environment, and gives each job a disposable Gradle home backed by read-only shared caches. Submit editable source and ordinary resource assets only. Agent-edited source executes only in a private disposable Cloud Run worker with a dedicated no-role service account and one verification request per process. If that worker is unavailable, verification fails closed and the artifact is not install-ready.\n\n`advanced_resources` is for non-executable data/resource files and Bedrock `.mcfunction` files. It rejects Java source and `behavior_pack/scripts/*.js`. To change executable Fabric, NeoForge, or Bedrock Script API code, edit the generated project and submit the complete zip with `authoring_mode=\"agent_code\"`; do not try to inject executable code through a declarative request.\n\n##### Bedrock custom namespace\n\nFor Bedrock add-ons, generated custom in-game identifiers use the Creator Tools namespace `creator_project:<id>`. Keep using `mod_id` for the request, artifact naming, file paths, and Java platforms. In Bedrock specs, short ids (`\"ruby\"`) and legacy `<mod_id>:<id>` refs still resolve to the generated custom feature; the emitted pack rewrites them to `creator_project:<id>`. Use `minecraft:<id>` for vanilla content and other explicit namespaces for external content.\n\n##### Creative world mechanics and fidelity\n\nPrank, cursed, chaotic, fake-glitch, admin, debug, and rule-bending ideas are valid requests when you express them as deterministic in-world mechanics. Use `features.events`, `features.commands`, conditions, scoreboards, tags, particles, sounds, titles, messages, gamerules, time/weather actions, block changes, explosions, lightning, and relative teleports when those primitives faithfully match the user's requested behavior.\n\nDo not silently reinterpret intent. If the declarative schema can faithfully express the request, use it. If it cannot, classify the request as `needs_agent_code`, generate the typed base project, implement the requested code, and submit it back through the agent-edited source testing loop. If a substitution is user-approved, set `fidelity_policy=\"acknowledged_approximation\"` and still require the quality gate.\n\nThis deterministic builder does not generate arbitrary client mixins, shader loaders, native code, optimization core patches, or custom packet frameworks through the declarative schema. Those requests belong in the agent-edited source workflow, not in a closest-supported substitution presented as success.\n\n##### Implementation truth\n\nComments, debug chat, README guidance, and metadata do not count as mechanics. Every accepted declarative action has a concrete platform implementation and a runtime assertion. A mechanic without that implementation rejects with `MINECRAFT_CAPABILITY_NOT_IMPLEMENTED`, including its exact field path and `required_next_action=\"edit_source_and_start_build_job\"`. There is no policy that converts incomplete behavior into a successful mod.\n\nFeatures whose `enabled_platforms` exclude the selected `target_platform` are rejected with `MINECRAFT_PLATFORM_FEATURE_MISMATCH`; they are not dropped from the generated mod.\n\nThe request contract is pinned to `schema_version=\"2026-05-05-v2\"` and `compatibility_mode=\"strict\"`. The former platform-passthrough mode was retired because it could report success after dropping features that excluded the selected platform.\n\nAction-specific top-level fields are fail-closed. `task_id` belongs only to `get_build_job`; `limit` only to `list_build_jobs`; preview fields only to `render_preview_image`; and `source_test_mode` plus `verification_contract` require `start_build_job` with `source_archive_file_id`. Build/output/verification options are accepted only by create/build actions. Remove accidental cross-action fields instead of expecting them to be ignored.\n\nBedrock declarative `features.dimensions` is rejected even when experiments are enabled because the pinned Creator Tools cooperative-add-on gate rejects dimension definitions (`CADDONIREQ191`/`CADDONREQ131`). Use an edited standalone behavior-pack project and retain the full verification gate for dimension work; the builder does not return a known-invalid cooperative add-on.\n\n##### Java client modules\n\nUse `features.client_modules` for Java-only client utility behavior on `target_platform=\"fabric\"` or `target_platform=\"neoforge\"`. Bedrock and skin packs reject client modules because they cannot install Java client code.\n\nSupported `module_kind` values:\n\n* `utility_client_preset` — general anarchy/utility preset for requests phrased as \"2b2t client\", \"anarchy client\", or \"hacked client\"; implements an FPS HUD, bounded typed performance-option updates, maximum-valid brightness, and TNT-cart placement scanning.\n* `fps_hud` — HUD-only FPS display.\n* `performance_profile` — FPS-oriented HUD plus typed client option updates for render distance, simulation distance, entity distance scale, fast graphics, clouds off, and minimal particles.\n* `tnt_cart_placement_esp` — client-side scanner for nearby rail blocks where TNT minecarts can be placed; renders a HUD count and nearest candidate coordinates.\n* `block_esp` — bounded client scanner for listed block identifiers.\n* `entity_esp` — bounded client scanner for listed entity identifiers.\n* `fullbright` — sets the client gamma option to Minecraft's maximum valid brightness.\n\nCommon aliases are accepted for `module_kind`: `hacked_client`, `anarchy_client`, `2b2t_client`, and `utility_client` normalize to `utility_client_preset`; `shizik`, `fps_boost`, and `optimization_client` normalize to `performance_profile`; `tnt_esp`, `tnt_cart_esp`, and `minecart_tnt_esp` normalize to `tnt_cart_placement_esp`. Renderer-hybrid aliases are recognized only so validation can return the edited-source next action; they do not generate metadata in place of renderer code.\n\nClient-module options:\n\n| field | Applies to | Notes |\n|---|---|---|\n| `scan_radius` | ESP modules | Horizontal scan radius, `4` to `64`; default `24`. |\n| `update_interval_ticks` | all modules | Refresh interval, `1` to `200`; default `10`. |\n| `max_rendered_markers` | ESP modules | Maximum retained HUD markers, `1` to `128`; default `32`. |\n| `render_style` | ESP modules | Only `hud` is supported in this release; outline modes are rejected instead of ignored. |\n| `color_hex` | all modules | HUD/overlay accent color; accepts the same color forms as textures. |\n| `identifiers` | `block_esp`, `entity_esp` | Required list of block/entity ids to scan for. |\n| `performance_mode` | `performance_profile`, `utility_client_preset` | `balanced`, `fps`, or `quality`; default `balanced`. |\n| `max_render_distance` | performance modules | Applied render-distance option, `2` to `32`; default `8`. |\n| `max_simulation_distance` | performance modules | Applied simulation-distance option, `5` to `32`; default `5`. |\n| `entity_distance_scale` | performance modules | Applied entity render-distance scale, `0.1` to `1.0`; default `0.5`. |\n\nRenderer rewrites require real loader-specific code and dependencies. Submit that edited Java source with a client verification contract; the declarative path rejects it instead of returning a misleading metadata-only artifact.\n\nExamples:\n\n```json\n{\n  \"client_modules\": [\n    {\n      \"module_id\": \"anarchy_utility\",\n      \"display_name\": \"Anarchy Utility\",\n      \"module_kind\": \"2b2t_client\",\n      \"color_hex\": \"lime\",\n      \"scan_radius\": 32,\n      \"max_rendered_markers\": 48\n    }\n  ]\n}\n```\n\n```json\n{\n  \"client_modules\": [\n    {\n      \"module_id\": \"shizik_profile\",\n      \"display_name\": \"Shizik FPS Profile\",\n      \"module_kind\": \"shizik\",\n      \"performance_mode\": \"fps\",\n      \"max_render_distance\": 6,\n      \"max_simulation_distance\": 5,\n      \"entity_distance_scale\": 0.35\n    }\n  ]\n}\n```\n\n```json\n{\n  \"client_modules\": [\n    {\n      \"module_id\": \"tnt_cart_spots\",\n      \"display_name\": \"TNT Cart Placement ESP\",\n      \"module_kind\": \"tnt_cart_placement_esp\",\n      \"scan_radius\": 48,\n      \"update_interval_ticks\": 5,\n      \"max_rendered_markers\": 64,\n      \"color_hex\": \"#ff3355\"\n    }\n  ]\n}\n```\n\n##### Versions, colors, and locales\n\nOmit `minecraft_version` unless the user explicitly requires the pinned supported version. Each platform has one supported version in `list_capabilities`; unsupported older/newer versions are rejected instead of guessed. Whitespace is ignored, and `v` is accepted only when the remaining value exactly matches the pinned version.\n\nColor fields (`color_hex`, `brand_color_hex`, `hover_text_color`, `map_color`, `default_color`) accept `#RRGGBB`, six-digit hex without `#`, three-digit short hex, or these color names: `black`, `white`, `red`, `green`, `blue`, `yellow`, `orange`, `purple`, `pink`, `brown`, `gray`, `grey`, `cyan`, `magenta`, `lime`, `gold`, `silver`. Values are normalized to lowercase `#rrggbb`.\n\nLocales use `ll_RR`, such as `en_US`. Lowercase or hyphenated equivalents like `en_us`, `en-us`, and `en-US` are normalized.\n\n##### Scoreboards, commands, functions, rarity\n\nUse `objective_id` for scoreboards. Accepted aliases: `scoreboard_id`, `objective`. Use `criterion`; `criteria` is accepted.\n\nUse `description` for commands. `display_name` is accepted as an alias when `description` is absent.\n\nFunctions may include optional `description` metadata. Use `lines`; `commands` is accepted as an alias when `lines` is absent.\n\nStructured Bedrock functions are emitted under `behavior_pack/functions/agentpmt/<mod_id>/`. Advanced `.mcfunction` resources sent at older locations under `behavior_pack/functions/` are moved into that same cooperative namespace, and exact references between uploaded functions are rewritten automatically so Creator Tools does not reject loose files.\n\n`features.functions[]` requires at least one single-line Minecraft command in `lines` (or its `commands` alias); empty functions, multiline input, and shell commands reject before generation. Java `features.tags[]` likewise requires at least one valid resource id in `values`; short ids and short `#tag` references are namespaced to the current mod. Every `features.localizations[]` entry requires a non-empty translation mapping so the builder never emits an inert language file.\n\nUse `rarity.value` for item rarity. `rarity.rarity` and `rarity.name` are accepted aliases.\n\nHistorical exact aliases also normalize when the intent is deterministic:\n\n| Location | Canonical field/value | Accepted alias |\n|---|---|---|\n| `ItemSpec` food field | `saturation` | top-level `saturation_modifier` |\n| `ItemSpec` bow-like item | `item_kind=\"projectile\"` + `shooter` | `tool_type=\"bow\"` |\n| `BlockSpec.block_kind` | `basic` | `generic` |\n| `UISpec.ui_kind` | `hud_overlay` | `hud`, `overlay`, `screen_overlay` |\n| `UISpec.ui_kind` | `key_mapping` | `keybind`, `key_binding` |\n| `RecipeSpec.result_item` | `result_item` | `result`, `output`, `output_item`, `item_result`, `block_result`, `result_block`, `output_block`, `block_output` |\n\n##### ActionSpec aliases\n\nEvery action uses `action_kind`. `particle_effect` and `spawn_particles` are accepted as `action_kind` aliases for `spawn_particle`.\n\nBroadcast aliases are accepted for message/title actions: `broadcast_message`, `broadcast_chat`, `announce_message`, and `global_message` normalize to `send_message` with `audience=\"all_players\"`; `broadcast_title`, `announce_title`, and `global_title` normalize to `show_title` with `audience=\"all_players\"`.\n\nWhen an action needs a target resource, prefer `identifier`. Accepted exact aliases:\n\n| action_kind | Canonical field | Accepted aliases |\n|---|---|---|\n| `apply_effect`, `remove_effect` | `identifier` | `effect`, `effect_id` |\n| `spawn_entity` | `identifier` | `entity`, `entity_id` |\n| `play_sound` | `identifier` | `sound`, `sound_id` |\n| `spawn_particle` | `identifier` | `particle`, `particle_id` |\n| `add_tag`, `remove_tag` | `identifier` | `tag`, `tag_id` |\n| `give_item`, `drop_item` | `identifier` | `item`, `item_id` |\n| `give_item`, `drop_item` | `value` | `count`, `amount` |\n| `replace_held_item` | `identifier` | `item`, `item_id` |\n| `apply_damage`, `heal` | `value` | `amount` |\n| `set_block`, `place_block` | `identifier` | `block`, `block_id` |\n| `set_scoreboard` | `identifier` | `objective`, `objective_id`, `scoreboard_id` |\n| `set_scoreboard` | `value` | `score`, `amount`, `delta` |\n| `award_advancement` | `identifier` | `advancement`, `advancement_id` |\n| `modify_attribute` | `identifier` | `attribute`, `attribute_id` |\n| `modify_attribute` | `value` | `amount`, `level` |\n| `set_cooldown` | `identifier` | `cooldown`, `cooldown_id`, `cooldown_category` |\n| `play_animation` | `identifier` | `animation`, `animation_id` |\n| `change_dimension` | `identifier` | `dimension`, `dimension_id` |\n| `run_command` | `command` | `command_line`, `minecraft_command` |\n| `send_message`, `show_title` | `message` | `text`, `title` |\n| `show_title` | `title_display` | `display` |\n| `set_time` | `value` | `time`, `time_of_day` |\n| `set_weather` | `identifier` | `weather`, `weather_id` |\n\n##### Action options\n\nUse these optional action fields only on the listed `action_kind`; unsupported combinations are rejected instead of ignored.\n\n| action_kind | Supported options |\n|---|---|\n| `play_sound` | `volume` (`0` to `16`), `pitch` (`>0` to `4`), `position` |\n| `spawn_particle` | `count` (`1` to `256`), `spread_x`, `spread_y`, `spread_z` (`0` to `16`), `position` |\n| `spawn_entity`, `teleport`, `set_block`, `place_block`, `break_block_with_drops`, `create_explosion`, `summon_lightning` | `position` |\n| `apply_effect` | `amplifier` (`0` to `255`) |\n| `run_command` | required `command` |\n| `send_message`, `show_title` | required `message` or scalar `value` text |\n| `give_item`, `drop_item`, `apply_damage`, `heal`, `damage_item`, `repair_item` | optional positive integer `value` |\n| `modify_attribute` | optional finite numeric `value` (defaults to `1`) |\n| `create_explosion` | optional finite numeric `value > 0` for power (defaults to `2`) |\n| `set_scoreboard` | `operation`: `set`, `add`, or `remove` |\n| `send_message`, `show_title` | `audience`: `source` or `all_players` |\n| `show_title` | `title_display`: `title`, `subtitle`, or `actionbar`; optional `fade_in_ticks`, `stay_ticks`, and `fade_out_ticks` together |\n| `set_time` | `value`: `day`, `night`, `noon`, `midnight`, or an integer from `0` to `24000` |\n| `set_weather` | `identifier`: `clear`, `rain`, or `thunder` |\n| `apply_effect`, `set_on_fire`, `set_weather`, `wait` | `duration_ticks` (`1` to `72000` game ticks) |\n| `apply_effect`, `apply_damage`, `heal`, `set_on_fire`, `add_tag`, `remove_tag` | `radius` (`>0` to `64`) and optional `radius_filter`: `all_entities`, `players`, `hostile_mobs`, or `non_player_entities` |\n| any executable action except `wait` | `chance_percent` (`>0` to `100`) |\n\n`position` is always a relative offset from the event target or event block, never an absolute world coordinate. Send it as `{\"x\": x, \"y\": y, \"z\": z}` or `[x, y, z]` with integer coordinates from `-32` to `32`.\n\n`set_entity_target`, `mount_entity`, and `tame_entity` operate on the event target. Add a `target_entity` condition identifying a compatible mob. For backward compatibility, `identifier`, `entity`, or `entity_id` supplied on one of these actions inside an event is moved to that condition when it does not conflict with an explicit condition. Bedrock rejects `set_entity_target` because the stable Script API exposes the AI target as read-only. `mount_entity` and `tame_entity` reject targets that do not expose the required platform component/API.\n\nFor `send_message` and `show_title`, `target` is accepted only as an audience alias when it is one of `source`, `self`, `player`, `@s`, `all`, `everyone`, `all_players`, `@a`, or `broadcast`. Use canonical `audience` in new requests.\n\nFor `give_item`, `drop_item`, `apply_damage`, and `heal`, any provided `value` or accepted value alias must be an integer `>= 1`.\n\nGeneric action fields are fail-closed: `identifier`, `value`, `command`, `message`, and `amplifier` reject on action kinds that do not consume them. Remove an accidental field or use the canonical field for the intended action; the builder never silently drops it.\n\nFor `set_scoreboard`, `operation` defaults to `set`. Use `add` to increment and `remove` to decrement; both require a positive integer `value` or accepted value alias. Use the opposite operation instead of negative deltas.\n\nUse `wait` inside event or Script API command action lists to delay all following actions. A wait must be followed by an executable action, consecutive waits must be combined, and `chance_percent` belongs on the following action or owning event rather than the wait. Bedrock `.mcfunction` commands cannot express `wait` or `chance_percent`; use `simple_command` or `argument_command` for those.\n\n##### Custom command parameters\n\nUse `command_kind=\"argument_command\"` with `parameters` for runtime command input. Parameter names are referenced in action `message` or `command` strings as `{param:name}`.\n\nSupported `param_type` values are `string`, `integer`, `float`, and `player_name`. A `string` parameter is greedy text and must be last. Optional parameters must come after all required parameters. Example:\n\n```json\n{\n  \"commands\": [\n    {\n      \"command_id\": \"announce\",\n      \"description\": \"Broadcast a title.\",\n      \"command_kind\": \"argument_command\",\n      \"permission_level\": \"op\",\n      \"parameters\": [{\"name\": \"message\", \"param_type\": \"string\"}],\n      \"actions\": [\n        {\n          \"action_kind\": \"show_title\",\n          \"audience\": \"all_players\",\n          \"title_display\": \"actionbar\",\n          \"message\": \"{param:message}\",\n          \"fade_in_ticks\": 5,\n          \"stay_ticks\": 60,\n          \"fade_out_ticks\": 10\n        }\n      ]\n    }\n  ]\n}\n```\n\nFor `spawn_particle`, omitting `count` and spread fields preserves each platform generator's default particle behavior. Send explicit values when the count or spread matters.\n\n##### ConditionSpec aliases\n\nEvery condition uses `condition_kind`. Prefer `identifier`; accepted exact aliases are `item`/`item_id` for `held_item`, `entity`/`entity_id` for `target_entity`, `block` for `block_id`, `biome` for `biome_id`, `tag`/`tag_id` for `has_tag`, and `objective`/`objective_id`/`scoreboard_id` for `score_at_least`. For `score_at_least`, `score` and `amount` are accepted aliases for `value`.\n\n##### Condition value reference\n\n- `entity_within_radius`: `value` is an integer radius from `1` to `64`; optional `identifier` filters the nearby entity type, for example `{\"condition_kind\":\"entity_within_radius\",\"identifier\":\"minecraft:player\",\"value\":12}`.\n- `time_of_day`: `value` is one of `day`, `night`, `dawn`, `sunrise`, `morning`, `noon`, `dusk`, `sunset`, or `midnight`.\n- `weather_is`: Java only; `identifier` is one of `clear`, `rain`, or `thunder`.\n- `y_below`: `value` is an attainable Overworld threshold from `-63` to `320`; `y_above` accepts `-64` to `319`.\n- `light_level_below`: Java only; `value` is an integer from `1` to `15` (`0` is impossible because light levels are never negative).\n\n#### Recipes\n\nEach recipe is a minimal copy-pasteable spec. Drop the recipe inside the `features` block of a `start_build_job` request along with `target_platform`, `mod_id`, and `mod_name`.\n\n##### Recipe 1 — A diamond sword\n\n```json\n{\n  \"items\": [\n    {\n      \"item_id\": \"flame_sword\",\n      \"display_name\": \"Flame Sword\",\n      \"item_kind\": \"weapon\",\n      \"tool_type\": \"sword\",\n      \"tool_tier\": \"diamond\",\n      \"damage\": 7,\n      \"texture\": {\"color_hex\": \"#ff5522\"}\n    }\n  ]\n}\n```\n\nThe validator confirms `item_kind=\"weapon\"` with `tool_type=\"sword\"`. The renderer expands `#ff5522` into a sword sprite. The item lands in the Equipment creative tab. Durability, repair material, enchantability, hand-equipped rendering, and the sword-tag default come from `tool_tier=\"diamond\"`.\n\n##### Recipe 2 — An iron pickaxe\n\n```json\n{\n  \"items\": [\n    {\n      \"item_id\": \"iron_pickaxe\",\n      \"display_name\": \"Iron Pickaxe\",\n      \"item_kind\": \"tool\",\n      \"tool_type\": \"pickaxe\",\n      \"tool_tier\": \"iron\",\n      \"texture\": {\"color_hex\": \"#cccccc\"}\n    }\n  ]\n}\n```\n\n`tool_type=\"pickaxe\"` is required: tools without `tool_type` are rejected because the icon and dig speed would be non-deterministic. Default damage/durability come from `tool_tier=\"iron\"`. Substitute `axe`, `shovel`, or `hoe` for other vanilla tool kinds.\n\n##### Recipe 3 — A custom-tier weapon\n\n```json\n{\n  \"items\": [\n    {\n      \"item_id\": \"void_blade\",\n      \"display_name\": \"Void Blade\",\n      \"item_kind\": \"weapon\",\n      \"tool_type\": \"custom\",\n      \"tool_tier\": \"custom\",\n      \"damage\": 12,\n      \"durability\": 3000,\n      \"tool\": {\n        \"tool_type\": \"custom\",\n        \"tier\": \"custom\",\n        \"attack_damage\": 12,\n        \"attack_speed\": 1.4\n      },\n      \"repairable\": {\"repair_items\": [{\"item\": \"minecraft:netherite_ingot\", \"repair_amount\": 50}]},\n      \"enchantable\": {\"slot\": \"sword\", \"value\": 18},\n      \"texture\": {\"color_hex\": \"#2a0033\"}\n    }\n  ]\n}\n```\n\nUse `custom` to opt out of tier defaults. Declare `damage`, `durability`, `tool.attack_speed`, `repairable`, and `enchantable` explicitly.\n\n##### Recipe 3b — A pickaxe that mines every block\n\n```json\n{\n  \"items\": [\n    {\n      \"item_id\": \"godpick\",\n      \"display_name\": \"Godpick\",\n      \"item_kind\": \"tool\",\n      \"tool_type\": \"pickaxe\",\n      \"tool_tier\": \"netherite\",\n      \"tool\": {\n        \"tool_type\": \"pickaxe\",\n        \"tier\": \"netherite\",\n        \"break_all_blocks\": true,\n        \"instabreak\": true\n      },\n      \"texture\": {\"color_hex\": \"#ffd700\"}\n    }\n  ]\n}\n```\n\n`tool.break_all_blocks=true` tells the generator: this tool ignores the vanilla pickaxe/axe/shovel/hoe destructible tags and mines *every* block. Bedrock emits a Molang-true tag predicate on `minecraft:digger.destroy_speeds`; Java upgrades the tier to netherite so the tool's `INCORRECT_FOR` block tag is effectively empty. Pair with `instabreak: true` for one-shot mining.\n\n##### Recipe 4 — A full Java diamond armor set\n\n```json\n{\n  \"items\": [\n    {\"item_id\": \"set_helmet\", \"display_name\": \"Set Helmet\", \"item_kind\": \"armor\", \"tool_tier\": \"diamond\", \"armor\": {\"slot\": \"head\",  \"protection\": 3, \"toughness\": 2}, \"texture\": {\"source_base64\": \"<base64 PNG of the helmet icon>\"}},\n    {\"item_id\": \"set_chest\",  \"display_name\": \"Set Chest\",  \"item_kind\": \"armor\", \"tool_tier\": \"diamond\", \"armor\": {\"slot\": \"chest\", \"protection\": 8, \"toughness\": 2}, \"texture\": {\"source_base64\": \"<base64 PNG of the chestplate icon>\"}},\n    {\"item_id\": \"set_legs\",   \"display_name\": \"Set Legs\",   \"item_kind\": \"armor\", \"tool_tier\": \"diamond\", \"armor\": {\"slot\": \"legs\",  \"protection\": 6, \"toughness\": 2}, \"texture\": {\"source_base64\": \"<base64 PNG of the leggings icon>\"}},\n    {\"item_id\": \"set_boots\",  \"display_name\": \"Set Boots\",  \"item_kind\": \"armor\", \"tool_tier\": \"diamond\", \"armor\": {\"slot\": \"feet\",  \"protection\": 3, \"toughness\": 2}, \"texture\": {\"source_base64\": \"<base64 PNG of the boots icon>\"}}\n  ]\n}\n```\n\nOne `ItemSpec` per armor slot. `armor.slot` is required: head/chest/legs/feet. `tool_tier` must be `iron`, `gold`, `diamond`, or `netherite` and selects the vanilla armor material (sound, repair item, durability, and worn equipment asset). Supply a real PNG for the inventory icon; `color_hex` is rejected with `MINECRAFT_ARMOR_TEXTURE_REQUIRES_IMAGE`. Use edited source for wood/stone/custom armor materials or a custom worn atlas.\n\n##### Recipe 5 — A food item\n\n```json\n{\n  \"items\": [\n    {\n      \"item_id\": \"spicy_jerky\",\n      \"display_name\": \"Spicy Jerky\",\n      \"item_kind\": \"food\",\n      \"food\": {\n        \"nutrition\": 7,\n        \"saturation_modifier\": 0.6,\n        \"effects\": [{\"effect\": \"minecraft:fire_resistance\", \"chance\": 1.0, \"duration_seconds\": 30, \"amplifier\": 0}]\n      },\n      \"texture\": {\"color_hex\": \"#7a3a1a\"}\n    }\n  ]\n}\n```\n\nPair `item_kind=\"food\"` with the `food` preset. The food preset emits the eat animation, hunger restore, and any post-consumption effects.\n\n##### Recipe 6 — A bow that fires arrows\n\n```json\n{\n  \"items\": [\n    {\n      \"item_id\": \"magic_arrow\",\n      \"display_name\": \"Magic Arrow\",\n      \"item_kind\": \"projectile\",\n      \"projectile\": {\"projectile_entity\": \"minecraft:arrow\"},\n      \"texture\": {\"color_hex\": \"#88aaff\"}\n    },\n    {\n      \"item_id\": \"magic_bow\",\n      \"display_name\": \"Magic Bow\",\n      \"item_kind\": \"projectile\",\n      \"shooter\": {\"charge_on_draw\": true, \"scale_power_by_draw_duration\": true, \"ammunition\": [\"modid:magic_arrow\"], \"max_draw_duration\": 1.0},\n      \"texture\": {\"color_hex\": \"#552200\"}\n    }\n  ]\n}\n```\n\nTwo items: one for the projectile, one for the launcher. Both carry `item_kind=\"projectile\"`; the launcher has the `shooter` preset.\n\n##### Recipe 7 — An ore plus its worldgen and drop\n\n```json\n{\n  \"blocks\": [\n    {\n      \"block_id\": \"ruby_ore\",\n      \"display_name\": \"Ruby Ore\",\n      \"block_kind\": \"ore\",\n      \"hardness\": 3.0,\n      \"resistance\": 8.0,\n      \"drops\": [\"modid:ruby\"],\n      \"texture\": {\"color_hex\": \"#c91140\"}\n    }\n  ],\n  \"items\": [\n    {\n      \"item_id\": \"ruby\",\n      \"display_name\": \"Ruby\",\n      \"item_kind\": \"generic\",\n      \"texture\": {\"color_hex\": \"#c91140\"}\n    }\n  ],\n  \"worldgen\": [\n    {\n      \"feature_id\": \"ruby_ore_feature\",\n      \"feature_kind\": \"ore_feature\",\n      \"block_id\": \"ruby_ore\",\n      \"target_block\": \"minecraft:stone\",\n      \"vein_size\": 6,\n      \"count_per_chunk\": 4,\n      \"min_y\": -32,\n      \"max_y\": 48\n    }\n  ]\n}\n```\n\n`drops` references an item id by namespace. The mined `ruby` is `item_kind=\"generic\"` — it is a raw material that another recipe consumes; it does not need a tool/armor/food preset.\n\n##### Recipe 8 — A hostile mob\n\n```json\n{\n  \"entities\": [\n    {\n      \"entity_id\": \"shadow_stalker\",\n      \"display_name\": \"Shadow Stalker\",\n      \"entity_kind\": \"hostile_mob\",\n      \"health\": 30,\n      \"attack_damage\": 5,\n      \"movement_speed\": 0.32,\n      \"spawn_biomes\": [\"minecraft:dark_forest\", \"minecraft:taiga\"],\n      \"spawn_weight\": 12,\n      \"texture\": {\"color_hex\": \"#1a1a2e\"}\n    }\n  ]\n}\n```\n\nThe entity texture seeds both the mob model and the spawn-egg color. Bedrock additionally accepts `source_base64` or `source_file_id` to use a 64×64 PNG atlas.\n\n##### Recipe 9 — A tameable pet\n\n```json\n{\n  \"entities\": [\n    {\n      \"entity_id\": \"stone_lynx\",\n      \"display_name\": \"Stone Lynx\",\n      \"entity_kind\": \"tameable_pet\",\n      \"health\": 20,\n      \"attack_damage\": 4,\n      \"tameable\": {\"tame_items\": [\"minecraft:cooked_beef\"], \"probability\": 0.5},\n      \"texture\": {\"color_hex\": \"#9d8866\"}\n    }\n  ]\n}\n```\n\n`entity_kind=\"tameable_pet\"` plus the `tameable` preset enables the right-click-with-item taming flow.\n\n##### Recipe 10 — A weapon that sets enemies on fire\n\n```json\n{\n  \"items\": [\n    {\n      \"item_id\": \"flame_sword\",\n      \"display_name\": \"Flame Sword\",\n      \"item_kind\": \"weapon\",\n      \"tool_type\": \"sword\",\n      \"tool_tier\": \"diamond\",\n      \"damage\": 8,\n      \"texture\": {\"color_hex\": \"#ff5522\"}\n    }\n  ],\n  \"events\": [\n    {\n      \"event_id\": \"flame_sword_ignite\",\n      \"event_kind\": \"on_item_hit_entity\",\n      \"conditions\": [{\"condition_kind\": \"held_item\", \"identifier\": \"modid:flame_sword\"}],\n      \"actions\": [{\"action_kind\": \"set_on_fire\", \"duration_ticks\": 120}]\n    }\n  ]\n}\n```\n\nOne item, one event. The event filters by `held_item` (your sword's id) and emits `set_on_fire` against the hit entity. The event does *not* create a second item.\n\n##### Recipe 11 — A skin pack with one skin\n\n```json\n{\n  \"action\": \"start_build_job\",\n  \"target_platform\": \"bedrock_skinpack\",\n  \"mod_id\": \"blue_pack\",\n  \"mod_name\": \"Blue Pack\",\n  \"skin_pack\": {\n    \"pack_id\": \"blue_pack\",\n    \"display_name\": \"Blue Pack\",\n    \"skins\": [\n      {\n        \"skin_id\": \"blue_hero\",\n        \"display_name\": \"Blue Hero\",\n        \"texture\": {\"source_base64\": \"<base64-encoded 64x64 PNG>\"}\n      }\n    ]\n  }\n}\n```\n\nSkin pack textures must be exactly 64×64 PNG.\n\n##### Recipe 12 — A cursed prank item\n\n```json\n{\n  \"items\": [\n    {\n      \"item_id\": \"cursed_stick\",\n      \"display_name\": \"Cursed Stick\",\n      \"item_kind\": \"generic\",\n      \"texture\": {\"color_hex\": \"#7a35ff\"}\n    }\n  ],\n  \"events\": [\n    {\n      \"event_id\": \"cursed_stick_use\",\n      \"event_kind\": \"on_item_use\",\n      \"conditions\": [{\"condition_kind\": \"held_item\", \"identifier\": \"cursed_stick\"}],\n      \"actions\": [\n        {\"action_kind\": \"spawn_particle\", \"identifier\": \"minecraft:basic_flame_particle\", \"count\": 24, \"spread_x\": 2, \"spread_y\": 1, \"spread_z\": 2},\n        {\"action_kind\": \"play_sound\", \"identifier\": \"minecraft:block.note_block.pling\", \"volume\": 1.5, \"pitch\": 0.5},\n        {\"action_kind\": \"show_title\", \"message\": \"Something moved.\", \"audience\": \"source\"},\n        {\"action_kind\": \"teleport\", \"position\": [0, 3, 0]}\n      ]\n    }\n  ]\n}\n```\n\nUse relative `position` for harmless movement effects. The item stays one `ItemSpec`; the event supplies the prank behavior.\n\n##### Recipe 13 — A fake-glitch block event\n\n```json\n{\n  \"blocks\": [\n    {\n      \"block_id\": \"glitch_panel\",\n      \"display_name\": \"Glitch Panel\",\n      \"block_kind\": \"interactive\",\n      \"texture\": {\"color_hex\": \"#00ffff\"}\n    }\n  ],\n  \"events\": [\n    {\n      \"event_id\": \"glitch_panel_interact\",\n      \"event_kind\": \"on_block_interact\",\n      \"conditions\": [{\"condition_kind\": \"block_id\", \"identifier\": \"glitch_panel\"}],\n      \"actions\": [\n        {\"action_kind\": \"set_time\", \"time_of_day\": \"midnight\"},\n        {\"action_kind\": \"set_weather\", \"weather\": \"thunder\", \"duration_ticks\": 200},\n        {\"action_kind\": \"spawn_particle\", \"identifier\": \"minecraft:large_smoke\", \"count\": 48, \"spread_x\": 3, \"spread_y\": 2, \"spread_z\": 3},\n        {\"action_kind\": \"broadcast_message\", \"text\": \"World state desynchronized.\"}\n      ]\n    }\n  ]\n}\n```\n\nFake-glitch behavior should be built from world-side events, particles, titles/messages, time, weather, sounds, and block changes.\n\n##### Recipe 14 — An admin debug command\n\n```json\n{\n  \"commands\": [\n    {\n      \"command_id\": \"debug_storm\",\n      \"description\": \"Toggle a dramatic debug storm.\",\n      \"command_kind\": \"admin_command\",\n      \"permission_level\": \"admin\",\n      \"actions\": [\n        {\"action_kind\": \"set_gamerule\", \"identifier\": \"doDaylightCycle\", \"value\": false},\n        {\"action_kind\": \"set_time\", \"value\": \"night\"},\n        {\"action_kind\": \"set_weather\", \"identifier\": \"thunder\", \"duration_ticks\": 600},\n        {\"action_kind\": \"send_message\", \"message\": \"Debug storm enabled.\", \"audience\": \"all_players\"}\n      ]\n    }\n  ]\n}\n```\n\nUse `admin_command` plus `permission_level=\"admin\"` for operator tools. Prefer `set_gamerule`, `set_time`, and `set_weather` over raw command strings when those first-class actions cover the behavior.\n\n##### Recipe 15 — A chaos trap\n\n```json\n{\n  \"blocks\": [\n    {\n      \"block_id\": \"chaos_plate\",\n      \"display_name\": \"Chaos Plate\",\n      \"block_kind\": \"interactive\",\n      \"texture\": {\"color_hex\": \"#ff00ff\"}\n    }\n  ],\n  \"scoreboards\": [{\"objective_id\": \"chaos_triggers\", \"display_name\": \"Chaos Triggers\", \"criterion\": \"dummy\"}],\n  \"events\": [\n    {\n      \"event_id\": \"chaos_plate_trigger\",\n      \"event_kind\": \"on_block_interact\",\n      \"conditions\": [{\"condition_kind\": \"block_id\", \"identifier\": \"chaos_plate\"}],\n      \"actions\": [\n        {\"action_kind\": \"set_block\", \"identifier\": \"minecraft:gold_block\", \"position\": [0, -1, 0]},\n        {\"action_kind\": \"summon_lightning\", \"position\": [2, 0, 0]},\n        {\"action_kind\": \"create_explosion\", \"value\": 2, \"position\": [-2, 0, 0]},\n        {\"action_kind\": \"set_scoreboard\", \"identifier\": \"chaos_triggers\", \"operation\": \"add\", \"value\": 1}\n      ]\n    }\n  ]\n}\n```\n\nKeep high-impact effects bounded with explicit values and relative positions so the generated behavior remains predictable.\n\n##### Recipe 16 — Timed/random progression with milestones\n\n```json\n{\n  \"scoreboards\": [{\"objective_id\": \"weeks\", \"display_name\": \"Weeks\", \"criterion\": \"dummy\"}],\n  \"events\": [\n    {\n      \"event_id\": \"weekly_progress\",\n      \"event_kind\": \"on_player_tick\",\n      \"interval_ticks\": 1200,\n      \"cooldown_ticks\": 1200,\n      \"chance_percent\": 35,\n      \"actions\": [\n        {\"action_kind\": \"set_scoreboard\", \"identifier\": \"weeks\", \"operation\": \"add\", \"value\": 1},\n        {\"action_kind\": \"show_title\", \"audience\": \"source\", \"title_display\": \"actionbar\", \"message\": \"A week passes...\"}\n      ]\n    }\n  ]\n}\n```\n\nUse declared scoreboards for staged Java progress; the objective is created on server startup and behavior verification asserts that it exists. `set_scoreboard` can also create an undeclared writable objective at action time on both Java and Bedrock. A declared objective mutated by `set_scoreboard` must use `criterion=\"dummy\"` or `\"trigger\"`; read-only vanilla criteria reject before generation. Use `interval_ticks` for cadence, `cooldown_ticks` to prevent repeated firing, and `chance_percent` for random outcomes.\n\n##### Recipe 17 — A stalker entity with proximity behavior\n\n```json\n{\n  \"entities\": [\n    {\n      \"entity_id\": \"stalker\",\n      \"display_name\": \"Stalker\",\n      \"entity_kind\": \"hostile_mob\",\n      \"health\": 60,\n      \"movement_speed\": 0.35,\n      \"scale\": 2.5,\n      \"ai_goals\": [\n        {\"goal_kind\": \"nearest_attackable_target\", \"priority\": 1, \"search_radius\": 30},\n        {\"goal_kind\": \"melee_attack\", \"priority\": 2, \"speed_multiplier\": 1.25, \"attack_reach_multiplier\": 2.0}\n      ],\n      \"texture\": {\"color_hex\": \"#111111\"}\n    }\n  ],\n  \"events\": [\n    {\n      \"event_id\": \"stalker_charge\",\n      \"event_kind\": \"on_entity_tick\",\n      \"interval_ticks\": 20,\n      \"conditions\": [{\"condition_kind\": \"entity_within_radius\", \"identifier\": \"minecraft:player\", \"value\": 12}],\n      \"actions\": [\n        {\"action_kind\": \"wait\", \"duration_ticks\": 20},\n        {\"action_kind\": \"apply_effect\", \"identifier\": \"minecraft:slowness\", \"duration_ticks\": 80, \"radius\": 12, \"radius_filter\": \"players\"},\n        {\"action_kind\": \"spawn_particle\", \"identifier\": \"minecraft:basic_flame_particle\", \"count\": 16, \"spread_x\": 1, \"spread_y\": 2, \"spread_z\": 1}\n      ]\n    }\n  ]\n}\n```\n\n`attack_reach_multiplier` is Bedrock-only. Fabric and NeoForge reject it with an actionable platform error; use `search_radius` and radius actions for cross-platform sensing.\n\n##### Recipe 18 — A two-input machine\n\n```json\n{\n  \"items\": [\n    {\"item_id\": \"amalgam\", \"display_name\": \"Amalgam\", \"texture\": {\"color_hex\": \"#b8f2ff\"}}\n  ],\n  \"machines\": [\n    {\n      \"machine_id\": \"amalgamator\",\n      \"display_name\": \"Amalgamator\",\n      \"texture\": {\"color_hex\": \"#606060\"},\n      \"processing_time_ticks\": 100,\n      \"machine_recipes\": [\n        {\n          \"recipe_id\": \"make_amalgam\",\n          \"inputs\": [\"minecraft:iron_ingot\", \"minecraft:gold_ingot\"],\n          \"output\": \"modid:amalgam\",\n          \"output_count\": 1\n        }\n      ]\n    }\n  ],\n  \"events\": [\n    {\n      \"event_id\": \"amalgamator_complete\",\n      \"event_kind\": \"on_machine_recipe_complete\",\n      \"actions\": [{\"action_kind\": \"broadcast_message\", \"text\": \"The amalgamator finished.\"}]\n    }\n  ]\n}\n```\n\nRight-click the generated machine with each input item. Inputs are tracked per block position; when the full set is present, the output drops after `processing_time_ticks`.\n\n#### Verify Every Generation\n\nUse `render_preview_image` to inspect important textures, then submit the same spec through `start_build_job`. A vi\n\nFile v1.0.8:_meta.json\n\n{\n  \"ownerId\": \"kn798pfbxm62kkd2750t7vsex5819pyc\",\n  \"slug\": \"minecraft-custom-mod-builder\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1784063616548\n}\n\nFile v1.0.8:schema.md\n\n# Minecraft Custom Mod Builder Schema\n\nThis generated reference belongs to the adjacent `SKILL.md`. Use it for exact action names, action slugs, parameter summaries, sample parameters, and generated JSON parameter schemas.\n\nProduct slug: `minecraft-custom-mod-builder`\n\nx402 action routes are enabled for this product through `https://www.agentpmt.com/api/external`.\n\n## `create_mod_project`\n\nAction slug: `create-mod-project`\n\nx402 action URL: `POST https://www.agentpmt.com/api/external/tools/minecraft-custom-mod-builder/actions/create-mod-project/invoke`\n\nPrice: `15` credits\n\nSynchronous unverified source/debug generation. Accepts only verification_level='off'; use start_build_job for install-ready final artifacts.\n\nParameters:\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `advanced_resources` | `array` | no | Non-executable data/resource files or Bedrock .mcfunction files. Java source and Bedrock JavaScript are rejected. |\n| `allow_experimental_bedrock_features` | `boolean` | no | Allow Bedrock experimental features when required. |\n| `assets` | `object` | no | Optional textures, sounds, particles, models, and language entries. |\n| `authoring_mode` | `string` | no | Typed declarative generation mode. Agent-edited code must use start_build_job with source_archive_file_id. |\n| `build_jar` | `boolean` | no | Fabric/NeoForge only. Build jar when true. |\n| `compatibility_mode` | `string` | no | Strict platform fidelity. Platform-mismatched features are rejected, never dropped. |\n| `description` | `string` | no | Short mod description. |\n| `features` | `object` | no | FeatureSet object. Use arrays such as items, blocks, entities, events, commands, client_modules, machines, recipes, particles, sounds, functions, storage, worldgen, scoreboards, biomes, dimensions, effects, and skins. See get_instructions for nested fields. |\n| `fidelity_policy` | `string` | no | Preserve intent by default. acknowledged_approximation is valid only after explicit user approval of a fully implemented alternative; placeholders are never accepted. |\n| `include_file_preview` | `boolean` | no | Include capped text previews in generated_files. |\n| `minecraft_version` | `string` | no | Pinned version. Omit unless explicitly needed. |\n| `mod_id` | `string` | yes | Lowercase namespace matching ^[a-z][a-z0-9_]{1,63}$. |\n| `mod_metadata` | `object` | no | Optional metadata such as version, license, authors, logo_texture, brand_color_hex, java_side, and bedrock_experiments. |\n| `mod_name` | `string` | yes | Human-readable mod name. |\n| `output_mode` | `string` | no | installable, source, or both. |\n| `skin_pack` | `object` | no | Skin pack definition for target_platform=bedrock_skinpack. |\n| `target_platform` | `string` | yes | bedrock, bedrock_skinpack, fabric, or neoforge. |\n| `user_intent_summary` | `string` | no | Optional concise intent statement for deterministic classification; not used for silent reinterpretation. |\n| `validate_output` | `boolean` | no | Run output validation when supported. |\n| `verification_level` | `string` | no | create_mod_project is unverified and accepts only off. |\n\nSample parameters:\n\n```json\n{\n  \"advanced_resources\": [\n    {}\n  ],\n  \"allow_experimental_bedrock_features\": true,\n  \"assets\": {},\n  \"authoring_mode\": \"auto\",\n  \"build_jar\": true,\n  \"compatibility_mode\": \"strict\",\n  \"description\": \"example description\",\n  \"features\": {}\n}\n```\n\nGenerated JSON parameter schema:\n\n```json\n{\n  \"advanced_resources\": {\n    \"description\": \"Non-executable data/resource files or Bedrock .mcfunction files. Java source and Bedrock JavaScript are rejected.\",\n    \"items\": {\n      \"description\": \"\",\n      \"required\": false,\n      \"type\": \"object\"\n    },\n    \"required\": false,\n    \"type\": \"array\"\n  },\n  \"allow_experimental_bedrock_features\": {\n    \"description\": \"Allow Bedrock experimental features when required.\",\n    \"required\": false,\n    \"type\": \"boolean\"\n  },\n  \"assets\": {\n    \"description\": \"Optional textures, sounds, particles, models, and language entries.\",\n    \"required\": false,\n    \"type\": \"object\"\n  },\n  \"authoring_mode\": {\n    \"description\": \"Typed declarative generation mode. Agent-edited code must use start_build_job with source_archive_file_id.\",\n    \"enum\": [\n      \"auto\",\n      \"declarative\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"build_jar\": {\n    \"description\": \"Fabric/NeoForge only. Build jar when true.\",\n    \"required\": false,\n    \"type\": \"boolean\"\n  },\n  \"compatibility_mode\": {\n    \"description\": \"Strict platform fidelity. Platform-mismatched features are rejected, never dropped.\",\n    \"enum\": [\n      \"strict\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"description\": {\n    \"description\": \"Short mod description.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"features\": {\n    \"description\": \"FeatureSet object. Use arrays such as items, blocks, entities, events, commands, client_modules, machines, recipes, particles, sounds, functions, storage, worldgen, scoreboards, biomes, dimensions, effects, and skins. See get_instructions for nested fields.\",\n    \"required\": false,\n    \"type\": \"object\"\n  },\n  \"fidelity_policy\": {\n    \"description\": \"Preserve intent by default. acknowledged_approximation is valid only after explicit user approval of a fully implemented alternative; placeholders are never accepted.\",\n    \"enum\": [\n      \"preserve_intent\",\n      \"acknowledged_approximation\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"include_file_preview\": {\n    \"description\": \"Include capped text previews in generated_files.\",\n    \"required\": false,\n    \"type\": \"boolean\"\n  },\n  \"minecraft_version\": {\n    \"description\": \"Pinned version. Omit unless explicitly needed.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"mod_id\": {\n    \"description\": \"Lowercase namespace matching ^[a-z][a-z0-9_]{1,63}$.\",\n    \"required\": true,\n    \"type\": \"string\"\n  },\n  \"mod_metadata\": {\n    \"description\": \"Optional metadata such as version, license, authors, logo_texture, brand_color_hex, java_side, and bedrock_experiments.\",\n    \"required\": false,\n    \"type\": \"object\"\n  },\n  \"mod_name\": {\n    \"description\": \"Human-readable mod name.\",\n    \"required\": true,\n    \"type\": \"string\"\n  },\n  \"output_mode\": {\n    \"description\": \"installable, source, or both.\",\n    \"enum\": [\n      \"installable\",\n      \"source\",\n      \"both\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"skin_pack\": {\n    \"description\": \"Skin pack definition for target_platform=bedrock_skinpack.\",\n    \"required\": false,\n    \"type\": \"object\"\n  },\n  \"target_platform\": {\n    \"description\": \"bedrock, bedrock_skinpack, fabric, or neoforge.\",\n    \"enum\": [\n      \"bedrock\",\n      \"bedrock_skinpack\",\n      \"fabric\",\n      \"neoforge\"\n    ],\n    \"required\": true,\n    \"type\": \"string\"\n  },\n  \"user_intent_summary\": {\n    \"description\": \"Optional concise intent statement for deterministic classification; not used for silent reinterpretation.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"validate_output\": {\n    \"description\": \"Run output validation when supported.\",\n    \"required\": false,\n    \"type\": \"boolean\"\n  },\n  \"verification_level\": {\n    \"description\": \"create_mod_project is unverified and accepts only off.\",\n    \"enum\": [\n      \"off\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  }\n}\n```\n\n## `get_build_job`\n\nAction slug: `get-build-job`\n\nx402 action URL: `POST https://www.agentpmt.com/api/external/tools/minecraft-custom-mod-builder/actions/get-build-job/invoke`\n\nPrice: `2` credits\n\nFetch one tenant-scoped build job by task_id. Poll until status is completed or failed, then inspect result.runtime_verification, result.visual_proof (File Manager frame file_ids/signed_urls; also in artifacts with label=visual_proof_frame), result.quality_gate, result.ready_for_install, and artifacts. Open visual proof frames before customer delivery.\n\nParameters:\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `task_id` | `string` | yes | Build job id returned by start_build_job. |\n\nSample parameters:\n\n```json\n{\n  \"task_id\": \"example task id\"\n}\n```\n\nGenerated JSON parameter schema:\n\n```json\n{\n  \"task_id\": {\n    \"description\": \"Build job id returned by start_build_job.\",\n    \"required\": true,\n    \"type\": \"string\"\n  }\n}\n```\n\n## `get_instructions`\n\nAction slug: `get-instructions`\n\nx402 action URL: `POST https://www.agentpmt.com/api/external/tools/minecraft-custom-mod-builder/actions/get-instructions/invoke`\n\nPrice: `15` credits\n\nGet tool instructions and available actions.\n\nParameters:\n\nThis action does not require parameters.\n\nSample parameters:\n\n```json\n{}\n```\n\nGenerated JSON parameter schema:\n\n```json\n{}\n```\n\n## `list_build_jobs`\n\nAction slug: `list-build-jobs`\n\nx402 action URL: `POST https://www.agentpmt.com/api/external/tools/minecraft-custom-mod-builder/actions/list-build-jobs/invoke`\n\nPrice: `2` credits\n\nList recent Minecraft build jobs for the active budget to recover task_id values or inspect recent queued/completed builds.\n\nParameters:\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `limit` | `integer` | no | Maximum jobs to return, from 1 to 100. |\n\nSample parameters:\n\n```json\n{\n  \"limit\": 1\n}\n```\n\nGenerated JSON parameter schema:\n\n```json\n{\n  \"limit\": {\n    \"description\": \"Maximum jobs to return, from 1 to 100.\",\n    \"required\": false,\n    \"type\": \"integer\"\n  }\n}\n```\n\n## `list_capabilities`\n\nAction slug: `list-capabilities`\n\nx402 action URL: `POST https://www.agentpmt.com/api/external/tools/minecraft-custom-mod-builder/actions/list-capabilities/invoke`\n\nPrice: `2` credits\n\nReturn supported platforms, pinned versions, feature/action matrices, implementation_status, quality-gate fields, and unsupported families.\n\nParameters:\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `target_platform` | `string` | no | Optional platform filter. |\n\nSample parameters:\n\n```json\n{\n  \"target_platform\": \"bedrock\"\n}\n```\n\nGenerated JSON parameter schema:\n\n```json\n{\n  \"target_platform\": {\n    \"description\": \"Optional platform filter.\",\n    \"enum\": [\n      \"bedrock\",\n      \"bedrock_skinpack\",\n      \"fabric\",\n      \"neoforge\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  }\n}\n```\n\n## `render_preview_image`\n\nAction slug: `render-preview-image`\n\nx402 action URL: `POST https://www.agentpmt.com/api/external/tools/minecraft-custom-mod-builder/actions/render-preview-image/invoke`\n\nPrice: `5` credits\n\nRender and upload an enlarged PNG preview for an item, block, or entity from a structured spec, source archive, or direct image file.\n\nParameters:\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `features` | `object` | no | FeatureSet object for spec preview. |\n| `mod_id` | `string` | no | Lowercase namespace for spec/source preview. |\n| `mod_name` | `string` | no | Human-readable mod name for spec preview. |\n| `preview_background` | `string` | no | checkerboard, transparent, white, or black. |\n| `preview_size` | `integer` | no | Square preview PNG size from 32 to 1024 pixels. |\n| `preview_source_file_id` | `string` | no | File Manager image file_id for direct image preview. |\n| `preview_target_id` | `string` | no | Feature id or namespaced id, such as flame_sword or flame_tools:flame_sword. |\n| `preview_target_kind` | `string` | no | item, block, or entity. |\n| `skin_pack` | `object` | no | Skin pack definition for target_platform=bedrock_skinpack. |\n| `source_archive_file_id` | `string` | no | File Manager file_id for a generated source zip to preview from. |\n| `target_platform` | `string` | no | Optional platform context. |\n\nSample parameters:\n\n```json\n{\n  \"features\": {},\n  \"mod_id\": \"example mod id\",\n  \"mod_name\": \"example mod name\",\n  \"preview_background\": \"checkerboard\",\n  \"preview_size\": 1,\n  \"preview_source_file_id\": \"example preview source file id\",\n  \"preview_target_id\": \"example preview target id\",\n  \"preview_target_kind\": \"item\"\n}\n```\n\nGenerated JSON parameter schema:\n\n```json\n{\n  \"features\": {\n    \"description\": \"FeatureSet object for spec preview.\",\n    \"required\": false,\n    \"type\": \"object\"\n  },\n  \"mod_id\": {\n    \"description\": \"Lowercase namespace for spec/source preview.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"mod_name\": {\n    \"description\": \"Human-readable mod name for spec preview.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"preview_background\": {\n    \"description\": \"checkerboard, transparent, white, or black.\",\n    \"enum\": [\n      \"checkerboard\",\n      \"transparent\",\n      \"white\",\n      \"black\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"preview_size\": {\n    \"description\": \"Square preview PNG size from 32 to 1024 pixels.\",\n    \"required\": false,\n    \"type\": \"integer\"\n  },\n  \"preview_source_file_id\": {\n    \"description\": \"File Manager image file_id for direct image preview.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"preview_target_id\": {\n    \"description\": \"Feature id or namespaced id, such as flame_sword or flame_tools:flame_sword.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"preview_target_kind\": {\n    \"description\": \"item, block, or entity.\",\n    \"enum\": [\n      \"item\",\n      \"block\",\n      \"entity\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"skin_pack\": {\n    \"description\": \"Skin pack definition for target_platform=bedrock_skinpack.\",\n    \"required\": false,\n    \"type\": \"object\"\n  },\n  \"source_archive_file_id\": {\n    \"description\": \"File Manager file_id for a generated source zip to preview from.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"target_platform\": {\n    \"description\": \"Optional platform context.\",\n    \"enum\": [\n      \"bedrock\",\n      \"bedrock_skinpack\",\n      \"fabric\",\n      \"neoforge\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  }\n}\n```\n\n## `start_build_job`\n\nAction slug: `start-build-job`\n\nx402 action URL: `POST https://www.agentpmt.com/api/external/tools/minecraft-custom-mod-builder/actions/start-build-job/invoke`\n\nPrice: `15` credits\n\nQueue generated or agent-edited source for compile, package, real Minecraft runtime checks, File Manager visual_proof gallery, and the install-readiness gate. Poll get_build_job and ship only when result.ready_for_install=true and quality_gate.status='passed', after reviewing visual_proof frames.\n\nParameters:\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `advanced_resources` | `array` | no | Non-executable data/resource files or Bedrock .mcfunction files for generated spec builds. Edit executable source through source_archive_file_id. |\n| `allow_experimental_bedrock_features` | `boolean` | no | Allow Bedrock experimental features when required. |\n| `assets` | `object` | no | Optional textures, sounds, particles, models, and language entries. |\n| `authoring_mode` | `string` | no | Use auto/declarative for structured specs. Use agent_code only with source_archive_file_id for edited source. |\n| `build_jar` | `boolean` | no | Fabric/NeoForge only. Build jar when true. |\n| `compatibility_mode` | `string` | no | Strict platform fidelity. Platform-mismatched features are rejected, never dropped. |\n| `description` | `string` | no | Short mod description. |\n| `features` | `object` | no | FeatureSet object for generated spec builds. Omit when testing uploaded source_archive_file_id. |\n| `fidelity_policy` | `string` | no | Preserve intent by default. acknowledged_approximation is valid only after explicit user approval of a fully implemented alternative; placeholders are never accepted. |\n| `include_file_preview` | `boolean` | no | Include capped text previews in generated_files. |\n| `minecraft_version` | `string` | no | Pinned version. Omit unless explicitly needed. |\n| `mod_id` | `string` | yes | Lowercase namespace matching ^[a-z][a-z0-9_]{1,63}$. Required for spec builds and source-archive jobs. |\n| `mod_metadata` | `object` | no | Optional metadata such as version, license, authors, logo_texture, brand_color_hex, java_side, and bedrock_experiments. |\n| `mod_name` | `string` | no | Human-readable mod name. Required for spec builds; not required when source_archive_file_id is provided. |\n| `output_mode` | `string` | no | installable, source, or both. |\n| `skin_pack` | `object` | no | Skin pack definition for target_platform=bedrock_skinpack. |\n| `source_archive_file_id` | `string` | no | File Manager file_id for a generated or agent-edited source zip. The job tests the uploaded source without regenerating over edits. Java zips must contain editable source/resources only; build/cache trees and precompiled .class, .jar, or native binaries are rejected. |\n| `source_test_mode` | `string` | no | For source_archive_file_id jobs: test_only for iteration, or test_and_package to return install artifacts only after the quality gate passes. |\n| `target_platform` | `string` | yes | bedrock, bedrock_skinpack, fabric, or neoforge. |\n| `user_intent_summary` | `string` | no | Optional concise intent statement for deterministic classification; not used for silent reinterpretation. |\n| `validate_output` | `boolean` | no | Run output validation when supported. |\n| `verification_contract` | `object` | no | For edited-source behavior verification, define machine-observable expected_checks bound to the same target_platform and mod_id, including at least one behavior, render, or client check. |\n| `verification_level` | `string` | no | behavior is the default install-ready gate; boot_smoke proves loading only and remains non-install-ready; off is unverified. |\n\nSample parameters:\n\n```json\n{\n  \"advanced_resources\": [\n    {}\n  ],\n  \"allow_experimental_bedrock_features\": true,\n  \"assets\": {},\n  \"authoring_mode\": \"auto\",\n  \"build_jar\": true,\n  \"compatibility_mode\": \"strict\",\n  \"description\": \"example description\",\n  \"features\": {}\n}\n```\n\nGenerated JSON parameter schema:\n\n```json\n{\n  \"advanced_resources\": {\n    \"description\": \"Non-executable data/resource files or Bedrock .mcfunction files for generated spec builds. Edit executable source through source_archive_file_id.\",\n    \"items\": {\n      \"description\": \"\",\n      \"required\": false,\n      \"type\": \"object\"\n    },\n    \"required\": false,\n    \"type\": \"array\"\n  },\n  \"allow_experimental_bedrock_features\": {\n    \"description\": \"Allow Bedrock experimental features when required.\",\n    \"required\": false,\n    \"type\": \"boolean\"\n  },\n  \"assets\": {\n    \"description\": \"Optional textures, sounds, particles, models, and language entries.\",\n    \"required\": false,\n    \"type\": \"object\"\n  },\n  \"authoring_mode\": {\n    \"description\": \"Use auto/declarative for structured specs. Use agent_code only with source_archive_file_id for edited source.\",\n    \"enum\": [\n      \"auto\",\n      \"declarative\",\n      \"agent_code\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"build_jar\": {\n    \"description\": \"Fabric/NeoForge only. Build jar when true.\",\n    \"required\": false,\n    \"type\": \"boolean\"\n  },\n  \"compatibility_mode\": {\n    \"description\": \"Strict platform fidelity. Platform-mismatched features are rejected, never dropped.\",\n    \"enum\": [\n      \"strict\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"description\": {\n    \"description\": \"Short mod description.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"features\": {\n    \"description\": \"FeatureSet object for generated spec builds. Omit when testing uploaded source_archive_file_id.\",\n    \"required\": false,\n    \"type\": \"object\"\n  },\n  \"fidelity_policy\": {\n    \"description\": \"Preserve intent by default. acknowledged_approximation is valid only after explicit user approval of a fully implemented alternative; placeholders are never accepted.\",\n    \"enum\": [\n      \"preserve_intent\",\n      \"acknowledged_approximation\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"include_file_preview\": {\n    \"description\": \"Include capped text previews in generated_files.\",\n    \"required\": false,\n    \"type\": \"boolean\"\n  },\n  \"minecraft_version\": {\n    \"description\": \"Pinned version. Omit unless explicitly needed.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"mod_id\": {\n    \"description\": \"Lowercase namespace matching ^[a-z][a-z0-9_]{1,63}$. Required for spec builds and source-archive jobs.\",\n    \"required\": true,\n    \"type\": \"string\"\n  },\n  \"mod_metadata\": {\n    \"description\": \"Optional metadata such as version, license, authors, logo_texture, brand_color_hex, java_side, and bedrock_experiments.\",\n    \"required\": false,\n    \"type\": \"object\"\n  },\n  \"mod_name\": {\n    \"description\": \"Human-readable mod name. Required for spec builds; not required when source_archive_file_id is provided.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"output_mode\": {\n    \"description\": \"installable, source, or both.\",\n    \"enum\": [\n      \"installable\",\n      \"source\",\n      \"both\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"skin_pack\": {\n    \"description\": \"Skin pack definition for target_platform=bedrock_skinpack.\",\n    \"required\": false,\n    \"type\": \"object\"\n  },\n  \"source_archive_file_id\": {\n    \"description\": \"File Manager file_id for a generated or agent-edited source zip. The job tests the uploaded source without regenerating over edits. Java zips must contain editable source/resources only; build/cache trees and precompiled .class, .jar, or native binaries are rejected.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"source_test_mode\": {\n    \"description\": \"For source_archive_file_id jobs: test_only for iteration, or test_and_package to return install artifacts only after the quality gate passes.\",\n    \"enum\": [\n      \"test_only\",\n      \"test_and_package\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"target_platform\": {\n    \"description\": \"bedrock, bedrock_skinpack, fabric, or neoforge.\",\n    \"enum\": [\n      \"bedrock\",\n      \"bedrock_skinpack\",\n      \"fabric\",\n      \"neoforge\"\n    ],\n    \"required\": true,\n    \"type\": \"string\"\n  },\n  \"user_intent_summary\": {\n    \"description\": \"Optional concise intent statement for deterministic classification; not used for silent reinterpretation.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"validate_output\": {\n    \"description\": \"Run output validation when supported.\",\n    \"required\": false,\n    \"type\": \"boolean\"\n  },\n  \"verification_contract\": {\n    \"description\": \"For edited-source behavior verification, define machine-observable expected_checks bound to the same target_platform and mod_id, including at least one behavior, render, or client check.\",\n    \"required\": false,\n    \"type\": \"object\"\n  },\n  \"verification_level\": {\n    \"description\": \"behavior is the default install-ready gate; boot_smoke proves loading only and remains non-install-ready; off is unverified.\",\n    \"enum\": [\n      \"off\",\n      \"boot_smoke\",\n      \"behavior\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  }\n}\n```\n\n## `validate_mod_project`\n\nAction slug: `validate-mod-project`\n\nx402 action URL: `POST https://www.agentpmt.com/api/external/tools/minecraft-custom-mod-builder/actions/validate-mod-project/invoke`\n\nPrice: `5` credits\n\nValidate a structured Minecraft mod spec or a previously generated/uploaded source archive without writing install artifacts.\n\nParameters:\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `allow_experimental_bedrock_features` | `boolean` | no | Allow Bedrock experimental features when required. |\n| `features` | `object` | no | FeatureSet object for spec mode. Use get_instructions for nested fields. |\n| `minecraft_version` | `string` | no | Pinned version. Omit unless explicitly needed. |\n| `mod_id` | `string` | no | Lowercase namespace matching ^[a-z][a-z0-9_]{1,63}$. |\n| `mod_name` | `string` | no | Human-readable mod name for spec mode. |\n| `skin_pack` | `object` | no | Skin pack definition for target_platform=bedrock_skinpack. |\n| `source_archive_file_id` | `string` | no | File Manager file_id for a generated or agent-edited source zip to validate instead of a spec. Java zips must contain editable source/resources only; generated outputs and precompiled executables are rejected. |\n| `target_platform` | `string` | no | bedrock, bedrock_skinpack, fabric, or neoforge. |\n\nSample parameters:\n\n```json\n{\n  \"allow_experimental_bedrock_features\": true,\n  \"features\": {},\n  \"minecraft_version\": \"example minecraft version\",\n  \"mod_id\": \"example mod id\",\n  \"mod_name\": \"example mod name\",\n  \"skin_pack\": {},\n  \"source_archive_file_id\": \"example source archive file id\",\n  \"target_platform\": \"bedrock\"\n}\n```\n\nGenerated JSON parameter schema:\n\n```json\n{\n  \"allow_experimental_bedrock_features\": {\n    \"description\": \"Allow Bedrock experimental features when required.\",\n    \"required\": false,\n    \"type\": \"boolean\"\n  },\n  \"features\": {\n    \"description\": \"FeatureSet object for spec mode. Use get_instructions for nested fields.\",\n    \"required\": false,\n    \"type\": \"object\"\n  },\n  \"minecraft_version\": {\n    \"description\": \"Pinned version. Omit unless explicitly needed.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"mod_id\": {\n    \"description\": \"Lowercase namespace matching ^[a-z][a-z0-9_]{1,63}$.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"mod_name\": {\n    \"description\": \"Human-readable mod name for spec mode.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"skin_pack\": {\n    \"description\": \"Skin pack definition for target_platform=bedrock_skinpack.\",\n    \"required\": false,\n    \"type\": \"object\"\n  },\n  \"source_archive_file_id\": {\n    \"description\": \"File Manager file_id for a generated or agent-edited source zip to validate instead of a spec. Java zips must contain editable source/resources only; generated outputs and precompiled executables are rejected.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"target_platform\": {\n    \"description\": \"bedrock, bedrock_skinpack, fabric, or neoforge.\",\n    \"enum\": [\n      \"bedrock\",\n      \"bedrock_skinpack\",\n      \"fabric\",\n      \"neoforge\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  }\n}\n```\n\nFile v1.0.8:skill-card.md\n\n## Description:\n\nMinecraft Custom Mod Builder helps agents generate and verify structured Minecraft Bedrock add-ons, Bedrock skin packs, and Fabric or NeoForge projects through AgentPMT-hosted tool calls.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[agentpmt](https://clawhub.ai/user/agentpmt)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and external agent users use this skill to create installable or source Minecraft mod projects from structured specifications, then check runtime behavior, visual proof, and install readiness before delivery.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: A third-party hosted service may receive Minecraft specifications, images, and optional source archives.\n\nMitigation: Avoid confidential code, private assets, credentials, wallet secrets, and payment headers in prompts, archives, and logs; review AgentPMT setup and storage terms before use.\n\nRisk: Some supported client and ESP-style features can be used for multiplayer cheating, griefing, or surveillance.\n\nMitigation: Use these capabilities only in authorized, test, single-player, or server-owner-approved contexts and decline requests intended for abuse.\n\nRisk: The server security review flagged the release for review before installation, including mutable setup commands.\n\nMitigation: Prefer pinned installation commands or trusted OpenClaw installation paths, and review and scan the skill before deployment.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/agentpmt/skills/minecraft-custom-mod-builder)\n- [AgentPMT marketplace page](https://www.agentpmt.com/marketplace/minecraft-custom-mod-builder)\n- [Minecraft Custom Mod Builder schema](artifact/schema.md)\n- [AgentPMT account setup](https://clawhub.ai/agentpmt/agentpmt-account-mcp-rest-api-setup)\n- [AgentPMT no-account setup](https://clawhub.ai/agentpmt/agentpmt-no-account-agentaddress-x402)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, configuration, guidance]\n\n**Output Format:** [Markdown guidance with JSON request examples and tool-call parameters]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces remote build, preview, capability, and polling requests; installable artifacts should be delivered only after runtime and visual checks pass.]\n\n## Skill Version(s):\n\n1.0.8 (source: release evidence and frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.7: 4 files, 34794 bytes\n\nFiles: schema.md (25912b), skill-card.md (3218b), SKILL.md (84799b), _meta.json (147b)\n\nFile v1.0.7:SKILL.md\n\n---\nname: minecraft-custom-mod-builder\ndescription: \"Minecraft Custom Mod Builder: Generate and verify structured Minecraft Bedrock, Bedrock skin pack, Fabric, and NeoForge projects. Use when an agent needs minecraft custom mod builder, create runtime verified bedrock add ons and skin packs; build and verify fabric and neoforge jars; generate typed items, blocks, entities, commands, create mod project, target platform, mod id through AgentPMT-hosted remote tool calls. Discovery terms: minecraft custom mod builder.\"\nversion: 1.0.7\nhomepage: https://www.agentpmt.com/marketplace/minecraft-custom-mod-builder\ncompatibility: \"Agent instructions for AgentPMT-hosted remote tool calls. Follow this skill body for supported account, wallet, and setup routes. No local command runtime is declared.\"\nmetadata: {\"author\":\"agentpmt\",\"openclaw\":{\"homepage\":\"https://www.agentpmt.com/marketplace/minecraft-custom-mod-builder\"}}\n---\n# Minecraft Custom Mod Builder\n\n## Freshness\nLast updated: `2026-07-14`.\n\nIf the current date is more than 7 days after the last updated date, reinstall this skill from skills.sh or ClawHub before relying on endpoints, schemas, setup steps, or examples.\n\n## What This Tool Does\nBuild structured Minecraft Bedrock add-ons, Bedrock skin packs, and Fabric/NeoForge projects with strict schemas, real runtime behavior checks, File Manager visual proof galleries, async install-readiness gates, and a full test loop for agent-edited source.\n\n## Product Instructions\n### Minecraft Mod Builder\n\nGenerate 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.\n\n#### Two Rules That Will Save You Many Retries\n\n##### Rule 1 — One ItemSpec equals one in-game item\n\nA 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.\n\nDo 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.\n\n##### Rule 2 — Every visible asset requires a texture\n\nItems, blocks, entities, particles, named texture assets, machines, storage, and skin-pack skins must each carry a `texture` with one of these three sources:\n\n* `source_base64` — base64-encoded PNG or JPEG bytes (max 1024×1024, max 5 MB).\n* `source_file_id` — a File Manager file_id for a user-uploaded image.\n* `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; model-compatible cuboid atlas). 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.\n\nA 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.\n\n**Java armor inventory icons must ship a real PNG.** `item_kind=\"armor\"` rejects `color_hex`-only textures (`MINECRAFT_ARMOR_TEXTURE_REQUIRES_IMAGE`) because that produces only a flat inventory square. Supply `source_base64` or `source_file_id` for every helmet/chestplate/leggings/boots. Declarative Java armor uses the selected vanilla iron/gold/diamond/netherite equipment asset while worn; the supplied image is the inventory icon, not a wearable UV atlas. A custom material or custom worn texture must use the agent-edited source workflow and pass client/runtime verification. Declarative Bedrock armor is rejected because a wearable item without a verified attachable would be invisible on the wearer.\n\n##### Authoring textures with the Icon Generator + `pixelize_to`\n\nThe 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`.\n\nWhen 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`.\n\nRecommended 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.\n\n#### Request Shape Rules\n\nPrefer the canonical field names below. The backend accepts the listed aliases when they are exact equivalents, but canonical names make the generated schema and validation errors easier to follow.\n\n##### Verified async builds and install readiness\n\nUse `start_build_job` for anything the user should install. It validates the request, queues the build, and returns immediately with `task_id` and `status=\"queued\"`. Poll with `get_build_job` using the same `task_id` until `status` is `completed` or `failed`.\n\n`start_build_job` defaults to `verification_level=\"behavior\"`. The completed job result includes:\n\n* `runtime_verification` — boot/behavior/render/client checks or the exact reason verification could not run.\n* `visual_proof` — File Manager–hosted PNG frames (texture enlargements, entity composites, particle sheets, and Java in-game client screenshots when the client lane runs). Each frame has `signed_url`, `file_id`, `caption`, and machine checks. Video clips are not part of this surface yet.\n* `quality_gate` — `passed`, `failed`, `blocked`, or `unverified`. Visual fidelity/frame failures use `MINECRAFT_VISUAL_FIDELITY_INSUFFICIENT` or `MINECRAFT_VISUAL_PROOF_FAILED`.\n* `ready_for_install` — `true` only when the quality gate passed (behavior **and** required visual proof).\n* `verification_not_run` — `true` when the requested runtime checks did not execute.\n* `request_classification` — `supported_declarative`, `needs_agent_code`, or `platform_constrained`.\n\n**Agent visual review is mandatory.** Before telling a user a mod is finished, open every `visual_proof.frames[].signed_url` (or use the File Manager tool with each frame `file_id` under the same budget) and confirm the art matches the request. The same frames are also listed in `artifacts[]` with `label=visual_proof_frame`. Do not claim success from behavior checks alone. If frames show flat colored squares, missing identity art, wrong subjects, or unusable scale, fix textures (`source_base64` / `source_file_id`, not only `color_hex` for armor, food, entities, particles, machines, or skins) or edit source and re-run `start_build_job`.\n\nTreat `ready_for_install=false`, `quality_gate.status!=\"passed\"`, `verification_not_run=true`, or `visual_proof.status` in `{failed,partial}` on a behavior job as \"fix the spec/art/source and rerun.\" Do not present those artifacts as working mods even if the task status is `completed`; completed only means the job produced inspectable output.\n\nA generated `behavior` job must declare at least one concrete feature, advanced resource, or skin. Use `create_mod_project` or `verification_level=\"off\"` for an intentionally empty scaffold; an empty project cannot be certified as a functional mod.\n\nUse `list_build_jobs` with `limit` (`1` to `100`) to inspect recent build jobs for the current budget.\n\n`create_mod_project` remains synchronous and unverified. It accepts only `verification_level=\"off\"` and returns `ready_for_install=false`. Use it for fast source/debug output, not final user delivery.\n\nUse `verification_level=\"boot_smoke\"` only when the user explicitly wants a faster runtime-load check instead of behavior checks. Use `verification_level=\"off\"` only for debug/source iteration and tell the user the result is unverified.\n\n##### Agent-edited source testing\n\nFor behavior the declarative schema cannot faithfully express, generate source first, edit the code, upload a zip, then call `start_build_job` with:\n\n```json\n{\n  \"action\": \"start_build_job\",\n  \"target_platform\": \"fabric\",\n  \"mod_id\": \"edited_mod\",\n  \"authoring_mode\": \"agent_code\",\n  \"source_archive_file_id\": \"file_...\",\n  \"source_test_mode\": \"test_only\",\n  \"verification_contract\": {\n    \"schema_version\": \"1\",\n    \"target_platform\": \"fabric\",\n    \"mod_id\": \"edited_mod\",\n    \"user_intent_summary\": \"Using the edited mod marks the player as verified.\",\n    \"expected_checks\": [\n      {\n        \"check_id\": \"boot\",\n        \"description\": \"The edited mod boots without registration errors.\",\n        \"check_kind\": \"boot\"\n      },\n      {\n        \"check_id\": \"player_marked\",\n        \"description\": \"The edited behavior adds the edited_mod_verified player tag.\",\n        \"check_kind\": \"behavior\",\n        \"assertion_kind\": \"tag_present\",\n        \"target\": \"edited_mod_verified\"\n      }\n    ]\n  }\n}\n```\n\n`source_test_mode` defaults to `test_only`; use that mode while iterating. Set `source_test_mode=\"test_and_package\"` only when the runtime report passes; install artifacts are returned only when `ready_for_install=true`. Do not put verifier files under `.agentpmt/verification/**` into shipped artifacts.\n\nFor `verification_level=\"behavior\"`, the contract must include at least one `behavior`, `render`, or `client` check. A contract containing only `boot` and/or `static` checks is rejected because loading and file presence do not prove requested behavior. Use `verification_level=\"boot_smoke\"` when load-only verification is the actual goal; boot-smoke output is never install-ready.\n\n`authoring_mode` is deterministic: `auto` and `declarative` validate the typed feature schema; `agent_code` requires `source_archive_file_id` on `start_build_job`. The service never guesses this route from keywords in a prompt.\n\nEvery edited-source check must be machine-observable. Contract assertion kinds are grouped by surface:\n\n| `check_kind` | Allowed `assertion_kind` values |\n|---|---|\n| `boot` | `boot_loaded` |\n| `behavior` | `command_succeeds`, `scoreboard_value`, `scoreboard_delta`, `tag_present`, `tag_absent`, `effect_present`, `block_state`, `entity_present`, `entity_spawned`, `item_present`, `item_granted`, `item_dropped`, `teleport_delta`, `time_window`, `weather_state`, `machine_output` |\n| `static` | `file_exists` |\n| `render` | `render_coverage` |\n| `client` | `client_option_state`, `message_observed`, `title_observed`, `screenshot_marker` |\n\nUse `setup_commands` for bounded Minecraft-world setup and `trigger_command` for the command that causes the behavior. `scoreboard_value` and `scoreboard_delta` targets are `objective` or `objective:holder`; item, entity, effect, and block assertions use namespaced identifiers; `teleport_delta.expected_value` is an `x,y,z` offset; `time_window.target` uses the documented time keywords; `weather_state.target` is `clear`, `rain`, or `thunder`; `screenshot_marker.target` is `#RRGGBB` and its optional `expected_value` is a minimum pixel count. `message_observed` and `title_observed` compare exact text from the actual Java client GUI. `screenshot_marker` inspects the framebuffer. Self-reported log/client markers are not accepted as proof. The nonce-bound `AGENTPMT_RUNTIME` marker family is harness-private and rejected in uploaded source.\n\nWhen typed postconditions cannot trigger the edited code directly, include the applicable verifier overlay in the source zip. Java server checks use `.agentpmt/verification/java/AgentpmtCustomVerifier.java` with `public static void verify(String checkId, ServerLevel serverLevel, ServerPlayer player)`. Java client checks may add `.agentpmt/verification/java/AgentpmtCustomClientVerifier.java` with `public static void verify(String checkId, Minecraft client)`. Bedrock uses `.agentpmt/verification/bedrock/custom_verifier.js` with `export function verifyCustomCheck(checkId, context)`. A Java archive may include both server and client verifier files when its contract has both surfaces. The harness always evaluates its built-in postcondition first, then runs a supplied custom verifier before recording success; agent-supplied verifier code is never the sole proof. The verifier must throw on failure and cannot replace a generic postcondition. Verifier overlays and `.agentpmt/runtime/**` are reserved, throwaway paths and never ship in artifacts.\n\nFor `client_option_state`, set `target` to `render_distance`, `simulation_distance`, `entity_distance_scaling`, `gamma`, `graphics_mode`, `cloud_status`, or `particles`, and set `expected_value` to the exact requested value. Use `message_observed`/`title_observed` for text and `screenshot_marker` with a `#RRGGBB` target for arbitrary visual overlays or particles; do not ask verifier code to certify its own output.\n\nUploaded Java build scripts, wrappers, `buildSrc`, alternate Gradle hooks, generated output/cache directories (`build`, `.gradle`, `out`, `target`), and precompiled Java/native binaries are not trusted. The service rejects generated outputs and precompiled `.class`/`.jar`/native-library files, replaces executable Gradle configuration with the pinned loader template, passes an explicit allowlisted child environment, and gives each job a disposable Gradle home backed by read-only shared caches. Submit editable source and ordinary resource assets only. Agent-edited source executes only in a private disposable Cloud Run worker with a dedicated no-role service account and one verification request per process. If that worker is unavailable, verification fails closed and the artifact is not install-ready.\n\n`advanced_resources` is for non-executable data/resource files and Bedrock `.mcfunction` files. It rejects Java source and `behavior_pack/scripts/*.js`. To change executable Fabric, NeoForge, or Bedrock Script API code, edit the generated project and submit the complete zip with `authoring_mode=\"agent_code\"`; do not try to inject executable code through a declarative request.\n\n##### Bedrock custom namespace\n\nFor Bedrock add-ons, generated custom in-game identifiers use the Creator Tools namespace `creator_project:<id>`. Keep using `mod_id` for the request, artifact naming, file paths, and Java platforms. In Bedrock specs, short ids (`\"ruby\"`) and legacy `<mod_id>:<id>` refs still resolve to the generated custom feature; the emitted pack rewrites them to `creator_project:<id>`. Use `minecraft:<id>` for vanilla content and other explicit namespaces for external content.\n\n##### Creative world mechanics and fidelity\n\nPrank, cursed, chaotic, fake-glitch, admin, debug, and rule-bending ideas are valid requests when you express them as deterministic in-world mechanics. Use `features.events`, `features.commands`, conditions, scoreboards, tags, particles, sounds, titles, messages, gamerules, time/weather actions, block changes, explosions, lightning, and relative teleports when those primitives faithfully match the user's requested behavior.\n\nDo not silently reinterpret intent. If the declarative schema can faithfully express the request, use it. If it cannot, classify the request as `needs_agent_code`, generate the typed base project, implement the requested code, and submit it back through the agent-edited source testing loop. If a substitution is user-approved, set `fidelity_policy=\"acknowledged_approximation\"` and still require the quality gate.\n\nThis deterministic builder does not generate arbitrary client mixins, shader loaders, native code, optimization core patches, or custom packet frameworks through the declarative schema. Those requests belong in the agent-edited source workflow, not in a closest-supported substitution presented as success.\n\n##### Implementation truth\n\nComments, debug chat, README guidance, and metadata do not count as mechanics. Every accepted declarative action has a concrete platform implementation and a runtime assertion. A mechanic without that implementation rejects with `MINECRAFT_CAPABILITY_NOT_IMPLEMENTED`, including its exact field path and `required_next_action=\"edit_source_and_start_build_job\"`. There is no policy that converts incomplete behavior into a successful mod.\n\nFeatures whose `enabled_platforms` exclude the selected `target_platform` are rejected with `MINECRAFT_PLATFORM_FEATURE_MISMATCH`; they are not dropped from the generated mod.\n\nThe request contract is pinned to `schema_version=\"2026-05-05-v2\"` and `compatibility_mode=\"strict\"`. The former platform-passthrough mode was retired because it could report success after dropping features that excluded the selected platform.\n\nAction-specific top-level fields are fail-closed. `task_id` belongs only to `get_build_job`; `limit` only to `list_build_jobs`; preview fields only to `render_preview_image`; and `source_test_mode` plus `verification_contract` require `start_build_job` with `source_archive_file_id`. Build/output/verification options are accepted only by create/build actions. Remove accidental cross-action fields instead of expecting them to be ignored.\n\nBedrock declarative `features.dimensions` is rejected even when experiments are enabled because the pinned Creator Tools cooperative-add-on gate rejects dimension definitions (`CADDONIREQ191`/`CADDONREQ131`). Use an edited standalone behavior-pack project and retain the full verification gate for dimension work; the builder does not return a known-invalid cooperative add-on.\n\n##### Java client modules\n\nUse `features.client_modules` for Java-only client utility behavior on `target_platform=\"fabric\"` or `target_platform=\"neoforge\"`. Bedrock and skin packs reject client modules because they cannot install Java client code.\n\nSupported `module_kind` values:\n\n* `utility_client_preset` — general anarchy/utility preset for requests phrased as \"2b2t client\", \"anarchy client\", or \"hacked client\"; implements an FPS HUD, bounded typed performance-option updates, maximum-valid brightness, and TNT-cart placement scanning.\n* `fps_hud` — HUD-only FPS display.\n* `performance_profile` — FPS-oriented HUD plus typed client option updates for render distance, simulation distance, entity distance scale, fast graphics, clouds off, and minimal particles.\n* `tnt_cart_placement_esp` — client-side scanner for nearby rail blocks where TNT minecarts can be placed; renders a HUD count and nearest candidate coordinates.\n* `block_esp` — bounded client scanner for listed block identifiers.\n* `entity_esp` — bounded client scanner for listed entity identifiers.\n* `fullbright` — sets the client gamma option to Minecraft's maximum valid brightness.\n\nCommon aliases are accepted for `module_kind`: `hacked_client`, `anarchy_client`, `2b2t_client`, and `utility_client` normalize to `utility_client_preset`; `shizik`, `fps_boost`, and `optimization_client` normalize to `performance_profile`; `tnt_esp`, `tnt_cart_esp`, and `minecart_tnt_esp` normalize to `tnt_cart_placement_esp`. Renderer-hybrid aliases are recognized only so validation can return the edited-source next action; they do not generate metadata in place of renderer code.\n\nClient-module options:\n\n| field | Applies to | Notes |\n|---|---|---|\n| `scan_radius` | ESP modules | Horizontal scan radius, `4` to `64`; default `24`. |\n| `update_interval_ticks` | all modules | Refresh interval, `1` to `200`; default `10`. |\n| `max_rendered_markers` | ESP modules | Maximum retained HUD markers, `1` to `128`; default `32`. |\n| `render_style` | ESP modules | Only `hud` is supported in this release; outline modes are rejected instead of ignored. |\n| `color_hex` | all modules | HUD/overlay accent color; accepts the same color forms as textures. |\n| `identifiers` | `block_esp`, `entity_esp` | Required list of block/entity ids to scan for. |\n| `performance_mode` | `performance_profile`, `utility_client_preset` | `balanced`, `fps`, or `quality`; default `balanced`. |\n| `max_render_distance` | performance modules | Applied render-distance option, `2` to `32`; default `8`. |\n| `max_simulation_distance` | performance modules | Applied simulation-distance option, `5` to `32`; default `5`. |\n| `entity_distance_scale` | performance modules | Applied entity render-distance scale, `0.1` to `1.0`; default `0.5`. |\n\nRenderer rewrites require real loader-specific code and dependencies. Submit that edited Java source with a client verification contract; the declarative path rejects it instead of returning a misleading metadata-only artifact.\n\nExamples:\n\n```json\n{\n  \"client_modules\": [\n    {\n      \"module_id\": \"anarchy_utility\",\n      \"display_name\": \"Anarchy Utility\",\n      \"module_kind\": \"2b2t_client\",\n      \"color_hex\": \"lime\",\n      \"scan_radius\": 32,\n      \"max_rendered_markers\": 48\n    }\n  ]\n}\n```\n\n```json\n{\n  \"client_modules\": [\n    {\n      \"module_id\": \"shizik_profile\",\n      \"display_name\": \"Shizik FPS Profile\",\n      \"module_kind\": \"shizik\",\n      \"performance_mode\": \"fps\",\n      \"max_render_distance\": 6,\n      \"max_simulation_distance\": 5,\n      \"entity_distance_scale\": 0.35\n    }\n  ]\n}\n```\n\n```json\n{\n  \"client_modules\": [\n    {\n      \"module_id\": \"tnt_cart_spots\",\n      \"display_name\": \"TNT Cart Placement ESP\",\n      \"module_kind\": \"tnt_cart_placement_esp\",\n      \"scan_radius\": 48,\n      \"update_interval_ticks\": 5,\n      \"max_rendered_markers\": 64,\n      \"color_hex\": \"#ff3355\"\n    }\n  ]\n}\n```\n\n##### Versions, colors, and locales\n\nOmit `minecraft_version` unless the user explicitly requires the pinned supported version. Each platform has one supported version in `list_capabilities`; unsupported older/newer versions are rejected instead of guessed. Whitespace is ignored, and `v` is accepted only when the remaining value exactly matches the pinned version.\n\nColor fields (`color_hex`, `brand_color_hex`, `hover_text_color`, `map_color`, `default_color`) accept `#RRGGBB`, six-digit hex without `#`, three-digit short hex, or these color names: `black`, `white`, `red`, `green`, `blue`, `yellow`, `orange`, `purple`, `pink`, `brown`, `gray`, `grey`, `cyan`, `magenta`, `lime`, `gold`, `silver`. Values are normalized to lowercase `#rrggbb`.\n\nLocales use `ll_RR`, such as `en_US`. Lowercase or hyphenated equivalents like `en_us`, `en-us`, and `en-US` are normalized.\n\n##### Scoreboards, commands, functions, rarity\n\nUse `objective_id` for scoreboards. Accepted aliases: `scoreboard_id`, `objective`. Use `criterion`; `criteria` is accepted.\n\nUse `description` for commands. `display_name` is accepted as an alias when `description` is absent.\n\nFunctions may include optional `description` metadata. Use `lines`; `commands` is accepted as an alias when `lines` is absent.\n\nStructured Bedrock functions are emitted under `behavior_pack/functions/agentpmt/<mod_id>/`. Advanced `.mcfunction` resources sent at older locations under `behavior_pack/functions/` are moved into that same cooperative namespace, and exact references between uploaded functions are rewritten automatically so Creator Tools does not reject loose files.\n\n`features.functions[]` requires at least one single-line Minecraft command in `lines` (or its `commands` alias); empty functions, multiline input, and shell commands reject before generation. Java `features.tags[]` likewise requires at least one valid resource id in `values`; short ids and short `#tag` references are namespaced to the current mod. Every `features.localizations[]` entry requires a non-empty translation mapping so the builder never emits an inert language file.\n\nUse `rarity.value` for item rarity. `rarity.rarity` and `rarity.name` are accepted aliases.\n\nHistorical exact aliases also normalize when the intent is deterministic:\n\n| Location | Canonical field/value | Accepted alias |\n|---|---|---|\n| `ItemSpec` food field | `saturation` | top-level `saturation_modifier` |\n| `ItemSpec` bow-like item | `item_kind=\"projectile\"` + `shooter` | `tool_type=\"bow\"` |\n| `BlockSpec.block_kind` | `basic` | `generic` |\n| `UISpec.ui_kind` | `hud_overlay` | `hud`, `overlay`, `screen_overlay` |\n| `UISpec.ui_kind` | `key_mapping` | `keybind`, `key_binding` |\n| `RecipeSpec.result_item` | `result_item` | `result`, `output`, `output_item`, `item_result`, `block_result`, `result_block`, `output_block`, `block_output` |\n\n##### ActionSpec aliases\n\nEvery action uses `action_kind`. `particle_effect` and `spawn_particles` are accepted as `action_kind` aliases for `spawn_particle`.\n\nBroadcast aliases are accepted for message/title actions: `broadcast_message`, `broadcast_chat`, `announce_message`, and `global_message` normalize to `send_message` with `audience=\"all_players\"`; `broadcast_title`, `announce_title`, and `global_title` normalize to `show_title` with `audience=\"all_players\"`.\n\nWhen an action needs a target resource, prefer `identifier`. Accepted exact aliases:\n\n| action_kind | Canonical field | Accepted aliases |\n|---|---|---|\n| `apply_effect`, `remove_effect` | `identifier` | `effect`, `effect_id` |\n| `spawn_entity` | `identifier` | `entity`, `entity_id` |\n| `play_sound` | `identifier` | `sound`, `sound_id` |\n| `spawn_particle` | `identifier` | `particle`, `particle_id` |\n| `add_tag`, `remove_tag` | `identifier` | `tag`, `tag_id` |\n| `give_item`, `drop_item` | `identifier` | `item`, `item_id` |\n| `give_item`, `drop_item` | `value` | `count`, `amount` |\n| `replace_held_item` | `identifier` | `item`, `item_id` |\n| `apply_damage`, `heal` | `value` | `amount` |\n| `set_block`, `place_block` | `identifier` | `block`, `block_id` |\n| `set_scoreboard` | `identifier` | `objective`, `objective_id`, `scoreboard_id` |\n| `set_scoreboard` | `value` | `score`, `amount`, `delta` |\n| `award_advancement` | `identifier` | `advancement`, `advancement_id` |\n| `modify_attribute` | `identifier` | `attribute`, `attribute_id` |\n| `modify_attribute` | `value` | `amount`, `level` |\n| `set_cooldown` | `identifier` | `cooldown`, `cooldown_id`, `cooldown_category` |\n| `play_animation` | `identifier` | `animation`, `animation_id` |\n| `change_dimension` | `identifier` | `dimension`, `dimension_id` |\n| `run_command` | `command` | `command_line`, `minecraft_command` |\n| `send_message`, `show_title` | `message` | `text`, `title` |\n| `show_title` | `title_display` | `display` |\n| `set_time` | `value` | `time`, `time_of_day` |\n| `set_weather` | `identifier` | `weather`, `weather_id` |\n\n##### Action options\n\nUse these optional action fields only on the listed `action_kind`; unsupported combinations are rejected instead of ignored.\n\n| action_kind | Supported options |\n|---|---|\n| `play_sound` | `volume` (`0` to `16`), `pitch` (`>0` to `4`), `position` |\n| `spawn_particle` | `count` (`1` to `256`), `spread_x`, `spread_y`, `spread_z` (`0` to `16`), `position` |\n| `spawn_entity`, `teleport`, `set_block`, `place_block`, `break_block_with_drops`, `create_explosion`, `summon_lightning` | `position` |\n| `apply_effect` | `amplifier` (`0` to `255`) |\n| `run_command` | required `command` |\n| `send_message`, `show_title` | required `message` or scalar `value` text |\n| `give_item`, `drop_item`, `apply_damage`, `heal`, `damage_item`, `repair_item` | optional positive integer `value` |\n| `modify_attribute` | optional finite numeric `value` (defaults to `1`) |\n| `create_explosion` | optional finite numeric `value > 0` for power (defaults to `2`) |\n| `set_scoreboard` | `operation`: `set`, `add`, or `remove` |\n| `send_message`, `show_title` | `audience`: `source` or `all_players` |\n| `show_title` | `title_display`: `title`, `subtitle`, or `actionbar`; optional `fade_in_ticks`, `stay_ticks`, and `fade_out_ticks` together |\n| `set_time` | `value`: `day`, `night`, `noon`, `midnight`, or an integer from `0` to `24000` |\n| `set_weather` | `identifier`: `clear`, `rain`, or `thunder` |\n| `apply_effect`, `set_on_fire`, `set_weather`, `wait` | `duration_ticks` (`1` to `72000` game ticks) |\n| `apply_effect`, `apply_damage`, `heal`, `set_on_fire`, `add_tag`, `remove_tag` | `radius` (`>0` to `64`) and optional `radius_filter`: `all_entities`, `players`, `hostile_mobs`, or `non_player_entities` |\n| any executable action except `wait` | `chance_percent` (`>0` to `100`) |\n\n`position` is always a relative offset from the event target or event block, never an absolute world coordinate. Send it as `{\"x\": x, \"y\": y, \"z\": z}` or `[x, y, z]` with integer coordinates from `-32` to `32`.\n\n`set_entity_target`, `mount_entity`, and `tame_entity` operate on the event target. Add a `target_entity` condition identifying a compatible mob. For backward compatibility, `identifier`, `entity`, or `entity_id` supplied on one of these actions inside an event is moved to that condition when it does not conflict with an explicit condition. Bedrock rejects `set_entity_target` because the stable Script API exposes the AI target as read-only. `mount_entity` and `tame_entity` reject targets that do not expose the required platform component/API.\n\nFor `send_message` and `show_title`, `target` is accepted only as an audience alias when it is one of `source`, `self`, `player`, `@s`, `all`, `everyone`, `all_players`, `@a`, or `broadcast`. Use canonical `audience` in new requests.\n\nFor `give_item`, `drop_item`, `apply_damage`, and `heal`, any provided `value` or accepted value alias must be an integer `>= 1`.\n\nGeneric action fields are fail-closed: `identifier`, `value`, `command`, `message`, and `amplifier` reject on action kinds that do not consume them. Remove an accidental field or use the canonical field for the intended action; the builder never silently drops it.\n\nFor `set_scoreboard`, `operation` defaults to `set`. Use `add` to increment and `remove` to decrement; both require a positive integer `value` or accepted value alias. Use the opposite operation instead of negative deltas.\n\nUse `wait` inside event or Script API command action lists to delay all following actions. A wait must be followed by an executable action, consecutive waits must be combined, and `chance_percent` belongs on the following action or owning event rather than the wait. Bedrock `.mcfunction` commands cannot express `wait` or `chance_percent`; use `simple_command` or `argument_command` for those.\n\n##### Custom command parameters\n\nUse `command_kind=\"argument_command\"` with `parameters` for runtime command input. Parameter names are referenced in action `message` or `command` strings as `{param:name}`.\n\nSupported `param_type` values are `string`, `integer`, `float`, and `player_name`. A `string` parameter is greedy text and must be last. Optional parameters must come after all required parameters. Example:\n\n```json\n{\n  \"commands\": [\n    {\n      \"command_id\": \"announce\",\n      \"description\": \"Broadcast a title.\",\n      \"command_kind\": \"argument_command\",\n      \"permission_level\": \"op\",\n      \"parameters\": [{\"name\": \"message\", \"param_type\": \"string\"}],\n      \"actions\": [\n        {\n          \"action_kind\": \"show_title\",\n          \"audience\": \"all_players\",\n          \"title_display\": \"actionbar\",\n          \"message\": \"{param:message}\",\n          \"fade_in_ticks\": 5,\n          \"stay_ticks\": 60,\n          \"fade_out_ticks\": 10\n        }\n      ]\n    }\n  ]\n}\n```\n\nFor `spawn_particle`, omitting `count` and spread fields preserves each platform generator's default particle behavior. Send explicit values when the count or spread matters.\n\n##### ConditionSpec aliases\n\nEvery condition uses `condition_kind`. Prefer `identifier`; accepted exact aliases are `item`/`item_id` for `held_item`, `entity`/`entity_id` for `target_entity`, `block` for `block_id`, `biome` for `biome_id`, `tag`/`tag_id` for `has_tag`, and `objective`/`objective_id`/`scoreboard_id` for `score_at_least`. For `score_at_least`, `score` and `amount` are accepted aliases for `value`.\n\n##### Condition value reference\n\n- `entity_within_radius`: `value` is an integer radius from `1` to `64`; optional `identifier` filters the nearby entity type, for example `{\"condition_kind\":\"entity_within_radius\",\"identifier\":\"minecraft:player\",\"value\":12}`.\n- `time_of_day`: `value` is one of `day`, `night`, `dawn`, `sunrise`, `morning`, `noon`, `dusk`, `sunset`, or `midnight`.\n- `weather_is`: Java only; `identifier` is one of `clear`, `rain`, or `thunder`.\n- `y_below`: `value` is an attainable Overworld threshold from `-63` to `320`; `y_above` accepts `-64` to `319`.\n- `light_level_below`: Java only; `value` is an integer from `1` to `15` (`0` is impossible because light levels are never negative).\n\n#### Recipes\n\nEach recipe is a minimal copy-pasteable spec. Drop the recipe inside the `features` block of a `start_build_job` request along with `target_platform`, `mod_id`, and `mod_name`.\n\n##### Recipe 1 — A diamond sword\n\n```json\n{\n  \"items\": [\n    {\n      \"item_id\": \"flame_sword\",\n      \"display_name\": \"Flame Sword\",\n      \"item_kind\": \"weapon\",\n      \"tool_type\": \"sword\",\n      \"tool_tier\": \"diamond\",\n      \"damage\": 7,\n      \"texture\": {\"color_hex\": \"#ff5522\"}\n    }\n  ]\n}\n```\n\nThe validator confirms `item_kind=\"weapon\"` with `tool_type=\"sword\"`. The renderer expands `#ff5522` into a sword sprite. The item lands in the Equipment creative tab. Durability, repair material, enchantability, hand-equipped rendering, and the sword-tag default come from `tool_tier=\"diamond\"`.\n\n##### Recipe 2 — An iron pickaxe\n\n```json\n{\n  \"items\": [\n    {\n      \"item_id\": \"iron_pickaxe\",\n      \"display_name\": \"Iron Pickaxe\",\n      \"item_kind\": \"tool\",\n      \"tool_type\": \"pickaxe\",\n      \"tool_tier\": \"iron\",\n      \"texture\": {\"color_hex\": \"#cccccc\"}\n    }\n  ]\n}\n```\n\n`tool_type=\"pickaxe\"` is required: tools without `tool_type` are rejected because the icon and dig speed would be non-deterministic. Default damage/durability come from `tool_tier=\"iron\"`. Substitute `axe`, `shovel`, or `hoe` for other vanilla tool kinds.\n\n##### Recipe 3 — A custom-tier weapon\n\n```json\n{\n  \"items\": [\n    {\n      \"item_id\": \"void_blade\",\n      \"display_name\": \"Void Blade\",\n      \"item_kind\": \"weapon\",\n      \"tool_type\": \"custom\",\n      \"tool_tier\": \"custom\",\n      \"damage\": 12,\n      \"durability\": 3000,\n      \"tool\": {\n        \"tool_type\": \"custom\",\n        \"tier\": \"custom\",\n        \"attack_damage\": 12,\n        \"attack_speed\": 1.4\n      },\n      \"repairable\": {\"repair_items\": [{\"item\": \"minecraft:netherite_ingot\", \"repair_amount\": 50}]},\n      \"enchantable\": {\"slot\": \"sword\", \"value\": 18},\n      \"texture\": {\"color_hex\": \"#2a0033\"}\n    }\n  ]\n}\n```\n\nUse `custom` to opt out of tier defaults. Declare `damage`, `durability`, `tool.attack_speed`, `repairable`, and `enchantable` explicitly.\n\n##### Recipe 3b — A pickaxe that mines every block\n\n```json\n{\n  \"items\": [\n    {\n      \"item_id\": \"godpick\",\n      \"display_name\": \"Godpick\",\n      \"item_kind\": \"tool\",\n      \"tool_type\": \"pickaxe\",\n      \"tool_tier\": \"netherite\",\n      \"tool\": {\n        \"tool_type\": \"pickaxe\",\n        \"tier\": \"netherite\",\n        \"break_all_blocks\": true,\n        \"instabreak\": true\n      },\n      \"texture\": {\"color_hex\": \"#ffd700\"}\n    }\n  ]\n}\n```\n\n`tool.break_all_blocks=true` tells the generator: this tool ignores the vanilla pickaxe/axe/shovel/hoe destructible tags and mines *every* block. Bedrock emits a Molang-true tag predicate on `minecraft:digger.destroy_speeds`; Java upgrades the tier to netherite so the tool's `INCORRECT_FOR` block tag is effectively empty. Pair with `instabreak: true` for one-shot mining.\n\n##### Recipe 4 — A full Java diamond armor set\n\n```json\n{\n  \"items\": [\n    {\"item_id\": \"set_helmet\", \"display_name\": \"Set Helmet\", \"item_kind\": \"armor\", \"tool_tier\": \"diamond\", \"armor\": {\"slot\": \"head\",  \"protection\": 3, \"toughness\": 2}, \"texture\": {\"source_base64\": \"<base64 PNG of the helmet icon>\"}},\n    {\"item_id\": \"set_chest\",  \"display_name\": \"Set Chest\",  \"item_kind\": \"armor\", \"tool_tier\": \"diamond\", \"armor\": {\"slot\": \"chest\", \"protection\": 8, \"toughness\": 2}, \"texture\": {\"source_base64\": \"<base64 PNG of the chestplate icon>\"}},\n    {\"item_id\": \"set_legs\",   \"display_name\": \"Set Legs\",   \"item_kind\": \"armor\", \"tool_tier\": \"diamond\", \"armor\": {\"slot\": \"legs\",  \"protection\": 6, \"toughness\": 2}, \"texture\": {\"source_base64\": \"<base64 PNG of the leggings icon>\"}},\n    {\"item_id\": \"set_boots\",  \"display_name\": \"Set Boots\",  \"item_kind\": \"armor\", \"tool_tier\": \"diamond\", \"armor\": {\"slot\": \"feet\",  \"protection\": 3, \"toughness\": 2}, \"texture\": {\"source_base64\": \"<base64 PNG of the boots icon>\"}}\n  ]\n}\n```\n\nOne `ItemSpec` per armor slot. `armor.slot` is required: head/chest/legs/feet. `tool_tier` must be `iron`, `gold`, `diamond`, or `netherite` and selects the vanilla armor material (sound, repair item, durability, and worn equipment asset). Supply a real PNG for the inventory icon; `color_hex` is rejected with `MINECRAFT_ARMOR_TEXTURE_REQUIRES_IMAGE`. Use edited source for wood/stone/custom armor materials or a custom worn atlas.\n\n##### Recipe 5 — A food item\n\n```json\n{\n  \"items\": [\n    {\n      \"item_id\": \"spicy_jerky\",\n      \"display_name\": \"Spicy Jerky\",\n      \"item_kind\": \"food\",\n      \"food\": {\n        \"nutrition\": 7,\n        \"saturation_modifier\": 0.6,\n        \"effects\": [{\"effect\": \"minecraft:fire_resistance\", \"chance\": 1.0, \"duration_seconds\": 30, \"amplifier\": 0}]\n      },\n      \"texture\": {\"color_hex\": \"#7a3a1a\"}\n    }\n  ]\n}\n```\n\nPair `item_kind=\"food\"` with the `food` preset. The food preset emits the eat animation, hunger restore, and any post-consumption effects.\n\n##### Recipe 6 — A bow that fires arrows\n\n```json\n{\n  \"items\": [\n    {\n      \"item_id\": \"magic_arrow\",\n      \"display_name\": \"Magic Arrow\",\n      \"item_kind\": \"projectile\",\n      \"projectile\": {\"projectile_entity\": \"minecraft:arrow\"},\n      \"texture\": {\"color_hex\": \"#88aaff\"}\n    },\n    {\n      \"item_id\": \"magic_bow\",\n      \"display_name\": \"Magic Bow\",\n      \"item_kind\": \"projectile\",\n      \"shooter\": {\"charge_on_draw\": true, \"scale_power_by_draw_duration\": true, \"ammunition\": [\"modid:magic_arrow\"], \"max_draw_duration\": 1.0},\n      \"texture\": {\"color_hex\": \"#552200\"}\n    }\n  ]\n}\n```\n\nTwo items: one for the projectile, one for the launcher. Both carry `item_kind=\"projectile\"`; the launcher has the `shooter` preset.\n\n##### Recipe 7 — An ore plus its worldgen and drop\n\n```json\n{\n  \"blocks\": [\n    {\n      \"block_id\": \"ruby_ore\",\n      \"display_name\": \"Ruby Ore\",\n      \"block_kind\": \"ore\",\n      \"hardness\": 3.0,\n      \"resistance\": 8.0,\n      \"drops\": [\"modid:ruby\"],\n      \"texture\": {\"color_hex\": \"#c91140\"}\n    }\n  ],\n  \"items\": [\n    {\n      \"item_id\": \"ruby\",\n      \"display_name\": \"Ruby\",\n      \"item_kind\": \"generic\",\n      \"texture\": {\"color_hex\": \"#c91140\"}\n    }\n  ],\n  \"worldgen\": [\n    {\n      \"feature_id\": \"ruby_ore_feature\",\n      \"feature_kind\": \"ore_feature\",\n      \"block_id\": \"ruby_ore\",\n      \"target_block\": \"minecraft:stone\",\n      \"vein_size\": 6,\n      \"count_per_chunk\": 4,\n      \"min_y\": -32,\n      \"max_y\": 48\n    }\n  ]\n}\n```\n\n`drops` references an item id by namespace. The mined `ruby` is `item_kind=\"generic\"` — it is a raw material that another recipe consumes; it does not need a tool/armor/food preset.\n\n##### Recipe 8 — A hostile mob\n\n```json\n{\n  \"entities\": [\n    {\n      \"entity_id\": \"shadow_stalker\",\n      \"display_name\": \"Shadow Stalker\",\n      \"entity_kind\": \"hostile_mob\",\n      \"health\": 30,\n      \"attack_damage\": 5,\n      \"movement_speed\": 0.32,\n      \"spawn_biomes\": [\"minecraft:dark_forest\", \"minecraft:taiga\"],\n      \"spawn_weight\": 12,\n      \"texture\": {\"color_hex\": \"#1a1a2e\"}\n    }\n  ]\n}\n```\n\nThe entity texture seeds both the mob model and the spawn-egg color. Bedrock additionally accepts `source_base64` or `source_file_id` to use a 64×64 PNG atlas.\n\n##### Recipe 9 — A tameable pet\n\n```json\n{\n  \"entities\": [\n    {\n      \"entity_id\": \"stone_lynx\",\n      \"display_name\": \"Stone Lynx\",\n      \"entity_kind\": \"tameable_pet\",\n      \"health\": 20,\n      \"attack_damage\": 4,\n      \"tameable\": {\"tame_items\": [\"minecraft:cooked_beef\"], \"probability\": 0.5},\n      \"texture\": {\"color_hex\": \"#9d8866\"}\n    }\n  ]\n}\n```\n\n`entity_kind=\"tameable_pet\"` plus the `tameable` preset enables the right-click-with-item taming flow.\n\n##### Recipe 10 — A weapon that sets enemies on fire\n\n```json\n{\n  \"items\": [\n    {\n      \"item_id\": \"flame_sword\",\n      \"display_name\": \"Flame Sword\",\n      \"item_kind\": \"weapon\",\n      \"tool_type\": \"sword\",\n      \"tool_tier\": \"diamond\",\n      \"damage\": 8,\n      \"texture\": {\"color_hex\": \"#ff5522\"}\n    }\n  ],\n  \"events\": [\n    {\n      \"event_id\": \"flame_sword_ignite\",\n      \"event_kind\": \"on_item_hit_entity\",\n      \"conditions\": [{\"condition_kind\": \"held_item\", \"identifier\": \"modid:flame_sword\"}],\n      \"actions\": [{\"action_kind\": \"set_on_fire\", \"duration_ticks\": 120}]\n    }\n  ]\n}\n```\n\nOne item, one event. The event filters by `held_item` (your sword's id) and emits `set_on_fire` against the hit entity. The event does *not* create a second item.\n\n##### Recipe 11 — A skin pack with one skin\n\n```json\n{\n  \"action\": \"start_build_job\",\n  \"target_platform\": \"bedrock_skinpack\",\n  \"mod_id\": \"blue_pack\",\n  \"mod_name\": \"Blue Pack\",\n  \"skin_pack\": {\n    \"pack_id\": \"blue_pack\",\n    \"display_name\": \"Blue Pack\",\n    \"skins\": [\n      {\n        \"skin_id\": \"blue_hero\",\n        \"display_name\": \"Blue Hero\",\n        \"texture\": {\"source_base64\": \"<base64-encoded 64x64 PNG>\"}\n      }\n    ]\n  }\n}\n```\n\nSkin pack textures must be exactly 64×64 PNG.\n\n##### Recipe 12 — A cursed prank item\n\n```json\n{\n  \"items\": [\n    {\n      \"item_id\": \"cursed_stick\",\n      \"display_name\": \"Cursed Stick\",\n      \"item_kind\": \"generic\",\n      \"texture\": {\"color_hex\": \"#7a35ff\"}\n    }\n  ],\n  \"events\": [\n    {\n      \"event_id\": \"cursed_stick_use\",\n      \"event_kind\": \"on_item_use\",\n      \"conditions\": [{\"condition_kind\": \"held_item\", \"identifier\": \"cursed_stick\"}],\n      \"actions\": [\n        {\"action_kind\": \"spawn_particle\", \"identifier\": \"minecraft:basic_flame_particle\", \"count\": 24, \"spread_x\": 2, \"spread_y\": 1, \"spread_z\": 2},\n        {\"action_kind\": \"play_sound\", \"identifier\": \"minecraft:block.note_block.pling\", \"volume\": 1.5, \"pitch\": 0.5},\n        {\"action_kind\": \"show_title\", \"message\": \"Something moved.\", \"audience\": \"source\"},\n        {\"action_kind\": \"teleport\", \"position\": [0, 3, 0]}\n      ]\n    }\n  ]\n}\n```\n\nUse relative `position` for harmless movement effects. The item stays one `ItemSpec`; the event supplies the prank behavior.\n\n##### Recipe 13 — A fake-glitch block event\n\n```json\n{\n  \"blocks\": [\n    {\n      \"block_id\": \"glitch_panel\",\n      \"display_name\": \"Glitch Panel\",\n      \"block_kind\": \"interactive\",\n      \"texture\": {\"color_hex\": \"#00ffff\"}\n    }\n  ],\n  \"events\": [\n    {\n      \"event_id\": \"glitch_panel_interact\",\n      \"event_kind\": \"on_block_interact\",\n      \"conditions\": [{\"condition_kind\": \"block_id\", \"identifier\": \"glitch_panel\"}],\n      \"actions\": [\n        {\"action_kind\": \"set_time\", \"time_of_day\": \"midnight\"},\n        {\"action_kind\": \"set_weather\", \"weather\": \"thunder\", \"duration_ticks\": 200},\n        {\"action_kind\": \"spawn_particle\", \"identifier\": \"minecraft:large_smoke\", \"count\": 48, \"spread_x\": 3, \"spread_y\": 2, \"spread_z\": 3},\n        {\"action_kind\": \"broadcast_message\", \"text\": \"World state desynchronized.\"}\n      ]\n    }\n  ]\n}\n```\n\nFake-glitch behavior should be built from world-side events, particles, titles/messages, time, weather, sounds, and block changes.\n\n##### Recipe 14 — An admin debug command\n\n```json\n{\n  \"commands\": [\n    {\n      \"command_id\": \"debug_storm\",\n      \"description\": \"Toggle a dramatic debug storm.\",\n      \"command_kind\": \"admin_command\",\n      \"permission_level\": \"admin\",\n      \"actions\": [\n        {\"action_kind\": \"set_gamerule\", \"identifier\": \"doDaylightCycle\", \"value\": false},\n        {\"action_kind\": \"set_time\", \"value\": \"night\"},\n        {\"action_kind\": \"set_weather\", \"identifier\": \"thunder\", \"duration_ticks\": 600},\n        {\"action_kind\": \"send_message\", \"message\": \"Debug storm enabled.\", \"audience\": \"all_players\"}\n      ]\n    }\n  ]\n}\n```\n\nUse `admin_command` plus `permission_level=\"admin\"` for operator tools. Prefer `set_gamerule`, `set_time`, and `set_weather` over raw command strings when those first-class actions cover the behavior.\n\n##### Recipe 15 — A chaos trap\n\n```json\n{\n  \"blocks\": [\n    {\n      \"block_id\": \"chaos_plate\",\n      \"display_name\": \"Chaos Plate\",\n      \"block_kind\": \"interactive\",\n      \"texture\": {\"color_hex\": \"#ff00ff\"}\n    }\n  ],\n  \"scoreboards\": [{\"objective_id\": \"chaos_triggers\", \"display_name\": \"Chaos Triggers\", \"criterion\": \"dummy\"}],\n  \"events\": [\n    {\n      \"event_id\": \"chaos_plate_trigger\",\n      \"event_kind\": \"on_block_interact\",\n      \"conditions\": [{\"condition_kind\": \"block_id\", \"identifier\": \"chaos_plate\"}],\n      \"actions\": [\n        {\"action_kind\": \"set_block\", \"identifier\": \"minecraft:gold_block\", \"position\": [0, -1, 0]},\n        {\"action_kind\": \"summon_lightning\", \"position\": [2, 0, 0]},\n        {\"action_kind\": \"create_explosion\", \"value\": 2, \"position\": [-2, 0, 0]},\n        {\"action_kind\": \"set_scoreboard\", \"identifier\": \"chaos_triggers\", \"operation\": \"add\", \"value\": 1}\n      ]\n    }\n  ]\n}\n```\n\nKeep high-impact effects bounded with explicit values and relative positions so the generated behavior remains predictable.\n\n##### Recipe 16 — Timed/random progression with milestones\n\n```json\n{\n  \"scoreboards\": [{\"objective_id\": \"weeks\", \"display_name\": \"Weeks\", \"criterion\": \"dummy\"}],\n  \"events\": [\n    {\n      \"event_id\": \"weekly_progress\",\n      \"event_kind\": \"on_player_tick\",\n      \"interval_ticks\": 1200,\n      \"cooldown_ticks\": 1200,\n      \"chance_percent\": 35,\n      \"actions\": [\n        {\"action_kind\": \"set_scoreboard\", \"identifier\": \"weeks\", \"operation\": \"add\", \"value\": 1},\n        {\"action_kind\": \"show_title\", \"audience\": \"source\", \"title_display\": \"actionbar\", \"message\": \"A week passes...\"}\n      ]\n    }\n  ]\n}\n```\n\nUse declared scoreboards for staged Java progress; the objective is created on server startup and behavior verification asserts that it exists. `set_scoreboard` can also create an undeclared writable objective at action time on both Java and Bedrock. A declared objective mutated by `set_scoreboard` must use `criterion=\"dummy\"` or `\"trigger\"`; read-only vanilla criteria reject before generation. Use `interval_ticks` for cadence, `cooldown_ticks` to prevent repeated firing, and `chance_percent` for random outcomes.\n\n##### Recipe 17 — A stalker entity with proximity behavior\n\n```json\n{\n  \"entities\": [\n    {\n      \"entity_id\": \"stalker\",\n      \"display_name\": \"Stalker\",\n      \"entity_kind\": \"hostile_mob\",\n      \"health\": 60,\n      \"movement_speed\": 0.35,\n      \"scale\": 2.5,\n      \"ai_goals\": [\n        {\"goal_kind\": \"nearest_attackable_target\", \"priority\": 1, \"search_radius\": 30},\n        {\"goal_kind\": \"melee_attack\", \"priority\": 2, \"speed_multiplier\": 1.25, \"attack_reach_multiplier\": 2.0}\n      ],\n      \"texture\": {\"color_hex\": \"#111111\"}\n    }\n  ],\n  \"events\": [\n    {\n      \"event_id\": \"stalker_charge\",\n      \"event_kind\": \"on_entity_tick\",\n      \"interval_ticks\": 20,\n      \"conditions\": [{\"condition_kind\": \"entity_within_radius\", \"identifier\": \"minecraft:player\", \"value\": 12}],\n      \"actions\": [\n        {\"action_kind\": \"wait\", \"duration_ticks\": 20},\n        {\"action_kind\": \"apply_effect\", \"identifier\": \"minecraft:slowness\", \"duration_ticks\": 80, \"radius\": 12, \"radius_filter\": \"players\"},\n        {\"action_kind\": \"spawn_particle\", \"identifier\": \"minecraft:basic_flame_particle\", \"count\": 16, \"spread_x\": 1, \"spread_y\": 2, \"spread_z\": 1}\n      ]\n    }\n  ]\n}\n```\n\n`attack_reach_multiplier` is Bedrock-only. Fabric and NeoForge reject it with an actionable platform error; use `search_radius` and radius actions for cross-platform sensing.\n\n##### Recipe 18 — A two-input machine\n\n```json\n{\n  \"items\": [\n    {\"item_id\": \"amalgam\", \"display_name\": \"Amalgam\", \"texture\": {\"color_hex\": \"#b8f2ff\"}}\n  ],\n  \"machines\": [\n    {\n      \"machine_id\": \"amalgamator\",\n      \"display_name\": \"Amalgamator\",\n      \"texture\": {\"color_hex\": \"#606060\"},\n      \"processing_time_ticks\": 100,\n      \"machine_recipes\": [\n        {\n          \"recipe_id\": \"make_amalgam\",\n          \"inputs\": [\"minecraft:iron_ingot\", \"minecraft:gold_ingot\"],\n          \"output\": \"modid:amalgam\",\n          \"output_count\": 1\n        }\n      ]\n    }\n  ],\n  \"events\": [\n    {\n      \"event_id\": \"amalgamator_complete\",\n      \"event_kind\": \"on_machine_recipe_complete\",\n      \"actions\": [{\"action_kind\": \"broadcast_message\", \"text\": \"The amalgamator finished.\"}]\n    }\n  ]\n}\n```\n\nRight-click the generated machine with each input item. Inputs are tracked per block position; when the full set is present, the output drops after `processing_time_ticks`.\n\n#### Verify Every Generation\n\nUse `render_preview_image` to inspect important textures, then submit the same spec through `start_build_job`. A vi\n\nFile v1.0.7:_meta.json\n\n{\n  \"ownerId\": \"kn798pfbxm62kkd2750t7vsex5819pyc\",\n  \"slug\": \"minecraft-custom-mod-builder\",\n  \"version\": \"1.0.7\",\n  \"publishedAt\": 1784002449470\n}\n\nFile v1.0.7:schema.md\n\n# Minecraft Custom Mod Builder Schema\n\nThis generated reference belongs to the adjacent `SKILL.md`. Use it for exact action names, action slugs, parameter summaries, sample parameters, and generated JSON parameter schemas.\n\nProduct slug: `minecraft-custom-mod-builder`\n\nx402 action routes are enabled for this product through `https://www.agentpmt.com/api/external`.\n\n## `create_mod_project`\n\nAction slug: `create-mod-project`\n\nx402 action URL: `POST https://www.agentpmt.com/api/external/tools/minecraft-custom-mod-builder/actions/create-mod-project/invoke`\n\nPrice: `15` credits\n\nSynchronous unverified source/debug generation. Accepts only verification_level='off'; use start_build_job for install-ready final artifacts.\n\nParameters:\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `advanced_resources` | `array` | no | Non-executable data/resource files or Bedrock .mcfunction files. Java source and Bedrock JavaScript are rejected. |\n| `allow_experimental_bedrock_features` | `boolean` | no | Allow Bedrock experimental features when required. |\n| `assets` | `object` | no | Optional textures, sounds, particles, models, and language entries. |\n| `authoring_mode` | `string` | no | Typed declarative generation mode. Agent-edited code must use start_build_job with source_archive_file_id. |\n| `build_jar` | `boolean` | no | Fabric/NeoForge only. Build jar when true. |\n| `compatibility_mode` | `string` | no | Strict platform fidelity. Platform-mismatched features are rejected, never dropped. |\n| `description` | `string` | no | Short mod description. |\n| `features` | `object` | no | FeatureSet object. Use arrays such as items, blocks, entities, events, commands, client_modules, machines, recipes, particles, sounds, functions, storage, worldgen, scoreboards, biomes, dimensions, effects, and skins. See get_instructions for nested fields. |\n| `fidelity_policy` | `string` | no | Preserve intent by default. acknowledged_approximation is valid only after explicit user approval of a fully implemented alternative; placeholders are never accepted. |\n| `include_file_preview` | `boolean` | no | Include capped text previews in generated_files. |\n| `minecraft_version` | `string` | no | Pinned version. Omit unless explicitly needed. |\n| `mod_id` | `string` | yes | Lowercase namespace matching ^[a-z][a-z0-9_]{1,63}$. |\n| `mod_metadata` | `object` | no | Optional metadata such as version, license, authors, logo_texture, brand_color_hex, java_side, and bedrock_experiments. |\n| `mod_name` | `string` | yes | Human-readable mod name. |\n| `output_mode` | `string` | no | installable, source, or both. |\n| `skin_pack` | `object` | no | Skin pack definition for target_platform=bedrock_skinpack. |\n| `target_platform` | `string` | yes | bedrock, bedrock_skinpack, fabric, or neoforge. |\n| `user_intent_summary` | `string` | no | Optional concise intent statement for deterministic classification; not used for silent reinterpretation. |\n| `validate_output` | `boolean` | no | Run output validation when supported. |\n| `verification_level` | `string` | no | create_mod_project is unverified and accepts only off. |\n\nSample parameters:\n\n```json\n{\n  \"advanced_resources\": [\n    {}\n  ],\n  \"allow_experimental_bedrock_features\": true,\n  \"assets\": {},\n  \"authoring_mode\": \"auto\",\n  \"build_jar\": true,\n  \"compatibility_mode\": \"strict\",\n  \"description\": \"example description\",\n  \"features\": {}\n}\n```\n\nGenerated JSON parameter schema:\n\n```json\n{\n  \"advanced_resources\": {\n    \"description\": \"Non-executable data/resource files or Bedrock .mcfunction files. Java source and Bedrock JavaScript are rejected.\",\n    \"items\": {\n      \"type\": \"object\"\n    },\n    \"required\": false,\n    \"type\": \"array\"\n  },\n  \"allow_experimental_bedrock_features\": {\n    \"description\": \"Allow Bedrock experimental features when required.\",\n    \"required\": false,\n    \"type\": \"boolean\"\n  },\n  \"assets\": {\n    \"description\": \"Optional textures, sounds, particles, models, and language entries.\",\n    \"required\": false,\n    \"type\": \"object\"\n  },\n  \"authoring_mode\": {\n    \"description\": \"Typed declarative generation mode. Agent-edited code must use start_build_job with source_archive_file_id.\",\n    \"enum\": [\n      \"auto\",\n      \"declarative\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"build_jar\": {\n    \"description\": \"Fabric/NeoForge only. Build jar when true.\",\n    \"required\": false,\n    \"type\": \"boolean\"\n  },\n  \"compatibility_mode\": {\n    \"description\": \"Strict platform fidelity. Platform-mismatched features are rejected, never dropped.\",\n    \"enum\": [\n      \"strict\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"description\": {\n    \"description\": \"Short mod description.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"features\": {\n    \"description\": \"FeatureSet object. Use arrays such as items, blocks, entities, events, commands, client_modules, machines, recipes, particles, sounds, functions, storage, worldgen, scoreboards, biomes, dimensions, effects, and skins. See get_instructions for nested fields.\",\n    \"required\": false,\n    \"type\": \"object\"\n  },\n  \"fidelity_policy\": {\n    \"description\": \"Preserve intent by default. acknowledged_approximation is valid only after explicit user approval of a fully implemented alternative; placeholders are never accepted.\",\n    \"enum\": [\n      \"preserve_intent\",\n      \"acknowledged_approximation\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"include_file_preview\": {\n    \"description\": \"Include capped text previews in generated_files.\",\n    \"required\": false,\n    \"type\": \"boolean\"\n  },\n  \"minecraft_version\": {\n    \"description\": \"Pinned version. Omit unless explicitly needed.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"mod_id\": {\n    \"description\": \"Lowercase namespace matching ^[a-z][a-z0-9_]{1,63}$.\",\n    \"required\": true,\n    \"type\": \"string\"\n  },\n  \"mod_metadata\": {\n    \"description\": \"Optional metadata such as version, license, authors, logo_texture, brand_color_hex, java_side, and bedrock_experiments.\",\n    \"required\": false,\n    \"type\": \"object\"\n  },\n  \"mod_name\": {\n    \"description\": \"Human-readable mod name.\",\n    \"required\": true,\n    \"type\": \"string\"\n  },\n  \"output_mode\": {\n    \"description\": \"installable, source, or both.\",\n    \"enum\": [\n      \"installable\",\n      \"source\",\n      \"both\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"skin_pack\": {\n    \"description\": \"Skin pack definition for target_platform=bedrock_skinpack.\",\n    \"required\": false,\n    \"type\": \"object\"\n  },\n  \"target_platform\": {\n    \"description\": \"bedrock, bedrock_skinpack, fabric, or neoforge.\",\n    \"enum\": [\n      \"bedrock\",\n      \"bedrock_skinpack\",\n      \"fabric\",\n      \"neoforge\"\n    ],\n    \"required\": true,\n    \"type\": \"string\"\n  },\n  \"user_intent_summary\": {\n    \"description\": \"Optional concise intent statement for deterministic classification; not used for silent reinterpretation.\",\n    \"required\": false,\n    \"type\": \"string\"\n  },\n  \"validate_output\": {\n    \"description\": \"Run output validation when supported.\",\n    \"required\": false,\n    \"type\": \"boolean\"\n  },\n  \"verification_level\": {\n    \"description\": \"create_mod_project is unverified and accepts only off.\",\n    \"enum\": [\n      \"off\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  }\n}\n```\n\n## `get_build_job`\n\nAction slug: `get-build-job`\n\nx402 action URL: `POST https://www.agentpmt.com/api/external/tools/minecraft-custom-mod-builder/actions/get-build-job/invoke`\n\nPrice: `2` credits\n\nFetch one tenant-scoped build job by task_id. Poll until status is completed or failed, then inspect result.runtime_verification, result.visual_proof (File Manager frame file_ids/signed_urls; also in artifacts with label=visual_proof_frame), result.quality_gate, result.ready_for_install, and artifacts. Open visual proof frames before customer delivery.\n\nParameters:\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `task_id` | `string` | yes | Build job id returned by start_build_job. |\n\nSample parameters:\n\n```json\n{\n  \"task_id\": \"example task id\"\n}\n```\n\nGenerated JSON parameter schema:\n\n```json\n{\n  \"task_id\": {\n    \"description\": \"Build job id returned by start_build_job.\",\n    \"required\": true,\n    \"type\": \"string\"\n  }\n}\n```\n\n## `get_instructions`\n\nAction slug: `get-instructions`\n\nx402 action URL: `POST https://www.agentpmt.com/api/external/tools/minecraft-custom-mod-builder/actions/get-instructions/invoke`\n\nPrice: `1` credits\n\nReturn the canonical Minecraft Mod Builder instructions. Call before authoring complex specs or source-archive verification contracts.\n\nParameters:\n\nThis action does not require parameters.\n\nSample parameters:\n\n```json\n{}\n```\n\nGenerated JSON parameter schema:\n\n```json\n{}\n```\n\n## `list_build_jobs`\n\nAction slug: `list-build-jobs`\n\nx402 action URL: `POST https://www.agentpmt.com/api/external/tools/minecraft-custom-mod-builder/actions/list-build-jobs/invoke`\n\nPrice: `2` credits\n\nList recent Minecraft build jobs for the active budget to recover task_id values or inspect recent queued/completed builds.\n\nParameters:\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `limit` | `integer` | no | Maximum jobs to return, from 1 to 100. |\n\nSample parameters:\n\n```json\n{\n  \"limit\": 1\n}\n```\n\nGenerated JSON parameter schema:\n\n```json\n{\n  \"limit\": {\n    \"description\": \"Maximum jobs to return, from 1 to 100.\",\n    \"required\": false,\n    \"type\": \"integer\"\n  }\n}\n```\n\n## `list_capabilities`\n\nAction slug: `list-capabilities`\n\nx402 action URL: `POST https://www.agentpmt.com/api/external/tools/minecraft-custom-mod-builder/actions/list-capabilities/invoke`\n\nPrice: `2` credits\n\nReturn supported platforms, pinned versions, feature/action matrices, implementation_status, quality-gate fields, and unsupported families.\n\nParameters:\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `target_platform` | `string` | no | Optional platform filter. |\n\nSample parameters:\n\n```json\n{\n  \"target_platform\": \"bedrock\"\n}\n```\n\nGenerated JSON parameter schema:\n\n```json\n{\n  \"target_platform\": {\n    \"description\": \"Optional platform filter.\",\n    \"enum\": [\n      \"bedrock\",\n      \"bedrock_skinpack\",\n      \"fabric\",\n      \"neoforge\"\n    ],\n    \"required\": false,\n    \"type\": \"string\"\n  }\n}\n```\n\n## `render_preview_image`\n\nAction slug: `render-preview-image`\n\nx402 action URL: `POST https://www.agentpmt.com/api/external/tools/minecraft-custom-mod-builder/actions/render-preview-image/invoke`\n\nPrice: `5` credits\n\nRender and upload an enlarged PNG preview for an item, block, or entity from a structured spec, source archive, or direct image file.\n\nParameters:\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `features` | `object` | no | FeatureSet object for spec preview. |\n| `mod_id` | `string` | no | Lowercase namespace for spec/source preview. |\n| `mod_name` | `string` | no | Human-readable mod name for spec preview. |\n| `preview_background` | `string` | no | checkerboard, transparent, white, or black. |\n| `preview_size` | `integer` | no | Square preview PNG size from 32 to 1024 pixels. |\n| `preview_source_fi\n\nArchive v1.0.6: 4 files, 10095 bytes\n\nFiles: schema.md (25677b), skill-card.md (2893b), SKILL.md (13655b), _meta.json (147b)\n\nArchive v1.0.5: 4 files, 9803 bytes\n\nFiles: schema.md (25205b), skill-card.md (2737b), SKILL.md (13466b), _meta.json (147b)\n\nArchive v1.0.4: 4 files, 9722 bytes\n\nFiles: schema.md (24295b), skill-card.md (2873b), SKILL.md (13533b), _meta.json (147b)\n\nArchive v1.0.3: 4 files, 27069 bytes\n\nFiles: schema.md (31486b), skill-card.md (2844b), SKILL.md (66355b), _meta.json (147b)\n\nArchive v1.0.2: 4 files, 26187 bytes\n\nFiles: schema.md (56042b), skill-card.md (2485b), SKILL.md (62904b), _meta.json (147b)\n\nArchive v1.0.1: 4 files, 25929 bytes\n\nFiles: schema.md (55558b), skill-card.md (2318b), SKILL.md (61836b), _meta.json (147b)\n\nArchive v1.0.0: 4 files, 35795 bytes\n\nFiles: schema.md (210007b), skill-card.md (2657b), SKILL.md (24878b), _meta.json (147b)","readmeExcerpt":"Skill: Minecraft Custom Mod Builder Owner: agentpmt Summary: Minecraft Custom Mod Builder: Generate and verify structured Minecraft Bedrock, Bedrock skin pack, Fabric, and NeoForge projects. Use when an agent needs min... Tags: agentpmt:1.0.8, create-mod-project:1.0.8, get-build-job:1.0.8, get-instructions:1.0.8, latest:1.0.8, list-build-jobs:1.0.8, list-capabilities:1.0.8, marketplace:1.0.8, render-preview-image:1.0","codeSnippets":[],"executableExamples":[{"language":"json","snippet":"{\n  \"action\": \"start_build_job\",\n  \"target_platform\": \"fabric\",\n  \"mod_id\": \"edited_mod\",\n  \"authoring_mode\": \"agent_code\",\n  \"source_archive_file_id\": \"file_...\",\n  \"source_test_mode\": \"test_only\",\n  \"verification_contract\": {\n    \"schema_version\": \"1\",\n    \"target_platform\": \"fabric\",\n    \"mod_id\": \"edited_mod\",\n    \"user_intent_summary\": \"Using the edited mod marks the player as verified.\",\n    \"expected_checks\": [\n      {\n        \"check_id\": \"boot\",\n        \"description\": \"The edited mod boots without registration errors.\",\n        \"check_kind\": \"boot\"\n      },\n      {\n        \"check_id\": \"player_marked\",\n        \"description\": \"The edited behavior adds the edited_mod_verified player tag.\",\n        \"check_kind\": \"behavior\",\n        \"assertion_kind\": \"tag_present\",\n        \"target\": \"edited_mod_verified\"\n      }\n    ]\n  }\n}"},{"language":"json","snippet":"{\n  \"client_modules\": [\n    {\n      \"module_id\": \"anarchy_utility\",\n      \"display_name\": \"Anarchy Utility\",\n      \"module_kind\": \"2b2t_client\",\n      \"color_hex\": \"lime\",\n      \"scan_radius\": 32,\n      \"max_rendered_markers\": 48\n    }\n  ]\n}"},{"language":"json","snippet":"{\n  \"client_modules\": [\n    {\n      \"module_id\": \"shizik_profile\",\n      \"display_name\": \"Shizik FPS Profile\",\n      \"module_kind\": \"shizik\",\n      \"performance_mode\": \"fps\",\n      \"max_render_distance\": 6,\n      \"max_simulation_distance\": 5,\n      \"entity_distance_scale\": 0.35\n    }\n  ]\n}"},{"language":"json","snippet":"{\n  \"client_modules\": [\n    {\n      \"module_id\": \"tnt_cart_spots\",\n      \"display_name\": \"TNT Cart Placement ESP\",\n      \"module_kind\": \"tnt_cart_placement_esp\",\n      \"scan_radius\": 48,\n      \"update_interval_ticks\": 5,\n      \"max_rendered_markers\": 64,\n      \"color_hex\": \"#ff3355\"\n    }\n  ]\n}"},{"language":"json","snippet":"{\n  \"commands\": [\n    {\n      \"command_id\": \"announce\",\n      \"description\": \"Broadcast a title.\",\n      \"command_kind\": \"argument_command\",\n      \"permission_level\": \"op\",\n      \"parameters\": [{\"name\": \"message\", \"param_type\": \"string\"}],\n      \"actions\": [\n        {\n          \"action_kind\": \"show_title\",\n          \"audience\": \"all_players\",\n          \"title_display\": \"actionbar\",\n          \"message\": \"{param:message}\",\n          \"fade_in_ticks\": 5,\n          \"stay_ticks\": 60,\n          \"fade_out_ticks\": 10\n        }\n      ]\n    }\n  ]\n}"},{"language":"json","snippet":"{\n  \"items\": [\n    {\n      \"item_id\": \"flame_sword\",\n      \"display_name\": \"Flame Sword\",\n      \"item_kind\": \"weapon\",\n      \"tool_type\": \"sword\",\n      \"tool_tier\": \"diamond\",\n      \"damage\": 7,\n      \"texture\": {\"color_hex\": \"#ff5522\"}\n    }\n  ]\n}"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: minecraft-custom-mod-builder\ndescription: \"Minecraft Custom Mod Builder: Generate and verify structured Minecraft Bedrock, Bedrock skin pack, Fabric, and NeoForge projects. Use when an agent needs minecraft custom mod builder, create runtime verified bedrock add ons and skin packs; build and verify fabric and neoforge jars; generate typed items, blocks, entities, commands, create mod project, target platform, mod id through AgentPMT-hosted remote tool calls. Discovery terms: minecraft custom mod builder.\"\nversion: 1.0.8\nhomepage: https://www.agentpmt.com/marketplace/minecraft-custom-mod-builder\ncompatibility: \"Agent instructions for AgentPMT-hosted remote tool calls. Follow this skill body for supported account, wallet, and setup routes. No local command runtime is declared.\"\nmetadata: {\"author\":\"agentpmt\",\"openclaw\":{\"homepage\":\"https://www.agentpmt.com/marketplace/minecraft-custom-mod-builder\"}}\n---\n# Minecraft Custom Mod Builder\n\n## Freshness\nLast updated: `2026-07-14`.\n\nIf the current date is more than 7 days after the last updated date, reinstall this skill from skills.sh or ClawHub before relying on endpoints, schemas, setup steps, or examples.\n\n## What This Tool Does\nBuild structured Minecraft Bedrock add-ons, Bedrock skin packs, and Fabric/NeoForge projects with strict schemas, real runtime behavior checks, File Manager visual proof galleries, async install-readiness gates, and a full test loop for agent-edited source.\n\n## Product Instructions\n### Minecraft Mod Builder\n\nGenerate 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.\n\n#### Two Rules That Will Save You Many Retries\n\n##### Rule 1 — One ItemSpec equals one in-game item\n\nA 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.\n\nDo 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.\n\n##### Rule 2 — Every visible asset requires a texture\n\nItems, blocks, entities, particles, named texture assets, machines, storage, and skin-pack skins must each carry a `texture` with one of these three sources:\n\n* `source_base64` — base64-encoded PNG or JPEG bytes (max 1024×1024, max 5 MB).\n* `source_file_id` — a File Manager file_id for a user-uploaded image.\n* `color_hex` — an explicit `#RRGGBB` color. Only `item_kind in"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn798pfbxm62kkd2750t7vsex5819pyc\",\n  \"slug\": \"minecraft-custom-mod-builder\",\n  \"version\": \"1.0.8\",\n  \"publishedAt\": 1784063616548\n}"},{"path":"schema.md","content":"# Minecraft Custom Mod Builder Schema\n\nThis generated reference belongs to the adjacent `SKILL.md`. Use it for exact action names, action slugs, parameter summaries, sample parameters, and generated JSON parameter schemas.\n\nProduct slug: `minecraft-custom-mod-builder`\n\nx402 action routes are enabled for this product through `https://www.agentpmt.com/api/external`.\n\n## `create_mod_project`\n\nAction slug: `create-mod-project`\n\nx402 action URL: `POST https://www.agentpmt.com/api/external/tools/minecraft-custom-mod-builder/actions/create-mod-project/invoke`\n\nPrice: `15` credits\n\nSynchronous unverified source/debug generation. Accepts only verification_level='off'; use start_build_job for install-ready final artifacts.\n\nParameters:\n\n| Parameter | Type | Required | Description |\n|---|---|---|---|\n| `advanced_resources` | `array` | no | Non-executable data/resource files or Bedrock .mcfunction files. Java source and Bedrock JavaScript are rejected. |\n| `allow_experimental_bedrock_features` | `boolean` | no | Allow Bedrock experimental features when required. |\n| `assets` | `object` | no | Optional textures, sounds, particles, models, and language entries. |\n| `authoring_mode` | `string` | no | Typed declarative generation mode. Agent-edited code must use start_build_job with source_archive_file_id. |\n| `build_jar` | `boolean` | no | Fabric/NeoForge only. Build jar when true. |\n| `compatibility_mode` | `string` | no | Strict platform fidelity. Platform-mismatched features are rejected, never dropped. |\n| `description` | `string` | no | Short mod description. |\n| `features` | `object` | no | FeatureSet object. Use arrays such as items, blocks, entities, events, commands, client_modules, machines, recipes, particles, sounds, functions, storage, worldgen, scoreboards, biomes, dimensions, effects, and skins. See get_instructions for nested fields. |\n| `fidelity_policy` | `string` | no | Preserve intent by default. acknowledged_approximation is valid only after explicit user approval of a fully implemented alternative; placeholders are never accepted. |\n| `include_file_preview` | `boolean` | no | Include capped text previews in generated_files. |\n| `minecraft_version` | `string` | no | Pinned version. Omit unless explicitly needed. |\n| `mod_id` | `string` | yes | Lowercase namespace matching ^[a-z][a-z0-9_]{1,63}$. |\n| `mod_metadata` | `object` | no | Optional metadata such as version, license, authors, logo_texture, brand_color_hex, java_side, and bedrock_experiments. |\n| `mod_name` | `string` | yes | Human-readable mod name. |\n| `output_mode` | `string` | no | installable, source, or both. |\n| `skin_pack` | `object` | no | Skin pack definition for target_platform=bedrock_skinpack. |\n| `target_platform` | `string` | yes | bedrock, bedrock_skinpack, fabric, or neoforge. |\n| `user_intent_summary` | `string` | no | Optional concise intent statement for deterministic classification; not used for silent reinterpretation. |\n| `validate_output` | `boolean` | no | Ru"},{"path":"skill-card.md","content":"## Description:\n\nMinecraft Custom Mod Builder helps agents generate and verify structured Minecraft Bedrock add-ons, Bedrock skin packs, and Fabric or NeoForge projects through AgentPMT-hosted tool calls.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[agentpmt](https://clawhub.ai/user/agentpmt)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and external agent users use this skill to create installable or source Minecraft mod projects from structured specifications, then check runtime behavior, visual proof, and install readiness before delivery.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: A third-party hosted service may receive Minecraft specifications, images, and optional source archives.\n\nMitigation: Avoid confidential code, private assets, credentials, wallet secrets, and payment headers in prompts, archives, and logs; review AgentPMT setup and storage terms before use.\n\nRisk: Some supported client and ESP-style features can be used for multiplayer cheating, griefing, or surveillance.\n\nMitigation: Use these capabilities only in authorized, test, single-player, or server-owner-approved contexts and decline requests intended for abuse.\n\nRisk: The server security review flagged the release for review before installation, including mutable setup commands.\n\nMitigation: Prefer pinned installation commands or trusted OpenClaw installation paths, and review and scan the skill before deployment.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/agentpmt/skills/minecraft-custom-mod-builder)\n- [AgentPMT marketplace page](https://www.agentpmt.com/marketplace/minecraft-custom-mod-builder)\n- [Minecraft Custom Mod Builder schema](artifact/schema.md)\n- [AgentPMT account setup](https://clawhub.ai/agentpmt/agentpmt-account-mcp-rest-api-setup)\n- [AgentPMT no-account setup](https://clawhub.ai/agentpmt/agentpmt-no-account-agentaddress-x402)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, code, configuration, guidance]\n\n**Output Format:** [Markdown guidance with JSON request examples and tool-call parameters]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces remote build, preview, capability, and polling requests; installable artifacts should be delivered only after runtime and visual checks pass.]\n\n## Skill Version(s):\n\n1.0.8 (source: release evidence and frontmatter)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Minecraft Custom Mod Builder: Generate and verify structured Minecraft Bedrock, Bedrock skin pack, Fabric, and NeoForge projects. Use when an agent needs min... Skill: Minecraft Custom Mod Builder Owner: agentpmt Summary: Minecraft Custom Mod Builder: Generate and verify structured Minecraft Bedrock, Bedrock skin pack, Fabric, and NeoForge projects. Use when an agent needs min... Tags: agentpmt:1.0.8, create-mod-project:1.0.8, get-build-job:1.0.8, get-instructions:1.0.8, latest:1.0.8, list-build-jobs:1.0.8, list-capabilities:1.0.8, marketplace:1.0.8, render-preview-image:1.0","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1569,"uniquenessScore":46,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T03:39:13.068Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T03:39:13.068Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T08:36:27.224Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}