MCP server for reading, updating, and extracting metadata from comic book archives (CBZ/CBR formats). Provides tools for metadata inspection, bulk updates, cover image extraction, and page removal with read-only mode and path access control.
InkTag MCP has 6 tools with mixed quality. Tool names follow verb_noun pattern (ReadComicMetadata, UpdateComicMetadata, etc.), which is good. However, descriptions are inconsistent in quality and length. Input schemas are present for all tools but lack comprehensive type information and validation constraints. Critical issues: (1) Parameter schemas use minimal typing, most are bare strings or objects without detailed constraints; (2) Output schemas are not documented anywhere, critical for agent chaining; (3) Error handling lacks recovery guidance; (4) One tool (GetComicSchema) lacks a meaningful description; (5) ScanComicMetadata tool has no description visible in provided code; (6) Write-safety mechanisms exist (dryRun defaults, read-only mode) but lack explicit parameter descriptions about destructive behavior.
Extracts front cover or specific page art from a comic archive for multimodal vision inspection.
Reads XML metadata embedded in a CBZ or CBR archive and returns it as JSON.
Removes a specific page (or provider title/intro page at index 0) from a comic archive. Defaults to dryRun=true (preview only). Set dryRun=false to commit the removal.
Updates metadata properties in a comic archive or directory using a JSON patch. Defaults to dryRun=true (preview only). Set dryRun=false to commit changes.
GetComicSchema tool has no description. Without one, LLMs cannot determine when or why to select the tool.' This tool scores 0 for description.
ScanComics tool has no visible description in the provided source code. The Input schema is defined but the tool's purpose is not documented, preventing LLM selection.
Parameter schemas lack comprehensive type definitions and constraints. Example: 'patch' parameter in UpdateComicMetadata is typed as 'object' with no constraints on allowed keys, nested structure, or validation rules. UpdateComicMetadata's 'patch' parameter should document valid metadata field names and types.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 44 | <=2025-11-25 | v2 |
Output schemas are not documented for any tool. LLMs need to know what fields to expect so they can plan downstream tool calls and extract the right data.' Tools return JSON strings but the structure and field types are not declared. This prevents agents from chaining tools and extracting data confidently.
Error handling lacks recovery guidance. Try search_users() with a partial name." A raw error code or stack trace gives the agent nothing to act on.' Current code throws UnauthorizedAccessException and generic exceptions. Agents have no guidance on retry or alternatives.
Destructive operations (RemoveComicPage, UpdateComicMetadata with dryRun=false) rely on a dryRun parameter to prevent accidents. However, parameter descriptions do not emphasize the destructive nature or include a confirmation-request pattern. Agents make mistakes, a confirm_before_execute pattern prevents catastrophic errors.'
'path' parameter in multiple tools is a free-form string with no format or length constraints documented.
pageIndex parameter in ExtractCoverImage and RemoveComicPage lacks constraints. No documented minimum (0), maximum (total pages in archive), or what happens if index exceeds bounds.
'fields' parameter in ScanComics is typed as array but with no description of what values are valid, what the default behavior is if empty, or what metadata fields are extractable.
Tool composition: ReadComicMetadata and GetComicSchema appear to serve related purposes (reading schema vs reading metadata). No clear delineation in descriptions about when to use each. If search_users and find_users both exist, the LLM wastes reasoning cycles deciding between them.'