Skip to content
Agentmart
Submit a tool

Scrivener MCP

MCP server for Scrivener: read, write, analyze, and search your manuscripts with AI assistants.

Connector by writerslogic · GitHub account verified by the MCP Registry

IndexedAGPL-3.0Local (stdio)★ 68
Write a review

Chalk Labs

Need help deploying Scrivener MCP?

Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.

Book a call

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/writerslogic-scrivener-mcp

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

MCP server for Scrivener: read, write, analyze, and search your manuscripts with AI assistants.

Use cases: writing-editing, document-processing

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Runs code on install

Its package runs an install script (such as npm postinstall or setup.py code) as soon as you install it, before any tool is called. Read the script first.

Tools
51 read · 20 write · 2 delete · 1 not yet classified
Secrets
None asked for
Install scripts
Runs code on install
Runs as
Node.js package

Tools by what they do 74

Read from the source code; the running server may list different tools.

Read 51 · Look things up without changing anything.

  • analyze_craft_local
  • analyze_dialogue_tags_local
  • analyze_document
  • analyze_foreshadowing_local
  • analyze_opening_local
  • analyze_rhythm_local
  • analyze_writing_style
  • character_network
  • check_consistency
  • check_continuity_local
  • check_plot_consistency
  • check_style_local
Show 39 more tools
  • compare_snapshot
  • compile_documents
  • detect_open_project
  • discover_connections
  • discover_projects
  • enhance_content
  • export_project
  • find_analogies
  • find_mentions
  • find_orphaned_entities
  • find_relationships
  • find_repetition_local
  • generate_content
  • generate_marketing_materials
  • get_compile_settings
  • get_document_info
  • get_entity_references
  • get_job_status
  • get_manuscript_briefing
  • get_queue_stats
  • get_statistics
  • get_structure
  • get_writing_goals
  • get_writing_preferences
  • hhm_dream
  • list_skills
  • list_snapshots
  • list_trash
  • manuscript_style_report_local
  • measure_voice_drift_local
  • read_annotations
  • read_document
  • read_snapshot
  • recall
  • search
  • semantic_search
  • suggest_connections
  • suggest_improvements
  • verify_project_integrity

Write 20 · Create, change, send or run things.

  • add_relationship
  • build_vector_store
  • cancel_job
  • close_project
  • collect_feedback
  • create_document
  • create_snapshot
  • move_document
  • open_project
  • queue_document_analysis
  • queue_project_analysis
  • refresh_project
Show 8 more tools
  • remember
  • restore_document
  • set_writing_preferences
  • store_chapter_order
  • sync_to_neo4j
  • update_document
  • use_skill
  • write_document

Delete 2 · Delete, drop, revoke or wipe things.

  • delete_document
  • set_writing_goal

Not yet classified 1 · We could not tell from the name and description.

  • multi_agent_analysis

Network hosts it talks to 15

  • adoptium.net · found in code
  • api.anthropic.com · found in code
  • api.github.com · found in code
  • api.openai.com · found in code
  • brew.sh · found in code
  • docs.docker.com · found in code
  • docs.microsoft.com · found in code
  • download.keydb.dev · found in code
  • github.com · found in code
  • glama.ai · found in code
  • neo4j.com · found in code
  • ollama.ai · found in code
  • openrouter.ai · found in code
  • raw.githubusercontent.com · found in code
  • writerslogic.com · found in code

Files it touches

  • /opt/gohttp
  • /opt/homebrew/bin
  • /opt/homebrew/bin/node
  • /opt/rustdesk
  • /proc/1/cgroup
  • /proc/version
  • /tmp/ollama-install.sh
  • /usr/sbin
  • /var/log/gohttp
  • /var/log/rustdesk
  • Your home directory (~)
  • Any path the agent passes to its tools

