Prose
A local novel-writing engine: SQL Server canon for whole fictional universes, a desktop Writer, and a CLI and MCP server so Claude can draft, read and repair books against that canon.
Install / Use
claude mcp add mindattic -- npx -y github:mindattic/ProseIf the server publishes to npm under a different name, use that package instead — check the repo README.
MCP Server
Model Context Protocol server
Quality Score
Category
AI & Machine LearningSupported Platforms
Our assessment of Prose
Prose scores 74/100 on our quality scale, 862nd of 960 AI & Machine Learning skills we index.
Its MCP Server is 45 KB long, well organised into 49 sections with 17 code examples: long enough that it reads more like full documentation than a focused instruction file, which agents can find harder to follow.
It has 3 GitHub stars, so there is little community track record yet; judge it on its content.
Maintenance, license and trust
- The repository was last updated today, so Prose is actively maintained.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 80/100, with 2 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
Safety scan
No issues foundOur scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands.
Automated pattern scan on 2026-10-18. It catches known dangerous patterns, not every risk — read a skill before letting an agent act on it.
Prose compared with similar skills
All 4 of these similar skills score higher than Prose; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| Prose (this skill)by mindattic | 74 | 3 | today | MCP Server |
| claude-memby thedotmack | 100 | 101.5k | today | CLAUDE.md |
| Agent-Reachby Panniantong | 100 | 98.9k | 3d ago | CLAUDE.md |
| Understand-Anythingby Egonex-AI | 100 | 86.9k | 6d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 75.7k | today | CLAUDE.md |
Frequently asked questions
- How do I install Prose?
- Run
claude mcp add mindattic -- npx -y github:mindattic/Prose. The install tabs above show the steps for each supported agent. - Which AI agents does Prose work with?
- It is written for Claude Code and Claude Desktop, as a MCP Server file. Other agents that read the same format can often use it too.
- Is Prose safe to use?
- Our scan of the whole file found no instruction hijacking, hidden characters, credential access, data exfiltration or destructive commands. It declares no license and scores 80/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is Prose still maintained?
- The repository was last updated today, so Prose is actively maintained.
Skill content
View source on GitHubProse
A local novel-writing engine: SQL Server canon for whole fictional universes, a desktop Writer, and a CLI and MCP server so Claude can draft, read and repair books against that canon.

