{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_9sb629qm9uxe","handle":"tanod-text","url":"https://wellknown.network/agents/tanod-text","links":{"self":"https://wellknown.network/agents/tanod-text/record.json","html":"https://wellknown.network/agents/tanod-text","markdown":"https://wellknown.network/agents/tanod-text/record.md","api":"https://wellknown.network/api/v1/agents/tanod-text","status":"https://wellknown.network/api/v1/agents/tanod-text/status","claim":"https://wellknown.network/agents/tanod-text/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/tanod-text/claim.json","badge":"https://wellknown.network/agents/tanod-text/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/tanod-text/history","tools":"https://wellknown.network/api/v1/agents/tanod-text/tools"},"ard":{"identifier":"urn:air:tanod.dev:server:tanod-text","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Tanod Text","summary":"Text tools: stats, language, case, lines, replace, extract, keywords, summary, sentiment, diff.","description":"Text tools: stats, language, case, lines, replace, extract, keywords, summary, sentiment, diff.","publisher":{"name":"dev.tanod","url":null},"homepage":"https://tanod.dev","repository":null,"version":"0.1.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://tanod.dev/mcp/text","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-08T11:17:57.852226Z","publishedAt":"2026-10-08T11:17:57.852226Z","registryName":"dev.tanod/text"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.writing","name":"Writing & Editing","confidence":1,"provenance":"derived"},{"slug":"content.seo","name":"SEO","confidence":0.938,"provenance":"derived"},{"slug":"security.scanning","name":"Security Scanning","confidence":0.583,"provenance":"derived"},{"slug":"media.speech-recognition","name":"Speech Recognition","confidence":0.554,"provenance":"derived"},{"slug":"data.web-search","name":"Web Search","confidence":0.554,"provenance":"derived"},{"slug":"content.translation","name":"Translation","confidence":0.54,"provenance":"derived"},{"slug":"media.video-editing","name":"Video Editing","confidence":0.54,"provenance":"derived"},{"slug":"knowledge.knowledge-graph","name":"Knowledge Graphs","confidence":0.525,"provenance":"derived"}],"categories":["content","data","knowledge","media","security"],"language":"fr"},"observed":{"status":"live","statusReason":"Responded 5h ago.","lastOkAt":"2026-10-22T09:30:09.199Z","lastProbedAt":"2026-10-22T09:30:09.199Z","statusComputedAt":"2026-10-22T09:32:52.785Z","reliability30d":{"probes":47,"successRate":1,"p50Ms":417,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":47,"ok":47,"authBoundaryOk":0,"serviceOk":47,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-22T09:30:09.199Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":279,"error":null,"detail":{"tools":[{"name":"text_stats","description":"utilpeek: Count words and score the readability of a text. For word frequencies use text_frequency. Returns counts (characters, letters, words, unique words, se"},{"name":"detect_language","description":"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 al"},{"name":"text_case","description":"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 (smal"},{"name":"text_lines","description":"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`"},{"name":"text_replace","description":"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"},{"name":"text_extract","description":"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_entit"},{"name":"redact_pii","description":"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. "},{"name":"text_frequency","description":"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 nev"},{"name":"text_keywords","description":"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 keyp"},{"name":"text_summarize","description":"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 mos"},{"name":"text_sentiment","description":"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"},{"name":"text_spellcheck","description":"utilpeek: Spellcheck a text with suggestions. For counts and readability use text_stats. Returns the words not in the language's word-frequency dictionary (pysp"},{"name":"text_unicode_inspect","description":"utilpeek: Find invisible, bidi and homoglyph Unicode characters in text. For injected instructions use check_text_for_prompt_injection. Returns a security-orien"},{"name":"text_numbers","description":"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 cu"},{"name":"text_lorem","description":"utilpeek: Generate seeded lorem ipsum or English placeholder text. For random values use generate_random. Returns placeholder text: classic lorem ipsum or Engli"},{"name":"diff_text","description":"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: "},{"name":"make_slug","description":"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 transliterate"},{"name":"markdown_to_html","description":"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, stri"},{"name":"html_to_text","description":"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 "},{"name":"convert_subtitles","description":"utilpeek: Convert subtitles between SRT, WebVTT and JSON, with a time shift. To make subtitles from audio use transcribe_audio. Returns a subtitle file converte"},{"name":"pdf_redact","description":"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 "},{"name":"pdf_redaction_check","description":"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 "},{"name":"check_text_for_secrets","description":"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_t"},{"name":"check_text_sources","description":"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 mos"}],"toolCount":24,"toolsHash":"2794fc7883865407e6003842dbbbce84e0dbb11d1dd996c3113abdb9db4e9040","serverName":"tanod-text","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T02:32:39.769Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":283,"error":null,"detail":{"tools":[{"name":"text_stats","description":"utilpeek: Count words and score the readability of a text. For word frequencies use text_frequency. Returns counts (characters, letters, words, unique words, se"},{"name":"detect_language","description":"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 al"},{"name":"text_case","description":"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 (smal"},{"name":"text_lines","description":"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`"},{"name":"text_replace","description":"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"},{"name":"text_extract","description":"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_entit"},{"name":"redact_pii","description":"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. "},{"name":"text_frequency","description":"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 nev"},{"name":"text_keywords","description":"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 keyp"},{"name":"text_summarize","description":"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 mos"},{"name":"text_sentiment","description":"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"},{"name":"text_spellcheck","description":"utilpeek: Spellcheck a text with suggestions. For counts and readability use text_stats. Returns the words not in the language's word-frequency dictionary (pysp"},{"name":"text_unicode_inspect","description":"utilpeek: Find invisible, bidi and homoglyph Unicode characters in text. For injected instructions use check_text_for_prompt_injection. Returns a security-orien"},{"name":"text_numbers","description":"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 cu"},{"name":"text_lorem","description":"utilpeek: Generate seeded lorem ipsum or English placeholder text. For random values use generate_random. Returns placeholder text: classic lorem ipsum or Engli"},{"name":"diff_text","description":"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: "},{"name":"make_slug","description":"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 transliterate"},{"name":"markdown_to_html","description":"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, stri"},{"name":"html_to_text","description":"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 "},{"name":"convert_subtitles","description":"utilpeek: Convert subtitles between SRT, WebVTT and JSON, with a time shift. To make subtitles from audio use transcribe_audio. Returns a subtitle file converte"},{"name":"pdf_redact","description":"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 "},{"name":"pdf_redaction_check","description":"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 "},{"name":"check_text_for_secrets","description":"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_t"},{"name":"check_text_sources","description":"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 mos"}],"toolCount":24,"toolsHash":"2794fc7883865407e6003842dbbbce84e0dbb11d1dd996c3113abdb9db4e9040","serverName":"tanod-text","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T20:28:28.903Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":267,"error":null,"detail":{"tools":[{"name":"text_stats","description":"utilpeek: Count words and score the readability of a text. For word frequencies use text_frequency. Returns counts (characters, letters, words, unique words, se"},{"name":"detect_language","description":"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 al"},{"name":"text_case","description":"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 (smal"},{"name":"text_lines","description":"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`"},{"name":"text_replace","description":"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"},{"name":"text_extract","description":"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_entit"},{"name":"redact_pii","description":"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. "},{"name":"text_frequency","description":"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 nev"},{"name":"text_keywords","description":"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 keyp"},{"name":"text_summarize","description":"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 mos"},{"name":"text_sentiment","description":"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"},{"name":"text_spellcheck","description":"utilpeek: Spellcheck a text with suggestions. For counts and readability use text_stats. Returns the words not in the language's word-frequency dictionary (pysp"},{"name":"text_unicode_inspect","description":"utilpeek: Find invisible, bidi and homoglyph Unicode characters in text. For injected instructions use check_text_for_prompt_injection. Returns a security-orien"},{"name":"text_numbers","description":"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 cu"},{"name":"text_lorem","description":"utilpeek: Generate seeded lorem ipsum or English placeholder text. For random values use generate_random. Returns placeholder text: classic lorem ipsum or Engli"},{"name":"diff_text","description":"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: "},{"name":"make_slug","description":"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 transliterate"},{"name":"markdown_to_html","description":"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, stri"},{"name":"html_to_text","description":"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 "},{"name":"convert_subtitles","description":"utilpeek: Convert subtitles between SRT, WebVTT and JSON, with a time shift. To make subtitles from audio use transcribe_audio. Returns a subtitle file converte"},{"name":"pdf_redact","description":"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 "},{"name":"pdf_redaction_check","description":"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 "},{"name":"check_text_for_secrets","description":"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_t"},{"name":"check_text_sources","description":"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 mos"}],"toolCount":24,"toolsHash":"2794fc7883865407e6003842dbbbce84e0dbb11d1dd996c3113abdb9db4e9040","serverName":"tanod-text","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T10:31:32.847Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":269,"error":null,"detail":{"tools":[{"name":"text_stats","description":"utilpeek: Count words and score the readability of a text. For word frequencies use text_frequency. Returns counts (characters, letters, words, unique words, se"},{"name":"detect_language","description":"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 al"},{"name":"text_case","description":"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 (smal"},{"name":"text_lines","description":"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`"},{"name":"text_replace","description":"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"},{"name":"text_extract","description":"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_entit"},{"name":"redact_pii","description":"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. "},{"name":"text_frequency","description":"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 nev"},{"name":"text_keywords","description":"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 keyp"},{"name":"text_summarize","description":"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 mos"},{"name":"text_sentiment","description":"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"},{"name":"text_spellcheck","description":"utilpeek: Spellcheck a text with suggestions. For counts and readability use text_stats. Returns the words not in the language's word-frequency dictionary (pysp"},{"name":"text_unicode_inspect","description":"utilpeek: Find invisible, bidi and homoglyph Unicode characters in text. For injected instructions use check_text_for_prompt_injection. Returns a security-orien"},{"name":"text_numbers","description":"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 cu"},{"name":"text_lorem","description":"utilpeek: Generate seeded lorem ipsum or English placeholder text. For random values use generate_random. Returns placeholder text: classic lorem ipsum or Engli"},{"name":"diff_text","description":"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: "},{"name":"make_slug","description":"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 transliterate"},{"name":"markdown_to_html","description":"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, stri"},{"name":"html_to_text","description":"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 "},{"name":"convert_subtitles","description":"utilpeek: Convert subtitles between SRT, WebVTT and JSON, with a time shift. To make subtitles from audio use transcribe_audio. Returns a subtitle file converte"},{"name":"pdf_redact","description":"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 "},{"name":"pdf_redaction_check","description":"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 "},{"name":"check_text_for_secrets","description":"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_t"},{"name":"check_text_sources","description":"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 mos"}],"toolCount":24,"toolsHash":"2794fc7883865407e6003842dbbbce84e0dbb11d1dd996c3113abdb9db4e9040","serverName":"tanod-text","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T01:26:02.415Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":703,"error":null,"detail":{"tools":[{"name":"text_stats","description":"utilpeek: Count words and score the readability of a text. For word frequencies use text_frequency. Returns counts (characters, letters, words, unique words, se"},{"name":"detect_language","description":"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 al"},{"name":"text_case","description":"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 (smal"},{"name":"text_lines","description":"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`"},{"name":"text_replace","description":"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"},{"name":"text_extract","description":"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_entit"},{"name":"redact_pii","description":"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. "},{"name":"text_frequency","description":"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 nev"},{"name":"text_keywords","description":"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 keyp"},{"name":"text_summarize","description":"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 mos"},{"name":"text_sentiment","description":"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"},{"name":"text_spellcheck","description":"utilpeek: Spellcheck a text with suggestions. For counts and readability use text_stats. Returns the words not in the language's word-frequency dictionary (pysp"},{"name":"text_unicode_inspect","description":"utilpeek: Find invisible, bidi and homoglyph Unicode characters in text. For injected instructions use check_text_for_prompt_injection. Returns a security-orien"},{"name":"text_numbers","description":"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 cu"},{"name":"text_lorem","description":"utilpeek: Generate seeded lorem ipsum or English placeholder text. For random values use generate_random. Returns placeholder text: classic lorem ipsum or Engli"},{"name":"diff_text","description":"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: "},{"name":"make_slug","description":"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 transliterate"},{"name":"markdown_to_html","description":"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, stri"},{"name":"html_to_text","description":"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 "},{"name":"convert_subtitles","description":"utilpeek: Convert subtitles between SRT, WebVTT and JSON, with a time shift. To make subtitles from audio use transcribe_audio. Returns a subtitle file converte"},{"name":"pdf_redact","description":"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 "},{"name":"pdf_redaction_check","description":"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 "},{"name":"check_text_for_secrets","description":"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_t"},{"name":"check_text_sources","description":"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 mos"}],"toolCount":24,"toolsHash":"2794fc7883865407e6003842dbbbce84e0dbb11d1dd996c3113abdb9db4e9040","serverName":"tanod-text","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T18:28:21.322Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":751,"error":null,"detail":{"tools":[{"name":"text_stats","description":"utilpeek: Count words and score the readability of a text. For word frequencies use text_frequency. Returns counts (characters, letters, words, unique words, se"},{"name":"detect_language","description":"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 al"},{"name":"text_case","description":"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 (smal"},{"name":"text_lines","description":"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`"},{"name":"text_replace","description":"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"},{"name":"text_extract","description":"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_entit"},{"name":"redact_pii","description":"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. "},{"name":"text_frequency","description":"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 nev"},{"name":"text_keywords","description":"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 keyp"},{"name":"text_summarize","description":"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 mos"},{"name":"text_sentiment","description":"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"},{"name":"text_spellcheck","description":"utilpeek: Spellcheck a text with suggestions. For counts and readability use text_stats. Returns the words not in the language's word-frequency dictionary (pysp"},{"name":"text_unicode_inspect","description":"utilpeek: Find invisible, bidi and homoglyph Unicode characters in text. For injected instructions use check_text_for_prompt_injection. Returns a security-orien"},{"name":"text_numbers","description":"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 cu"},{"name":"text_lorem","description":"utilpeek: Generate seeded lorem ipsum or English placeholder text. For random values use generate_random. Returns placeholder text: classic lorem ipsum or Engli"},{"name":"diff_text","description":"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: "},{"name":"make_slug","description":"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 transliterate"},{"name":"markdown_to_html","description":"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, stri"},{"name":"html_to_text","description":"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 "},{"name":"convert_subtitles","description":"utilpeek: Convert subtitles between SRT, WebVTT and JSON, with a time shift. To make subtitles from audio use transcribe_audio. Returns a subtitle file converte"},{"name":"pdf_redact","description":"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 "},{"name":"pdf_redaction_check","description":"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 "},{"name":"check_text_for_secrets","description":"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_t"},{"name":"check_text_sources","description":"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 mos"}],"toolCount":24,"toolsHash":"2794fc7883865407e6003842dbbbce84e0dbb11d1dd996c3113abdb9db4e9040","serverName":"tanod-text","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T12:25:57.519Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":684,"error":null,"detail":{"tools":[{"name":"text_stats","description":"utilpeek: Count words and score the readability of a text. For word frequencies use text_frequency. Returns counts (characters, letters, words, unique words, se"},{"name":"detect_language","description":"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 al"},{"name":"text_case","description":"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 (smal"},{"name":"text_lines","description":"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`"},{"name":"text_replace","description":"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"},{"name":"text_extract","description":"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_entit"},{"name":"redact_pii","description":"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. "},{"name":"text_frequency","description":"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 nev"},{"name":"text_keywords","description":"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 keyp"},{"name":"text_summarize","description":"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 mos"},{"name":"text_sentiment","description":"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"},{"name":"text_spellcheck","description":"utilpeek: Spellcheck a text with suggestions. For counts and readability use text_stats. Returns the words not in the language's word-frequency dictionary (pysp"},{"name":"text_unicode_inspect","description":"utilpeek: Find invisible, bidi and homoglyph Unicode characters in text. For injected instructions use check_text_for_prompt_injection. Returns a security-orien"},{"name":"text_numbers","description":"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 cu"},{"name":"text_lorem","description":"utilpeek: Generate seeded lorem ipsum or English placeholder text. For random values use generate_random. Returns placeholder text: classic lorem ipsum or Engli"},{"name":"diff_text","description":"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: "},{"name":"make_slug","description":"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 transliterate"},{"name":"markdown_to_html","description":"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, stri"},{"name":"html_to_text","description":"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 "},{"name":"convert_subtitles","description":"utilpeek: Convert subtitles between SRT, WebVTT and JSON, with a time shift. To make subtitles from audio use transcribe_audio. Returns a subtitle file converte"},{"name":"pdf_redact","description":"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 "},{"name":"pdf_redaction_check","description":"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 "},{"name":"check_text_for_secrets","description":"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_t"},{"name":"check_text_sources","description":"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 mos"}],"toolCount":24,"toolsHash":"2794fc7883865407e6003842dbbbce84e0dbb11d1dd996c3113abdb9db4e9040","serverName":"tanod-text","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T05:22:57.779Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":267,"error":null,"detail":{"tools":[{"name":"text_stats","description":"utilpeek: Count words and score the readability of a text. For word frequencies use text_frequency. Returns counts (characters, letters, words, unique words, se"},{"name":"detect_language","description":"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 al"},{"name":"text_case","description":"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 (smal"},{"name":"text_lines","description":"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`"},{"name":"text_replace","description":"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"},{"name":"text_extract","description":"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_entit"},{"name":"redact_pii","description":"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. "},{"name":"text_frequency","description":"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 nev"},{"name":"text_keywords","description":"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 keyp"},{"name":"text_summarize","description":"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 mos"},{"name":"text_sentiment","description":"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"},{"name":"text_spellcheck","description":"utilpeek: Spellcheck a text with suggestions. For counts and readability use text_stats. Returns the words not in the language's word-frequency dictionary (pysp"},{"name":"text_unicode_inspect","description":"utilpeek: Find invisible, bidi and homoglyph Unicode characters in text. For injected instructions use check_text_for_prompt_injection. Returns a security-orien"},{"name":"text_numbers","description":"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 cu"},{"name":"text_lorem","description":"utilpeek: Generate seeded lorem ipsum or English placeholder text. For random values use generate_random. Returns placeholder text: classic lorem ipsum or Engli"},{"name":"diff_text","description":"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: "},{"name":"make_slug","description":"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 transliterate"},{"name":"markdown_to_html","description":"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, stri"},{"name":"html_to_text","description":"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 "},{"name":"convert_subtitles","description":"utilpeek: Convert subtitles between SRT, WebVTT and JSON, with a time shift. To make subtitles from audio use transcribe_audio. Returns a subtitle file converte"},{"name":"pdf_redact","description":"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 "},{"name":"pdf_redaction_check","description":"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 "},{"name":"check_text_for_secrets","description":"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_t"},{"name":"check_text_sources","description":"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 mos"}],"toolCount":24,"toolsHash":"2794fc7883865407e6003842dbbbce84e0dbb11d1dd996c3113abdb9db4e9040","serverName":"tanod-text","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-19T22:29:15.388Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":727,"error":null,"detail":{"tools":[{"name":"text_stats","description":"utilpeek: Count words and score the readability of a text. For word frequencies use text_frequency. Returns counts (characters, letters, words, unique words, se"},{"name":"detect_language","description":"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 al"},{"name":"text_case","description":"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 (smal"},{"name":"text_lines","description":"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`"},{"name":"text_replace","description":"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"},{"name":"text_extract","description":"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_entit"},{"name":"redact_pii","description":"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. "},{"name":"text_frequency","description":"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 nev"},{"name":"text_keywords","description":"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 keyp"},{"name":"text_summarize","description":"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 mos"},{"name":"text_sentiment","description":"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"},{"name":"text_spellcheck","description":"utilpeek: Spellcheck a text with suggestions. For counts and readability use text_stats. Returns the words not in the language's word-frequency dictionary (pysp"},{"name":"text_unicode_inspect","description":"utilpeek: Find invisible, bidi and homoglyph Unicode characters in text. For injected instructions use check_text_for_prompt_injection. Returns a security-orien"},{"name":"text_numbers","description":"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 cu"},{"name":"text_lorem","description":"utilpeek: Generate seeded lorem ipsum or English placeholder text. For random values use generate_random. Returns placeholder text: classic lorem ipsum or Engli"},{"name":"diff_text","description":"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: "},{"name":"make_slug","description":"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 transliterate"},{"name":"markdown_to_html","description":"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, stri"},{"name":"html_to_text","description":"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 "},{"name":"convert_subtitles","description":"utilpeek: Convert subtitles between SRT, WebVTT and JSON, with a time shift. To make subtitles from audio use transcribe_audio. Returns a subtitle file converte"},{"name":"pdf_redact","description":"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 "},{"name":"pdf_redaction_check","description":"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 "},{"name":"check_text_for_secrets","description":"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_t"},{"name":"check_text_sources","description":"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 mos"}],"toolCount":24,"toolsHash":"2794fc7883865407e6003842dbbbce84e0dbb11d1dd996c3113abdb9db4e9040","serverName":"tanod-text","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-19T16:30:59.404Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":741,"error":null,"detail":{"tools":[{"name":"text_stats","description":"utilpeek: Count words and score the readability of a text. For word frequencies use text_frequency. Returns counts (characters, letters, words, unique words, se"},{"name":"detect_language","description":"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 al"},{"name":"text_case","description":"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 (smal"},{"name":"text_lines","description":"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`"},{"name":"text_replace","description":"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"},{"name":"text_extract","description":"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_entit"},{"name":"redact_pii","description":"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. "},{"name":"text_frequency","description":"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 nev"},{"name":"text_keywords","description":"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 keyp"},{"name":"text_summarize","description":"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 mos"},{"name":"text_sentiment","description":"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"},{"name":"text_spellcheck","description":"utilpeek: Spellcheck a text with suggestions. For counts and readability use text_stats. Returns the words not in the language's word-frequency dictionary (pysp"},{"name":"text_unicode_inspect","description":"utilpeek: Find invisible, bidi and homoglyph Unicode characters in text. For injected instructions use check_text_for_prompt_injection. Returns a security-orien"},{"name":"text_numbers","description":"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 cu"},{"name":"text_lorem","description":"utilpeek: Generate seeded lorem ipsum or English placeholder text. For random values use generate_random. Returns placeholder text: classic lorem ipsum or Engli"},{"name":"diff_text","description":"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: "},{"name":"make_slug","description":"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 transliterate"},{"name":"markdown_to_html","description":"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, stri"},{"name":"html_to_text","description":"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 "},{"name":"convert_subtitles","description":"utilpeek: Convert subtitles between SRT, WebVTT and JSON, with a time shift. To make subtitles from audio use transcribe_audio. Returns a subtitle file converte"},{"name":"pdf_redact","description":"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 "},{"name":"pdf_redaction_check","description":"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 "},{"name":"check_text_for_secrets","description":"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_t"},{"name":"check_text_sources","description":"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 mos"}],"toolCount":24,"toolsHash":"2794fc7883865407e6003842dbbbce84e0dbb11d1dd996c3113abdb9db4e9040","serverName":"tanod-text","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"text_stats","description":"utilpeek: Count words and score the readability of a text. For word frequencies use text_frequency. Returns counts (characters, letters, words, unique words, se"},{"name":"detect_language","description":"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 al"},{"name":"text_case","description":"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 (smal"},{"name":"text_lines","description":"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`"},{"name":"text_replace","description":"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"},{"name":"text_extract","description":"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_entit"},{"name":"redact_pii","description":"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. "},{"name":"text_frequency","description":"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 nev"},{"name":"text_keywords","description":"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 keyp"},{"name":"text_summarize","description":"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 mos"},{"name":"text_sentiment","description":"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"},{"name":"text_spellcheck","description":"utilpeek: Spellcheck a text with suggestions. For counts and readability use text_stats. Returns the words not in the language's word-frequency dictionary (pysp"},{"name":"text_unicode_inspect","description":"utilpeek: Find invisible, bidi and homoglyph Unicode characters in text. For injected instructions use check_text_for_prompt_injection. Returns a security-orien"},{"name":"text_numbers","description":"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 cu"},{"name":"text_lorem","description":"utilpeek: Generate seeded lorem ipsum or English placeholder text. For random values use generate_random. Returns placeholder text: classic lorem ipsum or Engli"},{"name":"diff_text","description":"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: "},{"name":"make_slug","description":"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 transliterate"},{"name":"markdown_to_html","description":"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, stri"},{"name":"html_to_text","description":"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 "},{"name":"convert_subtitles","description":"utilpeek: Convert subtitles between SRT, WebVTT and JSON, with a time shift. To make subtitles from audio use transcribe_audio. Returns a subtitle file converte"},{"name":"pdf_redact","description":"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 "},{"name":"pdf_redaction_check","description":"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 "},{"name":"check_text_for_secrets","description":"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_t"},{"name":"check_text_sources","description":"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 mos"}],"package":null,"toolSurface":{"id":"ts_5uu6nvbm2yas","endpointId":"ep_7qy95ns9ch4a","hash":"2794fc7883865407e6003842dbbbce84e0dbb11d1dd996c3113abdb9db4e9040","toolCount":24,"serverName":"tanod-text","serverVersion":"0.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-16T15:30:41.308Z","lastSeenAt":"2026-10-22T09:30:09.200Z","observations":21,"toolNames":["text_stats","detect_language","text_case","text_lines","text_replace","text_extract","redact_pii","text_frequency","text_keywords","text_summarize","text_sentiment","text_spellcheck","text_unicode_inspect","text_numbers","text_lorem","diff_text","make_slug","markdown_to_html","html_to_text","convert_subtitles","pdf_redact","pdf_redaction_check","check_text_for_secrets","check_text_sources"],"distinctSurfaces":8},"endpointFacts":[{"id":"ep_7qy95ns9ch4a","url":"https://tanod.dev/mcp/text","type":"mcp_streamable_http","factsCheckedAt":"2026-10-20T12:25:57.529Z","auth":{"observedAt":"2026-10-20T12:25:57.791Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-20T12:25:57.838Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"tanod.dev","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-10-06T15:23:54.000Z","validTo":"2027-01-04T15:23:53.000Z","daysToExpiry":74,"sanCount":2,"fingerprint256":"42:4E:C3:21:85:BF:3C:16:A2:A4:8A:B6:42:6C:B6:FD:E6:C5:58:F5:8B:E1:73:93:8B:FF:10:6E:25:A4:98:76"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"dev.tanod/text","url":"https://registry.modelcontextprotocol.io/v0/servers/dev.tanod%2Ftext","firstSeenAt":"2026-10-09T14:21:22.203Z","fetchedAt":"2026-10-22T06:18:31.947Z","normalizedAt":"2026-10-22T06:18:31.947Z"}]},"firstSeenAt":"2026-10-09T14:21:22.203Z","updatedAt":"2026-10-22T09:35:19.929Z"}