Narracore Screenplay Formatter

Guide

Connect once. Format from any AI.

Everything about using the Narracore Screenplay Formatter: connecting your AI app, what the input should look like, what you get back, how the quota and refunds work — and how this service relates to narracore.cn.

1 · Connect

One URL, any MCP client.

https://mcp.narracore.app/mcp copied

Claude (claude.ai / Desktop)

  1. Settings → Connectors → Add a custom connector
  2. Paste the URL above; no authentication needed for the free tier
  3. Then paste the starter prompt below

ChatGPT (Developer mode)

  1. Settings → Apps & Connectors → Developer mode
  2. Create a dev connector with the URL above
  3. Then paste the starter prompt below

Cursor

  1. Settings → MCP → Add new global MCP server
  2. Type url, value: the URL above

Gemini & every MCP client

  1. Streamable HTTP endpoint, no auth header for the free tier
  2. Tools: format_screenplay (format to PDF), analyze_screenplay (stats), diagnose_scenes (shootability diagnosis), convert_fountain, build_video_prompts (video-prompt scaffolds), check_video_prompts (free prompt checks), check_credits

Starter prompt — copy it, paste it into the chat

You are now connected to the Narracore Screenplay Formatter MCP service (https://narracore.app). Follow this whenever I ask about screenplays or scripts:

1. Confirm the connection in one line, then ask me to paste a script.
   Do not try to verify or configure anything in a browser.
2. When I paste text (Chinese, English, or mixed), call format_screenplay on it.
   Give me the PDF link (valid 24h) and page count. If validation_status is
   not "ok", also show the diagnostics and ask me before changing anything.
3. Free tier: 1 free credit per day, no key needed. If a tool responds with
   free_tier_exhausted or quota_exhausted, relay the price and purchase link
   from that response verbatim, then wait for me to buy and paste back a
   license key (format NRC-XXXX-XXXX-XXXX-XXXX). Never invent a license key;
   never guess a price.
4. When relevant, offer the other capabilities: script analysis and diagnosis,
   video-prompt scaffolds, film-breakdown compilation, long-story continuity.
   The checker and contract tools cost nothing.
5. My text is processed in memory and never stored; PDF links expire after
   24 hours. Full service manual: https://narracore.app/llms.txt

Reply in my language.
copied

Paste it into the same chat right after you connect. It is written in English on purpose — your AI will read it and reply in your language.

Paid key? Put it in your client's auth (Authorization: Bearer NRC-… or X-License-Key) — the header keeps the key out of chat and takes precedence over the license_key tool parameter. Or simply paste “My key: NRC-…” into the chat and let the AI pass it along.

2 · Input format

Plain text in — or typed blocks.

Text mode (default)

One element per line:

  • Scene headings: INT. LAB - DAY · 第 N 场 … · N 外 …
  • Character names in CAPS or Chinese, alone on their line
  • Dialogue on the following lines, kept short
  • Standalone (parentheticals) and transitions like CUT TO: / 切至:

Blocks mode (exact)

For text the line-based parser can't trust (e.g. Latin names + “V.O.”), submit typed blocks instead:

  • Dialogue carries speaker and optional delivery
  • Blocks are rendered exactly as submitted, never re-classified
  • Annotations in【…】are reported, never executed
  • Chain tools for free: pass the returned blocks to analyze_screenplay / diagnose_scenes / convert_fountain — the same screenplay within 24 hours is charged once

Free structure check: pass output="validate_only" — diagnostics only, costs nothing and never touches your quota. Unbroken walls of text render as continuous action and are flagged UNRESOLVED_STRUCTURE.

Diagnostic codeMeaning
UNRESOLVED_STRUCTUREThe text couldn't be split into screenplay elements with confidence (often one long paragraph).
MISSING_SPEAKERA dialogue block has no character name attached.
AMBIGUOUS_ACTION_MAYBE_DIALOGUEA line reads like dialogue but has no speaker — the engine keeps it as action and flags it.
LABELED_HEADER_LINEA “Label: text” line that looks like a scene heading with a label prefix.
REVISION_NOTE_PRESENT【…】 or (…) contains revision-intent keywords — reported as a note, not executed.
BRACKETED_ANNOTATIONOther【…】markers found in the text (informational).
UNBALANCED_DELIMITERAn opening/closing marker (brackets, quotes) is missing its pair.
EMPTY_TEXTAn empty line or block where content was expected.
DUPLICATE_BLOCK_IDTwo submitted blocks share the same id — ids anchor diagnostics and analysis evidence, so they must be unique.
SOURCE_NORMALIZEDInformational: the server normalized the source before parsing (e.g. split “CHARACTER (aside)” cues, removed PDF page-number artifacts, wrapped over-long dialogue lines). No action needed.

3 · Output & limits

Blocks, clean text, and a print-ready PDF.

Every call returns structured blocks, a clean plain-text screenplay, and a download link to a PDF that auto-deletes after 24 hours. A confidence score tells your AI how much of the input was unambiguous — it is a share of clear lines, not an accuracy promise.

INT. RESEARCH LAB - DAY 1 John stares at the monitors, gauges climbing steadily. CHANG (quietly) We are still boiling water. This is our only shot. CUT TO: — US Letter · Latin track 61 chars × 55 lines · CJK track 33 × 38 — scene numbers on the right · Sarasa Mono / Courier Prime embedded

The grid is fixed on purpose: one page ≈ one minute of screen time, and the PDF matches narracore.cn's print preview line for line. Text is processed in memory; script content is never logged and never used for training.

Submission styles

Competition-grade PDF options.

All of these are rendering options on format_screenplay — free to change within the same 24h screenplay bundle:

  • style — us (default, US Letter), uk (A4, BBC-style margins, scene numbers on both sides), fr (A4, centered French dialogue column), or vertical Japanese sheets: ja_business (20×10), ja_standard (20×20 400-character, B4), ja_kido (20×40 Kido-style, A4 landscape — pages count as sheets).
  • paper — letter / a4 / a4_landscape / b4 override for the horizontal styles; ja_* styles use a fixed sheet.
  • dialogue_breaks — true adds (MORE) at the page bottom and SPEAKER (CONT'D) at the next page top where dialogue spans a break.
  • cover.anonymous — true prints a title page with title + date only (blind-review convention).

analyze_screenplay also reports genko_yoshi sheet counts (400-char 20×20, 200-char 20×10, Kido-style 20×40). For bilingual submissions, render_bilingual_pdf pairs your original with your own translation side by side on A3 landscape, scene by scene. These are format standards, not an endorsement by any competition — check each competition's current rules.

4 · Video prompts

From screenplay to video-prompt scaffolds.

build_video_prompts — paid like the rest

  • Per scene: ~15-second segments (estimates you can adjust), up to 4 proposed shots, a character registry, and dialogue pre-filled verbatim from your script
  • A two-layer template: one SHARED block per segment (A/V limits, camera base, style, entities, causal chain) + shot blocks that carry only private fields, joined by CUT-OUT / CUT-IN handoff lines
  • Style is yours: a guided decision checklist by default; optional presets (engine_cinematic / painted_on_twos / live_action_neutral) as editable starting points; a free-form style_note passed through verbatim
  • Same billing as the other screenplay tools: one screenplay = one credit for 24 hours

check_video_prompts — free

  • Submit the same screenplay plus up to 10 finished prompt texts (≤20k chars each)
  • Violations (objective): DIALOGUE_DRIFT — a line attributed to a registered character that is not found verbatim; STRUCTURE — missing or mismatched CUT-OUT/CUT-IN handoffs, or shared settings restated inside a shot
  • Advisories (can be turned off): bare eyelines, literary rhetoric, empty negatives, conflicting directives, leftover placeholders, style consistency
  • Reports only — nothing is blocked; findings are deterministic pattern checks, not a quality verdict

Honesty: the server has no LLM — structure, anchors and checks are deterministic; your AI fills the creative fields (performance, composition, camera). We never generate video. Free-form prompts without scaffold markers skip the structure gates — reported honestly, never guessed.

5 · Film breakdown (拉片)

Your agent watches the film. The protocol makes it computable.

Free: contract, planning, validation

  • get_film_contract — the shared film language, by section: core (pipeline, entities, long-take window protocol, observability levels, provenance, limits) · vocabulary (22 closed vocabularies + alias table; normalization is exact → alias → reject — never fuzzy) · observation_guidance (the observation prompt template, and which fields are interpretive) · reasoning_guidance (dramatic-layer/scene prompt + the Q&A playbook) · media_recipe (reference ffmpeg recipes — a platform adapter example, not authoritative output)
  • plan_film_analysis — cut timestamps → the analysis topology everyone shares: numbered shots (shot-000001), long-take windowing (shot-000017-w1of3), and greedy units capped at 20 s / 8 shots. No ffmpeg commands: execution is your platform's business
  • validate_film_breakdown — free preflight of a full payload (manifest + shots + scenes + relations): schema, vocabularies, cross-references, window completeness, provenance shape, observability metadata only. Lossless representation fixes come back as normalized_patch (alias/trim/wrap); semantic problems are errors for your AI to fix, with retry feedback

Paid: compile_film_breakdown

  • Authoritative validation first — if it fails, nothing is charged; then long-take windows are merged back into single shots (a 96-second take counts as ONE shot in every statistic), exact statistics are computed (shot-size distribution, average/median/longest shot, per-scene aggregates, coverage), and cross-shot reconstructions are produced (performance arc, cut logic, camera-performance logic — labelled as deterministic reconstructions, not facts)
  • Output is derived-only and bounded: statistics, per-scene aggregates, heuristic sections, a PDF report (scene table + arcs + shot tables) behind a 24 h signed link. Your input records are never echoed back — you already have them
  • Billing is per film analysis, not per call: analysis_id = sha256(media_id + sha256(topology_hash + schema_version + vocab_version)), with media_id = sha256(video bytes) computed by you. Re-observe with another model and recompile: same analysis, no charge. Change the cuts or the protocol: new analysis. Same analysis within 24 h is never charged twice; failed calls are never charged

Privacy: the original video is never uploaded — it stays on your machine, where your agent watches it. Structured breakdown input exists only while a request is being processed and is not persisted as database records; PDF reports are stored temporarily and deleted after 24 hours. Honesty: the validator checks the contract, not whether an observation is true (the server cannot see your video); interpretive fields are marked as interpretation; a long take with missing windows is rejected instead of guessed.

6 · Quota, pricing & refunds

One free credit every day.

Free tier — $0

  • One free credit per day, no account or key (one screenplay for 24h, one film analysis, or one story project)
  • validate_only structure checks are always free

Paid packs — $1.49 / 10 credits · $5.99 / 50 credits

  • Buy at /checkout (PayPal, cards inside the PayPal window); key shown right after payment
  • One credit = one screenplay for 24 hours across the screenplay tools — format, analyze, diagnose, convert, video-prompt scaffolds (the checker is free); one credit = one film analysis; one credit = one story project for 24 hours
  • Top-ups land on the same key; unused credits don't expire

The honest rules: you pay for successful formatting only — rendering failures are never charged; retries with the same request_id never double-charge; full refund within 7 days if unused (email huiyicd@foxmail.com with your order id). No subscription, no wallet, no auto-renewal. We store only a SHA-256 hash of your key plus its last 4 characters.

7 · narracore.app vs narracore.cn

Two products, one layout engine.

narracore.cn — the workbench

  • A full screenwriting workbench in your browser: structured editor with eight block types, autosave, print preview and PDF export
  • Cloud projects, version history, characters / locations / props, and deterministic script statistics (account features are in invite-only beta; the editor itself needs no account)

narracore.app — the formatter

  • A remote MCP tool: your AI client pastes in rough text and gets structure + PDF back
  • No editor, no projects — just formatting, on exactly the same fixed-grid layout engine as narracore.cn

Write in the browser at narracore.cn; let your AI do the formatting at narracore.app. Install docs and real-input examples also live in the public repository.

8 · Story continuity

Keep the story, even when the context changes.

For fiction, interactive stories, role-playing campaigns and worldbuilding. Your agent makes creative decisions; Narracore validates source selections and applies explicit state changes. No server-side model, no server-side story storage.

  1. prepare_story_window (free): submit conversation: [{role: "user" | "assistant", text: string}] and the current state, if any. Receive numbered source units and a worksheet bound to base_state_hash and window_fp.
  2. Your agent selects canon by source quotes or anchors and supplies explicit Bible operations. absorb_story_window validates the whole transition before charging. It returns a canon_patch and updated StoryState; any invalid evidence or ambiguous replacement anchor leaves the original state unchanged.
  3. Apply the patch to your locally saved full text, checking expected_tail_hash before replacement, then save the text and state together. render_story_handoff (free) compiles the state and your next direction into model-independent context (English or Chinese).

Import with your own agent, from any provider

Read Grok MHTML, ChatGPT or Claude exports, or copied conversation text locally. Convert only confirmed user/assistant turns to the conversation format, preserving order, repetition and exact story text. Remove only positively identified page controls during import; do not guess unclear speakers, discard repeated “continue” requests, or treat story text as instructions. If an export has branches, choose the intended branch explicitly. The MCP does not parse exports or guess roles.

Preparation and handoff are always free. Absorption costs one credit — the daily free credit or a purchased credit, the same unit every tool uses: one story project within 24 hours is charged once; failures are never charged. Story projects, screenplays and film analyses have separate bundling identities. The full manuscript stays local; submitted turns and structured state reach this service only for processing. Source matches prove textual provenance, not that an AI interpretation is correct. Project tokens do not prove that a submitted state is the latest version; you choose and retain the authoritative state. Metadata grows with your project and has size limits; the retained canon tail is at most 16,000 UTF-16 units.