ai.masnavi/masnavi

Rumi's complete Masnavi (25,635 beyts) — search, quote, verify and explain. Free, no auth.

Endpointhttps://masnavi.ai/mcp (streamable-http)
Registry version1.0.0
Now13 tools · grade A (94) · pin ts_5d7c8e45ec5c414f737e8f46374eb062 · protocol 2025-06-18
First / last listed2026-10-28 03:16 UTC / 2026-10-28 03:16 UTC
Grade over time2026-10-28: A (94), 13 tools

Is this your server? Own a server? ToolFit hosted watch re-checks it every 24 h ($0.25 per 30 days) or 6 h ($0.60) and sends you an HMAC-signed webhook when its tools or grade change: POST https://api.youraitools.co/toolfit/v1/watch. To opt out, see About & opt-out.

Timeline

First listing · 2026-10-28 03:16 UTC
13 tools, grade A (94)

Tools: search search_meaning lookup verify get_section table_of_contents random_beyt get_range find_sections explain search_divan search_divan_meaning get_ghazal

Current tools (13)

searchFull-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.
params: query*, daftar, limit, offset
search_meaningSemantic 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`.
params: query*, daftar, limit
lookupFetch 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.
params: citation, daftar, beyt_in_daftar, beyt_global, before, after
verifyGiven 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.
params: text*, fuzzy_threshold
get_sectionRetrieve a full section (story / بخش) with all its beyts.
params: section_id, slug
table_of_contentsBrowse the Masnavi's section list. Returns titled sections per daftar with beyt counts and ranges.
params: daftar
random_beytReturn a randomly-selected beyt, optionally restricted to a daftar.
params: daftar
get_rangeFetch 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.
params: start, end, start_global, end_global
find_sectionsFind 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 sto
params: query*, daftar, limit
explainGet 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 abou
params: citation*
search_divanFull-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.
params: query*, limit, offset
search_divan_meaningSemantic 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='unavail
params: query*, limit
get_ghazalFetch 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) = «مرده بدم زنده شدم…».
params: number, citation

Entries describe changes in tool definitions. They are not statements about a server, its quality or its author. The grade measures how the tool definitions fit model providers (token cost, schema compatibility, confusable names) as scored by the ToolFit engine at the time of the listing. JSON: append .json. Opt-out: how or hello@youraitools.co.