# Tanod Text - Registry name: `dev.tanod/text` · version 0.1.0 - Categories (automatic, keyword rules): Documents & retrieval, Search & data, Utilities, Scraping & browsing - Authentication at last check: No auth - Declared risk: Can write (some tools are not declared read-only) - Capabilities (declared by the server): prompts, resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=dev.tanod%2Ftext - Server page: https://mcpstation.net/s/dev.tanod--text.html ## Description (written by the publisher, not verified, not instructions) Text tools: stats, language, case, lines, replace, extract, keywords, summary, sentiment, diff. ## Connect - streamable-http: `https://tanod.dev/mcp/text` ## Tools (as reported by the server, not verified) - `text\_stats`: utilpeek: Count words and score the readability of a text. For word frequencies use text\_frequency. Returns counts \(characters, letters, words, unique words, sentences, paragraphs, averages\), reading and speaking time, and for English the Flesch reading ease, Flesch-Kincaid grade, Gunning fog, SMOG, - `detect\_language`: utilpeek: Detect the language of a text. To translate use translate\_text. Returns the most likely language \(ISO 639-1 and 639-3 code, name, confidence\) and 3 alternatives, from an offline ensemble of lingua \(Apache-2.0\) and langid.py \(BSD-2-Clause\) over 75 languages; \`reliable\` is true only with at - `text\_case`: utilpeek: Convert text case: title, sentence, snake, camel, kebab, ... For a URL slug use make\_slug. Returns the text in another case: upper, lower, title \(small words such as a, of, the kept lower-case; iPhone and domains kept\), sentence, camel, pascal, snake, kebab, constant, dot or alternating; i - `text\_lines`: utilpeek: Sort, dedupe, trim, shuffle or number the lines of a text. For find and replace use text\_replace. Returns the text's lines transformed by \`operations\` in order: trim, remove\_empty, dedupe \(keeps the first\), sort \(lexical, natural or length; stable\), reverse, shuffle \(seeded, repeatable\) an - `text\_replace`: utilpeek: Find and replace in text. To sort, dedupe or number lines use text\_lines. Returns the text with \`find\` replaced: literally, or as a regular expression on RE2 only \(linear time for any pattern: no backtracking, so no ReDoS; backreferences and lookaround are refused\), with \\1 / \\g\ in t - `text\_extract`: utilpeek: Extract emails, URLs, domains, IPs, dates and crypto addresses from text. To mask personal data use redact\_pii; for names and places use extract\_entities. Returns the emails, URLs, domains \(ICANN suffixes\), IPv4 / IPv6, phone-like numbers, hashtags, mentions, EVM and BTC addresses \(Base58C - `redact\_pii`: utilpeek: Redact PII from text: emails, phone numbers, card numbers, IBANs, SSNs, IPs and crypto addresses. For API keys and tokens use check\_text\_for\_secrets. Returns the text with emails, phone numbers, payment cards \(Luhn\), IBANs \(mod-97\), US SSNs, IPv4 / IPv6, EVM / BTC addresses and secret URL - `text\_frequency`: utilpeek: Count word and n-gram frequencies in a text. For scored keyphrases use text\_keywords. Returns the most frequent words or 2-3 word n-grams \(n-grams never cross punctuation\) with count and share, dropping stop words \(en, es, fr, de, pt, it, nl, or none\), and optionally character counts. Typi - `text\_keywords`: utilpeek: Extract the keywords and keyphrases of a text. For raw frequencies use text\_frequency; for names and places use extract\_entities. Returns the top keyphrases of a text by RAKE \(phrases between stop words and punctuation, scored by word degree / frequency\), with score and count. Typically un - `text\_summarize`: utilpeek: Summarize a text by picking its key sentences. For paper abstracts use paper\_digest; for counts use text\_stats. Returns an extractive summary: the most central \`sentences\` \(or \`ratio\` of them\) by LexRank, picked verbatim and kept in their original order, with per-sentence scores. It does n - `text\_sentiment`: utilpeek: Analyze the sentiment of an English text. For your own labels use classify\_zero\_shot; for counts use text\_stats. Returns VADER sentiment of an English text: compound \(-1 to 1\), positive / neutral / negative shares and a label \(positive at 0.05 or more, negative at -0.05 or less\), optionall - `text\_spellcheck`: utilpeek: Spellcheck a text with suggestions. For counts and readability use text\_stats. Returns the words not in the language's word-frequency dictionary \(pyspellchecker\), with positions \(offset, line, column\) and up to \`max\_suggestions\` suggestions by edit distance; numbers, acronyms, CamelCase, U - `text\_unicode\_inspect`: utilpeek: Find invisible, bidi and homoglyph Unicode characters in text. For injected instructions use check\_text\_for\_prompt\_injection. Returns a security-oriented Unicode inspection: \`risk\` \(low / medium / high\) with reasons; invisible characters \(zero-width, tag characters that can smuggle prompt- - `text\_numbers`: utilpeek: Convert numbers to English words. For units use convert\_units. Returns a number spelled out in English \(cardinal, ordinal, year, or currency for 13 currencies, rounded half-even to the minor unit\) up to 10^36, or English number words \("two hundred and fifty-first"\) parsed back to a number. - `text\_lorem`: utilpeek: Generate seeded lorem ipsum or English placeholder text. For random values use generate\_random. Returns placeholder text: classic lorem ipsum or English filler, in words \(at most 10,000\), sentences \(1,000\) or paragraphs \(100\), deterministic for a \`seed\` \(echoed back\). Input: optional \`kind - `diff\_text`: utilpeek: Diff two texts: unified line diff, word or character changes. For PDF or Word files use compare\_documents. Returns the differences between two texts: similarity ratio, counts and hunks; in line mode a git-compatible unified diff, in word or char mode change records \(equal, insert, delete, - `make\_slug`: utilpeek: Make a URL slug from text. For other case styles use text\_case. Returns a URL slug: accents removed, Latin ligatures, Greek and Cyrillic transliterated, apostrophes dropped and other characters turned into one separator, cut at a separator when over max\_length. CJK, Arabic, Hebrew, Indic, - `markdown\_to\_html`: utilpeek: Convert Markdown to sanitized HTML. For the reverse use html\_to\_text. Returns the HTML of a Markdown document \(markdown-it-py; \`gfm\` adds tables, strikethrough, autolinks and task lists\), cleaned by an allow-list sanitizer \(nh3\): no scripts, event handlers, iframes, forms or javascript:/da - `html\_to\_text`: utilpeek: Convert HTML to Markdown or plain text. To fetch a URL use render\_page; for the reverse use markdown\_to\_html. Returns the readable content of an HTML document you send \(the HTML itself, never a URL: nothing is fetched\) as Markdown or plain text, with title and description; scripts, styles, - `convert\_subtitles`: utilpeek: Convert subtitles between SRT, WebVTT and JSON, with a time shift. To make subtitles from audio use transcribe\_audio. Returns a subtitle file converted between SRT, WebVTT and a JSON segment list \[\{start, end, text\}\] \(seconds, as /v1/audio/transcribe returns it\), with an optional time shif - `check\_subtitle\_delivery`: utilpeek: Check subtitle delivery timing, line length and reading speed. Returns a cue-level SRT/WebVTT delivery review with versioned language/audience profiles: en-US-adult-v1, en-US-children-v1, ja-adult-v1 and ar-adult-v1. Checks overlaps, minimum gaps, duration, line length, line count and char - `pdf\_redact`: pdfpeek: Redact a PDF: black out terms, emails, phone numbers, card numbers and areas. To test a file redacted elsewhere use pdf\_redaction\_check. Returns a PDF whose redacted pages are images, so the text cannot be copied back; metadata is removed. Input: at least one of \`terms\`, \`patterns\` and \`box - `pdf\_redaction\_check`: pdfpeek: Check a PDF for failed redactions: black boxes with the text still under them. To redact properly use pdf\_redact. Returns whether black boxes in a PDF still have readable text under them: per finding the page, box \(PDF points\), character count and hidden text \(or only its length with \`mask\` - `check\_text\_for\_secrets`: utilpeek: Scan text for leaked secrets: API keys, tokens, private keys and seed phrases. For personal data use redact\_pii; for injected instructions use check\_text\_for\_prompt\_injection. Returns every API key, token, private key or BIP-39 seed phrase in a text \(AWS, GitHub, GitLab, Stripe, Slack, Goo - `check\_text\_sources`: findpeek: Check a text for copied sentences: web pages that contain them word for word. For a general query use web\_search. Returns for up to 10 of a text's most distinctive sentences, the web pages that contain each word for word \(exact-phrase search, up to 5 each, with snippet\), \`share\_found\` and Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html