kinoscripter
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@kinoscripterList my kinoscripts and read the cold open."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
kinoscripter-mcp
Let your own agent write with you in Kinoscripter, the audio-visual script editor on parker.mov.
Kinoscripter has no AI of its own and never asks for a key. Instead, this small local
MCP server gives the agent you already use (Claude, Cursor,
Hermes, or any client that can launch a command) tools to read and edit your scripts. They're plain
.kinoscript.json files in one folder on your computer.
Local only. It talks to your agent over stdio and reads and writes the one folder you give it. No network, no telemetry, no accounts.
No dependencies. One file of server code plus the editor's own script operations (
lib/kinoscript.js). Read it all before you run it; that's the point of this repo.Safe writes. It never writes an invalid script, never writes outside its folder (symlinks included), writes atomically, and with
ifUpdatedAtit refuses to overwrite a file that changed since the agent read it.
Needs Node 18.17 or newer.
Set up
1. Add the server to your agent, pointing at a folder for your scripts (it's created if missing).
Claude Code:
claude mcp add kinoscripter -- npx -y github:ParkerGibbons/kinoscripter-mcp ~/KinoscriptsAny client with an mcpServers config (Claude Desktop, Cursor, …):
{
"mcpServers": {
"kinoscripter": {
"command": "npx",
"args": ["-y", "github:ParkerGibbons/kinoscripter-mcp", "/Users/you/Kinoscripts"]
}
}
}Prefer not to run code from the network each time? Clone this repo and point your agent at it:
"command": "node", "args": ["/path/to/kinoscripter-mcp/server.mjs", "/Users/you/Kinoscripts"].
2. Open the same folder in Kinoscripter. In the editor choose actions → open folder… (Chrome or Edge). The agent's edits appear in the open script as they land, and yours save back to the files as you type. Other browsers: export your script into the folder, and import what the agent writes.
3. Ask. "List my kinoscripts." "Read the cold open and tighten the VO." "Add a scene after the interview: a slow push on the empty workshop, room tone and a single tool clink."
Related MCP server: a0
Tools
Tool | Does |
| scripts in the folder, with acts / scenes / beats |
| the script as text with scene and beat ids (or |
| a new file: one act, one scene, one empty beat (never overwrites) |
| a beat (VIDEO + AUDIO) after a beat, at the end of a scene, or at the end |
| replace a beat's VIDEO and/or AUDIO |
| structure, renumbered like the editor does |
| check a file against the editor's structure rules |
Text goes in as plain lines with a little markdown (# headings, - bullets, > quotes,
**bold**, *italic*).
Limits, honestly
One person and their agent, not multi-user collaboration. Two writers racing the same file can still lose an edit between a read and a write;
ifUpdatedAtnarrows that, it doesn't remove it.The folder is yours and trusted: the server isn't a sandbox against other programs on your machine.
Live folder sync uses the File System Access API, so Chrome and Edge only for now.
Develop
node server.mjs ~/Kinoscripts # or KINOSCRIPTER_DIR=~/Kinoscripts node server.mjs
npm test # drives the server over stdioThis repo is exported from parker.mov's source, where the editor and the server share
lib/kinoscript.js. Issues and ideas are welcome here.
MIT licensed.
Available Tools
8 toolscreate_scriptA
Create a new script file (one act, one scene, one empty beat). Never overwrites.
| Name | Required | Description | Default |
|---|---|---|---|
| file | No | Optional file name; defaults to the slugged title. | |
| title | Yes | ||
| synopsis | No | One or two sentences. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does usefully disclose the default scaffold contents and the no-clobber property ("Never overwrites"), which is real behavioral value. However it does not say what happens if a script with that title/file already exists (error vs. silent no-op vs. returns existing), nor whether filesystem permissions or workspace scoping apply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero filler, with the resource and the resulting structure front-loaded and the safety constraint immediately after. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter creation tool with no output schema and no annotations, the definition covers what is created and that it will not clobber. It still leaves the agent guessing about the return value (file path? identifier?) and the collision/error behavior, which matter for a create operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description's only parameter-relevant content is the implicit title→slugged-file-name linkage. The required `title` parameter has no description in the schema and no explanation here (format, uniqueness, length), and `synopsis` is left entirely to the schema. Some value added, but the coverage gap is not compensated.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create a new script file") and adds the concrete default scaffold (one act, one scene, one empty beat), which tells the agent exactly what exists after the call. Siblings like list_scripts/read_script make the create-vs-read split obvious, but the description never names a sibling or draws the boundary explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers this is the entry point before insert_act/insert_scene/insert_beat. There is no statement of when to use this versus editing an existing script, and no preconditions given. "Never overwrites" hints at a constraint but is not framed as guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_beatC
Replace the video and/or audio of a beat. Plain text; one line per paragraph. A little markdown is kept: "# " headings, "- " bullets, "> " quotes, bold, italic.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Script file name in the folder, e.g. "fog-signal.kinoscript.json" (from list_scripts). | |
| audio | No | ||
| video | No | ||
| beatId | Yes | ||
| ifUpdatedAt | No | Optional: the updated_at you last read. The write is refused if the file changed since. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses plain-text formatting and markdown retention, but it does not describe permission requirements, whether replacement is reversible, how omitted audio/video fields behave, or concurrency implications beyond the schema's ifUpdatedAt field.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core action and stays compact. The formatting details about plain text and retained markdown are specific and earn their place, with no redundant restatement of the tool name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 5-parameter mutation tool with no annotations and no output schema, the description is incomplete. It does not explain the required file/beatId relationship, what happens when only one media field is supplied, expected return behavior, or any failure modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 40%, so the description must compensate. It adds meaning for the otherwise undocumented audio and video parameters by saying they are the fields being replaced and are optional ('and/or'), while file and ifUpdatedAt are already documented in the schema. The required beatId parameter remains unexplained in both the description and schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Replace the video and/or audio of a beat.' An agent can understand the core operation without opening the schema. It does not explicitly differentiate from siblings such as insert_beat, but 'replace' implies editing an existing beat rather than inserting a new one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives like insert_beat, create_script, or read_script. The only implied usage is replacing media on an existing beat, but no prerequisites, exclusions, or sibling routing are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_actA
Add an act (with one scene and one beat) at the end, or after act N (1-based).
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Script file name in the folder, e.g. "fog-signal.kinoscript.json" (from list_scripts). | |
| heading | No | What happens in this act. | |
| afterAct | No | ||
| ifUpdatedAt | No | Optional: the updated_at you last read. The write is refused if the file changed since. | |
| sceneHeading | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose an important side effect — that one scene and one beat are created alongside the act — which an agent could not infer from the name. However it says nothing about index shifting for later acts, permissions, failure modes, or what happens to existing structure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the operation, then the cascade, then the placement options. Nothing is redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a write tool with no annotations and no output schema, the description is only adequate. It omits what is returned (relevant since ifUpdatedAt suggests a read-modify-write loop), whether the write can fail validation, and how the new act indexes affect subsequent calls.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 60%: file, heading, and ifUpdatedAt are documented in the schema, while afterAct and sceneHeading are bare. The description compensates for afterAct by defining it as 1-based and as the insertion point, and implies a scene is generated with a heading, giving real meaning beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Add an act") plus its scope (one scene, one beat) and its placement (end or after act N). This implicitly separates it from insert_scene and insert_beat, which operate one level down, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"at the end, or after act N (1-based)" tells the agent the two positioning modes, which is useful. But there is no guidance on when to prefer insert_scene/insert_beat instead, nor any prerequisite note (e.g. that the script should be read or validated first, or the role of ifUpdatedAt).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_beatA
Add a beat (one moment: what we see beside what we hear). Goes after afterBeatId, else at the end of sceneId, else at the end of the script. Plain text; one line per paragraph. A little markdown is kept: "# " headings, "- " bullets, "> " quotes, bold, italic.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Script file name in the folder, e.g. "fog-signal.kinoscript.json" (from list_scripts). | |
| audio | No | What we hear. | |
| video | No | What we see. | |
| sceneId | No | ||
| afterBeatId | No | ||
| ifUpdatedAt | No | Optional: the updated_at you last read. The write is refused if the file changed since. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It usefully discloses insertion precedence and text/markdown handling, but omits error behavior for invalid IDs, mutation/file side effects, and return/result behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three front-loaded sentences cover purpose, placement, and formatting with no filler. The markdown examples are compact and each detail supports correct invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter mutation tool with no annotations and no output schema, the description supplies the non-obvious insertion and formatting rules. It is enough to invoke correctly, though error and return behavior remain uncovered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, and the description adds important semantics for the undocumented sceneId and afterBeatId parameters by explaining the insertion fallback order. The schema already documents file, audio, video, and ifUpdatedAt, so the remaining parameter gap is minor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Add') and resource ('beat') and defines a beat as one moment of video beside audio, so an agent knows this creates a new beat rather than editing one. It does not explicitly name edit_beat or the scene/act insertion siblings to clarify routing, so it is clear but not maximally differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when adding a new beat and gives useful placement fallback via afterBeatId, sceneId, and script end. However, it never names edit_beat as the alternative for modifying beats or states when not to use this tool, leaving alternatives to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
insert_sceneB
Add a scene (with one beat) after afterSceneId, else at the end of act N (1-based), else at the end.
| Name | Required | Description | Default |
|---|---|---|---|
| act | No | ||
| file | Yes | Script file name in the folder, e.g. "fog-signal.kinoscript.json" (from list_scripts). | |
| audio | No | ||
| video | No | ||
| heading | No | The scene line, e.g. "the pier, last ferry". | |
| ifUpdatedAt | No | Optional: the updated_at you last read. The write is refused if the file changed since. | |
| afterSceneId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations at all, the description carries the full burden and does contribute the important behavioral facts that a beat is auto-created and that placement follows a fallback chain. It still omits failure behavior, whether the file must exist, what the response contains, and any note on the write-refusal path (ifUpdatedAt lives only in the schema).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with the placement rule front-loaded and no filler. Minor awkwardness ("after afterSceneId") costs it a point but it is well-sized for the tool's scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter mutation tool with no annotations and no output schema, the description covers the placement logic that matters most but leaves the media parameters, error/refusal conditions, and return shape unaddressed. Adequate to invoke successfully in the common case, incomplete for edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 43%, so the description must compensate; it does add real meaning for act ("1-based") and afterSceneId (used as insertion anchor). But audio, video remain completely unexplained in both schema and description, so the compensation is partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Add a scene") and immediately discloses a non-obvious nesting side effect ("with one beat"). The resource-level distinction from siblings like insert_beat and insert_act is clear from the noun, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The placement precedence chain (afterSceneId > act N > end) implicitly tells the agent how to steer the call, which is genuinely useful. However, it never says when to choose insert_beat or insert_act instead, and there are no stated preconditions (e.g., file must already exist, scene id must be valid).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scriptsA
List the Kinoscripter scripts in the folder with their size (acts, scenes, beats).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. 'List' implies a non-mutating read and the description does disclose the shape of each result entry (acts, scenes, beats), but it says nothing about ordering, pagination, empty-folder behavior, or what happens if the folder is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the scope and the returned size metrics are both packed in without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-param read tool with no annotations or output schema, the description covers purpose, scope, and the meaningful content of each entry. It stops short of describing ordering or how the folder itself is determined, but nothing essential to invoking it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate beyond scope, which it does by saying 'in the folder'. Baseline 4 applies for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('Kinoscripter scripts in the folder') and adds what each entry carries (size in acts, scenes, beats). That separates it in practice from read_script, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The listing framing implies a discovery/browse use case that precedes read_script, but the description never says when to use this versus read_script or validate_script. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_scriptA
Read a script. format "text" (default) is the whole script with act/scene/beat ids to quote in edits; "outline" is the same as JSON; "json" is the raw editor document.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Script file name in the folder, e.g. "fog-signal.kinoscript.json" (from list_scripts). | |
| format | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It does disclose the three output modes and their content, which is real behavioral value, but it omits anything about read-only safety, error behavior for a missing file, or size limits, and "outline is the same as JSON" is ambiguous rather than clarifying.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb, then the format variants in a single dense sentence. No wasted sentences, though the semicolon-chained enumeration of three modes is slightly harder to scan than a short list would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two parameters, no annotations, and no output schema, this is close to adequate – the format descriptions effectively describe return shapes. It still leaves error conditions and the ambiguity of "outline is the same as JSON" unexplained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% – the `file` parameter is documented in the schema and the `format` enum is not. The description compensates well by defining all three format values and naming "text" as the default, though it adds nothing about the file parameter itself.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"Read a script" names a specific verb and resource, and the format clauses make clear what comes back. Against siblings like edit_beat or insert_scene the read-only nature is obvious, though the description never explicitly contrasts itself with list_scripts or validate_script.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: the phrase "ids to quote in edits" hints this tool precedes the edit_* family, but there is no explicit when-to-use, when-not-to-use, or statement of the prerequisite that list_scripts supplies the file name (that only appears in the schema).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_scriptA
Check a script file against the editor's structure rules. Lists every problem with its path.
| Name | Required | Description | Default |
|---|---|---|---|
| file | Yes | Script file name in the folder, e.g. "fog-signal.kinoscript.json" (from list_scripts). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden. 'Check' and 'Lists every problem' imply a non-mutating diagnostic and describe the return shape (per-problem paths), which is useful. However, it never explicitly states the file is not modified, whether problems are errors vs warnings, or whether validation stops at the first failure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, zero waste, with the core action front-loaded and the return behavior second. Nothing is padded or restated from the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter, non-destructive tool with a fully described schema, the definition covers what it does and roughly what it returns (a list of problems with paths). Minor gaps remain about output format and rule severity, but no output schema exists so this is largely adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single 'file' parameter is documented with an example filename and a pointer to list_scripts. The description adds nothing about the parameter beyond 'a script file', so the schema does all the work — baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — check a script file against the editor's structure rules — and clearly separates it from siblings like read_script, create_script, or edit_beat, which do not validate. It doesn't name a sibling explicitly, but the validation framing is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this should be run to verify a script's structure, plausibly after edits, but the description never says when to call it, whether it is a prerequisite before other operations, or what alternatives exist. No exclusions or preconditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
8 tool updates
v0.1.0- First observed
create_script - First observed
edit_beat - First observed
insert_act - First observed
insert_beat - First observed
insert_scene - First observed
list_scripts - First observed
read_script - First observed
validate_script
TDQS
Scored across 8 tools
Each tool has a clearly distinct purpose: listing/reading/creating scripts, inserting beats/scenes/acts, editing beats, and validating structure. The insert versus edit distinction is clear, and hierarchical inserts are separated by structural level.
All tool names follow a consistent snake_case verb_noun pattern: list_scripts, read_script, create_script, insert_beat, edit_beat, insert_scene, insert_act, validate_script. There are no mixed conventions or vague standalone verbs.
Eight tools is well-scoped for a script-editing server with acts, scenes, and beats. Each tool maps to a meaningful operation without obvious redundancy or unnecessary surface area.
The core workflow of creating, reading, inserting, editing beats, and validating is covered, but there are no delete/remove operations for scripts, acts, scenes, or beats. Scene/act editing and reordering/moving are also absent, leaving notable lifecycle gaps.
Maintenance
Related MCP Connectors
Read and write your Teleprompter.com scripts and folders: list, create, update, and organize.
Safe folder access for ChatGPT and Claude: read, write and search files, risky tools opt-in.
- flockfsOAuthcom.flockfs
A real-time, multiplayer filesystem for agents and humans: shared files, live edits, history.
Screenplay, film and story toolkit over MCP: PDF formatting, stats, diagnosis, video prompts.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables AI clients to inspect and carefully edit a bounded local workspace via stdio, with a read-only default, conflict-safe updates, and no network listener or telemetry.102Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to open, edit, check, run, emit, and save source programs through structured, revision-checked tools over stdio, confining paths to the launch root and returning diagnostics with fixes for rejected edits.6 npm2Apache 2.0
- AlicenseNot gradedqualityCmaintenanceGives MCP-capable agents read and write access to a SilverBullet space, letting them list, read, create, overwrite, append to, delete, and substring-search markdown pages. It forwards tool calls to SilverBullet's built-in /.fs HTTP API over either stdio or token-gated streamable HTTP, with no changes needed inside SilverBullet itself.18 npmMIT
- AlicenseNot gradedqualityAmaintenanceEnables Claude and other AI agents to work directly in a local-first planning vault stored as plain JSON files, so they can read and edit kanban boards, plans, notes and decisions alongside the user. Every change made by an agent is recorded in history and can be undone.1MIT