A Model Context Protocol server for character-level index-based string manipulation
Solid foundation with complete schemas and consistent descriptions across all 11 tools. All tools have proper input schemas with typed parameters and descriptions. Tool names follow verb_noun convention (find_*, extract_*, count_*, etc.). However, descriptions are generic and lack LLM-optimization guidance on WHEN to use each tool vs. alternatives. Parameter descriptions are minimal (10-30 chars) and lack format/constraint details. No output schema documentation. Error handling is absent, tools return -1 or empty lists without guidance on recovery. Missing tool annotations (readOnlyHint/destructiveHint) despite clear risk classification in metadata.
Count character statistics. Returns dict with total, without_spaces, letters, digits, spaces, special.
Delete characters in range [start, end).
Extract content between markers with positions. Returns dict with content and position info.
Extract substrings by index ranges. Supports negative indices and omitting end.
Find all indices where a character appears. Returns empty list if not found.
Find all starting indices where a substring appears (includes overlaps).
Find index of nth occurrence of a character. Returns -1 if not found.
No output schema documentation. Tools return dicts and lists but LLMs cannot infer field names, types, or structure. E.g., extract_between_markers returns 'dict[str, Any | None]' with no field documentation.
Descriptions lack LLM-optimization guidance. Generic descriptions (50-65 chars) do not explain WHEN to use each tool vs. alternatives. E.g., find_nth_char vs. find_all_char_indices distinction is unclear from descriptions alone.
No error handling or recovery guidance. Tools return -1 or empty lists on failure with no message. LLMs cannot determine if failure is retryable, user-fixable, or fatal.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Find starting index of nth occurrence of a substring. Returns -1 if not found.
Insert text at index position without replacing. Supports negative indices.
Replace characters in range [start, end) with new text.
Split text at exact index positions. Indices auto-sorted and deduplicated.
Missing tool annotations despite clear risk classification. Metadata marks insert_at_index, delete_range, replace_range as WRITE operations, but no destructiveHint or idempotentHint annotations in schema.
Parameter descriptions are minimal (10-30 chars) and lack format/constraint details. E.g., 'n' param described as 'Which occurrence to find (1-based)' but no mention of bounds or behavior for n=0 or negative n.