https://mcp.contenthero.ai and by the @contenthero/mcp npm package. A write tool changes your account; a read tool does not.
generate_image
write
Generate one or more images from a text prompt (optionally image-to-image with reference images). Waits for the result and returns the image URLs. Optionally pass projectId to place the generated image onto that project in the same call, controlled by an optional placement: a VIDEO timeline places a clip on a track, a CANVAS design places a layer on a slide (defaulting to the slide the user is focused on). Omit projectId to save a standalone library output. The result LINKS each output so the user sees it inline; to SEE it yourself (judge a face, check legibility, pick between variations) call get_media with the outputId. SPENDS CREDITS: pass getCost to preview the price first, which runs nothing and charges nothing.
string
required
The model id. list_models (contentType image) names every image model and what each is for; get_model gives one model’s options and prompt guide.
string
e.g. 16:9, 1:1, 9:16. Validated per model.
string
Optional avatar id from list_avatars. File the result onto that avatar as a new LOOK (one appearance of a reusable character: same person, different outfit, setting or framing) instead of saving a standalone library output. Combine with a referenceImage of the avatar to keep the subject on-model.
boolean
Return the credit cost estimate instead of generating (nothing runs, nothing is charged).
integer
Number of variations (1-4).
object or object
Where the asset lands, interpreted against the project’s type. VIDEO TIMELINE: append to the end, at a time, at the playhead, replacing an existing clip, or filling a time range (omitted places it at the playhead when known, else appends). CANVAS DESIGN: a layer on a slide (slideId / slideIndex, default the focused slide; fit contain|cover|none; a nine-point anchor; and design-pixel x/y/width/height).
number
The current playhead frame, for playhead-relative timeline placement.
string
The project to place the result on. Omit for a standalone library output. The server interprets placement against the project’s type (video timeline or canvas design).
string
Describe the image to generate. Required for most models; optional for a few that can run from references alone.
string[]
References for image-to-image / editing. Each may be a URL or a previous output id (e.g. “<id>” or “<id>-2”) to chain from an earlier generation.
string
e.g. 1K, 2K, 4K. get_model lists the resolutions a model takes; validated per model.
generate_video
write
Generate a video from a text prompt (optionally from a start/end frame or reference images/videos/audio). Returns at once with an outputId; get_generation_status waits for the render. Some models choose an input mode by which references you pass (a startFrame with an optional endFrame, or references alone); get_model describes each model’s modes. Optionally pass projectId to place the generated video onto that project in the same call, controlled by an optional placement: a VIDEO timeline places a clip on a track, a CANVAS design places a layer on a slide (defaulting to the slide the user is focused on). Omit projectId to save a standalone library output. The result LINKS each output so the user sees it inline; to SEE it yourself (judge a face, check legibility, pick between variations) call get_media with the outputId. SPENDS CREDITS: pass getCost to preview the price first, which runs nothing and charges nothing.
string
required
The model id. list_models (contentType video) names every video model and what each is for; get_model gives one model’s options, input modes and prompt guide.
string
e.g. 16:9, 9:16. Validated per model.
boolean
Generate audio (only for models that support it).
number
Clip length in seconds. Model-dependent; some models lock it.
object[]
Deprecated alias for
klingElements, accepted for one release window.string
Last frame: an image URL or a previous output id.
boolean
Return the credit cost estimate instead of generating (nothing runs, nothing is charged).
boolean
Video edit only, on models that offer it: keep the input video’s full length instead of a set duration. Charged for that length.
object[]
Kling elements: each is a saved Kling element ({ klingElementId }) or an inline group ({ name, description, images }), addressable in the prompt as @name. Only for models that take them (get_model promptReferences, named_tag scheme). Requires a startFrame.
boolean
Enable multi-shot mode (one longer sequence of several shots) on a model that offers it; get_model says which do. On a model that takes per-shot prompts, pass
shots instead, which turns multi-shot on.string
What to avoid (models that support it).
integer
Number of variations (1-4).
object or object
Where the asset lands, interpreted against the project’s type. VIDEO TIMELINE: append to the end, at a time, at the playhead, replacing an existing clip, or filling a time range (omitted places it at the playhead when known, else appends). CANVAS DESIGN: a layer on a slide (slideId / slideIndex, default the focused slide; fit contain|cover|none; a nine-point anchor; and design-pixel x/y/width/height).
number
The current playhead frame, for playhead-relative timeline placement.
string
The project to place the result on. Omit for a standalone library output. The server interprets placement against the project’s type (video timeline or canvas design).
string
Describe the video to generate. Required for most models; optional for some (e.g. motion-control), where it is an auxiliary motion hint.
string[]
Reference audio (audio-driven video): each a URL or a previous output id. Only used by models that accept audio references; get_model says which do.
string[]
Reference images: each a URL or a previous output id to chain.
string[]
Reference videos: each a URL or a previous output id to chain.
string
e.g. 720p, 1080p, 4K. Model-dependent.
object[]
Multi-shot mode with per-shot prompts, on a model that takes them (get_model gives its shot limits): an ordered list of shots, each with its own prompt and duration in seconds. When provided, the video runs in multi-shot mode; only startFrame attaches as an image (it becomes the first frame of shot 1), all other shots are text-only.
string
First frame: an image URL or a previous output id (e.g. “<id>-2”) to chain (e.g. animate an image you just generated).
generate_audio
write
Generate audio: speech (TTS), music, or a sound effect. Returns the audio URL directly (synchronous, no polling). Optionally pass projectId to place the generated audio onto that editor project’s timeline in the same call, controlled by an optional placement; omit projectId to save a standalone library output. The result LINKS each output so the user sees it inline; to SEE it yourself (judge a face, check legibility, pick between variations) call get_media with the outputId. SPENDS CREDITS: pass getCost to preview the price first, which runs nothing and charges nothing.
string
required
The model id. list_models (contentType audio) names every audio model and what each is for; get_model gives one model’s inputs.
number
For music / sfx: length in seconds.
boolean
Return the credit cost estimate instead of generating (nothing runs, nothing is charged).
object or object
Where the asset lands, interpreted against the project’s type. VIDEO TIMELINE: append to the end, at a time, at the playhead, replacing an existing clip, or filling a time range (omitted places it at the playhead when known, else appends). CANVAS DESIGN: a layer on a slide (slideId / slideIndex, default the focused slide; fit contain|cover|none; a nine-point anchor; and design-pixel x/y/width/height).
number
The current playhead frame, for playhead-relative timeline placement.
string
The project to place the result on. Omit for a standalone library output. The server interprets placement against the project’s type (video timeline or canvas design).
string
For music / sfx: what to generate.
number
For sfx: how literally to follow the prompt (0 to 1).
string
For a speech model: the words to speak. Read the model’s promptGuide with get_model before writing directions into it.
string
For a speech model: the voice id (list_voices names them).
string
For TTS: human-readable voice name (display only).
generate_board
write
Generate a Reference Board: a dense multi-panel reference sheet (3:4, 4K) built from a source image and/or a written description, used to keep a subject on-model across later generations (feed the board back in as a referenceImage). Provide referenceImages and/or a prompt (at least one is required). Waits up to ~40s; boards render slowly (minutes), so it usually returns an outputId to poll with get_generation_status. SPENDS CREDITS: pass getCost to preview the price first, which runs nothing and charges nothing.
string
required
One of the board types listed by get_model(‘reference-boards’).
string
Optional avatar id from list_avatars. Associate the board with that avatar, so a character sheet built for an avatar stays filed against it.
string
Optional name for the board.
boolean
Return the credit cost estimate instead of generating (nothing runs, nothing is charged).
integer
Number of board variations (1-4). Defaults to 1.
string
Describe the subject or how you will use the board. Required when no referenceImages are given (text-only boards); otherwise optional context (the source image leads).
string[]
Source images the board is built from: each a URL or a previous output id (e.g. “<id>” or “<id>-2”) to chain from an earlier generation.
generate_lip_sync
write
Animate a portrait image so the subject speaks. Provide imageUrl (the face) plus a voice source: either audioUrl (an existing speech clip) or script + voiceId (we synthesize the speech). Optional motionPrompt nudges expression/motion. Returns at once with an outputId; get_generation_status waits for the render. SPENDS CREDITS: pass getCost to preview the price first, which runs nothing and charges nothing.
string
required
The portrait to animate (the speaking subject): an image URL or a previous output id (e.g. “<id>-1”) to chain.
string
required
The model id: a lip-sync model. list_models (contentType video) names them; get_model gives one model’s resolutions and inputs.
number
Length of audioUrl in seconds (audio mode only; improves cost accuracy).
string
An existing speech clip: an audio URL or a previous output id. Use this OR script + voiceId.
boolean
Return the credit cost estimate instead of generating (nothing runs, nothing is charged).
string
Optional motion / expression hint for the animation.
string
e.g. 480p, 720p, 1080p. Model-dependent.
string
Text for the subject to speak. Requires voiceId; synthesized to speech. Use this OR audioUrl. Before writing directions into the script, read the speech model’s promptGuide with get_model.
string
The voice to speak the script (list_voices names them; required with script).
string
Human-readable voice name (display only).
upscale
write
Upscale an existing image or video to a higher resolution. Provide the source media URL and a model-supported factor. Waits for the result; if the job is still running it returns an outputId to poll with get_generation_status. SPENDS CREDITS: pass getCost to preview the price first, which runs nothing and charges nothing.
string
required
Upscale factor, e.g. 2x, 4x. Model-dependent; validated per model.
string
required
The model id: an upscaler. list_models names them, each one’s contentType saying whether it takes an image or a video; get_model gives its factors.
string
required
The source image (image upscalers) or video (video upscalers): a URL or a previous output id (e.g. “<id>-1”) to upscale an earlier generation.
number
Required for video upscalers: the source video length in seconds (used for pricing).
boolean
Return the credit cost estimate instead of upscaling (nothing runs, nothing is charged).
edit_audio
write
Transform existing audio with an audio-processing model, in one of TWO shapes. FILE mode: pass sourceUrl to process a standalone file into a new library asset. Voice isolation removes background noise and music and returns the processed URL directly; audio enhancement levels loudness and cleans up background noise, is asynchronous, and returns an outputId to poll with get_generation_status. Optionally pass projectId to place the result onto that editor project’s timeline in the same call, controlled by an optional placement. IN-PLACE mode: pass projectId with clipIds (or enhanceClips for the whole timeline) to enhance the audio OF EXISTING CLIPS instead of producing a new asset, which is how you clean up a recording already on a timeline. In-place returns a LIST of jobs, one per SOURCE, because the vendor estimates a noise profile per production: one recording’s clips are concatenated and enhanced together so the level and noise floor stay consistent across cuts, while separate recordings stay separate jobs. Poll every job’s outputId. The enhanced audio is applied to the clips automatically when each job lands: an audio clip has its source swapped, and a video clip is muted with the enhanced audio placed on its own clip. Silenced clips are skipped. In-place mode is enhancement only and needs no sourceUrl. SPENDS CREDITS: pass getCost to preview the price first, which runs nothing and charges nothing.
string[]
IN-PLACE mode: enhance the audio of these clips on projectId. Omit with enhanceClips:true to enhance every audible clip on the timeline.
number
Source audio length in seconds. Required for getCost, and for enhancement pricing when the source is not a stored ContentHero asset.
boolean
IN-PLACE mode for the whole timeline, without naming clips. Implied when clipIds is given.
boolean
Return the credit cost estimate instead of running (nothing runs, nothing is charged).
string
Instead of operation: an audio model that takes one audio file and returns audio (it resolves to the operation it performs). list_models (contentType audio) names them; get_model gives one model’s inputs and whether it finishes at once or is polled with get_generation_status.
`isolate` \| `enhance`
isolate: voice isolation. enhance: loudness leveling and noise cleanup. The server picks the model that performs it. Omitted: enhance in in-place mode, else isolate.
object or object
Where the clip lands: append to the end, at a time, at the playhead, replacing an existing clip, or filling a time range. Omitted places it at the playhead when known, else appends.
number
The current playhead frame, for playhead-relative placement.
string
The editor project: where to PLACE the result in file mode, or which timeline to enhance in in-place mode. Omit for a standalone library output.
string
FILE mode: the audio file to process, as a URL or a previous output id. Omit in in-place mode, where the sources come from the clips.
transcribe
write
Transcribe an audio URL to text (speech-to-text). Returns the transcript directly (synchronous, no polling). SPENDS CREDITS, metered per minute of audio, and the cost cannot be previewed: the result reports the credits it cost after the fact. Zero only when the account runs on its own ElevenLabs key.
string
required
Public URL of the audio file to transcribe.
boolean
Label each speaker (diarization).
string
ISO language hint, e.g. “en”. Auto-detected when omitted.
get_generation_status
read
Check one or more in-progress generations (outputIds from generate_image / generate_video / upscale / generate_lip_sync / generate_board) and get their final URLs. BY DEFAULT THIS BLOCKS until they finish, up to ~40s per call, because that is almost always what you want after starting a render; if one is still running it comes back with the current status and a poll_after_seconds hint, so call again. Pass wait:false for an instant snapshot with no blocking. Accepts 1-8 outputIds in one call.
string[]
required
1-8 outputIds to check (each from a prior generate_* call).
boolean
Block until terminal (up to ~40s), the default. false = an instant snapshot.
list_models
read
List the generation models available to this account (the discovery catalog): which models exist, their content type and operation, and a compact capability summary. Use this to pick a model, then call get_model for its full request shape before generating. Source of truth for valid model ids; do not hardcode them.
`image` \| `video` \| `audio`
Filter to one content type.
get_model
read
Get one model’s full request shape by id: the exact parameters it accepts (input types, prompt mode and char cap, duration range, resolutions, aspect ratios, max references, generation count, audio, features). Ground a generation against this instead of guessing the parameters, then preview cost with the matching generate tool’s getCost option before running it.
string
required
The model id, as list_models names it.