Skip to main content
Glama

Narracore Screenplay Formatter

Free breakdown preflight

validate_film_breakdown
Read-onlyIdempotent

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. 免费预检:契约/词表/交叉引用/窗口拓扑校验,只修表示层、绝不代改语义;编译前先跑它可省一次失败往返。

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
shotsYes
scenesYes
relationsYes
film_manifestYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYes
toolNo
stateNo
statsNo
validNo
reasonNo
messageNo
recoveryNo
conflictsNo
info_countNo
request_idNo
diagnosticsNo
error_countNo
warning_countNo
retry_feedbackNo
patch_truncatedNo
contract_versionNo
normalized_patchNo
diagnostics_truncatedNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "http://json-schema.org/draft-07/schema#",
      +  "additionalProperties": false,
      +  "properties": {
      +    "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"
      +    },
      +    "diagnostics_truncated": {
      +      "type": "boolean"
      +    },
      +    "error_count": {
      +      "type": "number"
      +    },
      +    "info_count": {
      +      "type": "number"
      +    },
      +    "message": {
      +      "type": "string"
      +    },
      +    "normalized_patch": {
      +      "items": {},
      +      "type": "array"
      +    },
      +    "ok": {
      +      "type": "boolean"
      +    },
      +    "patch_truncated": {
      +      "type": "boolean"
      +    },
      +    "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"
      +    },
      +    "retry_feedback": {
      +      "type": "string"
      +    },
      +    "state": {},
      +    "stats": {},
      +    "tool": {
      +      "const": "validate_film_breakdown",
      +      "type": "string"
      +    },
      +    "valid": {
      +      "type": "boolean"
      +    },
      +    "warning_count": {
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "ok"
      +  ],
      +  "type": "object"
      +}
  2. Changed6 schema fields changed
    • addedInput schema / properties / film_manifest / additionalProperties
      Added value: +false
    • addedInput schema / properties / relations / items / additionalProperties
      Added value: +false
    • addedInput schema / properties / scenes / items / additionalProperties
      Added value: +false
    • addedInput schema / properties / scenes / items / properties / entity_provenance / additionalProperties
      Added value: +false
    • addedInput schema / properties / shots / items / additionalProperties
      Added value: +false
    • addedInput schema / properties / shots / items / properties / entity_provenance / additionalProperties
      Added value: +false
  3. Added

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description adds substantive behavior beyond them: it never watches video or judges observation truth, only fixes the representation layer, separates lossless fixes (normalized_patch) from semantic errors, and is advisory rather than authoritative. That is rich context an agent needs to interpret results correctly.

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?

Front-loaded with the key qualifier (FREE preflight) and dense with signal, but the fully duplicated Chinese sentence adds length without adding information for a single-language reader. Structure is otherwise tight with no filler sentences.

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

Completeness4/5

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

For a 4-param nested validation tool with an output schema, the description is close to complete: it scopes what is and isn't validated and explains the advisory relationship to compile_film_breakdown. Return-value details are correctly delegated to the output schema, so no gap there; only the nested field-level semantics are left to the schema.

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 0%, so the description must compensate; it names all four top-level parameters and assigns each a validation role (cross-referencing shot ids, scene membership, relation endpoints, window completeness for long takes). It does not enumerate the many nested layer/provenance fields, but it covers the parameters that matter for invocation.

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 (validate) and resource (a film breakdown payload of film_manifest + shots + scenes + relations), then enumerates the exact checks: schema shape, closed vocabularies, cross-references, window topology, provenance, observability metadata. It explicitly distinguishes itself from compile_film_breakdown as the non-authoritative preflight.

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

Usage Guidelines5/5

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

Gives explicit when-to-use guidance ('compile_film_breakdown re-validates authoritatively' and the Chinese line advising to run it before compiling to save a failed round trip), plus what to do with results (normalized_patch vs errors, retry_feedback to feed back to the model). Nothing is left to inference.

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.