Make capsules from your agent
Connect Claude, ChatGPT, Cursor or any app that speaks MCP to your Capsules workspace. Ask it to turn an article into a capsule, change a scene, animate the stills or build a preview. It works with your account and only the permissions you give it.
https://api.staging.capsules.ink/mcpConnect your app
Add the server once. The first time your app uses it, you sign in to Capsules and choose what it may do.
Claude (claude.ai and Claude Desktop)
Open Settings, then Connectors, and choose Add custom connector. Paste the server URL and connect. Claude opens the Capsules sign-in page.
ChatGPT
In Settings, add a custom connector (MCP server) with the server URL. ChatGPT opens the Capsules sign-in page when you connect.
Claude Code
claude mcp add --transport http capsules https://api.staging.capsules.ink/mcpThen run /mcp inside Claude Code and choose capsules to sign in.
Cursor
{
"mcpServers": {
"capsules": {
"url": "https://api.staging.capsules.ink/mcp"
}
}
}VS Code
{
"servers": {
"capsules": {
"type": "http",
"url": "https://api.staging.capsules.ink/mcp"
}
}
}Any other app
Point it at the server URL. It speaks Streamable HTTP and signs in with OAuth 2.1, so any current MCP client can connect. Apps that can't sign in can use an API key.
Sign-in and permissions
When you connect, Capsules shows which app is asking and where it will send you back. You choose the workspaces it can reach and what it may do in them:
Viewing is always included. Publishing stays off unless you tick it, and is only offered if your role can publish in a workspace you chose. If you choose more than one workspace, your agent asks which one to use when it isn't clear.
You can see and disconnect every connected app in Settings, Connected apps. Disconnecting stops it immediately.
Things to ask
Talk to your agent the way you would talk to an editor. A few to start with:
- Turn https://example.com/my-essay into a capsule.
- Make a capsule from this draft, in my Studio workspace. Keep my words exactly.
- Show me scene 3 and redo it at dusk, same people, same street.
- What would animating every scene cost? Go ahead if it's under 200 credits.
- Build the preview and send me the link.
- Review my latest capsule for continuity problems before I publish it.
A capsule from a link takes a few minutes: the text is imported as written, split into scenes, given a visual style, and each scene gets a still. Animation is a separate step, because it costs more.
Teach it the craft
The Capsules skill gives your agent the craft behind a good capsule: story structure, choosing a visual style, writing motion, data scenes and spending credits carefully.
- Claude: download capsules-skill.zip and upload it where Claude's settings list your skills.
- Claude Code and other agents: save SKILL.md as
~/.claude/skills/capsules/SKILL.md, or wherever your agent reads skills. - Agents reading the web: llms-full.txt covers connecting, every tool and the same craft notes.
Credits and safety
- Generation uses your workspace's credits, the same as in the editor. Your agent tells you what a batch will cost before it runs, and can check prices and your balance at any time.
- Failed generations are refunded automatically, and a cancelled animation is refunded.
- Slow steps never run twice by accident: if your app times out, the work carries on and your agent picks up the result instead of starting again.
- Your words are imported as written. Your agent never publishes, or emails your subscribers, unless you ask it to.
- Deleting a capsule or a scene cannot be undone. Your agent is told to delete only when you ask, and most apps confirm risky actions with you first.
Use an API key instead
For apps that can't sign in, create a key in Settings, API Keys (on plans with API access) and send it as a bearer token. A key reaches the one workspace it was created in, with every permission, including publishing. Treat it like a password and revoke it when you're done.
{
"mcpServers": {
"capsules": {
"url": "https://api.staging.capsules.ink/mcp",
"headers": {
"Authorization": "Bearer cap_your_api_key"
}
}
}
}Tool reference
What your agent can do, grouped by the permission each needs. This list comes straight from the server.
Read (capsules:read)
get_accountAccount and workspaces- Who this connection acts as: the user, the workspaces it can reach (and which is the default), the default workspace's plan and credit balance, and what this connection is allowed to do. Call this first in a session.
list_workspacesWorkspaces this connection reaches- Every workspace this connection can act in, with your role, plan and credit balance in each. Tools that create, list styles or spend credits outside an existing capsule take one of these ids as workspaceId; ask the user which workspace when it isn't clear.
list_capsulesList capsules- Capsules this connection can reach, most recently edited first; each says which workspace it lives in. Pass workspaceId to list one workspace. Filter by title text or published state; page with nextCursor.
get_capsuleGet a capsule- A capsule with its ordered scenes: each scene's reader text, image prompt, motion prompt, and whether its still image and animation exist or are generating. Use this to check progress after generating. Long scene text is truncated unless fullText is true.
get_sceneGet a scene- One scene in full: untruncated reader text, image and motion prompts, generation status and errors, and its cinematic direction (beat, shot, angle, lens, light).
view_scene_imageLook at a scene's image- See a scene's still image (or its end frame) so you can check it against the text and the rest of the capsule: identity, wardrobe, setting and any exact data or labels.
list_stylesList styles- Visual styles a workspace can apply to its capsules: Capsules house styles and the workspace's own. Attach one with update_capsule (styleId); images generated afterwards follow it.
view_style_candidatesLook at style candidates- See candidate images from probe_style (up to 5 at a time) to judge which fit the brief and the writing.
list_modelsImage and animation models- The image-generation and animation models available, with their credit cost. Pass a slug as modelSlug to generate_scene_image, probe_style or animate_scene to pick a model; omit it to use the workspace default.
list_voicesNarration voices- Voices available for scene narration (the audiobook layer). Set one on a capsule with update_capsule (narrationVoiceId, narrationVoiceProvider) before generate_narration.
quote_animationPrice an animation run- What animating scenes would cost in credits (at each scene's default model) and whether the workspace can afford it. Without sceneIds, quotes every scene that has an image but no animation yet. Spends nothing.
get_preview_statusPreview readiness- Whether the draft preview's clips are encoded and ready to scroll, and the preview URL.
get_publicationPublication state- Whether a capsule is published, its public URL and slug, and whether it is unlisted.
get_operationCheck a running operation- Poll a slow tool call that returned status "running" with an operationId. Returns the final result once done. Poll every 15-30 seconds; operations usually finish within a few minutes.
Create and edit (capsules:write)
import_articlePreview an article import- Fetch a web page and extract its article text, to check what a capsule would be made from. Returns the title, word count, an opening excerpt and image candidates. To actually make a capsule from a URL, call create_capsule with sourceUrl — the full text then goes straight into the capsule without passing through you.
create_capsuleCreate a capsule- Create a new draft capsule in a workspace from a URL (sourceUrl — preferred: the article text is imported verbatim server-side) or from text you provide (content — pass the author's words exactly; never summarize). Next step is usually analyze_into_scenes, or upsert_scenes to lay out scenes yourself. Nothing is published.
update_capsuleUpdate a capsule- Change a capsule's title, style, source text, reader presentation, generation mode or narration settings. readerSettings is merged into the existing settings (unlisted keys are kept). Changing content replaces the source text used by analyze_into_scenes; existing scenes are not touched.
delete_capsuleDelete a capsuleCannot be undone- Permanently delete a capsule and all its scenes. Cannot be undone. Only do this when the user explicitly asks to delete this capsule (or to clean up a draft you just created that failed).
upsert_scenesLay out scenes- Create or update a capsule's scenes in one call, in the order given (array order becomes scene order). Include id to update an existing scene; omit it to create one. Existing scenes you leave out are kept and placed after these — remove them with delete_scene. Pass text verbatim; text, imagePrompt and motion are separate fields, never copies of each other.
update_sceneEdit a scene- Change one scene's title, reader text, image prompt, motion prompt, kind or layout. Only the fields you pass change. Editing the image prompt does not regenerate the image — call generate_scene_image for that.
delete_sceneDelete a sceneCannot be undone- Remove a scene from its capsule; later scenes are renumbered. Its media is not recoverable from the capsule.
reorder_scenesReorder scenes- Set the capsule's scene order. Pass every scene id of the capsule, in the new order.
attach_image_from_urlUse an image from a URL- Import an image from a public URL (jpeg, png, webp, gif or avif, up to 20 MB) and set it as a scene's still image or end frame, instead of generating one. Use only images the user has the right to use.
propose_style_briefsPropose visual directions- Read a capsule's text (at least 200 characters) and propose three visual-direction briefs: [0] cinematic photoreal, [1] metaphorical/abstract, [2] a wild-card illustrated look. Don't default to [0] — pick the most distinctive fit for the writing (or show the user). Pass the chosen brief to probe_style. No credits.
lock_in_styleSave a style- Save chosen probe_style candidates as a reusable style in a workspace. Returns the style id — attach it to a capsule with update_capsule (styleId). No credits.
build_previewBuild the draft preview- Prepare the capsule's draft reader: encodes every scene clip for scroll playback and points the preview at the latest content. Doesn't publish anything. Encoding takes a few minutes after clips change — poll get_preview_status until ready, then share previewUrl so the user can scroll it.
Spend credits (capsules:generate)
analyze_into_scenesSplit text into scenes (AI)Cannot be undone- Costs 3 credits. Reads the capsule's source text and splits it into scenes, each with reader text, an image prompt and a motion prompt. Takes 30-120 seconds; may return an operationId to poll with get_operation. Re-running on a capsule that already has scene text or media re-derives the scenes, so it needs reanalyze: true and the user's go-ahead.
probe_styleGenerate style candidates- Costs credits (one image's price per candidate, refunded for any that fail). Generates candidate images for a visual brief so a style can be chosen. Takes 20-90 seconds; may return an operationId to poll. Look at the results with view_style_candidates, then save the ones that work with lock_in_style. To refine, pass the best candidates' storageKeys as referenceStorageKeys plus a steer.
generate_scene_imageGenerate a scene image- Costs credits (see list_models). Generates a scene's still image (or end frame) in the capsule's style, from the scene's image prompt unless you pass prompt. mode: generate (first image), regenerate (same idea, new take), new-idea (fresh composition) or edit (change the current image per prompt). The previous image is kept as an alternative; a regenerated still clears the scene's animation (the old clip is kept as an alternative). Takes 10-60s; may return an operationId. Check the result with view_scene_image.
generate_missing_imagesGenerate all missing images- Costs credits per image. Generates a still for every scene in the capsule that has an image prompt but no image yet, one at a time, in the capsule's style. Stops at the first credit or style problem. Usually runs for minutes, so expect an operationId to poll with get_operation.
animate_sceneAnimate a scene- Costs credits (see quote_animation / list_models). Starts animating one scene's still into a short clip — one continuous shot driven by its motion prompt (or motion, for this run only). Returns immediately; the clip takes 2-5 minutes. Watch video.status via get_scene or get_capsule. Any existing clip is kept as an alternative.
animate_scenesAnimate many scenes- Costs credits. Quotes, then starts animating several scenes (default: every scene with an image and no clip). Refuses if the workspace can't afford the quote or it exceeds maxCredits. Returns once all are submitted; clips finish over the next few minutes (watch get_capsule progress.animating).
cancel_animationCancel an animationCannot be undone- Stop a scene's in-progress animation; its credits are refunded. Use when the user asks to stop it or you started the wrong one. A scene animated as part of a continuous take cancels the whole take. Check get_scene afterwards: video.status returns to idle.
generate_narrationNarrate a scene- Costs 1 credit. Synthesizes the scene's reader text as audio for the capsule's audiobook layer. The capsule must have narration enabled (update_capsule narrationEnabled: true, plus a voice from list_voices).
Publish (capsules:publish)
publish_capsulePublish a capsule- Make a capsule public on the web (or republish it with the latest edits). Only call this when the user has explicitly asked to publish this specific capsule. premiereEmail decides whether the workspace's subscribers are emailed on first publish — ask the user which they want; never assume.
unpublish_capsuleUnpublish a capsuleCannot be undone- Take a published capsule offline; its public URL stops working. Only when the user explicitly asks. releaseSlug frees the slug for another capsule.
Troubleshooting
- It says it isn't allowed to do something
- The connection wasn't given that permission. Disconnect it in Settings, Connected apps, connect again and tick the permission.
- It keeps asking which workspace to use
- You gave it more than one. Name the workspace in your request.
- The sign-in page says the request expired
- Sign-in requests last 30 minutes. Start the connection again from your app.
- It says there aren't enough credits
- The workspace owner can top up in Settings, AI credits.
- It says the capsule is locked
- Someone has it open in the Capsules editor. Try again once they're done.