- From the tool list of the currently loaded plugin, find the
photocraft-editorservice. Call it with the absolute path of this task's workspace:open_editor, passing on the first callworkspace; relative file paths can be handed to the specific open tool once the editor is ready. - When the host supports native MCP Apps, it presents
ui://photocraft/panel.html. A text-only tool result does not mean the interface has been opened. - When Codex does not automatically present the panel, call
open_browser_editor, and hand the returnededitorUrlto the host's built-in browser open capability. Codex Desktop can callopen_in_codex, with target set to browser and url set to the actual returned value. Do not guess a fixed port from a local page path. - Open only one editing page per instance. Call
editor_status, and proceed only whenattachedorreadyis true; if loading fails, handle the page error first. - All editing in this round uses the same service. The native CLI and the Web editor are not the same in-memory document; before switching, you must save and explicitly reopen.
Open or create with doc_open/doc_new, inspect layers with doc_inspect; query actual commands with command_list and execute with command_run; save .pcraft with doc_save and export with doc_export.
If the host supports only MCP, the tool-calling capability and the embedded UI are two separate things. You can use the same editorUrl in an external browser, but you must clearly state that this is not embedded-in-host acceptance.
When a development candidate lacks ui/dist/adapter.mjs , you first need to build it according to the plugin's ui/README.md . Do not guess paths from arbitrary caches, and do not bypass validation. This skill, when installed independently, does not include the editor service; you need to install the companion plugin or configure its MCP backend.
When the tool is not registered, once you have the plugin's actual directory you can run the following from the project terminal: node ui/dist/adapter.mjs --serve, specifying this task's workspace via the environment variable CRAFT_WORKSPACE_ROOT . Keep that process alive; this mode can display the UI, but automation must still connect to the corresponding MCP instance and must not start another backend and claim to share the session.
When done, save the project and reopen it to check; read the actual exported file. Browser storage, preview screenshots, and submitted render tasks do not equal workspace delivery.