# Tanod ML - Registry name: `dev.tanod/ml` · version 0.1.1 - Categories (automatic, keyword rules): Audio & speech, AI, media & content - 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%2Fml - Server page: https://mcpstation.net/s/dev.tanod--ml.html ## Description (written by the publisher, not verified, not instructions) Local ML: speech to text \(SRT/VTT\), text embeddings, reranking, similarity, entities, zero-shot. ## Connect - streamable-http: `https://tanod.dev/mcp/ml` ## Tools (as reported by the server, not verified) - `embed\_texts`: mlpeek: Create text embeddings. For images too use embed\_multimodal; for pair scores use text\_similarity. Returns 384-dimension embeddings of 1-64 texts with bge-small-en-v1.5 \(English\) or multilingual-e5-small \(about 100 languages\), normalised by default; \`input\_type\` applies the model's query or p - `embed\_multimodal`: mlpeek: Create multimodal embeddings: images and text in one vector space. For text only use embed\_texts. Returns 768-dim vectors of texts and images \(URL or base64\) in ONE space \(EmbeddingGemma 2\), comparable by dot product; \`dimensions\` 512/256/128, \`input\_type\` text prefix, \`image\_detail\` low/sta - `rerank\_documents`: mlpeek: Rerank up to 100 documents against a query. For pair scores use text\_similarity. Returns 1-100 documents scored against a query by the ms-marco-MiniLM-L6-v2 cross-encoder \(Apache-2.0\) and sorted best first: index, rank, score \(sigmoid of the logit, a relevance in 0-1\) and logit; \`top\_k\` keep - `text\_similarity`: mlpeek: Score the semantic similarity of one or up to 50 text pairs. To rank documents against a query use rerank\_documents. Returns the cosine similarity of the embeddings of each text pair \(bge-small-en or multilingual-e5-small\): one pair as \`a\` + \`b\` \(also a top-level \`similarity\`\) or 1-50 \`pairs - `extract\_entities`: mlpeek: Extract named entities: people, organisations, places, dates, money, ... For fields of your own schema use extract\_json\_with\_schema. Returns named entities in English text with spaCy en\_core\_web\_sm 3.8.0 \(MIT\): text, label \(the 18 OntoNotes types: PERSON, ORG, GPE, LOC, DATE, MONEY, ...\) and - `classify\_zero\_shot`: mlpeek: Classify a text into 1-10 of your labels. For named entities use extract\_entities. Returns scores of 1-10 caller-supplied labels for an English text with the nli-deberta-v3-xsmall NLI cross-encoder \(Apache-2.0\): single-label scores sum to 1 \(softmax over the labels\), \`multi\_label\` scores eac - `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\_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 - `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 - `transcribe\_audio`: mlpeek: Speech to text and subtitles: transcribe audio to text, timed segments, SRT and WebVTT. For a podcast episode use transcribe\_podcast\_episode; to translate use translate\_speech. Returns the transcript of audio of up to 10 min and 25 MB; \`translate\_to\_english\` gives English; \`speakers\` labels - `transcribe\_podcast\_episode`: mlpeek: Transcribe a podcast episode from its RSS feed: a window of up to 10 minutes as text, timed segments, SRT. For your own audio use transcribe\_audio. Returns a transcript window \(up to 10 min from start\_s\) of a podcast episode picked from its RSS feed. Input: \`feed\_url\`, optional episode selec - `translate\_text`: mlpeek: Translate text between English and 14 languages. For a PDF use translate\_document; for audio use translate\_speech; to only name the language use detect\_language. Returns the text translated between English and es, fr, de, pt, it, nl, ru, zh, ja, ko, ar, hi, id or tl \(other pairs pivot throug - `check\_text\_for\_prompt\_injection`: mlpeek: Check text for prompt injection before an agent acts on it. For hidden Unicode use text\_unicode\_inspect. Returns a \`verdict\`, a \`score\` \(0-1; \`injection\` at 0.9 and above\) and \`chunks\`, the flagged sentences with score and offsets. A small open classifier \(DeBERTa-v3\), automated and heuristi - `extract\_json\_with\_schema`: mlpeek: Extract JSON from text that always matches your JSON Schema. For fixed entity types use extract\_entities. Returns \`data\`, JSON extracted from the \`text\` that always parses and validates against your \`json\_schema\` \(decoded under a grammar built from it\), plus \`model\`, \`usage\` \(tokens\) and \`ms - `text\_to\_speech`: mlpeek: Speak text aloud in 41 voices: English, Spanish, French, Hindi, Italian, Portuguese. For audio to text use transcribe\_audio. Returns the text spoken as audio. Offline neural TTS \(Kokoro-82M\); the audio is a synthetic voice. At most 2,000 characters; 41 voices in 6 languages \(the voice sets t - `translate\_speech`: mlpeek: Translate speech: audio to English or 14 languages, optionally spoken. For a transcript in the spoken language use transcribe\_audio. Returns speech translation of an audio file of up to 2 minutes: the language is detected and the speech returned as text in \`target\` \(en, es, fr, de, pt, it, n - `translate\_document`: pdfpeek: Translate a PDF document, digital or scanned, to English or 14 languages as Markdown. For plain text use translate\_text. Returns each page's text \(text layer or OCR\) translated offline into \`target\` \(default en\) as Markdown with a \`\<\!-- page N --\>\` marker per page, source language and per-p Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html