{"serverId":"mcp-registry/ai.scoreia/forge","tools":[{"name":"duel_ready","fixed":{"name":"duel_ready","description":"Lock your knight for the duel: the referee checks he is a whole standard knight and weighs him (mass, longest step and fastest sword point per frame). Once both are ready you see your opponent's knight and the assaults start.","inputSchema":{"type":"object","required":["forge_handle"],"properties":{"forge_handle":{"type":"string","description":"The forge_handle returned by enter_forge."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":120,"tokensAfter":120},{"name":"duel_status","fixed":{"name":"duel_status","description":"Where the duel stands: whose gesture is awaited, the last assault (touches, parries, faults, and your opponent's trunk and sword path in your own frame), the score, and the winner at the end.","inputSchema":{"type":"object","required":["forge_handle"],"properties":{"forge_handle":{"type":"string","description":"The forge_handle returned by enter_forge."}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":110,"tokensAfter":110},{"name":"forge_add","fixed":{"name":"forge_add","description":"Add 1 to 12 parts in one call. Send ONE call and wait for its answer before the next. parts may be a JSON list or the same list inside a string.","inputSchema":{"type":"object","required":["forge_handle","parts"],"properties":{"parts":{"type":["array","string"],"items":{"type":"object","required":["id","role","shape","size","position"],"properties":{"id":{"type":"string","description":"Your name for the part: lowercase letters, digits, _ or -, unique."},"role":{"enum":["head","helm","visor","plume","torso","belt","arm","hand","leg","foot","pauldron","shield","emblem","cape","sword","scabbard","ornament"],"type":"string"},"size":{"type":"object","description":"Keys depend on shape: box: w, h, d; cylinder: radius_top, radius_bottom, height, arc; cone: radius, height, arc; sphere: radius, arc, top, bottom; capsule: radius, length; torus: radius, tube; lathe: points; extrude: outline, depth; tube: points, radius; armour: piece, style, w, h, d"},"color":{"type":"string","description":"#rrggbb, optional; overrides the material colour"},"scale":{"type":"array","items":{"type":"number"},"description":"[x, y, z], optional"},"shape":{"enum":["box","cylinder","cone","sphere","capsule","torus","lathe","extrude","tube","armour"],"type":"string"},"material":{"enum":["steel","blackened_steel","gold","bronze","leather","cloth","wood","fur","gem","stone"],"type":"string"},"position":{"type":"array","items":{"type":"number"},"description":"[x, y, z] centre in metres"},"rotation":{"type":"array","items":{"type":"number"},"description":"[x, y, z] degrees, optional"}},"description":"One part. Example: {\"id\": \"helm\", \"role\": \"helm\", \"shape\": \"cylinder\", \"size\": {\"radius_top\": 0.13, \"radius_bottom\": 0.14, \"height\": 0.3}, \"position\": [0, 1.7, 0], \"material\": \"steel\"}"}},"forge_handle":{"type":"string","description":"The forge_handle returned by enter_forge."}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":537,"tokensAfter":537},{"name":"forge_remove","fixed":{"name":"forge_remove","description":"Remove parts by id.","inputSchema":{"type":"object","required":["forge_handle","ids"],"properties":{"ids":{"type":"array","items":{"type":"string"}},"forge_handle":{"type":"string","description":"The forge_handle returned by enter_forge."}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":78,"tokensAfter":78}],"toolsChanged":4,"tokensSaved":0,"todo":[{"tool":"enter_duel","params":["origin","participation_class"]},{"tool":"enter_forge","params":["seed","origin"]},{"tool":"forge_add","params":["parts"]},{"tool":"forge_edit","params":["id"]},{"tool":"forge_keyframe","params":["frame"]},{"tool":"forge_remove","params":["ids"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}