{"protocolVersion":"0.3.0","name":"LetzAI Canvas Agent","description":"Creative orchestrator on the LetzAI infinite canvas. Generates and edits images and video, builds and clones real web designs, arranges and reorganizes canvases, and delegates work to design, media, and research sub-agents.","version":"1.0","provider":{"organization":"LetzAI","url":"https://letz.ai"},"url":"https://letz.ai/canvas","supportedInterfaces":[{"url":"https://letz.ai/canvas","protocolBinding":"WEB","protocolVersion":"1.0"}],"capabilities":{"streaming":true,"pushNotifications":false},"defaultInputModes":["text/plain"],"defaultOutputModes":["text/plain","image/png","video/mp4"],"skills":[{"id":"research-before-build","name":"Research before build","description":"Grounded sites, landing pages, product pages, portfolios, pitch decks, branded mockups about a real external subject (person, product, brand, company, app, event). Load before delegate_to_design_agent / create_design / generate_code when real-world accuracy matters and the user did not supply full copy.","tags":["canvas"],"examples":["Use the Research before build workflow"]},{"id":"visual-reference-likeness","name":"Visual reference likeness","description":"Shots, storyboards, brand films, opening scenes, or generated stills featuring a named real person's likeness. Load before get_models / image_search / web_search / generate_image when the user names a real person and has not supplied a clear reference.","tags":["canvas"],"examples":["Use the Visual reference likeness workflow"]},{"id":"generation-prompt-craft","name":"Generation prompt craft","description":"Unless the user passes their own prompt: Mandatory before animate_image when you compose the motion prompt (load references/seedance-2-prompting.md, references/kling-3-prompting.md, or references/models/<mode>.md via file_path — not bare read_skill). Also before generate_image, edit_image, regenerate_image when the brief is vague. Cinematic batches — also references/cinematic-composition.md. Never picks or changes baseModel/mode.","tags":["canvas"],"examples":["Use the Generation prompt craft workflow"]},{"id":"portfolio-from-creations","name":"Portfolio from creations","description":"Presentation or slide deck from the user's own LetzAI images — most liked, best work, portfolio review. Load before read_user_creations and delegate_to_design_agent.","tags":["canvas"],"examples":["Use the Portfolio from creations workflow"]},{"id":"brand-film-storyboard","name":"Brand film storyboard","description":"Brand films, opening scenes, storyboards, or shot sequences on the canvas — especially with a named real person. Load to sequence reference sourcing, scene planning, section reservation, and generate / animate.","tags":["canvas"],"examples":["Use the Brand film storyboard workflow"]},{"id":"film-from-brief","name":"Film from brief","description":"Turn a brief into a finished Movie on the canvas — shot list, generated shots, native title cards (compose_frame), timeline assembly with create_film / edit_film, basic fade/keyframe motion, and a screenshot_film QA pass. Escalate to HTML motion scenes only for complex graphic beats. Load when the user wants a video, movie, spot, trailer, reel, teaser, promo, explainer, or \"a cut of these shots\" that PLAYS as one piece. Not for a single animated clip (animate_image) or a Section the user just watches in the Sequence room.","tags":["canvas"],"examples":["Use the Film from brief workflow"]},{"id":"analyze-film","name":"Analyze film","description":"Analyse an existing Movie on the canvas — sample frames from each picture clip, describe what is happening, and write clip autocaptions into the film JSON (Desc lane). Load when the user asks to analyze a film/movie, caption the timeline, fill Desc, describe each shot, or prepare a cut for generative \"fill the gap\" work. Not for building a new movie from a brief (film-from-brief) or authoring motion scenes (motion-markup).","tags":["canvas"],"examples":["Use the Analyze film workflow"]},{"id":"motion-markup","name":"Motion markup","description":"Author a MOTION SCENE — a Design that a Film plays frame by frame (logo builds, kinetic type, lower-thirds, data animations, transitions, end cards). Load before writing files for any brief marked MOTION SCENE, or when the user asks for animated graphics, titles, or a code-driven beat inside a video. Reference files cover timing recipes (references/timing.md), scene-to-scene transitions (references/transitions.md), and what to do with images, audio and Lottie (references/assets.md).","tags":["canvas"],"examples":["Use the Motion markup workflow"]},{"id":"slide-deck-from-frames","name":"Slide deck from frames","description":"Turn an existing Section of native layout Frames (a slide deck on the canvas) into ONE faithful, publishable multi-slide HTML presentation — using every slide, in the exact order the user laid out. Load when the user wants to \"make a deck/presentation from these frames\", \"publish these slides as HTML\", \"create an artifact from this section\", or be \"true to the original slides\".","tags":["canvas"],"examples":["Use the Slide deck from frames workflow"]},{"id":"screenplay-from-board","name":"Screenplay from board","description":"Write a film/TV screenplay (spec script) as an editable, paginated HTML Design — from a fresh idea or grounded in what's already on the board (a storyboard scene list, native frames/shots, or selected text/treatment notes). Load when the user wants to \"write a screenplay\", \"write a script\", \"spec script\", \"turn my storyboard/scenes into a script\", \"screenplay from these frames\", or \"make a screenplay from this board\".","tags":["canvas"],"examples":["Use the Screenplay from board workflow"]},{"id":"moodboard-fanout","name":"Moodboard fanout","description":"Producing more than one image in a turn — variations, mood boards, NxM grids, storyboard panels, batches. Load to compute N correctly, run the volume gate, reserve a section, and fan out one media call per cell.","tags":["canvas"],"examples":["Use the Moodboard fanout workflow"]},{"id":"board-reorganize","name":"Board reorganize","description":"Structural layout changes on the canvas — move nodes between sections, group clips, tidy / align / distribute, separate videos from stills, grid out a messy fan-out. Load when the user asks to reorganize, group, tidy, or clean up the board (uses request_reorganize_approval, which requires approval).","tags":["canvas"],"examples":["Use the Board reorganize workflow"]},{"id":"clone-website","name":"Clone website","description":"Reverse-engineer and rebuild a real web page as a pixel-perfect Design on the canvas. Load when the user wants to clone, replicate, rebuild, reverse-engineer, or copy a website (\"make a copy of this site\", \"rebuild this page\", \"pixel-perfect clone\"). Requires a public http(s) URL. Uses inspect_page (headless-browser extraction) to capture exact computed styles, screenshots, assets, and interaction states, then delegates each section to the Design sub-agent.","tags":["canvas"],"examples":["Use the Clone website workflow"]},{"id":"native-layout","name":"Native layout","description":"Compose editable slides, posters, and layouts as NATIVE canvas nodes (layout Frame + text/shape/media children) via compose_frame. Load when the user wants a layout they can edit directly on the canvas with the toolbar, or a native multi-slide deck.","tags":["canvas"],"examples":["Use the Native layout workflow"]},{"id":"skill-authoring","name":"Skill authoring","description":"The user wants to save a rule, preference, tone, or repeatable workflow as one of their own Skills — or wants you to change an existing Skill of theirs. Load before the first request_skill_write_approval call in a conversation. Triggers: \"save this as a skill\", \"remember this rule\", \"always reply like X from now on\", \"turn this into a workflow\", \"edit my <name> skill\".","tags":["canvas"],"examples":["Use the Skill authoring workflow"]}]}