StoryForge exposes a remote MCP server at https://<your-storyforge-host>/mcp. Every editing action in the app is available as a tool, plus tools that let your agent see what you have open and drive the UI ("play the main run now").
Add the URL; the client discovers our OAuth 2.1 server, opens your browser and asks you to approve access.
~/.cursor/mcp.json (or project .cursor/mcp.json){
"mcpServers": {
"storyforge": {
"url": "https://<your-storyforge-host>/mcp"
}
}
}codex mcp add storyforge --url https://<your-storyforge-host>/mcp codex mcp login storyforge
claude mcp add --transport http storyforge https://<your-storyforge-host>/mcp
Create a token under Account → API tokens (optionally never-expiring) and send it as a Bearer header.
{
"mcpServers": {
"storyforge": {
"url": "https://<your-storyforge-host>/mcp",
"headers": { "Authorization": "Bearer ${env:STORYFORGE_TOKEN}" }
}
}
}~/.codex/config.toml[mcp_servers.storyforge] url = "https://<your-storyforge-host>/mcp" bearer_token_env_var = "STORYFORGE_TOKEN"
get_tree, create_node, insert_node, save_leaf_text, create_fork, rename_fork, set_prompt_noteslist_clips, split_clip, save_clip, set_clip_segments (timing table + comic media), set_clip_approval, link_clips, preview_invalidation, clip_diffcreate_asset, update_asset, request_upload → PUT bytes → confirm_upload, add_timeline_item / split_timeline_item (video edit)list_runs, update_run, resolve_runlist_live_sessions, get_ui_state, send_ui_command (open_node, select_fork, play_run, pause, seek, set_playback_mode, toggle_panel…)Typical flow: your agent generates an image with its own tools (GPT Image, Seedance, …), calls request_upload, uploads the bytes to the returned URL, calls confirm_upload, then add_timeline_item to place it in a clip.
The same operations are available over REST with the session cookie or a Bearer token. Interactive docs: https://<your-storyforge-host>/api/docs