# StoryShort Muse connector

From musedirectory.ai, the independent directory of Meta Muse connectors. Not affiliated with Meta.

## StoryShort

Turns a topic into a narrated short video with captions and scenes, ready to post

- Record: https://musedirectory.ai/connector/storyshort
- Category: Marketing & Ads
- Developer: StoryShort (https://storyshort.app/en/developers)
- Muse status: Extra setup. Not in Muse's Connectors list yet. Muse can still use it: its page gives you a request to paste into Muse.
- Health: Working, 632ms, checked 2026-11-12T00:01:18Z
- Endpoint: https://storyshort.app/api/mcp
- Auth: No account needed; Pricing: unknown
- Screening: Screened, no issues found (2026-11-12T00:01:18Z)
- Source: Found in the official MCP Registry (app.storyshort/storyshort) https://registry.modelcontextprotocol.io/v0/servers?search=app.storyshort%2Fstoryshort

Connects to StoryShort to make faceless short videos from a topic: script, voiceover, captions and scenes. Muse can draft and revise the script, quote the credit cost, render only after you approve, and publish to a connected YouTube channel or send the video to TikTok drafts.

Example request: "Make a 30 second video about three morning habits and send it to my TikTok drafts."

How to connect: Not in Muse's Connectors list yet, but Muse can still use it. Paste this into Muse: "Use StoryShort to help me. It is a free service with an MCP server at https://storyshort.app/api/mcp. It does not need an API key. Ask me before you share anything with it." Muse asks before it shares anything with the app's site. Meta does not review apps used this way, so only use ones you trust. We tested this in the Muse app on September 24, 2026: Muse used an app's link directly this way and returned a live answer.

Tools:
- create_video: Create (enqueue) a new AI faceless video from a topic. Returns immediately with a video id and status "PENDING"; the render runs asynchronously — poll get_video every 20-30 seconds until status is "COMPLETED" (playable videoUrl) or "FAILED". Costs 40 credits with the default voic
- get_video: Get the status and details of one video the caller owns, by id. While rendering, status is PENDING/GENERATING_*/RENDERING and estimatedCompletionTime (seconds) is returned. When status is COMPLETED, a playable videoUrl and thumbnailUrl are returned; when FAILED, error says why, a
- list_videos: List the caller's videos, newest first, with pagination. Optionally filter by status (one of the VideoStatus values in the schema). Returns id, title, status, videoUrl, thumbnailUrl and timestamps. Requires the "video:read" scope. Read-only, never charges credits.
- list_niches: List the available content niches, art styles, video qualities and durations that create_video accepts. Use this to pick valid niche/artStyle values. Requires the "video:read" scope. Read-only, never charges credits.
- get_credit_balance: Get the caller's current credit balance, monthly allocation and plan. Use this before create_video to confirm the account can afford a render (40 credits). Requires the "credits:read" scope (included by default in new keys); a key without it gets 403 INSUFFICIENT_SCOPE with a lin
- list_social_accounts: List the connected publishing accounts (YouTube, TikTok) with username, whether they need reconnecting, the publish mode, the AI-disclosure handling and today's platform limits. Never returns tokens. For a platform that is not connected, call get_connection_status to get a connec
- get_connection_status: Is this platform connected? If yes, returns the account. If not, returns connectUrl: the page that opens the platform's consent screen. Give it to the user — that consent is the only human step, once per platform; they must be signed in to the same StoryShort account as this API 
- publish_video: Publish one of the user's COMPLETED videos. YOUTUBE: uploads to the connected channel with your title/description and privacy (public, unlisted, private); the "altered or synthetic content" disclosure is always set; madeForKids is the user's COPPA answer (ask them for a kids audi
- list_series: List the user's series (autopilot channels), newest first, with schedule, auto-post flags, active/paused state, credits per video and an estimate per month. Paginated (page, limit). Requires the "video:read" scope. Free.
- create_series: Create a series: StoryShort makes a video on this niche every scheduleIntervalDays, and can auto-post it to YouTube. The series NAME is the topic every video is written from, so put the user's own subject in it. Creating or changing a series is FREE. While active, the scheduler m
- update_series: Change a series: how often it runs, YouTube auto-post, the madeForKids answer or the language. Only the fields you pass change. The name and niche cannot be changed (create a new series). Making an ACTIVE series run more often raises its spend, so it goes through the same credit 
- pause_series: Pause a series: the scheduler stops making (and charging for) its videos until resume_series. Videos already made are untouched. Requires the "video:create" scope. Free.
- resume_series: Resume a paused series. Refused with SERIES_NEEDS_CREDITS when the balance cannot pay the next video, and with SERIES_LIMIT_REACHED at 5 active series. Creating or changing a series is FREE. While active, the scheduler makes one video every scheduleIntervalDays (the first at its 
- get_series_performance: How YOUR OWN posted YouTube Shorts performed, per series: videos posted/measured, total/median/mean views, top 3 and bottom 3 videos (with outlierScore = views / series median), and views gained in the last 7 days vs the 7 days before. Use it to decide what to make next. Only you
- draft_video: Write a video's script and scenes WITHOUT rendering or charging, so the user can read and change it first. Returns draftId, the scenes (narration + visual prompt each) and the exact render price. Free, but it runs the script writer once: needs a balance that can pay for a render 
- get_draft: Read a draft: its scenes (narration, visual prompt, length), whether the narration is long enough for the target duration, and the exact render price against the current balance. Free, read-only. Requires the "video:read" scope.
- update_draft: Change a draft: its title and/or REPLACE all its scenes (1-12, each with scriptText and optional visualPrompt / durationSeconds). The narration you send is exactly what is spoken. To change one scene use revise_scene. Edits are screened like any prompt. Free; works only while the
- revise_scene: Change ONE scene of a draft in place: its narration (scriptText), its visualPrompt and/or its durationSeconds. Scene numbers start at 1 (see get_draft). Only the fields you pass change. Screened like any prompt. Free; draft only. Requires the "video:create" scope.
- render_draft: Render an approved draft into the video. THIS IS THE ONLY STEP THAT COSTS CREDITS: the price is quote.credits from get_draft / draft_video, charged once after the render succeeds (a failed attempt costs nothing; StoryShort may retry a failed render automatically, up to 3 times, a
- cancel_video: Cancel a video that has NOT started rendering: a draft, a video still queued (PENDING), or one whose failed render is waiting for an automatic retry. The video ends as FAILED "Cancelled" and is never rendered. Credits are charged only after a render succeeds, so normally nothing 
- quote_video: The exact credit price of a video with AI motion clips BEFORE it is made, and whether this account may make it. Read-only: nothing is created, reserved or charged, and no prompt is checked. Returns baseCredits (the normal video), motionCredits (40 credits per motion scene, each a
- get_character_sheet: Read the character sheets of one of your series: each sheet is a set of AI images of one fictional character, its images (id, view, url), which sheet and which image are chosen, how many sheets the series may still make (3 in total), and the exact price of a new sheet (23 credits
- create_character_sheet: Make a character sheet for one of your series: 4-6 AI images (default 5: front portrait, full body, side, expressions) of ONE fictional character, from a text description. CHARGES credits: 23 credits for 5 images of a person, 11 for an animal or mascot. ALWAYS call get_character_
- select_character_image: Choose which character sheet a series uses and which of its images is the main one. The main image is the reference every still of an episode is made from. Only your own READY sheets and their images can be chosen. Free. Requires the "video:create" scope.
- quote_character_episode: Price one PLANNED episode (30-60 seconds, 3-8 shots) of a series with a confirmed season plan, starring the character the plan names. FREE: it spends nothing and starts nothing. Returns the shot plan (narration, action, camera and seconds of every shot), the exact credits (up to 
- create_character_episode: Make the episode: 3-8 shots, 30-60 seconds, the same fictional character in every shot, narrated with captions. CHARGES credits (up to 325 credits for a default 30-second episode; longer ones (up to 60 seconds) cost more). ALWAYS call quote_character_episode first and tell the hu
- plan_drama_season: Drama Studio writers room: turn a one-line premise into a short-drama season: a character bible (1-4 original fictional characters: name, role, look) and 2-8 episode scripts, each with a title, a logline, a script and a "cliffhangerLine". The cliffhanger is SPOKEN: the script's l
- get_season_plan: Read the season plan of one of your series: the plan (logline, genre, narrator voice, language, style, cast with outfits, every episode), its hash, its status (none, saved, reviewed or confirmed) and the recorded season review (a checklist with pass or fail per rule, the season p
- save_season_plan: Design, review and confirm the WHOLE season of a series before any episode is made. Free (no credits). A series is fully designed and reviewed before any video is produced, and its characters, voice and style are fixed in every episode. Three steps, one tool: (1) pass `plan` to s

Screening checks:
- MCP handshake: pass (Answered in 632ms)
- Domain against threat feeds (Cloudflare security DNS): pass (storyshort.app not flagged)
- Published packages against the OSV malicious-package database: n/a (No npm or PyPI package published)
- Hidden instructions or invisible characters in tool text: pass (29 tools read, nothing found)
- Inputs asking for passwords, card numbers or seed phrases: pass (None found)
- Domain and redirects: pass (No redirects off the domain)
- AI review of purpose and tool behavior: pass (No concerns)