Tools (74)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • add_relationshipAdd Relationship

    Record a typed, directed relationship between two story entities (e.g. a character "mentors" another, or a character "appears in" a document) in the project story graph. Returns the stored edge with its generated id. Use this to build the knowledge graph that find_relationships, character_network, and discover_connections then query. Requires an open project with the relationship engine initialized.

  • analyze_craft_localAnalyze Craft (Local)read-only

    Run local, deterministic prose-craft analysis on a document: readability grade levels, grammar findings (repetition, agreement, etc.), sentence-level syntax tension (a pacing/suspense proxy), extracted dialogue lines, and top word frequencies. No AI model and no network call -- use this for fast, repeatable checks, and analyze_document when you want a qualitative critique instead. Requires an open project and a valid document id.

  • analyze_dialogue_tags_localAnalyze Dialogue Tags (Local)read-only

    Audit dialogue in one document: the dialogue-to-narration ratio and every quoted line with its attribution classified as plain (said, asked), showy (exclaimed, snapped), adverb-modified (said softly), or untagged, with the speaker when one can be read from the tag. No AI model and no network call -- complements analyze_craft_local, which extracts dialogue for speaker inference rather than tag quality. Requires an open project and a valid document id.

  • analyze_documentAnalyze Documentread-only

    Analyze the writing quality of a single document and return a summary of readability, pacing, and the top issues found. This is the general-purpose prose analyzer: narrow it with analysisTypes to focus on style, structure, themes, characters, sentiment, or pacing. Use check_consistency for project-wide continuity instead, or enhance_content to get rewritten prose rather than a critique. Calls an external AI model. Requires an open project and a valid document id.

  • analyze_foreshadowing_localAnalyze Foreshadowing (Local)read-only

    Scan the whole manuscript, in binder order, for setup/payoff pairs: recurring terms introduced early and either paid off later, left outstanding, or never mentioned again. Each item is attributed back to the document it was set up and paid off in. No AI model and no network call. Requires an open project.

  • analyze_opening_localAnalyze Opening (Local)read-only

    Analyze a document's opening as a manuscript first-page/first-chapter hook: hook type and strength, first-line and first-paragraph quality, backstory ratio, how fast voice and world are established, an engagement trajectory, and a genre-aware read-on prediction. Defaults to the manuscript's first document when documentId is omitted, matching how an agent or editor reads it. No AI model and no network call. Requires an open project.

  • analyze_rhythm_localAnalyze Rhythm (Local)read-only

    Measure sentence-length flow in one document: the distribution of sentence lengths, a variation score (stdev over mean; low reads as monotonous), runs of same-length sentences, overlong sentences, and sentences or paragraphs that keep opening with the same word. Each finding carries a line and column. No AI model and no network call. Requires an open project and a valid document id.

  • analyze_writing_styleAnalyze Writing Styleread-only

    Analyze the prose style of one or more text samples — sentence variety, tone, voice, pacing, and other stylistic features — and return a structured style profile. Use this to characterize how something is written; use analyze_document for document-level metrics or check_plot_consistency for narrative coherence.

  • build_vector_store

    Build search index

  • cancel_jobCancel Job

    Cancel a queued or running background job by its type and id. Returns whether the cancellation succeeded. Cancelling an already-finished or unknown job is harmless. Use get_job_status first to check whether a job is still in progress.

  • character_networkCharacter Networkread-only

    THE default tool for "map my characters" / "how do my characters connect": returns the full character relationship network — every character and the typed relationships between them — for rendering a graph or analyzing cast structure. Prefer this for any whole-cast question. Use find_relationships only for one entity's connections, get_entity_references for which documents mention an entity, and suggest_connections to surface missing links. Requires an open project with the relationship engine initialized. Takes no parameters.

  • check_consistencyCheck Project Consistencyread-only

    Scan the whole project for continuity problems and return the issues found: character contradictions, timeline conflicts, location mismatches, and dropped or inconsistent plot threads. This is the project-wide continuity checker; use analyze_document to critique a single document's prose instead. Narrow the scan with checkTypes. Requires an open project.

  • check_continuity_localCheck Continuity (Local)read-only

    Scan the whole manuscript, in binder order, for local-analyzer continuity signals: a per-document timeline projection (detected time hints) and a world-state trace (character locations, knowledge, and possessions) that flags impossible-knowledge, impossible-location, object-continuity, and temporal-paradox violations. Character names come from this project's memory (remember/recall); characters with no profile yet are invisible to the world-state trace. No AI model and no network call -- complements check_consistency, which reasons over project memory rather than manuscript text directly. Requ…

  • check_plot_consistencyCheck Plot Consistencyread-only

    Scan a set of documents for plot-level inconsistencies — timeline conflicts, contradicted facts, dropped threads — and return the issues found with the documents involved. Use this for story/plot coherence across chapters; use check_consistency for general consistency checks or analyze_writing_style for prose-level analysis.

  • check_style_localCheck Style (Local)read-only

    Line-edit one document with deterministic rules: -ly adverbs, filter words (felt, saw, noticed), hedges and intensifiers (just, really, very), stock clichés, passive voice, nominalizations, and any personal tics you name. Returns every finding with its line, column, and excerpt, plus counts and rates per 1,000 words so documents of different lengths compare. No AI model and no network call -- use enhance_content when you want the prose rewritten rather than flagged. Requires an open project and a valid document id.

