Zark is a remote MCP server for creator-ready image and video work.
Use it from MCP-compatible agents to generate images, edit images, create videos, animate images, edit videos, import files from public URLs, list recent files, and fetch generated file previews.
https://api.zarklab.ai/v1/mcp
Authentication is via your Zark API key:
X-API-Key: <your-zark-api-key>Get access at zarklab.ai.
The repo also includes a small CLI for the Zark file/storage workflow.
git clone https://github.com/Zarklab-AI/zark-mcp.git
cd zark-mcp
npm link
export ZARK_API_KEY="<your-zark-api-key>"List recent files:
zark files list --limit 10Import a public image, video, or audio URL into Zark storage:
zark files import-url "https://example.com/product-photo.png" --filename product-photo.pngFetch a generated or imported file preview:
zark files get file-...Upload a local file:
zark files upload ./product-photo.pngWhen calling a lower-level development endpoint directly, pass explicit context:
zark files upload ./product-photo.png --workspace wks_... --user user_...List MCP tools:
zark mcp toolsList tools:
curl --request POST \
--url https://api.zarklab.ai/v1/mcp \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <your-zark-api-key>' \
--data '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}'Generate an image:
curl --request POST \
--url https://api.zarklab.ai/v1/mcp \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <your-zark-api-key>' \
--data '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "generate_image",
"arguments": {
"prompt": "Create a cinematic poster image for a creator coffee brand, warm studio lighting, premium social campaign look.",
"aspectRatio": "4:5",
"quality": "High"
}
}
}'Fetch a generated file preview:
curl --request POST \
--url https://api.zarklab.ai/v1/mcp \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <your-zark-api-key>' \
--data '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": {
"name": "get_file",
"arguments": {
"fileId": "file-..."
}
}
}'Import a public file URL:
curl --request POST \
--url https://api.zarklab.ai/v1/mcp \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <your-zark-api-key>' \
--data '{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "import_file_from_url",
"arguments": {
"url": "https://example.com/product-photo.png",
"filename": "product-photo.png"
}
}
}'| Tool | What it does |
|---|---|
generate_image |
Create a new image from a prompt. Supports aspect ratio, quality, model choice, and batch count. |
edit_image |
Edit, reframe, upscale, resize, remove background, remove objects, or remove text from source images. |
generate_video |
Create a new video from a prompt with model, aspect ratio, duration, resolution, and sound controls. |
animate_image |
Turn one or more source images into a video. |
edit_video |
Edit, reference-edit, extend, upscale, lip-sync, add audio, or motion-transfer a source video. |
get_file |
Fetch metadata plus preview/download URLs for generated or referenced Zark files. |
get_run_status |
Poll status for a long-running job started with wait: false. |
get_run_events |
Fetch timeline events for a long-running job. |
cancel_run |
Request cancellation for an active creative run. |
list_files |
List recent uploaded, generated, or imported files for the API key workspace. |
import_file_from_url |
Import a public image, video, or audio URL and return a reusable Zark file ID. |
Image generation often finishes inside a normal MCP response. Video can take longer. For long jobs, pass wait: false to a media tool and poll the returned run_id.
{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "generate_video",
"arguments": {
"runId": "client-run-001",
"wait": false,
"prompt": "Create a vertical launch video for a creator coffee brand.",
"aspectRatio": "9:16",
"durationSeconds": 6
}
}
}Poll status:
{
"jsonrpc": "2.0",
"id": 6,
"method": "tools/call",
"params": {
"name": "get_run_status",
"arguments": {
"runId": "client-run-001"
}
}
}Fetch events:
{
"jsonrpc": "2.0",
"id": 7,
"method": "tools/call",
"params": {
"name": "get_run_events",
"arguments": {
"runId": "client-run-001",
"sinceEventId": 0,
"limit": 50
}
}
}- Smithery: smithery.ai/servers/zark/zarklab
- Official MCP Registry:
io.github.Zarklab-AI/zark-media - Documentation: docs.zarklab.ai