masnavi

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

¿Debería usar esto?

Calidad y seguridad

A
Calidad de la descripción
93%
Integridad del esquema
74%
Calidad de los nombres
94%
Riesgo de envenenamiento
100%
Coincidencia de permisos
100%
Cumplimiento del protocolo
100%

Hallazgos (1)

  • LOWTool 'random_beyt' description lacks action verben random_beyt

Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.

Costo de contexto

~6,395Tokens (definiciones de herramientas)
~4.4 KBTamaño de respuesta típico
Impacto significativo en la atención (5.00% del contexto de 128k)

Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.

Instalar

Instalación con un clic

Agrega esto a tu archivo `claude_desktop_config.json`:

{
  "mcpServers": {
    "masnavi": {
      "url": "https://masnavi.ai/mcp"
    }
  }
}

Puntos de conexión remotos

https://masnavi.ai/mcpstreamable-http

Qué puede hacer

Inventario de herramientas

Herramientas (13)

🟢 Solo lectura🟡 Escritura🔴 Eliminación⚪ Desconocido
🟢search(query, daftar, limit, offset)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Persian text to search for",
      "title": "Query",
      "type": "string"
    },
    "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"
    }
  },
  "required": [
    "query"
  ],
  "title": "tool_searchArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "total": {
      "title": "Total",
      "type": "integer"
    },
    "results": {
      "items": {
        "$ref": "#/$defs/SearchHit"
      },
      "title": "Results",
      "type": "array"
    },
    "match": {
      "default": "exact",
      "title": "Match",
      "type": "string"
    }
  },
  "required": [
    "query",
    "total",
    "results"
  ],
  "$defs": {
    "SearchHit": {
      "properties": {
        "citation": {
          "description": "Canonical citation, e.g. 'M3:1278'",
          "title": "Citation",
          "type": "string"
        },
        "daftar": {
          "title": "Daftar",
          "type": "integer"
        },
        "beyt_in_daftar": {
          "title": "Beyt In Daftar",
          "type": "integer"
        },
        "beyt_global": {
          "title": "Beyt Global",
          "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_title": {
          "title": "Section Title",
          "type": "string"
        },
        "section_slug": {
          "title": "Section Slug",
          "type": "string"
        },
        "rank": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Rank"
        }
      },
      "required": [
        "citation",
        "daftar",
        "beyt_in_daftar",
        "beyt_global",
        "mesra1",
        "mesra2",
        "section_id",
        "section_title",
        "section_slug"
      ],
      "title": "SearchHit",
      "type": "object"
    }
  },
  "title": "SearchResponse"
}
🟢search_meaning(query, daftar, limit)

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`.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "description": "What the verse should MEAN, in any language",
      "title": "Query",
      "type": "string"
    },
    "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"
    }
  },
  "required": [
    "query"
  ],
  "title": "tool_search_meaningArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "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"
    },
    "results": {
      "default": [],
      "items": {
        "$ref": "#/$defs/MeaningHit"
      },
      "title": "Results",
      "type": "array"
    },
    "note": {
      "default": "",
      "title": "Note",
      "type": "string"
    }
  },
  "required": [
    "query"
  ],
  "$defs": {
    "MeaningHit": {
      "properties": {
        "citation": {
          "description": "Canonical citation, e.g. 'M3:1278'",
          "title": "Citation",
          "type": "string"
        },
        "daftar": {
          "title": "Daftar",
          "type": "integer"
        },
        "beyt_in_daftar": {
          "title": "Beyt In Daftar",
          "type": "integer"
        },
        "beyt_global": {
          "title": "Beyt Global",
          "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_title": {
          "title": "Section Title",
          "type": "string"
        },
        "section_slug": {
          "title": "Section Slug",
          "type": "string"
        },
        "score": {
          "description": "Cosine similarity between query and beyt, 0..1",
          "title": "Score",
          "type": "number"
        }
      },
      "required": [
        "citation",
        "daftar",
        "beyt_in_daftar",
        "beyt_global",
        "mesra1",
        "mesra2",
        "section_id",
        "section_title",
        "section_slug",
        "score"
      ],
      "title": "MeaningHit",
      "type": "object"
    }
  },
  "title": "MeaningSearchResponse"
}
🟢lookup(citation, daftar, beyt_in_daftar, beyt_global, before, ...)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "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"
    },
    "beyt_in_daftar": {
      "anyOf": [
        {
          "minimum": 1,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Beyt In Daftar"
    },
    "beyt_global": {
      "anyOf": [
        {
          "minimum": 1,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Beyt Global"
    },
    "before": {
      "default": 0,
      "maximum": 20,
      "minimum": 0,
      "title": "Before",
      "type": "integer"
    },
    "after": {
      "default": 0,
      "maximum": 20,
      "minimum": 0,
      "title": "After",
      "type": "integer"
    }
  },
  "title": "tool_lookupArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "primary": {
      "$ref": "#/$defs/Beyt"
    },
    "context_before": {
      "default": [],
      "items": {
        "$ref": "#/$defs/Beyt"
      },
      "title": "Context Before",
      "type": "array"
    },
    "context_after": {
      "default": [],
      "items": {
        "$ref": "#/$defs/Beyt"
      },
      "title": "Context After",
      "type": "array"
    }
  },
  "required": [
    "primary"
  ],
  "$defs": {
    "Beyt": {
      "properties": {
        "citation": {
          "description": "Canonical citation, e.g. 'M3:1278'",
          "title": "Citation",
          "type": "string"
        },
        "daftar": {
          "title": "Daftar",
          "type": "integer"
        },
        "beyt_in_daftar": {
          "title": "Beyt In Daftar",
          "type": "integer"
        },
        "beyt_global": {
          "title": "Beyt Global",
          "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_title": {
          "title": "Section Title",
          "type": "string"
        },
        "section_slug": {
          "title": "Section Slug",
          "type": "string"
        }
      },
      "required": [
        "citation",
        "daftar",
        "beyt_in_daftar",
        "beyt_global",
        "mesra1",
        "mesra2",
        "section_id",
        "section_title",
        "section_slug"
      ],
      "title": "Beyt",
      "type": "object"
    }
  },
  "title": "LookupResponse"
}
🟢verify(text, fuzzy_threshold)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "text": {
      "description": "Candidate Rumi quote in Persian",
      "title": "Text",
      "type": "string"
    },
    "fuzzy_threshold": {
      "default": 0.82,
      "maximum": 1,
      "minimum": 0.5,
      "title": "Fuzzy Threshold",
      "type": "number"
    }
  },
  "required": [
    "text"
  ],
  "title": "tool_verifyArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "status": {
      "description": "'exact', 'fuzzy', or 'not_found'",
      "title": "Status",
      "type": "string"
    },
    "matches": {
      "default": [],
      "items": {
        "$ref": "#/$defs/VerifyMatch"
      },
      "title": "Matches",
      "type": "array"
    },
    "notes": {
      "default": "",
      "title": "Notes",
      "type": "string"
    },
    "query_normalized": {
      "default": "",
      "title": "Query Normalized",
      "type": "string"
    }
  },
  "required": [
    "status"
  ],
  "$defs": {
    "VerifyMatch": {
      "properties": {
        "citation": {
          "title": "Citation",
          "type": "string"
        },
        "mesra1": {
          "title": "Mesra1",
          "type": "string"
        },
        "mesra2": {
          "title": "Mesra2",
          "type": "string"
        },
        "similarity": {
          "title": "Similarity",
          "type": "number"
        },
        "match_kind": {
          "description": "'exact' or 'fuzzy'",
          "title": "Match Kind",
          "type": "string"
        }
      },
      "required": [
        "citation",
        "mesra1",
        "mesra2",
        "similarity",
        "match_kind"
      ],
      "title": "VerifyMatch",
      "type": "object"
    }
  },
  "title": "VerifyResponse"
}
🟢get_section(section_id, slug)

Retrieve a full section (story / بخش) with all its beyts.

Esquema de entrada

{
  "type": "object",
  "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"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "id": {
      "title": "Id",
      "type": "integer"
    },
    "slug": {
      "title": "Slug",
      "type": "string"
    },
    "title_fa": {
      "title": "Title Fa",
      "type": "string"
    },
    "daftar": {
      "title": "Daftar",
      "type": "integer"
    },
    "first_beyt_global": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "First Beyt Global"
    },
    "last_beyt_global": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Last Beyt Global"
    },
    "beyt_count": {
      "default": 0,
      "title": "Beyt Count",
      "type": "integer"
    },
    "beyts": {
      "default": [],
      "items": {
        "$ref": "#/$defs/Beyt"
      },
      "title": "Beyts",
      "type": "array"
    }
  },
  "required": [
    "id",
    "slug",
    "title_fa",
    "daftar"
  ],
  "$defs": {
    "Beyt": {
      "properties": {
        "citation": {
          "description": "Canonical citation, e.g. 'M3:1278'",
          "title": "Citation",
          "type": "string"
        },
        "daftar": {
          "title": "Daftar",
          "type": "integer"
        },
        "beyt_in_daftar": {
          "title": "Beyt In Daftar",
          "type": "integer"
        },
        "beyt_global": {
          "title": "Beyt Global",
          "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_title": {
          "title": "Section Title",
          "type": "string"
        },
        "section_slug": {
          "title": "Section Slug",
          "type": "string"
        }
      },
      "required": [
        "citation",
        "daftar",
        "beyt_in_daftar",
        "beyt_global",
        "mesra1",
        "mesra2",
        "section_id",
        "section_title",
        "section_slug"
      ],
      "title": "Beyt",
      "type": "object"
    }
  },
  "title": "SectionDetail"
}
⚪table_of_contents(daftar)

Browse the Masnavi's section list. Returns titled sections per daftar with beyt counts and ranges.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "daftar": {
      "anyOf": [
        {
          "maximum": 6,
          "minimum": 1,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Daftar"
    }
  },
  "title": "tool_tocArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "daftar": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Daftar"
    },
    "nodes": {
      "items": {
        "$ref": "#/$defs/TocNode"
      },
      "title": "Nodes",
      "type": "array"
    }
  },
  "required": [
    "nodes"
  ],
  "$defs": {
    "TocNode": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "integer"
        },
        "slug": {
          "title": "Slug",
          "type": "string"
        },
        "title_fa": {
          "title": "Title Fa",
          "type": "string"
        },
        "daftar": {
          "title": "Daftar",
          "type": "integer"
        },
        "first_beyt_global": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "First Beyt Global"
        },
        "last_beyt_global": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Last Beyt Global"
        },
        "beyt_count": {
          "default": 0,
          "title": "Beyt Count",
          "type": "integer"
        },
        "children": {
          "default": [],
          "items": {
            "$ref": "#/$defs/TocNode"
          },
          "title": "Children",
          "type": "array"
        }
      },
      "required": [
        "id",
        "slug",
        "title_fa",
        "daftar"
      ],
      "title": "TocNode",
      "type": "object"
    }
  },
  "title": "TocResponse"
}
⚪random_beyt(daftar)

Return a randomly-selected beyt, optionally restricted to a daftar.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "daftar": {
      "anyOf": [
        {
          "maximum": 6,
          "minimum": 1,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Daftar"
    }
  },
  "title": "tool_randomArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "citation": {
      "description": "Canonical citation, e.g. 'M3:1278'",
      "title": "Citation",
      "type": "string"
    },
    "daftar": {
      "title": "Daftar",
      "type": "integer"
    },
    "beyt_in_daftar": {
      "title": "Beyt In Daftar",
      "type": "integer"
    },
    "beyt_global": {
      "title": "Beyt Global",
      "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_title": {
      "title": "Section Title",
      "type": "string"
    },
    "section_slug": {
      "title": "Section Slug",
      "type": "string"
    }
  },
  "required": [
    "citation",
    "daftar",
    "beyt_in_daftar",
    "beyt_global",
    "mesra1",
    "mesra2",
    "section_id",
    "section_title",
    "section_slug"
  ],
  "title": "Beyt"
}
🟢get_range(start, end, start_global, end_global)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "start": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Start citation, e.g. 'M2:2608'",
      "title": "Start"
    },
    "end": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "End citation, e.g. 'M2:2775'",
      "title": "End"
    },
    "start_global": {
      "anyOf": [
        {
          "minimum": 1,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Start Global"
    },
    "end_global": {
      "anyOf": [
        {
          "minimum": 1,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "End Global"
    }
  },
  "title": "tool_rangeArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "start_citation": {
      "title": "Start Citation",
      "type": "string"
    },
    "end_citation": {
      "title": "End Citation",
      "type": "string"
    },
    "total_beyts": {
      "title": "Total Beyts",
      "type": "integer"
    },
    "total_sections": {
      "title": "Total Sections",
      "type": "integer"
    },
    "sections": {
      "default": [],
      "items": {
        "$ref": "#/$defs/RangeSection"
      },
      "title": "Sections",
      "type": "array"
    }
  },
  "required": [
    "start_citation",
    "end_citation",
    "total_beyts",
    "total_sections"
  ],
  "$defs": {
    "Beyt": {
      "properties": {
        "citation": {
          "description": "Canonical citation, e.g. 'M3:1278'",
          "title": "Citation",
          "type": "string"
        },
        "daftar": {
          "title": "Daftar",
          "type": "integer"
        },
        "beyt_in_daftar": {
          "title": "Beyt In Daftar",
          "type": "integer"
        },
        "beyt_global": {
          "title": "Beyt Global",
          "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_title": {
          "title": "Section Title",
          "type": "string"
        },
        "section_slug": {
          "title": "Section Slug",
          "type": "string"
        }
      },
      "required": [
        "citation",
        "daftar",
        "beyt_in_daftar",
        "beyt_global",
        "mesra1",
        "mesra2",
        "section_id",
        "section_title",
        "section_slug"
      ],
      "title": "Beyt",
      "type": "object"
    },
    "RangeSection": {
      "properties": {
        "section_id": {
          "title": "Section Id",
          "type": "integer"
        },
        "slug": {
          "title": "Slug",
          "type": "string"
        },
        "title_fa": {
          "title": "Title Fa",
          "type": "string"
        },
        "daftar": {
          "title": "Daftar",
          "type": "integer"
        },
        "order_in_parent": {
          "title": "Order In Parent",
          "type": "integer"
        },
        "beyts": {
          "default": [],
          "items": {
            "$ref": "#/$defs/Beyt"
          },
          "title": "Beyts",
          "type": "array"
        }
      },
      "required": [
        "section_id",
        "slug",
        "title_fa",
        "daftar",
        "order_in_parent"
      ],
      "title": "RangeSection",
      "type": "object"
    }
  },
  "title": "RangeResponse"
}
🟢find_sections(query, daftar, limit)

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).

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "description": "story title words (Persian) or a description of the story in any language",
      "title": "Query",
      "type": "string"
    },
    "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"
    }
  },
  "required": [
    "query"
  ],
  "title": "tool_find_sectionsArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "total": {
      "title": "Total",
      "type": "integer"
    },
    "sections": {
      "default": [],
      "items": {
        "$ref": "#/$defs/SectionMatch"
      },
      "title": "Sections",
      "type": "array"
    },
    "note": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Note"
    }
  },
  "required": [
    "query",
    "total"
  ],
  "$defs": {
    "SectionMatch": {
      "properties": {
        "id": {
          "title": "Id",
          "type": "integer"
        },
        "slug": {
          "title": "Slug",
          "type": "string"
        },
        "title_fa": {
          "title": "Title Fa",
          "type": "string"
        },
        "daftar": {
          "title": "Daftar",
          "type": "integer"
        },
        "order_in_parent": {
          "title": "Order In Parent",
          "type": "integer"
        },
        "first_beyt_global": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "First Beyt Global"
        },
        "last_beyt_global": {
          "anyOf": [
            {
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Last Beyt Global"
        },
        "first_citation": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "First Citation"
        },
        "last_citation": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Last Citation"
        },
        "beyt_count": {
          "default": 0,
          "title": "Beyt Count",
          "type": "integer"
        },
        "match": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Match"
        },
        "score": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Score"
        }
      },
      "required": [
        "id",
        "slug",
        "title_fa",
        "daftar",
        "order_in_parent"
      ],
      "title": "SectionMatch",
      "type": "object"
    }
  },
  "title": "FindSectionsResponse"
}
🟢explain(citation)

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'.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "citation": {
      "description": "Citation like 'M1:1' or 'M3:1278' or 'g:7421'.",
      "title": "Citation",
      "type": "string"
    }
  },
  "required": [
    "citation"
  ],
  "title": "tool_explainArguments"
}
🟢search_divan(query, limit, offset)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Persian text to search for",
      "title": "Query",
      "type": "string"
    },
    "limit": {
      "default": 10,
      "maximum": 50,
      "minimum": 1,
      "title": "Limit",
      "type": "integer"
    },
    "offset": {
      "default": 0,
      "minimum": 0,
      "title": "Offset",
      "type": "integer"
    }
  },
  "required": [
    "query"
  ],
  "title": "tool_search_divanArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "total": {
      "title": "Total",
      "type": "integer"
    },
    "results": {
      "items": {
        "$ref": "#/$defs/DivanSearchHit"
      },
      "title": "Results",
      "type": "array"
    },
    "match": {
      "default": "exact",
      "title": "Match",
      "type": "string"
    }
  },
  "required": [
    "query",
    "total",
    "results"
  ],
  "$defs": {
    "DivanSearchHit": {
      "properties": {
        "citation": {
          "description": "Canonical divan citation, e.g. 'G1393:1'",
          "title": "Citation",
          "type": "string"
        },
        "ghazal": {
          "title": "Ghazal",
          "type": "integer"
        },
        "beyt_in_ghazal": {
          "title": "Beyt In Ghazal",
          "type": "integer"
        },
        "mesra1": {
          "title": "Mesra1",
          "type": "string"
        },
        "mesra2": {
          "title": "Mesra2",
          "type": "string"
        },
        "ghazal_title": {
          "title": "Ghazal Title",
          "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"
    }
  },
  "title": "DivanSearchResponse"
}
🟢search_divan_meaning(query, limit)

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.

Esquema de entrada

{
  "type": "object",
  "properties": {
    "query": {
      "description": "What the ghazal should be ABOUT, in any language",
      "title": "Query",
      "type": "string"
    },
    "limit": {
      "default": 8,
      "maximum": 30,
      "minimum": 1,
      "title": "Limit",
      "type": "integer"
    }
  },
  "required": [
    "query"
  ],
  "title": "tool_search_divan_meaningArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "query": {
      "title": "Query",
      "type": "string"
    },
    "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"
    },
    "results": {
      "default": [],
      "items": {
        "$ref": "#/$defs/DivanMeaningHit"
      },
      "title": "Results",
      "type": "array"
    },
    "note": {
      "default": "",
      "title": "Note",
      "type": "string"
    }
  },
  "required": [
    "query"
  ],
  "$defs": {
    "DivanMeaningHit": {
      "properties": {
        "ghazal": {
          "title": "Ghazal",
          "type": "integer"
        },
        "citation": {
          "title": "Citation",
          "type": "string"
        },
        "slug": {
          "title": "Slug",
          "type": "string"
        },
        "title_fa": {
          "title": "Title Fa",
          "type": "string"
        },
        "beyt_count": {
          "title": "Beyt Count",
          "type": "integer"
        },
        "score": {
          "description": "Best cosine similarity for this ghazal, 0..1",
          "title": "Score",
          "type": "number"
        },
        "match_kind": {
          "description": "'beyt' (a couplet matched), 'ghazal' (the whole ghazal's theme matched), or 'both'",
          "title": "Match Kind",
          "type": "string"
        },
        "best_beyt": {
          "anyOf": [
            {
              "$ref": "#/$defs/GhazalBeyt"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        },
        "best_beyt_score": {
          "anyOf": [
            {
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Best Beyt Score"
        }
      },
      "required": [
        "ghazal",
        "citation",
        "slug",
        "title_fa",
        "beyt_count",
        "score",
        "match_kind"
      ],
      "title": "DivanMeaningHit",
      "type": "object"
    },
    "GhazalBeyt": {
      "properties": {
        "citation": {
          "description": "Canonical divan citation, e.g. 'G1393:1'",
          "title": "Citation",
          "type": "string"
        },
        "ghazal": {
          "title": "Ghazal",
          "type": "integer"
        },
        "beyt_in_ghazal": {
          "title": "Beyt In 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"
    }
  },
  "title": "DivanMeaningResponse"
}
🟢get_ghazal(number, citation)

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) = «مرده بدم زنده شدم…».

Esquema de entrada

{
  "type": "object",
  "properties": {
    "number": {
      "anyOf": [
        {
          "minimum": 1,
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Ghazal number, e.g. 1393",
      "title": "Number"
    },
    "citation": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Divan citation like 'G1393' or 'G1393:2'",
      "title": "Citation"
    }
  },
  "title": "tool_get_ghazalArguments"
}

Esquema de salida

{
  "type": "object",
  "properties": {
    "ghazal": {
      "description": "Canonical ghazal number, 1..3230",
      "title": "Ghazal",
      "type": "integer"
    },
    "citation": {
      "description": "'G{n}' — cites the whole ghazal",
      "title": "Citation",
      "type": "string"
    },
    "slug": {
      "title": "Slug",
      "type": "string"
    },
    "title_fa": {
      "title": "Title Fa",
      "type": "string"
    },
    "beyt_count": {
      "title": "Beyt Count",
      "type": "integer"
    },
    "excerpt": {
      "default": "",
      "description": "First hemistich of the ghazal",
      "title": "Excerpt",
      "type": "string"
    },
    "beyts": {
      "default": [],
      "items": {
        "$ref": "#/$defs/GhazalBeyt"
      },
      "title": "Beyts",
      "type": "array"
    },
    "prev_ghazal": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Prev Ghazal"
    },
    "next_ghazal": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Ghazal"
    }
  },
  "required": [
    "ghazal",
    "citation",
    "slug",
    "title_fa",
    "beyt_count"
  ],
  "$defs": {
    "GhazalBeyt": {
      "properties": {
        "citation": {
          "description": "Canonical divan citation, e.g. 'G1393:1'",
          "title": "Citation",
          "type": "string"
        },
        "ghazal": {
          "title": "Ghazal",
          "type": "integer"
        },
        "beyt_in_ghazal": {
          "title": "Beyt In 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"
    }
  },
  "title": "GhazalDetail"
}

Prompts recomendados

search_research
Search for information about [topic] using masnavi
Herramientas esperadas: search
find_specific
Find [specific item] using masnavi
Herramientas esperadas: search
retrieve_data
Get details about [item] from masnavi
Herramientas esperadas: get_section
fetch_info
Fetch [information type] using masnavi
Herramientas esperadas: get_section
research_workflow
Search for [topic], then get detailed information about the top results using masnavi
Herramientas esperadas: searchget_section

Comunidad

Califica este servidor

Evidencia

Observaciones recientes

verificadoversión no registrada13 herramientas
verificadoversión no registrada13 herramientas