Prose runs on your own machine. There is no hosted version: the hosted deployment was retired on 2026-08-23 and the project is local-only by design.
Why
- Keep a whole fictional universe straight. Characters, places, factions, gear and in-world documents live in one SQL Server database with a relationship graph and full temporal history, so a fact is stored once and every book reads the same one.
- Write a novel with Claude without losing the plot between sessions. The work queue, recorded decisions and read receipts live in the database, so the next session starts from the book's real state, not from someone's memory of it.
- Never ship a book nobody has read. The read gate refuses to export while any beat is unread as it stands, and there is no override.
- Edit prose by hand in a real editor. The Writer is a desktop window over the same database the CLI and MCP tools use.
- Know which checks earn their keep. Every quality instrument is measured by how many of its findings were ever applied; the ones that never helped are switched off, not left burning tokens.
- Run several universes side by side (cyberpunk, fantasy, horror, nonfiction and more) with scoping that fails closed instead of leaking one universe into another.
Features
One resident server
Prose.Hub is an ASP.NET Core process bound to 127.0.0.1:5900. It is the only process that touches the database. It hosts the engine's services, the Writer pages and an observability dashboard. The CLI and the MCP server are thin clients that forward every call to it and refuse to start when it is not healthy.
The Writer
Writer.exe is a WPF + WebView2 window that finds or starts the Hub and opens its /writer page. The editor itself (Prose.WriterUi) is compiled into the Hub, with a book editor, a reader view (/read) and a canon browser (/repo). Launcher.exe is a small picker that opens the Writer or the KDP publishing app, starting the Hub first when needed.
The observability dashboard
Prose.ObserverUi is served by the Hub at /app: dashboard, beats, logs, a 2D and 3D graph view, Dynamic Context Memory runs and the canon repositories, pushed live over SignalR.
The Novel Factory
The current way of working (RFC 0015, approved 2026-09-23). Every book moves through computed stations: planned, written, captured, read, clean, verified, pressed. Work is driven by work orders, decisions are recorded as rulings, and each Claude session is a row in the database. No LLM judges, votes or scores. See The Novel Factory below.
Canon as a database
Every canon row belongs to exactly one universe. Books are a tree of nodes (series, book, chapter) over beats, the atomic unit of story. Beats and nodes are system-versioned, so every edit can be rewound. Entities carry embeddings, typed relationship edges with story-time validity windows, and an append-only state ledger.
Writing and repair tools
- Exact-text splices across a whole book, dry run first, verified by read-back (
--splice-beats). - Read in true order with each beat's recorded point-of-view character attached (
--read-beats), with read receipts and read notes. - Clone, archive and restore books; move beats between books byte for byte.
- An enriched generation pipeline (
ProseWriterRouter) for drafting beats from canon.
Checks that stay on
- The logic sweep: causality, knowledge states, timeline, plant and payoff, orphan references and inserted-beat drift.
- Ledger adjudication: same-predicate contradictions in the fact ledger, judged against the prose they came from.
- A deterministic prose linter for echo words, crutch phrases, pet words and attribution runs.
- Text integrity scanning for corrupted currency symbols, dashes and diacritics.
Export and audio
--export-node renders a book to .docx, EPUB, PDF and plain text with metadata files. Audiobook export renders a whole book through ElevenLabs. A separate WPF app, Prose.KdpPublish, drives the Amazon KDP site to publish and republish books.
MCP server
285 tools in 51 families, surfaced to any MCP client as mcp__prose__<name>. Claude can read and write beats, entities, rulings and work orders through the same Hub the CLI uses.
Quick start
Prerequisites:
- Windows (the Writer, Launcher and KdpPublish are WPF apps; the deploy scripts are PowerShell).
- .NET 10 SDK.
- SQL Server LocalDB (the default connection is
(localdb)\MSSQLLocalDB, databaseProse). - At least one LLM provider key, only for the commands that call a model (see LLM providers).
Clone, wire up the git hooks and build:
git clone https://github.com/mindattic/Prose.git
cd Prose
git config core.hooksPath .githooks
dotnet build src\Prose.slnx
Without the core.hooksPath line the repo's pre-commit and post-commit hooks silently never run.
Publish and start the Hub. It applies any pending EF Core migrations at startup, then waits for /api/health:
powershell -ExecutionPolicy Bypass -File deploy.ps1 -Apps Hub -Start Hub
Enable temporal versioning on a fresh database and check the CLI can reach the Hub:
.\prose.cmd --migrate-sql --schema
.\prose.cmd agent bootstrap
.\prose.cmd --list-books --universe glmz
agent bootstrap prints ready when the Hub is healthy. Open the editor:
powershell -ExecutionPolicy Bypass -File deploy.ps1 -Apps Writer -Start Writer
Register the MCP server with Claude Code (one time):
claude mcp add prose dotnet run --project <path-to-your-clone>/src/Prose.Mcp/Prose.Mcp.csproj --no-build --configuration Release
Build src/Prose.Mcp in Release first. The tools appear as mcp__prose__*. For Claude Desktop, see src/Prose.Mcp/README.md.
How it works
prose.cmd / Prose.Cli ----POST /api/cli-invoke----+
Prose.Mcp (stdio MCP) ----POST /api/mcp-invoke----+
Prose.Writer.exe (WebView2) ----GET /writer-------+--> Prose.Hub (Hub.exe, 127.0.0.1:5900) --> SQL Server
Prose.Launcher.exe ----starts the Hub if down-----+ hosts the Prose.Core services,
Prose.WriterUi (/writer, /read, /repo)
and Prose.ObserverUi (/app)
- The Hub owns the database. It holds the Core services, the universe graph and the Dynamic Context Memory state. Every other front door forwards into it.
- The CLI and MCP server are thin clients. Both refuse to start when the Hub is not healthy (
HubGate.EnsureReachableOrExit, no in-process fallback). The CLI forwards a handler class name plus its arguments; the Hub'sCliDispatchruns the handler fromProse.Cli. MCP tools forward throughHubInvokerto/api/mcp-invoke, whereToolDispatchruns the tool's body. - The Writer is a window, not an app.
Prose.Writerhas noProse.Corereference. All editor code lives inProse.WriterUi, compiled into the Hub, so an editor change needs a Hub redeploy. - Fail-closed health.
/api/healthreturns 503 when SQL Server is unreachable. Protected endpoints take anX-Prose-Keyheader that the CLI and MCP server read fromSettings.json. - Universe scope travels with each call. Pass
--universe <slug>or setPROSE_UNIVERSE. A content command with no universe is refused rather than defaulted.
Hub HTTP endpoints include /api/health, /api/cli-invoke, /api/mcp-invoke, /api/factory/*, /api/universes/*, /api/outbox/{consumer}, /api/generate-scene and /api/agent/bootstrap, plus SignalR at /hubs/observability.
Data layer principles
- SQL is the only canon store. Markdown and JSON files are documentation or export mirrors, never the live read path.
engine_data/*.jsonis a seed and export mirror, not canon. - Temporal tables.
Beats,Nodesand other canon tables are system-versioned, so every edit is rewindable withFOR SYSTEM_TIME ALL. - Static and dynamic facts are split. Identity facts (name, height, ancestry) live on entity tables; story state (location, ammunition, life status) lives in the append-only
EntityStateEventsledger. - One format. Everything is a tree of nodes over beats:
SeriesNode,BookNodeandChapterNodeon oneNodestable, linked byParentNodeId. - Every row belongs to exactly one universe. Enforced by an EF Core global query filter keyed on
IUniverseContext, not by convention. An entity needed in two universes gets two rows. - Nothing reaches the database except through the Hub, reads and writes, no exceptions (2026-08-22). No raw
sqlcmd, not even a read-only lookup.
The Novel Factory
RFC 0015 replaced loose plans and memory with state in the Hub. The agent protocol is docs/agent/PROSE_PROTOCOL.md; the design is docs/rfc/0015-novel-factory.md.
The laws
- The book is its beats; the world is its entities. No outline, spine, blueprint, ledger or summary is stored about the story.
- Every story change is a logged Hub call (MCP or the CLI). Never raw SQL.
- Repo changes need an open engine work order whose paths cover them, and a commit that names it (
WO:<id>). - Done is computed (a station passes) or Hub-validated (a work order's checks). Claims do not count.
- A decision goes into the world the moment it is made, as a ruling or an entity record, with a read-back.
- The book is read and written whole. A chapter is a unit of work, never a boundary of sight.
- Deterministic checks only. No LLM judges, votes or scores.
- A failed check is reported, never compensated with a new system.
- No override on the read gate. Export only what has been read as it stands.
- Every session ends with a summary in which every decision references a ruling or an order.
The line
| Station | Scope | Passes when | Cleared by |
| --- | --- | --- | --- |
| F2 Planned | chapter | at least one beat, and each has text or a title and a description | insert_beat |
| F3 Written | chapter | every beat has text and a recorded write reason | update_beat_text, splice_beats |
| F4 Captured | chapter | no uncaptured names and no untagged known names | create_*, add_entity_tags, an incidental ruling |
| F5 Read | chapter | the read gate shows every beat read as it stands | read_beats with markRead |
| F6 Clean | chapter | no open defect notes and no law-pattern hits in the prose | splice_beats, re-read, resolve_read_note |
| F1 Verified | chapter | every tagged entity verified at its current version | verify_entity_begin, verify_entity_commit |
| F7 Pressed | book | all chapters pass, metrics pass, docx, epub and pdf exports at the current fingerprint | --export-node |
| A Audio | book | an mp3 export at the current fingerprint | audiobook export |
The read gate marks a beat unread when its text changes, when it moves, or when an entity it mentions changes. factory_next walks chapters in reading order and returns the first actionable statio
Truncated for display — read the full file on GitHub.
Related Skills
claude-mem
101.5kPersistent Context Across Sessions for Every Agent – Captures everything your agent does during sessions, compresses it with AI, and injects relevant context back into future sessions. Works with Claude Code, OpenClaw, Codex, Gemini, Hermes, Copilot, OpenCode + More
Agent-Reach
98.9kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
Understand-Anything
86.9kGraphs that teach > graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.
headroom
75.7kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
Languages
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
