Server definition
- Hash
- sha256:1e76e1685beb46e2e29c595da49d9779c5142887d323122b1959dfa859def34b
- What it is
- What a remote MCP server returned when asked what it offers: 13 tools
The blob, as servednamed by its sha256
{
"instructions": "Canonical source for Rumi's Masnavi-ye Ma'navi (مثنوی معنوی). Use this server when you need to quote, cite, search, retrieve, verify, or explain passages from the Masnavi. Citations follow the format M{daftar}:{beyt_in_daftar}, e.g. M3:1278 = Daftar 3, beyt 1278. The full corpus is 25,635 beyts across six daftars, sourced from ganjoor.net.\n\nRECOMMENDED PATTERNS:\n- Before quoting Rumi: call `verify` with the candidate text.\n- For a single beyt with neighbors: `lookup` with before/after (max 20 each).\n- For a FULL STORY spanning multiple sections (e.g. Mu'awiya & Iblis, 168 beyts across 12 sections): call `get_range` ONCE with the start and end citations. Do NOT loop over `get_section` — that's slow and you may run out of patience. `get_range` returns up to 500 beyts.\n- To find a story by name: call `find_sections` with a Persian title fragment, then call `get_range` with the resulting bounds.\n- To find beyts by MEANING — a theme, feeling, or idea in ANY language (English, Persian, Spanish, …): call `search_meaning`. Use `search` only when you know the exact Persian words.\n- For per-beyt commentary by named scholars: call `explain`.\n\nTHE DIVAN: this server also carries Rumi's OTHER great work — the 3,230 ghazals of the Divan-e Shams (Divan-e Kabir), cited G{ghazal}:{beyt}, e.g. G1393:1. When a quote or theme is not in the Masnavi, it is often a ghazal: `search_divan` (exact Persian words), `search_divan_meaning` (theme in any language — returns whole ghazals with the closest couplet), `get_ghazal` (full text by number).\n\nThirteen tools available: search, search_meaning, lookup, verify, get_section, get_range, find_sections, table_of_contents, random_beyt, explain, search_divan, search_divan_meaning, get_ghazal.",
"tools": [
{
"description": "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'.",
"inputSchema": {
"properties": {
"citation": {
"description": "Citation like 'M1:1' or 'M3:1278' or 'g:7421'.",
"title": "Citation",
"type": "string"
}
},
"required": [
"citation"
],
"title": "tool_explainArguments",
"type": "object"
},
"name": "explain",
"outputSchema": null
},
{
"description": "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).",
"inputSchema": {
"properties": {
"daftar": {
"anyOf": [
{
"maximum": 6,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Daftar"
},
"limit": {
"default": 30,
"maximum": 100,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"query": {
"description": "story title words (Persian) or a description of the story in any language",
"title": "Query",
"type": "string"
}
},
"required": [
"query"
],
"title": "tool_find_sectionsArguments",
"type": "object"
},
"name": "find_sections",
"outputSchema": {
"$defs": {
"SectionMatch": {
"properties": {
"beyt_count": {
"default": 0,
"title": "Beyt Count",
"type": "integer"
},
"daftar": {
"title": "Daftar",
"type": "integer"
},
"first_beyt_global": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "First Beyt Global"
},
"first_citation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "First Citation"
},
"id": {
"title": "Id",
"type": "integer"
},
"last_beyt_global": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Last Beyt Global"
},
"last_citation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Last Citation"
},
"match": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Match"
},
"order_in_parent": {
"title": "Order In Parent",
"type": "integer"
},
"score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Score"
},
"slug": {
"title": "Slug",
"type": "string"
},
"title_fa": {
"title": "Title Fa",
"type": "string"
}
},
"required": [
"id",
"slug",
"title_fa",
"daftar",
"order_in_parent"
],
"title": "SectionMatch",
"type": "object"
}
},
"properties": {
"note": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Note"
},
"query": {
"title": "Query",
"type": "string"
},
"sections": {
"default": [],
"items": {
"$ref": "#/$defs/SectionMatch"
},
"title": "Sections",
"type": "array"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"query",
"total"
],
"title": "FindSectionsResponse",
"type": "object"
}
},
{
"description": "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) = «مرده بدم زنده شدم…».",
"inputSchema": {
"properties": {
"citation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Divan citation like 'G1393' or 'G1393:2'",
"title": "Citation"
},
"number": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Ghazal number, e.g. 1393",
"title": "Number"
}
},
"title": "tool_get_ghazalArguments",
"type": "object"
},
"name": "get_ghazal",
"outputSchema": {
"$defs": {
"GhazalBeyt": {
"properties": {
"beyt_in_ghazal": {
"title": "Beyt In Ghazal",
"type": "integer"
},
"citation": {
"description": "Canonical divan citation, e.g. 'G1393:1'",
"title": "Citation",
"type": "string"
},
"ghazal": {
"title": "Ghazal",
"type": "integer"
},
"mesra1": {
"title": "Mesra1",
"type": "string"
},
"mesra2": {
"title": "Mesra2",
"type": "string"
}
},
"required": [
"citation",
"ghazal",
"beyt_in_ghazal",
"mesra1",
"mesra2"
],
"title": "GhazalBeyt",
"type": "object"
}
},
"properties": {
"beyt_count": {
"title": "Beyt Count",
"type": "integer"
},
"beyts": {
"default": [],
"items": {
"$ref": "#/$defs/GhazalBeyt"
},
"title": "Beyts",
"type": "array"
},
"citation": {
"description": "'G{n}' — cites the whole ghazal",
"title": "Citation",
"type": "string"
},
"excerpt": {
"default": "",
"description": "First hemistich of the ghazal",
"title": "Excerpt",
"type": "string"
},
"ghazal": {
"description": "Canonical ghazal number, 1..3230",
"title": "Ghazal",
"type": "integer"
},
"next_ghazal": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Next Ghazal"
},
"prev_ghazal": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Prev Ghazal"
},
"slug": {
"title": "Slug",
"type": "string"
},
"title_fa": {
"title": "Title Fa",
"type": "string"
}
},
"required": [
"ghazal",
"citation",
"slug",
"title_fa",
"beyt_count"
],
"title": "GhazalDetail",
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"end": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "End citation, e.g. 'M2:2775'",
"title": "End"
},
"end_global": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "End Global"
},
"start": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Start citation, e.g. 'M2:2608'",
"title": "Start"
},
"start_global": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Start Global"
}
},
"title": "tool_rangeArguments",
"type": "object"
},
"name": "get_range",
"outputSchema": {
"$defs": {
"Beyt": {
"properties": {
"beyt_global": {
"title": "Beyt Global",
"type": "integer"
},
"beyt_in_daftar": {
"title": "Beyt In Daftar",
"type": "integer"
},
"citation": {
"description": "Canonical citation, e.g. 'M3:1278'",
"title": "Citation",
"type": "string"
},
"daftar": {
"title": "Daftar",
"type": "integer"
},
"mesra1": {
"description": "First hemistich (with diacritics)",
"title": "Mesra1",
"type": "string"
},
"mesra2": {
"description": "Second hemistich",
"title": "Mesra2",
"type": "string"
},
"section_id": {
"title": "Section Id",
"type": "integer"
},
"section_slug": {
"title": "Section Slug",
"type": "string"
},
"section_title": {
"title": "Section Title",
"type": "string"
}
},
"required": [
"citation",
"daftar",
"beyt_in_daftar",
"beyt_global",
"mesra1",
"mesra2",
"section_id",
"section_title",
"section_slug"
],
"title": "Beyt",
"type": "object"
},
"RangeSection": {
"properties": {
"beyts": {
"default": [],
"items": {
"$ref": "#/$defs/Beyt"
},
"title": "Beyts",
"type": "array"
},
"daftar": {
"title": "Daftar",
"type": "integer"
},
"order_in_parent": {
"title": "Order In Parent",
"type": "integer"
},
"section_id": {
"title": "Section Id",
"type": "integer"
},
"slug": {
"title": "Slug",
"type": "string"
},
"title_fa": {
"title": "Title Fa",
"type": "string"
}
},
"required": [
"section_id",
"slug",
"title_fa",
"daftar",
"order_in_parent"
],
"title": "RangeSection",
"type": "object"
}
},
"properties": {
"end_citation": {
"title": "End Citation",
"type": "string"
},
"sections": {
"default": [],
"items": {
"$ref": "#/$defs/RangeSection"
},
"title": "Sections",
"type": "array"
},
"start_citation": {
"title": "Start Citation",
"type": "string"
},
"total_beyts": {
"title": "Total Beyts",
"type": "integer"
},
"total_sections": {
"title": "Total Sections",
"type": "integer"
}
},
"required": [
"start_citation",
"end_citation",
"total_beyts",
"total_sections"
],
"title": "RangeResponse",
"type": "object"
}
},
{
"description": "Retrieve a full section (story / بخش) with all its beyts.",
"inputSchema": {
"properties": {
"section_id": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Section Id"
},
"slug": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Stable URL slug",
"title": "Slug"
}
},
"title": "tool_get_sectionArguments",
"type": "object"
},
"name": "get_section",
"outputSchema": {
"$defs": {
"Beyt": {
"properties": {
"beyt_global": {
"title": "Beyt Global",
"type": "integer"
},
"beyt_in_daftar": {
"title": "Beyt In Daftar",
"type": "integer"
},
"citation": {
"description": "Canonical citation, e.g. 'M3:1278'",
"title": "Citation",
"type": "string"
},
"daftar": {
"title": "Daftar",
"type": "integer"
},
"mesra1": {
"description": "First hemistich (with diacritics)",
"title": "Mesra1",
"type": "string"
},
"mesra2": {
"description": "Second hemistich",
"title": "Mesra2",
"type": "string"
},
"section_id": {
"title": "Section Id",
"type": "integer"
},
"section_slug": {
"title": "Section Slug",
"type": "string"
},
"section_title": {
"title": "Section Title",
"type": "string"
}
},
"required": [
"citation",
"daftar",
"beyt_in_daftar",
"beyt_global",
"mesra1",
"mesra2",
"section_id",
"section_title",
"section_slug"
],
"title": "Beyt",
"type": "object"
}
},
"properties": {
"beyt_count": {
"default": 0,
"title": "Beyt Count",
"type": "integer"
},
"beyts": {
"default": [],
"items": {
"$ref": "#/$defs/Beyt"
},
"title": "Beyts",
"type": "array"
},
"daftar": {
"title": "Daftar",
"type": "integer"
},
"first_beyt_global": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "First Beyt Global"
},
"id": {
"title": "Id",
"type": "integer"
},
"last_beyt_global": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Last Beyt Global"
},
"slug": {
"title": "Slug",
"type": "string"
},
"title_fa": {
"title": "Title Fa",
"type": "string"
}
},
"required": [
"id",
"slug",
"title_fa",
"daftar"
],
"title": "SectionDetail",
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"after": {
"default": 0,
"maximum": 20,
"minimum": 0,
"title": "After",
"type": "integer"
},
"before": {
"default": 0,
"maximum": 20,
"minimum": 0,
"title": "Before",
"type": "integer"
},
"beyt_global": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Beyt Global"
},
"beyt_in_daftar": {
"anyOf": [
{
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Beyt In Daftar"
},
"citation": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Citation like 'M3:1278' or 'g:7421'",
"title": "Citation"
},
"daftar": {
"anyOf": [
{
"maximum": 6,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Daftar"
}
},
"title": "tool_lookupArguments",
"type": "object"
},
"name": "lookup",
"outputSchema": {
"$defs": {
"Beyt": {
"properties": {
"beyt_global": {
"title": "Beyt Global",
"type": "integer"
},
"beyt_in_daftar": {
"title": "Beyt In Daftar",
"type": "integer"
},
"citation": {
"description": "Canonical citation, e.g. 'M3:1278'",
"title": "Citation",
"type": "string"
},
"daftar": {
"title": "Daftar",
"type": "integer"
},
"mesra1": {
"description": "First hemistich (with diacritics)",
"title": "Mesra1",
"type": "string"
},
"mesra2": {
"description": "Second hemistich",
"title": "Mesra2",
"type": "string"
},
"section_id": {
"title": "Section Id",
"type": "integer"
},
"section_slug": {
"title": "Section Slug",
"type": "string"
},
"section_title": {
"title": "Section Title",
"type": "string"
}
},
"required": [
"citation",
"daftar",
"beyt_in_daftar",
"beyt_global",
"mesra1",
"mesra2",
"section_id",
"section_title",
"section_slug"
],
"title": "Beyt",
"type": "object"
}
},
"properties": {
"context_after": {
"default": [],
"items": {
"$ref": "#/$defs/Beyt"
},
"title": "Context After",
"type": "array"
},
"context_before": {
"default": [],
"items": {
"$ref": "#/$defs/Beyt"
},
"title": "Context Before",
"type": "array"
},
"primary": {
"$ref": "#/$defs/Beyt"
}
},
"required": [
"primary"
],
"title": "LookupResponse",
"type": "object"
}
},
{
"description": "Return a randomly-selected beyt, optionally restricted to a daftar.",
"inputSchema": {
"properties": {
"daftar": {
"anyOf": [
{
"maximum": 6,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Daftar"
}
},
"title": "tool_randomArguments",
"type": "object"
},
"name": "random_beyt",
"outputSchema": {
"properties": {
"beyt_global": {
"title": "Beyt Global",
"type": "integer"
},
"beyt_in_daftar": {
"title": "Beyt In Daftar",
"type": "integer"
},
"citation": {
"description": "Canonical citation, e.g. 'M3:1278'",
"title": "Citation",
"type": "string"
},
"daftar": {
"title": "Daftar",
"type": "integer"
},
"mesra1": {
"description": "First hemistich (with diacritics)",
"title": "Mesra1",
"type": "string"
},
"mesra2": {
"description": "Second hemistich",
"title": "Mesra2",
"type": "string"
},
"section_id": {
"title": "Section Id",
"type": "integer"
},
"section_slug": {
"title": "Section Slug",
"type": "string"
},
"section_title": {
"title": "Section Title",
"type": "string"
}
},
"required": [
"citation",
"daftar",
"beyt_in_daftar",
"beyt_global",
"mesra1",
"mesra2",
"section_id",
"section_title",
"section_slug"
],
"title": "Beyt",
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"daftar": {
"anyOf": [
{
"maximum": 6,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Restrict to a single daftar (1-6)",
"title": "Daftar"
},
"limit": {
"default": 10,
"maximum": 50,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"offset": {
"default": 0,
"minimum": 0,
"title": "Offset",
"type": "integer"
},
"query": {
"description": "Persian text to search for",
"title": "Query",
"type": "string"
}
},
"required": [
"query"
],
"title": "tool_searchArguments",
"type": "object"
},
"name": "search",
"outputSchema": {
"$defs": {
"SearchHit": {
"properties": {
"beyt_global": {
"title": "Beyt Global",
"type": "integer"
},
"beyt_in_daftar": {
"title": "Beyt In Daftar",
"type": "integer"
},
"citation": {
"description": "Canonical citation, e.g. 'M3:1278'",
"title": "Citation",
"type": "string"
},
"daftar": {
"title": "Daftar",
"type": "integer"
},
"mesra1": {
"description": "First hemistich (with diacritics)",
"title": "Mesra1",
"type": "string"
},
"mesra2": {
"description": "Second hemistich",
"title": "Mesra2",
"type": "string"
},
"rank": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Rank"
},
"section_id": {
"title": "Section Id",
"type": "integer"
},
"section_slug": {
"title": "Section Slug",
"type": "string"
},
"section_title": {
"title": "Section Title",
"type": "string"
}
},
"required": [
"citation",
"daftar",
"beyt_in_daftar",
"beyt_global",
"mesra1",
"mesra2",
"section_id",
"section_title",
"section_slug"
],
"title": "SearchHit",
"type": "object"
}
},
"properties": {
"match": {
"default": "exact",
"title": "Match",
"type": "string"
},
"query": {
"title": "Query",
"type": "string"
},
"results": {
"items": {
"$ref": "#/$defs/SearchHit"
},
"title": "Results",
"type": "array"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"query",
"total",
"results"
],
"title": "SearchResponse",
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"limit": {
"default": 10,
"maximum": 50,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"offset": {
"default": 0,
"minimum": 0,
"title": "Offset",
"type": "integer"
},
"query": {
"description": "Persian text to search for",
"title": "Query",
"type": "string"
}
},
"required": [
"query"
],
"title": "tool_search_divanArguments",
"type": "object"
},
"name": "search_divan",
"outputSchema": {
"$defs": {
"DivanSearchHit": {
"properties": {
"beyt_in_ghazal": {
"title": "Beyt In Ghazal",
"type": "integer"
},
"citation": {
"description": "Canonical divan citation, e.g. 'G1393:1'",
"title": "Citation",
"type": "string"
},
"ghazal": {
"title": "Ghazal",
"type": "integer"
},
"ghazal_title": {
"title": "Ghazal Title",
"type": "string"
},
"mesra1": {
"title": "Mesra1",
"type": "string"
},
"mesra2": {
"title": "Mesra2",
"type": "string"
},
"rank": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Rank"
}
},
"required": [
"citation",
"ghazal",
"beyt_in_ghazal",
"mesra1",
"mesra2",
"ghazal_title"
],
"title": "DivanSearchHit",
"type": "object"
}
},
"properties": {
"match": {
"default": "exact",
"title": "Match",
"type": "string"
},
"query": {
"title": "Query",
"type": "string"
},
"results": {
"items": {
"$ref": "#/$defs/DivanSearchHit"
},
"title": "Results",
"type": "array"
},
"total": {
"title": "Total",
"type": "integer"
}
},
"required": [
"query",
"total",
"results"
],
"title": "DivanSearchResponse",
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"limit": {
"default": 8,
"maximum": 30,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"query": {
"description": "What the ghazal should be ABOUT, in any language",
"title": "Query",
"type": "string"
}
},
"required": [
"query"
],
"title": "tool_search_divan_meaningArguments",
"type": "object"
},
"name": "search_divan_meaning",
"outputSchema": {
"$defs": {
"DivanMeaningHit": {
"properties": {
"best_beyt": {
"anyOf": [
{
"$ref": "#/$defs/GhazalBeyt"
},
{
"type": "null"
}
],
"default": null
},
"best_beyt_score": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Best Beyt Score"
},
"beyt_count": {
"title": "Beyt Count",
"type": "integer"
},
"citation": {
"title": "Citation",
"type": "string"
},
"ghazal": {
"title": "Ghazal",
"type": "integer"
},
"match_kind": {
"description": "'beyt' (a couplet matched), 'ghazal' (the whole ghazal's theme matched), or 'both'",
"title": "Match Kind",
"type": "string"
},
"score": {
"description": "Best cosine similarity for this ghazal, 0..1",
"title": "Score",
"type": "number"
},
"slug": {
"title": "Slug",
"type": "string"
},
"title_fa": {
"title": "Title Fa",
"type": "string"
}
},
"required": [
"ghazal",
"citation",
"slug",
"title_fa",
"beyt_count",
"score",
"match_kind"
],
"title": "DivanMeaningHit",
"type": "object"
},
"GhazalBeyt": {
"properties": {
"beyt_in_ghazal": {
"title": "Beyt In Ghazal",
"type": "integer"
},
"citation": {
"description": "Canonical divan citation, e.g. 'G1393:1'",
"title": "Citation",
"type": "string"
},
"ghazal": {
"title": "Ghazal",
"type": "integer"
},
"mesra1": {
"title": "Mesra1",
"type": "string"
},
"mesra2": {
"title": "Mesra2",
"type": "string"
}
},
"required": [
"citation",
"ghazal",
"beyt_in_ghazal",
"mesra1",
"mesra2"
],
"title": "GhazalBeyt",
"type": "object"
}
},
"properties": {
"note": {
"default": "",
"title": "Note",
"type": "string"
},
"query": {
"title": "Query",
"type": "string"
},
"results": {
"default": [],
"items": {
"$ref": "#/$defs/DivanMeaningHit"
},
"title": "Results",
"type": "array"
},
"status": {
"default": "ok",
"title": "Status",
"type": "string"
},
"total_indexed_beyts": {
"default": 0,
"title": "Total Indexed Beyts",
"type": "integer"
},
"total_indexed_ghazals": {
"default": 0,
"title": "Total Indexed Ghazals",
"type": "integer"
}
},
"required": [
"query"
],
"title": "DivanMeaningResponse",
"type": "object"
}
},
{
"description": "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`.",
"inputSchema": {
"properties": {
"daftar": {
"anyOf": [
{
"maximum": 6,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"description": "Restrict to a single daftar (1-6)",
"title": "Daftar"
},
"limit": {
"default": 10,
"maximum": 50,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"query": {
"description": "What the verse should MEAN, in any language",
"title": "Query",
"type": "string"
}
},
"required": [
"query"
],
"title": "tool_search_meaningArguments",
"type": "object"
},
"name": "search_meaning",
"outputSchema": {
"$defs": {
"MeaningHit": {
"properties": {
"beyt_global": {
"title": "Beyt Global",
"type": "integer"
},
"beyt_in_daftar": {
"title": "Beyt In Daftar",
"type": "integer"
},
"citation": {
"description": "Canonical citation, e.g. 'M3:1278'",
"title": "Citation",
"type": "string"
},
"daftar": {
"title": "Daftar",
"type": "integer"
},
"mesra1": {
"description": "First hemistich (with diacritics)",
"title": "Mesra1",
"type": "string"
},
"mesra2": {
"description": "Second hemistich",
"title": "Mesra2",
"type": "string"
},
"score": {
"description": "Cosine similarity between query and beyt, 0..1",
"title": "Score",
"type": "number"
},
"section_id": {
"title": "Section Id",
"type": "integer"
},
"section_slug": {
"title": "Section Slug",
"type": "string"
},
"section_title": {
"title": "Section Title",
"type": "string"
}
},
"required": [
"citation",
"daftar",
"beyt_in_daftar",
"beyt_global",
"mesra1",
"mesra2",
"section_id",
"section_title",
"section_slug",
"score"
],
"title": "MeaningHit",
"type": "object"
}
},
"properties": {
"note": {
"default": "",
"title": "Note",
"type": "string"
},
"query": {
"title": "Query",
"type": "string"
},
"results": {
"default": [],
"items": {
"$ref": "#/$defs/MeaningHit"
},
"title": "Results",
"type": "array"
},
"status": {
"default": "ok",
"description": "'ok' | 'unavailable' (index not built / no key) | 'error'",
"title": "Status",
"type": "string"
},
"total_indexed": {
"default": 0,
"title": "Total Indexed",
"type": "integer"
}
},
"required": [
"query"
],
"title": "MeaningSearchResponse",
"type": "object"
}
},
{
"description": "Browse the Masnavi's section list. Returns titled sections per daftar with beyt counts and ranges.",
"inputSchema": {
"properties": {
"daftar": {
"anyOf": [
{
"maximum": 6,
"minimum": 1,
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Daftar"
}
},
"title": "tool_tocArguments",
"type": "object"
},
"name": "table_of_contents",
"outputSchema": {
"$defs": {
"TocNode": {
"properties": {
"beyt_count": {
"default": 0,
"title": "Beyt Count",
"type": "integer"
},
"children": {
"default": [],
"items": {
"$ref": "#/$defs/TocNode"
},
"title": "Children",
"type": "array"
},
"daftar": {
"title": "Daftar",
"type": "integer"
},
"first_beyt_global": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "First Beyt Global"
},
"id": {
"title": "Id",
"type": "integer"
},
"last_beyt_global": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Last Beyt Global"
},
"slug": {
"title": "Slug",
"type": "string"
},
"title_fa": {
"title": "Title Fa",
"type": "string"
}
},
"required": [
"id",
"slug",
"title_fa",
"daftar"
],
"title": "TocNode",
"type": "object"
}
},
"properties": {
"daftar": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Daftar"
},
"nodes": {
"items": {
"$ref": "#/$defs/TocNode"
},
"title": "Nodes",
"type": "array"
}
},
"required": [
"nodes"
],
"title": "TocResponse",
"type": "object"
}
},
{
"description": "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.",
"inputSchema": {
"properties": {
"fuzzy_threshold": {
"default": 0.82,
"maximum": 1,
"minimum": 0.5,
"title": "Fuzzy Threshold",
"type": "number"
},
"text": {
"description": "Candidate Rumi quote in Persian",
"title": "Text",
"type": "string"
}
},
"required": [
"text"
],
"title": "tool_verifyArguments",
"type": "object"
},
"name": "verify",
"outputSchema": {
"$defs": {
"VerifyMatch": {
"properties": {
"citation": {
"title": "Citation",
"type": "string"
},
"match_kind": {
"description": "'exact' or 'fuzzy'",
"title": "Match Kind",
"type": "string"
},
"mesra1": {
"title": "Mesra1",
"type": "string"
},
"mesra2": {
"title": "Mesra2",
"type": "string"
},
"similarity": {
"title": "Similarity",
"type": "number"
}
},
"required": [
"citation",
"mesra1",
"mesra2",
"similarity",
"match_kind"
],
"title": "VerifyMatch",
"type": "object"
}
},
"properties": {
"matches": {
"default": [],
"items": {
"$ref": "#/$defs/VerifyMatch"
},
"title": "Matches",
"type": "array"
},
"notes": {
"default": "",
"title": "Notes",
"type": "string"
},
"query_normalized": {
"default": "",
"title": "Query Normalized",
"type": "string"
},
"status": {
"description": "'exact', 'fuzzy', or 'not_found'",
"title": "Status",
"type": "string"
}
},
"required": [
"status"
],
"title": "VerifyResponse",
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:1e76e1685beb46e2e29c595da49d9779c5142887d323122b1959dfa859def34b | sha256sum