Tools

CALL ORDER

The order the server hands to the model, in plain words:

  1. check_feasibility — can Bedrock do this at all.
  2. get_version_info and get_schema — which fields are required, which format_version.
  3. After the files are written, review_pack.
FIVE SEPARATE VERSION NUMBERS

This is what get_version_info returns. They are five different things and they are routinely confused.

Marketing number
Example26.40
Where it goes
Announcements only. It is never written into any file.
Trap 1. format_version is not the game version. It is that document type's own schema version: block 1.21.100, feature rule 1.13.0, spawn rule 1.8.0, manifest 2.
Trap 2. The module version is 2.x while the game version is 1.26.x. On a prerelease tag the game version arrives embedded inside the module version: 2.11.0-beta.1.26.50-preview.27.
NINE TOOL CARDS
check_feasibilityCan Bedrock do this at all; if not, why, and what the alternative is
WHEN IT IS CALLED
First. Before any file is written.
DO NOT SKIP THIS
Input is language-independent, output is always English. Blocked classes: input simulation, filesystem access, network access. A blocked answer carries the reason, the evidence, and an alternative.
get_version_infoWhich version number goes where
WHEN IT IS CALLED
Second, together with get_schema, before writing files.
DO NOT SKIP THIS
The returned format_version list may have been narrowed by measurement; get_schema gives the raw schema enum. That is why the two can look different.
get_schemaWhich fields this document type requires, and which format_version is valid
WHEN IT IS CALLED
Second, together with get_version_info.
DO NOT SKIP THIS
It does not return the raw schema, it returns a summary. On crowded nodes it narrows and says what it cut; use path to descend into a subnode.
lookup_idDoes this minecraft: identifier exist in this version, what type is it, what block states does it have
WHEN IT IS CALLED
Whenever an identifier is referenced.
DO NOT SKIP THIS
For a block it also returns the valid block states and the values they accept. A name without a namespace is treated as minecraft:.
validate_jsonDoes this file match the official schema
WHEN IT IS CALLED
After each JSON file is written.
DO NOT SKIP THIS
The error message carries a JSON pointer, the rule that was violated, and readable text. Unexpected field names and the valid enum values make it into the message.
validate_commandIs this command line valid, does it require cheats
WHEN IT IS CALLED
On any command string, including ones embedded in files.
DO NOT SKIP THIS
An execute ... run <command> chain is unwrapped and the inner command is validated too. It tells you whether cheats are required.
validate_scriptDoes the script compile with real tsc and real @minecraft/server types
WHEN IT IS CALLED
After script files are written.
DO NOT SKIP THIS
Real TypeScript compiler, real @minecraft/server types. The answer states which module version it compiled against.
validate_pythonIs this out-of-game automation script and the commands inside it valid
WHEN IT IS CALLED
On automation that runs outside the game.
DO NOT SKIP THIS
Three axes: Python syntax, embedded commands, the /connect envelope. There is no Python interpreter on the hosted endpoint, so the syntax axis is skipped and reported as syntaxChecked: false — ok:true alone does not mean the syntax is valid.
review_packThe whole pack: the right validator per file, plus the checks a schema structurally cannot see
WHEN IT IS CALLED
Last, once the pack is complete.
DO NOT SKIP THIS
Also runs the checks a schema structurally cannot see: identifier consistency, filename rules, manifest module type, texture keys, component names, Molang queries, loot and trade table paths.