{"ok":true,"site":{"host":"synmod.jquan287619461.chatgpt.site","url":"https://synmod.jquan287619461.chatgpt.site/","type":"live","desc":"A WebMCP-powered 3D studio where you and an agent shape scenes together in real time.","tools":[{"name":"get_scene_summary","kind":"answer","impl":"imperative","description":"Read the current SynMod project, revision, hierarchy, parametric geometry, transforms, materials, Boolean features, and environment without changing it.","title":"Get Scene Summary","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_object","kind":"answer","impl":"imperative","description":"Read one scene object by its stable ID. This tool does not change the scene.","title":"Get Object","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"object_id":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."}},"required":["object_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_selection","kind":"answer","impl":"imperative","description":"Read the objects currently selected by the person in SynMod. This tool does not change the scene.","title":"Get Selection","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"find_objects","kind":"answer","impl":"imperative","description":"Find scene objects by normalized human-readable name, type, visibility, parent, or current selection. Returns compact IDs, transforms, and world bounds without changing the scene.","title":"Find Objects","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"maxLength":80},"match":{"type":"string","enum":["normalized_exact","contains"]},"types":{"type":"array","items":{"type":"string","enum":["box","sphere","cylinder","cone","torus","boolean","group","glb","glb_node"]},"uniqueItems":true},"visible":{"type":"boolean"},"parent_id":{"anyOf":[{"type":"string","minLength":1},{"type":"null"}]},"selection_only":{"type":"boolean"},"limit":{"type":"integer","minimum":1,"maximum":50}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"inspect_scene_health","kind":"answer","impl":"imperative","description":"Inspect object counts, hidden feature inputs, imported nodes, textured objects, and modeling warnings without changing the scene.","title":"Inspect Scene Health","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_feature_tree","kind":"answer","impl":"imperative","description":"Read the procedural feature tree and per-object operation history without changing the scene.","title":"Get Feature Tree","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_project_versions","kind":"answer","impl":"imperative","description":"Read local checkpoint metadata and branch ancestry without changing the scene.","title":"Get Project Versions","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"compare_checkpoint","kind":"answer","impl":"imperative","description":"Compare the current scene against a named checkpoint without changing it.","title":"Compare Checkpoint","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"checkpoint_id":{"type":"string","minLength":1}},"required":["checkpoint_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_primitive","kind":"act","impl":"imperative","description":"Add one parametric primitive to the live scene. The change is visible, autosaved, attributed to Agent, and reversible.","title":"Add Primitive","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"primitive_type":{"type":"string","enum":["box","sphere","cylinder","cone","torus"]},"name":{"type":"string","maxLength":80},"position":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3,"description":"Exactly three finite numbers in X, Y, Z order."},"rotation_degrees":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3,"description":"Exactly three finite numbers in X, Y, Z order."},"scale":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3,"description":"Exactly three finite numbers in X, Y, Z order."},"geometry":{"type":"object","properties":{"width":{"type":"number","exclusiveMinimum":0,"maximum":1000},"height":{"type":"number","exclusiveMinimum":0,"maximum":1000},"depth":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radius":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radius_top":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radius_bottom":{"type":"number","exclusiveMinimum":0,"maximum":1000},"tube":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radial_segments":{"type":"integer","minimum":3,"maximum":256},"height_segments":{"type":"integer","minimum":1,"maximum":128}},"additionalProperties":false},"material":{"type":"object","properties":{"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"roughness":{"type":"number","minimum":0,"maximum":1},"metalness":{"type":"number","minimum":0,"maximum":1},"opacity":{"type":"number","minimum":0,"maximum":1},"emissive":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"emissive_intensity":{"type":"number","minimum":0,"maximum":10},"wireframe":{"type":"boolean"},"base_color_texture":{"type":"string","pattern":"^data:image/"},"normal_texture":{"type":"string","pattern":"^data:image/"},"roughness_texture":{"type":"string","pattern":"^data:image/"},"metalness_texture":{"type":"string","pattern":"^data:image/"}},"additionalProperties":false},"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"roughness":{"type":"number","minimum":0,"maximum":1},"metalness":{"type":"number","minimum":0,"maximum":1},"relative_to":{"type":"object","properties":{"target":{"type":"object","properties":{"object_id":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"name":{"type":"string","minLength":1,"maxLength":80},"temp_ref":{"type":"string","minLength":1,"maxLength":80}},"oneOf":[{"required":["object_id"]},{"required":["name"]},{"required":["temp_ref"]}],"additionalProperties":false},"placement":{"type":"string","enum":["top","bottom","left","right","front","back","center"]},"gap":{"type":"number","minimum":-1000,"maximum":1000},"inherit_material":{"type":"boolean"}},"required":["target"],"additionalProperties":false}},"required":["primitive_type"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_object_transform","kind":"act","impl":"imperative","description":"Set position, rotation in degrees, or scale for one scene object. Applies immediately and is reversible.","title":"Set Object Transform","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"object_id":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"position":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3,"description":"Exactly three finite numbers in X, Y, Z order."},"rotation_degrees":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3,"description":"Exactly three finite numbers in X, Y, Z order."},"scale":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3,"description":"Exactly three finite numbers in X, Y, Z order."}},"required":["object_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_geometry_parameters","kind":"act","impl":"imperative","description":"Refine the dimensions and segment counts of one parametric primitive. Applies immediately and is reversible.","title":"Set Geometry Parameters","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"object_id":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"width":{"type":"number","exclusiveMinimum":0,"maximum":1000},"height":{"type":"number","exclusiveMinimum":0,"maximum":1000},"depth":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radius":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radius_top":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radius_bottom":{"type":"number","exclusiveMinimum":0,"maximum":1000},"tube":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radial_segments":{"type":"integer","minimum":3,"maximum":256},"height_segments":{"type":"integer","minimum":1,"maximum":128}},"required":["object_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_object_material","kind":"act","impl":"imperative","description":"Change PBR values or embedded texture maps for one primitive, Boolean result, or imported mesh node. Applies immediately and is reversible.","title":"Set Object Material","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"object_id":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"roughness":{"type":"number","minimum":0,"maximum":1},"metalness":{"type":"number","minimum":0,"maximum":1},"opacity":{"type":"number","minimum":0,"maximum":1},"emissive":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"emissive_intensity":{"type":"number","minimum":0,"maximum":10},"wireframe":{"type":"boolean"},"base_color_texture":{"type":"string","pattern":"^data:image/"},"normal_texture":{"type":"string","pattern":"^data:image/"},"roughness_texture":{"type":"string","pattern":"^data:image/"},"metalness_texture":{"type":"string","pattern":"^data:image/"}},"required":["object_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"boolean_objects","kind":"act","impl":"imperative","description":"Create a non-destructive union, subtraction, or intersection from two primitives or Boolean results. Source operands remain in the feature graph, hidden and editable. The change is reversible.","title":"Boolean Objects","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"operation":{"type":"string","enum":["union","subtract","intersect"]},"operand_ids":{"type":"array","items":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"minItems":2,"maxItems":2},"name":{"type":"string","maxLength":80}},"required":["operation","operand_ids"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_scene_environment","kind":"act","impl":"imperative","description":"Change the HDRI environment preset, exposure, background color, or scene shadows. Applies immediately and is reversible.","title":"Set Scene Environment","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"environment":{"type":"string","enum":["studio","sunset","warehouse","night"]},"exposure":{"type":"number","minimum":0.1,"maximum":3},"background_color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"shadows":{"type":"boolean"}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"preview_scene_transaction","kind":"act","impl":"imperative","description":"Validate and preview 1–20 modeling operations atomically without changing the scene. Use the returned revision with apply_scene_transaction.","title":"Preview Scene Transaction","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"expected_revision":{"type":"integer","minimum":0,"description":"Required for apply; obtain it from get_scene_summary or preview_scene_transaction."},"label":{"type":"string","maxLength":120},"operations":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"action":{"type":"string","enum":["add_primitive","set_transform","set_geometry","set_material","set_visibility","boolean","rename"]},"object_id":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"primitive_type":{"type":"string","enum":["box","sphere","cylinder","cone","torus"]},"name":{"type":"string","maxLength":80},"position":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3,"description":"Exactly three finite numbers in X, Y, Z order."},"rotation_degrees":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3,"description":"Exactly three finite numbers in X, Y, Z order."},"scale":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3,"description":"Exactly three finite numbers in X, Y, Z order."},"geometry":{"type":"object","properties":{"width":{"type":"number","exclusiveMinimum":0,"maximum":1000},"height":{"type":"number","exclusiveMinimum":0,"maximum":1000},"depth":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radius":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radius_top":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radius_bottom":{"type":"number","exclusiveMinimum":0,"maximum":1000},"tube":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radial_segments":{"type":"integer","minimum":3,"maximum":256},"height_segments":{"type":"integer","minimum":1,"maximum":128}},"additionalProperties":false},"material":{"type":"object","properties":{"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"roughness":{"type":"number","minimum":0,"maximum":1},"metalness":{"type":"number","minimum":0,"maximum":1},"opacity":{"type":"number","minimum":0,"maximum":1},"emissive":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"emissive_intensity":{"type":"number","minimum":0,"maximum":10},"wireframe":{"type":"boolean"},"base_color_texture":{"type":"string","pattern":"^data:image/"},"normal_texture":{"type":"string","pattern":"^data:image/"},"roughness_texture":{"type":"string","pattern":"^data:image/"},"metalness_texture":{"type":"string","pattern":"^data:image/"}},"additionalProperties":false},"visible":{"type":"boolean"},"operation":{"type":"string","enum":["union","subtract","intersect"]},"operand_ids":{"type":"array","items":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"minItems":2,"maxItems":2}},"required":["action"],"additionalProperties":false}}},"required":["operations"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"apply_scene_transaction","kind":"act","impl":"imperative","description":"Atomically apply 1–20 previously previewable modeling operations as one visible revision and one undo step. Rejects stale expected_revision values and never partially applies.","title":"Apply Scene Transaction","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"expected_revision":{"type":"integer","minimum":0,"description":"Required for apply; obtain it from get_scene_summary or preview_scene_transaction."},"label":{"type":"string","maxLength":120},"operations":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"object","properties":{"action":{"type":"string","enum":["add_primitive","set_transform","set_geometry","set_material","set_visibility","boolean","rename"]},"object_id":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"primitive_type":{"type":"string","enum":["box","sphere","cylinder","cone","torus"]},"name":{"type":"string","maxLength":80},"position":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3,"description":"Exactly three finite numbers in X, Y, Z order."},"rotation_degrees":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3,"description":"Exactly three finite numbers in X, Y, Z order."},"scale":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3,"description":"Exactly three finite numbers in X, Y, Z order."},"geometry":{"type":"object","properties":{"width":{"type":"number","exclusiveMinimum":0,"maximum":1000},"height":{"type":"number","exclusiveMinimum":0,"maximum":1000},"depth":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radius":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radius_top":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radius_bottom":{"type":"number","exclusiveMinimum":0,"maximum":1000},"tube":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radial_segments":{"type":"integer","minimum":3,"maximum":256},"height_segments":{"type":"integer","minimum":1,"maximum":128}},"additionalProperties":false},"material":{"type":"object","properties":{"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"roughness":{"type":"number","minimum":0,"maximum":1},"metalness":{"type":"number","minimum":0,"maximum":1},"opacity":{"type":"number","minimum":0,"maximum":1},"emissive":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"emissive_intensity":{"type":"number","minimum":0,"maximum":10},"wireframe":{"type":"boolean"},"base_color_texture":{"type":"string","pattern":"^data:image/"},"normal_texture":{"type":"string","pattern":"^data:image/"},"roughness_texture":{"type":"string","pattern":"^data:image/"},"metalness_texture":{"type":"string","pattern":"^data:image/"}},"additionalProperties":false},"visible":{"type":"boolean"},"operation":{"type":"string","enum":["union","subtract","intersect"]},"operand_ids":{"type":"array","items":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"minItems":2,"maxItems":2}},"required":["action"],"additionalProperties":false}}},"required":["operations"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"execute_scene_transaction","kind":"act","impl":"imperative","description":"Validate and immediately apply 1–50 safe reversible modeling operations as one visible revision and one undo step. Supports human-readable targets, temporary result references, disjoint-edit rebasing, and optional selection or focus after commit.","title":"Execute Scene Transaction","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"expected_revision":{"type":"integer","minimum":0,"description":"Optional optimistic concurrency boundary. Unrelated later edits are safely rebased."},"label":{"type":"string","maxLength":120},"operations":{"type":"array","minItems":1,"maxItems":50,"items":{"type":"object","properties":{"action":{"type":"string","enum":["add_primitive","set_transform","set_geometry","set_material","set_visibility","rename","duplicate","boolean","group","ungroup","set_environment"]},"target":{"type":"object","properties":{"object_id":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"name":{"type":"string","minLength":1,"maxLength":80},"temp_ref":{"type":"string","minLength":1,"maxLength":80}},"oneOf":[{"required":["object_id"]},{"required":["name"]},{"required":["temp_ref"]}],"additionalProperties":false},"targets":{"type":"array","items":{"type":"object","properties":{"object_id":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"name":{"type":"string","minLength":1,"maxLength":80},"temp_ref":{"type":"string","minLength":1,"maxLength":80}},"oneOf":[{"required":["object_id"]},{"required":["name"]},{"required":["temp_ref"]}],"additionalProperties":false},"minItems":2,"uniqueItems":true},"operands":{"type":"array","items":{"type":"object","properties":{"object_id":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"name":{"type":"string","minLength":1,"maxLength":80},"temp_ref":{"type":"string","minLength":1,"maxLength":80}},"oneOf":[{"required":["object_id"]},{"required":["name"]},{"required":["temp_ref"]}],"additionalProperties":false},"minItems":2,"maxItems":2},"primitive_type":{"type":"string","enum":["box","sphere","cylinder","cone","torus"]},"name":{"type":"string","maxLength":80},"result_ref":{"type":"string","minLength":1,"maxLength":80},"position":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3,"description":"Exactly three finite numbers in X, Y, Z order."},"rotation_degrees":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3,"description":"Exactly three finite numbers in X, Y, Z order."},"scale":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3,"description":"Exactly three finite numbers in X, Y, Z order."},"offset":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3,"description":"Exactly three finite numbers in X, Y, Z order."},"geometry":{"type":"object","properties":{"width":{"type":"number","exclusiveMinimum":0,"maximum":1000},"height":{"type":"number","exclusiveMinimum":0,"maximum":1000},"depth":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radius":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radius_top":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radius_bottom":{"type":"number","exclusiveMinimum":0,"maximum":1000},"tube":{"type":"number","exclusiveMinimum":0,"maximum":1000},"radial_segments":{"type":"integer","minimum":3,"maximum":256},"height_segments":{"type":"integer","minimum":1,"maximum":128}},"additionalProperties":false},"material":{"type":"object","properties":{"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"roughness":{"type":"number","minimum":0,"maximum":1},"metalness":{"type":"number","minimum":0,"maximum":1},"opacity":{"type":"number","minimum":0,"maximum":1},"emissive":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"emissive_intensity":{"type":"number","minimum":0,"maximum":10},"wireframe":{"type":"boolean"},"base_color_texture":{"type":"string","pattern":"^data:image/"},"normal_texture":{"type":"string","pattern":"^data:image/"},"roughness_texture":{"type":"string","pattern":"^data:image/"},"metalness_texture":{"type":"string","pattern":"^data:image/"}},"additionalProperties":false},"visible":{"type":"boolean"},"operation":{"type":"string","enum":["union","subtract","intersect"]},"relative_to":{"type":"object","properties":{"target":{"type":"object","properties":{"object_id":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"name":{"type":"string","minLength":1,"maxLength":80},"temp_ref":{"type":"string","minLength":1,"maxLength":80}},"oneOf":[{"required":["object_id"]},{"required":["name"]},{"required":["temp_ref"]}],"additionalProperties":false},"placement":{"type":"string","enum":["top","bottom","left","right","front","back","center"]},"gap":{"type":"number","minimum":-1000,"maximum":1000},"inherit_material":{"type":"boolean"}},"required":["target"],"additionalProperties":false},"environment":{"type":"string","enum":["studio","sunset","warehouse","night"]},"exposure":{"type":"number","minimum":0.1,"maximum":3},"background_color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"},"shadows":{"type":"boolean"}},"required":["action"],"additionalProperties":false}},"select_after":{"type":"array","items":{"type":"object","properties":{"object_id":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"name":{"type":"string","minLength":1,"maxLength":80},"temp_ref":{"type":"string","minLength":1,"maxLength":80}},"oneOf":[{"required":["object_id"]},{"required":["name"]},{"required":["temp_ref"]}],"additionalProperties":false},"maxItems":100},"focus_after":{"type":"array","items":{"type":"object","properties":{"object_id":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"name":{"type":"string","minLength":1,"maxLength":80},"temp_ref":{"type":"string","minLength":1,"maxLength":80}},"oneOf":[{"required":["object_id"]},{"required":["name"]},{"required":["temp_ref"]}],"additionalProperties":false},"minItems":1,"maxItems":100}},"required":["operations"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_checkpoint","kind":"act","impl":"imperative","description":"Create a named local checkpoint of the complete editable scene. This changes project history, autosaves locally, and is reversible.","title":"Create Checkpoint","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80}},"required":["name"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"restore_checkpoint","kind":"act","impl":"imperative","description":"Restore all scene objects and settings from a named checkpoint. This is immediate and destructive to the current scene state, but reversible with undo. Requires the current scene revision as a stale-write safety boundary.","title":"Restore Checkpoint","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"checkpoint_id":{"type":"string","minLength":1},"expected_revision":{"type":"integer","minimum":0,"description":"Required safety boundary. Read the current revision immediately before this operation."}},"required":["checkpoint_id","expected_revision"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"branch_project","kind":"act","impl":"imperative","description":"Create and switch to a new local project branch from the current scene or a checkpoint. The source project remains saved locally.","title":"Branch Project","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"checkpoint_id":{"type":"string","minLength":1},"name":{"type":"string","maxLength":100}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"duplicate_project","kind":"act","impl":"imperative","description":"Create and switch to a separate editable local copy of the current project. No cloud account is used.","title":"Duplicate Project","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"name":{"type":"string","maxLength":100}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_readonly_share_link","kind":"act","impl":"imperative","description":"Create a browser-only read-only share link containing the current project. The link can expose the scene to anyone who receives it; it does not upload to cloud storage. The browser must review this external disclosure before invocation.","title":"Create Readonly Share Link","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"rename_object","kind":"act","impl":"imperative","description":"Rename one scene object. Applies immediately and is reversible.","title":"Rename Object","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"object_id":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"name":{"type":"string","minLength":1,"maxLength":80}},"required":["object_id","name"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"duplicate_object","kind":"act","impl":"imperative","description":"Duplicate an object or group and offset the new copy. Applies immediately and is reversible.","title":"Duplicate Object","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"object_id":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"name":{"type":"string","maxLength":80},"offset":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3,"description":"Exactly three finite numbers in X, Y, Z order."}},"required":["object_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"delete_object","kind":"transact","impl":"imperative","description":"Delete one object. Deleting a Boolean result restores its source operands. This destructive change is immediate but reversible with undo_scene_change. Requires the current scene revision as a stale-write safety boundary.","title":"Delete Object","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"object_id":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"expected_revision":{"type":"integer","minimum":0,"description":"Required safety boundary. Read the current revision immediately before this operation."}},"required":["object_id","expected_revision"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"group_objects","kind":"act","impl":"imperative","description":"Create a transformable group from two or more objects that share the same parent. Applies immediately and is reversible.","title":"Group Objects","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"object_ids":{"type":"array","items":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"minItems":2,"uniqueItems":true},"name":{"type":"string","maxLength":80}},"required":["object_ids"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"ungroup_object","kind":"act","impl":"imperative","description":"Remove one group while preserving its children and visible world transforms. Applies immediately and is reversible.","title":"Ungroup Object","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"group_id":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."}},"required":["group_id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"select_objects","kind":"act","impl":"imperative","description":"Change the current selection so the person can inspect requested objects. This does not change model geometry.","title":"Select Objects","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"object_ids":{"type":"array","items":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"uniqueItems":true}},"required":["object_ids"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"focus_objects","kind":"act","impl":"imperative","description":"Move the viewport camera to frame existing objects. This does not change model geometry.","title":"Focus Objects","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"object_ids":{"type":"array","items":{"type":"string","minLength":1,"description":"Stable object ID from get_scene_summary or get_selection."},"minItems":1,"uniqueItems":true}},"required":["object_ids"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"undo_scene_change","kind":"act","impl":"imperative","description":"Undo the most recent reversible modeling change and update the live scene immediately. Requires the current scene revision as a stale-write safety boundary.","title":"Undo Scene Change","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"expected_revision":{"type":"integer","minimum":0,"description":"Required safety boundary. Read the current revision immediately before this operation."}},"required":["expected_revision"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"redo_scene_change","kind":"act","impl":"imperative","description":"Redo the next modeling change in history and update the live scene immediately. Requires the current scene revision as a stale-write safety boundary.","title":"Redo Scene Change","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","properties":{"expected_revision":{"type":"integer","minimum":0,"description":"Required safety boundary. Read the current revision immediately before this operation."}},"required":["expected_revision"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"favicon":"/favicons/synmod.jquan287619461.chatgpt.site.png","apiSurface":"spec","category":"Developer Tools","toolCount":31}}