Connect ElarisLabs Creative Studio to Claude, Cursor, and other MCP clients. Generate images, video, audio, brand packs, and composer edits from any agent that speaks MCP — credits bill to the brand your API key is bound to.
The Model Context Protocol (MCP) is an open standard for connecting AI assistants to external tools and data. Instead of copy-pasting API docs into a chat, the client discovers callable tools from a server and the model invokes them when your prompt needs real actions — generate an image, list projects, resize a brand pack, etc.
The agent sees structured tools with schemas. It picks the right one and passes arguments — no manual API calls.
ElarisLabs runs a hosted MCP endpoint. No local install required — just paste a JSON config and your API key.
Every key is bound to one brand. Generation tools deduct credits from that brand's balance; discovery tools are free.
elx_live_…) — shown once.
Authorization: Bearer … header.
list_models,
list_brands) to confirm the connection before running paid generation.Keys are created in your ElarisLabs profile under API keys / MCP. Open your profile, choose a brand, set an expiry (max 24 weeks) and a spend cap (max 2000 credits), then copy the key — it is shown only once.
The key acts on one brand. All spend is billed to that brand's credit balance.
Required expiry up to 24 weeks. Per-key spend cap up to 2000 credits, editable anytime.
Rotate to replace a key, or revoke to disable it instantly. Manage all keys from settings.
Keys ship with studio:read and studio:generate — enough to list projects and run generation tools.
https://studio.elarislabs.ai/api/mcp.
Authenticate with Authorization: Bearer elx_live_….
The server uses Streamable HTTP (stateless) — compatible with Claude Desktop, Cursor, and
mcp-remote for older clients.elx_live_… like a password.
Never commit it to git, paste it in public channels, or share it in screenshots.
Use per-developer keys with low spend caps when possible.
When an MCP client connects, it calls tools/list to discover
available tools, then tools/call when the model decides to act.
ElarisLabs validates your bearer token, resolves the bound brand, and runs the tool —
either a free read (list projects) or a billed generation (image, video, brand pack).
| Aspect | Details |
|---|---|
| Protocol | MCP over Streamable HTTP at /api/mcp |
| Auth | Authorization: Bearer elx_live_… header on every request |
| Session | Stateless — no persistent connection to manage |
| Timeouts | Video and brand-pack jobs may take 30–90s; clients should allow long tool calls |
| Errors | Invalid, expired, or revoked keys return auth errors; insufficient credits return a billing error |
Works with Claude Desktop on macOS and Windows. Requires a recent version with remote MCP (URL) support.
claude_desktop_config.json.~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.json{
"mcpServers": {
"elarislabs": {
"url": "https://studio.elarislabs.ai/api/mcp",
"headers": {
"Authorization": "Bearer elx_live_YOUR_KEY_HERE"
}
}
}
}
If your Claude version does not support remote url servers, use the mcp-remote npm package as a local bridge:
{
"mcpServers": {
"elarislabs": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://studio.elarislabs.ai/api/mcp",
"--header",
"Authorization: Bearer elx_live_YOUR_KEY_HERE"
]
}
}
}
Cursor has first-class MCP support. Use Agent mode so the model can call tools autonomously.
| Scope | File | When to use |
|---|---|---|
| Global | ~/.cursor/mcp.json | Available in every project on your machine |
| Project | .cursor/mcp.json in repo root | Share with teammates via git (use env vars for secrets — see below) |
{
"mcpServers": {
"elarislabs": {
"url": "https://studio.elarislabs.ai/api/mcp",
"headers": {
"Authorization": "Bearer elx_live_YOUR_KEY_HERE"
}
}
}
}
Cursor supports environment variable interpolation in mcp.json.
Set ELARIS_MCP_KEY in your shell or .env, then reference it:
{
"mcpServers": {
"elarislabs": {
"url": "https://studio.elarislabs.ai/api/mcp",
"headers": {
"Authorization": "Bearer ${env:ELARIS_MCP_KEY}"
}
}
}
}
Any client that supports remote MCP (URL + headers) can use the same config block.
The JSON shape is always mcpServers → { name → { url, headers } }.
Add to ~/.claude/settings.json or project .mcp.json — same structure as Claude Desktop. Run claude mcp list to verify.
Open Windsurf Settings → Cascade → MCP and add a custom server, or edit ~/.codeium/windsurf/mcp_config.json with the same JSON block.
In VS Code 1.99+, add MCP servers via Command Palette → "MCP: Add Server" or edit .vscode/mcp.json in your workspace. Use the URL transport with the Authorization header.
Clients that only support local stdio processes can use the mcp-remote bridge (same as Claude Option B above).
npx -y mcp-remote https://studio.elarislabs.ai/api/mcp \ --header "Authorization: Bearer elx_live_YOUR_KEY_HERE"
MCP clients can connect to many servers at once. ElarisLabs handles
creative generation; other servers handle their own domains (databases, docs, Google Workspace, etc.).
Add each server as a separate entry under mcpServers.
{
"mcpServers": {
"elarislabs": {
"url": "https://studio.elarislabs.ai/api/mcp",
"headers": {
"Authorization": "Bearer elx_live_YOUR_KEY_HERE"
}
},
"another-server": {
"command": "npx",
"args": ["-y", "@example/some-mcp-server"],
"env": {
"API_KEY": "your-other-key"
}
}
}
}
| Capability | ElarisLabs MCP | Needs a different server |
|---|---|---|
| Image / video / audio generation | Yes | — |
| Brand pack resize & composer edits | Yes | — |
| Studio projects & templates | Yes | — |
| Google Slides / Docs / Sheets | — | Yes — use a Google Workspace MCP server (community or official) alongside ElarisLabs |
| GitHub, Linear, Notion, etc. | — | Yes — each has its own MCP server |
| Database queries (Supabase, Postgres) | — | Yes — use the provider's MCP server |
Browse community servers at modelcontextprotocol/servers or your client's MCP directory (Cursor Settings → MCP → Add).
Once connected, talk naturally. The agent maps your intent to tools.
"What brands and image models can this key access? List the top 5 image models."
"Generate a square product shot of a matte black sneaker on white marble using flux-2-flash. 2K resolution."
"Take the image you just generated and make a 6-second vertical video — slow camera push-in, cinematic lighting."
"List brand-pack sizes, then resize that hero image into Instagram feed, story, and 300×250 display. Return the zip."
"Add the text 'SUMMER DROP' in white at the bottom of the image, then remove the background."
"Generate 3 lifestyle variants of our product, stitch them into a hyperlapse at 24fps, then generate a voiceover saying 'Built for the city.'"
Slack is not an MCP client. Instead, the ElarisLabs Slack app runs the same tools in the background and delivers finished creative back to the thread. It can ask a clarifying question and resume when you reply.
@ElarisLabs make a square product shot of our new sneaker on a marble pedestal, then build a brand pack for Instagram feed and story sizes.
docs/slack-app-manifest.yaml in the ElarisLabs repo, then set
SLACK_BOT_TOKEN and SLACK_SIGNING_SECRET
and point the event subscription URL at /api/webhooks/slack/events.Discovery tools are free; generation and editing tools consume credits from the key's brand.
| Tool | What it does | Key parameters | |
|---|---|---|---|
list_brands |
Brand this key is bound to | — | Free |
list_workspaces |
Workspace for this key | — | Free |
list_projects |
Creative Studio projects | — | Free |
get_project |
Single project + flow graph | projectId |
Free |
list_models |
Image, video, audio models | kind (optional filter) |
Free |
list_templates |
Published Studio templates | — | Free |
generate_image |
Text-to-image or edit with references | prompt, model, referenceImages, resolution |
Credits |
generate_audio |
Text-to-speech (ElevenLabs / Gemini) | text, model, voice, language |
Credits |
generate_video |
Text-to-video or image-to-video | prompt, imageUrl, durationSeconds |
Credits |
regenerate_video |
Re-run video with optional variation | prompt, variationHint |
Credits |
create_hyperlapse |
Stitch images into a timelapse (ffmpeg) | images[], fps, width, height |
Credits |
composer_edit |
add_text / inpaint / erase / remove_background | operation, imageUrl, … |
Credits |
brand_pack_list_sizes |
Available output sizes | — | Free |
brand_pack_resize |
Resize into sizes, returns a zip | sourceImage, sizeKeys |
Credits |
model: "auto" (default) to let the router pick,
or a specific id from list_models — e.g. "flux-2-flash" for fast images.
Check that your JSON is valid (no trailing commas). Confirm the URL ends in
/api/mcp with no extra slash. Verify the bearer token starts with
elx_live_ and has not been revoked. Restart Cursor after editing
mcp.json.
Make sure you fully quit Claude (macOS: Cmd+Q, not just close the window). If using the
URL transport and it still fails, switch to the mcp-remote stdio bridge.
Check Claude's developer logs for connection errors.
Create a new key in your profile and update the config. Keys have a required expiry (max 24 weeks). Revoked keys stop working immediately.
Top up the brand's credit balance in Studio, or raise the per-key spend cap in profile settings
(max 2000 credits per key). Free tools like list_models still work.
In Cursor, switch to Agent mode (not Ask). Explicitly ask it to use a tool: "Call generate_image with flux-2-flash …". Confirm the MCP server toggle is on in Settings → MCP.
These jobs can take 30–90 seconds. If your client has a short tool timeout, retry or ask for
a shorter durationSeconds on video. Brand packs with many sizes take longer.
Not directly — ElarisLabs MCP is for creative generation (images, video, audio, brand packs). To edit Google Slides, install a separate Google Workspace MCP server and connect both. Then ask the agent to generate assets with ElarisLabs and place them with the Google server.
With a valid key, the MCP initialize handshake should return a 200:
curl -s -X POST "https://studio.elarislabs.ai/api/mcp" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer elx_live_YOUR_KEY_HERE" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'