Show 59 more tools
  • close_projectClose Project

    Close the currently open project, flush any pending memory/auto-save state, and clear the active session. After this, document and analysis tools have no project to act on until open_project is called again. Use this to switch projects cleanly or release file handles at the end of a session. Requires an open project. Takes no parameters.

  • collect_feedbackCollect Feedback

    Record feedback on an AI operation (e.g. "enhance_content") so it feeds the insights returned by get_writing_preferences. Provide a 1-5 rating, whether the output was kept (accepted), and/or a comment. Use after the writer reacts to AI output. Requires an open project.

  • compare_snapshotCompare Snapshotread-only

    Compare a document snapshot against the current document text, or against another snapshot (pass againstSnapshotId). Returns the paragraphs added and removed and the net word-count change — use this to see what changed since a snapshot was taken. Read-only. Requires an open project (call open_project first). Get snapshot ids from list_snapshots.

  • compile_documentsCompile Documentsread-only

    Compile the project's documents into a single continuous manuscript in the requested format and return the compiled text (large results are spooled to a file reference). In "standard" mode it joins documents in binder order; in "intelligent" mode it uses AI to optimize the output for a specific target such as an agent query or synopsis. To write a manuscript to disk in a publishing format (EPUB, etc.) use export_project instead. Requires an open project.

  • create_documentCreate Document

    Create a new text document or folder in the binder and return its new id. Optionally set the initial body content and the parent folder; if no parent is given the item is added at the top level. Each call creates a distinct item (not idempotent). Use write_document to change content afterward. Requires an open project.

  • create_snapshotCreate Document Snapshot

    Take a Scrivener-native snapshot of a document's current content, restorable from Scrivener's own Snapshots browser. Use this before rewriting a document to give the writer a native rollback point. Copies the live content into the project's Snapshots directory with a title and timestamp; does not modify the document. Requires an open project and a document that has content.

  • delete_documentDelete Documentcan change or delete data

    Move a document to the project trash. This is reversible: the document can be listed with list_trash and brought back with restore_document until the trash is emptied in Scrivener. Deleting an already-trashed document is a no-op. Requires an open project and a valid document id.

  • detect_open_projectDetect Open Scrivener Projectread-only

    Detect which Scrivener project the user currently has open in the desktop Scrivener app, so you can act on it without asking for a path. Use this when the user says "my project", "the project I have open", or gives a command with no project specified. Reads the open window names from the running app and resolves them to .scriv paths on disk; it does not open anything. If exactly one project is open, pass its path to open_project. macOS only right now (returns supported=false elsewhere; fall back to discover_projects). The first use may prompt macOS to allow the client app to control Scrivener.

  • discover_connectionsDiscover Connectionsread-only

    Surface previously unrecorded relationships across the project by analyzing entity co-occurrence, returning candidate connections the story graph does not yet contain. Use this to find latent links to confirm with add_relationship; use find_relationships for known connections of a specific entity. Requires an open project with the relationship engine initialized.

  • discover_projectsDiscover Scrivener Projectsread-only

    Scan common locations (Documents, Desktop, and iCloud Mobile Documents) for Scrivener projects and return the paths of every .scriv folder found, searching up to three levels deep. Use this when the user refers to their project by name rather than path ("open my novel"): present the results and pass the chosen path to open_project. Does not open anything itself. Returns a list of project paths, or a message if none are found.

  • enhance_contentEnhance Contentread-only

    Produce an AI-improved version of a document's text for a chosen goal (fix grammar, refine style, improve clarity, expand, summarize, or rework creatively) and return the suggested rewrite. This does NOT modify the document; review the result and call write_document to save it. Use analyze_document for a critique instead of a rewrite, or generate_content to create new text from a prompt. Calls an external AI model. Requires an open project.

  • export_projectExport Project To Fileread-only

    Export the whole project to a publishing/interchange format. Markdown, HTML, and JSON are returned inline; DOCX (agent/editor submission), EPUB (e-readers), and PDF (print/review) are written to a file on disk and the path is returned. Use this to produce a deliverable file; use compile_documents when you want the compiled text back in the response rather than written to disk. Requires an open project.

  • find_analogies

    Find analogies (A:B :: C:?)

  • find_mentionsFind Entity Mentionsread-only

    Find every occurrence of a specific name or term (a character, place, or keyword) across all documents, returning each hit with surrounding context and its document. Use this for exact "where does X appear" lookups; use search for relevance-ranked results or semantic_search for meaning-based matches. Returns up to 50 mentions. Requires an open project.

  • find_orphaned_entitiesFind Orphaned Entitiesread-only

    List registered characters and locations that no document actually mentions — entities added to the registry but with no textual presence, which are candidates for removal or for prose that still needs writing. Uses exact whole-word matching, no AI. Requires an open project.

  • find_relationshipsFind Relationshipsread-only

    Query the story graph for entities related to a given entity, returning the connected entities and the relationship types that link them. This covers cross-references and discovered connections for a specific entity; use character_network for the whole-cast graph, or discover_connections to surface co-occurring entities project-wide. Requires an open project with the relationship engine initialized.

  • find_repetition_localFind Repetition (Local)read-only

    Find echoes (the same word reappearing within a window of words) and repeated multi-word phrases in one document, each with line, column, and excerpt for both occurrences. Stopwords and, by default, capitalized names are ignored. No AI model and no network call. Requires an open project and a valid document id.

  • generate_contentGenerate Contentread-only

    Generate new prose from a natural-language prompt and return the generated text, optionally steered by project context (a document, characters, or a target style) and a desired length. This creates fresh text and does not modify any document. Use enhance_content to improve existing text instead, or analyze_document to critique it. Calls an external AI model and requires an AI provider key (ANTHROPIC_API_KEY, OPENAI_API_KEY, or OPENROUTER_API_KEY); without one a placeholder is returned.

  • generate_marketing_materialsGenerate Marketing Materialsread-only

    Generate a publishing/marketing artifact from the manuscript — a synopsis, query letter, pitch packet, elevator pitch, or book blurb — using the project content as context, and return the generated text. Use this for submission and pitching materials; use compile_documents to assemble the manuscript itself. Requires an open project with text content. Each call regenerates fresh output (not idempotent).

  • get_compile_settingsGet Compile & Taxonomy Settingsread-only

    Return the project's compile-format definitions (from Settings/compile.xml) and its taxonomy: the named compile formats and their section-layout counts, the current output file type, label and status definitions (with colors), saved collections, and user-defined section types. Use this to discover what compile formats and metadata categories a project defines before compiling or organizing. Read-only; does not run a compile. If a project has never been compiled, hasCompileSettings is false and only the taxonomy is returned. Requires an open project (call open_project first).

  • get_document_infoGet Document Inforead-only

    Return metadata for a single document without its body text: title, type, word count, synopsis, label, status, parent, and custom metadata. Use this to inspect a document or to read its word count cheaply; call read_document when you need the actual prose, or get_structure for the whole binder. Requires an open project and a valid document id.

  • get_entity_referencesGet Entity Referencesread-only

    Trace the reference graph between documents and registered characters/locations, in either direction. Pass documentId to list the entities a document mentions (its cast and settings, with counts and offsets); pass entity (registry id or name) to list every document that mentions it, ranked by count. Provide exactly one of documentId or entity. Exact whole-word, case-insensitive matching against the registries — no AI. Returns empty when there are no matches or the registries are empty. Requires an open project.

  • get_job_statusGet Job Statusread-only

    Look up the status and progress of a background job previously started by queue_document_analysis, queue_project_analysis, or another async tool. Returns the job state (queued, running, completed, failed), progress, and result when finished. Poll this after enqueuing work; use cancel_job to stop a job.

  • get_manuscript_briefingManuscript Briefingread-only

    One "where am I?" snapshot of the whole manuscript: total word count against the project draft target (with percent-to-goal and deadline), document/folder counts, the per-status and per-label breakdown, and the longest and shortest documents. Use this right after open_project to orient before diving in, instead of stitching get_statistics, get_writing_goals, and get_compile_settings together. Read-only. Requires an open project.

  • get_queue_stats

    Get job queue statistics

  • get_statisticsGet Project Statisticsread-only

    Return project-wide statistics: total word and document counts, plus title and author. Use this for a quick project overview; use get_structure for the per-document breakdown or get_document_info for a single document. Requires an open project.

  • get_structureGet Project Structureread-only

    Return the binder hierarchy of the open project: its folders and documents in tree order, each with id, title, type, depth, and word count. Use this to understand the manuscript layout and to obtain the document ids that read_document, write_document, and the analysis tools require. By default returns a compact flat array of [id, title, type, depth, wordCount, hasChildren] tuples to save tokens; set summaryOnly for just project-level counts. Requires an open project (call open_project first).

  • get_writing_goalsGet Writing Goalsread-only

    List writing goals with computed progress: percent complete, words remaining, and whether each goal is on pace given its target date and the current project word count. Use when the writer asks how close they are to a goal or for a progress dashboard; not when defining a new goal (use set_writing_goal) or forecasting a finish date from writing velocity (use predict_completion). Related: set_writing_goal. Requires an open project and the project database.

  • get_writing_preferencesGet Writing Preferencesread-only

    Return the current author writing preferences plus feedback insights: how much feedback has been recorded, average satisfaction per operation, and non-binding suggestions for adjusting preferences. Use to review what is currently steering AI output, or to see whether recorded feedback points to a change. Related: set_writing_preferences, collect_feedback. Requires an open project.

  • hhm_dream

    Creative concept recombination

  • list_skillsList Skillsread-only

    List the available skills (tool groups) — project, documents, search, analysis, compilation, memory, relationships — with a description, the tool count, whether the skill is already active, and its tool names. Use this to discover capabilities, then call use_skill to activate a group whose tools you need. Takes no parameters.

  • list_snapshotsList Document Snapshotsread-only

    List the snapshots Scrivener has saved of a project's documents (from the .scriv package's Snapshots/ directory). Pass documentId to list one document's snapshots, or omit it to list snapshots for every document that has any. Each entry gives the owning document id and title, a snapshotId (pass it to read_snapshot to get the text), the snapshot's title, and its date. Read-only. Returns an empty list when nothing has been snapshotted. Requires an open project (call open_project first).

  • list_trashList Trashread-only

    List all documents currently in the project trash, with their ids and titles. Use this to see what can be brought back with restore_document, or to confirm a delete_document call. Requires an open project. Takes no parameters.

  • manuscript_style_report_localManuscript Style Report (Local)read-only

    Run the bluepencil report over every manuscript document in binder order and tabulate per-document style density: words, Flesch-Kincaid grade, dialogue ratio, lexical diversity (MATTR), mean sentence length, and adverbs, filter words, hedges, passive voice, and echoes per 1,000 words, plus clichés, monotonous runs, and overlong sentences. Outliers are listed so you can see which chapters drift from the rest. No AI model and no network call. Requires an open project.

  • measure_voice_drift_localMeasure Voice Drift (Local)read-only

    Measure how a character's dialogue voice drifts across the manuscript. Splits the manuscript (in binder order) into an earlier and later half, extracts that character's dialogue lines from each half via speaker-tag matching, and compares vocabulary richness, sentence length, formality, and other voice features between the two. No AI model and no network call. Requires an open project and a character name that actually speaks in the manuscript.

  • move_documentMove Document

    Move a document or folder to a different parent folder in the binder, optionally at a specific position among the target folder's children. Changes only the location, not the content. Requires an open project, a valid document id, and a valid target folder id.

  • multi_agent_analysis

    Multi-agent analysis

  • open_projectOpen Scrivener Project

    Open a Scrivener project and make it the active project for this session. Every document, structure, search, and analysis tool operates on the project opened here, so call this first. Accepts the path to a .scriv folder or the .scrivx file inside it and resolves the project automatically. Returns the project title, author, and metadata. Opening a project closes any project already open. If you do not know the path, call discover_projects first.

  • queue_document_analysisQueue Document Analysis

    Enqueue a background NLP analysis of one document (readability, entities, sentiment) and return a job id immediately without blocking. Poll the job with get_job_status and stop it with cancel_job. Use this for large documents where a synchronous analyze_document call would be slow; use analyze_document directly for quick, inline results.

  • queue_project_analysisQueue Project Analysis

    Enqueue a background batch analysis across many documents at once and return a job id immediately. Poll progress with get_job_status and stop it with cancel_job. Use this to analyze a whole manuscript or large set of documents; for a single document prefer queue_document_analysis or the synchronous analyze_document.

  • read_annotationsRead Document Annotationsread-only

    Return the inline comments and footnotes attached to a document, grouped by type. Use this to review editorial notes and references without reading the full body; use read_document for the prose itself. Requires an open project and a valid document id.

  • read_documentRead Documentread-only

    Read the text of a single document. By default returns plain text; set format to "formatted" to get rich text with styling and structure preserved. Use offset and limit to page through long documents by word range instead of returning the whole thing. Use get_document_info when you only need metadata, or search/semantic_search to find content across many documents. Requires an open project and a valid document id.

  • read_snapshotRead Document Snapshotread-only

    Return the text of a single document snapshot. Pass the documentId and the snapshotId from list_snapshots. The snapshot's RTF is converted to plain text. Read-only; does not alter the document or restore the snapshot. Requires an open project (call open_project first).

  • recallRecall Project Factsread-only

    Read back the project's persistent memory: stored characters, world-building, plot threads, and style guide. Returns the requested store, or the full memory when memoryType is omitted or "all". Use remember to write new facts. Requires an open project.

  • refresh_projectReload Project From Disk

    Reload the open project from disk, discarding the in-memory cache. Use this when the project has been changed by the Scrivener app or another process while open here, so that subsequent reads reflect the latest saved state. Requires an open project. Takes no parameters.

  • rememberRemember Project Facts

    Store or update a fact in the project's persistent memory so later tools and sessions stay consistent: a character profile, world-building detail, plot thread, or style-guide entry. Pass an id inside data to update an existing entry, or omit it to add a new one. Use recall to read memory back. Requires an open project.

  • restore_documentRestore Document From Trash

    Restore a trashed document back into the binder, optionally into a specific target folder (otherwise it returns to a default location). Use list_trash to find the document id first. This is the inverse of delete_document. Requires an open project and a valid document id.

  • searchSearch Documentsread-only

    Search the open project and return matching documents with relevance-ranked snippets. By default performs an intelligent full-text/semantic search of document content; set field to "title" for a fast case-insensitive title lookup, or scope to "trash" to search only trashed documents. For meaning-based "find passages about X" queries use semantic_search; to find every occurrence of a specific name or term use find_mentions. Requires an open project.

  • semantic_searchSemantic Searchread-only

    Find passages by meaning rather than exact words, using the local HMS index, and return the most relevant documents with similarity scores and related entities. Use this for conceptual "find passages about X" queries; use search for keyword/full-text matching and find_mentions to locate every occurrence of a specific name or term. Indexing and similarity scoring are local; query interpretation and explanations require a configured AI provider. Requires an open project with semantic indexing available.

  • set_writing_goalSet Writing Goalcan change or delete data

    Create or replace the active word-count goal for a cadence (daily, weekly, or whole project), optionally with a target date. Setting a goal of a type that already has an active goal updates that goal in place rather than stacking duplicates. Use when the writer commits to a target ("write 1000 words a day", "finish an 80k novel by December"); not when you only want to read current progress (use get_writing_goals) or log a finished session. Related: get_writing_goals, predict_completion. Requires the project database.

  • set_writing_preferencesSet Writing Preferences

    Set the author writing preferences that shape AI writing output (enhance_content and other generative tools). Preferences are injected into the AI prompt, so changes take effect on the next enhancement. All fields are optional and merge into the existing profile. Use when the writer states a preferred tone, complexity, length, point of view, style guide, or a custom instruction. Requires an open project (preferences persist in the project database).

  • store_chapter_order

    Store chapter sequence

  • suggest_connectionsSuggest Missing Connectionsread-only

    Suggest characters or locations a document might be missing: entities it does not mention but that frequently co-occur — in other documents — with the entities it does mention. Deterministic co-occurrence inference (no AI), ranked by how many of the document’s entities each suggestion travels with. Use this to spot a scene that omits a character who usually appears with its cast. Returns empty when the document has no known entities. Requires an open project.

  • suggest_improvementsSuggest Improvementsread-only

    Generate AI writing suggestions for a prompt or a specific document — ideas for revision, next steps, or alternatives. Returns suggestion text. Optionally grounds the suggestions in a document's content. Use this for generative "how could this be better" help; use analyze_document for structured metrics or check_consistency to find contradictions.

  • sync_to_neo4j

    Sync relationships to Neo4j

  • update_documentUpdate Document Title & Metadata

    Update a document's title and/or its metadata (synopsis, notes, label, status, and custom fields) in a single call. Pass only the fields you want to change; omitted fields are left untouched. To change the body text use write_document; to move it use move_document. Requires an open project and a valid document id.

  • use_skillActivate Skill

    Activate a skill so its tools become available to call. Returns the activated skill's tool names and their schemas; clients that support tools/list_changed will also see the new tools appear automatically. Call list_skills first to see the available skill names. Tools are progressively disclosed, so activate the skill you need before using its tools (most tools are pre-activated by default).

  • verify_project_integrityVerify Project Integrityread-only

    Scan the open project for structural problems and return a read-only report: binder entries with missing, malformed, or duplicate UUIDs, entries missing their type, and text documents whose backing content is unreadable or empty. Use when a project looks corrupted, after manual edits to the .scrivx file, or before a bulk operation; not when you just want the document tree (use get_structure) or a single document (use get_document_info). This tool only detects problems and never repairs them. related: get_structure, get_document_info. Requires an open project.

  • write_documentWrite Document

    Replace a document's text with new content, preserving the surrounding Scrivener formatting the edit did not touch (stylesheet, styles, images, footnotes) byte-for-byte. The result reports whether formatting was fully preserved; when an edit would drop non-round-trippable content it takes a Scrivener snapshot first (restorable in Scrivener) and says so. To change only the title or metadata use update_document; to add a new document use create_document. Requires an open project and a valid document id.

Signals

Stars
68
Forks
23
Open issues
6
Contributors
8
Last commit
Oct 22, 2026 (8 days ago)
Last release
Jul 25, 2026 (3 months ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
io.github.writerslogic/scrivener-mcp
Version
0.12.0
Auth
No auth
Packages
npm scrivener-mcp
License
AGPL-3.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from writerslogic

Done for you

Rather not set it up yourself?

Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.

See how we build AI agents →Read the case studies

Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.

launches shipped
50+
launches shipped
media placements
500+
media placements
founders on every account
2
founders on every account

Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block

Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.

Get Scrivener MCP running in your business

Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.

Goes to the Chalk Labs founders, not the newsletter. Privacy

Need help deploying Scrivener MCP?

CallGet help
Cite this page

Scrivener MCP. Agent Mart. https://agentmart.dev/connectors/writerslogic-scrivener-mcp (last updated 2026-10-24)