clipform_upload_node_media
InactiveTool of io.github.Clipform/mcp-server
Upload media for one or more nodes. Pass one item or many (max 10). Multiple items upload sequentially. When a public URL is provided, the media is fetched and stored automatically. Only works on node types that support media (choice, open, scale, binary, button). For video: ingested via Mux. For image: stored in Supabase. Each upload lands in your workspace media library and is then attached to the node (so it is reusable across nodes), matching the builder. Captions from clipform_generate_tts enable per-word highlighting in the viewer. When attaching renders from clipform_render_composition or clipform_generate_video, set fit_media: true on each item.
Parameters schema
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"form_id",
"items"
],
"properties": {
"items": {
"type": "array",
"items": {
"type": "object",
"required": [
"node_id",
"media_type"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"description": "Public URL of the media file. When provided, the server fetches and stores it directly."
},
"node_id": {
"type": "string",
"description": "The node ID"
},
"captions": {
"type": "array",
"items": {
"type": "object",
"required": [
"start",
"end",
"text"
],
"properties": {
"end": {
"type": "number",
"description": "Segment end time in seconds"
},
"text": {
"type": "string",
"description": "Full segment text"
},
"start": {
"type": "number",
"description": "Segment start time in seconds"
},
"words": {
"type": "array",
"items": {
"type": "object",
"required": [
"word",
"start",
"end"
],
"properties": {
"end": {
"type": "number"
},
"word": {
"type": "string"
},
"start": {
"type": "number"
}
},
"additionalProperties": false
},
"description": "Per-word timestamps within the segment"
}
},
"additionalProperties": false
},
"description": "Word-level captions from clipform_generate_tts. Required for per-word highlighting - pass the full objects including 'words' arrays."
},
"fit_media": {
"type": "boolean",
"description": "Show the whole frame (contain) instead of cover-cropping. ALWAYS set true when attaching renders from clipform_render_composition or clipform_generate_video - they are composed 9:16 frames that must never be cropped. Leave unset for user-supplied media (arbitrary aspect ratios want the cover default)."
},
"media_type": {
"enum": [
"video",
"still"
],
"type": "string",
"description": "Type of media"
},
"media_source": {
"enum": [
"uploaded",
"recorded"
],
"type": "string",
"default": "uploaded",
"description": "How the media was created"
},
"show_captions": {
"type": "boolean",
"description": "Display captions/subtitles on the node. Defaults to on; pass false to hide them."
}
},
"additionalProperties": false
},
"maxItems": 10,
"minItems": 1,
"description": "One or more media items to upload"
},
"form_id": {
"type": "string",
"format": "uuid",
"description": "The form UUID (returned by clipform_create_form, not the short share_id from the URL)"
}
},
"additionalProperties": false
}No endpoints wrapped at confidence ≥ 0.70.
Parent server
io.github.Clipform/mcp-server
https://github.com/clipform/mcp-server
1/7 registries