TypeWriter MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TYPEWRITER_URL | No | Optional fixed connect URL for socket mode | |
| TYPEWRITER_MODE | No | Operation mode: 'socket' or 'file' | socket |
| TYPEWRITER_URL_FILE | No | Path to file storing the last connect URL | .typewriter-session-url |
| TYPEWRITER_PAGES_DIR | No | Pages directory for file mode | plugins/Typewriter/pages |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| connection_statusA | Show current Typewriter connection status and whether a saved connect URL exists. |
| connect_liveB | Connect to a live Typewriter websocket using the full URL from /typewriter connect. |
| list_pagesA | List all pages (name, id, type, entry count). |
| read_pageA | Read a full page (all entries) by page name or id. |
| create_pageB | Create a new page. Types: sequence, static, cinematic, manifest. |
| rename_pageC | Rename a page. |
| delete_pageB | Delete a page and all its entries. |
| add_entryA | Add an entry to a page. fields = raw Typewriter entry JSON (needs 'name' and 'type'; id is generated). Common types: spoken_dialogue, option_dialogue, simple_speaker, permanent_fact. |
| update_entryB | Update a single field of an entry by dotted path (e.g. 'text', 'speaker', 'criteria.0.value'). |
| replace_entryB | Replace a whole entry with a new object (must keep the same id). |
| delete_entryC | Delete an entry by id. |
| connect_entriesA | Wire story flow: append 'toEntryId' to the 'triggers' list of 'fromEntryId'. |
| search_entriesB | Full-text search across all pages/entries. |
| validate_storylineB | Find broken references (triggers/triggeredBy pointing to missing ids). |
| publishA | Publish staging changes to production (applies edits live in-game). |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 15 tools
Each tool targets a distinct resource and action: pages vs entries vs connection vs publish. Update_entry and replace_entry are clearly differentiated by scope (field-level vs whole object). Even connect_live and connection_status are distinct (action vs status check).
Most tools follow verb_noun snake_case (list_pages, create_page, add_entry, delete_entry). Minor deviations: 'connection_status' (noun phrase), 'connect_live' (verb+adverb), and 'publish' (single verb) break the pattern slightly, but the style remains consistent and readable.
15 tools provide a well-scoped set covering connection, page management, entry management, story wiring, search, validation, and publishing. No redundancy or bloat; each tool serves a clear purpose in the narrative authoring workflow.
The surface covers the full lifecycle for pages and entries, plus important cross-cutting concerns (search, validation, publish). Minor gaps exist (no update_page for metadata, no remove_trigger operation), but agents can work around these using existing tools without major friction.