Skip to main content
Glama

Narracore Screenplay Formatter

Free prompt quality gates

check_video_prompts
Read-onlyIdempotent

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),只报告不拦截。

Input Schema

NameRequiredDescriptionDefault
textNoThe screenplay the prompts were written from (required when input_format="text")
styleNoThe style preset you built with (enables its banned-vocabulary and recommended-limit advisories)
blocksNoTyped blocks (the screenplay the prompts were written from)
promptsNoThe finished prompt(s), 1-10 items (from build_video_prompts scaffolds or free-form)
advisoriesNoRun advisory gates too (default true; false = violations only)
char_limitNoOptional character limit per prompt (advisory; default: the style preset recommendation, or none)
request_idNoEchoed back for tracing (this tool is free — no idempotency semantics needed)
input_formatNotext (default): line-based screenplay text. blocks: typed blocks (e.g. from format_screenplay).

Output Schema

NameRequiredDescriptionDefault
okYes
toolNo
stateNo
styleNo
reasonNo
totalsNo
messageNo
promptsNo
recoveryNo
conflictsNo
advisoriesNo
request_idNo
screenplayNo
diagnosticsNo
gates_versionNo
contract_versionNo
style_template_versionNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / prompts / description
      Previous value: -"The finished prompt(s) (from build_video_prompts scaffolds or free-form)"New value: +"The finished prompt(s), 1-10 items (from build_video_prompts scaffolds or free-form)"
    • removedInput schema / properties / prompts / minItems
      Removed value: -1
    • removedInput schema / required
      Removed value: -[
      -  "prompts"
      -]
  2. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "advisories": {
      +      "type": "boolean"
      +    },
      +    "conflicts": {},
      +    "contract_version": {
      +      "type": "string"
      +    },
      +    "diagnostics": {
      +      "items": {
      +        "additionalProperties": {},
      +        "properties": {
      +          "block_id": {
      +            "type": "string"
      +          },
      +          "code": {
      +            "type": "string"
      +          },
      +          "line": {
      +            "type": "number"
      +          },
      +          "message": {
      +            "type": "string"
      +          },
      +          "severity": {
      +            "type": "string"
      +          },
      +          "suggested_action": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "code",
      +          "severity",
      +          "message"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "gates_version": {
      +      "type": "string"
      +    },
      +    "message": {
      +      "type": "string"
      +    },
      +    "ok": {
      +      "type": "boolean"
      +    },
      +    "prompts": {
      +      "items": {},
      +      "type": "array"
      +    },
      +    "reason": {
      +      "type": "string"
      +    },
      +    "recovery": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "action": {
      +          "type": "string"
      +        },
      +        "field_path": {
      +          "type": "string"
      +        },
      +        "keep_request_id": {
      +          "type": "boolean"
      +        },
      +        "note": {
      +          "type": "string"
      +        },
      +        "resets_at_utc": {
      +          "type": "string"
      +        },
      +        "retry_after_ms": {
      +          "type": "number"
      +        },
      +        "retryable": {
      +          "type": "boolean"
      +        }
      +      },
      +      "required": [
      +        "action",
      +        "retryable",
      +        "keep_request_id"
      +      ],
      +      "type": "object"
      +    },
      +    "request_id": {
      +      "type": "string"
      +    },
      +    "screenplay": {},
      +    "state": {},
      +    "style": {},
      +    "style_template_version": {
      +      "type": "string"
      +    },
      +    "tool": {
      +      "const": "check_video_prompts",
      +      "type": "string"
      +    },
      +    "totals": {}
      +  },
      +  "required": [
      +    "ok"
      +  ],
      +  "type": "object"
      +}
  3. Changed1 schema field changed
    • addedInput schema / properties / blocks / items / properties / text / maxLength
      Added value: +200000
  4. Added

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly/idempotent/non-destructive), yet the description adds significant behavior: no LLM on the server, pure pattern matching and set comparison, findings are reported and nothing is blocked, free with no key required, and the exact violation vs advisory taxonomy with the escape hatch (advisories=false). That is well beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The load-bearing sentence (free, deterministic, screenplay-vs-prompts comparison, report-only) is front-loaded, and every sentence carries gate semantics. The violation/advisory enumeration is dense and reads as a wall of text, but given the number of distinct gates it is mostly justified.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is not required. Combined with 100% schema coverage and explicit annotations, the description leaves no gap an agent needs in order to call this tool correctly, including the free-form vs scaffolded branch.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3; the description still adds meaning by clarifying that up to 10 prompt texts at <=20k chars each are accepted, that style enables preset-specific banned-vocabulary/limit advisories, and that char_limit defaults to the style preset recommendation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'deterministic quality gates for video-generation prompts written against a screenplay'. It also names the sibling workflow it consumes ('build_video_prompts scaffolds') and distinguishes itself from siblings that analyze/validate the screenplay rather than the prompts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operational context: submit the SAME screenplay plus 1-10 prompt texts, free-form prompts without [SHOT] markers skip structure gates, advisories can be disabled. It does not explicitly say when to prefer this over siblings like analyze_screenplay or validate_film_breakdown, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.