{"ok":true,"site":{"host":"prompt-canvas.madebyhenry.chatgpt.site","url":"https://prompt-canvas.madebyhenry.chatgpt.site/","type":"live","desc":"Prompt Canvas","tools":[{"name":"prompt_canvas_inspect","kind":"answer","impl":"imperative","description":"Read bounded semantic state for the active project before choosing an action, including prompt fields, controls, references, selection, workflow, outputs, document and generation revisions, and page-accepted asset transports. This tool has no side effects and returns no image bytes.","title":"Inspect a Prompt Canvas project","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":120},"include":{"type":"array","uniqueItems":true,"items":{"enum":["prompt","controls","references","selection","workflow","outputs","layout","activity","capabilities"]}},"maxItems":{"type":"integer","minimum":1,"maximum":200}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"prompt_canvas_list_templates","kind":"answer","impl":"imperative","description":"Search compact recipe summaries from the read-only official catalog and local user-saved recipes without creating a project. For natural-language agent routing, use scope “official”, compare the returned candidates, then fetch only the selected exact version.","title":"Search Prompt Canvas recipes","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"query":{"type":"string","maxLength":300},"scope":{"enum":["official","local","all"]},"categories":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":100}},"families":{"type":"array","maxItems":10,"items":{"type":"string","maxLength":100}},"capabilities":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":100}},"intents":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":100}},"inputModes":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":100}},"subjectKinds":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":100}},"outputKinds":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":100}},"preservationNeeds":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":100}},"collections":{"type":"array","maxItems":20,"items":{"type":"string","maxLength":100}},"limit":{"type":"integer","minimum":1,"maximum":100}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"prompt_canvas_get_template","kind":"answer","impl":"imperative","description":"Fetch one complete official or local recipe after selection. For an official recipe, provide its returned ID, version, and expected hash so later project creation preserves exact source identity. This tool has no side effects.","title":"Get an exact Prompt Canvas recipe","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"source":{"enum":["official","local"]},"templateId":{"type":"string","minLength":1,"maxLength":120},"version":{"type":"integer","minimum":1},"expectedHash":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"}},"required":["templateId"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"prompt_canvas_validate_template","kind":"act","impl":"imperative","description":"Validate a candidate recipe without saving or creating a project. Returns blocking schema errors separately from compatibility warnings, creative-review guidance, and the normalized preview.","title":"Validate a Prompt Canvas recipe","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"template":{"type":"object"},"mode":{"enum":["schema-only","compatibility","full"]}},"required":["template"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"prompt_canvas_get_generation_context","kind":"act","impl":"imperative","description":"Resolve the active project and requested operation into a bounded, revision-bound request for Codex, including source identity, prompt, references, preservation rules, target output, and accepted asset transports. This tool does not itself generate, edit, vary, or upscale an image.","title":"Prepare a project's generation context","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":120},"operation":{"enum":["generate","edit","variation","upscale"]},"outputSlotId":{"type":"string","minLength":1,"maxLength":120},"selectedOutputIds":{"type":"array","maxItems":20,"items":{"type":"string","minLength":1,"maxLength":120}},"chatDirection":{"type":"string","maxLength":10000}},"required":["workspaceId","operation"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"prompt_canvas_create_workspace","kind":"act","impl":"imperative","description":"Create and open a live project from an exact official recipe, a local recipe, a validated definition, or a minimal blank prompt. Official recipe content is snapshotted into the project so later catalog updates cannot change it.","title":"Create a Prompt Canvas project","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"source":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"kind":{"const":"template"},"templateId":{"type":"string","minLength":1,"maxLength":120},"origin":{"enum":["official","local"]},"version":{"type":"integer","minimum":1},"expectedHash":{"type":"string","pattern":"^sha256:[a-f0-9]{64}$"},"values":{"type":"object"}},"required":["kind","templateId"]},{"type":"object","additionalProperties":false,"properties":{"kind":{"const":"definition"},"template":{"type":"object"}},"required":["kind","template"]},{"type":"object","additionalProperties":false,"properties":{"kind":{"const":"blank"},"title":{"type":"string","minLength":1,"maxLength":160},"prompt":{"type":"string","maxLength":100000}},"required":["kind","title"]}]},"placement":{"enum":["new-page","current-view","beside-selection"]},"openAfterCreate":{"type":"boolean"}},"required":["source"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"prompt_canvas_update_workspace","kind":"act","impl":"imperative","description":"Apply one atomic batch of semantic prompt, control, reference, workflow, annotation, or layout changes to a project. Supply the exact project ID and expected revision; stale writes are rejected, successful changes are immediately visible, and the canvas update is one-step undoable.","title":"Update a Prompt Canvas project","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":120},"expectedRevision":{"type":"integer","minimum":0},"operations":{"type":"array","minItems":1,"maxItems":100,"items":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"op":{"const":"set_prompt_body"},"body":{"type":"string","maxLength":100000}},"required":["op","body"]},{"type":"object","additionalProperties":false,"properties":{"op":{"const":"set_negative_prompt"},"body":{"type":"string","maxLength":30000}},"required":["op","body"]},{"type":"object","additionalProperties":false,"properties":{"op":{"const":"set_variable"},"variableId":{"type":"string","minLength":1,"maxLength":120},"value":{}},"required":["op","variableId","value"]},{"type":"object","additionalProperties":false,"properties":{"op":{"const":"set_control"},"controlId":{"type":"string","minLength":1,"maxLength":120},"value":{}},"required":["op","controlId","value"]},{"type":"object","additionalProperties":false,"properties":{"op":{"const":"add_annotation"},"text":{"type":"string","minLength":1,"maxLength":3000},"anchorId":{"type":"string","minLength":1,"maxLength":120}},"required":["op","text"]},{"type":"object","additionalProperties":false,"properties":{"op":{"const":"move_element"},"elementId":{"type":"string","minLength":1,"maxLength":120},"x":{"type":"number"},"y":{"type":"number"}},"required":["op","elementId","x","y"]},{"type":"object","additionalProperties":false,"properties":{"op":{"const":"resize_element"},"elementId":{"type":"string","minLength":1,"maxLength":120},"width":{"type":"number","exclusiveMinimum":0},"height":{"type":"number","exclusiveMinimum":0}},"required":["op","elementId","width","height"]},{"type":"object","additionalProperties":false,"properties":{"op":{"const":"attach_reference"},"slotId":{"type":"string","minLength":1,"maxLength":120},"asset":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"kind":{"const":"host_attachment"},"token":{"type":"string","minLength":1,"maxLength":4000}},"required":["kind","token"]},{"type":"object","additionalProperties":false,"properties":{"kind":{"const":"data_url"},"dataUrl":{"type":"string","pattern":"^data:image/","maxLength":30000000}},"required":["kind","dataUrl"]},{"type":"object","additionalProperties":false,"properties":{"kind":{"const":"https_url"},"url":{"type":"string","format":"uri","pattern":"^https://","maxLength":4000}},"required":["kind","url"]}]},"label":{"type":"string","maxLength":200}},"required":["op","slotId","asset"]},{"type":"object","additionalProperties":false,"properties":{"op":{"const":"remove_reference"},"referenceId":{"type":"string","minLength":1,"maxLength":120}},"required":["op","referenceId"]},{"type":"object","additionalProperties":false,"properties":{"op":{"const":"set_workflow_stage"},"stageId":{"type":"string","minLength":1,"maxLength":120},"status":{"enum":["not-started","active","complete","skipped"]}},"required":["op","stageId","status"]}]}},"reason":{"type":"string","maxLength":1000}},"required":["workspaceId","expectedRevision","operations"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"prompt_canvas_save_template","kind":"act","impl":"imperative","description":"Validate and save the current project or a candidate definition as a user-owned local recipe. Choose create, new-version, or fork deliberately; official and bundled recipes remain immutable and no content is uploaded to the official catalog.","title":"Save a local Prompt Canvas recipe","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"source":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"kind":{"const":"workspace"},"workspaceId":{"type":"string","minLength":1,"maxLength":120}},"required":["kind","workspaceId"]},{"type":"object","additionalProperties":false,"properties":{"kind":{"const":"definition"},"template":{"type":"object"}},"required":["kind","template"]}]},"title":{"type":"string","maxLength":160},"mode":{"enum":["create","new-version","fork"]},"expectedTemplateVersion":{"type":"integer","minimum":1}},"required":["source","mode"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"prompt_canvas_add_generated_asset","kind":"act","impl":"imperative","description":"Import one or more images generated or edited by Codex, validate their bytes and request identity, record operation and parent lineage, and place them into the specified project output slots. Supply the matching project, request ID, generation revision, prompt digest, and target slot. For data_url delivery, pass the native generator image_url directly as source.dataUrl, or prefix a raw base64 result with data:<mime-type>;base64,. Ignore savedPath and never use file:// as an asset source. This tool does not perform generation.","title":"Return a generated image to Prompt Canvas","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":120},"requestId":{"type":"string","minLength":1,"maxLength":120},"generationRevision":{"type":"integer","minimum":0},"assets":{"type":"array","minItems":1,"maxItems":8,"items":{"type":"object","additionalProperties":false,"properties":{"source":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"kind":{"const":"host_attachment"},"token":{"type":"string","minLength":1,"maxLength":4000}},"required":["kind","token"]},{"type":"object","additionalProperties":false,"properties":{"kind":{"const":"data_url"},"dataUrl":{"type":"string","pattern":"^data:image/","maxLength":30000000}},"required":["kind","dataUrl"]},{"type":"object","additionalProperties":false,"properties":{"kind":{"const":"https_url"},"url":{"type":"string","format":"uri","pattern":"^https://","maxLength":4000}},"required":["kind","url"]}]},"mimeType":{"type":"string","pattern":"^image/"},"label":{"type":"string","maxLength":200},"outputSlotId":{"type":"string","minLength":1,"maxLength":120},"operation":{"enum":["generate","edit","variation","upscale"]},"parentAssetIds":{"type":"array","maxItems":20,"items":{"type":"string","minLength":1,"maxLength":120}},"promptDigest":{"type":"string","maxLength":200}},"required":["source","mimeType","outputSlotId","operation"]}}},"required":["workspaceId","requestId","generationRevision","assets"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"prompt_canvas_delete_workspace","kind":"transact","impl":"imperative","description":"Remove one project page only after explicit confirmation and an exact revision match. The change is one-step undoable, the final remaining project cannot be deleted, and the result identifies the project selected afterward.","title":"Delete a Prompt Canvas project","annotations":{"readOnlyHint":false,"destructiveHint":true,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":120},"expectedRevision":{"type":"integer","minimum":0},"confirmed":{"const":true,"description":"Must be exactly true to delete a workspace page."}},"required":["workspaceId","expectedRevision","confirmed"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"prompt_canvas_manage_outputs","kind":"act","impl":"imperative","description":"Promote, compare, reorder, archive, label, or explicitly delete existing project outputs without regenerating them. Supply the exact project ID and expected revision; stale writes fail atomically and destructive deletion remains explicit.","title":"Manage Prompt Canvas results","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"type":"object","additionalProperties":false,"properties":{"workspaceId":{"type":"string","minLength":1,"maxLength":120},"expectedRevision":{"type":"integer","minimum":0},"operations":{"type":"array","minItems":1,"maxItems":50,"items":{"oneOf":[{"type":"object","additionalProperties":false,"properties":{"op":{"const":"promote"},"assetId":{"type":"string","minLength":1,"maxLength":120},"slotId":{"type":"string","minLength":1,"maxLength":120}},"required":["op","assetId"]},{"type":"object","additionalProperties":false,"properties":{"op":{"const":"compare"},"assetIds":{"type":"array","minItems":2,"maxItems":8,"items":{"type":"string","minLength":1,"maxLength":120}}},"required":["op","assetIds"]},{"type":"object","additionalProperties":false,"properties":{"op":{"const":"reorder"},"slotId":{"type":"string","minLength":1,"maxLength":120},"assetIds":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"string","minLength":1,"maxLength":120}}},"required":["op","slotId","assetIds"]},{"type":"object","additionalProperties":false,"properties":{"op":{"const":"archive"},"assetIds":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"string","minLength":1,"maxLength":120}}},"required":["op","assetIds"]},{"type":"object","additionalProperties":false,"properties":{"op":{"const":"label"},"assetId":{"type":"string","minLength":1,"maxLength":120},"label":{"type":"string","maxLength":200}},"required":["op","assetId","label"]},{"type":"object","additionalProperties":false,"properties":{"op":{"const":"delete"},"assetIds":{"type":"array","minItems":1,"maxItems":20,"items":{"type":"string","minLength":1,"maxLength":120},"description":"Destructive; host confirmation is expected."}},"required":["op","assetIds"]}]}}},"required":["workspaceId","expectedRevision","operations"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"category":"AI & Agents","favicon":"/favicons/prompt-canvas.madebyhenry.chatgpt.site.png","apiSurface":"spec","toolCount":11}}