MCP server that implements text manipulation tools: distill (word/letter reduction), fold (text interleaving), press (grid-based text combination), and mark (QR code generation with letter marking)
mcp-cutup defines 4 tools with complete JSON schemas and basic descriptions. However, descriptions are terse (10-80 chars, well below the 194-char baseline), lack context on WHEN to use each tool, and omit error guidance. Tool names are domain-specific but lack action verbs (distill, fold, press, mark are nouns/verbs but not verb_noun patterns like 'reduce_text' or 'combine_texts'). Parameters have types and descriptions, but descriptions are minimal and lack format/constraint details. No output schemas documented. No error handling guidance. No tool annotations (readOnlyHint, etc.). The server is a creative text-manipulation tool, not a business-logic tool, so some naming latitude is acceptable, but descriptions remain below production baseline.
Reduces text by removing words and letters according to a seed-based algorithm
Interleaves two texts using one of four methods (splice, grid, weave, or zigzag) with optional seaming
Generates a QR code marking specified letters in text, with configurable visual styling
Combines two texts into a grid pattern using one of four methods (splice, grid, weave, or zigzag)
Descriptions are terse (10 - 80 chars) and lack context. 'Reduces text by removing words and letters according to a seed-based algorithm' does not explain WHEN to use distill vs fold/press, what the output looks like, or how seed affects reproducibility. Baseline is 194 chars; these are 40% of that.
No output schemas documented. LLMs cannot plan downstream calls or extract results. E.g., does distill return {text, reduction_pct} or just a string? Does fold return a single combined text or structured metadata?
No error handling guidance. If seed is invalid, or texts are empty, or method is unsupported, what does the tool return? No recovery hints for LLMs.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2025-06-18+ | v2 |
Tool names lack action verbs. 'distill', 'fold', 'press', 'mark' are domain-specific but do not follow verb_noun convention (e.g., 'reduce_text', 'combine_texts', 'encode_qr'). LLMs infer intent from names, these are ambiguous without reading descriptions.
Parameter descriptions lack format/constraint details. E.g., 'seed' is described as 'Random seed for reproducible reduction' but does not specify range (0 - 2^31?), whether negative is allowed, or what happens if omitted. 'method' enum is clear, but 'foldPct' is marked optional/conditional without explaining the condition.