Every modern MCP client now speaks Streamable HTTP + OAuth — paste the URL, approve in your browser, done. No API key, no install, no Node.js. Desktop clients still ship a local npx mode as a fallback for offline use.
Connect from your client
Pick your MCP-aware editor or AI client. Each tab has the exact JSON snippet to paste and one-line instructions.
Connect directly using our hosted MCP endpoint — no npm install, no Node.js, no API key to copy. The server implements MCP 2025-03-26 Streamable HTTP with OAuth 2.0 authorization: paste the URL, your client opens a browser tab, you log in once, done.
Claude.ai
Settings → Integrations → Add custom integration.
- Paste
https://mcp.artemotion.ai/api/mcpas the Integration URL — nothing else. - Claude.ai detects the OAuth server automatically and opens a browser tab.
- Log in with your ArtEmotion account and click Approve.
- Claude will now call ArtEmotion tools automatically whenever you ask it to generate images, videos, audio, or 3D assets.
Cursor (remote)
Add to .cursor/mcp.json — just the URL, no headers:
// .cursor/mcp.json — no API key needed, OAuth handles auth
{
"mcpServers": {
"artemotion": {
"url": "https://mcp.artemotion.ai/api/mcp"
}
}
}Cursor opens a browser tab on first use. After you authorize, the token is stored automatically.
Prefer a static API key instead?
// .cursor/mcp.json — static API key (alternative)
{
"mcpServers": {
"artemotion": {
"url": "https://mcp.artemotion.ai/api/mcp",
"headers": { "Authorization": "Bearer ae_live_…" }
}
}
}Windsurf
// ~/.codeium/windsurf/mcp_config.json — no API key needed
{
"mcpServers": {
"artemotion": {
"serverUrl": "https://mcp.artemotion.ai/api/mcp"
}
}
}Windsurf opens the OAuth consent screen on first connect. Approve once and you're set.
Prefer a static API key instead?
// ~/.codeium/windsurf/mcp_config.json — static API key (alternative)
{
"mcpServers": {
"artemotion": {
"serverUrl": "https://mcp.artemotion.ai/api/mcp",
"headers": { "Authorization": "Bearer ae_live_…" }
}
}
}Any HTTP-capable MCP client
Point the client at https://mcp.artemotion.ai/api/mcp. If it supports OAuth 2.0 discovery, it will handle auth automatically via /.well-known/oauth-authorization-server. Clients that don't support OAuth can still connect with a static Authorization: Bearer ae_live_… header using an API key from Settings → API Keys.
NEW What's new in 0.6
upload_image + generate_with_lora close the image-input loop. Now you can attach a reference photo or LoRA-style any generation from within the chat.list_community_gallery / share_to_gallery / rate_model — the model can now browse, publish, and curate the community gallery.save_pipeline + run_pipeline close the loop. Scaffold a plan, save it, run it server-side — the runner walks every node, deducts credits per-step, and returns all output URLs.create_folder / delete_folder / move_generation / delete_generation. The LLM can now curate, not just browse.list_jobs surfaces every queued / processing job in the last 30 min. cancel_job stops a runaway generation.get_usage totals credits + jobs over 1h / 24h / 7d / 30d, broken out by output kind and top-spending models.save_to_library: true on combine_videos and start_edit — the mp4 gets hosted and returned as a URL instead of raw bytes.start_generation now accepts max_credits (reject if estimate exceeds it) and webhook_url (skip polling, FAL pings you on completion).enhance_prompt takes an optional image_url — the LLM looks at the image before rewriting the prompt, so “make this image's prompt more cinematic” just works.0.3 Earlier — discover & recommend
MODEL_CAPS — not just try-on / vision. Filter by kind, search by name ("nano banana", "flux"), sort by price.base_credits estimate. Ask for the cheapest, priciest, best, popular or newest with one parameter.recommend_model hands Claude/Gemini a candidate shortlist and gets back the best pick + a 1-sentence reason + 4 alternatives.scaffold_pipeline turns "30-second YouTube intro about coffee" into a structured plan — N scene prompts, music description, voice script.start_generation runs any model in the catalog — t2i, i2i, t2v, i2v, v2v, TTS, music, 3D. Same job/poll/result flow as the existing tools.combine_videos concatenates clips with optional music + voice mixed in, producing a single faststart mp4.Prerequisites
- Node.js 20 or newer — required by the MCP server. Already installed on most dev machines.
- An ArtEmotion API key — generate one at Settings → API keys. Keys look like
ae_live_…. - Credits on your account — each generation deducts from your balance, same as the REST API.
list_*,recommend_model, andscaffold_pipelinedon't cost credits.
Available tools
The model sees these 48 tools. Tools are grouped by intent — Discover, Generate, Pipeline, Mix, Account & Library, Utility, LoRA & advanced, Job recovery, Studio tools, and Community & ratings.
Discover
list_modelsGET /api/v1/models?catalog=fullkind, search. Sorts: cheapest / priciest / best / popular / newest. Each entry includes base_credits.recommend_modelPOST /api/v1/recommendprefer: best | cheapest | popular | newest. An LLM picks one model with a reason + 4 alternatives.list_tryon_modelsGET /api/v1/models (legacy)list_vision_modelsGET /api/v1/visionGenerate
start_generationPOST /api/v1/generateprompt, image_url, video_url, aspect_ratio, duration, num_images, …) + an extra escape hatch.start_tryonPOST /api/v1/tryonstart_visionPOST /api/v1/visionget_jobGET /api/v1/jobs/:idwait_for_jobget_jobPipeline + Mix
scaffold_pipelinePOST /api/v1/scaffoldstart_generation.save_pipelinePOST /api/v1/pipelinesid for idempotent overwrite. Pairs with scaffold_pipeline: scaffold → save → run.run_pipelinePOST /api/v1/pipelines/runwait: false for fire-and-forget.combine_videosPOST /api/v1/mergemusic_url (mixed at 30 % volume) + voice_url. Output: single H.264 + AAC mp4 with faststart. Pass save_to_library to host + return a URL.Account & library
get_creditsGET /api/v1/creditsestimate_costPOST /api/v1/estimateget_usageGET /api/v1/usagelist_generationsGET /api/v1/generationslist_libraryGET /api/v1/libraryfolder_id.create_folderPOST /api/v1/foldersmove_generation to organise existing assets.delete_folderDELETE /api/v1/foldersmove_generationPOST /api/v1/library/movefolder_id: null.delete_generationPOST /api/v1/library/deletelist_pipelinesGET /api/v1/pipelinesid is passed.list_jobsGET /api/v1/jobscancel_jobDELETE /api/v1/jobswhoamiGET /api/v1/credits + GET /api/v1/usageget_rate_limitsdescribe_then_generatestart_vision + start_generationUtility
enhance_promptPOST /api/v1/enhanceimage_url for vision-grounded enhancement.generate_and_waitstart_generation + wait_for_jobbatch_generatestart_generationcompare_modelslist_modelsLoRA & advanced
upload_imagePOST /api/v1/uploadimage_url, reference_image_url, etc. Accepts data URI or raw base64. 30 uploads/min limit.search_lorasGET /api/lorasloras:[{path}]), base model, download/like counts.generate_with_lorasearch_loras + start_generationlora_scale to control influence (0.5–1.2).get_model_cardGET /api/v1/modelsJob recovery
reuse_generationGET /api/v1/generations/:id + POST /api/v1/generateretry_failed_jobGET /api/v1/generations/:id + POST /api/v1/generatecancel_all_running_jobsGET /api/v1/jobs + POST /api/v1/jobsStudio tools
object_eraserPOST /api/v1/generate (bria/eraser model)remove_backgroundPOST /api/v1/generate (bria/rmbg)quality_boostPOST /api/v1/generate (clarity upscaler)photo_restorePOST /api/v1/generate (gfpgan/BSRGAN)professional_headshotPOST /api/v1/generate (headshot model)start_editPOST /api/v1/editCommunity & ratings
list_community_galleryGET /api/v1/community/galleryshare_to_galleryPOST /api/v1/community/galleryrate_modelPOST /api/v1/ratinglist_models results.Example responses
// list_models { kind: "image", sort: "cheapest", search: "nano-banana" }
{
"count": 3,
"total_catalog": 365,
"sort": "cheapest",
"models": [
{ "id": "fal-ai/nano-banana", "name": "Nano Banana", "kind": "image", "base_credits": 8 },
{ "id": "fal-ai/nano-banana-pro", "name": "Nano Banana Pro", "kind": "image", "base_credits": 38 },
{ "id": "fal-ai/nano-banana-2-pro","name": "Nano Banana 2 Pro","kind": "image","base_credits": 64 }
]
}// recommend_model { description: "Photoreal sunset cityscape", prefer: "best" }
{
"recommendation": {
"id": "fal-ai/nano-banana-pro",
"name": "Nano Banana Pro",
"kind": "image",
"base_credits": 38,
"has_image_input": true
},
"reason": "Top-tier image model with 4K output and web-search grounding — strongest fit for a photorealistic cinematic scene.",
"alternatives": [
{ "id": "fal-ai/flux-2-pro", "name": "FLUX 2 Pro", "base_credits": 28 },
{ "id": "fal-ai/imagen-4", "name": "Imagen 4", "base_credits": 22 }
]
}// start_generation { model_id: "fal-ai/nano-banana-pro", prompt: "...", aspect_ratio: "16:9" }
{
"job_id": "019e2d09-260…",
"model_id": "fal-ai/nano-banana-pro",
"kind": "image",
"status": "queued",
"credits_used": 38,
"credits_left": 47462,
"poll_url": "https://app.artemotion.ai/api/v1/jobs/019e2d09-260…?model_id=fal-ai%2Fnano-banana-pro"
}// scaffold_pipeline { prompt: "10s coffee channel intro", include_music: true, include_voice: true }
{
"scaffold": {
"name": "Coffee Brew Intro",
"totalDurationSec": 10,
"scenes": [
{ "id": "scene-1", "title": "Beans pouring", "kind": "video",
"model": "fal-ai/kling-video/v3/standard/text-to-video",
"settings": { "duration": "5", "aspect_ratio": "16:9" },
"prompt": "Close-up of dark roasted coffee beans pouring..." }
],
"musicTrack": { "prompt": "warm lo-fi jazz", "model": "cassetteai/music-generator", "durationSec": 10 },
"voiceTrack": { "script": "Welcome to my channel...", "model": "fal-ai/orpheus-tts", "voice": "warm" }
}
}Try saying…
Drop these into Claude Desktop / Cursor / Zed once you've wired up the server. The model picks the right tools on its own.
list_models { kind: "video", sort: "cheapest" }recommend_model { description: "...", prefer: "best" }start_generation { model_id: "fal-ai/nano-banana-pro", prompt: "..." } → wait_for_jobscaffold_pipeline { prompt: "...", total_duration_sec: 30, include_music: true, include_voice: true }combine_videos { video_urls: [...], music_url: "..." }start_tryon { person_image_url, garment_image_url } → wait_for_jobEnvironment variables
| Variable | Required | Default | Notes |
|---|---|---|---|
ARTEMOTION_API_KEY | yes | — | Bearer key from your API Keys page. |
ARTEMOTION_BASE_URL | no | https://app.artemotion.ai | Point at staging to test before prod. |
ARTEMOTION_POLL_INTERVAL_MS | no | 2000 | wait_for_job poll cadence. Min 500 ms. |
ARTEMOTION_POLL_TIMEOUT_MS | no | 300000 (5 min) | wait_for_job default ceiling. Per-call override available. |
UPDATE Upgrading from an older version
The MCP server is published as artemotion-mcp on npm and runs via npx on every client launch. Whether you have to do anything when a new version ships depends on how your config is written.
"args": ["-y", "artemotion-mcp"]npx caches the install and re-checks for newer versions on its own schedule (~daily). Fully quit and relaunch your client — most of the time that's enough to pick up the latest. No config edit needed."args": ["-y", "artemotion-mcp@0.3.0"]Edit the version in your config to the new release (e.g.
@0.5.0 or @latest), then quit + relaunch the client.Recommended: pin to the latest tag
For deterministic upgrades, pin to @latest (always resolves to the newest published version) or to a specific release (so a future minor bump doesn't change your tool surface without warning).
{
"mcpServers": {
"artemotion": {
"command": "npx",
"args": ["-y", "artemotion-mcp@latest"],
"env": { "ARTEMOTION_API_KEY": "ae_live_…" }
}
}
}Force-refresh the npx cache
If you've relaunched the client and the new tools still don't show up, your local npx cache is holding the old bundle. One-line fix, then quit + relaunch:
rm -rf "$(npm config get cache)/_npx"On Windows: rd /s /q "%LOCALAPPDATA%\\npm-cache\\_npx".
How to tell which version is running
Ask the model "What MCP tools does ArtEmotion expose?" — the count and tool names give it away. As of v2.8.0 you should see 48 tools including upload_image, generate_with_lora, object_eraser, remove_background, list_community_gallery, share_to_gallery, save_pipeline, run_pipeline, list_jobs, cancel_job, get_usage, get_credits, estimate_cost, create_folder, etc. If you see ≤ 11, you're on 0.2 or earlier.
Troubleshooting
- "Server failed to start" / no tools appear. Check the client's MCP logs for the actual error. The most common cause is a missing or mistyped
ARTEMOTION_API_KEY— the server crashes early with a clear message. - 401 / "Invalid or revoked API key." The key was rotated or revoked. Generate a new one at Settings → API keys.
- 402 / "Insufficient credits." Top up your balance from the pricing page, or upgrade your plan from pricing.
- 402 / "COST_CAP_EXCEEDED". You passed
max_creditstostart_generationand the estimate was higher. Raise the cap or pick a cheaper model withlist_models { sort: "cheapest" }. - 403 / "Editor requires Pro plan ($54/mo)".
start_edit+ uploaded clips in the editor are gated. Upgrade or stick tocombine_videos(no plan gate). - 429 / "Rate limited." You're hitting the per-key rate limit on
/api/v1/*. The server surfaces the same limit — back off and retry. - 404 on a tool that should exist. Your client is talking to a server that hasn't been redeployed with the new endpoints. See the Upgrading section.
npxhangs the first time. First-run downloads ~10 MB. After the initial install it's cached and starts instantly.- Tools didn't refresh after an upgrade. See Upgrading from an older version — usually a quit-and-relaunch is enough, sometimes you need to wipe the npx cache.