Skip to main content
Glama

Narracore Screenplay Formatter

Story handoff document

render_story_handoff
Read-onlyIdempotent

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 内容真实或最新;失败不收费。

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
langNoen
stateYes
directionNo
request_idNoIdempotency key (optional; same request_id never double-charges)
recent_charsNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
okYes
langNo
toolNo
stateNo
reasonNo
handoffNo
messageNo
recoveryNo
conflictsNo
directionNo
request_idNo
diagnosticsNo
contract_versionNo

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": {},
      +  "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"
      +    },
      +    "direction": {
      +      "type": "string"
      +    },
      +    "handoff": {
      +      "type": "string"
      +    },
      +    "lang": {
      +      "type": "string"
      +    },
      +    "message": {
      +      "type": "string"
      +    },
      +    "ok": {
      +      "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"
      +    },
      +    "state": {},
      +    "tool": {
      +      "const": "render_story_handoff",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "ok"
      +  ],
      +  "type": "object"
      +}
  2. Added

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover readOnly, idempotent and non-destructive behavior, yet the description adds genuinely new operational facts: the call is FREE, failed calls are never charged, and project_token proves identity only — not the authenticity or freshness of the supplied state. The warning to keep full text client-side is also useful. It stops short of describing output structure or limits, so a 4.

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-loads the most important qualifier ('FREE') and then the purpose, with the authenticity caveat following. The bilingual restatement roughly doubles the length, which is defensible for a zh/en-targeted tool but does introduce redundancy. Every sentence otherwise carries weight.

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?

An output schema exists, so return-format explanation is rightly omitted, and annotations cover the safety profile. The description supplies the non-obvious trust and billing context an agent needs. It is slightly thin on the tuning parameters (recent_chars, direction), which is the only material gap.

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

Parameters3/5

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

Schema coverage is only 20% across 5 parameters. The description adds real meaning for project_token (identity-only, not content validation) and implicitly covers lang (zh/en) and the state payload. However, recent_chars (window size), direction, and the idempotency behavior of request_id are left to the schema, so it does not fully compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource: 'Render a StoryState into a zh/en handoff document (recent-canon window + bible) for a successor writer/AI.' The purpose and output artifact are unambiguous. It does not explicitly name or contrast with siblings such as prepare_story_window or absorb_story_window, so it earns a 4 rather than a 5.

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

Usage Guidelines3/5

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

The intended consumer (a successor writer/AI) implies the usage context, but there is no explicit when-to-use versus alternatives like prepare_story_window, nor any stated prerequisites or when-not-to-use conditions. Guidance is inferable but not spelled out.

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.