Lumen Brain

MCP · version 0.11.0 · 61 tools

Every studio as tools

Connect Lumen Brain to Claude, ChatGPT, Cursor or Codex and the assistant works in your account: it generates images and clips, files them in the Brain, builds and edits designs in the Design Studio, runs the AI Post Editor, and reads scripts aloud with ElevenLabs. Your credits, your gallery, your folders.

Connect

One streamable-HTTP server, signed in with OAuth. The client opens Lumen Brain's sign-in once; from then on every tool runs as you.

https://lumenbrain.app/mcp

Claude (claude.ai and the desktop app)

Settings → Connectors → Add custom connector. Paste the URL, then sign in to Lumen Brain when the connector asks.

Claude Code

One command in the terminal, then /mcp to sign in.

claude mcp add --transport http lumen-brain https://lumenbrain.app/mcp

Cursor

Add the server to ~/.cursor/mcp.json (or the project's .cursor/mcp.json) and sign in from the MCP settings.

{
  "mcpServers": {
    "lumen-brain": { "url": "https://lumenbrain.app/mcp" }
  }
}

ChatGPT

Settings → Connectors → Create (developer mode). Paste the URL; the sign-in opens on Lumen Brain.

Codex

Add it from the terminal, then sign in when Codex asks.

codex mcp add lumen-brain --url https://lumenbrain.app/mcp

Credits

Generation tools spend your Lumen credits at the prices their descriptions state; listing and reading tools are free. get_credits shows the balance.

Outputs

Every image, clip, design render and voiceover lands in your gallery with a public link, and can be filed into a Brain folder server-side — nothing travels through the chat.

Views in the chat

Hosts that support MCP Apps show Lumen Brain's own views: the generation view for images and clips, the design view that paints renders right in the conversation.

Skills and notes

Folder notes and your saved skills are the standing context: an assistant reads them before it works and keeps what it learns there.

Guide

The Design Studio, element by element

Everything the studio does — templates, slots, layers, layout, renders, AI writing, projects, batches, conversations, sharing — is a tool. A typical job reads top to bottom.

  1. Step 1

    Pick a template, or a design of your own

    list_design_templates lists the presets everyone has (starter:<id>) and the user's own templates with their slots — the text and picture layers a template fills in — and each preset's own instructions. list_designs reads the library; list_design_sizes the page sizes, list_design_fonts the fonts.

  2. Step 2

    Read it layer by layer

    get_design with include_layers returns the layers as a table: id, name, type, box, the words, the picture, the fill — bottom to top. Those ids (or names, or slot keys) are what every edit names.

  3. Step 3

    Fill the slots

    create_design pours a value per slot into a copy of the template: text as it is (within max_chars), a picture as a Brain asset id, a gallery generation id, an https link or "empty". pictures: "web" finds a picture for every empty frame on the web.

  4. Step 4

    Edit like the editor

    edit_design applies a list of the editor's own moves in one call — add_text, add_picture, add_frame, add_shape, add_gradient, set, move, resize, remove, duplicate, reorder, align, set_background, remove_background_picture, resize_page, set_instructions, fill_frames — and saves once, with the layers back as a table and a warning when copy prints over copy.

  5. Step 5

    Check the layout

    check_design_layout measures a design (or a document not yet saved) for copy that outgrows its box or prints over another layer, and with repair: true moves things apart the way the studio does; save: true writes the repaired document back.

  6. Step 6

    Cut a subject out

    remove_background takes a Brain picture, a gallery output or a public link and files the subject as a transparent PNG beside the original, ready to drop into a frame. Hair and soft edges survive it. Free, within the day's allowance the plan carries; profile: "fine" runs the matting model again when an edge comes back rough.

  7. Step 7

    Render, then look

    render_design queues a picture — painting needs a browser: in a host that shows Lumen Brain's views it is painted right in the chat, otherwise the moment the user has Lumen Brain open. get_design_render returns the public link. review_design_renders has Claude look at the finished pictures and say what is wrong.

  8. Step 8

    Let the AI write

    generate_design writes a complete design from a brief at a size or preset; revise_design applies one instruction; generate_design_variants writes N versions of a template from a brief or one row per line. research: true on any of them searches the web first and writes from dated facts (research_topic on its own does the search), find_web_pictures files pictures of a subject into the Brain.

  9. Step 9

    Gather pages, keep batches, continue conversations

    create_design_project builds a multi-page document (a carousel, a campaign); render_design_project paints every page. generate_design_variants with batch: true keeps the run on the AI Post Editor's Bulk tab (list_bulk_batches); generate_design with conversation: true keeps the brief on its Create tab, and continue_design_conversation takes it further turn by turn. share_design (admins) publishes a design as a template for everyone.

Guide

Voice: ElevenLabs, your own voices, and a video's voice changed

The voice studio's catalogue, samples, readings, voices of your own, video voice changes and transcripts, as ten tools.

  1. Step 1

    Find a voice

    list_voices lists the models — Eleven v4 (the newest and the default), Eleven v4 Turbo (cheaper, near-instant) and Eleven v3, all ElevenLabs — with their price per started 1,000 characters and every preset voice, with a line on how it sounds and the words it is found by: old, deep, warm, young, british, conversational. Signed in, it adds the user's own voices and marks their favourites; search and favorites_only narrow the list.

  2. Step 2

    Hear it first

    voice_preview returns an MP3 of one voice reading a fixed line — made once and kept, so it is free and immediate for a voice anyone has heard before. set_voice_favorite hearts the ones worth keeping at hand.

  3. Step 3

    Read the script

    generate_speech reads up to 5,000 characters a call on v4 and Turbo (6,000 on v3) and saves the MP3 to the gallery with a public link. Direction goes in square brackets in the text, in English whatever the script's language — [whispers], [excited], [sighs]; stability, similarity and language tune the read. The generation id is a voice track for the video models that take one, and save_output_to_brain files it into a Brain folder.

  4. Step 4

    Voices of your own

    clone_voice makes a voice from a minute of someone's speech (their consent confirmed first), design_voice makes a new one from a description of how it should sound, and add_voice_by_id adds any voice from ElevenLabs' Voice Library by its ID. Each is then custom:<id> in the voice tools — change_video_voice takes ElevenLabs voices only, not a MiniMax clone or a designed voice.

  5. Step 5

    A video's voice, changed

    change_video_voice re-voices a gallery clip, a Brain video or a public link with any ElevenLabs voice — timing and emotion kept, the music and effects mixed back under it — and saves a new clip to the gallery. It returns at once; get_voice_change follows it. 12 credits a minute.

  6. Step 6

    And back to text

    transcribe_audio turns a recording into text — a gallery output by id (a clip, a voiceover), a public url, or bytes — and keeps the transcript in the gallery. 1 credit per started five minutes; pass duration_seconds when it is known.

Reference

All 61 tools

Generated from the server's definitions, so it is exactly what a client sees. Required parameters are marked *; a default means the parameter can be left out.

Account and gallery

The balance, the plan, and every output the user has made.

get_credits

read-only

Get credit balance

Return the signed-in Lumen Brain user's credit balance, plan, monthly renewal date and Brain storage (bytes used against the room the plan gives, plus any storage an admin gifted on top). Free to call.

list_generations

read-only

List generations

List the signed-in user's recent Lumen Brain generations with model, credits spent, a 24-hour signed download URL and, while the output's link is open (it is by default), its permanent public URL — the one to paste into other tools or docs. Every item carries its generation id: pass ids to save_output_to_brain to file outputs in a Brain folder, or as reference_generation_ids / reference_video_generation_id to render from them again. Renders still on their way are named first with their job ids (wait_for_generations returns them once done), so the newest finished item is never taken for one still rendering. search finds an earlier output by words of its prompt. Free to call.

ParameterTypeDefaultWhat it is
kind"image" | "edit" | "video" | "tts" | "stt" | "design"Only return generations of this kind (design = a Design Studio export).
limitinteger (1–50)10How many to return.
searchstring (≤ 200 chars)Words from the prompt, to find an earlier output — e.g. "red shirt".

Images and video

Pictures and clips from a prompt, references and presets, rendered in the background; waiting for them when a next step needs them; batches; uploads from the chat.

generate_image

Generate image

Start an image in Lumen Brain and return as soon as the job is running — the render goes on in the background, so the conversation is free again at once. The inline preview follows the job and shows the picture the moment it lands (usually well within a minute); it is saved to the gallery either way, and a failed render refunds its credits. When a next step in the same task needs the finished picture — placing it in a design, animating it, filing it, reviewing it — call wait_for_generations with the returned job_id: it returns the generation id and links; otherwise do not wait. Models and credit costs: lite (Nano Banana 2 Lite, 1), fast (Nano Banana 2, 1), nano (Nano Banana, 2), pro (Nano Banana Pro, 4), gptImage2 (GPT Image 2, 6), flare (GPT Image 2.5 Flare, 6 — OpenAI's fast default, about twice the speed of GPT Image 2), sunburst (GPT Image 2.5 Sunburst, 8 — OpenAI's most precise, for detailed edits and finished campaign work), qwen (Qwen Image, 2 — an open model on Replicate with its safety checks off, for pictures the others refuse; 1K only), qwen3 (Qwen Image 3, 2 — Alibaba's newest, the sharpest text and layouts, 1K or 2K; hosted by Alibaba, so its content rules apply), seedream (Seedream 5.0 Pro, 2 — ByteDance's newest: it thinks a long brief through, holds a dense layout together and writes words into the picture in fourteen languages, 1K or 2K), seedreamLite (Seedream 5.0 Lite, 1 — the same family, quicker and a third of the price), soul2 (SOUL 2, 1 — Higgsfield's photographic people model), grok (Grok Image 2.0 by xAI, 2 — renders and edits), recraft (Recraft V4.1 Pro, 6 — typography and design, 1K or 2K), and ideogram and ideogramHigh (Ideogram 4.5, 2 and 6 — posters, logos and lettering, 1K or 2K, at its medium and high quality; it renders, and edits the first reference picture with up to four more as references); 2K output costs 1.75x and 4K 3x the base credits, rounded up. Reference images (inline base64 and/or media-library assets) drive image-to-image work — edits, restyles, or keeping a face or product consistent — up to the model's own cap: lite, nano, qwen and qwen3 take 3, grok 4, ideogram and ideogramHigh 5 (the first is the picture edited), fast 6, the Seedream pair 10, pro 14, gptImage2, flare and sunburst 16; soul2 and recraft take none. Large Brain pictures are sent as a 2048 px copy so the references fit one job. An earlier output goes in the same way — "with this one, now…" — as reference_generation_ids (or reference_latest_output for the newest), read straight from the gallery. For SEVERAL images (a batch, variations, N of something) call queue_generations instead of repeating this tool. For a styled look, pass a curated preset name (see list_presets) as preset — the platform applies the style server-side at no extra credit cost. If the prompt refers to a picture the user attached to the chat and no reference reached the call, nothing is rendered: the tool opens the upload widget in the chat instead (no credits spent) — tell the user to drop the file in, then call get_upload_session and run again with reference_asset_ids.

ParameterTypeDefaultWhat it is
prompt *stringWhat to generate.
model"lite" | "fast" | "nano" | "pro" | "gptImage2" | "flare" | "sunburst" | "qwen" | "soul2" | "grok" | "recraft" | "qwen3" | "seedream" | "seedreamLite" | "ideogram" | "ideogramHigh""fast"Image model key: lite | fast | nano | pro | gptImage2 | flare | sunburst | qwen | qwen3 | seedream | seedreamLite | soul2 | grok | recraft | ideogram | ideogramHigh.
aspect"1:1" | "16:9" | "9:16" | "4:3" | "3:4" | "3:2" | "2:3" | "4:5" | "5:4""1:1"Aspect ratio.
resolution"1K" | "2K" | "4K""1K"Output resolution as exposed by the model's API: Gemini flash models and GPT Image 2 render 1K-class output (GPT Image's concrete size is fixed per aspect ratio); Nano Banana Pro supports 1K, 2K or 4K, Qwen Image 3, the Seedream 5.0 pair, Recraft V4.1 Pro and Ideogram 4.5 1K or 2K. Unsupported values fall back to the model's default.
reference_image_base64stringOptional reference image to edit or stay consistent with: a data URL or raw base64 image.
reference_image_mimestringMIME type when reference_image_base64 is raw base64. Defaults to "image/png".
reference_asset_ididOptional media-library asset id to use as a reference (from list_media).
reference_asset_idsarray of id (≤ 16 items)Media-library asset ids when several reference images should go in together (capped at the model's own limit: lite/nano/qwen/qwen3 3, grok 4, ideogram/ideogramHigh 5, fast 6, seedream/seedreamLite 10, pro 14, gptImage2/flare/sunburst 16).
reference_folderstringMedia-library folder path of a reference asset, e.g. "/Brand/Logos".
reference_namestringMedia-library asset name inside reference_folder.
reference_generation_idsarray of id (≤ 16 items)Earlier outputs to use as reference images, by generation id — how "with this one, now…" is rendered from something generated before (every generate result and list_generations item carries the id). Read from the gallery server-side; nothing is re-uploaded.
reference_latest_outputbooleanUse the newest finished image output as a reference — "with this one" when its id is not at hand.
presetstringCurated preset name from list_presets. The platform rewrites the prompt to the preset's style server-side and attaches the preset's own reference images — pass just the name, nothing else is needed.
brain_folderstringBrain folder to file the finished image in as it lands, e.g. "/Tim Asher/Black shirt" — created if missing; the image lands in the gallery as well. Use it whenever the user wants the output in a Brain folder. An output rendered earlier is filed with save_output_to_brain.

generate_video

Generate video

Queue a short video clip (Gemini Omni Flash 1.1, Gemini Omni Flash, MiniMax Hailuo H3, Kling 3.0, Kling 2.6 Pro, Kling 2.5 Turbo Pro, PixVerse 6, Seedance 2.0, Seedance 2.5, Wan 3.0, Genjutsu or Cinema Studio 4.0) in Lumen Brain. Returns at once with a job id: the clip renders in the background, the inline preview shows it the moment it lands, and it is saved to the user's gallery — call list_generations later for its signed URL. Credits are reserved on queueing and refunded automatically if the render fails. Several clips? Call this once per clip, back to back — they render in parallel, each with its own preview — or use queue_generations for a large batch of one prompt. Costs 1-8 credits per second on Gemini Omni Flash 1.1 — the cheapest model here — 3 on Gemini Omni Flash, 3-4 on Hailuo H3, 4-13 on Kling 3.0, 5 on Kling 2.6 Pro, 3 on Kling 2.5 Turbo Pro, 2-5 on PixVerse 6, 4-9 on Seedance 2.0, 6-13 on Seedance 2.5, 2-7 on Wan 3.0, 6-13 on Cinema Studio 4.0, and on Genjutsu 3-4 on Hailuo H3 or 1-8 on Gemini Omni, depending on resolution (e.g. 6s = 6-78). GENJUTSU is motion transfer: a clip goes in (as reference_video_url / reference_video_asset_id / reference_video_generation_id — it renders from nothing else) and the same motion, camera and timing come out, recast with whoever or whatever takes over. It renders on one of two engines. Key genjutsu runs on Hailuo H3: a clip of 5-15s and up to 9 cast pictures through reference_asset_ids — the people, the product, the clothes — named @Image1, @Image2 … in the prompt ("@Image1 replaces the dancer"); once a picture is passed the prompt is optional; 768p at 3 or 2K at 4 credits/s. Key genjutsuOmni runs on Gemini Omni, for less: a clip of 3-9s under 32 MB and up to 9 cast pictures the same way — Omni reads pictures and a clip together on its reference endpoint, so the clip is cut on the server into up to three consecutive parts of under 3s; once a picture is passed the prompt is optional, and without pictures the prompt is required and says who or what takes over ("a chrome robot replaces the dancer"); 360p at 1, 720p at 3, 1080p at 4, 4k at 8 credits/s. On either engine the output runs as long as the clip, so its length is read from the clip, and the duration parameter is only used for a clip given by URL, or a Brain or gallery clip whose length is not recorded — pass the clip's own length then. CINEMA STUDIO 4.0 (key cinema4) is Seedance 2.5 with Higgsfield's direction on top — 4-30s, 480p or 720p, up to 30 reference pictures, a reference clip and sound — and takes direction, the Director's Panel as fields: genre, era, pacing, light, camera_model, camera_lens, camera_aperture, camera_movement, color_palette, each optional (left out, the model reads the prompt for it). A reference clip on Cinema Studio is billed too: Higgsfield meters the clip's seconds together with the render's at 0.6× the rate, so the price covers both. Optionally animate a reference image, either inline base64 or a media-library asset. Seedance 2.0, Seedance 2.5, Hailuo H3 and Gemini Omni Flash 1.1 read a whole SET instead — up to 9 pictures (Wan 3.0 up to 4) through reference_asset_ids (a character, a second character, the place they are in), arriving as @Image1, @Image2 … for the prompt to name ("the character from @Image1, in the room from @Image2"); on Seedance a set caps the output at 720p the way a clip does. On Omni Flash 1.1 one picture alone is the starting frame, while two or more — or any beside a reference clip — go to its reference endpoint as a set. Gemini Omni Flash 1.1, Hailuo H3, both Seedance generations and Wan 3.0 also take a reference VIDEO by public URL (reference_video_url): Omni Flash 1.1 carries the clip on or edits it — that is how a scene grows past 10s, 10s at a time to Google's 40s ceiling — and with pictures beside it reads the clip and the pictures together: its reference endpoint takes the clip's last 10s, cut on the server into up to three consecutive parts under 3s, and renders a new shot of the chosen 3-10s; Hailuo, Seedance and Wan use the clip as a reference to continue, restyle or borrow motion from; a clip caps the output at 720p on Seedance and Wan. Both Seedance generations also take SOUND — up to 3 MP3/WAV files by public URL (reference_audio_urls, 15s and 15 MB each), which arrive as @Audio1, @Audio2 …: say in the prompt what each is for ("BGM references @Audio1", "the voice references @Audio1"). Sound needs a reference image or clip with it, and caps the output at 720p just as a clip does. A clip already in the Brain (uploaded through media_upload_widget, or listed by list_media / search_brain with kind "video") goes in as reference_video_asset_id instead of a URL. For a styled look, pass a curated preset name (see list_presets) as preset — the platform applies the style server-side at no extra credit cost. If the prompt refers to a picture or clip the user attached to the chat and no reference reached the call, nothing is queued: the tool opens the upload widget in the chat instead (no credits reserved) — tell the user to drop the file in, then call get_upload_session and run again with reference_asset_ids or reference_video_asset_id.

ParameterTypeDefaultWhat it is
promptstring""What the clip should show. Required, except on genjutsu once a cast picture is passed: the clip and the pictures are enough there, and a prompt only says who plays whom.
model"omni11" | "hailuo" | "kling3" | "kling26" | "kling25" | "pixverse6" | "seedance" | "seedance25" | "wan3" | "genjutsu" | "genjutsuOmni" | "cinema4""omni11"Video model: "omni11" = Gemini Omni Flash 1.1 via fal.ai (3-10s, 360p at 1 credit/s, 720p at 3, 1080p at 4, 4k at 8 — the cheapest and the default), "hailuo" = Hailuo H3 by MiniMax (5-15s, 768p at 3 credits/s, 2K at 4), "kling3" = Kling 3.0 via Higgsfield (3-15s, 720p at 4, 1080p at 5, 4k at 13), "kling26" = Kling 2.6 Pro via Higgsfield (5 credits/s, 5 or 10s), "kling25" = Kling 2.5 Turbo Pro via Higgsfield (3 credits/s, 5 or 10s), "pixverse6" = PixVerse 6 via Higgsfield (3-15s, 360p/540p at 2, 720p at 3, 1080p at 5), "seedance" = Seedance 2.0 by ByteDance via Higgsfield (4-15s, 480p at 4, 720p at 9), "seedance25" = Seedance 2.5 by ByteDance via Higgsfield (4-30s, 480p at 6, 720p at 13), "wan3" = Wan 3.0 by Alibaba via Higgsfield (4-15s, 480p at 2, 720p at 4, 1080p at 7), "genjutsu" = Genjutsu, motion transfer on Hailuo H3 (needs a reference clip of 5-15s and runs as long as it; up to 9 cast pictures; 768p at 3, 2K at 4), "genjutsuOmni" = Genjutsu on Gemini Omni (needs a reference clip of 3-9s and runs as long as it; up to 9 cast pictures, or a prompt that says who takes over; 360p at 1, 720p at 3, 1080p at 4, 4k at 8), "cinema4" = Cinema Studio 4.0 by Higgsfield (4-30s, 480p at 6, 720p at 13; takes direction).
durationinteger (1–30)Clip length in seconds (default 6) — Omni Flash 1.1 supports 3-10s, Omni 1-10s, Hailuo 5-15s, Kling 3.0 3-15s, Kling 2.6 and 2.5 5 or 10s, PixVerse 6 3-15s, Seedance 2.0 4-15s, Seedance 2.5 4-30s, Wan 3.0 4-15s, Cinema Studio 4.0 4-30s; out-of-range values are clamped. Genjutsu runs as long as its clip: it ignores this for a Brain or gallery clip whose length is known, and needs it for a clip given by URL or one whose length is unknown — pass that clip's own length.
aspect"16:9" | "9:16"Clip aspect ratio, "16:9" when left out. Genjutsu follows the clip it is given where its shape is known (a Brain or gallery clip), and so does Gemini Omni Flash 1.1 with a clip unless a ratio is passed; for a clip given by URL, pass the clip's own ratio.
directionobjectCinema Studio 4.0 only: the Director's Panel. Set any of the controls; a control left out is read off the prompt by the model. Pacing runs single-shot, calm, dynamic, chaotic; the camera moves are Higgsfield's own presets (dolly-in, whip-pan, drone-orbit, snorricam …); the colour palettes are their named looks (neon-rain-at-midnight, amber-wasteland …).
resolution"360p" | "480p" | "540p" | "720p" | "768p" | "1080p" | "2K" | "4k"Output resolution for Gemini Omni Flash 1.1 (360p at 1 credit/s, 720p at 3, 1080p at 4, 4k at 8 — 4k is upscaled from the render), Hailuo H3 (768p at 3, 2K at 4), Genjutsu (768p at 3 or 2K at 4 on genjutsu; 360p at 1, 720p at 3, 1080p at 4, 4k at 8 on genjutsuOmni), Kling 3.0 (720p at 4, 1080p at 5, 4k at 13), PixVerse 6 (360p/540p at 2, 720p at 3, 1080p at 5), Seedance 2.0 (480p at 4, 720p at 9), Seedance 2.5 (480p at 6, 720p at 13), Wan 3.0 (480p at 2, 720p at 4, 1080p at 7) and Cinema Studio 4.0 (480p at 6, 720p at 13). Ignored by Kling 2.6 and Kling 2.5. Left out, a model renders its cheapest tier, except Hailuo H3 and genjutsu (2K), and genjutsuOmni and PixVerse 6 (720p).
reference_image_base64stringOptional reference image to animate: a data URL or raw base64 image.
reference_image_mimestringMIME type when reference_image_base64 is raw base64. Defaults to "image/png".
reference_video_urlurlOptional reference clip as a public https URL (MP4/MOV), for the models that take a video input: Gemini Omni Flash 1.1 (up to 40s in — the render continues or edits it; beside pictures, its last 10s are read with them), Hailuo H3 (2-15s), Seedance 2.0 (2-15s), Seedance 2.5 (2-30s), Wan 3.0 (2-15s), Cinema Studio 4.0 (2-30s) and Genjutsu (5-15s on genjutsu, 3-9s on genjutsuOmni — the clip whose motion is recast; Genjutsu renders from nothing else).
reference_video_asset_ididOptional Brain video asset id (kind "video" in list_media / search_brain, or an upload from media_upload_widget) to use as the reference clip — the same models and rules as reference_video_url, which it replaces.
reference_audio_asset_idsarray of id (≤ 3 items)Brain sound-file ids (kind "audio" in list_media / search_brain, or an upload from media_upload_widget) to use as the render's music or voice track — Seedance 2.0 and Seedance 2.5 only, up to 3. This is how a local file goes in: open media_upload_widget, have the user drop the MP3 or WAV in, then pass the ids here. They arrive as @Audio1, @Audio2 ... and the prompt says what each is for.
reference_audio_urlsarray of url (≤ 3 items)Optional sound files as public https URLs (MP3 or WAV, up to 3, 15s and 15 MB each), for Seedance 2.0 and 2.5 only. They reach the render as @Audio1, @Audio2 … — say in the prompt what each is for ("BGM references @Audio1", "the voice references @Audio1"). A sound file needs a reference image or clip alongside it, and it caps the output at 720p the way a clip does.
reference_asset_ididOptional media-library asset id to animate (from list_media).
reference_asset_idsarray of id (≤ 9 items)Media-library asset ids when SEVERAL reference pictures should go in together — a character, a second character, the place they are in. Seedance 2.0, Seedance 2.5, Hailuo H3 and Gemini Omni Flash 1.1 (up to 9) and Wan 3.0 (up to 4); they arrive as @Image1, @Image2 … and the prompt names them ("the character from @Image1, in the room from @Image2"). Omni Flash 1.1 also reads them beside a reference clip. Every other model animates a single starting frame, so pass one id here or use reference_asset_id.
reference_folderstringMedia-library folder path of the reference asset, e.g. "/Brand/Logos".
reference_namestringMedia-library asset name inside reference_folder.
reference_generation_ididAn earlier image output as the starting frame, by generation id — "animate this one" (every generate result and list_generations item carries the id). Read from the gallery server-side.
reference_video_generation_ididAn earlier clip output as the reference clip, by generation id, for the video-to-video models — the same role as reference_video_asset_id.
reference_latest_outputbooleanUse the newest finished output — "with this one" when its id is not at hand: an image becomes the starting frame, a clip the reference clip.
presetstringCurated preset name from list_presets. The platform rewrites the prompt to the preset's style server-side; when no reference image is supplied, the preset's own reference becomes the starting frame.
brain_folderstringBrain folder to file the finished clip in, e.g. "/Tim Asher/Black shirt" — created if missing; the clip lands in the gallery as well. Use it whenever the user wants the output in a Brain folder.

wait_for_generations

read-only

Wait for generations

Wait for renders that generate_image, generate_video or queue_generations started, and get their outputs: for each finished job its generation id (what create_design, update_design, save_output_to_brain and the generate tools' reference_generation_ids take), a 24-hour signed URL and, while the output's link is open, its permanent public link. The generate tools return as soon as a job is running, so the conversation stays free — call this only when a next step in the same task needs the finished output (placing a picture in a design, animating it, filing it, reviewing it). Waits up to timeout_seconds (default 45) for all of them; any still rendering by then is reported as such — call again to keep waiting. A failed render is reported with its reason; its credits are refunded. Free to call.

ParameterTypeDefaultWhat it is
job_ids *array of id (≤ 25 items)The jobs to wait for: job_id from generate_image or generate_video, job_ids from queue_generations.
timeout_secondsinteger (5–55)45How long to wait at most, in seconds.

queue_generations

Queue generations

Queue one or many generations to render in the background instead of waiting for each one. ALWAYS use this instead of repeated generate_image / generate_video calls when the user asks for several images or clips (a batch, variations, N of something): every job is enqueued at once, credits are reserved up-front and refunded on failure, the studios show live progress tiles, and results land in the gallery — check list_generations a few minutes later. Same models, credit costs, reference-image rules and preset support as the generate tools; video jobs also take a Brain clip as reference_video_asset_id for the video-to-video models. Video jobs on Seedance 2.0, Seedance 2.5, Hailuo H3 and Gemini Omni Flash 1.1 read up to 9 reference pictures at once (Wan 3.0 up to 4) (a character, a second character, the place they are in), arriving as @Image1, @Image2 … for the prompt to name; every other video model animates the first as its starting frame, and so does Omni Flash 1.1 given one picture and no clip. Earlier outputs go in too: reference_generation_ids (images), reference_video_generation_id (a clip, video jobs) or reference_latest_output for the newest one — read from the gallery server-side, nothing re-uploaded. Returns the queued job ids immediately. If the prompt refers to a picture or clip the user attached to the chat and no reference reached the call, nothing is queued: the tool opens the upload widget in the chat instead — tell the user to drop the file in, then call get_upload_session and run again with reference_asset_ids (or reference_video_asset_id).

ParameterTypeDefaultWhat it is
kind"image" | "video""image"What to render.
promptstring""What every queued job should generate. Required, except for video jobs on genjutsu that pass a cast picture, where the clip and the pictures are enough.
modelstring"fast"Model key. Images: lite | fast | nano | pro | gptImage2 | flare (GPT Image 2.5 Flare) | sunburst (GPT Image 2.5 Sunburst) | qwen (open model, no content filter) | qwen3 (Qwen Image 3) | seedream (Seedream 5.0 Pro, dense layouts and words in the picture) | seedreamLite (Seedream 5.0 Lite, quicker and cheaper) | soul2 (SOUL 2, Higgsfield's photographic people model, 1 credit) | grok (Grok Image 2.0 by xAI, renders and edits) | recraft (Recraft V4.1 Pro, typography and 2K design) | ideogram (Ideogram 4.5, posters, logos and lettering; renders, and edits the first reference picture) | ideogramHigh (Ideogram 4.5 at its highest quality). Videos: omni11 | hailuo | kling3 | kling26 | kling25 | pixverse6 | seedance | seedance25 | wan3 | genjutsu (Genjutsu, motion transfer on Hailuo H3 — needs a reference clip of 5-15s, runs as long as it, takes up to 9 cast pictures, and the prompt as optional once one is passed) | genjutsuOmni (Genjutsu on Gemini Omni, for less — a reference clip of 3-9s, up to 9 cast pictures, and the prompt as optional once one is passed) | cinema4 (Cinema Studio 4.0 — Seedance 2.5 under Higgsfield's direction; takes direction, and bills a reference clip's seconds too).
countinteger (1–25)1How many jobs to queue with this prompt (credits are reserved for each).
aspectstringAspect ratio — images default to "1:1", videos to "16:9" (or "9:16"). Genjutsu follows its clip's own shape where it is known, and so does Gemini Omni Flash 1.1 with a clip unless a ratio is passed.
resolutionstringOutput resolution: images 1K/2K/4K where the model supports it; videos 480p/720p/1080p for the fal models.
durationinteger (1–30)Video only: clip length in seconds (clamped to the model's range). Genjutsu runs as long as its reference clip: it ignores this where the clip's length is known, and needs it for a clip whose length is unknown — pass the clip's own length.
directionobjectCinema Studio 4.0 only: the Director's Panel — genre, era, pacing, light, camera_model, camera_lens, camera_aperture, camera_movement, color_palette; a control left out is read off the prompt.
presetstringCurated preset name from list_presets — applied server-side when each job runs.
reference_asset_idsarray of id (≤ 16 items)Media-library asset ids to use as reference/input images, up to the model's cap (on a video model that animates one picture, the first becomes the starting frame).
reference_image_base64stringOne inline reference image: a data URL or raw base64.
reference_image_mimestringMIME type when reference_image_base64 is raw base64. Defaults to "image/png".
reference_generation_idsarray of id (≤ 16 items)Earlier outputs to use as reference images, by generation id — "with this one, now…" — up to the model's cap (on a video model that animates one picture, the first becomes the starting frame). Read from the gallery server-side.
reference_latest_outputbooleanUse the newest finished output — "with this one" when its id is not at hand: an image as a reference (the starting frame for a video job), a clip as the reference clip of a video job.
reference_video_asset_ididVideo only: a Brain video asset id (kind "video" in list_media / search_brain) used as the reference clip — Omni Flash 1.1 continues or edits it (beside pictures, it reads the clip's last 10s with them); Hailuo, Seedance and Wan 3.0 use it as a reference.
reference_video_generation_ididVideo only: an earlier clip output as the reference clip, by generation id — the same role as reference_video_asset_id.
brain_folderstringBrain folder to file every finished output in, e.g. "/Tim Asher/Black shirt" — created if missing; outputs land in the gallery as well. Use it whenever the user wants the results in a Brain folder.

list_presets

read-only

List curated presets

List Lumen Brain's built-in curated presets — style packs maintained by the platform (film noir, product studio, anime, analog film, UGC, cyberpunk and more). Each has a name, a title and a short description of the look it produces. To use one, pass its name as the preset parameter of generate_image or generate_video: the platform then rewrites the prompt to match the style and attaches the preset's reference images server-side. The style brief itself is not exposed — only the preset name is needed. Check this before generation work when the user asks for a styled or on-brand look. Free to call.

ParameterTypeDefaultWhat it is
searchstringFilter by name, title or description substring.

media_upload_widget

Media upload widget

Open an in-chat upload widget so the user can pick local images (PNG/JPG/WEBP), video clips (MP4/MOV/WEBM) or sound files (MP3/WAV), up to 100 MB each and 25 MB for sound, from their device and drop them straight into a media library folder. Call it IMMEDIATELY, without asking first, whenever the user's message refers to a picture, clip or file they attached to the chat, pasted, or have on their device ("the photo I attached", "this image", "my logo", "csatolt kép") — chat attachments never reach these tools, and asking the user to request an upload is a wasted turn. Make it the only tool call of that turn and tell the user to drop the files in. The widget uploads directly from the chat; a browser fallback link is included. For a file that is already online (a share link, a CDN file, a Lumen output link) call save_media_from_url instead — no widget needed. Returns a session id; after the user uploads (hosts that support it let the widget message you itself), call get_upload_session to see the stored assets — image ids go into generate_image / queue_generations as reference_asset_ids, a clip's id into generate_video as reference_video_asset_id, and a sound file's into generate_video as reference_audio_asset_ids.

ParameterTypeDefaultWhat it is
folderstringTarget folder path, e.g. "/Brand/Logos". Created if missing. Defaults to /Uploads, where every input the user brings is filed.
labelstringShort note shown in the widget, e.g. 'Product shots'.
max_filesinteger (1–20)10Maximum files the user can upload.

get_upload_session

read-only

Get upload session

Check an upload session started with media_upload_widget: returns the status and the assets the user uploaded (id, name, folder) so you can reference them in prompts or with get_media.

ParameterTypeDefaultWhat it is
session_id *idSession id returned by media_upload_widget.

The Brain: the media library

A Drive-style library of folders with notes. Browse it, search it, read a picture as a reference, file outputs and links into it.

list_folders

read-only

List media folders

List the signed-in user's media library folders (Drive-style tree with full paths, e.g. /Brand/Logos) with asset counts and folder notes. Start here before prompting from a brand folder. Free to call.

ParameterTypeDefaultWhat it is
understringOnly return folders under this path, e.g. "/Brand". Defaults to the whole tree.

list_media

read-only

List media assets

List the image, video and sound assets stored in the user's media library, optionally inside one folder path (e.g. /Brand/Logos) and optionally including nested subfolders. Returns the folder's own note first — treat it as authoritative context for any task about this folder — plus asset names, kinds, notes and tags, not the bytes. Use get_media to read an image (or a clip's poster frame and signed URL); a clip's id goes into generate_video / queue_generations as reference_video_asset_id, and a sound file's (kind "audio") into generate_video as reference_audio_asset_ids. Free to call.

ParameterTypeDefaultWhat it is
folderstringFolder path, e.g. "/Brand/Logos". Defaults to root.
recursivebooleanfalseInclude assets in nested subfolders.
searchstringFilter by name, note or tag substring.
limitinteger (1–100)50How many to return.

search_brain

read-only

Search the Brain

Search the user's whole Brain (media library) in one call — every folder at once — matching asset names, notes and exact tags, images and video clips alike. Each hit includes its folder path and kind, so you can follow up with get_media for the bytes (a clip's poster frame and signed URL) or list_media to browse around it; a clip's id goes into generate_video as reference_video_asset_id. Free to call.

ParameterTypeDefaultWhat it is
query *stringWhat to look for. Matches name and note substrings, and exact tag values.
limitinteger (1–50)20How many matches to return.

get_media

read-only

Get media asset

Read one stored asset from the media library by asset id or by folder path + name. An image comes back as base64 image content to use as a visual reference when prompting; a video clip comes back as its poster frame plus a 24-hour signed URL, and its id goes into generate_video / queue_generations as reference_video_asset_id. Free to call.

ParameterTypeDefaultWhat it is
ididAsset id from list_media.
folderstringFolder path, e.g. "/Brand/Logos".
namestringAsset name inside that folder.

create_folder

Create media folder

Create a folder (and any missing parents) in the media library, e.g. "/Brand/Logos". Optionally attach a note describing how the folder should be used when prompting.

ParameterTypeDefaultWhat it is
path *stringFull folder path, e.g. "/Brand/Logos".
descriptionstringNote about this folder, e.g. brand rules or intended use.

save_media

Save media asset

Save a base64 image into the user's media library, in a folder path (created if missing). Use it to build brand folders that later prompts and bulk runs can read. Images only — a video clip reaches the Brain through media_upload_widget. For a file that already has a public URL, call save_media_from_url instead and skip the base64.

ParameterTypeDefaultWhat it is
name *stringAsset name, e.g. 'logo-primary'.
data_base64 *stringRaw base64 image data (no data: URL prefix).
folderstringFolder path, e.g. "/Brand/Logos". Defaults to root.
mime_typestring"image/png"Image MIME type.
descriptionstringNote on how to use this asset in prompts.
tagsarray of string[]Tags for filtering.

save_media_from_url

Save media from a public link

Import a picture or a video clip that already lives at a public http(s) link — a share link, a CDN file, an image on a website, or a Lumen Brain output link (lumenbrain.app/o/…) — straight into the user's media library, in a folder path (created if missing; defaults to /Uploads). The server fetches the file, so no base64 travels through the chat: prefer this over save_media whenever the file has a URL, and over media_upload_widget whenever the file is online rather than on the user's device. Images (PNG/JPG/WEBP/GIF/AVIF) and clips (MP4/MOV/WEBM), each up to 100 MB; a big image keeps its original in storage with a working copy inline. Up to 10 links per call; each becomes its own asset, and the returned ids go into generate_image / queue_generations as reference_asset_ids or into generate_video as reference_video_asset_id. Filing spends no credits.

ParameterTypeDefaultWhat it is
urlurlOne public http(s) link to the file.
urlsarray of url (≤ 10 items)Several links at once (up to 10); each becomes its own asset.
namestring (≤ 200 chars)Asset name for a single url, e.g. 'packshot-01.png'. Defaults to the file name in the link.
folderstringFolder path, e.g. "/Brand/Products". Created if missing. Defaults to /Uploads, where every input the user brings is filed.
descriptionstringNote on how to use the asset(s) in prompts.
tagsarray of string[]Tags for filtering, e.g. ['brand'].

save_output_to_brain

Save output to Brain

File finished generations into a Brain folder (created if missing) — the way to put outputs where the user wants them, done server-side, with nothing downloaded or re-uploaded. Pass generation ids (a generate tool's result carries generation_id; list_generations lists them) or latest for the newest N finished outputs. An image becomes a Brain image in the folder (a big one keeps its original in storage with a working copy inline); a clip becomes a Brain clip, ready as a video input. Filing spends no credits and leaves the gallery as it is. To file an output the moment it renders, pass brain_folder to generate_image, generate_video or queue_generations instead; to rearrange later, use move_media.

ParameterTypeDefaultWhat it is
folder *stringBrain folder path, e.g. "/Tim Asher/Black shirt". Created if missing.
generation_idsarray of id (≤ 50 items)Outputs to file, by generation id.
latestinteger (1–50)Instead of ids: the newest N finished outputs, most recent first.
kind"image" | "video"With latest: only outputs of this kind.
namestring (≤ 120 chars)Asset name when filing one output. Several are named after their prompts.
descriptionstring (≤ 500 chars)Note on how to use the asset in prompts. Defaults to the model and the prompt.
tagsarray of string (≤ 20 items)Tags. Defaults to ["generated"].

move_media

Move media asset

Move a Brain asset (an image or a clip) into another folder, optionally renaming it — for arranging the library: sorting outputs and uploads into the folders they belong to. The target folder is created if missing; the asset keeps its id, tags and links. Find the asset by id (list_media, search_brain, a filing result) or by its current folder path and name.

ParameterTypeDefaultWhat it is
ididAsset id.
folderstringCurrent folder path when finding the asset by name, e.g. "/Uploads".
namestringAsset name inside folder, when no id is given.
to_folder *stringDestination folder path, e.g. "/Tim Asher/Black shirt". Created if missing; "/" is the root.
new_namestring (≤ 120 chars)A new name for the asset.

set_folder_note

Set folder note

Write or update a folder's note in the media library. The note is the folder's persistent context — usage rules, brand guidance, learnings from past work — read back by list_folders and list_media in every future session, so record here anything worth remembering about the folder and its contents. mode=replace rewrites the whole note (an empty string clears it); mode=append keeps the existing note and adds this text on a new line. Only the folder's owner can write. Free to call.

ParameterTypeDefaultWhat it is
folder *stringFolder path, e.g. "/Brand/Logos".
note *string (≤ 4000 chars)The note text. With mode=replace an empty string clears the note.
mode"replace" | "append""replace"replace = overwrite the note; append = add this on a new line after the note.

Skills

Reusable instruction packs the user keeps: brand rules, workflows, styles.

list_skills

read-only

List custom skills

List the user's stored custom skills — reusable instruction packs with a name, title and a "when to use" description — including skills other people shared with them, marked with who shared each. Check this before generation or brand work: when a skill's description matches the task at hand, load it with use_skill and follow it. Free to call.

ParameterTypeDefaultWhat it is
searchstringFilter by name, title or description substring.

use_skill

read-only

Use a custom skill

Load one stored skill's full instructions and activate them for the current task. Once loaded, the skill governs how you work in this session: follow it when writing generation prompts, when choosing models and settings on generate_image/generate_video, and when persisting context (set_folder_note, asset notes). Free to call.

ParameterTypeDefaultWhat it is
name *stringSkill name from list_skills.

save_skill

Save a custom skill

Store or update a custom skill so any future session can load it with use_skill. Use this when the user asks to save a workflow, style or set of rules as a skill. Write the description as a trigger ("when to use this") and the instructions as directives covering prompt style, model/settings choices and what context to persist. Saving under an existing name overwrites that skill.

ParameterTypeDefaultWhat it is
name *stringSlug-like skill name, e.g. "brand-ugc-video". Overwrites an existing skill of the same name.
title *stringShort human title, e.g. "Brand UGC video".
descriptionstring""One or two sentences on when to load this skill, e.g. "Use for every UGC-style ad video."
instructions *stringThe skill body: concrete directives for prompts, model choice and context writing. No length limit — full style guides fit.

Design Studio: templates and designs

The presets everyone has and the user's own designs; reading them layer by layer, filling their slots, editing them with the editor's own moves, checking the layout.

list_design_templates

read-only

List design templates

The Design Studio's templates: the presets everyone has (the built-in ones referenced as starter:<id>, the ones an admin shares by id) and the user's own saved templates (by id), each with its page size, tags, slots — the bound layers a template fills in: text slots (headline, body, cta…) with the most characters each takes (max_chars) and image slots (image, portrait, logo…) — and its own instructions, the template's system prompt for whoever writes into it: follow it when writing values for create_design. Pass a reference to create_design (with a value per slot) or generate_design_variants; get_design shows a template's slots again with include_doc for its full document. Free to call.

ParameterTypeDefaultWhat it is
searchstringWords to match against titles and tags.

list_designs

read-only

List designs

The user's saved designs and templates in the Design Studio, newest first: id, title, kind, page size, tags. get_design shows one's slots and document; render_design turns one into a picture. Free to call.

ParameterTypeDefaultWhat it is
kind"design" | "template"Only designs, or only templates.
searchstringWords to match against titles.
limitinteger (1–100)30

get_design

read-only

Get a design

One design or template by reference (a design id, or a starter as starter:<id>): its page size, tags and slots; with include_layers a table of its layers — id, name, type, box, what each holds — the ids edit_design takes; with include_doc the complete design document, the JSON the studio edits, to read or to change and pass back to create_design / update_design as doc. Free to call.

ParameterTypeDefaultWhat it is
design *stringA design id, or starter:<id>.
include_layersbooleanfalseAlso return the layers as a table: ids, names, boxes, text, pictures.
include_docbooleanfalseAlso return the full document.

create_design

Create a design

Saves a new design (or template) in the user's Design Studio: from a template reference with a value per slot — text as it is; an image slot takes a Brain asset id, a gallery generation id (an output of generate_image / queue_generations), an https link, or "empty" — or from a complete design document you composed (doc, in the shape get_design returns with include_doc). Returns the saved design with its slots and an editor link; with render: true also queues a picture of it (see render_design). Free; the AI tools are the ones that spend credits.

ParameterTypeDefaultWhat it is
fromstringThe template or design to start from: starter:<id> or a design id. Omit when passing doc.
valuesobjectA value per slot key of the template (see its slots).
docanyA complete design document instead of a template.
titlestring (≤ 120 chars)
kind"design" | "template""design"
tagsarray of string (≤ 12 items)
pictures"web" | "none""none"web: every empty frame gets a fitting picture found on the web for its hint — Gemini (Google Search) or Claude searches the open web for a page showing a public picture and the server files the picture from it (1 credit a picture; a stock library with a key, Wikimedia Commons or Openverse answer for free) — filed in the Brain with its credit; none: frames stay empty.
renderbooleanfalseAlso queue a picture of the design.
format"png" | "jpeg" | "webp""png"
scalenumber (1–3)1Pixels per page pixel of the picture; 2 for a sharper copy.

update_design

Update a design

Changes one of the user's designs or templates: pour new values into its slots (text, or a picture as a Brain asset id / gallery generation id / https link / "empty"), replace its document, rename it, make it a template or a design again, retag it. Nothing else changes. With render: true also queues a picture of the result.

ParameterTypeDefaultWhat it is
design *stringThe design id (a starter cannot be changed — create_design from it instead).
valuesobject
docanyA complete document to replace the current one.
titlestring (≤ 120 chars)
kind"design" | "template"
tagsarray of string (≤ 12 items)
renderbooleanfalse
format"png" | "jpeg" | "webp""png"
scalenumber (1–3)1

edit_design

Edit a design's layers

The editor's own moves on one of the user's designs, as a list of operations applied in order: add_text, add_picture, add_frame, add_shape, add_gradient; set (any property of a layer — words, font, size, colour, box, slot key, max_chars, a frame's picture or hint, a shape's fill), move, resize, remove, duplicate, reorder, align; set_background (a colour, a gradient or a picture), remove_background_picture, resize_page, set_instructions (the template's system prompt), fill_frames (pictures into the empty frames). Layers are named by id, name or slot key — get_design with include_layers lists them. Every operation is checked against the document's rules and the whole is saved once; the layers come back as a table, with a warning when copy prints over copy or runs off the page. Free; with render: true a picture is queued.

ParameterTypeDefaultWhat it is
design *stringThe design id (a starter cannot be edited in place — create_design from it first).
operations *array of op: add_text | add_picture | add_frame | add_shape | add_gradient | set | move | resize | remove | duplicate | reorder | align | set_background | remove_background_picture | resize_page | set_instructions | fill_frames (≤ 40 items)What to do, in order.
titlestring (≤ 120 chars)A new title, if wanted.
checkbooleantrueMeasure the result for copy printing over copy or off the page, and say so.
renderbooleanfalseAlso queue a picture of the result.
format"png" | "jpeg" | "webp""png"
scalenumber (1–3)1

check_design_layout

Check a design's layout

Measures a design the way the Studio does before a post goes out: which text prints over other text, and which layers run off the page. With repair: true the layout is put right the way the Studio's own fit does it — air under grown copy closes first, what sits below moves down, the stack slides up when the page is short, and only then is the type set smaller (to 75% of its size; strict: true allows 60%) — and the repaired design is saved when it is one of the user's own. Free.

ParameterTypeDefaultWhat it is
designstringA design id or starter:<id>. Omit when passing doc.
docanyA complete design document to check instead.
repairbooleanfalseAlso put the layout right.
strictbooleanfalseLet the repair shrink type further (to 60%).
savebooleantrueSave the repaired document over the design.

delete_design

destructive

Delete a design

Deletes one of the user's designs or templates for good. Pictures already rendered from it stay in the gallery.

ParameterTypeDefaultWhat it is
design *stringThe design id.

remove_background

Remove a picture's background

The subject cut out of a picture and everything else made transparent: a packshot off its studio floor, a person off their room, a logo off its card. BiRefNet's matting keeps hair, fur and soft edges where a plain mask smears them. Point at a picture in the Brain (asset_id), an output in the gallery (generation_id) or a public link (url). The cut-out is filed as a transparent PNG of its own, beside the original in the same folder, and the original is left as it is. The returned asset id goes straight into create_design, update_design or edit_design as a picture. Free, within the day's allowance the user's plan carries; the answer says how many are left. If hair or fur comes back rough, call again with profile: "fine".

ParameterTypeDefaultWhat it is
asset_idstring (≤ 64 chars)A picture in the Brain.
generation_ididAn image output in the gallery.
urlurlA public link to a picture.
profile"standard" | "fine""standard""standard" is the everyday pass; "fine" runs the matting model for hair and fur.
folderstring (≤ 500 chars)Where to file the cut-out; the original's own folder otherwise.
namestring (≤ 200 chars)What to call it; the original's name otherwise.

share_design

Share a design with everyone (admin)

For an administrator: makes one of their designs or templates a preset everyone has — it appears in every user's Design Studio and in list_design_templates, usable by all and changed by its owner alone — or takes it back. A shared template that started from a built-in starter stands in for that starter. Anyone else is refused.

ParameterTypeDefaultWhat it is
design *stringThe design id (one of the admin's own).
for_everyonebooleantruefalse takes a shared design back.

list_design_sizes

read-only

List design page sizes

The page sizes the Design Studio offers, by group (Social, Ads, Print, Other): each with its id — what generate_design, create_design's documents and edit_design's resize_page take as preset — its name, its pixels and its ratio. Any width × height in pixels is accepted too; these are the formats people actually post, print or pin. Free, needs no sign-in.

ParameterTypeDefaultWhat it is
group"Social" | "Ads" | "Print" | "Other"Only one group.

list_design_fonts

read-only

List design fonts

The typefaces a design can name: the built-in families (Google Fonts, by category — sans, serif, display, handwriting — with the weights each ships and whether it has an italic) and the fonts the user uploaded themselves in the Studio, by family name. A layer's font in edit_design and a document's fontFamily take any family listed here; brand fonts passed to generate_design should be from here too. Free to call.

ParameterTypeDefaultWhat it is
searchstringWords to match against family names.
category"sans" | "serif" | "display" | "handwriting" | "mono"Only built-in families of one category.

Design Studio: the AI Post Editor

Designs written from a brief, revised by instruction, multiplied from a template; research off the web, pictures off the web, and Claude's eye on the renders.

generate_design

Generate a design with AI

The AI Post Editor: from a brief — the message, the audience, the tone, the words to use — a complete design is written and saved (layers of copy, colour and picture slots; every piece of copy and every image slot bound as a slot, so it works as a template). Size by preset (ig-square, ig-portrait, ig-story, fb-post, linkedin-post, x-post, yt-thumb, pinterest, fb-cover, linkedin-banner, ad-square, ad-landscape, ad-leaderboard, ad-mrec, a4-portrait, a4-landscape, a5-flyer, business-card, presentation, og-image, email-header, wallpaper) or width × height in px. Optionally restyle an existing template or design for the brief (from), and pass brand colours, fonts and voice. Models: sonnet (Claude Sonnet 5, 2 credits) or opus (Claude Opus 5, 5 credits). Returns the saved design with its slots; picture slots come back empty — fill them with update_design (a Brain asset or a generate_image output) and render_design for a picture, or pass render: true here to queue one at once. conversation: true also opens the brief as a conversation on the AI Post Editor's Create tab, where the user (or continue_design_conversation) takes it further turn by turn.

ParameterTypeDefaultWhat it is
brief *string (≤ 4000 chars)What the design is for, in the language the copy should be in.
preset"ig-square" | "ig-portrait" | "ig-story" | "fb-post" | "linkedin-post" | "x-post" | "yt-thumb" | "pinterest" | "fb-cover" | "linkedin-banner" | "ad-square" | "ad-landscape" | "ad-leaderboard" | "ad-mrec" | "a4-portrait" | "a4-landscape" | "a5-flyer" | "business-card" | "presentation" | "og-image" | "email-header" | "wallpaper"A page size preset.
widthinteger (64–6000)
heightinteger (64–6000)
model"sonnet" | "opus""sonnet"
fromstringA template or design to restyle and refill: starter:<id> or a design id.
brandobject
titlestring (≤ 120 chars)
kind"design" | "template""design"
tagsarray of string (≤ 12 items)
pictures"web" | "none""web"web: every empty frame gets a fitting picture found on the web for its hint — Gemini (Google Search) or Claude searches the open web for a page showing a public picture and the server files the picture from it (1 credit a picture; a stock library with a key, Wikimedia Commons or Openverse answer for free) — filed in the Brain with its credit; none: frames stay empty.
researchbooleanfalseSearch the web on the brief first and write the copy from what is happening now — real names, numbers and dates. Costs nothing extra if nothing current is found.
renderbooleanfalseAlso queue a picture of the result.
format"png" | "jpeg" | "webp""png"
scalenumber (1–3)1
conversationbooleanfalseAlso keep the brief and the result as a conversation on the AI Post Editor.

revise_design

Revise a design with AI

One instruction applied to one of the user's designs by the AI editor — "make the headline shorter and bolder", "swap to a dark palette", "add a price tag bottom right" — and the whole document comes back revised and saved in place, ids and slots kept. sonnet costs 2 credits, opus 5. With render: true also queues a picture of the result.

ParameterTypeDefaultWhat it is
design *stringThe design id.
instruction *string (≤ 2000 chars)
model"sonnet" | "opus""sonnet"
renderbooleanfalse
format"png" | "jpeg" | "webp""png"
scalenumber (1–3)1

generate_design_variants

Generate variants of a template with AI

Bulk content from one template: the AI writes the copy for N versions — from a brief (each variant a different angle), or one variant per line of rows (a pasted spreadsheet column: a product, a quote, a city…) — and each set of values is poured into a copy of the template and saved as its own design. Picture slots keep the template's picture; for each variant the AI's picture prompt is returned, so pictures can be made with queue_generations and placed with update_design. Costs 1 credit per started ten variants on sonnet, 2 on opus. With render: true a picture of every variant is queued. batch: true also writes the run to the AI Post Editor's Bulk tab as a batch (list_bulk_batches), where the user can review, edit and render the posts; project: true gathers the saved variants into one design project (list_design_projects), a document the Studio opens page under page.

ParameterTypeDefaultWhat it is
template *stringstarter:<id> or a design id with slots.
countinteger (1–50)5
briefstring (≤ 2000 chars)What the versions are about and how they should differ.
rowsstring (≤ 8000 chars)One line per variant — the raw material of each.
model"sonnet" | "opus""sonnet"
savebooleantrueSave each variant as a design (off: only the values come back).
titlestring (≤ 100 chars)Title prefix for the saved variants; numbered.
tagsarray of string (≤ 12 items)
pictures"web" | "none""none"web: every empty frame gets a fitting picture found on the web for its hint — Gemini (Google Search) or Claude searches the open web for a page showing a public picture and the server files the picture from it (1 credit a picture; a stock library with a key, Wikimedia Commons or Openverse answer for free) — filed in the Brain with its credit; none: frames stay empty. For variants the AI's picture prompt per slot is what is searched for; every variant's frames are fetched one by one, so a large batch takes a while.
researchbooleanfalseSearch the web on the brief first and write the copy from what is happening now — real names, numbers and dates. One search for the batch whatever its size; costs nothing extra if nothing current is found.
renderbooleanfalseAlso queue a picture of every saved variant.
format"png" | "jpeg" | "webp""png"
scalenumber (1–3)1
batchbooleanfalseAlso keep the run as a batch on the AI Post Editor's Bulk tab.
projectbooleanfalseAlso gather the saved variants into one design project, as its pages.

research_topic

read-only

Research a topic on the web

The web read the way the AI Post Editor reads it before writing about something current: a few focused searches planned from the brief, the answers merged, kept to what is about the subject and recent, and returned as dated facts with their sources — names, numbers, dates, prices, results as they stand today. Use it before writing copy about this week, a launch, a price, a result, an event, or anything else that has a date; pass rows (one line per post of a batch) and the plan covers the batch. 1 credit when something current comes back; nothing when the web has nothing new to say. generate_design and generate_design_variants run the same search themselves with research: true.

ParameterTypeDefaultWhat it is
brief *string (≤ 2000 chars)What the copy will be about, in the language the copy should be in.
rowsstring (≤ 8000 chars)One line per post of a batch, so the searches cover all of them.

find_web_pictures

Find pictures on the web

Pictures for a few words, found the way the Design Studio fills a frame: the free stock libraries (Pexels, Unsplash, Pixabay, Openverse, Wikimedia Commons) first, and when they have nothing, an engine (Gemini with Google Search, or Claude) searches the open web for a page showing a public picture; the best matches are fetched and filed into the Brain — under /Design Studio/Web pictures unless a folder is given — with the photographer and the licence as the note, so each comes back as a Brain asset id ready for a picture slot (create_design, update_design, edit_design's fill_frames). Free from a stock library; 1 credit for an engine's search that found something. Name the real subject — the product, the person, the place, the event — not a mood.

ParameterTypeDefaultWhat it is
query *string (≤ 200 chars)What the picture should show, in English.
aspect"square" | "portrait" | "landscape""square"The shape of the frame it is for; the nearest pictures rank first.
countinteger (1–6)1How many to file.
folderstringA Brain folder to file them in.

review_design_renders

read-only

Review finished designs with AI

The art director's check the Studio makes before a post goes out: Claude looks at finished renders (get_design_render must say done) and says, for each, whether it can go out — naming text printing over text, anything cut off by the page edge, copy that cannot be read where it sits, a badge or headline covering the subject of the photograph, an empty frame or a placeholder left in. Taste and tone are not judged. Up to 8 renders a call; 1 credit per started ten. A post that fails is put right with edit_design, check_design_layout (repair: true) or revise_design, then rendered and reviewed again.

ParameterTypeDefaultWhat it is
render_ids *array of id (≤ 8 items)Finished renders, from render_design / get_design_render.

Design Studio: renders

Pictures of designs, painted in a browser and handed back as public links.

render_design

Render a design

Turns a design into a picture, saved to the user's gallery with a public link. Pass a design or template reference (optionally with values for its slots, so a template renders filled without being saved first) or a complete document. Painting takes a browser: where this chat shows Lumen Brain views the picture is painted right here in the result view; otherwise it is painted the moment the user has Lumen Brain open in a browser (the studio paints waiting renders itself), or by opening the returned page_url once. Call get_design_render with the render_id for the picture's links when it is done. Free.

ParameterTypeDefaultWhat it is
designstringA design id or starter:<id>. Omit when passing doc.
valuesobjectValues per slot, poured in for this render only.
docanyA complete design document to render instead.
titlestring (≤ 120 chars)The picture's name in the gallery.
format"png" | "jpeg" | "webp""png"
scalenumber (1–3)1Pixels per page pixel; 2 for a sharper copy.

get_design_render

read-only

Get a design render

Where a render stands, by its render_id: pending (not painted yet — the user's open Lumen Brain or the page_url paints it), failed (with why), or done with the picture's links — a public link that never expires and a signed one — and, when it can be fetched, a small preview as image content. Free to call.

ParameterTypeDefaultWhat it is
render_id *id

render_design_project

Render every page of a project

A picture of every page of one of the user's projects, in order — one render each, saved to the gallery with public links as render_design does. Painting takes a browser: where this chat shows Lumen Brain views the pages are painted right here; otherwise the moment the user has Lumen Brain open, or by opening a page_url once. get_design_render reads each render by id. Free.

ParameterTypeDefaultWhat it is
project *id
pagesarray of idOnly these pages; every page when omitted.
format"png" | "jpeg" | "webp""png"
scalenumber (1–3)1

Design Studio: projects

Multi-page documents: a carousel, a campaign, a batch gathered into one place.

list_design_projects

read-only

List design projects

The user's design projects — a batch of posts kept as one document with pages, the way a Canva design has pages; the Studio opens a project and lays its pages out one under the other. Newest first, with how many pages each holds; with project one project in full, its pages in order (each a design id get_design, edit_design and render_design take). Free to call.

ParameterTypeDefaultWhat it is
projectidOne project, with its pages.
searchstringWords to match against titles.
limitinteger (1–100)30

create_design_project

Create a design project

A new multi-page project in the user's Design Studio: each page either a copy of a template or design with values poured into its slots (from + values), or one of the user's own designs moved in as a page (design). Pages keep the order given. Returns the project with its page ids — each a design that get_design, edit_design and render_design take — and its editor link; render_design_project paints every page. Free.

ParameterTypeDefaultWhat it is
title *string (≤ 120 chars)
pages *array of object (≤ 100 items)
renderbooleanfalseAlso queue a picture of every page.
format"png" | "jpeg" | "webp""png"
scalenumber (1–3)1

update_design_project

Update a design project

Changes one of the user's projects: rename it; add pages at the end (a copy of a template with values, or one of the user's designs moved in); take pages out — detach_pages makes them standalone designs again, remove_pages deletes them; and set the order of every page with order (the page ids, first to last). Free.

ParameterTypeDefaultWhat it is
project *id
titlestring (≤ 120 chars)
add_pagesarray of object (≤ 100 items)
detach_pagesarray of id (≤ 100 items)
remove_pagesarray of id (≤ 100 items)
orderarray of id (≤ 100 items)Every remaining page id, in order.

delete_design_project

destructive

Delete a design project

Removes one of the user's projects. Its pages go with it, unless keep_pages: true, which first makes every page a standalone design in the library. Cannot be undone.

ParameterTypeDefaultWhat it is
project *id
keep_pagesbooleanfalse

AI Post Editor: batches and conversations

What the Bulk tab and the Create tab keep: batches of posts with their reviews, and conversations that continue turn by turn.

list_bulk_batches

read-only

List bulk batches

The batches on the user's AI Post Editor Bulk tab — every run of many posts from one template, saved from its first keystroke: the template, the brief, the pasted rows, the model and the switches, and with batch one batch in full: every post's values, its picture prompts, whether it is selected, and what the review said of it. generate_design_variants with batch: true writes a run here so it appears on the tab. Free to call.

ParameterTypeDefaultWhat it is
batchidOne batch, with its posts.
limitinteger (1–100)30

list_design_conversations

read-only

List AI editor conversations

The briefs begun on the user's AI Post Editor Create tab, each kept as a conversation: the brief, the turns (what was asked, what the editor answered) and the design as it stands. Newest first; with conversation one in full — its turns, and its design's slots and layers. continue_design_conversation takes one further; generate_design with conversation: true starts one. Free to call.

ParameterTypeDefaultWhat it is
conversationidOne conversation, in full.
limitinteger (1–100)30

continue_design_conversation

Continue an AI editor conversation

One more turn on a conversation from the user's AI Post Editor: the instruction is applied to the design as it stands ("make the headline shorter", "swap to a dark palette", "add a price tag bottom right"), the revised design becomes the conversation's current one, and both turns are kept — the tab shows them when the user opens it. sonnet costs 2 credits, opus 5. With save: true the result is also saved as a design of its own (render: true then queues its picture).

ParameterTypeDefaultWhat it is
conversation *id
instruction *string (≤ 2000 chars)
model"sonnet" | "opus"The conversation's own model when omitted.
savebooleanfalseAlso save the revised design in the library.
titlestring (≤ 120 chars)
renderbooleanfalse
format"png" | "jpeg" | "webp""png"
scalenumber (1–3)1

delete_design_conversation

destructive

Delete an AI editor conversation

Removes a conversation from the user's AI Post Editor — its turns and the design it held. Designs saved to the library from it stay. Cannot be undone.

ParameterTypeDefaultWhat it is
conversation *id

Voice: text to speech, your own voices, and video voice changes

ElevenLabs' Eleven v4, v4 Turbo and v3 reading scripts into the gallery, samples of every voice, favourites, voices of your own — cloned, designed or added by ID — a video re-voiced with the timing kept, and recordings turned into text.

list_voices

read-only

List voice models and voices

The voice studio's catalogue: the text-to-speech models — Eleven v4 (the newest and the default), Eleven v4 Turbo (cheaper, near-instant) and Eleven v3, all ElevenLabs through fal — with their price per started 1,000 characters, and every preset voice with a line on how it sounds and the words it is found by (old, deep, warm, young, british, conversational…). search finds a voice by any of those. Signed in, it also lists the user's own voices (cloned from a recording, designed from a description, or added from ElevenLabs' Voice Library by ID — pass them to generate_speech as their custom:<id> key; a voice cloned or designed on MiniMax is read by MiniMax Speech 2.8 HD) and marks the voices they hearted with favorite: true; favorites_only narrows the list to those. Pass a model key and a voice id to generate_speech; voice_preview plays a sample; set_voice_favorite hearts one. Free.

ParameterTypeDefaultWhat it is
model"elevenV4" | "elevenV4Turbo" | "elevenV3"Only one model's voices.
searchstringWords to find a voice by: name, age, accent, character, use.
favorites_onlybooleanOnly the voices the user hearted (needs sign-in).

voice_preview

read-only

Hear a voice

A sample of one voice reading a fixed line — made once and kept, so it comes back at once for a voice anyone has heard before. Returns an MP3 link to play or pass on: public for a preset, signed for an hour for one of the user's own voices ("custom:<id>", whose sample is the line it read when it was made). Free: the script never changes and only the catalogue's voices are read.

ParameterTypeDefaultWhat it is
model *"elevenV4" | "elevenV4Turbo" | "elevenV3"
voice *string (≤ 120 chars)A voice id from list_voices — a preset, or "custom:<id>".

generate_speech

Generate speech (text to speech)

A script read aloud and saved to the user's gallery as an MP3 with a public link. Models (ElevenLabs, through fal): elevenV4 — Eleven v4, the newest and the default, the most natural read in 90+ languages; elevenV4Turbo — the same voices for less and nearly at once; elevenV3 — the previous model, for voices tuned on it. Voices: a preset from list_voices, or one of the user's own voices as "custom:<id>" (list_voices lists them when signed in) — a voice cloned or designed on MiniMax is read by MiniMax Speech 2.8 HD whatever model is named. Direction goes in square brackets in the text, in English whatever language the script is in: a delivery tag right before the words it colours ([warmly], [whispers], [excited], [sarcastic]) and a reaction where it happens ([laughs], [sighs], [gasps]) — about one per sentence or two; the brackets are never read out. Pronunciation goes in slashes as IPA. Optional stability (0 most expressive … 1 most even, default 0.5), similarity (v4 models only, default 0.75) and language (ISO 639-1; left out, it is read from the script). Brackets, stability and similarity are ElevenLabs' — a MiniMax voice takes only language, and its brackets are dropped. Up to 5,000 characters a call on v4 and Turbo, 6,000 on v3; longer scripts go in parts. Priced per started 1,000 characters at the model's rate (list_voices says it). Returns the file's links and the generation id — usable as reference audio for the video models that take a voice track, and filed into a Brain folder with save_output_to_brain.

ParameterTypeDefaultWhat it is
text *string (≤ 6000 chars)The script, in the language it should be read in.
voice *string (≤ 120 chars)A preset voice id from list_voices, or one of the user's own as "custom:<id>".
model"elevenV4" | "elevenV4Turbo" | "elevenV3""elevenV4"
stabilitynumber (0–1)0 is the most expressive read, 1 the most even. Default 0.5.
similaritynumber (0–1)How closely the read holds to the voice (v4 models only). Default 0.75.
language"hu" | "en" | "de" | "fr" | "es" | "it" | "pt" | "pl" | "ro" | "cs" | "sk" | "hr" | "nl" | "sv" | "tr" | "uk" | "ru" | "ja" | "ko" | "zh"Pins the language (ISO 639-1); left out, it is read from the script.
titlestring (≤ 120 chars)What the output is called in the gallery; the script's start otherwise.

set_voice_favorite

Heart a voice

Adds a voice to the user's favourites, or takes it off (favorite: false). Favourites lead the voice studio's lists and list_voices marks them (favorites_only narrows to them) — a way to keep the few voices a brand uses at hand. Takes a preset voice id or one of the user's own as "custom:<id>". Free.

ParameterTypeDefaultWhat it is
voice *string (≤ 160 chars)A preset voice id from list_voices, or "custom:<id>".
favoritebooleantrue

add_voice_by_id

Add an ElevenLabs voice by ID

Adds any voice from ElevenLabs' Voice Library (elevenlabs.io → Voice Library → a voice → its voice ID, twenty letters and digits) to the user's own voices. It reads one sample line first (on Eleven v4, or v3 when v4 does not take it) — a voice fal cannot read is never added — and from then on it is "custom:<id>" in list_voices, generate_speech, voice_preview and change_video_voice. 1 credit, refunded if the voice does not work.

ParameterTypeDefaultWhat it is
voice_id *stringThe ElevenLabs voice ID.
name *string (≤ 60 chars)What the voice is called in the studio.
language"hu" | "en" | "de" | "fr" | "es" | "it" | "pt" | "pl" | "ro" | "cs" | "sk" | "hr" | "nl" | "sv" | "tr" | "uk" | "ru" | "ja" | "ko" | "zh"The language the voice is for (ISO 639-1). The sample line is read in it where one is written (hu, en, de, fr, es, it), in English otherwise.

clone_voice

Clone a voice from a recording

Makes a voice of the user's own from one recording of a person speaking — their own voice, or one they have the speaker's permission for — and keeps it among their voices as "custom:<id>" for generate_speech, voice_preview and set_voice_favorite. ElevenLabs clones it (through fal), so it reads on Eleven v4, v4 Turbo and v3 and can re-voice a video with change_video_voice; should that be unavailable, MiniMax clones it instead and MiniMax Speech 2.8 HD reads it (not usable for change_video_voice). The recording: a sound file in the Brain (asset_id), a public https link (audio_url), or the bytes (audio_base64, mp3/wav/m4a), 10 seconds to 5 minutes of clear speech from one speaker — a minute is plenty — at most 20 MB. BEFORE calling, ask the user to confirm: "This is my own voice, or I have the speaker's explicit permission to clone it. I won't use it to impersonate anyone or to mislead." — and pass consent: true only when they have. 40 credits, refunded if the clone fails. Takes up to a minute.

ParameterTypeDefaultWhat it is
asset_ididA sound file in the Brain.
audio_urlurlA public https link to the recording.
audio_base64stringThe recording's bytes, base64 (a data: URL works too).
mime_typestringWhat audio_base64 is, e.g. audio/mpeg.
name *string (≤ 60 chars)What the voice is called in the studio.
language"hu" | "en" | "de" | "fr" | "es" | "it" | "pt" | "pl" | "ro" | "cs" | "sk" | "hr" | "nl" | "sv" | "tr" | "uk" | "ru" | "ja" | "ko" | "zh"The language the recording is spoken in (ISO 639-1).
consent *trueThe user confirmed it is their own voice or they have the speaker's explicit permission.

design_voice

Design a new voice from a description

Makes a brand-new voice — nobody's, made up from the words — from a description of how it should sound: age, gender, accent, character, pace, what it is for ("a deep, calm male narrator in his sixties, warm and unhurried, for documentaries"). MiniMax designs it and MiniMax Speech 2.8 HD reads it (Hungarian included); it is kept among the user's voices as "custom:<id>" for generate_speech, voice_preview and set_voice_favorite (not for change_video_voice, which takes ElevenLabs voices). It reads a first line — in its language where one is written (hu, en, de, fr, es, it), in English otherwise — returned as a sample link. 80 credits, refunded if it fails.

ParameterTypeDefaultWhat it is
description *string (≤ 1000 chars)How the voice should sound — the more specific, the closer.
name *string (≤ 60 chars)What the voice is called in the studio.
language"hu" | "en" | "de" | "fr" | "es" | "it" | "pt" | "pl" | "ro" | "cs" | "sk" | "hr" | "nl" | "sv" | "tr" | "uk" | "ru" | "ja" | "ko" | "zh"The language it will mostly speak (ISO 639-1).

change_video_voice

Change the voice in a video

Re-voices a video with ElevenLabs and puts the new voice back on the picture — the Higgsfield-style voice change. The speech is lifted out, ElevenLabs' voice changer reads it in the chosen voice (timing, breath and emotion kept, so it stays on the lips), and with keep_background (the default) the music and effects are mixed back under it. The source is one of: generation_id (a finished clip in the gallery — any generate_video output), asset_id (a video in the Brain) or video_url (a public https link). The voice is a preset from list_voices or one of the user's own ElevenLabs voices as "custom:<id>" (not one cloned or designed on MiniMax). Up to 5 minutes and 50 MB; every speaker gets the same new voice. 12 credits a minute (1 per started 5 seconds, at least 2), refunded if it fails. Returns at once with an id — the change runs in the background (a minute or two) and lands in the gallery as a new clip; get_voice_change follows it.

ParameterTypeDefaultWhat it is
generation_ididA finished video in the gallery.
asset_ididA video in the Brain.
video_urlurlA public https link to a video.
voice *string (≤ 120 chars)A preset voice id from list_voices, or "custom:<id>".
keep_backgroundbooleantrueKeep the music and effects under the new voice (default); false gives the voice alone.

get_voice_change

Follow a video voice change

Where a change_video_voice run stands — and each call moves it on: the step it is on, then the finished clip's gallery id and a signed link, or why it failed (credits are refunded then). A change takes a minute or two; there is no need to call this in a tight loop.

ParameterTypeDefaultWhat it is
id *idThe id change_video_voice returned.

transcribe_audio

Transcribe audio (speech to text)

A recording turned into text — a voice memo, an interview, a clip's soundtrack, a voiceover made with generate_speech — by the transcription model, and the transcript saved to the user's gallery. Point at a gallery output by generation_id (a tts output, or a clip), a public url, or send the bytes as audio_base64 (mp3, m4a, wav, webm, ogg, flac; up to 25 MB). 1 credit per started five minutes; when the recording's length is not given it is taken from its size at 128 kbit/s, so pass duration_seconds when it is known.

ParameterTypeDefaultWhat it is
generation_ididA gallery output holding the recording.
urlurlA public link to the recording.
audio_base64string (≤ 34000000 chars)The recording's bytes, base64 (or a data URL).
mime_typestringWhat audio_base64 is, e.g. audio/mpeg.
duration_secondsnumber (0–3600)The recording's length, for the price.

Start free with 10 credits

MCP access is included on every plan. Connect once; every tool runs as you.

Start creating free