{"ok":true,"site":{"host":"shipwright-editor.kevinwhinnery.chatgpt.site","url":"https://shipwright-editor.kevinwhinnery.chatgpt.site/","type":"live","desc":"Build, move, and save polygonal spacecraft in a retro holographic editor.","tools":[{"name":"get_editor_state","kind":"answer","impl":"imperative","description":"Get the current ship design, selected part, camera, and save state in the Shipwright editor.","title":"Inspect Shipwright","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"add_ship_part","kind":"act","impl":"imperative","description":"Add one polygonal part to the visible ship design and select it.","title":"Add ship part","inputSchema":{"type":"object","properties":{"type":{"type":"string","enum":["box","wedge","ramp","trapezoid","tapered-block","cylinder","sphere","cone"]},"position":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3}},"required":["type"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"update_ship_part","kind":"act","impl":"imperative","description":"Move, rotate, scale, recolor, texture, rename, or change supported shape features on an existing ship part. Transform values are absolute.","title":"Update ship part","inputSchema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string","minLength":1,"maxLength":80},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"texture":{"type":"string","enum":["smooth","brushed","plated","composite"]},"features":{"type":"object","description":"Shape-specific toggles. Use chamfered for boxes, hollow for cylinders, and truncated for cones.","properties":{"chamfered":{"type":"boolean","description":"Chamfer the edges of a box."},"hollow":{"type":"boolean","description":"Turn a cylinder into a hollow tube."},"truncated":{"type":"boolean","description":"Turn a cone into a conical frustum."}},"additionalProperties":false},"position":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3},"rotation":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3},"scale":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3}},"required":["id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"remove_ship_part","kind":"act","impl":"imperative","description":"Remove one part from the visible ship design by its ID.","title":"Remove ship part","inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"copy_selected_ship_part","kind":"act","impl":"imperative","description":"Copy the selected ship part to the editor clipboard.","title":"Copy selected ship part","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"paste_ship_part","kind":"act","impl":"imperative","description":"Paste the copied ship part with a new ID and a small position offset.","title":"Paste ship part","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"undo_ship_edit","kind":"act","impl":"imperative","description":"Undo the most recent component change.","title":"Undo ship edit","inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"select_ship_part","kind":"act","impl":"imperative","description":"Select a ship part by ID so its transform controls and inspector are visible. Use null to clear selection.","title":"Select ship part","inputSchema":{"type":"object","properties":{"id":{"type":["string","null"]}},"required":["id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_editor_camera","kind":"act","impl":"imperative","description":"Set the 3D camera position and orbit target for the visible editing canvas.","title":"Set editor camera","inputSchema":{"type":"object","properties":{"position":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3},"target":{"type":"array","items":{"type":"number"},"minItems":3,"maxItems":3}},"required":["position","target"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"set_canvas_background","kind":"act","impl":"imperative","description":"Set the background and fog color of the visible editing canvas.","title":"Set canvas background","inputSchema":{"type":"object","properties":{"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}},"required":["color"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"new_ship_design","kind":"act","impl":"imperative","description":"Start a new empty ship design in the visible editor.","title":"New ship design","inputSchema":{"type":"object","properties":{"name":{"type":"string","maxLength":80}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"save_ship_design","kind":"act","impl":"imperative","description":"Save the current ship design to the authenticated user's D1-backed collection.","title":"Save ship design","inputSchema":{"type":"object","properties":{"name":{"type":"string","maxLength":80}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"list_ship_designs","kind":"answer","impl":"imperative","description":"List saved ship designs owned by the authenticated user.","title":"List ship designs","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"load_ship_design","kind":"act","impl":"imperative","description":"Load one saved ship design into the visible editor by its ID.","title":"Load ship design","inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"export_ship_design","kind":"act","impl":"imperative","description":"Export the visible ship as a portable, versioned Shipwright design object for sharing.","title":"Export ship design","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"import_ship_design","kind":"act","impl":"imperative","description":"Replace the visible editor contents with a portable Shipwright design. The imported design remains unsaved until it is saved explicitly.","title":"Import ship design","inputSchema":{"type":"object","properties":{"format":{"type":"string","enum":["shipwright-design"]},"formatVersion":{"type":"number","enum":[1]},"name":{"type":"string","minLength":1,"maxLength":80},"data":{"type":"object","properties":{"version":{"type":"number","enum":[1]},"parts":{"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"name":{"type":"string","maxLength":80},"type":{"type":"string","enum":["box"]},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"texture":{"type":"string","enum":["smooth","brushed","plated","composite"]},"features":{"type":"object","properties":{"chamfered":{"type":"boolean"}},"additionalProperties":false},"position":{"type":"array","items":{"type":"number","minimum":-1000,"maximum":1000},"minItems":3,"maxItems":3},"rotation":{"type":"array","items":{"type":"number","minimum":-314.1592653589793,"maximum":314.1592653589793},"minItems":3,"maxItems":3},"scale":{"type":"array","items":{"type":"number","minimum":0.01,"maximum":100},"minItems":3,"maxItems":3}},"required":["id","name","type","color","position","rotation","scale"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"name":{"type":"string","maxLength":80},"type":{"type":"string","enum":["wedge"]},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"texture":{"type":"string","enum":["smooth","brushed","plated","composite"]},"position":{"type":"array","items":{"type":"number","minimum":-1000,"maximum":1000},"minItems":3,"maxItems":3},"rotation":{"type":"array","items":{"type":"number","minimum":-314.1592653589793,"maximum":314.1592653589793},"minItems":3,"maxItems":3},"scale":{"type":"array","items":{"type":"number","minimum":0.01,"maximum":100},"minItems":3,"maxItems":3}},"required":["id","name","type","color","position","rotation","scale"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"name":{"type":"string","maxLength":80},"type":{"type":"string","enum":["ramp"]},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"texture":{"type":"string","enum":["smooth","brushed","plated","composite"]},"position":{"type":"array","items":{"type":"number","minimum":-1000,"maximum":1000},"minItems":3,"maxItems":3},"rotation":{"type":"array","items":{"type":"number","minimum":-314.1592653589793,"maximum":314.1592653589793},"minItems":3,"maxItems":3},"scale":{"type":"array","items":{"type":"number","minimum":0.01,"maximum":100},"minItems":3,"maxItems":3}},"required":["id","name","type","color","position","rotation","scale"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"name":{"type":"string","maxLength":80},"type":{"type":"string","enum":["trapezoid"]},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"texture":{"type":"string","enum":["smooth","brushed","plated","composite"]},"position":{"type":"array","items":{"type":"number","minimum":-1000,"maximum":1000},"minItems":3,"maxItems":3},"rotation":{"type":"array","items":{"type":"number","minimum":-314.1592653589793,"maximum":314.1592653589793},"minItems":3,"maxItems":3},"scale":{"type":"array","items":{"type":"number","minimum":0.01,"maximum":100},"minItems":3,"maxItems":3}},"required":["id","name","type","color","position","rotation","scale"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"name":{"type":"string","maxLength":80},"type":{"type":"string","enum":["tapered-block"]},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"texture":{"type":"string","enum":["smooth","brushed","plated","composite"]},"position":{"type":"array","items":{"type":"number","minimum":-1000,"maximum":1000},"minItems":3,"maxItems":3},"rotation":{"type":"array","items":{"type":"number","minimum":-314.1592653589793,"maximum":314.1592653589793},"minItems":3,"maxItems":3},"scale":{"type":"array","items":{"type":"number","minimum":0.01,"maximum":100},"minItems":3,"maxItems":3}},"required":["id","name","type","color","position","rotation","scale"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"name":{"type":"string","maxLength":80},"type":{"type":"string","enum":["cylinder"]},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"texture":{"type":"string","enum":["smooth","brushed","plated","composite"]},"features":{"type":"object","properties":{"hollow":{"type":"boolean"}},"additionalProperties":false},"position":{"type":"array","items":{"type":"number","minimum":-1000,"maximum":1000},"minItems":3,"maxItems":3},"rotation":{"type":"array","items":{"type":"number","minimum":-314.1592653589793,"maximum":314.1592653589793},"minItems":3,"maxItems":3},"scale":{"type":"array","items":{"type":"number","minimum":0.01,"maximum":100},"minItems":3,"maxItems":3}},"required":["id","name","type","color","position","rotation","scale"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"name":{"type":"string","maxLength":80},"type":{"type":"string","enum":["sphere"]},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"texture":{"type":"string","enum":["smooth","brushed","plated","composite"]},"position":{"type":"array","items":{"type":"number","minimum":-1000,"maximum":1000},"minItems":3,"maxItems":3},"rotation":{"type":"array","items":{"type":"number","minimum":-314.1592653589793,"maximum":314.1592653589793},"minItems":3,"maxItems":3},"scale":{"type":"array","items":{"type":"number","minimum":0.01,"maximum":100},"minItems":3,"maxItems":3}},"required":["id","name","type","color","position","rotation","scale"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","minLength":1,"maxLength":100},"name":{"type":"string","maxLength":80},"type":{"type":"string","enum":["cone"]},"color":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"},"texture":{"type":"string","enum":["smooth","brushed","plated","composite"]},"features":{"type":"object","properties":{"truncated":{"type":"boolean"}},"additionalProperties":false},"position":{"type":"array","items":{"type":"number","minimum":-1000,"maximum":1000},"minItems":3,"maxItems":3},"rotation":{"type":"array","items":{"type":"number","minimum":-314.1592653589793,"maximum":314.1592653589793},"minItems":3,"maxItems":3},"scale":{"type":"array","items":{"type":"number","minimum":0.01,"maximum":100},"minItems":3,"maxItems":3}},"required":["id","name","type","color","position","rotation","scale"],"additionalProperties":false}]},"maxItems":100},"camera":{"type":"object","properties":{"position":{"type":"array","items":{"type":"number","minimum":-1000,"maximum":1000},"minItems":3,"maxItems":3},"target":{"type":"array","items":{"type":"number","minimum":-1000,"maximum":1000},"minItems":3,"maxItems":3}},"required":["position","target"],"additionalProperties":false},"backgroundColor":{"type":"string","pattern":"^#[0-9a-fA-F]{6}$"}},"required":["version","parts","camera"],"additionalProperties":false}},"required":["format","formatVersion","name","data"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"Media & Personal","favicon":"/favicons/shipwright-editor.kevinwhinnery.chatgpt.site.png","apiSurface":"spec","toolCount":16}}