Tool names

Every name a tools: allowlist may contain. Anything else is a load error — PopCraft will tell you the name it didn't recognise rather than quietly dropping it.

An allowlist only ever narrows. Listing a tool does not grant it: a read-only agent profile still gets only the read-only tools below, however long its list is.

ToolReads onlyWhat it does
add_audioPut sound on a composition: import an audio file from a URL (stored in the file's offline media store, like an imported file) or reuse one already in the media store, and place it as an audio clip (start, lane, fades, level).
add_fontCarry a font file in this file so texts can be set in it (and every export draws it): src is the file as a base64 data URL or a media:// ref; family defaults to the name in the file, weight and style to the face's.
add_team_font✓Upload a font to the team, once, for every file of the team: src is the file as a base64 data URL or media:// ref.
alignAlign sibling layers to one edge or centre of their combined bounding box: left, right, top, bottom, center_x or center_y.
apply_auto_layoutTurn a frame, component or group into an auto-layout stack, inferring direction, spacing, padding and alignment from where its children already sit.
apply_motion_presetAnimate layers with a motion preset: it writes ordinary keyframes on the layer's own properties (opacity, offset, scale, rotation, blur) relative to where the layer rests, so entrances end at rest and exits start there.
ask_userPause and ask the user one question, with options they click.
await_job✓Check a background task by job id. (never available to an agent profile.)
bind_fieldMake a layer show a field of the record it is about (set_record, a list, or a collection page): a text's words, an image layer's picture, or an instance's TEXT / IMAGE / BOOLEAN property — so a product card component takes its title, price and photo from the record.
boolean_opCombine two or more shapes into one editable boolean shape: union (merge), subtract (cut the later shapes out of the first), intersect (keep the overlap) or exclude (keep everything but the overlap).
create_componentTurn an existing layer into a reusable component (in place, keeping its children).
create_compositionSequence frames as the scenes of a composition: each frame plays its own timeline in turn, cut to the next (add transitions with edit_composition).
create_instancePlace an instance of a component.
create_motion_componentWrap layers and their keyframes into a motion component, in place: it keeps playing as before, and gets its own timeline that every instance plays with its own start, speed, loop and trigger (set on the instance as playback).
create_nodeCreate one layer.
create_pageAdd a new, empty page and switch to it.
create_styleCreate a reusable style.
cut_to_beatTrim a composition's scenes so every cut lands on a beat: each scene ends where the onset nearest its current cut is (every Nth onset, never shorter than minScene), later scenes rippling; transitions start on their beat.
delete_nodesDelete layers and everything inside them.
detach_textTake TEXT layers off their path and out of the shape they flow inside, back to plain text (auto-width for text that was on a path; area text keeps its box).
detect_audio_onsetsFind the hits (drums, plucks, note starts) in a composition's audio clip and mark them as composition markers labelled "onsets" (replacing earlier onset markers), so cuts and keys can land on the beat.
distributeSpace sibling layers evenly between the first and last along an axis ("horizontal" or "vertical").
duplicate_file✓Make a copy of the open file as a new file and open it.
duplicate_nodesDuplicate layers in place, offset by dx/dy (default 10,10).
edit_3d_sceneReal 3D in a group or frame (CSS preserve-3d): enable or disable it, let a component's instances pass through a scene (preserve3d), set the camera (lens mm, truck/pedestal/dolly, orbit, tilt, pan, roll, point of interest), the perspective origin, add / edit / remove lights (ambient, directional, point, spot: colour, intensity, position, target, cone), and place its layers (rotateX, rotateY, z, material: takes lights, ambient, diffuse, specular, shininess).
edit_behavioursBehaviours move a property on their own, evaluated at sample time — a constant spin or scroll, a sine drift or pulse, a seeded wiggle, a decaying bounce, loop the keys (cycle, ping-pong, offset, continue), wrap into a range, link to another layer's property, clamp, or follow the audio (audio: loudness, bass/mid/treble, beats, onsets or one spectrum band, mapped from…to with gain, threshold and attack/release smoothing; on shader params it drives the shader).
edit_codeMake, change or delete a code module: React (TSX) source kept in the file.
edit_collectionMake, change or delete a collection: the file's content as records with the same fields (posts, products, team members).
edit_component_propertyA component's properties, as its instances set them: add a NUMBER, COLOR, MOTION (one playback setting shown on every instance), BOOLEAN, TEXT or IMAGE (a picture's address) property, remove one, change its default, or bind a layer property inside the component to a NUMBER / COLOR / IMAGE property (a layer input; IMAGE feeds a picture).
edit_compositionChange a composition's scenes: reorder a clip (move), trim what of its frame's timeline it plays (trim), set the transition INTO a clip from the one before (transition: DISSOLVE, SLIDE_/PUSH_/MOVE_OUT_, CIRCLE_WIPE, IRIS, ZOOM_THROUGH, WHIP_LEFT, WHIP_RIGHT, CUBE_FROM_, CAROUSEL_FROM_LEFT/RIGHT, FLIP_HORIZONTAL/VERTICAL, SWING_OPEN/CLOSE, STACK_IN/OUT, DEPTH_PUSH/PULL, CUT), add frames as clips, remove a clip, swap the frame a clip plays (frame), rename, or delete it.
edit_frame_audioEdit the audio clips on a frame's own timeline lanes (frame ms): imported files and videos' detached sound.
edit_prototypeEdit prototype behaviour on layers: interactions (trigger + action: NAVIGATE, OVERLAY, SET_VARIABLE with a variableExpression, CONDITIONAL branches, TIMELINE scrub/play on ON_DRAG or ON_SCROLL, ORBIT_3D, …, with a transition incl.
edit_recordsAdd, change, delete or reorder the records of a collection.
edit_shader_graphBuild or edit a node shader on a layer: "create" adds a graph fill (from a preset or just an output), then addNode / connect (an output into a node's input) / setInput / setOption / removeNodes / moveNodes / duplicateNodes.
edit_state_machineMake a frame's timeline interactive (Lottie Creator / Rive style): a state machine whose states each play a stretch of the timeline between two markers (once, or looping, at a speed), inputs (boolean, number, string, event), transitions between states (from a state or "*" any state) taken when all their guards hold (input eq/neq/gt/gte/lt/lte a value, or an event firing), and listeners that set inputs when a layer is pressed, released, clicked, entered or left, when a key is pressed or let go (keyDown / keyUp, for a key or any), or when a state's stretch finishes (complete).
edit_text_animationPer-letter, per-word or per-line text animation, and counting numbers.
edit_video_clipEdit a video layer as a clip on its frame's timeline, with its sound linked: move it in time (both, or picture / sound alone), trim an edge (ripple: later clips follow), slip the source under it, split it at a time (a copy plays the rest), set speed (sound pitch kept), loop, poster and off-timeline playback, its sound's mute / fades / fade shape / balance / offset and volume keys, detach its sound onto the frame's lanes (then edit it with edit_frame_audio, for J and L cuts) or link a lane clip back, and its transition in (DISSOLVE over the clip under it, DIP_BLACK, DIP_WHITE, CUT).
export_boardExport a whiteboard: the whole board (or the selection) as one PNG, or its stickies as Markdown or CSV with a column per section or group (kanban columns, retro lanes).
export_gifRender a frame's (or motion component's) timeline, or a composition (its scenes, transitions and — for video — its sound) to an animated GIF (no sound): frame rate (50 at most), size, range, a shared or per-frame palette, dithering and looping.
export_lottieWrite a frame's (or motion component's) timeline, or a composition (its scenes, transitions) as a Lottie (bodymovin JSON, or a .lottie zip) the user downloads: vector shapes, fills, strokes, masks, text as outlines and images as embedded assets, with our keys and bezier / hold easing where Lottie can say them and every other curve, behaviour and text animator keyed frame by frame.
export_mp4Render a frame's (or motion component's) timeline, or a composition (its scenes, transitions and — for video — its sound) to an MP4 (H.264, AAC sound) the user downloads: frame rate, resolution preset or scale, work area or whole range, quality or an exact bitrate, sound on or off.
export_nodesRender layers to PNG, JPG, WEBP, SVG or PDF at a scale factor (or, with no format, each layer with the export settings saved on it), and report the size of each file.
export_pagesDownload every page of a fixed-page document (print pages, else the top-level frames, or the given ids) as one zip of PNG, JPG or WEBP images at a print resolution (dpi; print documents default to 300), each tagged with that resolution.
export_png_sequenceRender a frame's (or motion component's) timeline, or a composition (its scenes, transitions and — for video — its sound) to a zip of numbered PNG frames (no sound): frame rate, size and range.
export_pptxDownload the presentation as a PowerPoint (.pptx) file: its slides (skipped ones left out unless includeSkipped), or the given frames, with speaker notes.
export_storefrontDownload a storefront design (a page whose lists and pages read collections with a commerce schema) as a store's project, in a zip.
export_svg✓Export one layer and its children as SVG markup.
export_webDownload web code.
export_webmRender a frame's (or motion component's) timeline, or a composition (its scenes, transitions and — for video — its sound) to a WebM (VP9/AV1, Opus sound) the user downloads, with the same options as export_mp4.
find_nodes✓Find layers by name, type or text content.
flattenFlatten layers into ONE vector: strokes become outlines and overlapping fills merge, so the result is a single editable path.
flipMirror layers horizontally or vertically, in place.
flow_text_into_shapeArea type: flow a TEXT layer inside a closed shape or vector (ellipse, polygon, star, rectangle, a closed path), each line as wide as the shape is at that height, kept inset px in.
generate_audioMake sound with AI and place it as an audio clip on a composition, or with frame on a frame's own timeline (a screen, a game level or a page's background music): a music bed (instrumental, from a description of genre, mood, instruments and tempo), a sound effect, or a voice-over of a script.
generate_imageGenerate an image from a prompt and place it on the canvas as a new layer.
generate_presentation_audioMake a presentation's sound with AI through Hypery and time it to the slides: a voice-over of each slide's speaker notes (text-to-speech), a music bed across the deck that ducks under the voice, and a stinger on each slide change — each 48 kHz stereo, loudness-normalised (−16 LUFS, −1 dBTP by default).
generate_videoGenerate a short video clip from a prompt (text-to-video, or image-to-video from startFrameIds) and place it: a video layer on the page, or with composition a new scene at the end of that composition.
get_animation✓Read a layer's animation: the timeline it plays on (frame or motion component: length, fps, work area, markers), its start offset, span and live stagger, and every property it can animate — the exact path to pass to set_keyframes / edit_behaviours (fills[@f1].color, effects[@e1].blur, fills[@f1].shaderParams.speed, scene3d.camera.orbit, text.animators[@ta1].props.opacity …), its label, type and rest value, and for animated ones the keys (time, value, curve) and behaviours.
get_breakpoints✓The window widths this file is designed for, widest first (the first is the base: the design itself), and, for the layers named, what each sets differently at each breakpoint.
get_code✓The file's code modules: each one's exports, the packages it allows, whether it compiles and the components it draws; or one module with its source.
get_compositions✓Read the file's compositions (scene sequences): stage size, fps, background, length, work area and markers (onset markers are labelled "onsets"); each scene clip (its frame, start, in/out, transition in); and each audio clip (media hash, lane, start, in/out, fades, pan, mute, gain keys).
get_design_script✓The script a design was built from (by write_design), its size and whether it has been edited by hand since.
get_document_outline✓Compact layer tree for the current page (or under rootId).
get_form_submissions✓What visitors sent through this site's forms, newest first, read from the database attached to the site.
get_node✓Full properties of up to 20 layers by id: geometry, rotation and flips, layout, text, fills (gradients with their stops), strokes (width, cap, join, dashes), effects, adjustments, export settings, interactions and bound variables.
get_plan_limits✓The workspace's plan, its limits and how much of them is used.
get_presentation_audio✓Read a presentation's audio: each slide (frame id, name, speaker notes, the script read from them, transition, animation length), its narration (media hash, length, loudness, whether it is stale because the notes changed) and its timing (start, length, narration start, when the show moves on); the soundtrack's settings (voice, style, mood, loudness target, beat alignment, levels), music bed and stinger.
get_records✓The file's collections (their fields, with the key a text or an expression says each by), or the records of one: each record's id, the address of its page, and its values by field key.
get_selection✓List the layers the user has selected right now (id, name, type, position, size) and the current page id.
get_site_environment✓The site's environment variables (public settings its host reads by name when it is deployed), by name.
get_site_status✓Whether this file is published as a website: its address and URL, the version online (or that it is offline) and the versions so far with their own URLs.
get_state_machine✓Read a frame's state machine: its states (each with the stretch of the timeline it plays, in ms and as markers, loop and speed), the first state, transitions with their guards, inputs with their starting values, and listeners with the layer (or key) they listen on and their actions; plus the frame's markers.
get_styles✓The file's design language: paint and text styles, color variables and their ids.
groupWrap sibling layers in a new group, keeping their on-screen positions.
import_fileImport a Lottie animation (.json or .lottie: a frame with its timeline, precomps as components), a PDF, an SVG (as editable vector layers) or a PopCraft file into the open file, onto the current page; later pages are appended.
import_svgImport SVG markup as editable layers under a parent (default: the current page).
insert_mediaPut a picture from the team media library (list_media) in the file: a new image layer, or with fillLayerId into that layer's fill or photo frame.
insert_photoPut an openly licensed stock photo in the file, by id from search_photos or by query.
list_fonts✓The font files this file carries (family, weight, style, face), the families its texts use, and the MISSING ones: families nothing can draw, whose texts fall back to another font.
list_integration_resources✓What a connected account holds at one level: the owners and then repositories of a GitHub account, the teams and then projects of a Vercel account.
list_integrations✓The services this workspace can connect its own accounts to (GitHub, Vercel, Neon, Supabase), what each can do (repo, deploy, database, auth), which accounts are connected, and whether the user can connect more.
list_media✓List the team media library: pictures, video and sound the workspace's files already use, filterable by type and by source (generated, upload, stock).
list_pages✓List the document's pages: id, name, and how many top-level layers each holds, plus which one is current.
list_profiles✓List the subagent profiles you can delegate to with task (id, what each is for, when to use it).
list_published_sites✓Every website a team has published: each one's file, address, whether it is online, and how many websites the team's plan allows (Home › Market › Sites shows the same).
list_skills✓List the available skills (name, what they are for, and when to use them).
list_team_fonts✓The team's fonts: faces uploaded once that every file of the team can use (family, weight, style).
look_at✓Render layers (or the selection) to images and look at them.
manage_todos✓Publish your plan for a multi-step task: the full list of steps, each with a status (pending, in_progress, done).
measure✓World-space bounds of layers: the combined box plus each layer individually (including stroke and shadow bleed).
measure_presentation_mix✓Measure a presentation soundtrack's mix as the export will carry it: integrated loudness (LUFS, BS.1770 gated) and true peak (dBTP), against its target and ceiling.
move_nodesMove layers.
notify✓Show the user a short status message in the editor (a toast).
open_integrations✓Open the Integrations dialog, where the user connects an account (GitHub, Vercel, Neon, Supabase).
orderChange z-order within the parent: "top", "bottom", "up" (one step forward) or "down".
outline_strokeConvert each layer's stroke into a filled vector outline, so the stroke can be edited as a shape and no longer scales with the layer.
page_setupChange what a file is: its kind (canvas vs page-based), page size preset, bleed, margins, resolution, color mode, facing pages and page numbering.
present✓Start or end a slideshow of the current page for the user.
read_design_reference✓How to make designs in code, as the official templates are made: the kit by topic (colour and type, layout, components and switches, motion and music, sizes, web pages), how to edit existing designs with run_script, how design decisions are made, and complete worked examples (reel, landing page, pricing page, email header, ad set, phone screen).
read_profile✓Read a subagent profile in full — its instructions, tool allowlist and round budget — before you delegate to it.
read_skill✓Read a skill’s full instructions by id.
redoRedo the change you (or the user) last undid.
remove_fontStop carrying a font in this file: by id (from list_fonts) or by family, narrowed by weight and style.
remove_presentation_audio_clipTake a slide's narration, the music bed or the stinger out of a presentation's soundtrack; the deck re-times.
rename_nodesRename layers.
rename_pageRename a page.
reparentMove layers into another parent (frame, group or page), optionally at a child index.
replace_colorSwap one color for another everywhere inside a subtree — solid fills, strokes, gradient stops, shadows and frame backgrounds, including vector artwork.
resize_nodesResize layers: width and/or height in pixels, or scale as a multiplier of the current size.
retime_presentationRe-time a presentation's soundtrack: every slide lasts as long as its narration (plus the lead-in and tail) unless holds fixes its length; optionally land slide changes on the music's beats.
rotateRotate layers, in degrees clockwise about their own centre.
run_scriptRun JavaScript over the open document in a sandbox: read everything (doc.nodes, styles, variables, the selection), compute, and call any tool as tools.<name>(params) in loops.
search_fonts✓Search every Google Fonts family the editor can set type in (about 1,900, most popular first): by part of the name and/or category (sans, serif, display, handwriting, mono).
search_photos✓Search openly licensed stock photos (Openverse).
select✓Set the user's selection to these layers.
set_breakpointsSet the window widths this file is designed for: one base (maxWidth null, the design itself) and narrower breakpoints, each applying up to its maxWidth.
set_component_codeDraw a component with an export of a code module on web pages: every instance is that React component, given the component's properties as props.
set_controlMake layers form controls on a web page.
set_current_pageSwitch the editor to another page.
set_effectsSet a drop shadow, a layer blur and/or a motion blur on layers.
set_fillsPaint layers.
set_gpu_transitionsChoose how a published site draws its 3D transitions (cube, carousel, flip, swing, stack, depth): on the GPU where the visitor's browser has WebGPU and in CSS 3D elsewhere (on, the default), or always in CSS 3D so the site never loads the GPU renderer for them (off).
set_instance_playbackHow each instance of a motion component plays its component's timeline: start delay, speed, loop (none, loop, ping-pong), what it holds when done, a marker range, and its trigger (load, click, hover, in view, or manual: a variant switch only).
set_keyframesKey any animatable property of any layer on its timeline (a top-level frame's, or a motion component's): set keys (time ms, value, curve out of the key: a named ease, a CSS cubic-bezier or a spring), delete or move keys, re-ease existing keys, set the rest value, mute, or clear a track or all of a layer's animation.
set_layer_timingMove layers in time without touching their keys: set or shift a layer's start offset (its whole animation runs later), trim when it exists (span), put a live stagger on a group or frame (its children start one after another, by index, reverse, centre-out, random or a custom order, optionally spread along a curve), or set its timeline colour label.
set_lockLock or unlock layers.
set_maskMake the bottom-most of these layers mask the ones above it, or remove an existing mask.
set_mask_typeChoose how a mask layer masks: ALPHA (the mask's own alpha), VECTOR (its fill area, ignoring opacity) or LUMINANCE (its brightness).
set_node_styleApply an existing style to layers by id (get ids from get_styles).
set_presentation_audioChange a presentation's audio settings — voice, voice model, speed, style, music mood and model, stingers, loudness target and true-peak ceiling, beat-aligned slide changes, levels and pauses — and re-time the soundtrack (made if the deck has none).
set_presentation_audio_clipPut a sound of your own into a presentation's soundtrack: a slide's narration (role voice + frameId), the music bed or the stinger — from a URL or a file already in the media store.
set_recordMake layers about one record of a collection (one product, one post): they and what they hold show its values wherever they follow a field — a text with {{item.}}, a picture or an instance property bound with bind_field.
set_repeatMake a frame a list of a collection: on a web page, what it holds is repeated once per record (give the frame auto layout so the copies stack or wrap).
set_responsiveMake layers differ at a breakpoint (a narrower window): set what they override there, or reset overrides so they inherit again.
set_routeMake a top-level frame a page of the website with its own address, title and description, or the site's 404 page.
set_semanticsSay what layers are on a web page, beside how they look: the element (a headline is h1, the navigation a nav, a list ul with li items, a call to action a button), an accessible label, decoration hidden from screen readers, an anchor id, and a link for the whole layer (a URL, another screen, an anchor on the page, an email address, a phone number).
set_shader_fillGive a layer a live GPU shader fill (a preset, or your own WGSL) or set an existing shader fill's params.
set_share_imageChoose the picture a link to the published site shows when it is shared (its og:image and twitter:image, 1200×630): auto (the first screen, the default), a frame of the file (a social link-preview frame fits exactly), or an uploaded picture.
set_show_advanceSet how Present moves on: per slide (target "slides": on a click, when its animation ends, or N seconds after), the deck default and looping (target "deck"), per composition scene (target "scenes": carry on, wait for a click, or hold N seconds at its end), or a composition's looping (target "composition").
set_site_environmentSet or remove the site's environment variables: public settings its host reads by name when it is deployed (a store's SHOPIFY_STORE_DOMAIN and public SHOPIFY_STOREFRONT_ACCESS_TOKEN).
set_stage_view✓Show the user only the active frame — the timeline's frame or composition in Animate, else the selected frame or slide — fitted to the canvas like a video player, or the whole page again.
set_strokesSet stroke properties on layers, MERGING into the stroke each layer already has: anything you leave out (dashes, cap, join, per-side widths) is kept.
set_textReplace the characters of TEXT layers.
set_text_effectApply a one-click text effect: SHADOW, LIFT, NEON, GLOW, OUTLINE (an outside outline behind the letters), HOLLOW (outlined letters, no fill), ECHO (three trailing copies), BACKGROUND (a soft block behind), CURVE (text on an arc) or NONE.
set_text_fitAuto-size the type of TEXT layers to their container: the fixed text box (fill its width and height), the shape they flow inside, or the path between its brackets.
set_text_pathPut TEXT layers on a path, or tune one they are on: follow another vector/shape layer's outline (mode PATH with pathId — it stays live when that layer is edited; a closed shape runs clockwise from 12 o'clock), or bend the text on its own arc, circle or wave.
set_timelineSet a frame's (or motion component's) timeline: its length (or fit it to its keys), frame rate, work area, and markers (add with a label, move, rename, make a present-mode pause, remove).
set_typographySet type on TEXT layers: font family, size, weight, italic, alignment, line height ("auto" or a pixel value), letter spacing, paragraph spacing, case, decoration and auto-resize behaviour.
set_variableCreate or update a design variable.
set_visibilityShow or hide layers.
shape_builder✓Combine overlapping shapes region by region: where the shapes overlap they are divided into regions, and the regions you name with a point inside them are merged into one vector.
stagger_motionStagger layers' animations: each layer's whole animation (its keys unchanged) starts delay ms after the one before, in the given order, by setting its start offset.
task✓Delegate a self-contained piece of work to a subagent, which runs with its own fresh context and hands back only a summary. (never available to an agent profile.)
undoUndo the last change — yours or the user's, whichever is on top of the editor's undo stack.
ungroupDissolve groups (or frames) and move their children up to the parent, keeping positions.
update_nodesSet arbitrary properties on many layers at once — one entry per layer, props is a partial layer object (e.g.
use_fallback_presentation_audioOFFLINE FALLBACK: give a presentation a code-synthesised music bed (PopCraft's CC0 "Pop Drop" loop) and whoosh stingers when no AI model can be reached.
write_designBuild a whole design from one script written with the template kit: frames, text styles, colour roles, auto-layout stacks, vectors, components, motion presets, counters, word swaps, music and its other sizes, in ONE step and one undo.
zoom_to✓Move the user's camera.