accueil / serveurs / Recherche & Web / ai.masnavi/masnavi
ai.masnavi/masnavi
serveur MCP (Model Context Protocol) · masnavi 1.27.1
Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur.
Est-ce que ai.masnavi/masnavi est sûr ?
Au dernier audit MCP Hub, le serveur MCP « ai.masnavi/masnavi » est classé « Non encore testé ». Référencé dans l'annuaire. Seul le pentest comportemental fait foi, et il n'a pas encore été exécuté sur ce serveur. Le verdict est réévalué en continu ; consultez la fiche pour l'état à jour.
Méthode : MCP Hub analyse la description de chaque outil (couche 1) et, pour le verdict fort, exécute le serveur dans une micro-VM isolée avec leurres et réseau bloqué (couche 2). On publie des noms et des compteurs, jamais le contenu brut renvoyé par un outil.
Les 13 outils
- explain≈ 169 tokens
Get commentary (Persian + English) for a specific beyt of the Masnavi, attributed to a primary source (e.g. Abdolkarim Soroush's lectures). Returns the beyt text along with structured commentary entries. Each entry has source, author, language, body markdown, and confidence ('ai-draft' / 'reviewed' / 'verbatim'). Use this when a user asks 'what does this beyt mean' or 'what does <scholar> say about M1:1'.
Paramètres, retour & exemple (1)
Paramètrescitation· string · requis
Citation like 'M1:1' or 'M3:1278' or 'g:7421'.
Exemple d'appel{"name": "explain", "arguments": {"citation": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}]} - find_sections≈ 688 tokens
Find sections (stories) by TITLE. Exact words first (phrase, then AND-of-tokens); when NO title contains the words, falls back to MEANING matches in any language (hits carry match='meaning' + a cosine score — verify with get_section before relying on one). Each match includes `first_citation` and `last_citation` — ready-to-use canonical citations (e.g. 'M2:2608'). To read a whole multi-section story, call get_range with the FIRST match's `first_citation` as start and the LAST match's `last_citation` as end. Do NOT construct a citation from `first_beyt_global` — that is a GLOBAL index (1..25635), not a daftar-local beyt number. Example: find_sections('ابلیس معاویه', daftar=2).
Paramètres, retour & exemple (3)
Paramètreslimit· integer · optionnelquery· string · requis
story title words (Persian) or a description of the story in any languagedaftar· ? · optionnel
Exemple d'appel{"name": "find_sections", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"note": "texte", "query": "texte", "total": 1, "sections": []}} - get_ghazal≈ 522 tokens
Fetch ONE complete ghazal of the Divan-e Shams by its canonical number (1..3230) or citation ('G1393' / 'G1393:2'). Returns every beyt plus prev/next ghazal numbers. Famous example: get_ghazal(1393) = «مرده بدم زنده شدم…».
Paramètres, retour & exemple (2)
Paramètresnumber· ? · optionnel
Ghazal number, e.g. 1393citation· ? · optionnel
Divan citation like 'G1393' or 'G1393:2'
Exemple d'appel{"name": "get_ghazal", "arguments": {"number": "texte", "citation": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"slug": "texte", "beyts": [], "ghazal": 1, "excerpt": "texte", "citation": "texte", "title_fa": "texte", "beyt_count": 1, "next_ghazal": "texte", "prev_ghazal": "texte"}} - get_range≈ 728 tokens
Fetch ALL beyts between two endpoints, inclusive, grouped by section. Use this — NOT many calls to get_section or lookup — when a user asks for a full story, a long passage, or a sequence of beyts spanning multiple sections. Endpoints are canonical citations like 'M2:2608' and 'M2:2775', or global indices via start_global / end_global. Max range: 500 beyts.
Paramètres, retour & exemple (4)
Paramètresend· ? · optionnel
End citation, e.g. 'M2:2775'start· ? · optionnel
Start citation, e.g. 'M2:2608'end_global· ? · optionnelstart_global· ? · optionnel
Exemple d'appel{"name": "get_range", "arguments": {"end": "texte", "start": "texte", "end_global": "texte", "start_global": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"sections": [], "total_beyts": 1, "end_citation": "texte", "start_citation": "texte", "total_sections": 1}} - get_section≈ 504 tokens
Retrieve a full section (story / بخش) with all its beyts.
Paramètres, retour & exemple (2)
Paramètresslug· ? · optionnel
Stable URL slugsection_id· ? · optionnel
Exemple d'appel{"name": "get_section", "arguments": {"slug": "texte", "section_id": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"id": 1, "slug": "texte", "beyts": [], "daftar": 1, "title_fa": "texte", "beyt_count": 1, "last_beyt_global": "texte", "first_beyt_global": "texte"}} - lookup≈ 553 tokens
Fetch a specific beyt by its citation (e.g. 'M3:1278'), by daftar+beyt number, or by global beyt index. Optionally include surrounding beyts for context.
Paramètres, retour & exemple (6)
Paramètresafter· integer · optionnelbefore· integer · optionneldaftar· ? · optionnelcitation· ? · optionnel
Citation like 'M3:1278' or 'g:7421'beyt_global· ? · optionnelbeyt_in_daftar· ? · optionnel
Exemple d'appel{"name": "lookup", "arguments": {"after": 1, "before": 1, "daftar": "texte", "citation": "texte", "beyt_global": "texte", "beyt_in_daftar": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"primary": "texte", "context_after": [], "context_before": []}} - random_beyt≈ 293 tokens
Return a randomly-selected beyt, optionally restricted to a daftar.
Paramètres, retour & exemple (1)
Paramètresdaftar· ? · optionnel
Exemple d'appel{"name": "random_beyt", "arguments": {"daftar": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"daftar": 1, "mesra1": "texte", "mesra2": "texte", "citation": "texte", "section_id": 1, "beyt_global": 1, "section_slug": "texte", "section_title": "texte", "beyt_in_daftar": 1}} - search≈ 520 tokens
Full-text search across the Masnavi. Returns beyts that contain the query terms, ranked by relevance. Useful for finding where a theme, word, or phrase appears.
Paramètres, retour & exemple (4)
Paramètreslimit· integer · optionnelquery· string · requis
Persian text to search fordaftar· ? · optionnel
Restrict to a single daftar (1-6)offset· integer · optionnel
Exemple d'appel{"name": "search", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"match": "texte", "query": "texte", "total": 1, "results": []}} - search_divan≈ 442 tokens
Full-text search across the 34,603 beyts of the ghazals of the Divan-e Shams (Divan-e Kabir) — Rumi's lyric work, distinct from the Masnavi. Returns beyts with divan citations (G{ghazal}:{beyt}, e.g. G1393:1). Use when you know the exact Persian words; use search_divan_meaning for a theme in any language.
Paramètres, retour & exemple (3)
Paramètreslimit· integer · optionnelquery· string · requis
Persian text to search foroffset· integer · optionnel
Exemple d'appel{"name": "search_divan", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"match": "texte", "query": "texte", "total": 1, "results": []}} - search_divan_meaning≈ 703 tokens
Semantic search over the Divan-e Shams ghazals: given a theme, feeling, or idea in ANY language, returns the GHAZALS closest in meaning — each with its best-matching couplet as a preview and a cosine score. Both couplet-level and whole-ghazal vectors are searched, so a ghazal whose overall theme matches is found even when no single couplet does. Fetch a full ghazal with get_ghazal. status='unavailable' means the index is not built — fall back to search_divan.
Paramètres, retour & exemple (2)
Paramètreslimit· integer · optionnelquery· string · requis
What the ghazal should be ABOUT, in any language
Exemple d'appel{"name": "search_divan_meaning", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"note": "texte", "query": "texte", "status": "texte", "results": [], "total_indexed_beyts": 1, "total_indexed_ghazals": 1}} - search_meaning≈ 616 tokens
Semantic search: find the beyts closest in MEANING to the query, in ANY language — English, Persian, Spanish, Turkish, Arabic, … . Use this when you have a theme, feeling, or idea rather than exact Persian words (e.g. 'feeling separated from your origin' → M1:1). Each hit carries a cosine-similarity score. status='unavailable' means the vector index is not built yet — fall back to `search`.
Paramètres, retour & exemple (3)
Paramètreslimit· integer · optionnelquery· string · requis
What the verse should MEAN, in any languagedaftar· ? · optionnel
Restrict to a single daftar (1-6)
Exemple d'appel{"name": "search_meaning", "arguments": {"query": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"note": "texte", "query": "texte", "status": "texte", "results": [], "total_indexed": 1}} - table_of_contents≈ 342 tokens
Browse the Masnavi's section list. Returns titled sections per daftar with beyt counts and ranges.
Paramètres, retour & exemple (1)
Paramètresdaftar· ? · optionnel
Exemple d'appel{"name": "table_of_contents", "arguments": {"daftar": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"nodes": [], "daftar": "texte"}} - verify≈ 376 tokens
Given a candidate quote attributed to Rumi's Masnavi, check whether it actually appears. Returns status='exact' (with citation), 'fuzzy' (with similar candidates), or 'not_found'. USE THIS BEFORE QUOTING RUMI to avoid hallucination.
Paramètres, retour & exemple (2)
Paramètrestext· string · requis
Candidate Rumi quote in Persianfuzzy_threshold· number · optionnel
Exemple d'appel{"name": "verify", "arguments": {"text": "texte"}}Exemple de retour{"content": [{"type": "text", "text": "…"}], "structuredContent": {"notes": "texte", "status": "texte", "matches": [], "query_normalized": "texte"}}
C'est votre serveur ?
Revendiquez-le sur l'espace créateur (preuve GitHub, domaine ou npm) pour afficher le badge « propriétaire vérifié » et lancer un pentest comportemental à la demande afin d'obtenir le badge « Vérifié ».