MCP Server

Text Tools

com.apished/text-tools
Developer Tools Public & reachable MCP 2025-11-25

What this MCP does

Performs Unicode-safe text operations including counting, indexing, reversal, sorting, palindrome checks, and detailed text statistics.

text_charat
Returns the 0-indexed character (rune) at index in text.
Input schema
{'type': 'object', 'required': ['text', 'index'], 'properties': {'text': {'type': 'string'}, 'index': {'type': 'integer', 'description': '0-indexed'}}, 'additionalProperties': False}
Output schema
{'type': 'string'}
text_count
Counts non-overlapping occurrences of substring in text (rune-safe, not byte-based).
Input schema
{'type': 'object', 'required': ['text', 'substring'], 'properties': {'text': {'type': 'string'}, 'substring': {'type': 'string', 'description': 'must be non-empty'}}, 'additionalProperties': False}
Output schema
{'type': 'integer'}
text_palindrome
Checks whether text reads the same forwards and backwards. ignoreCase/ignoreNonAlnum default false (strict, literal comparison); set both true for phrase-style palindromes like "A man, a plan, a canal: Panama".
Input schema
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}, 'ignoreCase': {'type': 'boolean'}, 'ignoreNonAlnum': {'type': 'boolean'}}, 'additionalProperties': False}
Output schema
{'type': 'boolean'}
text_reverse
Reverses text by Unicode code point (rune), not grapheme cluster.
Input schema
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}}, 'additionalProperties': False}
Output schema
{'type': 'string'}
text_sort
Sorts text's characters or words alphabetically. by: "chars" (default, sorts runes, no separator) or "words" (splits on whitespace, rejoins with a single space).
Input schema
{'type': 'object', 'required': ['text'], 'properties': {'by': {'type': 'string', 'description': 'chars (default) or words'}, 'text': {'type': 'string'}}, 'additionalProperties': False}
Output schema
{'type': 'string'}
text_stats
Descriptive statistics for text: rune/byte/word/line counts, a unique-rune count, a letters/digits/spaces/punctuation/other breakdown, an exact per-character frequency table, and word-length min/max/average plus the actual shortest/longest word (ties resolve to the first occurrence).
Input schema
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}}, 'additionalProperties': False}
Output schema
{'type': 'object', 'required': ['runes', 'bytes', 'words', 'lines', 'uniqueRunes', 'charTypes', 'charFrequency', 'wordLengths'], 'properties': {'bytes': {'type': 'integer'}, 'lines': {'type': 'integer'}, 'runes': {'type': 'integer'}, 'words': {'type': 'integer'}, 'charTypes': {'type': 'object', 'required': ['letters', 'digits', 'spaces', 'punctuation', 'other'], 'properties': {'other': {'type': 'integer'}, 'digits': {'type': 'integer'}, 'spaces': {'type': 'integer'}, 'letters': {'type': 'integer'}, 'punctuation': {'type': 'integer'}}, 'additionalProperties': False}, 'uniqueRunes': {'type': 'integer'}, 'wordLengths': {'type': 'object', 'required': ['min', 'max', 'average', 'shortest', 'longest'], 'properties': {'max': {'type': 'integer'}, 'min': {'type': 'integer'}, 'average': {'type': 'number'}, 'longest': {'type': 'string'}, 'shortest': {'type': 'string'}}, 'additionalProperties': False}, 'charFrequency': {'type': 'object', 'additionalProperties': {'type': 'integer'}}}, 'additionalProperties': False}
text_wordcount
Counts whitespace-delimited words in text.
Input schema
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string'}}, 'additionalProperties': False}
Output schema
{'type': 'integer'}
Added
text_wordcount
Sept. 17, 2026, 12:33 p.m.
Added
text_stats
Sept. 17, 2026, 12:33 p.m.
Added
text_sort
Sept. 17, 2026, 12:33 p.m.
Added
text_reverse
Sept. 17, 2026, 12:33 p.m.
Added
text_palindrome
Sept. 17, 2026, 12:33 p.m.
Added
text_count
Sept. 17, 2026, 12:33 p.m.
Added
text_charat
Sept. 17, 2026, 12:33 p.m.