MCP Server for Slima - AI Writing IDE for Novel Authors. Connect your books with Claude, ChatGPT, Gemini, Cursor, and any MCP-compatible AI tool.
Slima MCP exhibits MAJOR gaps in definition quality across the 25-tool inventory. While tool NAMING is strong (verb-led, clear intent), DESCRIPTIONS are sparse and generic, and INPUT SCHEMAS are largely inferred rather than explicitly visible in the provided source. Critical issues: (1) Parameter schemas are documented in the tool list but NOT visible in actual source code registrations, e.g., 'load_guide' claims an input schema for 'slug', but the source file 'src/core/server-instructions.ts' is a static string with no registration code shown. (2) Most tool descriptions are 1-2 sentences without explaining WHEN to use each tool vs. similar ones, WHAT happens (state change?), or error recovery. (3) No output schemas are documented, agents cannot plan downstream tool calls. (4) File paths reference 'scripts/e2e.mjs' and 'scripts/phase1_smoke.mjs' (test files), not production source, suggesting tool definitions may be inferred or incomplete. (5) Destructive tools (delete_file, update_*) lack confirmation patterns or dry-run options. The server is functional but poorly optimized for LLM reasoning.
Request beta reader analysis of a chapter
Append content to the end of a file
Create a new file in a book
Delete a file from a book
Edit a file by replacing specific text (anchor-based edit)
Get detailed information about a specific book
Get the capabilities and constraints of this Slima server instance
NO input schemas visible in source code. Tool parameters documented in narrative form only (in issue statement), but actual JSON Schema definitions not shown in src/core/tools/*.ts or server.ts.
Sparse descriptions lacking LLM-optimization guidance. Most tool descriptions are 1-2 sentences (40-60 chars), well below the 10-1024 character baseline. For example, 'List all books in the author's account' does not explain WHEN to call it (discovery step?) or WHAT structure is returned.
Destructive operations (delete_file, update_*) lack confirmation patterns or dry-run options. Per pattern:confirmation-request, irreversible operations should support a confirm_before_execute or dry-run variant. Agents can make mistakes, no mitigation strategy invites data loss.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 49 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 36 | 2025-11-25+ | v1 |
Get details about a specific beta reader persona
Get details about a specific team
Get details about a specific workspace
List all books in the author's account
List all available guides for learning Slima concepts and workflows
List available beta reader personas
List all teams the author is a member of
List all workspaces
Load a specific guide by slug to learn how to use a Slima feature
Read the contents of a file in a book
Search for content across files in a book
Update a beat board file with structured operations
Update a file by replacing its entire contents
Update a relationship map file with structured operations
Update a script file with structured operations
Update a timeline file with structured operations
Update a world map file with structured operations
Write content to a file (alias for create_file or update_file)
Structured operation tools (update_beat_board, update_timeline, update_script, etc.) have no documented schema for the 'operations' array parameter. What structure do operations take? What keys/fields are valid? LLM must guess or fail.
No output schemas documented. Tools return results, but LLMs cannot see what fields to expect (e.g., does get_book return chapters? metadata? status?). This blocks downstream tool chaining and forces exploratory calls.
Redundant write tools: create_file, write_file, and update_file all appear to write content. 'write_file' is documented as 'alias for create_file or update_file', LLMs waste reasoning cycles deciding which to use. Consolidate to one canonical path (e.g., update_file with 'create_if_missing' option) or remove the alias.
Error handling not visible. No documented error recovery strategies. What happens if delete_file fails? Is it retryable? User-fixable? No guidance in descriptions or visible error handling code.
Tool definitions appear to be inferred from test files (scripts/e2e.mjs, scripts/phase1_smoke.mjs) rather than visible in production source.