Picorn
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Picorn turns AI briefs into editable social images and videos with layers, timelines, and renders.
| Author | io.github.cueqzapper |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2878 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Picorn": {
"url": "https://picorn.com/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (44)
picorn_capabilitiesread-onlyList live canvas formats, fonts, layouts, image models, GPU reachability and fair-use limits.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
picorn_projects_createCreate a marketing project that can hold many editor files and imported image assets. Keep the returned workspaceProjectId and workspaceProjectKey together; use them when adding every related file.
Parameters:
name(required) — stringbrandColors— arraydescription— string
Hints: read-only no · destructive not declared · idempotent not declared · open-world yes
picorn_projects_inspectread-onlyList every editor file, imported asset, and the project brand profile with named colors and saved logos or visual references. File entries include their current thumbnail, status, creation URL and canonical /studio/editor?runId=... editorUrl. Always give the user that editorUrl.
Parameters:
workspaceProjectId(required) — stringworkspaceProjectKey(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
picorn_projects_updateUpdate the name, description, or named color scheme of a marketing project, then return its complete file, asset, and brand index.
Parameters:
workspaceProjectId(required) — stringworkspaceProjectKey(required) — stringname— stringbrandColors— arraydescription— string
Hints: read-only no · destructive not declared · idempotent not declared · open-world no
picorn_design_imageCODEX-ONLY. The calling Codex supplies the complete SVG, including copy and layout. Picorn resolves declared placeholders and renders it through Fabric/SVG. No internal language or design model is called.
Parameters:
svg(required) — string — Complete Codex-authored SVG with a viewBox.width— integerheight— integerpreview— boolean — Return an inline preview. Default true.
Hints: read-only no · destructive not declared · idempotent not declared · open-world yes
picorn_generate_imageGenerate a new picture on fal. kind photo (default) = Krea 2 Turbo: photos, people, places, moods and other emotional images. kind text = GPT Image 2.5 Flare: only for mockups with a lot of legible lettering. Library first: browse with picorn_search_library (or use search lines in picorn_blueprint_compile), and generate only when the design would benefit massively from a new picture (no fitting hero photo exists). Generation needs a connected Picorn account with credits; it is charged at 1.2 × the fal price (a Krea 2 Turbo picture of about 1 MP costs about 1 ct). Returns an inline preview, the public imageUrl and chargedCents.
Parameters:
prompt(required) — string — Detailed English description of the picture.kind— string — photo (default, Krea 2 Turbo) or text (GPT Image 2.5, lettering-heavy mockups).width— integerheight— integerpreview— booleanaspectRatio— string
Hints: read-only no · destructive not declared · idempotent not declared · open-world yes
picorn_generate_vector_assetsUse Picorn's native editor engine: first generate raster artwork with self-hosted Z-Image Turbo on ComfyUI, remove its background, then convert it through the bundled multi-colour SVG converter. Generates five variants, selects the strongest result and returns the top three. Signets also return one layered editor file that displays the three shortlisted SVGs inside the same native project. Use this tool for every newly generated signet and custom icon.
Parameters:
prompt(required) — stringkind(required) — stringpalette— arraynumColors— integerprojectName— stringworkspaceProjectId— stringworkspaceProjectKey— string
Hints: read-only no · destructive not declared · idempotent not declared · open-world yes
picorn_edit_imageEdit an existing picture with GPT Image 2.5 Flare on fal: retouch, change background, add or remove objects, restyle. Pass imageUrl (Picorn storage, Dropbox/Drive share link) or imageBase64. Needs a connected Picorn account with credits; charged at 1.2 × the fal price. Returns an inline preview, the public imageUrl and chargedCents.
Parameters:
prompt(required) — string — The edit instruction.preview— booleanimageUrl— stringimageBase64— string
Hints: read-only no · destructive not declared · idempotent not declared · open-world yes
picorn_render_svgRender your SVG through Picorn with real typography and declarative image workers. Put placeholder <rect> elements inside the SVG and choose their backend with data-clipart-engine="svg-converter" (fresh ComfyUI image, background removal, then Picorn PNG→SVG vectorisation), data-clipart-engine="z-image-turbo" (raster photo/cutout), or data-clipart-engine="library" (existing vector only). Include data-clipart-prompt; use data-clipart-num-colors="1..7" for svg-converter, and data-clipart-keep-bg="true" for a full scene. Picorn resolves all placeholders internally; never call the admin converter or return generated base64 yourself. Returns an inline preview and public creationUrl.
Parameters:
svg(required) — stringwidth— integerheight— integerpreview— boolean
Hints: read-only no · destructive not declared · idempotent not declared · open-world yes
picorn_editor_import_imageImport a photo into Picorn storage, then use the returned imageUrl in one or more native image layers. Three sources: mediaId (a photo the user already uploaded to Picorn, from picorn_media_list; needs the access token), imageUrl (Dropbox or Google Drive share links work as-is when shared with "anyone with the link", as do Picorn, Google Cloud Storage, fal and Wikimedia URLs; up to 50 MB), or imageBase64 (up to 15 MB). Camera originals are rotated by EXIF and downscaled to 4096 px on the long side; opaque photos are stored as JPEG, transparent images as PNG. Prefer mediaId or a share link over base64 for full-size photos. With an access token the asset lands in a workspace owned by the user.
Parameters:
name— string — Asset name shown in the marketing project.mediaId— string — A mediaId from picorn_media_list (the user's own Picorn uploads).preview— boolean — Return an inline preview. Default true.imageUrl— string — An image URL or a Dropbox / Google Drive share link.imageBase64— string — Image bytes as base64, with or without a data:image/... prefix.workspaceProjectId— stringworkspaceProjectKey— string
Hints: read-only no · destructive not declared · idempotent not declared · open-world no
picorn_editor_create_projectCreate a persistent native Picorn editor project. For a finished static layout, pass svg: a complete SVG containing text/shapes plus declarative data-clipart placeholders. Picorn runs the selected engines in the background, stores the generated assets, converts the SVG into editable native layers, and returns a populated project in one call. Omit svg only when you intentionally want an empty slide for incremental layer operations. Returns projectId, slideId, exact canvas dimensions, and the canonical /studio/editor?runId=... editorUrl that must be included in the final answer.
Parameters:
svg— string — Complete SVG layout. Generated visuals are <rect data-clipart="true" data-clipart-engine="svg-converter|z-image-turbo|library" data-clipart-prompt="..." ... /> placeholders resolved internally.title— stringwidth— integer — Required only for custom canvases.height— integer — Required only for custom canvases.ideaId— string — Campaign idea this file realises.background— object — CanvasBackground: color, gradient, texture, or transparent.campaignId— string — Campaign from picorn_campaigns_create (needs a Picorn access token). Pass together with ideaId.aspectRatio— stringworkspaceProjectId— string — Marketing project that will contain this editor file.workspaceProjectKey— string — Access key returned by picorn_projects_create.
Hints: read-only no · destructive not declared · idempotent not declared · open-world yes
picorn_editor_create_slideshowCreate, persist and render a complete 1–20 slide Picorn file in one deterministic call from finished agent-authored SVG and/or native editable layers. The calling agent is the only design model: this path does not call /api/generate-svg, Gemini, OpenRouter, or another LLM. Work is bounded before persistence to 50,000,000 total canvas pixels and 1,000 total layers. Fair-use cost is one unit per four slides, rounded up. Returns every persistent render URL, an inline contact-sheet preview, and the canonical editorUrl. Response provenance is modelProvider="calling-agent" and externalLlmCalls=0.
Parameters:
slides(required) — arraytags— arraytitle— stringwidth— integerformat— stringheight— integerideaId— string — Campaign idea this slideshow realises.caption— stringquality— numberbackground— object — Default background for slides that omit their own background.campaignId— string — Campaign from picorn_campaigns_create (needs a Picorn access token). Pass together with ideaId.aspectRatio— stringworkspaceProjectId— stringworkspaceProjectKey— stringtransparentBackground— boolean
Hints: read-only no · destructive not declared · idempotent not declared · open-world yes
picorn_editor_inspect_projectread-onlyRead the complete project, including every slide, layer, property, z-index, and latest rendered image URL.
Parameters:
projectId(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
picorn_editor_add_slideAdd another slide to an editor project. Projects support up to 20 slides. Returns the new slide as an inline preview.
Parameters:
projectId(required) — stringrole— stringbackground— object
Hints: read-only no · destructive not declared · idempotent not declared · open-world no
picorn_editor_update_slideChange a slide background, semantic role, or image prompt. Returns the changed slide as an inline preview.
Parameters:
projectId(required) — stringslideId(required) — stringrole— stringbackground— objectimagePrompt— string
Hints: read-only no · destructive not declared · idempotent not declared · open-world no
picorn_editor_delete_slidedestructiveDelete a slide and its layers. A project always keeps at least one slide.
Parameters:
projectId(required) — stringslideId(required) — string
Hints: read-only no · destructive yes · idempotent not declared · open-world no
picorn_editor_add_layerAdd a native editor layer. Use text, image, shape, group and qr layers for static designs. SVG uses an image layer with isSvg:true. Position is the layer CENTER in canvas pixels. The layer accepts the same persisted fields as /editor: transforms, opacity, blendMode, text styles/effects/rich text, image filters/customFilters/crop/masks/local effects/perspective, shape gradients/strokes/shadows, QR styling and persisted editor fields. Returns the changed slide as an inline preview automatically. Does not create or render video.
Parameters:
projectId(required) — stringslideId(required) — stringlayer(required) — object — Native layer object. At minimum provide type and its content field.
Hints: read-only no · destructive not declared · idempotent not declared · open-world yes
picorn_editor_update_layerPatch any editable property on a layer: content, position, size, transform, style, filters, masks, effects, blend mode, visibility, lock state, SVG overrides, timing, audio, or keyframes. Returns the changed slide as an inline preview automatically.
Parameters:
projectId(required) — stringslideId(required) — stringobjectId(required) — stringpatch(required) — objectcommitType— string
Hints: read-only no · destructive not declared · idempotent not declared · open-world no
picorn_editor_delete_layersdestructiveDelete one or more layers and clean their group references.
Parameters:
projectId(required) — stringslideId(required) — stringobjectIds(required) — array
Hints: read-only no · destructive yes · idempotent not declared · open-world no
picorn_editor_reorder_layersSet layer order. objectIds are bottom-to-top; omitted existing IDs retain their relative order on top.
Parameters:
projectId(required) — stringslideId(required) — stringobjectIds(required) — array
Hints: read-only no · destructive not declared · idempotent not declared · open-world no
picorn_editor_group_layersCreate the same metadata group used by the visual editor. Grouping preserves world positions and render output.
Parameters:
projectId(required) — stringslideId(required) — stringobjectIds(required) — arrayname— string
Hints: read-only no · destructive not declared · idempotent not declared · open-world no
picorn_editor_ungroup_layersRemove a group while preserving all child layers.
Parameters:
projectId(required) — stringslideId(required) — stringgroupId(required) — string
Hints: read-only no · destructive not declared · idempotent not declared · open-world no
picorn_editor_align_layersAlign positioned layers to their shared left, center, right, top, middle, or bottom bound.
Parameters:
projectId(required) — stringslideId(required) — stringobjectIds(required) — arraymode(required) — string
Hints: read-only no · destructive not declared · idempotent not declared · open-world no
picorn_editor_distribute_layersEvenly distribute three or more positioned layers horizontally or vertically.
Parameters:
projectId(required) — stringslideId(required) — stringobjectIds(required) — arrayaxis(required) — string
Hints: read-only no · destructive not declared · idempotent not declared · open-world no
picorn_editor_duplicate_layerDuplicate a non-group layer, including all style, filter, effect, mask, and animation properties.
Parameters:
projectId(required) — stringslideId(required) — stringobjectId(required) — stringoffsetX— numberoffsetY— number
Hints: read-only no · destructive not declared · idempotent not declared · open-world no
picorn_editor_render_projectRender selected or all slides through Picorn's real Fabric editor pipeline. Returns persistent public image URLs, a multi-page PDF, or a page-faithful DOCX download, creationUrl, and the canonical editorUrl that must be given to the user. DOCX preserves the visual layout as page images; edit text and layers in SEEZ Editor. Static renders include text, image/SVG, shape, group and QR layers; video/audio timing remains editable project data for the video editor.
Parameters:
projectId(required) — stringformat— stringquality— numberslideIds— arraypageWidthMm— numberpageHeightMm— numbertransparentBackground— boolean
Hints: read-only no · destructive not declared · idempotent not declared · open-world yes
picorn_search_libraryread-onlyLIBRARY FIRST. Browse Picorn's own libraries (photos, wallpapers, vector illustrations, ~300k icons, stickers, textures, shapes, badges) and SEE the hits as one numbered contact sheet. Free, also without an account. This is the same search the Blueprint engine runs: once a hit fits, write `search q1 <kind> "<words>"` with the same kind and words in picorn_blueprint_compile and the compile gets these pictures in this order (wallpaper → background, vector → illustration). Words may be German or English; short concrete English nouns match best. Generating a picture costs credits and is the exception: only when nothing here fits and the design would benefit massively.
Parameters:
kind(required) — stringq(required) — stringlimit— integerorientation— stringtransparent— boolean
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
picorn_search_iconsread-onlySearch Picorn's vector icon library before composing a design.
Parameters:
query(required) — stringlimit— integerstyle— stringvisualStyle— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
picorn_search_areasread-onlyFind approved torn, wavy, blob, banner and other decorative shapes for a design.
Parameters:
limit— integerstyle— stringaspect— string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
picorn_blueprint_specread-onlyReturn the complete Picorn Blueprint Language (PBL) spec: syntax, design rules, a full example and the repair patch rules. Read it once before writing PBL. PBL is a compact line language: regions + stacks, library asset search, components, every editor effect. The engine measures text with real fonts and does all geometry.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
picorn_blueprint_examplesread-onlyReturn reviewed PBL showcase posts (photo-led post, tips carousel with master, type-led story, typographic event) that compile with 0 errors. Use them to learn proven structure, spacing and effect choices; write new copy, colours and fonts from the brief instead of reusing theirs.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
picorn_blueprint_compileread-onlyCompile a PBL document you wrote (pbl) or apply #id patch lines to an earlier compile (blueprintId + patch). No model is called: Picorn searches the curated asset libraries, measures text with the real fonts, lays out, reviews and renders. Returns blueprintId, errors/warnings with codes and fixes, the scene report + ASCII wireframe (exact boxes, colours, effects, search hits), the canonical source and an inline preview of every slide. Patches reuse the cached asset searches, so iterate with small patches until errors=0 and the preview is visually finished. blueprintId alone re-sends the current revision (preview and report) without compiling. Set preview:false for an even faster text-only check. A line `search q2 generate photo "…"` (or `generate text` for lettering-heavy mockups) creates a NEW picture as ref when the library has nothing fitting; Library first: browse with picorn_search_library (or use search lines in picorn_blueprint_compile), and generate only when the design would benefit massively from a new picture (no fitting hero photo exists). Generation needs a connected Picorn account with credits; it is charged at 1.2 × the fal price (a Krea 2 Turbo picture of about 1 MP costs about 1 ct). Generated pictures are cached in the blueprint, so patches never pay twice.
Parameters:
pbl— string — Full PBL document starting with "pbl v1". Creates a new blueprintId.patch— string — Repair lines, e.g. "#title size=96 color=primary" or "#n12 delete".preview— boolean — Render the inline preview. Default true.blueprintId— string — From an earlier compile, together with patch (or alone to see the current revision again).
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
picorn_blueprint_create_fileTurn a compiled blueprintId into a persistent, fully editable Picorn editor file (native text, shape and image layers through the editor importer), render every slide and return the editorUrl, render URLs and a contact sheet. With a Picorn access token the file lands in your account and can be linked to a campaign idea (campaignId + ideaId) and scheduled with picorn_posts_schedule.
Parameters:
blueprintId(required) — stringtags— arraytitle— stringideaId— stringcaption— string — Post caption stored on the file and used when scheduling.campaignId— stringallowErrors— boolean — Create the file although the last compile still reports errors. Default false.workspaceProjectId— stringworkspaceProjectKey— string
Hints: read-only no · destructive not declared · idempotent not declared · open-world yes
picorn_posts_upload_videoUpload an existing MP4, WebM or MOV clip to your own Picorn account. No video generation, editing or rendering. Pass raw mediaBase64 and contentType; maximum 15 MB decoded. Download a licensed source clip in your client first; a webpage URL is not video bytes. Returns fileId, mediaUrl and published:false. Inspect the clip, then publish with picorn_posts_schedule using that fileId, exact accountIds and publishNow:true or scheduledAt. Upload alone does not publish or incur a social posting charge. Requires account access.
Parameters:
mediaBase64(required) — stringcontentType(required) — stringcaption— string
Hints: read-only no · destructive no · idempotent not declared · open-world yes
picorn_account_statusread-onlyShow which Picorn account the MCP is connected to and its connected social media accounts. Requires a personal Picorn access token; without one it explains how to connect.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world yes
picorn_social_accounts_connectCreate an OAuth link that connects a social media account to the user's Picorn account. Give the authUrl to the user to open in a browser, then check picorn_account_status. Requires a Picorn access token.
Parameters:
platform(required) — string
Hints: read-only no · destructive not declared · idempotent not declared · open-world yes
picorn_campaigns_createCreate a campaign in the user's Picorn account from agent-authored post ideas (no model is called). The campaign lives in a marketing project: pass workspaceProjectId + workspaceProjectKey from picorn_projects_create, or omit both to create a new project named after the topic. Returns campaignId and one ideaId per idea. Create each post file with the same workspace plus campaignId + ideaId, then schedule it with picorn_posts_schedule. Requires a Picorn access token.
Parameters:
topic(required) — stringideas— arraydescription— string — Campaign goal, audience or promise.workspaceProjectId— stringworkspaceProjectKey— string
Hints: read-only no · destructive not declared · idempotent not declared · open-world no
picorn_campaigns_listread-onlyList the user's campaigns with their ideas and the files linked to each idea. Requires a Picorn access token.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
picorn_campaigns_inspectread-onlyRead one campaign with its ideas and linked file IDs. Requires a Picorn access token.
Parameters:
campaignId(required) — string
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
picorn_media_listread-onlyList the photos the user already uploaded to Picorn (newest first), so a post can be built from them without uploading again. Returns mediaId, imageUrl, thumbnailUrl and pixel size per photo. Pass a mediaId to picorn_editor_import_image, or use the imageUrl directly in an image layer. includeGenerated: true also lists images Picorn generated for the user. Page with nextCursor. Requires a Picorn access token.
Parameters:
limit— integer — Default 30.cursor— string — nextCursor from the previous page.includeGenerated— boolean
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
picorn_files_listread-onlyList the user's own Picorn files (posts and slideshows, newest first) with fileId, title, project, aspect ratio, thumbnail and editorUrl. No workspace key is needed. Any fileId can be scheduled with picorn_posts_schedule; files made in the web editor post the slides Picorn last rendered for them. Files with mcpEditable: true can also be changed with the picorn_editor_* tools. Page with nextCursor. Requires a Picorn access token.
Parameters:
limit— integer — Default 20.cursor— string — nextCursor from the previous page.
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
picorn_posts_scheduleSchedule a finished static Picorn file (one image, or several slides as one carousel), or an existing video from picorn_posts_upload_video, on the user's connected social accounts for the given platforms. Static MCP files are re-rendered; uploaded videos publish the original bytes without rendering. scheduledAt is ISO-8601 with timezone (e.g. 2026-11-02T09:00:00+01:00); publishNow: true posts immediately. Calling it again for the same file reschedules the existing post. Each post costs $0.02 from the Picorn balance. With several accounts on one platform pass accountIds (from picorn_account_status); otherwise the first connected account per platform posts. The file must belong to the user: created while connected with the token, or listed by picorn_files_list. Requires a Picorn access token.
Parameters:
fileId(required) — stringplatforms(required) — arrayrender— boolean — Re-render before scheduling. Default true.caption— string — Overrides the file caption.accountIds— array — Exact accountIds from picorn_account_status. Each must be on one of the platforms.publishNow— booleanscheduledAt— stringplatformConfigurations— object — Post for Me platform_configurations keyed by platform, e.g. { "instagram": { "placement": "timeline" } }.
Hints: read-only no · destructive no · idempotent not declared · open-world yes
picorn_posts_listread-onlyList the user's scheduled and published posts in a time window (ISO dates). Requires a Picorn access token.
Parameters:
to— stringfrom— stringlimit— integer
Hints: read-only yes · destructive not declared · idempotent not declared · open-world no
picorn_posts_canceldestructiveCancel the scheduled post of a file before it is published; it is removed from the social media scheduler. Requires a Picorn access token.
Parameters:
fileId(required) — string
Hints: read-only no · destructive yes · idempotent not declared · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.