Narracore Screenplay Formatter
REMOTE · MCP.NARRACORE.APP · SCANNED SEP 29
Screenplay, film and story toolkit over MCP: PDF formatting, stats, diagnosis, video prompts.
Available components
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation not fully verified: no authorisation is required to call this server, and 14 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability57
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 5390 tokens (~385/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management43
- Stability observed for 13 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage91
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 74% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 14 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 14 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the Narracore Screenplay Formatter MCP server?
Narracore Screenplay Formatter is a hosted endpoint at https://mcp.narracore.app/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.narracore.app
claude mcp add --transport http cn-narracore-screenplay-formatter 'https://mcp.narracore.app/mcp'
{
"mcpServers": {
"cn-narracore-screenplay-formatter": {
"url": "https://mcp.narracore.app/mcp"
}
}
} {
"servers": {
"cn-narracore-screenplay-formatter": {
"type": "http",
"url": "https://mcp.narracore.app/mcp"
}
}
} [mcp_servers.cn-narracore-screenplay-formatter] url = "https://mcp.narracore.app/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"cn-narracore-screenplay-formatter": {
"type": "remote",
"url": "https://mcp.narracore.app/mcp",
"enabled": true
}
}
} openclaw mcp add cn-narracore-screenplay-formatter --url 'https://mcp.narracore.app/mcp' --transport streamable-http
mcp_servers:
cn-narracore-screenplay-formatter:
url: "https://mcp.narracore.app/mcp" {
"McpServers": {
"cn-narracore-screenplay-formatter": {
"Transport": "http",
"Url": "https://mcp.narracore.app/mcp"
}
}
} assistant mcp add cn-narracore-screenplay-formatter -t streamable-http -u 'https://mcp.narracore.app/mcp'
{
"mcpServers": {
"cn-narracore-screenplay-formatter": {
"type": "http",
"url": "https://mcp.narracore.app/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 29 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 27 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 33 to 37. That category is still filling its 30-day observation window: 10 days of observed history at the previous scan, 11 at this one. The score rises as the window fills, whether or not the server changes.
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 24 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 22 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 17 to 20. That category is still filling its 30-day observation window: 5 days of observed history at the previous scan, 6 at this one. The score rises as the window fills, whether or not the server changes.
- 20 Sept 26 +1
- Server version: 1.3.0 → 1.4.0 functional
- 18 Sept 26 0
- Tool “convert_fountain” rewrote its description, which is the text the model reads security
- Tool “analyze_screenplay” rewrote its description, which is the text the model reads security
- Tool “build_video_prompts” rewrote its description, which is the text the model reads security
- Tool “check_credits” rewrote its description, which is the text the model reads security
- Tool “diagnose_scenes” rewrote its description, which is the text the model reads security
- Tool “format_screenplay” rewrote its description, which is the text the model reads security
- Tool coverage: 94% → 74% ▼ functional
- Schema quality: 461 → 385 ▲ functional
- Schema quality: 461 → 376 ▲ functional
- Server version: 1.2.0 → 1.3.0 functional
- Server version: 1.1.0 → 1.2.0 functional
- New tool “absorb_story_window” functional
- New tool “build_video_prompts” functional
- New tool “check_video_prompts” functional
- New tool “compile_film_breakdown” functional
- New tool “get_film_contract” functional
- New tool “plan_film_analysis” functional
- New tool “prepare_story_window” functional
- New tool “render_story_handoff” functional
- New tool “validate_film_breakdown” functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 29 Sept 2026 · Probed https://mcp.narracore.app/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=mcp.narracore.app | CN=YE1,O=Let's Encrypt,C=US | 16 Sept 2026 | 15 Dec 2026 | ECDSA 256 | ECDSA-SHA384 | 631c8a6a8b7f4b517dda015c602dfed38c4 |
| SANs: mcp.narracore.app | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of mcp.narracore.app. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| app. | present | 23684 | 8 | Verified |
| narracore.app. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| x-content-type-options | nosniff |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.narracore.app/mcp | Verified | 200 | |
| http (plaintext) | http://mcp.narracore.app/mcp | HTTPS enforced | 308 | https://mcp.narracore.app/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
absorb_story_window ~214
CHARGED (1 credit per story project per 24h; any validation failure is never charged, absorbed-window repeats are free no-ops). Merge YOUR extraction of a prepared window: selectors must quote/anchor exact unit text (server pulls canon verbatim; client canon_text is rejected) and the returned canon_patch must be tail-hash-verified by the client before applying. YOU decide what the story means; the server only verifies anchors and patch safety, not truth. 失败不收费、同项目 24h 只扣一次;AI 提炼、服务端核验锚点与补丁安全,不判断真伪。
| Name | Type | Req | Description |
|---|---|---|---|
| extraction | object | yes | – |
| license_key | string | – | License key NRC-XXXX-XXXX-XXXX-XXXX (optional — one free analysis per day works without one) |
| request_id | string | – | Idempotency key (optional; same request_id never double-charges) |
| state | object | – | – |
| units | array | yes | – |
No output schema declared.
No examples provided.
analyze_screenplay ~343
Deterministic screenplay statistics from the Narracore analyzer (analyzer_version 1.0, same rules as narracore.cn): a scene list with structured scene headings (scene number / location / time of day / INT-EXT parsed from each heading), per-scene word count, dialogue ratio and action density, plus a character table (cue count, scenes present, dialogue lines, dialogue chars, share of dialogue). Accepts the same inputs as format_screenplay (input_format="text" or "blocks") — pass the SAME screenplay to both tools: one credit covers one screenplay for 24 hours across the screenplay tools (format / analyze / diagnose / convert / video prompts). When chaining tools, pass back the blocks you received (structured), not the formatted plain text. Failed calls are never charged; retrying the same request_id never double-charges. 剧本确定性统计:场景清单(结构化场景头)、逐场字数/对白占比/动作密度、角色戏份表;同一份剧本 24 小时内多工具只扣一次。
| Name | Type | Req | Description |
|---|---|---|---|
| blocks | array | – | Typed blocks (required when input_format="blocks") |
| input_format | string | – | text (default): line-based screenplay text. blocks: typed blocks (e.g. the blocks returned by format_screenplay). |
| license_key | string | – | License key NRC-XXXX-XXXX-XXXX-XXXX (optional — free daily quota works without one) |
| request_id | string | – | Idempotency key (optional) |
| text | string | – | Raw screenplay text (required when input_format="text") |
No output schema declared.
No examples provided.
build_video_prompts ~620
Turn a screenplay into structured video-generation prompt scaffolds (deterministic — no LLM on the server; YOU fill the creative fields). For each selected scene it estimates ~15s segments (marked estimated), registers entities (characters + dialogue counts), proposes ≤4 shots per segment at beat boundaries, pre-fills dialogue lines VERBATIM from the screenplay (never rewrite them), and emits a two-layer template per segment: a SHARED block (A/V limits, camera base, style, entities, causal chain, global guards) written once, plus SHOT blocks carrying only private fields, with CUT-OUT/CUT-IN handoff lines between shots. STYLE GUIDANCE, never a style lock: by default the style section is a decision checklist (medium / frame-rate mechanism / brush / color-domain boundaries / light & face readability / banned vocabulary, each with how-to and example); optionally pass style="engine_cinematic" | "painted_on_twos" | "live_action_neutral" as an EDITABLE starting point, and/or style_note (≤500 chars, passed through verbatim). The response includes a condensed filling guide (eyeline = screen vector, performance arc, causal chain, motion domains, cut-point two-state, targeted negative guards). Estimates are proposals — adjust to the scene's beats. Charged like the other screenplay tools: one credit covers one screenplay for 24 hours across the screenplay tools; failed calls are never charged; same request_id retries never double-charge. After filling, call check_video_prompts (free) for drift findings. 剧本→视频提示词骨架:台词逐字预填、实体登记、段-镜两层结构与切点两态;风格由用户决定(决策清单+可选预设+自由附注),服务端不代做创意决定。
| Name | Type | Req | Description |
|---|---|---|---|
| blocks | array | – | Typed blocks (required when input_format="blocks") |
| input_format | string | – | text (default): line-based screenplay text. blocks: typed blocks (e.g. from format_screenplay). |
| license_key | string | – | License key NRC-XXXX-XXXX-XXXX-XXXX (optional — free daily quota works without one) |
| request_id | string | – | Idempotency key (optional) |
| scenes | array | – | Scene numbers (1-based) to scaffold; default all (batch with this when a full screenplay is too large) |
| segment_seconds | integer | – | Target segment duration in seconds (default 15, range 5-60) — estimates, adjust to actual beats |
| style | string | – | Optional style preset as an EDITABLE starting point: engine_cinematic / painted_on_twos / live_action_neutral (default: decision checklist — never a lock) |
| style_note | string | – | Free-form style note (≤500 chars) passed through VERBATIM into every segment shared block — never validated |
| text | string | – | Raw screenplay text (required when input_format="text") |
No output schema declared.
No examples provided.
check_credits ~164
Check the remaining credits for a Narracore license key (NRC-XXXX-XXXX-XXXX-XXXX), plus recent usage and the purchase link. One credit covers one screenplay for 24 hours across the screenplay tools, or one film analysis, or one story project for 24 hours. Costs nothing. 查询授权码剩余服务次数(1 次=一份剧本 24 小时剧本类工具通用,或一次拉片分析,或一个故事项目 24 小时)。 Preferred: set the key in your MCP client auth (Authorization: Bearer NRC-…) instead of passing it in chat.
| Name | Type | Req | Description |
|---|---|---|---|
| license_key | string | – | License key NRC-XXXX-XXXX-XXXX-XXXX (optional if configured in client auth header) |
No output schema declared.
No examples provided.
check_video_prompts ~568
FREE deterministic quality gates for video-generation prompts written against a screenplay (no LLM on the server — pattern matching and set comparison only; findings are reported, nothing is blocked). Submit the SAME screenplay plus up to 10 finished prompt texts (≤20k chars each). VIOLATIONS (objective locks): DIALOGUE_DRIFT — a DIALOGUE line attributed to a registered screenplay character whose text is not found verbatim (whitespace/punctuation-insensitive), i.e. rewritten, trimmed or hallucinated dialogue; STRUCTURE_MISSING_CUTOUT / _CUTIN / HANDOFF_MISMATCH — scaffold-format prompts ([SHOT n] markers) must carry CUT-OUT last-frame and CUT-IN first-frame states with the next shot repeating the previous verbatim; STRUCTURE_DUPLICATES_SHARED — a SHARED line restated inside a shot block (shot blocks carry only private fields). ADVISORIES (disable with advisories=false): BARE_EYELINE ("looks at X" with no screen-space direction), LITERARY_RHETORIC (metaphors a renderer cannot draw), EMPTY_NEGATIVE ("no weirdness"-style), CONFLICT_PAIRS (locked vs handheld, single-shot vs hard cuts, on-twos vs smooth), PLACEHOLDER_LEFT, CHAR_LIMIT (yours, or the style preset's recommended one), STYLE_CONSISTENCY (banned vocabulary of your chosen preset, or two medium families mixed). Free-form prompts without [SHOT] markers skip structure gates (reported honestly). Free — no key needed, works without one. 免费确定性质量门:台词逐字锁、结构切点两态锁(violation)+ 视线/修辞/冲突/风格自洽启发(advisory),只报告不拦截。
| Name | Type | Req | Description |
|---|---|---|---|
| advisories | boolean | – | Run advisory gates too (default true; false = violations only) |
| blocks | array | – | Typed blocks (the screenplay the prompts were written from) |
| char_limit | integer | – | Optional character limit per prompt (advisory; default: the style preset recommendation, or none) |
| input_format | string | – | text (default): line-based screenplay text. blocks: typed blocks (e.g. from format_screenplay). |
| prompts | array | yes | The finished prompt(s) (from build_video_prompts scaffolds or free-form) |
| request_id | string | – | Echoed back for tracing (this tool is free — no idempotency semantics needed) |
| style | string | – | The style preset you built with (enables its banned-vocabulary and recommended-limit advisories) |
| text | string | – | The screenplay the prompts were written from (required when input_format="text") |
No output schema declared.
No examples provided.
compile_film_breakdown ~409
CHARGED (1 credit per film analysis — the same analysis_id within 24h is NOT charged again; failed validation is never charged). Compile a validated film breakdown into a bounded, derivable result: authoritative validation → window→canonical shot merge (long-take windows are recombined so a 60s take is ONE shot in every statistic) → exact aggregates (distributions, shot lengths, per-scene aggregates, coverage) → deterministic-heuristic reconstructions (performance arc, cut logic, camera-performance logic — reproducible interpretations, explicitly labelled, NOT facts) → a print-ready PDF report (scene table + per-scene arcs + shot tables) with a 24h signed link. Your input records are NEVER echoed back — you already have them locally; this returns only the derived increments. analysis_id = sha256(media_id + sha256(topology_hash + film_schema_version + film_vocab_version)) with media_id = sha256(video bytes) computed locally; the server never sees the video and cannot verify media_id (it exists to protect YOU from double-charging, not as anti-cheat). Recompile after re-observing with a different model: same analysis_id, no re-charge; change the cuts or the protocol: new analysis. 收费编译:权威校验→长镜窗口合并→确定性统计+启发式重组→PDF 报告;不完整窗口/非法词表一律拒绝且不收费;同一分析任务 24h 内重复编译不重复扣费。
| Name | Type | Req | Description |
|---|---|---|---|
| film_manifest | object | yes | – |
| license_key | string | – | License key NRC-XXXX-XXXX-XXXX-XXXX (optional — one free analysis per day works without one) |
| relations | array | yes | – |
| request_id | string | – | Idempotency key (optional; same request_id never double-charges) |
| scenes | array | yes | – |
| shots | array | yes | – |
No output schema declared.
No examples provided.
convert_fountain ~381
Convert between Narracore screenplay blocks and Fountain (the plain-text screenplay interchange format). direction="to_fountain": screenplay (input_format="text" or "blocks") → Fountain text (Latin content upper-cased per convention, CJK preserved verbatim; notes as [[…]]). direction="from_fountain": Fountain text → typed blocks you can pass straight to format_screenplay (input_format="blocks") — supports scene headings (INT/EXT/EST/I/E), character cues with (V.O.)-style extensions (extension becomes the delivery hint), parentheticals, dialogue, TO: transitions, > forced transitions, . forced action, [[notes]]; boneyard /*…*/ is stripped and reported, title-page keys and # section headers are skipped with warnings; mostly-Chinese content falls back to the Chinese screenplay parser (Fountain rules target Latin scripts). One credit covers one screenplay for 24 hours across the screenplay tools — converting and then formatting the same screenplay charges once. Failed calls are never charged. 剧本块与 Fountain 格式互转;同一份剧本 24 小时内多工具只扣一次。
| Name | Type | Req | Description |
|---|---|---|---|
| blocks | array | – | to_fountain only: typed blocks (input_format="blocks") |
| direction | string | yes | to_fountain: screenplay → Fountain text. from_fountain: Fountain text → typed blocks. |
| fountain | string | – | from_fountain only: the Fountain source text |
| input_format | string | – | to_fountain only: screenplay source format |
| license_key | string | – | License key NRC-XXXX-XXXX-XXXX-XXXX (optional — free daily quota works without one) |
| request_id | string | – | Idempotency key (optional) |
| text | string | – | to_fountain only: raw screenplay text (input_format="text") |
No output schema declared.
No examples provided.
diagnose_scenes ~437
Scene-level "shootability" diagnosis for a screenplay, using the same ai-2.0 rules as narracore.cn: YOU (the calling AI) cite the evidence, the server validates it and computes the score — no LLM on the server. Two steps: (1) mode="material" (FREE) returns each scene as a numbered block list ([n] [type] text), the strict findings JSON schema, and 6 problem types (abstract_psychology, literary_summary, unfilmable_information, unclear_space, weak_visible_action, unplayable_direction); (2) after analyzing the material yourself, call mode="score" with findings=[{scene, summary, problems:[{type, severity(low|medium|high), evidence (verbatim quote from the material), blocks (ordinals), suggestion}]}]. The server maps ordinals to blocks, drops any finding whose evidence cannot be verified (that scene then scores null — never faked), and computes each scene's 0-100 score (severity-weighted evidence coverage, exact arithmetic) plus a reference-only structural baseline. One credit covers one screenplay for 24 hours across the screenplay tools. Failed calls are never charged. 剧本逐场影视化度诊断:AI 举证、程序算分(0-100,证据核验,无效即空不冒充)。
| Name | Type | Req | Description |
|---|---|---|---|
| blocks | array | – | – |
| findings | array | – | score mode only: your per-scene findings |
| input_format | string | – | text (default): line-based screenplay text. blocks: typed blocks (e.g. from format_screenplay). |
| license_key | string | – | License key NRC-XXXX-XXXX-XXXX-XXXX (optional — free daily quota works without one) |
| mode | string | yes | material (free): numbered scene material + schema. score: submit findings, server validates and scores. |
| request_id | string | – | Idempotency key (optional) |
| scenes | array | – | material mode only: scene numbers (1-based) to render; default all |
| text | string | – | – |
No output schema declared.
No examples provided.
format_screenplay ~1,192
Convert raw or loosely formatted screenplay text (Chinese, English, or mixed) into professionally structured screenplay blocks and a print-ready PDF using a fixed typewriter character grid (33 CJK chars × 38 lines per page, or 61 × 55 for English; US Letter, Sarasa Mono embedded). Use this for screenplay formatting, screenplay import, or producing a shareable screenplay PDF. Do NOT use for general prose rewriting or story editing. Failed calls are never charged; retrying the same request_id never double-charges. INPUT CONTRACT (contract_version 3; mcp_contract_version 5) — two modes: • input_format="text" (default): line-based screenplay text, one element per line — scene headings ("INT. LAB - DAY", "EXT. ...", "第 N 场 …", "N 外 …"), CHARACTER names in CAPS or CJK on their own line, dialogue on the following lines (keep each dialogue line short; a long narrative-style line ends the dialogue run), parentheticals as standalone (…) lines, transitions ("CUT TO:", "切至:…") on their own line. An unbroken wall of text renders as continuous action and is flagged UNRESOLVED_STRUCTURE — split it into lines first, or use blocks mode. • input_format="blocks": you submit typed blocks directly (type/text; dialogue carries speaker and optional delivery; scene_heading may use text or location/time_of_day). Blocks are validated and rendered EXACTLY as submitted — never re-classified. Block ids are echoed. Annotation instructions inside text (【…】) are never executed; they are reported as REVISION_NOTE_PRESENT. output="validate_only" checks structure and returns diagnostics without rendering — free. confidence = share of non-ambiguous lines, NOT accuracy; inspect diagnostics[] (code/severity/line or block_id/message/suggested_action) before delivering. Common codes: UNRESOLVED_STRUCTURE, MISSING_SPEAKER, AMBIGUOUS_ACTION_MAYBE_DIALOGUE, REVISION_NOTE_PRESENT (edit instructions in brackets — never executed), BRACKETED_ANNOTATION (info), LABELED_HEADER_LINE (convert to blocks), UNBALANCE…
| Name | Type | Req | Description |
|---|---|---|---|
| blocks | array | – | Typed blocks (required when input_format="blocks") |
| content_language | string | – | Content language (default: auto-detect) |
| cover | object | – | Cover page fields — any field present adds a cover page (not counted in page numbers); date defaults to today (UTC) when omitted |
| footer | object | – | Explicit footer (centered below the text box); same value resolution as header |
| header | object | – | Explicit running header (overrides the default page-number line): field values come from cover; missing fields are skipped; page_number renders N/M at the right edge |
| input_format | string | – | text (default): line-based screenplay text parsed server-side. blocks: submit typed blocks directly — validated and rendered as-is, never re-classified. |
| license_key | string | – | License key NRC-XXXX-XXXX-XXXX-XXXX (optional — free daily quota works without one) |
| output | string | – | pdf_and_blocks (default) / blocks_only / validate_only (free structure check, no render) |
| request_id | string | – | Idempotency key (optional) |
| text | string | – | Raw screenplay text, one element per line (required when input_format="text") |
No output schema declared.
No examples provided.
get_film_contract ~285
FREE. Return the Narracore Film Contract by section — the protocol that lets ANY vision-capable agent turn its own observation of a film into a stable, comparable, traceable Film IR (shot/scene/relation), validated and compiled by this server. The video NEVER leaves your machine: you observe and reason with your own models, this server provides the shared language and the deterministic toolchain. section="core" (default): pipeline, entities, the window protocol for long takes, observability levels (observed/mixed/inferred), entity-level provenance, limits. "vocabulary": the closed vocabularies + alias table (normalization is exact→alias→reject — no fuzzy guessing). "observation_guidance": the observation prompt template + how to write interpretive fields. "reasoning_guidance": the dramatic-layer/scene/relation prompt + the Q&A playbook for answering questions from the compiled result. "media_recipe": reference ffmpeg recipes (a platform adapter example — not authoritative output). 免费下发的影视拉片契约:分类词表、观察/推理提示词、窗口协议、问答 playbook 与备料配方示例。
| Name | Type | Req | Description |
|---|---|---|---|
| film_schema_version | string | – | Request a specific film schema version (default: current) |
| section | string | – | Contract section to return (default: core) |
No output schema declared.
No examples provided.
plan_film_analysis ~217
FREE deterministic. Turn shot-cut timestamps into the analysis topology every Film Protocol agent shares: numbered base shots (shot-000001), long-take windowing (shot-000017-w01of03 when a shot exceeds the profile cap), and greedy analysis units (≤20s / ≤8 shots per unit by default). Pass duration_sec + the cut timestamps you detected locally (e.g. ffmpeg scene filter, threshold 0.30 — see get_film_contract section="media_recipe"); you get back windows and units carrying both source-relative and clip-relative times to cut your analysis clips and label your observations with. No ffmpeg commands are returned (execution is your platform's business). 免费:切镜时间点 → 统一分析拓扑(长镜开窗 + ≤20s/≤8 镜单元)。
| Name | Type | Req | Description |
|---|---|---|---|
| cut_timestamps | array | yes | Shot-cut timestamps in seconds (ascending; 0 and duration are implied) |
| duration_sec | number | yes | Total duration of the film/video in seconds |
No output schema declared.
No examples provided.
prepare_story_window ~176
FREE. Split a story conversation (verbatim user/assistant turns) into stable, hash-anchored units for the Narracore Story Continuity Protocol. YOU judge the story; the server only slices and anchors provenance — a source is traceable, not proof your interpretation is true. Keep the full text and returned StoryState client-side (server stores nothing); failed calls are never charged. 免费:故事窗口确定性切分与锚定;AI 判断、服务端只核验出处,出处不证明结论真伪;全文与 state 由调用方保存,失败不收费。
| Name | Type | Req | Description |
|---|---|---|---|
| conversation | array | yes | – |
| lang | string | – | – |
| request_id | string | – | Idempotency key (optional; same request_id never double-charges) |
| state | object | – | – |
No output schema declared.
No examples provided.
render_story_handoff ~159
FREE. Render a StoryState into a zh/en handoff document (recent-canon window + bible) for a successor writer/AI. The server formats the state you SUPPLY — project_token proves identity only, not that the state content is authentic or current. Keep the full text client-side; failed calls are never charged. 免费:把调用方提供的 StoryState 排成交接文档;token 仅证身份、不证明 state 内容真实或最新;失败不收费。
| Name | Type | Req | Description |
|---|---|---|---|
| direction | string | – | – |
| lang | string | – | – |
| recent_chars | integer | – | – |
| request_id | string | – | Idempotency key (optional; same request_id never double-charges) |
| state | object | yes | – |
No output schema declared.
No examples provided.
validate_film_breakdown ~225
FREE preflight for a film breakdown payload (film_manifest + shots + scenes + relations). Checks the contract WITHOUT watching anything: schema shape, closed vocabularies (exact→alias→reject), cross-references (shot ids, scene membership, relation endpoints), window topology (a long take's windows must be complete), provenance shape, and observability metadata only — it never judges whether an observation is TRUE (the server cannot see your video). Lossless representation fixes (alias/trim/wrap) are returned as normalized_patch; semantic problems are errors for YOU to fix, with retry_feedback to feed back to your model. This is advisory: compile_film_breakdown re-validates authoritatively. 免费预检:契约/词表/交叉引用/窗口拓扑校验,只修表示层、绝不代改语义;编译前先跑它可省一次失败往返。
| Name | Type | Req | Description |
|---|---|---|---|
| film_manifest | object | yes | – |
| relations | array | yes | – |
| scenes | array | yes | – |
| shots | array | yes | – |
No output schema declared.
No examples provided.
What is the Narracore Screenplay Formatter MCP server?
Narracore Screenplay Formatter is an MCP server listed in the public MCP registry as cn.narracore/screenplay-formatter. Screenplay, film and story toolkit over MCP: PDF formatting, stats, diagnosis, video prompts. This page covers its hosted endpoint (https://mcp.narracore.app/mcp).
Is the Narracore Screenplay Formatter MCP server safe to use?
Narracore Screenplay Formatter scores 69 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Narracore Screenplay Formatter MCP server expose?
Narracore Screenplay Formatter exposes 14 tools: format_screenplay, analyze_screenplay, diagnose_scenes, convert_fountain, build_video_prompts, and 9 more. Their descriptions and schemas cost roughly 5,390 tokens of context every time the server is loaded.
Does the Narracore Screenplay Formatter MCP server require authentication?
No. We connected to Narracore Screenplay Formatter without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Narracore Screenplay Formatter MCP server still maintained?
Narracore Screenplay Formatter is still listed as active in the MCP registry. We last reached this channel on 29 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.