MCP server for controlling the Inkra text editor via API, enabling document manipulation, file operations, bookmarks, themes, and view modes
Inkra MCP has 18 tools with explicit schemas and descriptions, but quality is inconsistent. All tools have input schemas with proper JSON Schema structure (type, description, required fields). Naming follows verb_noun convention (document_get, document_set, folder_open). However, descriptions are terse (10-50 chars), lacking context on WHEN to use each tool or what happens on failure. Parameters lack constraints (enums, ranges, patterns). No output schemas documented. Error handling is absent, tool dispatch returns generic success messages without guidance on failure modes. Security concerns: document_open and folder_open accept absolute paths without validation, risking path traversal. No pagination support for list operations. Composition is reasonable, tools are single-purpose, but missing idempotency guarantees and chaining metadata.
Adds a bookmark at a specific position in the text
Removes a bookmark by its ID
Returns all bookmarks of the current document
Creates a new document with optional content
Returns the full text content of the document
Inserts text at a position (line/column, 0-based)
Opens a file in the editor (absolute path)
Descriptions are uniformly terse (10-50 chars), below the 194-char baseline for production tools. Missing context on WHEN to use each tool, prerequisites, and failure modes. E.g., 'Returns the full text content of the document' lacks guidance on when to call it vs. document_search.
No output schemas documented. Tool dispatch returns generic text responses (e.g., 'OK, 42 characters') without structured field definitions. LLMs cannot plan downstream calls or extract typed data. E.g., document_search returns jsonStr(r) but the structure of r is undocumented.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Finds and replaces text in the document
Saves the current document
Searches the document for text or regex
Replaces the full text content of the document
Lists files in the opened folder
Opens a folder in the sidebar
Returns the YAML frontmatter of the document
Returns the heading structure of the document
Switches the theme (standard, sepia, night)
Controls Focus Mode and Wide Mode
Returns the current app state
Path traversal vulnerability: document_open and folder_open accept absolute paths without validation. An LLM could be tricked into opening /etc/passwd or traversing outside intended directories. Sanitize paths and restrict to allowed directories.
No error handling or recovery guidance. Tool dispatch catches errors but returns no actionable messages. E.g., if document_open fails (file not found, permission denied), the LLM receives no guidance on what to try next. Implement error classification (retryable, user-fixable, fatal) and recovery hints.
No parameter constraints (enums, ranges, patterns). E.g., theme_set accepts any string for 'id', should be an enum (standard|sepia|night). view_mode_set booleans lack defaults. folder_list_files glob parameter has no length limit or pattern validation. Constraints prevent hallucinated values.