MCP server for Scrivener 3 projects — AI-powered writing assistant tools
Scrivener MCP has 26 well-named tools with consistent verb_noun patterns (open_, close_, get_, read_, write_, create_, delete_, search_, compile_, analyze_, update_, recover_). All tools have descriptions (avg ~80 chars, within baseline 34 - 392). Input schemas are present and typed for all tools. However, parameter descriptions are sparse or generic (e.g., 'Document UUID, unique title, or Binder path' repeated across 10+ tools without explaining when to use each identifier type). Output schemas are not documented, LLMs cannot predict response structure. Error handling exists but lacks recovery guidance (e.g., 'DocumentNotFound' error does not suggest search_content or list alternatives). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Composition is strong: tools chain well (e.g., search_content → read_document → write_document). Naming is clear and unambiguous.
Analyze a document for writing quality metrics
Analyze readability metrics for a document
Check consistency of project memory across aspects
Close the currently open project
Compile documents to text or markdown
Create a complex binder structure atomically
Create a new document in the project
Output schemas not documented. LLMs cannot predict response structure for any of the 26 tools. This violates pattern:tool and forces agents to guess at field names and types, increasing hallucination risk.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. delete_document, write_document, and create_document are marked DESTRUCTIVE/WRITE but lack annotations to guide agent safety logic.
Parameter descriptions are generic and repetitive. 'Document UUID, unique title, or Binder path' appears in 10+ tools without explaining when to use each identifier type or how resolution works. Violates pattern:tool-description guidance on actionable parameter docs.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
Create a new folder in the project
Delete a document (move to trash)
Export the entire project
Get detailed information about a document
Retrieve project memory entries
Get information about the currently open project
Get the binder structure of the currently open project
Get word count for a document or the entire project
Get comprehensive writing statistics for the project
Move a document to a different parent
Open a Scrivener project
Read the content of a document
Recover a document from trash
Rename a document
Search for content in the project
Search for items in the trash
Store or update project memory (character profiles, plot outlines, etc.)
Update document metadata (synopsis, notes, keywords, custom metadata)
Write content to a document
Error handling lacks recovery guidance. McpServerError types (DocumentNotFound, AmbiguousIdentifier, ProjectConflict) are defined but error responses do not suggest next steps (e.g., 'Try search_content() to find the document' or 'Available channels: ...'). Violates pattern:recovery-guide.
No dry-run or confirmation pattern for destructive operations. delete_document and write_document (DESTRUCTIVE/WRITE risk) lack a dry-run parameter or confirmation step. Agents can accidentally delete or overwrite content. Violates pattern:confirmation-request.