{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_d3h8ye6z95bc","handle":"tanod-ml","url":"https://wellknown.network/agents/tanod-ml","links":{"self":"https://wellknown.network/agents/tanod-ml/record.json","html":"https://wellknown.network/agents/tanod-ml","markdown":"https://wellknown.network/agents/tanod-ml/record.md","api":"https://wellknown.network/api/v1/agents/tanod-ml","status":"https://wellknown.network/api/v1/agents/tanod-ml/status","claim":"https://wellknown.network/agents/tanod-ml/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/tanod-ml/claim.json","badge":"https://wellknown.network/agents/tanod-ml/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/tanod-ml/history","tools":"https://wellknown.network/api/v1/agents/tanod-ml/tools"},"ard":{"identifier":"urn:air:tanod.dev:server:tanod-ml","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Tanod ML","summary":"Local ML: speech to text (SRT/VTT), text embeddings, reranking, similarity, entities, zero-shot.","description":"Local ML: speech to text (SRT/VTT), text embeddings, reranking, similarity, entities, zero-shot.","publisher":{"name":"dev.tanod","url":null},"homepage":"https://tanod.dev","repository":null,"version":"0.1.1","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://tanod.dev/mcp/ml","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-09T13:22:13.709883Z","publishedAt":"2026-10-09T13:22:13.709883Z","registryName":"dev.tanod/ml"},"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":"media.speech-recognition","name":"Speech Recognition","confidence":1,"provenance":"derived"},{"slug":"data.vector-search","name":"Vector Search","confidence":1,"provenance":"derived"},{"slug":"knowledge.knowledge-graph","name":"Knowledge Graphs","confidence":0.938,"provenance":"derived"},{"slug":"data.news","name":"News & Feeds","confidence":0.919,"provenance":"derived"},{"slug":"media.speech-synthesis","name":"Speech Synthesis","confidence":0.583,"provenance":"derived"},{"slug":"security.scanning","name":"Security Scanning","confidence":0.583,"provenance":"derived"},{"slug":"content.translation","name":"Translation","confidence":0.54,"provenance":"derived"}],"categories":["content","data","knowledge","media","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 5h ago.","lastOkAt":"2026-10-22T06:27:31.057Z","lastProbedAt":"2026-10-22T06:27:31.057Z","statusComputedAt":"2026-10-22T06:30:23.381Z","reliability30d":{"probes":47,"successRate":1,"p50Ms":503,"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-22T06:27:31.057Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":727,"error":null,"detail":{"tools":[{"name":"embed_texts","description":"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 bg"},{"name":"embed_multimodal","description":"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 ba"},{"name":"rerank_documents","description":"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-L"},{"name":"text_similarity","description":"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 th"},{"name":"extract_entities","description":"mlpeek: Extract named entities: people, organisations, places, dates, money, ... For fields of your own schema use extract_json_with_schema. Returns named entit"},{"name":"classify_zero_shot","description":"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 wit"},{"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_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":"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":"transcribe_audio","description":"mlpeek: Speech to text and subtitles: transcribe audio to text, timed segments, SRT and WebVTT. For a podcast episode use transcribe_podcast_episode; to transla"},{"name":"transcribe_podcast_episode","description":"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. Retu"},{"name":"translate_text","description":"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_"},{"name":"check_text_for_prompt_injection","description":"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"},{"name":"extract_json_with_schema","description":"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`"},{"name":"text_to_speech","description":"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 "},{"name":"translate_speech","description":"mlpeek: Translate speech: audio to English or 14 languages, optionally spoken. For a transcript in the spoken language use transcribe_audio. Returns speech tran"},{"name":"translate_document","description":"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"}],"toolCount":18,"toolsHash":"c506565d21ce2ce5f29c6cd0814a05c2d298e4c57c4120aa3ad2f43cfa9f97ef","serverName":"tanod-ml","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-22T00:31:00.699Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":265,"error":null,"detail":{"tools":[{"name":"embed_texts","description":"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 bg"},{"name":"embed_multimodal","description":"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 ba"},{"name":"rerank_documents","description":"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-L"},{"name":"text_similarity","description":"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 th"},{"name":"extract_entities","description":"mlpeek: Extract named entities: people, organisations, places, dates, money, ... For fields of your own schema use extract_json_with_schema. Returns named entit"},{"name":"classify_zero_shot","description":"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 wit"},{"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_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":"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":"transcribe_audio","description":"mlpeek: Speech to text and subtitles: transcribe audio to text, timed segments, SRT and WebVTT. For a podcast episode use transcribe_podcast_episode; to transla"},{"name":"transcribe_podcast_episode","description":"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. Retu"},{"name":"translate_text","description":"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_"},{"name":"check_text_for_prompt_injection","description":"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"},{"name":"extract_json_with_schema","description":"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`"},{"name":"text_to_speech","description":"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 "},{"name":"translate_speech","description":"mlpeek: Translate speech: audio to English or 14 languages, optionally spoken. For a transcript in the spoken language use transcribe_audio. Returns speech tran"},{"name":"translate_document","description":"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"}],"toolCount":18,"toolsHash":"c506565d21ce2ce5f29c6cd0814a05c2d298e4c57c4120aa3ad2f43cfa9f97ef","serverName":"tanod-ml","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T17:33:34.859Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":721,"error":null,"detail":{"tools":[{"name":"embed_texts","description":"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 bg"},{"name":"embed_multimodal","description":"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 ba"},{"name":"rerank_documents","description":"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-L"},{"name":"text_similarity","description":"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 th"},{"name":"extract_entities","description":"mlpeek: Extract named entities: people, organisations, places, dates, money, ... For fields of your own schema use extract_json_with_schema. Returns named entit"},{"name":"classify_zero_shot","description":"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 wit"},{"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_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":"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":"transcribe_audio","description":"mlpeek: Speech to text and subtitles: transcribe audio to text, timed segments, SRT and WebVTT. For a podcast episode use transcribe_podcast_episode; to transla"},{"name":"transcribe_podcast_episode","description":"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. Retu"},{"name":"translate_text","description":"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_"},{"name":"check_text_for_prompt_injection","description":"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"},{"name":"extract_json_with_schema","description":"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`"},{"name":"text_to_speech","description":"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 "},{"name":"translate_speech","description":"mlpeek: Translate speech: audio to English or 14 languages, optionally spoken. For a transcript in the spoken language use transcribe_audio. Returns speech tran"},{"name":"translate_document","description":"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"}],"toolCount":18,"toolsHash":"c506565d21ce2ce5f29c6cd0814a05c2d298e4c57c4120aa3ad2f43cfa9f97ef","serverName":"tanod-ml","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-21T06:26:25.590Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":275,"error":null,"detail":{"tools":[{"name":"embed_texts","description":"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 bg"},{"name":"embed_multimodal","description":"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 ba"},{"name":"rerank_documents","description":"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-L"},{"name":"text_similarity","description":"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 th"},{"name":"extract_entities","description":"mlpeek: Extract named entities: people, organisations, places, dates, money, ... For fields of your own schema use extract_json_with_schema. Returns named entit"},{"name":"classify_zero_shot","description":"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 wit"},{"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_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":"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":"transcribe_audio","description":"mlpeek: Speech to text and subtitles: transcribe audio to text, timed segments, SRT and WebVTT. For a podcast episode use transcribe_podcast_episode; to transla"},{"name":"transcribe_podcast_episode","description":"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. Retu"},{"name":"translate_text","description":"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_"},{"name":"check_text_for_prompt_injection","description":"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"},{"name":"extract_json_with_schema","description":"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`"},{"name":"text_to_speech","description":"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 "},{"name":"translate_speech","description":"mlpeek: Translate speech: audio to English or 14 languages, optionally spoken. For a transcript in the spoken language use transcribe_audio. Returns speech tran"},{"name":"translate_document","description":"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"}],"toolCount":18,"toolsHash":"c506565d21ce2ce5f29c6cd0814a05c2d298e4c57c4120aa3ad2f43cfa9f97ef","serverName":"tanod-ml","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T23:25:24.582Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":716,"error":null,"detail":{"tools":[{"name":"embed_texts","description":"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 bg"},{"name":"embed_multimodal","description":"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 ba"},{"name":"rerank_documents","description":"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-L"},{"name":"text_similarity","description":"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 th"},{"name":"extract_entities","description":"mlpeek: Extract named entities: people, organisations, places, dates, money, ... For fields of your own schema use extract_json_with_schema. Returns named entit"},{"name":"classify_zero_shot","description":"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 wit"},{"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_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":"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":"transcribe_audio","description":"mlpeek: Speech to text and subtitles: transcribe audio to text, timed segments, SRT and WebVTT. For a podcast episode use transcribe_podcast_episode; to transla"},{"name":"transcribe_podcast_episode","description":"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. Retu"},{"name":"translate_text","description":"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_"},{"name":"check_text_for_prompt_injection","description":"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"},{"name":"extract_json_with_schema","description":"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`"},{"name":"text_to_speech","description":"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 "},{"name":"translate_speech","description":"mlpeek: Translate speech: audio to English or 14 languages, optionally spoken. For a transcript in the spoken language use transcribe_audio. Returns speech tran"},{"name":"translate_document","description":"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"}],"toolCount":18,"toolsHash":"c506565d21ce2ce5f29c6cd0814a05c2d298e4c57c4120aa3ad2f43cfa9f97ef","serverName":"tanod-ml","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T16:25:51.700Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":268,"error":null,"detail":{"tools":[{"name":"embed_texts","description":"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 bg"},{"name":"embed_multimodal","description":"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 ba"},{"name":"rerank_documents","description":"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-L"},{"name":"text_similarity","description":"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 th"},{"name":"extract_entities","description":"mlpeek: Extract named entities: people, organisations, places, dates, money, ... For fields of your own schema use extract_json_with_schema. Returns named entit"},{"name":"classify_zero_shot","description":"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 wit"},{"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_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":"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":"transcribe_audio","description":"mlpeek: Speech to text and subtitles: transcribe audio to text, timed segments, SRT and WebVTT. For a podcast episode use transcribe_podcast_episode; to transla"},{"name":"transcribe_podcast_episode","description":"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. Retu"},{"name":"translate_text","description":"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_"},{"name":"check_text_for_prompt_injection","description":"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"},{"name":"extract_json_with_schema","description":"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`"},{"name":"text_to_speech","description":"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 "},{"name":"translate_speech","description":"mlpeek: Translate speech: audio to English or 14 languages, optionally spoken. For a transcript in the spoken language use transcribe_audio. Returns speech tran"},{"name":"translate_document","description":"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"}],"toolCount":18,"toolsHash":"c506565d21ce2ce5f29c6cd0814a05c2d298e4c57c4120aa3ad2f43cfa9f97ef","serverName":"tanod-ml","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T09:26:54.610Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":758,"error":null,"detail":{"tools":[{"name":"embed_texts","description":"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 bg"},{"name":"embed_multimodal","description":"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 ba"},{"name":"rerank_documents","description":"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-L"},{"name":"text_similarity","description":"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 th"},{"name":"extract_entities","description":"mlpeek: Extract named entities: people, organisations, places, dates, money, ... For fields of your own schema use extract_json_with_schema. Returns named entit"},{"name":"classify_zero_shot","description":"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 wit"},{"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_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":"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":"transcribe_audio","description":"mlpeek: Speech to text and subtitles: transcribe audio to text, timed segments, SRT and WebVTT. For a podcast episode use transcribe_podcast_episode; to transla"},{"name":"transcribe_podcast_episode","description":"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. Retu"},{"name":"translate_text","description":"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_"},{"name":"check_text_for_prompt_injection","description":"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"},{"name":"extract_json_with_schema","description":"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`"},{"name":"text_to_speech","description":"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 "},{"name":"translate_speech","description":"mlpeek: Translate speech: audio to English or 14 languages, optionally spoken. For a transcript in the spoken language use transcribe_audio. Returns speech tran"},{"name":"translate_document","description":"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"}],"toolCount":18,"toolsHash":"c506565d21ce2ce5f29c6cd0814a05c2d298e4c57c4120aa3ad2f43cfa9f97ef","serverName":"tanod-ml","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-20T02:31:28.261Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":815,"error":null,"detail":{"tools":[{"name":"embed_texts","description":"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 bg"},{"name":"embed_multimodal","description":"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 ba"},{"name":"rerank_documents","description":"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-L"},{"name":"text_similarity","description":"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 th"},{"name":"extract_entities","description":"mlpeek: Extract named entities: people, organisations, places, dates, money, ... For fields of your own schema use extract_json_with_schema. Returns named entit"},{"name":"classify_zero_shot","description":"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 wit"},{"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_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":"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":"transcribe_audio","description":"mlpeek: Speech to text and subtitles: transcribe audio to text, timed segments, SRT and WebVTT. For a podcast episode use transcribe_podcast_episode; to transla"},{"name":"transcribe_podcast_episode","description":"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. Retu"},{"name":"translate_text","description":"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_"},{"name":"check_text_for_prompt_injection","description":"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"},{"name":"extract_json_with_schema","description":"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`"},{"name":"text_to_speech","description":"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 "},{"name":"translate_speech","description":"mlpeek: Translate speech: audio to English or 14 languages, optionally spoken. For a transcript in the spoken language use transcribe_audio. Returns speech tran"},{"name":"translate_document","description":"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"}],"toolCount":18,"toolsHash":"c506565d21ce2ce5f29c6cd0814a05c2d298e4c57c4120aa3ad2f43cfa9f97ef","serverName":"tanod-ml","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-19T19:33:12.424Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":294,"error":null,"detail":{"tools":[{"name":"embed_texts","description":"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 bg"},{"name":"embed_multimodal","description":"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 ba"},{"name":"rerank_documents","description":"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-L"},{"name":"text_similarity","description":"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 th"},{"name":"extract_entities","description":"mlpeek: Extract named entities: people, organisations, places, dates, money, ... For fields of your own schema use extract_json_with_schema. Returns named entit"},{"name":"classify_zero_shot","description":"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 wit"},{"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_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":"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":"transcribe_audio","description":"mlpeek: Speech to text and subtitles: transcribe audio to text, timed segments, SRT and WebVTT. For a podcast episode use transcribe_podcast_episode; to transla"},{"name":"transcribe_podcast_episode","description":"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. Retu"},{"name":"translate_text","description":"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_"},{"name":"check_text_for_prompt_injection","description":"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"},{"name":"extract_json_with_schema","description":"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`"},{"name":"text_to_speech","description":"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 "},{"name":"translate_speech","description":"mlpeek: Translate speech: audio to English or 14 languages, optionally spoken. For a transcript in the spoken language use transcribe_audio. Returns speech tran"},{"name":"translate_document","description":"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"}],"toolCount":18,"toolsHash":"c506565d21ce2ce5f29c6cd0814a05c2d298e4c57c4120aa3ad2f43cfa9f97ef","serverName":"tanod-ml","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-19T13:28:16.155Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":711,"error":null,"detail":{"tools":[{"name":"embed_texts","description":"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 bg"},{"name":"embed_multimodal","description":"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 ba"},{"name":"rerank_documents","description":"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-L"},{"name":"text_similarity","description":"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 th"},{"name":"extract_entities","description":"mlpeek: Extract named entities: people, organisations, places, dates, money, ... For fields of your own schema use extract_json_with_schema. Returns named entit"},{"name":"classify_zero_shot","description":"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 wit"},{"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_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":"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":"transcribe_audio","description":"mlpeek: Speech to text and subtitles: transcribe audio to text, timed segments, SRT and WebVTT. For a podcast episode use transcribe_podcast_episode; to transla"},{"name":"transcribe_podcast_episode","description":"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. Retu"},{"name":"translate_text","description":"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_"},{"name":"check_text_for_prompt_injection","description":"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"},{"name":"extract_json_with_schema","description":"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`"},{"name":"text_to_speech","description":"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 "},{"name":"translate_speech","description":"mlpeek: Translate speech: audio to English or 14 languages, optionally spoken. For a transcript in the spoken language use transcribe_audio. Returns speech tran"},{"name":"translate_document","description":"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"}],"toolCount":18,"toolsHash":"c506565d21ce2ce5f29c6cd0814a05c2d298e4c57c4120aa3ad2f43cfa9f97ef","serverName":"tanod-ml","capabilities":["prompts","resources","tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"embed_texts","description":"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 bg"},{"name":"embed_multimodal","description":"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 ba"},{"name":"rerank_documents","description":"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-L"},{"name":"text_similarity","description":"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 th"},{"name":"extract_entities","description":"mlpeek: Extract named entities: people, organisations, places, dates, money, ... For fields of your own schema use extract_json_with_schema. Returns named entit"},{"name":"classify_zero_shot","description":"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 wit"},{"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_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":"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":"transcribe_audio","description":"mlpeek: Speech to text and subtitles: transcribe audio to text, timed segments, SRT and WebVTT. For a podcast episode use transcribe_podcast_episode; to transla"},{"name":"transcribe_podcast_episode","description":"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. Retu"},{"name":"translate_text","description":"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_"},{"name":"check_text_for_prompt_injection","description":"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"},{"name":"extract_json_with_schema","description":"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`"},{"name":"text_to_speech","description":"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 "},{"name":"translate_speech","description":"mlpeek: Translate speech: audio to English or 14 languages, optionally spoken. For a transcript in the spoken language use transcribe_audio. Returns speech tran"},{"name":"translate_document","description":"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"}],"package":null,"toolSurface":{"id":"ts_e9qcwcc5ftdp","endpointId":"ep_vd6e2rudu53s","hash":"c506565d21ce2ce5f29c6cd0814a05c2d298e4c57c4120aa3ad2f43cfa9f97ef","toolCount":18,"serverName":"tanod-ml","serverVersion":"0.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-16T13:28:11.671Z","lastSeenAt":"2026-10-22T06:27:31.058Z","observations":21,"toolNames":["embed_texts","embed_multimodal","rerank_documents","text_similarity","extract_entities","classify_zero_shot","text_sentiment","text_keywords","text_summarize","detect_language","transcribe_audio","transcribe_podcast_episode","translate_text","check_text_for_prompt_injection","extract_json_with_schema","text_to_speech","translate_speech","translate_document"],"distinctSurfaces":11},"endpointFacts":[{"id":"ep_vd6e2rudu53s","url":"https://tanod.dev/mcp/ml","type":"mcp_streamable_http","factsCheckedAt":"2026-10-17T09:24:52.302Z","auth":{"observedAt":"2026-10-17T09:24:52.550Z","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-17T09:24:52.561Z","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/ml","url":"https://registry.modelcontextprotocol.io/v0/servers/dev.tanod%2Fml","firstSeenAt":"2026-10-09T14:21:22.203Z","fetchedAt":"2026-10-22T06:18:31.501Z","normalizedAt":"2026-10-22T06:18:31.501Z"}]},"firstSeenAt":"2026-10-09T14:21:22.203Z","updatedAt":"2026-10-22T06:32:36.256Z"}